@docyrus/docyrus 0.0.20 → 0.0.22
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/agent-loader.js +32 -1
- package/agent-loader.js.map +2 -2
- package/main.js +325 -71
- package/main.js.map +4 -4
- package/package.json +16 -3
- package/resources/chrome-tools/browser-content.js +103 -0
- package/resources/chrome-tools/browser-cookies.js +35 -0
- package/resources/chrome-tools/browser-eval.js +53 -0
- package/resources/chrome-tools/browser-hn-scraper.js +108 -0
- package/resources/chrome-tools/browser-nav.js +44 -0
- package/resources/chrome-tools/browser-pick.js +162 -0
- package/resources/chrome-tools/browser-screenshot.js +34 -0
- package/resources/chrome-tools/browser-start.js +86 -0
- package/resources/pi-agent/extensions/answer.ts +532 -0
- package/resources/pi-agent/extensions/context.ts +578 -0
- package/resources/pi-agent/extensions/control.ts +1779 -0
- package/resources/pi-agent/extensions/diff.ts +218 -0
- package/resources/pi-agent/extensions/files.ts +199 -0
- package/resources/pi-agent/extensions/loop.ts +446 -0
- package/resources/pi-agent/extensions/multi-edit.ts +835 -0
- package/resources/pi-agent/extensions/notify.ts +88 -0
- package/resources/pi-agent/extensions/pi-bash-live-view/LICENSE +21 -0
- package/resources/pi-agent/extensions/pi-bash-live-view/README.md +19 -0
- package/resources/pi-agent/extensions/pi-bash-live-view/index.ts +52 -0
- package/resources/pi-agent/extensions/pi-bash-live-view/package.json +61 -0
- package/resources/pi-agent/extensions/pi-bash-live-view/pty-execute.ts +97 -0
- package/resources/pi-agent/extensions/pi-bash-live-view/pty-kill.ts +25 -0
- package/resources/pi-agent/extensions/pi-bash-live-view/pty-session.ts +143 -0
- package/resources/pi-agent/extensions/pi-bash-live-view/spawn-helper.ts +31 -0
- package/resources/pi-agent/extensions/pi-bash-live-view/terminal-emulator.ts +439 -0
- package/resources/pi-agent/extensions/pi-bash-live-view/truncate.ts +68 -0
- package/resources/pi-agent/extensions/pi-bash-live-view/widget.ts +114 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/CHANGELOG.md +192 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/LICENSE +21 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/README.md +296 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/app-bridge.bundle.js +67 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/cli.js +108 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/commands.ts +211 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/config.ts +227 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/consent-manager.ts +64 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/direct-tools.ts +301 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/errors.ts +219 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/glimpse-ui.ts +80 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/host-html-template.ts +427 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/index.ts +232 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/init.ts +319 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/lifecycle.ts +93 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/logger.ts +169 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/mcp-panel.ts +713 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/metadata-cache.ts +191 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/npx-resolver.ts +419 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/oauth-handler.ts +56 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/package.json +85 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/paths.ts +29 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/proxy-modes.ts +635 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/resource-tools.ts +17 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/server-manager.ts +330 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/state.ts +41 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/tool-metadata.ts +144 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/tool-registrar.ts +46 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/types.ts +367 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/ui-resource-handler.ts +145 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/ui-server.ts +623 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/ui-session.ts +384 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/ui-stream-types.ts +89 -0
- package/resources/pi-agent/extensions/pi-mcp-adapter/utils.ts +75 -0
- package/resources/pi-agent/extensions/prompt-editor.ts +1315 -0
- package/resources/pi-agent/extensions/prompt-url-widget.ts +158 -0
- package/resources/pi-agent/extensions/redraws.ts +24 -0
- package/resources/pi-agent/extensions/review.ts +2160 -0
- package/resources/pi-agent/extensions/todos.ts +2076 -0
- package/resources/pi-agent/extensions/tps.ts +47 -0
- package/resources/pi-agent/extensions/whimsical.ts +474 -0
- package/resources/pi-agent/skills/changelog-generator/SKILL.md +425 -0
- package/resources/pi-agent/skills/docyrus-chrome-devtools-cli/SKILL.md +80 -0
- package/resources/pi-agent/skills/docyrus-platform/references/docyrus-cli-usage.md +51 -0
package/agent-loader.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js", "../../../node_modules/.pnpm/sisteransi@1.0.5/node_modules/sisteransi/src/index.js", "../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/node_modules/.pnpm/ansi-regex@6.1.0/node_modules/ansi-regex/index.js", "../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/node_modules/.pnpm/strip-ansi@7.1.0/node_modules/strip-ansi/index.js", "../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/node_modules/.pnpm/eastasianwidth@0.2.0/node_modules/eastasianwidth/eastasianwidth.js", "../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/node_modules/.pnpm/emoji-regex@9.2.2/node_modules/emoji-regex/index.js", "../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/node_modules/.pnpm/string-width@5.1.2/node_modules/string-width/index.js", "../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/node_modules/.pnpm/ansi-styles@6.2.1/node_modules/ansi-styles/index.js", "../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/node_modules/.pnpm/wrap-ansi@8.1.0/node_modules/wrap-ansi/index.js", "../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/utils/settings.ts", "../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/utils/string.ts", "../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/utils/index.ts", "../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/prompt.ts", "../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/confirm.ts", "../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/group-multiselect.ts", "../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/multi-select.ts", "../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/password.ts", "../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/select.ts", "../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/select-key.ts", "../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/text.ts", "../../../node_modules/.pnpm/@clack+prompts@0.11.0/node_modules/node_modules/.pnpm/is-unicode-supported@1.3.0/node_modules/is-unicode-supported/index.js", "../../../node_modules/.pnpm/@clack+prompts@0.11.0/node_modules/@clack/prompts/src/index.ts", "../../../apps/api-cli/src/agent/loader.ts", "../../../apps/api-cli/src/agent/envStore.ts", "../../../apps/api-cli/src/agent/modelsConfig.ts", "../../../apps/api-cli/src/agent/authFlows.ts", "../../../apps/api-cli/src/agent/logo.ts", "../../../apps/api-cli/src/agent/providerCatalog.ts", "../../../apps/api-cli/src/agent/interactiveAuth.ts", "../../../apps/api-cli/src/agent/onboarding.ts"],
|
|
4
|
-
"sourcesContent": ["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", "'use strict';\n\nconst ESC = '\\x1B';\nconst CSI = `${ESC}[`;\nconst beep = '\\u0007';\n\nconst cursor = {\n to(x, y) {\n if (!y) return `${CSI}${x + 1}G`;\n return `${CSI}${y + 1};${x + 1}H`;\n },\n move(x, y) {\n let ret = '';\n\n if (x < 0) ret += `${CSI}${-x}D`;\n else if (x > 0) ret += `${CSI}${x}C`;\n\n if (y < 0) ret += `${CSI}${-y}A`;\n else if (y > 0) ret += `${CSI}${y}B`;\n\n return ret;\n },\n up: (count = 1) => `${CSI}${count}A`,\n down: (count = 1) => `${CSI}${count}B`,\n forward: (count = 1) => `${CSI}${count}C`,\n backward: (count = 1) => `${CSI}${count}D`,\n nextLine: (count = 1) => `${CSI}E`.repeat(count),\n prevLine: (count = 1) => `${CSI}F`.repeat(count),\n left: `${CSI}G`,\n hide: `${CSI}?25l`,\n show: `${CSI}?25h`,\n save: `${ESC}7`,\n restore: `${ESC}8`\n}\n\nconst scroll = {\n up: (count = 1) => `${CSI}S`.repeat(count),\n down: (count = 1) => `${CSI}T`.repeat(count)\n}\n\nconst erase = {\n screen: `${CSI}2J`,\n up: (count = 1) => `${CSI}1J`.repeat(count),\n down: (count = 1) => `${CSI}J`.repeat(count),\n line: `${CSI}2K`,\n lineEnd: `${CSI}K`,\n lineStart: `${CSI}1K`,\n lines(count) {\n let clear = '';\n for (let i = 0; i < count; i++)\n clear += this.line + (i < count - 1 ? cursor.up() : '');\n if (count)\n clear += cursor.left;\n return clear;\n }\n}\n\nmodule.exports = { cursor, scroll, erase, beep };\n", "export default function 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", "import ansiRegex from 'ansi-regex';\n\nconst regex = ansiRegex();\n\nexport default function 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", "var eaw = {};\n\nif ('undefined' == typeof module) {\n window.eastasianwidth = eaw;\n} else {\n module.exports = eaw;\n}\n\neaw.eastAsianWidth = function(character) {\n var x = character.charCodeAt(0);\n var y = (character.length == 2) ? character.charCodeAt(1) : 0;\n var codePoint = x;\n if ((0xD800 <= x && x <= 0xDBFF) && (0xDC00 <= y && y <= 0xDFFF)) {\n x &= 0x3FF;\n y &= 0x3FF;\n codePoint = (x << 10) | y;\n codePoint += 0x10000;\n }\n\n if ((0x3000 == codePoint) ||\n (0xFF01 <= codePoint && codePoint <= 0xFF60) ||\n (0xFFE0 <= codePoint && codePoint <= 0xFFE6)) {\n return 'F';\n }\n if ((0x20A9 == codePoint) ||\n (0xFF61 <= codePoint && codePoint <= 0xFFBE) ||\n (0xFFC2 <= codePoint && codePoint <= 0xFFC7) ||\n (0xFFCA <= codePoint && codePoint <= 0xFFCF) ||\n (0xFFD2 <= codePoint && codePoint <= 0xFFD7) ||\n (0xFFDA <= codePoint && codePoint <= 0xFFDC) ||\n (0xFFE8 <= codePoint && codePoint <= 0xFFEE)) {\n return 'H';\n }\n if ((0x1100 <= codePoint && codePoint <= 0x115F) ||\n (0x11A3 <= codePoint && codePoint <= 0x11A7) ||\n (0x11FA <= codePoint && codePoint <= 0x11FF) ||\n (0x2329 <= codePoint && codePoint <= 0x232A) ||\n (0x2E80 <= codePoint && codePoint <= 0x2E99) ||\n (0x2E9B <= codePoint && codePoint <= 0x2EF3) ||\n (0x2F00 <= codePoint && codePoint <= 0x2FD5) ||\n (0x2FF0 <= codePoint && codePoint <= 0x2FFB) ||\n (0x3001 <= codePoint && codePoint <= 0x303E) ||\n (0x3041 <= codePoint && codePoint <= 0x3096) ||\n (0x3099 <= codePoint && codePoint <= 0x30FF) ||\n (0x3105 <= codePoint && codePoint <= 0x312D) ||\n (0x3131 <= codePoint && codePoint <= 0x318E) ||\n (0x3190 <= codePoint && codePoint <= 0x31BA) ||\n (0x31C0 <= codePoint && codePoint <= 0x31E3) ||\n (0x31F0 <= codePoint && codePoint <= 0x321E) ||\n (0x3220 <= codePoint && codePoint <= 0x3247) ||\n (0x3250 <= codePoint && codePoint <= 0x32FE) ||\n (0x3300 <= codePoint && codePoint <= 0x4DBF) ||\n (0x4E00 <= codePoint && codePoint <= 0xA48C) ||\n (0xA490 <= codePoint && codePoint <= 0xA4C6) ||\n (0xA960 <= codePoint && codePoint <= 0xA97C) ||\n (0xAC00 <= codePoint && codePoint <= 0xD7A3) ||\n (0xD7B0 <= codePoint && codePoint <= 0xD7C6) ||\n (0xD7CB <= codePoint && codePoint <= 0xD7FB) ||\n (0xF900 <= codePoint && codePoint <= 0xFAFF) ||\n (0xFE10 <= codePoint && codePoint <= 0xFE19) ||\n (0xFE30 <= codePoint && codePoint <= 0xFE52) ||\n (0xFE54 <= codePoint && codePoint <= 0xFE66) ||\n (0xFE68 <= codePoint && codePoint <= 0xFE6B) ||\n (0x1B000 <= codePoint && codePoint <= 0x1B001) ||\n (0x1F200 <= codePoint && codePoint <= 0x1F202) ||\n (0x1F210 <= codePoint && codePoint <= 0x1F23A) ||\n (0x1F240 <= codePoint && codePoint <= 0x1F248) ||\n (0x1F250 <= codePoint && codePoint <= 0x1F251) ||\n (0x20000 <= codePoint && codePoint <= 0x2F73F) ||\n (0x2B740 <= codePoint && codePoint <= 0x2FFFD) ||\n (0x30000 <= codePoint && codePoint <= 0x3FFFD)) {\n return 'W';\n }\n if ((0x0020 <= codePoint && codePoint <= 0x007E) ||\n (0x00A2 <= codePoint && codePoint <= 0x00A3) ||\n (0x00A5 <= codePoint && codePoint <= 0x00A6) ||\n (0x00AC == codePoint) ||\n (0x00AF == codePoint) ||\n (0x27E6 <= codePoint && codePoint <= 0x27ED) ||\n (0x2985 <= codePoint && codePoint <= 0x2986)) {\n return 'Na';\n }\n if ((0x00A1 == codePoint) ||\n (0x00A4 == codePoint) ||\n (0x00A7 <= codePoint && codePoint <= 0x00A8) ||\n (0x00AA == codePoint) ||\n (0x00AD <= codePoint && codePoint <= 0x00AE) ||\n (0x00B0 <= codePoint && codePoint <= 0x00B4) ||\n (0x00B6 <= codePoint && codePoint <= 0x00BA) ||\n (0x00BC <= codePoint && codePoint <= 0x00BF) ||\n (0x00C6 == codePoint) ||\n (0x00D0 == codePoint) ||\n (0x00D7 <= codePoint && codePoint <= 0x00D8) ||\n (0x00DE <= codePoint && codePoint <= 0x00E1) ||\n (0x00E6 == codePoint) ||\n (0x00E8 <= codePoint && codePoint <= 0x00EA) ||\n (0x00EC <= codePoint && codePoint <= 0x00ED) ||\n (0x00F0 == codePoint) ||\n (0x00F2 <= codePoint && codePoint <= 0x00F3) ||\n (0x00F7 <= codePoint && codePoint <= 0x00FA) ||\n (0x00FC == codePoint) ||\n (0x00FE == codePoint) ||\n (0x0101 == codePoint) ||\n (0x0111 == codePoint) ||\n (0x0113 == codePoint) ||\n (0x011B == codePoint) ||\n (0x0126 <= codePoint && codePoint <= 0x0127) ||\n (0x012B == codePoint) ||\n (0x0131 <= codePoint && codePoint <= 0x0133) ||\n (0x0138 == codePoint) ||\n (0x013F <= codePoint && codePoint <= 0x0142) ||\n (0x0144 == codePoint) ||\n (0x0148 <= codePoint && codePoint <= 0x014B) ||\n (0x014D == codePoint) ||\n (0x0152 <= codePoint && codePoint <= 0x0153) ||\n (0x0166 <= codePoint && codePoint <= 0x0167) ||\n (0x016B == codePoint) ||\n (0x01CE == codePoint) ||\n (0x01D0 == codePoint) ||\n (0x01D2 == codePoint) ||\n (0x01D4 == codePoint) ||\n (0x01D6 == codePoint) ||\n (0x01D8 == codePoint) ||\n (0x01DA == codePoint) ||\n (0x01DC == codePoint) ||\n (0x0251 == codePoint) ||\n (0x0261 == codePoint) ||\n (0x02C4 == codePoint) ||\n (0x02C7 == codePoint) ||\n (0x02C9 <= codePoint && codePoint <= 0x02CB) ||\n (0x02CD == codePoint) ||\n (0x02D0 == codePoint) ||\n (0x02D8 <= codePoint && codePoint <= 0x02DB) ||\n (0x02DD == codePoint) ||\n (0x02DF == codePoint) ||\n (0x0300 <= codePoint && codePoint <= 0x036F) ||\n (0x0391 <= codePoint && codePoint <= 0x03A1) ||\n (0x03A3 <= codePoint && codePoint <= 0x03A9) ||\n (0x03B1 <= codePoint && codePoint <= 0x03C1) ||\n (0x03C3 <= codePoint && codePoint <= 0x03C9) ||\n (0x0401 == codePoint) ||\n (0x0410 <= codePoint && codePoint <= 0x044F) ||\n (0x0451 == codePoint) ||\n (0x2010 == codePoint) ||\n (0x2013 <= codePoint && codePoint <= 0x2016) ||\n (0x2018 <= codePoint && codePoint <= 0x2019) ||\n (0x201C <= codePoint && codePoint <= 0x201D) ||\n (0x2020 <= codePoint && codePoint <= 0x2022) ||\n (0x2024 <= codePoint && codePoint <= 0x2027) ||\n (0x2030 == codePoint) ||\n (0x2032 <= codePoint && codePoint <= 0x2033) ||\n (0x2035 == codePoint) ||\n (0x203B == codePoint) ||\n (0x203E == codePoint) ||\n (0x2074 == codePoint) ||\n (0x207F == codePoint) ||\n (0x2081 <= codePoint && codePoint <= 0x2084) ||\n (0x20AC == codePoint) ||\n (0x2103 == codePoint) ||\n (0x2105 == codePoint) ||\n (0x2109 == codePoint) ||\n (0x2113 == codePoint) ||\n (0x2116 == codePoint) ||\n (0x2121 <= codePoint && codePoint <= 0x2122) ||\n (0x2126 == codePoint) ||\n (0x212B == codePoint) ||\n (0x2153 <= codePoint && codePoint <= 0x2154) ||\n (0x215B <= codePoint && codePoint <= 0x215E) ||\n (0x2160 <= codePoint && codePoint <= 0x216B) ||\n (0x2170 <= codePoint && codePoint <= 0x2179) ||\n (0x2189 == codePoint) ||\n (0x2190 <= codePoint && codePoint <= 0x2199) ||\n (0x21B8 <= codePoint && codePoint <= 0x21B9) ||\n (0x21D2 == codePoint) ||\n (0x21D4 == codePoint) ||\n (0x21E7 == codePoint) ||\n (0x2200 == codePoint) ||\n (0x2202 <= codePoint && codePoint <= 0x2203) ||\n (0x2207 <= codePoint && codePoint <= 0x2208) ||\n (0x220B == codePoint) ||\n (0x220F == codePoint) ||\n (0x2211 == codePoint) ||\n (0x2215 == codePoint) ||\n (0x221A == codePoint) ||\n (0x221D <= codePoint && codePoint <= 0x2220) ||\n (0x2223 == codePoint) ||\n (0x2225 == codePoint) ||\n (0x2227 <= codePoint && codePoint <= 0x222C) ||\n (0x222E == codePoint) ||\n (0x2234 <= codePoint && codePoint <= 0x2237) ||\n (0x223C <= codePoint && codePoint <= 0x223D) ||\n (0x2248 == codePoint) ||\n (0x224C == codePoint) ||\n (0x2252 == codePoint) ||\n (0x2260 <= codePoint && codePoint <= 0x2261) ||\n (0x2264 <= codePoint && codePoint <= 0x2267) ||\n (0x226A <= codePoint && codePoint <= 0x226B) ||\n (0x226E <= codePoint && codePoint <= 0x226F) ||\n (0x2282 <= codePoint && codePoint <= 0x2283) ||\n (0x2286 <= codePoint && codePoint <= 0x2287) ||\n (0x2295 == codePoint) ||\n (0x2299 == codePoint) ||\n (0x22A5 == codePoint) ||\n (0x22BF == codePoint) ||\n (0x2312 == codePoint) ||\n (0x2460 <= codePoint && codePoint <= 0x24E9) ||\n (0x24EB <= codePoint && codePoint <= 0x254B) ||\n (0x2550 <= codePoint && codePoint <= 0x2573) ||\n (0x2580 <= codePoint && codePoint <= 0x258F) ||\n (0x2592 <= codePoint && codePoint <= 0x2595) ||\n (0x25A0 <= codePoint && codePoint <= 0x25A1) ||\n (0x25A3 <= codePoint && codePoint <= 0x25A9) ||\n (0x25B2 <= codePoint && codePoint <= 0x25B3) ||\n (0x25B6 <= codePoint && codePoint <= 0x25B7) ||\n (0x25BC <= codePoint && codePoint <= 0x25BD) ||\n (0x25C0 <= codePoint && codePoint <= 0x25C1) ||\n (0x25C6 <= codePoint && codePoint <= 0x25C8) ||\n (0x25CB == codePoint) ||\n (0x25CE <= codePoint && codePoint <= 0x25D1) ||\n (0x25E2 <= codePoint && codePoint <= 0x25E5) ||\n (0x25EF == codePoint) ||\n (0x2605 <= codePoint && codePoint <= 0x2606) ||\n (0x2609 == codePoint) ||\n (0x260E <= codePoint && codePoint <= 0x260F) ||\n (0x2614 <= codePoint && codePoint <= 0x2615) ||\n (0x261C == codePoint) ||\n (0x261E == codePoint) ||\n (0x2640 == codePoint) ||\n (0x2642 == codePoint) ||\n (0x2660 <= codePoint && codePoint <= 0x2661) ||\n (0x2663 <= codePoint && codePoint <= 0x2665) ||\n (0x2667 <= codePoint && codePoint <= 0x266A) ||\n (0x266C <= codePoint && codePoint <= 0x266D) ||\n (0x266F == codePoint) ||\n (0x269E <= codePoint && codePoint <= 0x269F) ||\n (0x26BE <= codePoint && codePoint <= 0x26BF) ||\n (0x26C4 <= codePoint && codePoint <= 0x26CD) ||\n (0x26CF <= codePoint && codePoint <= 0x26E1) ||\n (0x26E3 == codePoint) ||\n (0x26E8 <= codePoint && codePoint <= 0x26FF) ||\n (0x273D == codePoint) ||\n (0x2757 == codePoint) ||\n (0x2776 <= codePoint && codePoint <= 0x277F) ||\n (0x2B55 <= codePoint && codePoint <= 0x2B59) ||\n (0x3248 <= codePoint && codePoint <= 0x324F) ||\n (0xE000 <= codePoint && codePoint <= 0xF8FF) ||\n (0xFE00 <= codePoint && codePoint <= 0xFE0F) ||\n (0xFFFD == codePoint) ||\n (0x1F100 <= codePoint && codePoint <= 0x1F10A) ||\n (0x1F110 <= codePoint && codePoint <= 0x1F12D) ||\n (0x1F130 <= codePoint && codePoint <= 0x1F169) ||\n (0x1F170 <= codePoint && codePoint <= 0x1F19A) ||\n (0xE0100 <= codePoint && codePoint <= 0xE01EF) ||\n (0xF0000 <= codePoint && codePoint <= 0xFFFFD) ||\n (0x100000 <= codePoint && codePoint <= 0x10FFFD)) {\n return 'A';\n }\n\n return 'N';\n};\n\neaw.characterLength = function(character) {\n var code = this.eastAsianWidth(character);\n if (code == 'F' || code == 'W' || code == 'A') {\n return 2;\n } else {\n return 1;\n }\n};\n\n// Split a string considering surrogate-pairs.\nfunction stringToArray(string) {\n return string.match(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[^\\uD800-\\uDFFF]/g) || [];\n}\n\neaw.length = function(string) {\n var characters = stringToArray(string);\n var len = 0;\n for (var i = 0; i < characters.length; i++) {\n len = len + this.characterLength(characters[i]);\n }\n return len;\n};\n\neaw.slice = function(text, start, end) {\n textLen = eaw.length(text)\n start = start ? start : 0;\n end = end ? end : 1;\n if (start < 0) {\n start = textLen + start;\n }\n if (end < 0) {\n end = textLen + end;\n }\n var result = '';\n var eawLen = 0;\n var chars = stringToArray(text);\n for (var i = 0; i < chars.length; i++) {\n var char = chars[i];\n var charLen = eaw.length(char);\n if (eawLen >= start - (charLen == 2 ? 1 : 0)) {\n if (eawLen + charLen <= end) {\n result += char;\n } else {\n break;\n }\n }\n eawLen += charLen;\n }\n return result;\n};\n", "\"use strict\";\n\nmodule.exports = function () {\n // https://mths.be/emoji\n 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;\n};\n", "import stripAnsi from 'strip-ansi';\nimport eastAsianWidth from 'eastasianwidth';\nimport emojiRegex from 'emoji-regex';\n\nexport default function stringWidth(string, options = {}) {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\toptions = {\n\t\tambiguousIsNarrow: true,\n\t\t...options\n\t};\n\n\tstring = stripAnsi(string);\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = string.replace(emojiRegex(), ' ');\n\n\tconst ambiguousCharacterWidth = options.ambiguousIsNarrow ? 1 : 2;\n\tlet width = 0;\n\n\tfor (const character of 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 combining characters\n\t\tif (codePoint >= 0x300 && codePoint <= 0x36F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst code = eastAsianWidth.eastAsianWidth(character);\n\t\tswitch (code) {\n\t\t\tcase 'F':\n\t\t\tcase 'W':\n\t\t\t\twidth += 2;\n\t\t\t\tbreak;\n\t\t\tcase 'A':\n\t\t\t\twidth += ambiguousCharacterWidth;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\twidth += 1;\n\t\t}\n\t}\n\n\treturn width;\n}\n", "const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue: (red, green, blue) => {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue: hex => {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue: code => {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n", "import stringWidth from 'string-width';\nimport stripAnsi from 'strip-ansi';\nimport ansiStyles from 'ansi-styles';\n\nconst ESCAPES = new Set([\n\t'\\u001B',\n\t'\\u009B',\n]);\n\nconst END_CODE = 39;\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\n\nconst wrapAnsiCode = code => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = uri => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${uri}${ANSI_ESCAPE_BELL}`;\n\n// Calculate the length of words split on ' ', ignoring\n// the extra characters added by ansi escape codes\nconst wordLengths = string => string.split(' ').map(character => stringWidth(character));\n\n// Wrap a long word across multiple rows\n// Ansi escape codes do not count towards length\nconst wrapWord = (rows, word, columns) => {\n\tconst characters = [...word];\n\n\tlet isInsideEscape = false;\n\tlet isInsideLinkEscape = false;\n\tlet visible = stringWidth(stripAnsi(rows[rows.length - 1]));\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tconst characterLength = stringWidth(character);\n\n\t\tif (visible + characterLength <= columns) {\n\t\t\trows[rows.length - 1] += character;\n\t\t} else {\n\t\t\trows.push(character);\n\t\t\tvisible = 0;\n\t\t}\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tisInsideEscape = true;\n\t\t\tisInsideLinkEscape = characters.slice(index + 1).join('').startsWith(ANSI_ESCAPE_LINK);\n\t\t}\n\n\t\tif (isInsideEscape) {\n\t\t\tif (isInsideLinkEscape) {\n\t\t\t\tif (character === ANSI_ESCAPE_BELL) {\n\t\t\t\t\tisInsideEscape = false;\n\t\t\t\t\tisInsideLinkEscape = false;\n\t\t\t\t}\n\t\t\t} else if (character === ANSI_SGR_TERMINATOR) {\n\t\t\t\tisInsideEscape = false;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvisible += characterLength;\n\n\t\tif (visible === columns && index < characters.length - 1) {\n\t\t\trows.push('');\n\t\t\tvisible = 0;\n\t\t}\n\t}\n\n\t// It's possible that the last row we copy over is only\n\t// ansi escape characters, handle this edge-case\n\tif (!visible && rows[rows.length - 1].length > 0 && rows.length > 1) {\n\t\trows[rows.length - 2] += rows.pop();\n\t}\n};\n\n// Trims spaces from a string ignoring invisible sequences\nconst stringVisibleTrimSpacesRight = string => {\n\tconst words = string.split(' ');\n\tlet last = words.length;\n\n\twhile (last > 0) {\n\t\tif (stringWidth(words[last - 1]) > 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tlast--;\n\t}\n\n\tif (last === words.length) {\n\t\treturn string;\n\t}\n\n\treturn words.slice(0, last).join(' ') + words.slice(last).join('');\n};\n\n// The wrap-ansi module can be invoked in either 'hard' or 'soft' wrap mode\n//\n// 'hard' will never allow a string to take up more than columns characters\n//\n// 'soft' allows long words to expand past the column length\nconst exec = (string, columns, options = {}) => {\n\tif (options.trim !== false && string.trim() === '') {\n\t\treturn '';\n\t}\n\n\tlet returnValue = '';\n\tlet escapeCode;\n\tlet escapeUrl;\n\n\tconst lengths = wordLengths(string);\n\tlet rows = [''];\n\n\tfor (const [index, word] of string.split(' ').entries()) {\n\t\tif (options.trim !== false) {\n\t\t\trows[rows.length - 1] = rows[rows.length - 1].trimStart();\n\t\t}\n\n\t\tlet rowLength = stringWidth(rows[rows.length - 1]);\n\n\t\tif (index !== 0) {\n\t\t\tif (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {\n\t\t\t\t// If we start with a new word but the current row length equals the length of the columns, add a new row\n\t\t\t\trows.push('');\n\t\t\t\trowLength = 0;\n\t\t\t}\n\n\t\t\tif (rowLength > 0 || options.trim === false) {\n\t\t\t\trows[rows.length - 1] += ' ';\n\t\t\t\trowLength++;\n\t\t\t}\n\t\t}\n\n\t\t// In 'hard' wrap mode, the length of a line is never allowed to extend past 'columns'\n\t\tif (options.hard && lengths[index] > columns) {\n\t\t\tconst remainingColumns = (columns - rowLength);\n\t\t\tconst breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);\n\t\t\tconst breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns);\n\t\t\tif (breaksStartingNextLine < breaksStartingThisLine) {\n\t\t\t\trows.push('');\n\t\t\t}\n\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {\n\t\t\tif (options.wordWrap === false && rowLength < columns) {\n\t\t\t\twrapWord(rows, word, columns);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\trows.push('');\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && options.wordWrap === false) {\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\trows[rows.length - 1] += word;\n\t}\n\n\tif (options.trim !== false) {\n\t\trows = rows.map(row => stringVisibleTrimSpacesRight(row));\n\t}\n\n\tconst pre = [...rows.join('\\n')];\n\n\tfor (const [index, character] of pre.entries()) {\n\t\treturnValue += character;\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tconst {groups} = new RegExp(`(?:\\\\${ANSI_CSI}(?<code>\\\\d+)m|\\\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`).exec(pre.slice(index).join('')) || {groups: {}};\n\t\t\tif (groups.code !== undefined) {\n\t\t\t\tconst code = Number.parseFloat(groups.code);\n\t\t\t\tescapeCode = code === END_CODE ? undefined : code;\n\t\t\t} else if (groups.uri !== undefined) {\n\t\t\t\tescapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n\t\t\t}\n\t\t}\n\n\t\tconst code = ansiStyles.codes.get(Number(escapeCode));\n\n\t\tif (pre[index + 1] === '\\n') {\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink('');\n\t\t\t}\n\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(code);\n\t\t\t}\n\t\t} else if (character === '\\n') {\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(escapeCode);\n\t\t\t}\n\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink(escapeUrl);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn returnValue;\n};\n\n// For each newline, invoke the method separately\nexport default function wrapAnsi(string, columns, options) {\n\treturn String(string)\n\t\t.normalize()\n\t\t.replace(/\\r\\n/g, '\\n')\n\t\t.split('\\n')\n\t\t.map(line => exec(line, columns, options))\n\t\t.join('\\n');\n}\n", "const actions = ['up', 'down', 'left', 'right', 'space', 'enter', 'cancel'] as const;\nexport type Action = (typeof actions)[number];\n\n/** Global settings for Clack programs, stored in memory */\ninterface InternalClackSettings {\n\tactions: Set<Action>;\n\taliases: Map<string, Action>;\n}\n\nexport const settings: InternalClackSettings = {\n\tactions: new Set(actions),\n\taliases: new Map<string, Action>([\n\t\t// vim support\n\t\t['k', 'up'],\n\t\t['j', 'down'],\n\t\t['h', 'left'],\n\t\t['l', 'right'],\n\t\t['\\x03', 'cancel'],\n\t\t// opinionated defaults!\n\t\t['escape', 'cancel'],\n\t]),\n};\n\nexport interface ClackSettings {\n\t/**\n\t * Set custom global aliases for the default actions.\n\t * This will not overwrite existing aliases, it will only add new ones!\n\t *\n\t * @param aliases - An object that maps aliases to actions\n\t * @default { k: 'up', j: 'down', h: 'left', l: 'right', '\\x03': 'cancel', 'escape': 'cancel' }\n\t */\n\taliases: Record<string, Action>;\n}\n\nexport function updateSettings(updates: ClackSettings) {\n\tfor (const _key in updates) {\n\t\tconst key = _key as keyof ClackSettings;\n\t\tif (!Object.hasOwn(updates, key)) continue;\n\t\tconst value = updates[key];\n\n\t\tswitch (key) {\n\t\t\tcase 'aliases': {\n\t\t\t\tfor (const alias in value) {\n\t\t\t\t\tif (!Object.hasOwn(value, alias)) continue;\n\t\t\t\t\tif (!settings.aliases.has(alias)) {\n\t\t\t\t\t\tsettings.aliases.set(alias, value[alias]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Check if a key is an alias for a default action\n * @param key - The raw key which might match to an action\n * @param action - The action to match\n * @returns boolean\n */\nexport function isActionKey(key: string | Array<string | undefined>, action: Action) {\n\tif (typeof key === 'string') {\n\t\treturn settings.aliases.get(key) === action;\n\t}\n\n\tfor (const value of key) {\n\t\tif (value === undefined) continue;\n\t\tif (isActionKey(value, action)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n", "export function diffLines(a: string, b: string) {\n\tif (a === b) return;\n\n\tconst aLines = a.split('\\n');\n\tconst bLines = b.split('\\n');\n\tconst diff: number[] = [];\n\n\tfor (let i = 0; i < Math.max(aLines.length, bLines.length); i++) {\n\t\tif (aLines[i] !== bLines[i]) diff.push(i);\n\t}\n\n\treturn diff;\n}\n", "import { stdin, stdout } from 'node:process';\nimport type { Key } from 'node:readline';\nimport * as readline from 'node:readline';\nimport type { Readable } from 'node:stream';\nimport { cursor } from 'sisteransi';\nimport { isActionKey } from './settings';\n\nexport * from './string';\nexport * from './settings';\n\nconst isWindows = globalThis.process.platform.startsWith('win');\n\nexport const CANCEL_SYMBOL = Symbol('clack:cancel');\n\nexport function isCancel(value: unknown): value is symbol {\n\treturn value === CANCEL_SYMBOL;\n}\n\nexport function setRawMode(input: Readable, value: boolean) {\n\tconst i = input as typeof stdin;\n\n\tif (i.isTTY) i.setRawMode(value);\n}\n\nexport function block({\n\tinput = stdin,\n\toutput = stdout,\n\toverwrite = true,\n\thideCursor = true,\n} = {}) {\n\tconst rl = readline.createInterface({\n\t\tinput,\n\t\toutput,\n\t\tprompt: '',\n\t\ttabSize: 1,\n\t});\n\treadline.emitKeypressEvents(input, rl);\n\tif (input.isTTY) input.setRawMode(true);\n\n\tconst clear = (data: Buffer, { name, sequence }: Key) => {\n\t\tconst str = String(data);\n\t\tif (isActionKey([str, name, sequence], 'cancel')) {\n\t\t\tif (hideCursor) output.write(cursor.show);\n\t\t\tprocess.exit(0);\n\t\t\treturn;\n\t\t}\n\t\tif (!overwrite) return;\n\t\tconst dx = name === 'return' ? 0 : -1;\n\t\tconst dy = name === 'return' ? -1 : 0;\n\n\t\treadline.moveCursor(output, dx, dy, () => {\n\t\t\treadline.clearLine(output, 1, () => {\n\t\t\t\tinput.once('keypress', clear);\n\t\t\t});\n\t\t});\n\t};\n\tif (hideCursor) output.write(cursor.hide);\n\tinput.once('keypress', clear);\n\n\treturn () => {\n\t\tinput.off('keypress', clear);\n\t\tif (hideCursor) output.write(cursor.show);\n\n\t\t// Prevent Windows specific issues: https://github.com/bombshell-dev/clack/issues/176\n\t\tif (input.isTTY && !isWindows) input.setRawMode(false);\n\n\t\t// @ts-expect-error fix for https://github.com/nodejs/node/issues/31762#issuecomment-1441223907\n\t\trl.terminal = false;\n\t\trl.close();\n\t};\n}\n", "import { stdin, stdout } from 'node:process';\nimport readline, { type Key, type ReadLine } from 'node:readline';\nimport type { Readable } from 'node:stream';\nimport { Writable } from 'node:stream';\nimport { cursor, erase } from 'sisteransi';\nimport wrap from 'wrap-ansi';\n\nimport { CANCEL_SYMBOL, diffLines, isActionKey, setRawMode, settings } from '../utils';\n\nimport type { ClackEvents, ClackState } from '../types';\nimport type { Action } from '../utils';\n\nexport interface PromptOptions<Self extends Prompt> {\n\trender(this: Omit<Self, 'prompt'>): string | undefined;\n\tplaceholder?: string;\n\tinitialValue?: any;\n\tvalidate?: ((value: any) => string | Error | undefined) | undefined;\n\tinput?: Readable;\n\toutput?: Writable;\n\tdebug?: boolean;\n\tsignal?: AbortSignal;\n}\n\nexport default class Prompt {\n\tprotected input: Readable;\n\tprotected output: Writable;\n\tprivate _abortSignal?: AbortSignal;\n\n\tprivate rl: ReadLine | undefined;\n\tprivate opts: Omit<PromptOptions<Prompt>, 'render' | 'input' | 'output'>;\n\tprivate _render: (context: Omit<Prompt, 'prompt'>) => string | undefined;\n\tprivate _track = false;\n\tprivate _prevFrame = '';\n\tprivate _subscribers = new Map<string, { cb: (...args: any) => any; once?: boolean }[]>();\n\tprotected _cursor = 0;\n\n\tpublic state: ClackState = 'initial';\n\tpublic error = '';\n\tpublic value: any;\n\n\tconstructor(options: PromptOptions<Prompt>, trackValue = true) {\n\t\tconst { input = stdin, output = stdout, render, signal, ...opts } = options;\n\n\t\tthis.opts = opts;\n\t\tthis.onKeypress = this.onKeypress.bind(this);\n\t\tthis.close = this.close.bind(this);\n\t\tthis.render = this.render.bind(this);\n\t\tthis._render = render.bind(this);\n\t\tthis._track = trackValue;\n\t\tthis._abortSignal = signal;\n\n\t\tthis.input = input;\n\t\tthis.output = output;\n\t}\n\n\t/**\n\t * Unsubscribe all listeners\n\t */\n\tprotected unsubscribe() {\n\t\tthis._subscribers.clear();\n\t}\n\n\t/**\n\t * Set a subscriber with opts\n\t * @param event - The event name\n\t */\n\tprivate setSubscriber<T extends keyof ClackEvents>(\n\t\tevent: T,\n\t\topts: { cb: ClackEvents[T]; once?: boolean }\n\t) {\n\t\tconst params = this._subscribers.get(event) ?? [];\n\t\tparams.push(opts);\n\t\tthis._subscribers.set(event, params);\n\t}\n\n\t/**\n\t * Subscribe to an event\n\t * @param event - The event name\n\t * @param cb - The callback\n\t */\n\tpublic on<T extends keyof ClackEvents>(event: T, cb: ClackEvents[T]) {\n\t\tthis.setSubscriber(event, { cb });\n\t}\n\n\t/**\n\t * Subscribe to an event once\n\t * @param event - The event name\n\t * @param cb - The callback\n\t */\n\tpublic once<T extends keyof ClackEvents>(event: T, cb: ClackEvents[T]) {\n\t\tthis.setSubscriber(event, { cb, once: true });\n\t}\n\n\t/**\n\t * Emit an event with data\n\t * @param event - The event name\n\t * @param data - The data to pass to the callback\n\t */\n\tpublic emit<T extends keyof ClackEvents>(event: T, ...data: Parameters<ClackEvents[T]>) {\n\t\tconst cbs = this._subscribers.get(event) ?? [];\n\t\tconst cleanup: (() => void)[] = [];\n\n\t\tfor (const subscriber of cbs) {\n\t\t\tsubscriber.cb(...data);\n\n\t\t\tif (subscriber.once) {\n\t\t\t\tcleanup.push(() => cbs.splice(cbs.indexOf(subscriber), 1));\n\t\t\t}\n\t\t}\n\n\t\tfor (const cb of cleanup) {\n\t\t\tcb();\n\t\t}\n\t}\n\n\tpublic prompt() {\n\t\treturn new Promise<string | symbol>((resolve, reject) => {\n\t\t\tif (this._abortSignal) {\n\t\t\t\tif (this._abortSignal.aborted) {\n\t\t\t\t\tthis.state = 'cancel';\n\n\t\t\t\t\tthis.close();\n\t\t\t\t\treturn resolve(CANCEL_SYMBOL);\n\t\t\t\t}\n\n\t\t\t\tthis._abortSignal.addEventListener(\n\t\t\t\t\t'abort',\n\t\t\t\t\t() => {\n\t\t\t\t\t\tthis.state = 'cancel';\n\t\t\t\t\t\tthis.close();\n\t\t\t\t\t},\n\t\t\t\t\t{ once: true }\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst sink = new Writable();\n\t\t\tsink._write = (chunk, encoding, done) => {\n\t\t\t\tif (this._track) {\n\t\t\t\t\tthis.value = this.rl?.line.replace(/\\t/g, '');\n\t\t\t\t\tthis._cursor = this.rl?.cursor ?? 0;\n\t\t\t\t\tthis.emit('value', this.value);\n\t\t\t\t}\n\t\t\t\tdone();\n\t\t\t};\n\t\t\tthis.input.pipe(sink);\n\n\t\t\tthis.rl = readline.createInterface({\n\t\t\t\tinput: this.input,\n\t\t\t\toutput: sink,\n\t\t\t\ttabSize: 2,\n\t\t\t\tprompt: '',\n\t\t\t\tescapeCodeTimeout: 50,\n\t\t\t\tterminal: true,\n\t\t\t});\n\t\t\treadline.emitKeypressEvents(this.input, this.rl);\n\t\t\tthis.rl.prompt();\n\t\t\tif (this.opts.initialValue !== undefined && this._track) {\n\t\t\t\tthis.rl.write(this.opts.initialValue);\n\t\t\t}\n\n\t\t\tthis.input.on('keypress', this.onKeypress);\n\t\t\tsetRawMode(this.input, true);\n\t\t\tthis.output.on('resize', this.render);\n\n\t\t\tthis.render();\n\n\t\t\tthis.once('submit', () => {\n\t\t\t\tthis.output.write(cursor.show);\n\t\t\t\tthis.output.off('resize', this.render);\n\t\t\t\tsetRawMode(this.input, false);\n\t\t\t\tresolve(this.value);\n\t\t\t});\n\t\t\tthis.once('cancel', () => {\n\t\t\t\tthis.output.write(cursor.show);\n\t\t\t\tthis.output.off('resize', this.render);\n\t\t\t\tsetRawMode(this.input, false);\n\t\t\t\tresolve(CANCEL_SYMBOL);\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate onKeypress(char: string, key?: Key) {\n\t\tif (this.state === 'error') {\n\t\t\tthis.state = 'active';\n\t\t}\n\t\tif (key?.name) {\n\t\t\tif (!this._track && settings.aliases.has(key.name)) {\n\t\t\t\tthis.emit('cursor', settings.aliases.get(key.name));\n\t\t\t}\n\t\t\tif (settings.actions.has(key.name as Action)) {\n\t\t\t\tthis.emit('cursor', key.name as Action);\n\t\t\t}\n\t\t}\n\t\tif (char && (char.toLowerCase() === 'y' || char.toLowerCase() === 'n')) {\n\t\t\tthis.emit('confirm', char.toLowerCase() === 'y');\n\t\t}\n\t\tif (char === '\\t' && this.opts.placeholder) {\n\t\t\tif (!this.value) {\n\t\t\t\tthis.rl?.write(this.opts.placeholder);\n\t\t\t\tthis.emit('value', this.opts.placeholder);\n\t\t\t}\n\t\t}\n\t\tif (char) {\n\t\t\tthis.emit('key', char.toLowerCase());\n\t\t}\n\n\t\tif (key?.name === 'return') {\n\t\t\tif (this.opts.validate) {\n\t\t\t\tconst problem = this.opts.validate(this.value);\n\t\t\t\tif (problem) {\n\t\t\t\t\tthis.error = problem instanceof Error ? problem.message : problem;\n\t\t\t\t\tthis.state = 'error';\n\t\t\t\t\tthis.rl?.write(this.value);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.state !== 'error') {\n\t\t\t\tthis.state = 'submit';\n\t\t\t}\n\t\t}\n\n\t\tif (isActionKey([char, key?.name, key?.sequence], 'cancel')) {\n\t\t\tthis.state = 'cancel';\n\t\t}\n\t\tif (this.state === 'submit' || this.state === 'cancel') {\n\t\t\tthis.emit('finalize');\n\t\t}\n\t\tthis.render();\n\t\tif (this.state === 'submit' || this.state === 'cancel') {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tprotected close() {\n\t\tthis.input.unpipe();\n\t\tthis.input.removeListener('keypress', this.onKeypress);\n\t\tthis.output.write('\\n');\n\t\tsetRawMode(this.input, false);\n\t\tthis.rl?.close();\n\t\tthis.rl = undefined;\n\t\tthis.emit(`${this.state}`, this.value);\n\t\tthis.unsubscribe();\n\t}\n\n\tprivate restoreCursor() {\n\t\tconst lines =\n\t\t\twrap(this._prevFrame, process.stdout.columns, { hard: true }).split('\\n').length - 1;\n\t\tthis.output.write(cursor.move(-999, lines * -1));\n\t}\n\n\tprivate render() {\n\t\tconst frame = wrap(this._render(this) ?? '', process.stdout.columns, { hard: true });\n\t\tif (frame === this._prevFrame) return;\n\n\t\tif (this.state === 'initial') {\n\t\t\tthis.output.write(cursor.hide);\n\t\t} else {\n\t\t\tconst diff = diffLines(this._prevFrame, frame);\n\t\t\tthis.restoreCursor();\n\t\t\t// If a single line has changed, only update that line\n\t\t\tif (diff && diff?.length === 1) {\n\t\t\t\tconst diffLine = diff[0];\n\t\t\t\tthis.output.write(cursor.move(0, diffLine));\n\t\t\t\tthis.output.write(erase.lines(1));\n\t\t\t\tconst lines = frame.split('\\n');\n\t\t\t\tthis.output.write(lines[diffLine]);\n\t\t\t\tthis._prevFrame = frame;\n\t\t\t\tthis.output.write(cursor.move(0, lines.length - diffLine - 1));\n\t\t\t\treturn;\n\t\t\t\t// If many lines have changed, rerender everything past the first line\n\t\t\t}\n\t\t\tif (diff && diff?.length > 1) {\n\t\t\t\tconst diffLine = diff[0];\n\t\t\t\tthis.output.write(cursor.move(0, diffLine));\n\t\t\t\tthis.output.write(erase.down());\n\t\t\t\tconst lines = frame.split('\\n');\n\t\t\t\tconst newLines = lines.slice(diffLine);\n\t\t\t\tthis.output.write(newLines.join('\\n'));\n\t\t\t\tthis._prevFrame = frame;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.output.write(erase.down());\n\t\t}\n\n\t\tthis.output.write(frame);\n\t\tif (this.state === 'initial') {\n\t\t\tthis.state = 'active';\n\t\t}\n\t\tthis._prevFrame = frame;\n\t}\n}\n", "import { cursor } from 'sisteransi';\nimport Prompt, { type PromptOptions } from './prompt';\n\ninterface ConfirmOptions extends PromptOptions<ConfirmPrompt> {\n\tactive: string;\n\tinactive: string;\n\tinitialValue?: boolean;\n}\nexport default class ConfirmPrompt extends Prompt {\n\tget cursor() {\n\t\treturn this.value ? 0 : 1;\n\t}\n\n\tprivate get _value() {\n\t\treturn this.cursor === 0;\n\t}\n\n\tconstructor(opts: ConfirmOptions) {\n\t\tsuper(opts, false);\n\t\tthis.value = !!opts.initialValue;\n\n\t\tthis.on('value', () => {\n\t\t\tthis.value = this._value;\n\t\t});\n\n\t\tthis.on('confirm', (confirm) => {\n\t\t\tthis.output.write(cursor.move(0, -1));\n\t\t\tthis.value = confirm;\n\t\t\tthis.state = 'submit';\n\t\t\tthis.close();\n\t\t});\n\n\t\tthis.on('cursor', () => {\n\t\t\tthis.value = !this.value;\n\t\t});\n\t}\n}\n", "import Prompt, { type PromptOptions } from './prompt';\n\ninterface GroupMultiSelectOptions<T extends { value: any }>\n\textends PromptOptions<GroupMultiSelectPrompt<T>> {\n\toptions: Record<string, T[]>;\n\tinitialValues?: T['value'][];\n\trequired?: boolean;\n\tcursorAt?: T['value'];\n\tselectableGroups?: boolean;\n}\nexport default class GroupMultiSelectPrompt<T extends { value: any }> extends Prompt {\n\toptions: (T & { group: string | boolean })[];\n\tcursor = 0;\n\t#selectableGroups: boolean;\n\n\tgetGroupItems(group: string): T[] {\n\t\treturn this.options.filter((o) => o.group === group);\n\t}\n\n\tisGroupSelected(group: string) {\n\t\tconst items = this.getGroupItems(group);\n\t\treturn items.every((i) => this.value.includes(i.value));\n\t}\n\n\tprivate toggleValue() {\n\t\tconst item = this.options[this.cursor];\n\t\tif (item.group === true) {\n\t\t\tconst group = item.value;\n\t\t\tconst groupedItems = this.getGroupItems(group);\n\t\t\tif (this.isGroupSelected(group)) {\n\t\t\t\tthis.value = this.value.filter(\n\t\t\t\t\t(v: string) => groupedItems.findIndex((i) => i.value === v) === -1\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tthis.value = [...this.value, ...groupedItems.map((i) => i.value)];\n\t\t\t}\n\t\t\tthis.value = Array.from(new Set(this.value));\n\t\t} else {\n\t\t\tconst selected = this.value.includes(item.value);\n\t\t\tthis.value = selected\n\t\t\t\t? this.value.filter((v: T['value']) => v !== item.value)\n\t\t\t\t: [...this.value, item.value];\n\t\t}\n\t}\n\n\tconstructor(opts: GroupMultiSelectOptions<T>) {\n\t\tsuper(opts, false);\n\t\tconst { options } = opts;\n\t\tthis.#selectableGroups = opts.selectableGroups !== false;\n\t\tthis.options = Object.entries(options).flatMap(([key, option]) => [\n\t\t\t{ value: key, group: true, label: key },\n\t\t\t...option.map((opt) => ({ ...opt, group: key })),\n\t\t]) as any;\n\t\tthis.value = [...(opts.initialValues ?? [])];\n\t\tthis.cursor = Math.max(\n\t\t\tthis.options.findIndex(({ value }) => value === opts.cursorAt),\n\t\t\tthis.#selectableGroups ? 0 : 1\n\t\t);\n\n\t\tthis.on('cursor', (key) => {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'left':\n\t\t\t\tcase 'up': {\n\t\t\t\t\tthis.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n\t\t\t\t\tconst currentIsGroup = this.options[this.cursor]?.group === true;\n\t\t\t\t\tif (!this.#selectableGroups && currentIsGroup) {\n\t\t\t\t\t\tthis.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'down':\n\t\t\t\tcase 'right': {\n\t\t\t\t\tthis.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n\t\t\t\t\tconst currentIsGroup = this.options[this.cursor]?.group === true;\n\t\t\t\t\tif (!this.#selectableGroups && currentIsGroup) {\n\t\t\t\t\t\tthis.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'space':\n\t\t\t\t\tthis.toggleValue();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t}\n}\n", "import Prompt, { type PromptOptions } from './prompt';\n\ninterface MultiSelectOptions<T extends { value: any }> extends PromptOptions<MultiSelectPrompt<T>> {\n\toptions: T[];\n\tinitialValues?: T['value'][];\n\trequired?: boolean;\n\tcursorAt?: T['value'];\n}\nexport default class MultiSelectPrompt<T extends { value: any }> extends Prompt {\n\toptions: T[];\n\tcursor = 0;\n\n\tprivate get _value() {\n\t\treturn this.options[this.cursor].value;\n\t}\n\n\tprivate toggleAll() {\n\t\tconst allSelected = this.value.length === this.options.length;\n\t\tthis.value = allSelected ? [] : this.options.map((v) => v.value);\n\t}\n\n\tprivate toggleValue() {\n\t\tconst selected = this.value.includes(this._value);\n\t\tthis.value = selected\n\t\t\t? this.value.filter((value: T['value']) => value !== this._value)\n\t\t\t: [...this.value, this._value];\n\t}\n\n\tconstructor(opts: MultiSelectOptions<T>) {\n\t\tsuper(opts, false);\n\n\t\tthis.options = opts.options;\n\t\tthis.value = [...(opts.initialValues ?? [])];\n\t\tthis.cursor = Math.max(\n\t\t\tthis.options.findIndex(({ value }) => value === opts.cursorAt),\n\t\t\t0\n\t\t);\n\t\tthis.on('key', (char) => {\n\t\t\tif (char === 'a') {\n\t\t\t\tthis.toggleAll();\n\t\t\t}\n\t\t});\n\n\t\tthis.on('cursor', (key) => {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'left':\n\t\t\t\tcase 'up':\n\t\t\t\t\tthis.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'down':\n\t\t\t\tcase 'right':\n\t\t\t\t\tthis.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'space':\n\t\t\t\t\tthis.toggleValue();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t}\n}\n", "import color from 'picocolors';\nimport Prompt, { type PromptOptions } from './prompt';\n\ninterface PasswordOptions extends PromptOptions<PasswordPrompt> {\n\tmask?: string;\n}\nexport default class PasswordPrompt extends Prompt {\n\tvalueWithCursor = '';\n\tprivate _mask = '•';\n\tget cursor() {\n\t\treturn this._cursor;\n\t}\n\tget masked() {\n\t\treturn this.value.replaceAll(/./g, this._mask);\n\t}\n\tconstructor({ mask, ...opts }: PasswordOptions) {\n\t\tsuper(opts);\n\t\tthis._mask = mask ?? '•';\n\n\t\tthis.on('finalize', () => {\n\t\t\tthis.valueWithCursor = this.masked;\n\t\t});\n\t\tthis.on('value', () => {\n\t\t\tif (this.cursor >= this.value.length) {\n\t\t\t\tthis.valueWithCursor = `${this.masked}${color.inverse(color.hidden('_'))}`;\n\t\t\t} else {\n\t\t\t\tconst s1 = this.masked.slice(0, this.cursor);\n\t\t\t\tconst s2 = this.masked.slice(this.cursor);\n\t\t\t\tthis.valueWithCursor = `${s1}${color.inverse(s2[0])}${s2.slice(1)}`;\n\t\t\t}\n\t\t});\n\t}\n}\n", "import Prompt, { type PromptOptions } from './prompt';\n\ninterface SelectOptions<T extends { value: any }> extends PromptOptions<SelectPrompt<T>> {\n\toptions: T[];\n\tinitialValue?: T['value'];\n}\nexport default class SelectPrompt<T extends { value: any }> extends Prompt {\n\toptions: T[];\n\tcursor = 0;\n\n\tprivate get _value() {\n\t\treturn this.options[this.cursor];\n\t}\n\n\tprivate changeValue() {\n\t\tthis.value = this._value.value;\n\t}\n\n\tconstructor(opts: SelectOptions<T>) {\n\t\tsuper(opts, false);\n\n\t\tthis.options = opts.options;\n\t\tthis.cursor = this.options.findIndex(({ value }) => value === opts.initialValue);\n\t\tif (this.cursor === -1) this.cursor = 0;\n\t\tthis.changeValue();\n\n\t\tthis.on('cursor', (key) => {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'left':\n\t\t\t\tcase 'up':\n\t\t\t\t\tthis.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'down':\n\t\t\t\tcase 'right':\n\t\t\t\t\tthis.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis.changeValue();\n\t\t});\n\t}\n}\n", "import Prompt, { type PromptOptions } from './prompt';\n\ninterface SelectKeyOptions<T extends { value: any }> extends PromptOptions<SelectKeyPrompt<T>> {\n\toptions: T[];\n}\nexport default class SelectKeyPrompt<T extends { value: any }> extends Prompt {\n\toptions: T[];\n\tcursor = 0;\n\n\tconstructor(opts: SelectKeyOptions<T>) {\n\t\tsuper(opts, false);\n\n\t\tthis.options = opts.options;\n\t\tconst keys = this.options.map(({ value: [initial] }) => initial?.toLowerCase());\n\t\tthis.cursor = Math.max(keys.indexOf(opts.initialValue), 0);\n\n\t\tthis.on('key', (key) => {\n\t\t\tif (!keys.includes(key)) return;\n\t\t\tconst value = this.options.find(({ value: [initial] }) => initial?.toLowerCase() === key);\n\t\t\tif (value) {\n\t\t\t\tthis.value = value.value;\n\t\t\t\tthis.state = 'submit';\n\t\t\t\tthis.emit('submit');\n\t\t\t}\n\t\t});\n\t}\n}\n", "import color from 'picocolors';\nimport Prompt, { type PromptOptions } from './prompt';\n\nexport interface TextOptions extends PromptOptions<TextPrompt> {\n\tplaceholder?: string;\n\tdefaultValue?: string;\n}\n\nexport default class TextPrompt extends Prompt {\n\tget valueWithCursor() {\n\t\tif (this.state === 'submit') {\n\t\t\treturn this.value;\n\t\t}\n\t\tif (this.cursor >= this.value.length) {\n\t\t\treturn `${this.value}█`;\n\t\t}\n\t\tconst s1 = this.value.slice(0, this.cursor);\n\t\tconst [s2, ...s3] = this.value.slice(this.cursor);\n\t\treturn `${s1}${color.inverse(s2)}${s3.join('')}`;\n\t}\n\tget cursor() {\n\t\treturn this._cursor;\n\t}\n\tconstructor(opts: TextOptions) {\n\t\tsuper(opts);\n\n\t\tthis.on('finalize', () => {\n\t\t\tif (!this.value) {\n\t\t\t\tthis.value = opts.defaultValue;\n\t\t\t}\n\t\t});\n\t}\n}\n", "import process from 'node:process';\n\nexport default function isUnicodeSupported() {\n\tif (process.platform !== 'win32') {\n\t\treturn process.env.TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(process.env.CI)\n\t\t|| Boolean(process.env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(process.env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| process.env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| process.env.TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| process.env.TERM_PROGRAM === 'vscode'\n\t\t|| process.env.TERM === 'xterm-256color'\n\t\t|| process.env.TERM === 'alacritty'\n\t\t|| process.env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n", "import { stripVTControlCharacters as strip } from 'node:util';\nimport {\n\tConfirmPrompt,\n\tGroupMultiSelectPrompt,\n\tMultiSelectPrompt,\n\tPasswordPrompt,\n\tSelectKeyPrompt,\n\tSelectPrompt,\n\ttype State,\n\tTextPrompt,\n\tblock,\n\tisCancel,\n} from '@clack/core';\nimport isUnicodeSupported from 'is-unicode-supported';\nimport color from 'picocolors';\nimport { cursor, erase } from 'sisteransi';\n\nexport { isCancel } from '@clack/core';\nexport { updateSettings, type ClackSettings } from '@clack/core';\n\nconst unicode = isUnicodeSupported();\nconst s = (c: string, fallback: string) => (unicode ? c : fallback);\nconst S_STEP_ACTIVE = s('◆', '*');\nconst S_STEP_CANCEL = s('■', 'x');\nconst S_STEP_ERROR = s('▲', 'x');\nconst S_STEP_SUBMIT = s('◇', 'o');\n\nconst S_BAR_START = s('┌', 'T');\nconst S_BAR = s('│', '|');\nconst S_BAR_END = s('└', '—');\n\nconst S_RADIO_ACTIVE = s('●', '>');\nconst S_RADIO_INACTIVE = s('○', ' ');\nconst S_CHECKBOX_ACTIVE = s('◻', '[•]');\nconst S_CHECKBOX_SELECTED = s('◼', '[+]');\nconst S_CHECKBOX_INACTIVE = s('◻', '[ ]');\nconst S_PASSWORD_MASK = s('▪', '•');\n\nconst S_BAR_H = s('─', '-');\nconst S_CORNER_TOP_RIGHT = s('╮', '+');\nconst S_CONNECT_LEFT = s('├', '+');\nconst S_CORNER_BOTTOM_RIGHT = s('╯', '+');\n\nconst S_INFO = s('●', '•');\nconst S_SUCCESS = s('◆', '*');\nconst S_WARN = s('▲', '!');\nconst S_ERROR = s('■', 'x');\n\nconst symbol = (state: State) => {\n\tswitch (state) {\n\t\tcase 'initial':\n\t\tcase 'active':\n\t\t\treturn color.cyan(S_STEP_ACTIVE);\n\t\tcase 'cancel':\n\t\t\treturn color.red(S_STEP_CANCEL);\n\t\tcase 'error':\n\t\t\treturn color.yellow(S_STEP_ERROR);\n\t\tcase 'submit':\n\t\t\treturn color.green(S_STEP_SUBMIT);\n\t}\n};\n\ninterface LimitOptionsParams<TOption> {\n\toptions: TOption[];\n\tmaxItems: number | undefined;\n\tcursor: number;\n\tstyle: (option: TOption, active: boolean) => string;\n}\n\nconst limitOptions = <TOption>(params: LimitOptionsParams<TOption>): string[] => {\n\tconst { cursor, options, style } = params;\n\n\tconst paramMaxItems = params.maxItems ?? Number.POSITIVE_INFINITY;\n\tconst outputMaxItems = Math.max(process.stdout.rows - 4, 0);\n\t// We clamp to minimum 5 because anything less doesn't make sense UX wise\n\tconst maxItems = Math.min(outputMaxItems, Math.max(paramMaxItems, 5));\n\tlet slidingWindowLocation = 0;\n\n\tif (cursor >= slidingWindowLocation + maxItems - 3) {\n\t\tslidingWindowLocation = Math.max(Math.min(cursor - maxItems + 3, options.length - maxItems), 0);\n\t} else if (cursor < slidingWindowLocation + 2) {\n\t\tslidingWindowLocation = Math.max(cursor - 2, 0);\n\t}\n\n\tconst shouldRenderTopEllipsis = maxItems < options.length && slidingWindowLocation > 0;\n\tconst shouldRenderBottomEllipsis =\n\t\tmaxItems < options.length && slidingWindowLocation + maxItems < options.length;\n\n\treturn options\n\t\t.slice(slidingWindowLocation, slidingWindowLocation + maxItems)\n\t\t.map((option, i, arr) => {\n\t\t\tconst isTopLimit = i === 0 && shouldRenderTopEllipsis;\n\t\t\tconst isBottomLimit = i === arr.length - 1 && shouldRenderBottomEllipsis;\n\t\t\treturn isTopLimit || isBottomLimit\n\t\t\t\t? color.dim('...')\n\t\t\t\t: style(option, i + slidingWindowLocation === cursor);\n\t\t});\n};\n\nexport interface TextOptions {\n\tmessage: string;\n\tplaceholder?: string;\n\tdefaultValue?: string;\n\tinitialValue?: string;\n\tvalidate?: (value: string) => string | Error | undefined;\n}\nexport const text = (opts: TextOptions) => {\n\treturn new TextPrompt({\n\t\tvalidate: opts.validate,\n\t\tplaceholder: opts.placeholder,\n\t\tdefaultValue: opts.defaultValue,\n\t\tinitialValue: opts.initialValue,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst placeholder = opts.placeholder\n\t\t\t\t? color.inverse(opts.placeholder[0]) + color.dim(opts.placeholder.slice(1))\n\t\t\t\t: color.inverse(color.hidden('_'));\n\t\t\tconst value = !this.value ? placeholder : this.valueWithCursor;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error':\n\t\t\t\t\treturn `${title.trim()}\\n${color.yellow(S_BAR)} ${value}\\n${color.yellow(\n\t\t\t\t\t\tS_BAR_END\n\t\t\t\t\t)} ${color.yellow(this.error)}\\n`;\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.dim(this.value || opts.placeholder)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.strikethrough(\n\t\t\t\t\t\tcolor.dim(this.value ?? '')\n\t\t\t\t\t)}${this.value?.trim() ? `\\n${color.gray(S_BAR)}` : ''}`;\n\t\t\t\tdefault:\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${value}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<string | symbol>;\n};\n\nexport interface PasswordOptions {\n\tmessage: string;\n\tmask?: string;\n\tvalidate?: (value: string) => string | Error | undefined;\n}\nexport const password = (opts: PasswordOptions) => {\n\treturn new PasswordPrompt({\n\t\tvalidate: opts.validate,\n\t\tmask: opts.mask ?? S_PASSWORD_MASK,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst value = this.valueWithCursor;\n\t\t\tconst masked = this.masked;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error':\n\t\t\t\t\treturn `${title.trim()}\\n${color.yellow(S_BAR)} ${masked}\\n${color.yellow(\n\t\t\t\t\t\tS_BAR_END\n\t\t\t\t\t)} ${color.yellow(this.error)}\\n`;\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.dim(masked)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.strikethrough(color.dim(masked ?? ''))}${\n\t\t\t\t\t\tmasked ? `\\n${color.gray(S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\tdefault:\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${value}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<string | symbol>;\n};\n\nexport interface ConfirmOptions {\n\tmessage: string;\n\tactive?: string;\n\tinactive?: string;\n\tinitialValue?: boolean;\n}\nexport const confirm = (opts: ConfirmOptions) => {\n\tconst active = opts.active ?? 'Yes';\n\tconst inactive = opts.inactive ?? 'No';\n\treturn new ConfirmPrompt({\n\t\tactive,\n\t\tinactive,\n\t\tinitialValue: opts.initialValue ?? true,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst value = this.value ? active : inactive;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.dim(value)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.strikethrough(\n\t\t\t\t\t\tcolor.dim(value)\n\t\t\t\t\t)}\\n${color.gray(S_BAR)}`;\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${\n\t\t\t\t\t\tthis.value\n\t\t\t\t\t\t\t? `${color.green(S_RADIO_ACTIVE)} ${active}`\n\t\t\t\t\t\t\t: `${color.dim(S_RADIO_INACTIVE)} ${color.dim(active)}`\n\t\t\t\t\t} ${color.dim('/')} ${\n\t\t\t\t\t\t!this.value\n\t\t\t\t\t\t\t? `${color.green(S_RADIO_ACTIVE)} ${inactive}`\n\t\t\t\t\t\t\t: `${color.dim(S_RADIO_INACTIVE)} ${color.dim(inactive)}`\n\t\t\t\t\t}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<boolean | symbol>;\n};\n\ntype Primitive = Readonly<string | boolean | number>;\n\nexport type Option<Value> = Value extends Primitive\n\t? {\n\t\t\t/**\n\t\t\t * Internal data for this option.\n\t\t\t */\n\t\t\tvalue: Value;\n\t\t\t/**\n\t\t\t * The optional, user-facing text for this option.\n\t\t\t *\n\t\t\t * By default, the `value` is converted to a string.\n\t\t\t */\n\t\t\tlabel?: string;\n\t\t\t/**\n\t\t\t * An optional hint to display to the user when\n\t\t\t * this option might be selected.\n\t\t\t *\n\t\t\t * By default, no `hint` is displayed.\n\t\t\t */\n\t\t\thint?: string;\n\t\t}\n\t: {\n\t\t\t/**\n\t\t\t * Internal data for this option.\n\t\t\t */\n\t\t\tvalue: Value;\n\t\t\t/**\n\t\t\t * Required. The user-facing text for this option.\n\t\t\t */\n\t\t\tlabel: string;\n\t\t\t/**\n\t\t\t * An optional hint to display to the user when\n\t\t\t * this option might be selected.\n\t\t\t *\n\t\t\t * By default, no `hint` is displayed.\n\t\t\t */\n\t\t\thint?: string;\n\t\t};\n\nexport interface SelectOptions<Value> {\n\tmessage: string;\n\toptions: Option<Value>[];\n\tinitialValue?: Value;\n\tmaxItems?: number;\n}\n\nexport const select = <Value>(opts: SelectOptions<Value>) => {\n\tconst opt = (option: Option<Value>, state: 'inactive' | 'active' | 'selected' | 'cancelled') => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tswitch (state) {\n\t\t\tcase 'selected':\n\t\t\t\treturn `${color.dim(label)}`;\n\t\t\tcase 'active':\n\t\t\t\treturn `${color.green(S_RADIO_ACTIVE)} ${label} ${\n\t\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t\t}`;\n\t\t\tcase 'cancelled':\n\t\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t\tdefault:\n\t\t\t\treturn `${color.dim(S_RADIO_INACTIVE)} ${color.dim(label)}`;\n\t\t}\n\t};\n\n\treturn new SelectPrompt({\n\t\toptions: opts.options,\n\t\tinitialValue: opts.initialValue,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(this.options[this.cursor], 'selected')}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(\n\t\t\t\t\t\tthis.options[this.cursor],\n\t\t\t\t\t\t'cancelled'\n\t\t\t\t\t)}\\n${color.gray(S_BAR)}`;\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${limitOptions({\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tstyle: (item, active) => opt(item, active ? 'active' : 'inactive'),\n\t\t\t\t\t}).join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value | symbol>;\n};\n\nexport const selectKey = <Value extends string>(opts: SelectOptions<Value>) => {\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate: 'inactive' | 'active' | 'selected' | 'cancelled' = 'inactive'\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tif (state === 'selected') {\n\t\t\treturn `${color.dim(label)}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t}\n\t\tif (state === 'active') {\n\t\t\treturn `${color.bgCyan(color.gray(` ${option.value} `))} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\treturn `${color.gray(color.bgWhite(color.inverse(` ${option.value} `)))} ${label} ${\n\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t}`;\n\t};\n\n\treturn new SelectKeyPrompt({\n\t\toptions: opts.options,\n\t\tinitialValue: opts.initialValue,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(\n\t\t\t\t\t\tthis.options.find((opt) => opt.value === this.value) ?? opts.options[0],\n\t\t\t\t\t\t'selected'\n\t\t\t\t\t)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(this.options[0], 'cancelled')}\\n${color.gray(\n\t\t\t\t\t\tS_BAR\n\t\t\t\t\t)}`;\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${this.options\n\t\t\t\t\t\t.map((option, i) => opt(option, i === this.cursor ? 'active' : 'inactive'))\n\t\t\t\t\t\t.join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value | symbol>;\n};\n\nexport interface MultiSelectOptions<Value> {\n\tmessage: string;\n\toptions: Option<Value>[];\n\tinitialValues?: Value[];\n\tmaxItems?: number;\n\trequired?: boolean;\n\tcursorAt?: Value;\n}\nexport const multiselect = <Value>(opts: MultiSelectOptions<Value>) => {\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate: 'inactive' | 'active' | 'selected' | 'active-selected' | 'submitted' | 'cancelled'\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tif (state === 'active') {\n\t\t\treturn `${color.cyan(S_CHECKBOX_ACTIVE)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'selected') {\n\t\t\treturn `${color.green(S_CHECKBOX_SELECTED)} ${color.dim(label)} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t}\n\t\tif (state === 'active-selected') {\n\t\t\treturn `${color.green(S_CHECKBOX_SELECTED)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'submitted') {\n\t\t\treturn `${color.dim(label)}`;\n\t\t}\n\t\treturn `${color.dim(S_CHECKBOX_INACTIVE)} ${color.dim(label)}`;\n\t};\n\n\treturn new MultiSelectPrompt({\n\t\toptions: opts.options,\n\t\tinitialValues: opts.initialValues,\n\t\trequired: opts.required ?? true,\n\t\tcursorAt: opts.cursorAt,\n\t\tvalidate(selected: Value[]) {\n\t\t\tif (this.required && selected.length === 0)\n\t\t\t\treturn `Please select at least one option.\\n${color.reset(\n\t\t\t\t\tcolor.dim(\n\t\t\t\t\t\t`Press ${color.gray(color.bgWhite(color.inverse(' space ')))} to select, ${color.gray(\n\t\t\t\t\t\t\tcolor.bgWhite(color.inverse(' enter '))\n\t\t\t\t\t\t)} to submit`\n\t\t\t\t\t)\n\t\t\t\t)}`;\n\t\t},\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tconst styleOption = (option: Option<Value>, active: boolean) => {\n\t\t\t\tconst selected = this.value.includes(option.value);\n\t\t\t\tif (active && selected) {\n\t\t\t\t\treturn opt(option, 'active-selected');\n\t\t\t\t}\n\t\t\t\tif (selected) {\n\t\t\t\t\treturn opt(option, 'selected');\n\t\t\t\t}\n\t\t\t\treturn opt(option, active ? 'active' : 'inactive');\n\t\t\t};\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${\n\t\t\t\t\t\tthis.options\n\t\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t\t.map((option) => opt(option, 'submitted'))\n\t\t\t\t\t\t\t.join(color.dim(', ')) || color.dim('none')\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst label = this.options\n\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t.map((option) => opt(option, 'cancelled'))\n\t\t\t\t\t\t.join(color.dim(', '));\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${\n\t\t\t\t\t\tlabel.trim() ? `${label}\\n${color.gray(S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst footer = this.error\n\t\t\t\t\t\t.split('\\n')\n\t\t\t\t\t\t.map((ln, i) =>\n\t\t\t\t\t\t\ti === 0 ? `${color.yellow(S_BAR_END)} ${color.yellow(ln)}` : ` ${ln}`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\treturn `${title + color.yellow(S_BAR)} ${limitOptions({\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tstyle: styleOption,\n\t\t\t\t\t}).join(`\\n${color.yellow(S_BAR)} `)}\\n${footer}\\n`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${limitOptions({\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tstyle: styleOption,\n\t\t\t\t\t}).join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value[] | symbol>;\n};\n\nexport interface GroupMultiSelectOptions<Value> {\n\tmessage: string;\n\toptions: Record<string, Option<Value>[]>;\n\tinitialValues?: Value[];\n\trequired?: boolean;\n\tcursorAt?: Value;\n\tselectableGroups?: boolean;\n}\nexport const groupMultiselect = <Value>(opts: GroupMultiSelectOptions<Value>) => {\n\tconst { selectableGroups = true } = opts;\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate:\n\t\t\t| 'inactive'\n\t\t\t| 'active'\n\t\t\t| 'selected'\n\t\t\t| 'active-selected'\n\t\t\t| 'group-active'\n\t\t\t| 'group-active-selected'\n\t\t\t| 'submitted'\n\t\t\t| 'cancelled',\n\t\toptions: Option<Value>[] = []\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tconst isItem = typeof (option as any).group === 'string';\n\t\tconst next = isItem && (options[options.indexOf(option) + 1] ?? { group: true });\n\t\tconst isLast = isItem && (next as any).group === true;\n\t\tconst prefix = isItem ? (selectableGroups ? `${isLast ? S_BAR_END : S_BAR} ` : ' ') : '';\n\n\t\tif (state === 'active') {\n\t\t\treturn `${color.dim(prefix)}${color.cyan(S_CHECKBOX_ACTIVE)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'group-active') {\n\t\t\treturn `${prefix}${color.cyan(S_CHECKBOX_ACTIVE)} ${color.dim(label)}`;\n\t\t}\n\t\tif (state === 'group-active-selected') {\n\t\t\treturn `${prefix}${color.green(S_CHECKBOX_SELECTED)} ${color.dim(label)}`;\n\t\t}\n\t\tif (state === 'selected') {\n\t\t\tconst selectedCheckbox = isItem || selectableGroups ? color.green(S_CHECKBOX_SELECTED) : '';\n\t\t\treturn `${color.dim(prefix)}${selectedCheckbox} ${color.dim(label)} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t}\n\t\tif (state === 'active-selected') {\n\t\t\treturn `${color.dim(prefix)}${color.green(S_CHECKBOX_SELECTED)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'submitted') {\n\t\t\treturn `${color.dim(label)}`;\n\t\t}\n\t\tconst unselectedCheckbox = isItem || selectableGroups ? color.dim(S_CHECKBOX_INACTIVE) : '';\n\t\treturn `${color.dim(prefix)}${unselectedCheckbox} ${color.dim(label)}`;\n\t};\n\n\treturn new GroupMultiSelectPrompt({\n\t\toptions: opts.options,\n\t\tinitialValues: opts.initialValues,\n\t\trequired: opts.required ?? true,\n\t\tcursorAt: opts.cursorAt,\n\t\tselectableGroups,\n\t\tvalidate(selected: Value[]) {\n\t\t\tif (this.required && selected.length === 0)\n\t\t\t\treturn `Please select at least one option.\\n${color.reset(\n\t\t\t\t\tcolor.dim(\n\t\t\t\t\t\t`Press ${color.gray(color.bgWhite(color.inverse(' space ')))} to select, ${color.gray(\n\t\t\t\t\t\t\tcolor.bgWhite(color.inverse(' enter '))\n\t\t\t\t\t\t)} to submit`\n\t\t\t\t\t)\n\t\t\t\t)}`;\n\t\t},\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${this.options\n\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t.map((option) => opt(option, 'submitted'))\n\t\t\t\t\t\t.join(color.dim(', '))}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst label = this.options\n\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t.map((option) => opt(option, 'cancelled'))\n\t\t\t\t\t\t.join(color.dim(', '));\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${\n\t\t\t\t\t\tlabel.trim() ? `${label}\\n${color.gray(S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst footer = this.error\n\t\t\t\t\t\t.split('\\n')\n\t\t\t\t\t\t.map((ln, i) =>\n\t\t\t\t\t\t\ti === 0 ? `${color.yellow(S_BAR_END)} ${color.yellow(ln)}` : ` ${ln}`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\treturn `${title}${color.yellow(S_BAR)} ${this.options\n\t\t\t\t\t\t.map((option, i, options) => {\n\t\t\t\t\t\t\tconst selected =\n\t\t\t\t\t\t\t\tthis.value.includes(option.value) ||\n\t\t\t\t\t\t\t\t(option.group === true && this.isGroupSelected(`${option.value}`));\n\t\t\t\t\t\t\tconst active = i === this.cursor;\n\t\t\t\t\t\t\tconst groupActive =\n\t\t\t\t\t\t\t\t!active &&\n\t\t\t\t\t\t\t\ttypeof option.group === 'string' &&\n\t\t\t\t\t\t\t\tthis.options[this.cursor].value === option.group;\n\t\t\t\t\t\t\tif (groupActive) {\n\t\t\t\t\t\t\t\treturn opt(option, selected ? 'group-active-selected' : 'group-active', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (active && selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'active-selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn opt(option, active ? 'active' : 'inactive', options);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(`\\n${color.yellow(S_BAR)} `)}\\n${footer}\\n`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${this.options\n\t\t\t\t\t\t.map((option, i, options) => {\n\t\t\t\t\t\t\tconst selected =\n\t\t\t\t\t\t\t\tthis.value.includes(option.value) ||\n\t\t\t\t\t\t\t\t(option.group === true && this.isGroupSelected(`${option.value}`));\n\t\t\t\t\t\t\tconst active = i === this.cursor;\n\t\t\t\t\t\t\tconst groupActive =\n\t\t\t\t\t\t\t\t!active &&\n\t\t\t\t\t\t\t\ttypeof option.group === 'string' &&\n\t\t\t\t\t\t\t\tthis.options[this.cursor].value === option.group;\n\t\t\t\t\t\t\tif (groupActive) {\n\t\t\t\t\t\t\t\treturn opt(option, selected ? 'group-active-selected' : 'group-active', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (active && selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'active-selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn opt(option, active ? 'active' : 'inactive', options);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value[] | symbol>;\n};\n\nexport const note = (message = '', title = '') => {\n\tconst lines = `\\n${message}\\n`.split('\\n');\n\tconst titleLen = strip(title).length;\n\tconst len =\n\t\tMath.max(\n\t\t\tlines.reduce((sum, ln) => {\n\t\t\t\tconst line = strip(ln);\n\t\t\t\treturn line.length > sum ? line.length : sum;\n\t\t\t}, 0),\n\t\t\ttitleLen\n\t\t) + 2;\n\tconst msg = lines\n\t\t.map(\n\t\t\t(ln) =>\n\t\t\t\t`${color.gray(S_BAR)} ${color.dim(ln)}${' '.repeat(len - strip(ln).length)}${color.gray(\n\t\t\t\t\tS_BAR\n\t\t\t\t)}`\n\t\t)\n\t\t.join('\\n');\n\tprocess.stdout.write(\n\t\t`${color.gray(S_BAR)}\\n${color.green(S_STEP_SUBMIT)} ${color.reset(title)} ${color.gray(\n\t\t\tS_BAR_H.repeat(Math.max(len - titleLen - 1, 1)) + S_CORNER_TOP_RIGHT\n\t\t)}\\n${msg}\\n${color.gray(S_CONNECT_LEFT + S_BAR_H.repeat(len + 2) + S_CORNER_BOTTOM_RIGHT)}\\n`\n\t);\n};\n\nexport const cancel = (message = '') => {\n\tprocess.stdout.write(`${color.gray(S_BAR_END)} ${color.red(message)}\\n\\n`);\n};\n\nexport const intro = (title = '') => {\n\tprocess.stdout.write(`${color.gray(S_BAR_START)} ${title}\\n`);\n};\n\nexport const outro = (message = '') => {\n\tprocess.stdout.write(`${color.gray(S_BAR)}\\n${color.gray(S_BAR_END)} ${message}\\n\\n`);\n};\n\nexport type LogMessageOptions = {\n\tsymbol?: string;\n};\nexport const log = {\n\tmessage: (message = '', { symbol = color.gray(S_BAR) }: LogMessageOptions = {}) => {\n\t\tconst parts = [`${color.gray(S_BAR)}`];\n\t\tif (message) {\n\t\t\tconst [firstLine, ...lines] = message.split('\\n');\n\t\t\tparts.push(`${symbol} ${firstLine}`, ...lines.map((ln) => `${color.gray(S_BAR)} ${ln}`));\n\t\t}\n\t\tprocess.stdout.write(`${parts.join('\\n')}\\n`);\n\t},\n\tinfo: (message: string) => {\n\t\tlog.message(message, { symbol: color.blue(S_INFO) });\n\t},\n\tsuccess: (message: string) => {\n\t\tlog.message(message, { symbol: color.green(S_SUCCESS) });\n\t},\n\tstep: (message: string) => {\n\t\tlog.message(message, { symbol: color.green(S_STEP_SUBMIT) });\n\t},\n\twarn: (message: string) => {\n\t\tlog.message(message, { symbol: color.yellow(S_WARN) });\n\t},\n\t/** alias for `log.warn()`. */\n\twarning: (message: string) => {\n\t\tlog.warn(message);\n\t},\n\terror: (message: string) => {\n\t\tlog.message(message, { symbol: color.red(S_ERROR) });\n\t},\n};\n\nconst prefix = `${color.gray(S_BAR)} `;\nexport const stream = {\n\tmessage: async (\n\t\titerable: Iterable<string> | AsyncIterable<string>,\n\t\t{ symbol = color.gray(S_BAR) }: LogMessageOptions = {}\n\t) => {\n\t\tprocess.stdout.write(`${color.gray(S_BAR)}\\n${symbol} `);\n\t\tlet lineWidth = 3;\n\t\tfor await (let chunk of iterable) {\n\t\t\tchunk = chunk.replace(/\\n/g, `\\n${prefix}`);\n\t\t\tif (chunk.includes('\\n')) {\n\t\t\t\tlineWidth = 3 + strip(chunk.slice(chunk.lastIndexOf('\\n'))).length;\n\t\t\t}\n\t\t\tconst chunkLen = strip(chunk).length;\n\t\t\tif (lineWidth + chunkLen < process.stdout.columns) {\n\t\t\t\tlineWidth += chunkLen;\n\t\t\t\tprocess.stdout.write(chunk);\n\t\t\t} else {\n\t\t\t\tprocess.stdout.write(`\\n${prefix}${chunk.trimStart()}`);\n\t\t\t\tlineWidth = 3 + strip(chunk.trimStart()).length;\n\t\t\t}\n\t\t}\n\t\tprocess.stdout.write('\\n');\n\t},\n\tinfo: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.blue(S_INFO) });\n\t},\n\tsuccess: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.green(S_SUCCESS) });\n\t},\n\tstep: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.green(S_STEP_SUBMIT) });\n\t},\n\twarn: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.yellow(S_WARN) });\n\t},\n\t/** alias for `log.warn()`. */\n\twarning: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.warn(iterable);\n\t},\n\terror: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.red(S_ERROR) });\n\t},\n};\n\nexport interface SpinnerOptions {\n\tindicator?: 'dots' | 'timer';\n}\n\nexport const spinner = ({ indicator = 'dots' }: SpinnerOptions = {}) => {\n\tconst frames = unicode ? ['◒', '◐', '◓', '◑'] : ['•', 'o', 'O', '0'];\n\tconst delay = unicode ? 80 : 120;\n\tconst isCI = process.env.CI === 'true';\n\n\tlet unblock: () => void;\n\tlet loop: NodeJS.Timeout;\n\tlet isSpinnerActive = false;\n\tlet _message = '';\n\tlet _prevMessage: string | undefined = undefined;\n\tlet _origin: number = performance.now();\n\n\tconst handleExit = (code: number) => {\n\t\tconst msg = code > 1 ? 'Something went wrong' : 'Canceled';\n\t\tif (isSpinnerActive) stop(msg, code);\n\t};\n\n\tconst errorEventHandler = () => handleExit(2);\n\tconst signalEventHandler = () => handleExit(1);\n\n\tconst registerHooks = () => {\n\t\t// Reference: https://nodejs.org/api/process.html#event-uncaughtexception\n\t\tprocess.on('uncaughtExceptionMonitor', errorEventHandler);\n\t\t// Reference: https://nodejs.org/api/process.html#event-unhandledrejection\n\t\tprocess.on('unhandledRejection', errorEventHandler);\n\t\t// Reference Signal Events: https://nodejs.org/api/process.html#signal-events\n\t\tprocess.on('SIGINT', signalEventHandler);\n\t\tprocess.on('SIGTERM', signalEventHandler);\n\t\tprocess.on('exit', handleExit);\n\t};\n\n\tconst clearHooks = () => {\n\t\tprocess.removeListener('uncaughtExceptionMonitor', errorEventHandler);\n\t\tprocess.removeListener('unhandledRejection', errorEventHandler);\n\t\tprocess.removeListener('SIGINT', signalEventHandler);\n\t\tprocess.removeListener('SIGTERM', signalEventHandler);\n\t\tprocess.removeListener('exit', handleExit);\n\t};\n\n\tconst clearPrevMessage = () => {\n\t\tif (_prevMessage === undefined) return;\n\t\tif (isCI) process.stdout.write('\\n');\n\t\tconst prevLines = _prevMessage.split('\\n');\n\t\tprocess.stdout.write(cursor.move(-999, prevLines.length - 1));\n\t\tprocess.stdout.write(erase.down(prevLines.length));\n\t};\n\n\tconst parseMessage = (msg: string): string => {\n\t\treturn msg.replace(/\\.+$/, '');\n\t};\n\n\tconst formatTimer = (origin: number): string => {\n\t\tconst duration = (performance.now() - origin) / 1000;\n\t\tconst min = Math.floor(duration / 60);\n\t\tconst secs = Math.floor(duration % 60);\n\t\treturn min > 0 ? `[${min}m ${secs}s]` : `[${secs}s]`;\n\t};\n\n\tconst start = (msg = ''): void => {\n\t\tisSpinnerActive = true;\n\t\tunblock = block();\n\t\t_message = parseMessage(msg);\n\t\t_origin = performance.now();\n\t\tprocess.stdout.write(`${color.gray(S_BAR)}\\n`);\n\t\tlet frameIndex = 0;\n\t\tlet indicatorTimer = 0;\n\t\tregisterHooks();\n\t\tloop = setInterval(() => {\n\t\t\tif (isCI && _message === _prevMessage) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tclearPrevMessage();\n\t\t\t_prevMessage = _message;\n\t\t\tconst frame = color.magenta(frames[frameIndex]);\n\n\t\t\tif (isCI) {\n\t\t\t\tprocess.stdout.write(`${frame} ${_message}...`);\n\t\t\t} else if (indicator === 'timer') {\n\t\t\t\tprocess.stdout.write(`${frame} ${_message} ${formatTimer(_origin)}`);\n\t\t\t} else {\n\t\t\t\tconst loadingDots = '.'.repeat(Math.floor(indicatorTimer)).slice(0, 3);\n\t\t\t\tprocess.stdout.write(`${frame} ${_message}${loadingDots}`);\n\t\t\t}\n\n\t\t\tframeIndex = frameIndex + 1 < frames.length ? frameIndex + 1 : 0;\n\t\t\tindicatorTimer = indicatorTimer < frames.length ? indicatorTimer + 0.125 : 0;\n\t\t}, delay);\n\t};\n\n\tconst stop = (msg = '', code = 0): void => {\n\t\tisSpinnerActive = false;\n\t\tclearInterval(loop);\n\t\tclearPrevMessage();\n\t\tconst step =\n\t\t\tcode === 0\n\t\t\t\t? color.green(S_STEP_SUBMIT)\n\t\t\t\t: code === 1\n\t\t\t\t\t? color.red(S_STEP_CANCEL)\n\t\t\t\t\t: color.red(S_STEP_ERROR);\n\t\t_message = parseMessage(msg ?? _message);\n\t\tif (indicator === 'timer') {\n\t\t\tprocess.stdout.write(`${step} ${_message} ${formatTimer(_origin)}\\n`);\n\t\t} else {\n\t\t\tprocess.stdout.write(`${step} ${_message}\\n`);\n\t\t}\n\t\tclearHooks();\n\t\tunblock();\n\t};\n\n\tconst message = (msg = ''): void => {\n\t\t_message = parseMessage(msg ?? _message);\n\t};\n\n\treturn {\n\t\tstart,\n\t\tstop,\n\t\tmessage,\n\t};\n};\n\nexport type PromptGroupAwaitedReturn<T> = {\n\t[P in keyof T]: Exclude<Awaited<T[P]>, symbol>;\n};\n\nexport interface PromptGroupOptions<T> {\n\t/**\n\t * Control how the group can be canceled\n\t * if one of the prompts is canceled.\n\t */\n\tonCancel?: (opts: { results: Prettify<Partial<PromptGroupAwaitedReturn<T>>> }) => void;\n}\n\ntype Prettify<T> = {\n\t[P in keyof T]: T[P];\n} & {};\n\nexport type PromptGroup<T> = {\n\t[P in keyof T]: (opts: {\n\t\tresults: Prettify<Partial<PromptGroupAwaitedReturn<Omit<T, P>>>>;\n\t}) => undefined | Promise<T[P] | undefined>;\n};\n\n/**\n * Define a group of prompts to be displayed\n * and return a results of objects within the group\n */\nexport const group = async <T>(\n\tprompts: PromptGroup<T>,\n\topts?: PromptGroupOptions<T>\n): Promise<Prettify<PromptGroupAwaitedReturn<T>>> => {\n\tconst results = {} as any;\n\tconst promptNames = Object.keys(prompts);\n\n\tfor (const name of promptNames) {\n\t\tconst prompt = prompts[name as keyof T];\n\t\tconst result = await prompt({ results })?.catch((e) => {\n\t\t\tthrow e;\n\t\t});\n\n\t\t// Pass the results to the onCancel function\n\t\t// so the user can decide what to do with the results\n\t\t// TODO: Switch to callback within core to avoid isCancel Fn\n\t\tif (typeof opts?.onCancel === 'function' && isCancel(result)) {\n\t\t\tresults[name] = 'canceled';\n\t\t\topts.onCancel({ results });\n\t\t\tcontinue;\n\t\t}\n\n\t\tresults[name] = result;\n\t}\n\n\treturn results;\n};\n\nexport type Task = {\n\t/**\n\t * Task title\n\t */\n\ttitle: string;\n\t/**\n\t * Task function\n\t */\n\ttask: (message: (string: string) => void) => string | Promise<string> | void | Promise<void>;\n\n\t/**\n\t * If enabled === false the task will be skipped\n\t */\n\tenabled?: boolean;\n};\n\n/**\n * Define a group of tasks to be executed\n */\nexport const tasks = async (tasks: Task[]) => {\n\tfor (const task of tasks) {\n\t\tif (task.enabled === false) continue;\n\n\t\tconst s = spinner();\n\t\ts.start(task.title);\n\t\tconst result = await task.task(s.message);\n\t\ts.stop(result || task.title);\n\t}\n};\n", "import { existsSync } from \"node:fs\";\nimport { pathToFileURL } from \"node:url\";\nimport { join, resolve as resolvePath } from \"node:path\";\nimport picocolors from \"picocolors\";\nimport { AgentEnvStore } from \"./envStore\";\nimport { installInteractiveAuthInterceptors } from \"./interactiveAuth\";\nimport { renderDocyrusLogoPrimary } from \"./logo\";\nimport { cleanupOnboardingStdinState, runOnboarding, shouldRunOnboarding } from \"./onboarding\";\n\ntype IDocyrusPiProfileId = \"agent\" | \"coder\";\ntype IDocyrusPiMode = \"text\" | \"json\";\ntype IDocyrusPiThinkingLevel = \"off\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\";\n\ninterface IDocyrusPiLoaderRequest {\n profile: IDocyrusPiProfileId;\n prompt?: string;\n print?: boolean;\n mode?: IDocyrusPiMode;\n continue?: boolean;\n resume?: boolean;\n provider?: string;\n model?: string;\n thinking?: IDocyrusPiThinkingLevel;\n session?: string;\n sessionDir?: string;\n apiKey?: string;\n verbose?: boolean;\n}\n\ninterface IPiExports {\n AuthStorage: {\n create(path?: string): any;\n };\n DefaultResourceLoader: new(config: Record<string, unknown>) => { reload(): Promise<void> };\n ModelRegistry: new(authStorage: any, modelsJsonPath?: string) => any;\n SettingsManager: {\n create(cwd?: string, agentDir?: string): any;\n };\n SessionManager: {\n create(cwd: string, sessionDir?: string): any;\n open(path: string, sessionDir?: string): any;\n continueRecent(cwd: string, sessionDir?: string): any;\n list(cwd: string, sessionDir?: string): Promise<Array<{\n path: string;\n name?: string;\n firstMessage: string;\n modified: Date;\n }>>;\n };\n createAgentSession(options: Record<string, unknown>): Promise<{ session: any; modelFallbackMessage?: string }>;\n InteractiveMode: new(session: any, options?: Record<string, unknown>) => any;\n runPrintMode(session: any, options: Record<string, unknown>): Promise<void>;\n createBashTool(cwd: string): unknown;\n createEditTool(cwd: string): unknown;\n createFindTool(cwd: string): unknown;\n createGrepTool(cwd: string): unknown;\n createLsTool(cwd: string): unknown;\n createReadTool(cwd: string): unknown;\n createWriteTool(cwd: string): unknown;\n ExtensionInputComponent: new(...args: any[]) => any;\n ExtensionSelectorComponent: new(...args: any[]) => any;\n}\n\nfunction readRequiredEnv(name: string): string {\n const value = process.env[name];\n if (!value || value.trim().length === 0) {\n throw new Error(`Missing required environment variable: ${name}`);\n }\n\n return value;\n}\n\nfunction readLoaderRequest(): IDocyrusPiLoaderRequest {\n return JSON.parse(readRequiredEnv(\"DOCYRUS_PI_REQUEST\")) as IDocyrusPiLoaderRequest;\n}\n\nasync function loadPiExports(): Promise<IPiExports> {\n const piPackageDir = readRequiredEnv(\"PI_PACKAGE_DIR\");\n const moduleUrl = pathToFileURL(join(piPackageDir, \"dist\", \"index.js\")).href;\n return await import(moduleUrl) as IPiExports;\n}\n\nfunction resolvePackagedPiResourceRoot(): string {\n const candidates = [\n resolvePath(process.cwd(), \"apps/api-cli/resources/pi-agent\"),\n resolvePath(__dirname, \"../resources/pi-agent\"),\n resolvePath(__dirname, \"resources/pi-agent\"),\n resolvePath(process.cwd(), \"dist/apps/api-cli/resources/pi-agent\"),\n ];\n\n const resolved = candidates.find((candidate) => existsSync(candidate));\n if (!resolved) {\n throw new Error(`Unable to locate pi agent resources. Checked: ${candidates.join(\", \")}`);\n }\n\n return resolved;\n}\n\nasync function readPipedStdin(): Promise<string | undefined> {\n if (process.stdin.isTTY) {\n return undefined;\n }\n\n return await new Promise((resolve) => {\n let data = \"\";\n process.stdin.setEncoding(\"utf8\");\n process.stdin.on(\"data\", (chunk) => {\n data += chunk;\n });\n process.stdin.on(\"end\", () => {\n resolve(data.trim() || undefined);\n });\n process.stdin.resume();\n });\n}\n\nfunction buildTools(profile: IDocyrusPiProfileId, cwd: string, pi: IPiExports) {\n if (profile === \"agent\") {\n return [\n pi.createReadTool(cwd),\n pi.createBashTool(cwd),\n pi.createGrepTool(cwd),\n pi.createFindTool(cwd),\n pi.createLsTool(cwd),\n ];\n }\n\n return [\n pi.createReadTool(cwd),\n pi.createBashTool(cwd),\n pi.createEditTool(cwd),\n pi.createWriteTool(cwd),\n pi.createGrepTool(cwd),\n pi.createFindTool(cwd),\n pi.createLsTool(cwd),\n ];\n}\n\nfunction resolveRequestedModel(params: {\n request: IDocyrusPiLoaderRequest;\n modelRegistry: { getAvailable(): Array<{ provider: string; id: string }>; find(provider: string, modelId: string): unknown | undefined };\n}): unknown | undefined {\n const { request, modelRegistry } = params;\n const requestedProvider = request.provider?.trim();\n const requestedModel = request.model?.trim();\n\n if (!requestedProvider && !requestedModel) {\n return undefined;\n }\n\n if (requestedProvider && requestedModel) {\n const normalizedModelId = requestedModel.startsWith(`${requestedProvider}/`)\n ? requestedModel.slice(requestedProvider.length + 1)\n : requestedModel;\n return modelRegistry.find(requestedProvider, normalizedModelId);\n }\n\n if (requestedModel && requestedModel.includes(\"/\")) {\n const slashIndex = requestedModel.indexOf(\"/\");\n return modelRegistry.find(requestedModel.slice(0, slashIndex).trim(), requestedModel.slice(slashIndex + 1).trim());\n }\n\n if (requestedModel) {\n const availableModels = modelRegistry.getAvailable();\n const exactMatches = availableModels.filter((model) => model.id === requestedModel);\n if (exactMatches.length === 1) {\n return exactMatches[0];\n }\n\n return availableModels.find((model) => model.id.includes(requestedModel));\n }\n\n return undefined;\n}\n\nfunction buildModelIdsByProvider(modelRegistry: { getAll(): Array<{ provider: string; id: string }> }): Record<string, string[]> {\n const values: Record<string, string[]> = {};\n for (const model of modelRegistry.getAll()) {\n if (!values[model.provider]) {\n values[model.provider] = [];\n }\n values[model.provider].push(model.id);\n }\n\n return values;\n}\n\nasync function chooseResumeSession(params: {\n pi: IPiExports;\n request: IDocyrusPiLoaderRequest;\n cwd: string;\n}): Promise<string | undefined> {\n const sessions = await params.pi.SessionManager.list(params.cwd, params.request.sessionDir);\n if (sessions.length === 0) {\n return undefined;\n }\n\n const prompts = await import(\"@clack/prompts\");\n const selected = await prompts.select({\n message: \"Select a session to resume\",\n options: sessions.slice(0, 20).map((session) => ({\n value: session.path,\n label: session.name || session.modified.toLocaleString(),\n hint: session.firstMessage.replace(/\\n/g, \" \").slice(0, 80) || \"Empty session\",\n })),\n });\n\n if (prompts.isCancel(selected) || !selected) {\n process.exit(0);\n }\n\n return String(selected);\n}\n\nasync function createSessionManager(params: {\n pi: IPiExports;\n request: IDocyrusPiLoaderRequest;\n cwd: string;\n isInteractive: boolean;\n}): Promise<any> {\n if (params.request.session) {\n return params.pi.SessionManager.open(params.request.session, params.request.sessionDir);\n }\n\n if (params.request.resume) {\n if (!params.isInteractive) {\n return params.pi.SessionManager.continueRecent(params.cwd, params.request.sessionDir);\n }\n\n const selectedSessionPath = await chooseResumeSession(params);\n if (selectedSessionPath) {\n return params.pi.SessionManager.open(selectedSessionPath, params.request.sessionDir);\n }\n }\n\n if (params.request.continue) {\n return params.pi.SessionManager.continueRecent(params.cwd, params.request.sessionDir);\n }\n\n return params.pi.SessionManager.create(params.cwd, params.request.sessionDir);\n}\n\nfunction renderStartupSplash(version: string): void {\n process.stderr.write(\n renderDocyrusLogoPrimary() +\n \"\\n\" +\n ` ${picocolors.bold(\"DOCYRUS\")} ${picocolors.dim(`v${version}`)}\\n` +\n ` ${picocolors.green(\"Welcome.\")} Preparing your agent workspace...\\n\\n`,\n );\n}\n\nasync function main(): Promise<void> {\n const request = readLoaderRequest();\n const pi = await loadPiExports();\n const cwd = process.cwd();\n const agentDir = readRequiredEnv(\"PI_CODING_AGENT_DIR\");\n const version = process.env.DOCYRUS_PI_VERSION || \"dev\";\n const resourceRoot = resolvePackagedPiResourceRoot();\n const envStore = new AgentEnvStore(join(agentDir, \"env.json\"));\n await envStore.hydrateProcessEnv(process.env);\n\n const authStorage = pi.AuthStorage.create(join(agentDir, \"auth.json\"));\n const settingsManager = pi.SettingsManager.create(cwd, agentDir);\n const modelsJsonPath = join(agentDir, \"models.json\");\n const initialModelRegistry = new pi.ModelRegistry(authStorage, modelsJsonPath);\n const isPrintMode = Boolean(request.print) || !process.stdin.isTTY;\n const isInteractive = process.stdin.isTTY && !isPrintMode;\n const quietStartup = !request.verbose;\n\n if (quietStartup) {\n process.env.PI_SKIP_VERSION_CHECK = \"1\";\n settingsManager.setQuietStartup(true);\n settingsManager.setCollapseChangelog(true);\n settingsManager.setLastChangelogVersion(version);\n }\n\n const browserProviders = authStorage.getOAuthProviders();\n const apiKeyProviderIds = Array.from(new Set(initialModelRegistry.getAll().map((model: { provider: string }) => model.provider)));\n const modelIdsByProvider = buildModelIdsByProvider(initialModelRegistry);\n\n let usedClack = false;\n renderStartupSplash(version);\n\n if (await shouldRunOnboarding({\n authStorage,\n envStore,\n settingsManager,\n isInteractive,\n isPrintMode,\n browserProviders,\n apiKeyProviderIds,\n modelIdsByProvider,\n } as any)) {\n usedClack = true;\n await runOnboarding({\n authStorage,\n envStore,\n settingsManager,\n modelsJsonPath,\n browserProviders,\n apiKeyProviderIds,\n modelIdsByProvider,\n } as any);\n await envStore.hydrateProcessEnv(process.env);\n }\n\n const modelRegistry = new pi.ModelRegistry(authStorage, modelsJsonPath);\n const requestedModel = resolveRequestedModel({\n request,\n modelRegistry,\n });\n\n if (request.apiKey) {\n const apiKeyProvider = request.provider?.trim() || (requestedModel as { provider?: string } | undefined)?.provider;\n if (!apiKeyProvider) {\n throw new Error(\"--api-key requires a provider or a resolvable model.\");\n }\n\n authStorage.setRuntimeApiKey(apiKeyProvider, request.apiKey);\n }\n\n const sessionManager = await createSessionManager({\n pi,\n request,\n cwd,\n isInteractive,\n });\n\n const resourceLoader = new pi.DefaultResourceLoader({\n cwd,\n agentDir,\n settingsManager,\n systemPrompt: join(\n resourceRoot,\n \"prompts\",\n request.profile === \"agent\" ? \"agent-system.md\" : \"coder-system.md\",\n ),\n });\n await resourceLoader.reload();\n\n const { session, modelFallbackMessage } = await pi.createAgentSession({\n cwd,\n agentDir,\n authStorage,\n modelRegistry,\n resourceLoader,\n settingsManager,\n sessionManager,\n tools: buildTools(request.profile, cwd, pi),\n model: requestedModel,\n thinkingLevel: request.thinking,\n });\n\n if (usedClack) {\n cleanupOnboardingStdinState();\n }\n\n const pipedStdin = await readPipedStdin();\n if (pipedStdin !== undefined && !request.print) {\n request.print = true;\n }\n\n if (request.print || pipedStdin !== undefined) {\n if (!session.model) {\n throw new Error(`No models available.\\n\\nSet an API key environment variable:\\n ANTHROPIC_API_KEY, OPENAI_API_KEY, GEMINI_API_KEY, etc.\\n\\nOr create ${modelsJsonPath}`);\n }\n\n const initialMessage = pipedStdin || request.prompt;\n const initialMessages = pipedStdin && request.prompt ? [request.prompt] : undefined;\n await pi.runPrintMode(session, {\n mode: request.mode || \"text\",\n initialMessage,\n messages: initialMessages,\n });\n return;\n }\n\n const interactiveMode = new pi.InteractiveMode(session, {\n initialMessage: request.prompt,\n modelFallbackMessage,\n verbose: request.verbose,\n });\n const originalInit = interactiveMode.init.bind(interactiveMode);\n interactiveMode.init = async() => {\n await originalInit();\n installInteractiveAuthInterceptors(interactiveMode, {\n authStorage,\n envStore,\n settingsManager,\n modelsJsonPath,\n browserProviders,\n apiKeyProviderIds: Array.from(new Set(modelRegistry.getAll().map((model: { provider: string }) => model.provider))),\n modelIdsByProvider: buildModelIdsByProvider(modelRegistry),\n uiComponents: {\n ExtensionInputComponent: pi.ExtensionInputComponent,\n ExtensionSelectorComponent: pi.ExtensionSelectorComponent,\n },\n });\n };\n\n await interactiveMode.run();\n}\n\nvoid main().catch((error: unknown) => {\n const message = error instanceof Error ? error.message : String(error);\n process.stderr.write(`${message}\\n`);\n process.exitCode = 1;\n});\n", "import { chmod, mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { dirname } from \"node:path\";\n\nexport interface IAgentEnvStoreState {\n version: 1;\n values: Record<string, string>;\n}\n\nfunction createDefaultState(): IAgentEnvStoreState {\n return {\n version: 1,\n values: {},\n };\n}\n\nfunction normalizeState(state: IAgentEnvStoreState): IAgentEnvStoreState {\n const values: Record<string, string> = {};\n for (const [key, value] of Object.entries(state.values || {})) {\n const normalizedKey = key.trim();\n const normalizedValue = value.trim();\n if (!normalizedKey || !normalizedValue) {\n continue;\n }\n values[normalizedKey] = normalizedValue;\n }\n\n return {\n version: 1,\n values,\n };\n}\n\nexport class AgentEnvStore {\n constructor(private readonly filePath: string) {}\n\n getFilePath(): string {\n return this.filePath;\n }\n\n async readState(): Promise<IAgentEnvStoreState> {\n try {\n const raw = await readFile(this.filePath, \"utf8\");\n const parsed = JSON.parse(raw) as IAgentEnvStoreState;\n if (!parsed || parsed.version !== 1 || typeof parsed.values !== \"object\" || parsed.values === null) {\n return createDefaultState();\n }\n\n return normalizeState(parsed);\n }\n catch (error: unknown) {\n if (\n typeof error === \"object\"\n && error !== null\n && \"code\" in error\n && (error as { code?: string }).code === \"ENOENT\"\n ) {\n return createDefaultState();\n }\n\n return createDefaultState();\n }\n }\n\n async writeState(state: IAgentEnvStoreState): Promise<void> {\n const normalized = normalizeState(state);\n const directory = dirname(this.filePath);\n\n await mkdir(directory, {\n recursive: true,\n mode: 0o700,\n });\n\n await writeFile(this.filePath, `${JSON.stringify(normalized, null, 2)}\\n`, {\n encoding: \"utf8\",\n mode: 0o600,\n });\n\n await chmod(this.filePath, 0o600);\n }\n\n async setMany(values: Record<string, string>): Promise<void> {\n const state = await this.readState();\n await this.writeState({\n version: 1,\n values: {\n ...state.values,\n ...Object.fromEntries(\n Object.entries(values)\n .map(([key, value]) => [key.trim(), value.trim()] as const)\n .filter(([key, value]) => key.length > 0 && value.length > 0),\n ),\n },\n });\n }\n\n async removeMany(keys: string[]): Promise<void> {\n const state = await this.readState();\n const nextValues = { ...state.values };\n\n for (const key of keys) {\n delete nextValues[key];\n }\n\n await this.writeState({\n version: 1,\n values: nextValues,\n });\n }\n\n async hydrateProcessEnv(env: NodeJS.ProcessEnv = process.env): Promise<Record<string, string>> {\n const state = await this.readState();\n for (const [key, value] of Object.entries(state.values)) {\n if (!env[key]) {\n env[key] = value;\n }\n }\n\n return state.values;\n }\n\n async hasAny(keys: string[]): Promise<boolean> {\n const state = await this.readState();\n return keys.some((key) => Boolean(state.values[key] || process.env[key]));\n }\n}\n", "import { chmod, mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { dirname } from \"node:path\";\n\ntype IJsonValue = string | number | boolean | null | IJsonArray | IJsonObject;\ninterface IJsonObject {\n [key: string]: IJsonValue;\n}\ntype IJsonArray = IJsonValue[];\n\nexport interface IModelsConfigState {\n providers: Record<string, IJsonObject>;\n}\n\nfunction createDefaultState(): IModelsConfigState {\n return {\n providers: {},\n };\n}\n\nexport async function readModelsConfig(filePath: string): Promise<IModelsConfigState> {\n try {\n const raw = await readFile(filePath, \"utf8\");\n const parsed = JSON.parse(raw) as IModelsConfigState;\n if (!parsed || typeof parsed !== \"object\" || typeof parsed.providers !== \"object\" || parsed.providers === null) {\n return createDefaultState();\n }\n\n return {\n providers: { ...parsed.providers },\n };\n }\n catch (error: unknown) {\n if (\n typeof error === \"object\"\n && error !== null\n && \"code\" in error\n && (error as { code?: string }).code === \"ENOENT\"\n ) {\n return createDefaultState();\n }\n\n return createDefaultState();\n }\n}\n\nexport async function writeModelsConfig(filePath: string, state: IModelsConfigState): Promise<void> {\n const directory = dirname(filePath);\n await mkdir(directory, {\n recursive: true,\n mode: 0o700,\n });\n\n await writeFile(filePath, `${JSON.stringify(state, null, 2)}\\n`, {\n encoding: \"utf8\",\n mode: 0o600,\n });\n\n await chmod(filePath, 0o600);\n}\n\nexport async function upsertModelsProvider(filePath: string, providerId: string, providerConfig: IJsonObject): Promise<void> {\n const state = await readModelsConfig(filePath);\n await writeModelsConfig(filePath, {\n providers: {\n ...state.providers,\n [providerId]: providerConfig,\n },\n });\n}\n\nexport async function removeModelsProvider(filePath: string, providerId: string): Promise<void> {\n const state = await readModelsConfig(filePath);\n const nextProviders = { ...state.providers };\n delete nextProviders[providerId];\n\n await writeModelsConfig(filePath, {\n providers: nextProviders,\n });\n}\n\nexport function createCustomOpenAiProviderConfig(params: {\n baseUrl: string;\n modelId: string;\n}): IJsonObject {\n return {\n baseUrl: params.baseUrl,\n apiKey: \"env:CUSTOM_OPENAI_API_KEY\",\n api: \"openai-completions\",\n models: [\n {\n id: params.modelId,\n name: params.modelId,\n reasoning: false,\n input: [\"text\"],\n contextWindow: 128000,\n maxTokens: 16384,\n cost: {\n input: 0,\n output: 0,\n cacheRead: 0,\n cacheWrite: 0,\n },\n },\n ],\n };\n}\n\nexport function createAzureProviderConfig(params: {\n baseUrl: string;\n modelId: string;\n useCustomModel: boolean;\n}): IJsonObject {\n const providerConfig: IJsonObject = {\n baseUrl: params.baseUrl,\n apiKey: \"env:AZURE_OPENAI_API_KEY\",\n };\n\n if (params.useCustomModel) {\n providerConfig.api = \"azure-openai-responses\";\n providerConfig.models = [\n {\n id: params.modelId,\n name: params.modelId,\n reasoning: false,\n input: [\"text\"],\n contextWindow: 128000,\n maxTokens: 16384,\n cost: {\n input: 0,\n output: 0,\n cacheRead: 0,\n cacheWrite: 0,\n },\n },\n ];\n }\n\n return providerConfig;\n}\n", "import type { AuthStorage, SettingsManager } from \"@mariozechner/pi-coding-agent\";\nimport { AgentEnvStore } from \"./envStore\";\nimport {\n createAzureProviderConfig,\n createCustomOpenAiProviderConfig,\n removeModelsProvider,\n upsertModelsProvider,\n} from \"./modelsConfig\";\n\nexport interface IAzureConfigInput {\n apiKey: string;\n baseUrl: string;\n modelId: string;\n deploymentName?: string;\n apiVersion?: string;\n useCustomModel?: boolean;\n}\n\nexport interface ICustomOpenAiConfigInput {\n apiKey: string;\n baseUrl: string;\n modelId: string;\n}\n\nexport interface IBedrockConfigInput {\n region: string;\n modelId: string;\n profile?: string;\n accessKeyId?: string;\n secretAccessKey?: string;\n sessionToken?: string;\n}\n\nexport interface IDocyrusAuthFlowDependencies {\n authStorage: AuthStorage;\n envStore: AgentEnvStore;\n settingsManager: SettingsManager;\n modelsJsonPath: string;\n}\n\nfunction trimOrUndefined(value?: string): string | undefined {\n const trimmed = value?.trim();\n return trimmed && trimmed.length > 0 ? trimmed : undefined;\n}\n\nexport async function saveGenericApiKey(params: IDocyrusAuthFlowDependencies & {\n providerId: string;\n apiKey: string;\n}): Promise<void> {\n params.authStorage.set(params.providerId, {\n type: \"api_key\",\n key: params.apiKey.trim(),\n });\n}\n\nexport async function saveCustomOpenAiConfig(params: IDocyrusAuthFlowDependencies & ICustomOpenAiConfigInput): Promise<void> {\n params.authStorage.set(\"custom-openai\", {\n type: \"api_key\",\n key: params.apiKey.trim(),\n });\n\n await params.envStore.removeMany([\n \"CUSTOM_OPENAI_API_KEY\",\n ]);\n await params.envStore.setMany({\n CUSTOM_OPENAI_API_KEY: params.apiKey.trim(),\n });\n\n await upsertModelsProvider(params.modelsJsonPath, \"custom-openai\", createCustomOpenAiProviderConfig({\n baseUrl: params.baseUrl.trim(),\n modelId: params.modelId.trim(),\n }));\n\n params.settingsManager.setDefaultModelAndProvider(\"custom-openai\", params.modelId.trim());\n}\n\nexport async function saveAzureConfig(params: IDocyrusAuthFlowDependencies & IAzureConfigInput): Promise<void> {\n const modelId = params.modelId.trim();\n const useCustomModel = params.useCustomModel ?? false;\n\n params.authStorage.set(\"azure-openai-responses\", {\n type: \"api_key\",\n key: params.apiKey.trim(),\n });\n\n await params.envStore.removeMany([\n \"AZURE_OPENAI_API_KEY\",\n \"AZURE_OPENAI_API_VERSION\",\n \"AZURE_OPENAI_DEPLOYMENT_NAME_MAP\",\n ]);\n const envValues: Record<string, string> = {\n AZURE_OPENAI_API_KEY: params.apiKey.trim(),\n };\n const trimmedApiVersion = trimOrUndefined(params.apiVersion);\n if (trimmedApiVersion) {\n envValues.AZURE_OPENAI_API_VERSION = trimmedApiVersion;\n }\n\n const trimmedDeploymentName = trimOrUndefined(params.deploymentName);\n if (trimmedDeploymentName && trimmedDeploymentName !== modelId) {\n envValues.AZURE_OPENAI_DEPLOYMENT_NAME_MAP = JSON.stringify({\n [modelId]: trimmedDeploymentName,\n });\n }\n\n await params.envStore.setMany(envValues);\n\n await upsertModelsProvider(params.modelsJsonPath, \"azure-openai-responses\", createAzureProviderConfig({\n baseUrl: params.baseUrl.trim(),\n modelId,\n useCustomModel,\n }));\n\n params.settingsManager.setDefaultModelAndProvider(\"azure-openai-responses\", modelId);\n}\n\nexport async function saveBedrockConfig(params: IDocyrusAuthFlowDependencies & IBedrockConfigInput): Promise<void> {\n params.authStorage.set(\"amazon-bedrock\", {\n type: \"api_key\",\n key: \"aws-configured\",\n });\n\n await params.envStore.removeMany([\n \"AWS_PROFILE\",\n \"AWS_ACCESS_KEY_ID\",\n \"AWS_SECRET_ACCESS_KEY\",\n \"AWS_SESSION_TOKEN\",\n \"AWS_REGION\",\n \"AWS_DEFAULT_REGION\",\n \"AWS_BEARER_TOKEN_BEDROCK\",\n ]);\n const envValues: Record<string, string> = {\n AWS_REGION: params.region.trim(),\n AWS_DEFAULT_REGION: params.region.trim(),\n };\n\n const profile = trimOrUndefined(params.profile);\n if (profile) {\n envValues.AWS_PROFILE = profile;\n }\n\n const accessKeyId = trimOrUndefined(params.accessKeyId);\n const secretAccessKey = trimOrUndefined(params.secretAccessKey);\n if (accessKeyId && secretAccessKey) {\n envValues.AWS_ACCESS_KEY_ID = accessKeyId;\n envValues.AWS_SECRET_ACCESS_KEY = secretAccessKey;\n }\n\n const sessionToken = trimOrUndefined(params.sessionToken);\n if (sessionToken) {\n envValues.AWS_SESSION_TOKEN = sessionToken;\n }\n\n await params.envStore.setMany(envValues);\n params.settingsManager.setDefaultModelAndProvider(\"amazon-bedrock\", params.modelId.trim());\n}\n\nexport async function clearProviderConfig(params: IDocyrusAuthFlowDependencies & {\n providerId: string;\n}): Promise<void> {\n params.authStorage.remove(params.providerId);\n\n if (params.providerId === \"custom-openai\") {\n await params.envStore.removeMany([\n \"CUSTOM_OPENAI_API_KEY\",\n ]);\n await removeModelsProvider(params.modelsJsonPath, \"custom-openai\");\n }\n\n if (params.providerId === \"azure-openai-responses\") {\n await params.envStore.removeMany([\n \"AZURE_OPENAI_API_KEY\",\n \"AZURE_OPENAI_API_VERSION\",\n \"AZURE_OPENAI_DEPLOYMENT_NAME_MAP\",\n ]);\n await removeModelsProvider(params.modelsJsonPath, \"azure-openai-responses\");\n }\n\n if (params.providerId === \"amazon-bedrock\") {\n await params.envStore.removeMany([\n \"AWS_PROFILE\",\n \"AWS_ACCESS_KEY_ID\",\n \"AWS_SECRET_ACCESS_KEY\",\n \"AWS_SESSION_TOKEN\",\n \"AWS_REGION\",\n \"AWS_DEFAULT_REGION\",\n \"AWS_BEARER_TOKEN_BEDROCK\",\n ]);\n }\n}\n", "export const DOCYRUS_LOGO: readonly string[] = [\n \"\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\",\n \"\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557 \u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557 \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u255A\u2588\u2588\u2557 \u2588\u2588\u2554\u255D\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\",\n \"\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\",\n \"\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u255A\u2588\u2588\u2554\u255D \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551\u255A\u2550\u2550\u2550\u2550\u2588\u2588\u2551\",\n \"\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D \u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D \u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\",\n \"\u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\",\n];\n\nexport const DOCYRUS_LOGO_PRIMARY_HEX = \"#ef4444\";\nexport const DOCYRUS_LOGO_SHADOW_HEX = \"#3f4bff\";\n\nfunction colorizeHex(text: string, hex: string): string {\n const normalizedHex = hex.replace(\"#\", \"\");\n const red = parseInt(normalizedHex.slice(0, 2), 16);\n const green = parseInt(normalizedHex.slice(2, 4), 16);\n const blue = parseInt(normalizedHex.slice(4, 6), 16);\n\n return `\\x1b[38;2;${red};${green};${blue}m${text}\\x1b[0m`;\n}\n\nexport function renderDocyrusLogo(color: (text: string) => string = (text) => colorizeHex(text, DOCYRUS_LOGO_PRIMARY_HEX)): string {\n return `\\n${DOCYRUS_LOGO.map(color).join(\"\\n\")}\\n`;\n}\n\nexport function renderDocyrusLogoPrimary(): string {\n return renderDocyrusLogo();\n}\n", "import type { AgentEnvStore } from \"./envStore\";\n\nexport type IDocyrusAuthFlowId = \"oauth\" | \"generic-api-key\" | \"custom-openai\" | \"azure-openai-responses\" | \"amazon-bedrock\";\n\nexport interface IDocyrusProviderOption {\n id: string;\n label: string;\n hint?: string;\n flow: IDocyrusAuthFlowId;\n}\n\nconst OAUTH_ONLY_PROVIDER_IDS = new Set([\n \"github-copilot\",\n \"openai-codex\",\n \"google-gemini-cli\",\n \"google-antigravity\",\n]);\n\nconst PROVIDER_LABELS: Record<string, string> = {\n anthropic: \"Anthropic (Claude)\",\n openai: \"OpenAI\",\n google: \"Google (Gemini)\",\n \"google-vertex\": \"Google Vertex AI\",\n \"azure-openai-responses\": \"Azure OpenAI\",\n \"amazon-bedrock\": \"Amazon Bedrock\",\n xai: \"xAI (Grok)\",\n groq: \"Groq\",\n cerebras: \"Cerebras\",\n openrouter: \"OpenRouter\",\n \"vercel-ai-gateway\": \"Vercel AI Gateway\",\n zai: \"ZAI\",\n mistral: \"Mistral\",\n minimax: \"MiniMax\",\n \"minimax-cn\": \"MiniMax CN\",\n huggingface: \"Hugging Face\",\n opencode: \"OpenCode\",\n \"opencode-go\": \"OpenCode Go\",\n \"kimi-coding\": \"Kimi Coding\",\n \"custom-openai\": \"Custom OpenAI-Compatible\",\n \"google-gemini-cli\": \"Google Gemini CLI\",\n \"google-antigravity\": \"Google Antigravity\",\n \"openai-codex\": \"OpenAI Codex\",\n \"github-copilot\": \"GitHub Copilot\",\n};\n\nconst PROVIDER_HINTS: Record<string, string> = {\n anthropic: \"recommended\",\n \"custom-openai\": \"custom base URL + API key\",\n \"azure-openai-responses\": \"API key + base URL/resource + deployment\",\n \"amazon-bedrock\": \"AWS profile or access key pair\",\n \"openai-codex\": \"browser auth\",\n \"github-copilot\": \"browser auth\",\n \"google-gemini-cli\": \"browser auth\",\n \"google-antigravity\": \"browser auth\",\n};\n\nfunction humanizeProviderId(providerId: string): string {\n return providerId\n .split(\"-\")\n .map((part) => {\n if (!part) {return part;}\n if (part.length <= 3) {return part.toUpperCase();}\n return part[0].toUpperCase() + part.slice(1);\n })\n .join(\" \");\n}\n\nfunction toLabel(providerId: string): string {\n return PROVIDER_LABELS[providerId] || humanizeProviderId(providerId);\n}\n\nfunction toHint(providerId: string): string | undefined {\n return PROVIDER_HINTS[providerId];\n}\n\nfunction compareProviderOptions(a: IDocyrusProviderOption, b: IDocyrusProviderOption): number {\n return a.label.localeCompare(b.label);\n}\n\nexport function getBrowserAuthProviderOptions(oauthProviders: Array<{ id: string; name?: string }>): IDocyrusProviderOption[] {\n return oauthProviders\n .map((provider: { id: string; name?: string }) => ({\n id: provider.id,\n label: provider.name || toLabel(provider.id),\n hint: toHint(provider.id),\n flow: \"oauth\" as const,\n }))\n .sort(compareProviderOptions);\n}\n\nexport function getApiKeyProviderOptions(providerIds: string[]): IDocyrusProviderOption[] {\n const baseProviders: IDocyrusProviderOption[] = providerIds\n .filter((providerId: string) => !OAUTH_ONLY_PROVIDER_IDS.has(providerId))\n .map((providerId: string) => {\n let flow: IDocyrusAuthFlowId = \"generic-api-key\";\n if (providerId === \"azure-openai-responses\") {\n flow = \"azure-openai-responses\";\n }\n else if (providerId === \"amazon-bedrock\") {\n flow = \"amazon-bedrock\";\n }\n\n return {\n id: providerId,\n label: toLabel(providerId),\n hint: toHint(providerId),\n flow,\n } satisfies IDocyrusProviderOption;\n });\n\n baseProviders.push({\n id: \"custom-openai\",\n label: toLabel(\"custom-openai\"),\n hint: toHint(\"custom-openai\"),\n flow: \"custom-openai\",\n });\n\n const deduped = new Map<string, IDocyrusProviderOption>();\n for (const provider of baseProviders) {\n deduped.set(provider.id, provider);\n }\n\n return Array.from(deduped.values()).sort(compareProviderOptions);\n}\n\nexport async function findExistingConfiguredProvider(params: {\n authStorage: {\n hasAuth(providerId: string): boolean;\n };\n envStore: AgentEnvStore;\n knownProviderIds: string[];\n}): Promise<string | null> {\n for (const providerId of params.knownProviderIds) {\n if (params.authStorage.hasAuth(providerId)) {\n return providerId;\n }\n }\n\n const hasBedrock = await params.envStore.hasAny([\"AWS_PROFILE\", \"AWS_ACCESS_KEY_ID\", \"AWS_BEARER_TOKEN_BEDROCK\"]);\n if (hasBedrock) {\n return \"amazon-bedrock\";\n }\n\n return null;\n}\n\nexport function getProviderLabel(providerId: string): string {\n return toLabel(providerId);\n}\n\nexport function getProviderHint(providerId: string): string | undefined {\n return toHint(providerId);\n}\n", "import type { AuthStorage, InteractiveMode, SettingsManager } from \"@mariozechner/pi-coding-agent\";\nimport { clearProviderConfig, saveAzureConfig, saveBedrockConfig, saveCustomOpenAiConfig, saveGenericApiKey, type IDocyrusAuthFlowDependencies } from \"./authFlows\";\nimport { AgentEnvStore } from \"./envStore\";\nimport { renderDocyrusLogoPrimary } from \"./logo\";\nimport { getApiKeyProviderOptions, getProviderLabel, type IDocyrusProviderOption } from \"./providerCatalog\";\n\nexport interface IInteractiveAuthUiComponents {\n ExtensionInputComponent: new(\n title: string,\n placeholder: string | undefined,\n onSubmit: (value: string) => void,\n onCancel: () => void,\n options?: { tui?: unknown },\n ) => any;\n ExtensionSelectorComponent: new(\n title: string,\n options: string[],\n onSelect: (value: string) => void,\n onCancel: () => void,\n settings?: { tui?: unknown },\n ) => any;\n}\n\nexport interface IInteractiveAuthDependencies extends IDocyrusAuthFlowDependencies {\n authStorage: AuthStorage;\n envStore: AgentEnvStore;\n settingsManager: SettingsManager;\n modelsJsonPath: string;\n browserProviders: Array<{ id: string; name?: string }>;\n apiKeyProviderIds: string[];\n modelIdsByProvider: Record<string, string[]>;\n uiComponents: IInteractiveAuthUiComponents;\n}\n\nfunction modeAsAny(mode: InteractiveMode): any {\n return mode as any;\n}\n\nfunction getConfiguredProviderIds(dependencies: IInteractiveAuthDependencies): string[] {\n const ids = new Set<string>(dependencies.authStorage.list());\n return Array.from(ids.values()).sort((left, right) => getProviderLabel(left).localeCompare(getProviderLabel(right)));\n}\n\nfunction buildBrandedTitle(title: string): string {\n return `${renderDocyrusLogoPrimary().trim()}\\n\\n${title}`;\n}\n\nasync function showSelection(mode: InteractiveMode, title: string, options: Array<{ value: string; label: string; hint?: string }>): Promise<string | undefined> {\n const modeAny = modeAsAny(mode);\n const displayToValue = new Map<string, string>();\n const displayOptions = options.map((option) => {\n const display = option.hint\n ? `${option.label} \u2014 ${option.hint}`\n : option.label;\n displayToValue.set(display, option.value);\n return display;\n });\n\n return await new Promise((resolve) => {\n modeAny.showSelector((done: () => void) => {\n const selector = new modeAny.__docyrusUiComponents.ExtensionSelectorComponent(\n buildBrandedTitle(title),\n displayOptions,\n (selected: string) => {\n done();\n resolve(displayToValue.get(selected));\n },\n () => {\n done();\n resolve(undefined);\n },\n { tui: modeAny.ui },\n );\n\n return {\n component: selector,\n focus: selector,\n };\n });\n });\n}\n\nasync function showInput(mode: InteractiveMode, title: string, placeholder?: string): Promise<string | undefined> {\n const modeAny = modeAsAny(mode);\n return await new Promise((resolve) => {\n modeAny.showSelector((done: () => void) => {\n const input = new modeAny.__docyrusUiComponents.ExtensionInputComponent(\n buildBrandedTitle(title),\n placeholder,\n (value: string) => {\n done();\n resolve(value.trim() || undefined);\n },\n () => {\n done();\n resolve(undefined);\n },\n { tui: modeAny.ui },\n );\n\n return {\n component: input,\n focus: input,\n };\n });\n });\n}\n\nasync function refreshAfterCredentialChange(mode: InteractiveMode, preferredProviderId?: string, preferredModelId?: string): Promise<void> {\n const modeAny = modeAsAny(mode);\n modeAny.session.modelRegistry.refresh();\n await modeAny.updateAvailableProviderCount?.();\n\n const availableModels = modeAny.session.modelRegistry.getAvailable();\n const preferredModel = preferredProviderId && preferredModelId\n ? availableModels.find((model: { provider: string; id: string }) => (\n model.provider === preferredProviderId && model.id === preferredModelId\n ))\n : preferredProviderId\n ? availableModels.find((model: { provider: string }) => model.provider === preferredProviderId)\n : undefined;\n\n const currentModel = modeAny.session.model;\n const currentModelStillAvailable = currentModel\n ? availableModels.some((model: { provider: string; id: string }) => (\n model.provider === currentModel.provider && model.id === currentModel.id\n ))\n : false;\n\n if (currentModel && !currentModelStillAvailable) {\n if (preferredModel) {\n await modeAny.session.setModel(preferredModel);\n return;\n }\n\n if (availableModels[0]) {\n await modeAny.session.setModel(availableModels[0]);\n }\n return;\n }\n\n if (!currentModel && preferredModel) {\n await modeAny.session.setModel(preferredModel);\n return;\n }\n\n if (!currentModel && availableModels[0]) {\n await modeAny.session.setModel(availableModels[0]);\n }\n}\n\nasync function runApiKeyProviderFlow(mode: InteractiveMode, dependencies: IInteractiveAuthDependencies, provider: IDocyrusProviderOption): Promise<void> {\n const modeAny = modeAsAny(mode);\n\n switch (provider.flow) {\n case \"custom-openai\": {\n const baseUrl = await showInput(mode, \"Custom OpenAI base URL\", \"https://my-proxy.example.com/v1\");\n if (!baseUrl) {return;}\n const apiKey = await showInput(mode, \"Custom OpenAI API key\");\n if (!apiKey) {return;}\n const modelId = await showInput(mode, \"Model ID\", \"gpt-4o\");\n if (!modelId) {return;}\n\n await saveCustomOpenAiConfig({\n ...dependencies,\n baseUrl,\n apiKey,\n modelId,\n });\n await refreshAfterCredentialChange(mode, \"custom-openai\", modelId);\n modeAny.showStatus(`Configured ${provider.label}`);\n return;\n }\n\n case \"azure-openai-responses\": {\n const apiKey = await showInput(mode, \"Azure OpenAI API key\");\n if (!apiKey) {return;}\n\n const configMode = await showSelection(mode, \"Azure OpenAI configuration\", [\n { value: \"base-url\", label: \"Use a base URL\" },\n { value: \"resource-name\", label: \"Use an Azure resource name\" },\n ]);\n if (!configMode) {return;}\n\n let baseUrl: string | undefined;\n if (configMode === \"base-url\") {\n baseUrl = await showInput(mode, \"Azure OpenAI base URL\", \"https://my-resource.openai.azure.com/openai/v1\");\n }\n else {\n const resourceName = await showInput(mode, \"Azure resource name\", \"my-resource\");\n if (resourceName) {\n baseUrl = `https://${resourceName}.openai.azure.com/openai/v1`;\n }\n }\n if (!baseUrl) {return;}\n\n const modelId = await showInput(mode, \"Model ID\", dependencies.modelIdsByProvider[\"azure-openai-responses\"]?.[0] || \"gpt-4.1\");\n if (!modelId) {return;}\n\n const deploymentName = await showInput(mode, \"Deployment name (optional)\", modelId);\n const apiVersion = await showInput(mode, \"API version (optional)\", \"2025-03-01-preview\");\n const builtInModelIds = new Set(dependencies.modelIdsByProvider[\"azure-openai-responses\"] || []);\n\n await saveAzureConfig({\n ...dependencies,\n apiKey,\n baseUrl,\n modelId,\n deploymentName,\n apiVersion,\n useCustomModel: !builtInModelIds.has(modelId),\n });\n await refreshAfterCredentialChange(mode, \"azure-openai-responses\", modelId);\n modeAny.showStatus(`Configured ${provider.label}`);\n return;\n }\n\n case \"amazon-bedrock\": {\n const authMode = await showSelection(mode, \"Amazon Bedrock authentication\", [\n { value: \"profile\", label: \"Use an AWS profile\" },\n { value: \"access-keys\", label: \"Paste AWS access keys\" },\n ]);\n if (!authMode) {return;}\n\n let profile: string | undefined;\n let accessKeyId: string | undefined;\n let secretAccessKey: string | undefined;\n let sessionToken: string | undefined;\n\n if (authMode === \"profile\") {\n profile = await showInput(mode, \"AWS profile name\", \"default\");\n if (!profile) {return;}\n }\n else {\n accessKeyId = await showInput(mode, \"AWS access key ID\");\n if (!accessKeyId) {return;}\n secretAccessKey = await showInput(mode, \"AWS secret access key\");\n if (!secretAccessKey) {return;}\n sessionToken = await showInput(mode, \"AWS session token (optional)\");\n }\n\n const region = await showInput(mode, \"AWS region\", \"us-east-1\");\n if (!region) {return;}\n\n const modelId = await showInput(mode, \"Bedrock model ID\", dependencies.modelIdsByProvider[\"amazon-bedrock\"]?.[0] || \"anthropic.claude-3-7-sonnet-20250219-v1:0\");\n if (!modelId) {return;}\n\n await saveBedrockConfig({\n ...dependencies,\n region,\n modelId,\n profile,\n accessKeyId,\n secretAccessKey,\n sessionToken,\n });\n await refreshAfterCredentialChange(mode, \"amazon-bedrock\", modelId);\n modeAny.showStatus(`Configured ${provider.label}`);\n return;\n }\n\n case \"generic-api-key\":\n default: {\n const apiKey = await showInput(mode, `${provider.label} API key`);\n if (!apiKey) {return;}\n\n await saveGenericApiKey({\n ...dependencies,\n providerId: provider.id,\n apiKey,\n });\n await refreshAfterCredentialChange(mode, provider.id);\n modeAny.showStatus(`Configured ${provider.label}`);\n }\n }\n}\n\nasync function handleInteractiveLogin(mode: InteractiveMode, dependencies: IInteractiveAuthDependencies): Promise<void> {\n const modeAny = modeAsAny(mode);\n const method = await showSelection(mode, \"How do you want to sign in?\", [\n { value: \"browser\", label: \"Sign in with your browser\", hint: \"OAuth-backed providers\" },\n { value: \"api-key\", label: \"Paste an API key\", hint: \"provider dashboard\" },\n ]);\n\n if (!method) {\n modeAny.showStatus(\"Login cancelled\");\n return;\n }\n\n if (method === \"browser\") {\n await modeAny.showOAuthSelector(\"login\");\n return;\n }\n\n const providerId = await showSelection(mode, \"Choose provider\", getApiKeyProviderOptions(dependencies.apiKeyProviderIds).map((provider) => ({\n value: provider.id,\n label: provider.label,\n hint: provider.hint,\n })));\n\n if (!providerId) {\n modeAny.showStatus(\"Login cancelled\");\n return;\n }\n\n const provider = getApiKeyProviderOptions(dependencies.apiKeyProviderIds).find((item) => item.id === providerId);\n if (!provider) {\n modeAny.showError(`Unknown provider: ${providerId}`);\n return;\n }\n\n try {\n await runApiKeyProviderFlow(mode, dependencies, provider);\n }\n catch (error: unknown) {\n modeAny.showError(`Failed to login to ${provider.label}: ${error instanceof Error ? error.message : String(error)}`);\n }\n}\n\nasync function handleInteractiveLogout(mode: InteractiveMode, dependencies: IInteractiveAuthDependencies): Promise<void> {\n const modeAny = modeAsAny(mode);\n const configuredProviderIds = getConfiguredProviderIds(dependencies);\n if (configuredProviderIds.length === 0) {\n modeAny.showStatus(\"No saved providers to remove.\");\n return;\n }\n\n const providerId = await showSelection(mode, \"Remove which saved provider?\", configuredProviderIds.map((id) => ({\n value: id,\n label: getProviderLabel(id),\n })));\n\n if (!providerId) {\n modeAny.showStatus(\"Logout cancelled\");\n return;\n }\n\n try {\n await clearProviderConfig({\n ...dependencies,\n providerId,\n });\n await refreshAfterCredentialChange(mode);\n modeAny.showStatus(`Removed ${getProviderLabel(providerId)}`);\n }\n catch (error: unknown) {\n modeAny.showError(`Failed to remove ${getProviderLabel(providerId)}: ${error instanceof Error ? error.message : String(error)}`);\n }\n}\n\nexport function installInteractiveAuthInterceptors(mode: InteractiveMode, dependencies: IInteractiveAuthDependencies): void {\n const modeAny = modeAsAny(mode);\n modeAny.__docyrusUiComponents = dependencies.uiComponents;\n const defaultEditor = modeAny.defaultEditor;\n if (!defaultEditor || typeof defaultEditor.onSubmit !== \"function\") {\n return;\n }\n\n const originalOnSubmit = defaultEditor.onSubmit.bind(defaultEditor);\n\n defaultEditor.onSubmit = async(text: string) => {\n const trimmed = text.trim();\n if (trimmed === \"/login\") {\n modeAny.editor.setText(\"\");\n await handleInteractiveLogin(mode, dependencies);\n return;\n }\n\n if (trimmed === \"/logout\") {\n modeAny.editor.setText(\"\");\n await handleInteractiveLogout(mode, dependencies);\n return;\n }\n\n await originalOnSubmit(text);\n };\n\n if (modeAny.editor === defaultEditor) {\n modeAny.editor.onSubmit = defaultEditor.onSubmit;\n }\n}\n", "import { exec } from \"node:child_process\";\nimport type { AuthStorage, SettingsManager } from \"@mariozechner/pi-coding-agent\";\nimport { clearProviderConfig, saveAzureConfig, saveBedrockConfig, saveCustomOpenAiConfig, saveGenericApiKey, type IDocyrusAuthFlowDependencies } from \"./authFlows\";\nimport { AgentEnvStore } from \"./envStore\";\nimport { renderDocyrusLogoPrimary } from \"./logo\";\nimport { findExistingConfiguredProvider, getApiKeyProviderOptions, getBrowserAuthProviderOptions, getProviderLabel, type IDocyrusProviderOption } from \"./providerCatalog\";\n\ntype IClackModule = typeof import(\"@clack/prompts\");\ntype IPicoModule = typeof import(\"picocolors\");\n\nconst API_KEY_PREFIXES: Record<string, string[]> = {\n anthropic: [\"sk-ant-\"],\n openai: [\"sk-\"],\n};\n\nexport interface IDocyrusOnboardingDependencies extends IDocyrusAuthFlowDependencies {\n authStorage: AuthStorage;\n envStore: AgentEnvStore;\n settingsManager: SettingsManager;\n modelsJsonPath: string;\n browserProviders: Array<{ id: string; name?: string }>;\n apiKeyProviderIds: string[];\n modelIdsByProvider: Record<string, string[]>;\n}\n\nasync function loadClack(): Promise<IClackModule> {\n return await import(\"@clack/prompts\");\n}\n\nasync function loadPico(): Promise<IPicoModule> {\n return await import(\"picocolors\");\n}\n\nfunction isCancelError(clack: IClackModule, value: unknown): boolean {\n return clack.isCancel(value);\n}\n\nfunction openBrowser(url: string): void {\n const command = process.platform === \"darwin\"\n ? \"open\"\n : process.platform === \"win32\"\n ? \"start\"\n : \"xdg-open\";\n exec(`${command} \"${url}\"`, () => {\n // best effort\n });\n}\n\nexport async function shouldRunOnboarding(params: {\n authStorage: AuthStorage;\n envStore: AgentEnvStore;\n settingsManager: SettingsManager;\n isInteractive: boolean;\n isPrintMode: boolean;\n browserProviders: Array<{ id: string; name?: string }>;\n apiKeyProviderIds: string[];\n modelIdsByProvider: Record<string, string[]>;\n}): Promise<boolean> {\n if (!params.isInteractive || params.isPrintMode) {\n return false;\n }\n\n if (params.settingsManager.getDefaultProvider()) {\n return false;\n }\n\n const existingProvider = await findExistingConfiguredProvider({\n authStorage: params.authStorage,\n envStore: params.envStore,\n knownProviderIds: [\n ...params.browserProviders.map((provider) => provider.id),\n ...params.apiKeyProviderIds,\n \"custom-openai\",\n ],\n });\n\n return !existingProvider;\n}\n\nexport function cleanupOnboardingStdinState(): void {\n process.stdin.removeAllListeners(\"data\");\n process.stdin.removeAllListeners(\"keypress\");\n if (process.stdin.setRawMode) {\n process.stdin.setRawMode(false);\n }\n process.stdin.pause();\n}\n\nasync function runOAuthFlow(clack: IClackModule, pico: IPicoModule, dependencies: IDocyrusOnboardingDependencies, providerId: string): Promise<boolean> {\n const providerInfo = getBrowserAuthProviderOptions(dependencies.browserProviders).find((provider) => provider.id === providerId);\n const providerName = providerInfo?.label || getProviderLabel(providerId);\n const spinner = clack.spinner();\n spinner.start(`Authenticating with ${providerName}...`);\n\n try {\n await dependencies.authStorage.login(providerId, {\n onAuth: (info: { url: string; instructions?: string }) => {\n spinner.stop(`Opening browser for ${providerName}`);\n openBrowser(info.url);\n clack.log.info(`${pico.dim(\"URL:\")} ${pico.cyan(info.url)}`);\n if (info.instructions) {\n clack.log.info(pico.yellow(info.instructions));\n }\n },\n onPrompt: async(prompt: { message: string; placeholder?: string }) => {\n const result = await clack.text({\n message: prompt.message,\n placeholder: prompt.placeholder,\n });\n\n if (clack.isCancel(result)) {\n return \"\";\n }\n\n return String(result);\n },\n onProgress: (message: string) => {\n clack.log.step(pico.dim(message));\n },\n onManualCodeInput: async() => {\n const result = await clack.text({\n message: \"Paste the redirect URL from your browser:\",\n placeholder: \"http://localhost:...\",\n });\n\n if (clack.isCancel(result)) {\n return \"\";\n }\n\n return String(result);\n },\n });\n\n clack.log.success(`Authenticated with ${pico.green(providerName)}`);\n return true;\n }\n catch (error: unknown) {\n spinner.stop(`${providerName} authentication failed`);\n clack.log.warn(`OAuth error: ${error instanceof Error ? error.message : String(error)}`);\n return false;\n }\n}\n\nasync function runGenericApiKeyFlow(clack: IClackModule, pico: IPicoModule, dependencies: IDocyrusOnboardingDependencies, provider: IDocyrusProviderOption): Promise<boolean> {\n const apiKey = await clack.password({\n message: `Paste your ${provider.label} API key:`,\n mask: \"\u25CF\",\n });\n\n if (clack.isCancel(apiKey) || !apiKey) {\n return false;\n }\n\n const trimmed = String(apiKey).trim();\n if (!trimmed) {\n return false;\n }\n\n const expectedPrefixes = API_KEY_PREFIXES[provider.id];\n if (expectedPrefixes && !expectedPrefixes.some((prefix) => trimmed.startsWith(prefix))) {\n clack.log.warn(`Key doesn't start with expected prefix (${expectedPrefixes.join(\" or \")}). Saving anyway.`);\n }\n\n await saveGenericApiKey({\n ...dependencies,\n providerId: provider.id,\n apiKey: trimmed,\n });\n\n clack.log.success(`API key saved for ${pico.green(provider.label)}`);\n return true;\n}\n\nasync function runCustomOpenAiFlow(clack: IClackModule, pico: IPicoModule, dependencies: IDocyrusOnboardingDependencies): Promise<boolean> {\n const baseUrl = await clack.text({\n message: \"Base URL of your OpenAI-compatible endpoint:\",\n placeholder: \"https://my-proxy.example.com/v1\",\n validate: (value: string | undefined) => {\n const trimmed = value?.trim();\n if (!trimmed) {\n return \"Base URL is required\";\n }\n\n try {\n new URL(trimmed);\n }\n catch {\n return \"Must be a valid URL\";\n }\n },\n });\n\n if (clack.isCancel(baseUrl) || !baseUrl) {\n return false;\n }\n\n const apiKey = await clack.password({\n message: \"API key for this endpoint:\",\n mask: \"\u25CF\",\n });\n\n if (clack.isCancel(apiKey) || !apiKey) {\n return false;\n }\n\n const modelId = await clack.text({\n message: \"Model ID to use:\",\n placeholder: \"gpt-4o\",\n validate: (value: string | undefined) => value?.trim() ? undefined : \"Model ID is required\",\n });\n\n if (clack.isCancel(modelId) || !modelId) {\n return false;\n }\n\n await saveCustomOpenAiConfig({\n ...dependencies,\n apiKey: String(apiKey).trim(),\n baseUrl: String(baseUrl).trim(),\n modelId: String(modelId).trim(),\n });\n\n clack.log.success(`Custom endpoint saved: ${pico.green(String(baseUrl).trim())}`);\n clack.log.info(`Model: ${pico.cyan(String(modelId).trim())}`);\n return true;\n}\n\nasync function runAzureFlow(clack: IClackModule, pico: IPicoModule, dependencies: IDocyrusOnboardingDependencies): Promise<boolean> {\n const apiKey = await clack.password({\n message: \"Paste your Azure OpenAI API key:\",\n mask: \"\u25CF\",\n });\n\n if (clack.isCancel(apiKey) || !apiKey) {\n return false;\n }\n\n const configMode = await clack.select({\n message: \"How do you want to configure Azure OpenAI?\",\n options: [\n { value: \"base-url\", label: \"Use a base URL\" },\n { value: \"resource-name\", label: \"Use an Azure resource name\" },\n ],\n });\n\n if (clack.isCancel(configMode) || !configMode) {\n return false;\n }\n\n let baseUrl = \"\";\n if (configMode === \"base-url\") {\n const baseUrlInput = await clack.text({\n message: \"Azure OpenAI base URL:\",\n placeholder: \"https://my-resource.openai.azure.com/openai/v1\",\n validate: (value: string | undefined) => value?.trim() ? undefined : \"Base URL is required\",\n });\n\n if (clack.isCancel(baseUrlInput) || !baseUrlInput) {\n return false;\n }\n\n baseUrl = String(baseUrlInput).trim();\n }\n else {\n const resourceName = await clack.text({\n message: \"Azure resource name:\",\n placeholder: \"my-resource\",\n validate: (value: string | undefined) => value?.trim() ? undefined : \"Resource name is required\",\n });\n\n if (clack.isCancel(resourceName) || !resourceName) {\n return false;\n }\n\n baseUrl = `https://${String(resourceName).trim()}.openai.azure.com/openai/v1`;\n }\n\n const modelId = await clack.text({\n message: \"Model ID to use:\",\n placeholder: dependencies.modelIdsByProvider[\"azure-openai-responses\"]?.[0] || \"gpt-4.1\",\n validate: (value: string | undefined) => value?.trim() ? undefined : \"Model ID is required\",\n });\n\n if (clack.isCancel(modelId) || !modelId) {\n return false;\n }\n\n const deploymentName = await clack.text({\n message: `Deployment name ${pico.dim(\"(leave blank to reuse the model id)\")}:`,\n placeholder: String(modelId).trim(),\n });\n\n if (clack.isCancel(deploymentName)) {\n return false;\n }\n\n const apiVersion = await clack.text({\n message: `API version ${pico.dim(\"(leave blank to use pi's default)\")}:`,\n placeholder: \"2025-03-01-preview\",\n });\n\n if (clack.isCancel(apiVersion)) {\n return false;\n }\n\n const builtInModelIds = new Set(dependencies.modelIdsByProvider[\"azure-openai-responses\"] || []);\n await saveAzureConfig({\n ...dependencies,\n apiKey: String(apiKey).trim(),\n baseUrl,\n modelId: String(modelId).trim(),\n deploymentName: String(deploymentName || \"\").trim() || undefined,\n apiVersion: String(apiVersion || \"\").trim() || undefined,\n useCustomModel: !builtInModelIds.has(String(modelId).trim()),\n });\n\n clack.log.success(`Azure OpenAI configured for ${pico.green(String(modelId).trim())}`);\n return true;\n}\n\nasync function runBedrockFlow(clack: IClackModule, pico: IPicoModule, dependencies: IDocyrusOnboardingDependencies): Promise<boolean> {\n const authMode = await clack.select({\n message: \"How do you want to authenticate with Amazon Bedrock?\",\n options: [\n { value: \"profile\", label: \"Use an AWS profile\" },\n { value: \"access-keys\", label: \"Paste AWS access keys\" },\n ],\n });\n\n if (clack.isCancel(authMode) || !authMode) {\n return false;\n }\n\n let profile: string | undefined;\n let accessKeyId: string | undefined;\n let secretAccessKey: string | undefined;\n let sessionToken: string | undefined;\n\n if (authMode === \"profile\") {\n const profileInput = await clack.text({\n message: \"AWS profile name:\",\n placeholder: \"default\",\n validate: (value: string | undefined) => value?.trim() ? undefined : \"Profile name is required\",\n });\n\n if (clack.isCancel(profileInput) || !profileInput) {\n return false;\n }\n\n profile = String(profileInput).trim();\n }\n else {\n const accessKeyInput = await clack.password({\n message: \"AWS access key ID:\",\n mask: \"\u25CF\",\n });\n if (clack.isCancel(accessKeyInput) || !accessKeyInput) {\n return false;\n }\n\n const secretKeyInput = await clack.password({\n message: \"AWS secret access key:\",\n mask: \"\u25CF\",\n });\n if (clack.isCancel(secretKeyInput) || !secretKeyInput) {\n return false;\n }\n\n const sessionTokenInput = await clack.password({\n message: `AWS session token ${pico.dim(\"(optional)\")}:`,\n mask: \"\u25CF\",\n });\n if (clack.isCancel(sessionTokenInput)) {\n return false;\n }\n\n accessKeyId = String(accessKeyInput).trim();\n secretAccessKey = String(secretKeyInput).trim();\n sessionToken = String(sessionTokenInput || \"\").trim() || undefined;\n }\n\n const region = await clack.text({\n message: \"AWS region:\",\n placeholder: \"us-east-1\",\n validate: (value: string | undefined) => value?.trim() ? undefined : \"Region is required\",\n });\n\n if (clack.isCancel(region) || !region) {\n return false;\n }\n\n const modelId = await clack.text({\n message: \"Bedrock model ID:\",\n placeholder: dependencies.modelIdsByProvider[\"amazon-bedrock\"]?.[0] || \"anthropic.claude-3-7-sonnet-20250219-v1:0\",\n validate: (value: string | undefined) => value?.trim() ? undefined : \"Model ID is required\",\n });\n\n if (clack.isCancel(modelId) || !modelId) {\n return false;\n }\n\n await saveBedrockConfig({\n ...dependencies,\n region: String(region).trim(),\n modelId: String(modelId).trim(),\n profile,\n accessKeyId,\n secretAccessKey,\n sessionToken,\n });\n\n clack.log.success(`Amazon Bedrock configured for ${pico.green(String(modelId).trim())}`);\n return true;\n}\n\nasync function runProviderFlow(clack: IClackModule, pico: IPicoModule, dependencies: IDocyrusOnboardingDependencies, provider: IDocyrusProviderOption): Promise<boolean> {\n switch (provider.flow) {\n case \"oauth\":\n return await runOAuthFlow(clack, pico, dependencies, provider.id);\n case \"custom-openai\":\n return await runCustomOpenAiFlow(clack, pico, dependencies);\n case \"azure-openai-responses\":\n return await runAzureFlow(clack, pico, dependencies);\n case \"amazon-bedrock\":\n return await runBedrockFlow(clack, pico, dependencies);\n case \"generic-api-key\":\n default:\n return await runGenericApiKeyFlow(clack, pico, dependencies, provider);\n }\n}\n\nasync function runLogoutFlow(clack: IClackModule, pico: IPicoModule, dependencies: IDocyrusOnboardingDependencies, providerId: string): Promise<void> {\n await clearProviderConfig({\n ...dependencies,\n providerId,\n });\n clack.log.success(`Removed saved configuration for ${pico.green(getProviderLabel(providerId))}`);\n}\n\nexport async function runOnboarding(dependencies: IDocyrusOnboardingDependencies): Promise<void> {\n const [clack, pico] = await Promise.all([loadClack(), loadPico()]);\n process.stderr.write(renderDocyrusLogoPrimary());\n clack.intro(pico.bold(\"Welcome to DOCYRUS \u2014 let's get you set up\"));\n\n const existingProvider = await findExistingConfiguredProvider({\n authStorage: dependencies.authStorage,\n envStore: dependencies.envStore,\n knownProviderIds: [\n ...dependencies.browserProviders.map((provider) => provider.id),\n ...dependencies.apiKeyProviderIds,\n \"custom-openai\",\n ],\n });\n\n type IAuthOption = { value: string; label: string; hint?: string; providerId?: string };\n const authOptions: IAuthOption[] = [];\n if (existingProvider) {\n authOptions.push({\n value: \"keep\",\n label: `Keep current (${getProviderLabel(existingProvider)})`,\n hint: \"already configured\",\n providerId: existingProvider,\n });\n authOptions.push({\n value: \"logout-current\",\n label: `Remove current (${getProviderLabel(existingProvider)})`,\n hint: \"clear saved auth and config\",\n providerId: existingProvider,\n });\n }\n\n authOptions.push(\n { value: \"browser\", label: \"Sign in with your browser\", hint: \"recommended for OAuth-backed providers\" },\n { value: \"api-key\", label: \"Paste an API key\", hint: \"from your provider dashboard\" },\n { value: \"skip\", label: \"Skip for now\", hint: \"you can use /login inside DOCYRUS later\" },\n );\n\n const authMethod = await clack.select({\n message: existingProvider ? `LLM provider: ${getProviderLabel(existingProvider)} \u2014 change it?` : \"How do you want to sign in?\",\n options: authOptions.map((option) => ({\n value: option.value,\n label: option.label,\n hint: option.hint,\n })),\n });\n\n if (isCancelError(clack, authMethod) || authMethod === \"skip\") {\n clack.cancel(\"Setup skipped \u2014 you can run /login later inside DOCYRUS.\");\n return;\n }\n\n if (authMethod === \"keep\") {\n clack.log.success(`Keeping ${pico.green(getProviderLabel(existingProvider || \"\"))}`);\n clack.outro(\"DOCYRUS setup complete.\");\n return;\n }\n\n if (authMethod === \"logout-current\" && existingProvider) {\n await runLogoutFlow(clack, pico, dependencies, existingProvider);\n }\n\n let configuredProviderLabel: string | null = null;\n\n if (authMethod === \"browser\") {\n const provider = await clack.select({\n message: \"Choose provider\",\n options: getBrowserAuthProviderOptions(dependencies.browserProviders).map((providerOption) => ({\n value: providerOption.id,\n label: providerOption.label,\n hint: providerOption.hint,\n })),\n });\n\n if (!isCancelError(clack, provider) && provider) {\n const selected = getBrowserAuthProviderOptions(dependencies.browserProviders).find((item) => item.id === provider);\n if (selected && await runProviderFlow(clack, pico, dependencies, selected)) {\n configuredProviderLabel = selected.label;\n }\n }\n }\n else if (authMethod === \"api-key\") {\n const provider = await clack.select({\n message: \"Choose provider\",\n options: getApiKeyProviderOptions(dependencies.apiKeyProviderIds).map((providerOption) => ({\n value: providerOption.id,\n label: providerOption.label,\n hint: providerOption.hint,\n })),\n });\n\n if (!isCancelError(clack, provider) && provider) {\n const selected = getApiKeyProviderOptions(dependencies.apiKeyProviderIds).find((item) => item.id === provider);\n if (selected && await runProviderFlow(clack, pico, dependencies, selected)) {\n configuredProviderLabel = selected.label;\n }\n }\n }\n\n if (configuredProviderLabel) {\n clack.outro(`DOCYRUS is ready. Provider configured: ${pico.green(configuredProviderLabel)}`);\n }\n else {\n clack.outro(\"DOCYRUS setup ended without saving a provider.\");\n }\n}\n"],
|
|
5
|
-
"mappings": "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AAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACA,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACA,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",
|
|
4
|
+
"sourcesContent": ["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", "'use strict';\n\nconst ESC = '\\x1B';\nconst CSI = `${ESC}[`;\nconst beep = '\\u0007';\n\nconst cursor = {\n to(x, y) {\n if (!y) return `${CSI}${x + 1}G`;\n return `${CSI}${y + 1};${x + 1}H`;\n },\n move(x, y) {\n let ret = '';\n\n if (x < 0) ret += `${CSI}${-x}D`;\n else if (x > 0) ret += `${CSI}${x}C`;\n\n if (y < 0) ret += `${CSI}${-y}A`;\n else if (y > 0) ret += `${CSI}${y}B`;\n\n return ret;\n },\n up: (count = 1) => `${CSI}${count}A`,\n down: (count = 1) => `${CSI}${count}B`,\n forward: (count = 1) => `${CSI}${count}C`,\n backward: (count = 1) => `${CSI}${count}D`,\n nextLine: (count = 1) => `${CSI}E`.repeat(count),\n prevLine: (count = 1) => `${CSI}F`.repeat(count),\n left: `${CSI}G`,\n hide: `${CSI}?25l`,\n show: `${CSI}?25h`,\n save: `${ESC}7`,\n restore: `${ESC}8`\n}\n\nconst scroll = {\n up: (count = 1) => `${CSI}S`.repeat(count),\n down: (count = 1) => `${CSI}T`.repeat(count)\n}\n\nconst erase = {\n screen: `${CSI}2J`,\n up: (count = 1) => `${CSI}1J`.repeat(count),\n down: (count = 1) => `${CSI}J`.repeat(count),\n line: `${CSI}2K`,\n lineEnd: `${CSI}K`,\n lineStart: `${CSI}1K`,\n lines(count) {\n let clear = '';\n for (let i = 0; i < count; i++)\n clear += this.line + (i < count - 1 ? cursor.up() : '');\n if (count)\n clear += cursor.left;\n return clear;\n }\n}\n\nmodule.exports = { cursor, scroll, erase, beep };\n", "export default function 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", "import ansiRegex from 'ansi-regex';\n\nconst regex = ansiRegex();\n\nexport default function 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", "var eaw = {};\n\nif ('undefined' == typeof module) {\n window.eastasianwidth = eaw;\n} else {\n module.exports = eaw;\n}\n\neaw.eastAsianWidth = function(character) {\n var x = character.charCodeAt(0);\n var y = (character.length == 2) ? character.charCodeAt(1) : 0;\n var codePoint = x;\n if ((0xD800 <= x && x <= 0xDBFF) && (0xDC00 <= y && y <= 0xDFFF)) {\n x &= 0x3FF;\n y &= 0x3FF;\n codePoint = (x << 10) | y;\n codePoint += 0x10000;\n }\n\n if ((0x3000 == codePoint) ||\n (0xFF01 <= codePoint && codePoint <= 0xFF60) ||\n (0xFFE0 <= codePoint && codePoint <= 0xFFE6)) {\n return 'F';\n }\n if ((0x20A9 == codePoint) ||\n (0xFF61 <= codePoint && codePoint <= 0xFFBE) ||\n (0xFFC2 <= codePoint && codePoint <= 0xFFC7) ||\n (0xFFCA <= codePoint && codePoint <= 0xFFCF) ||\n (0xFFD2 <= codePoint && codePoint <= 0xFFD7) ||\n (0xFFDA <= codePoint && codePoint <= 0xFFDC) ||\n (0xFFE8 <= codePoint && codePoint <= 0xFFEE)) {\n return 'H';\n }\n if ((0x1100 <= codePoint && codePoint <= 0x115F) ||\n (0x11A3 <= codePoint && codePoint <= 0x11A7) ||\n (0x11FA <= codePoint && codePoint <= 0x11FF) ||\n (0x2329 <= codePoint && codePoint <= 0x232A) ||\n (0x2E80 <= codePoint && codePoint <= 0x2E99) ||\n (0x2E9B <= codePoint && codePoint <= 0x2EF3) ||\n (0x2F00 <= codePoint && codePoint <= 0x2FD5) ||\n (0x2FF0 <= codePoint && codePoint <= 0x2FFB) ||\n (0x3001 <= codePoint && codePoint <= 0x303E) ||\n (0x3041 <= codePoint && codePoint <= 0x3096) ||\n (0x3099 <= codePoint && codePoint <= 0x30FF) ||\n (0x3105 <= codePoint && codePoint <= 0x312D) ||\n (0x3131 <= codePoint && codePoint <= 0x318E) ||\n (0x3190 <= codePoint && codePoint <= 0x31BA) ||\n (0x31C0 <= codePoint && codePoint <= 0x31E3) ||\n (0x31F0 <= codePoint && codePoint <= 0x321E) ||\n (0x3220 <= codePoint && codePoint <= 0x3247) ||\n (0x3250 <= codePoint && codePoint <= 0x32FE) ||\n (0x3300 <= codePoint && codePoint <= 0x4DBF) ||\n (0x4E00 <= codePoint && codePoint <= 0xA48C) ||\n (0xA490 <= codePoint && codePoint <= 0xA4C6) ||\n (0xA960 <= codePoint && codePoint <= 0xA97C) ||\n (0xAC00 <= codePoint && codePoint <= 0xD7A3) ||\n (0xD7B0 <= codePoint && codePoint <= 0xD7C6) ||\n (0xD7CB <= codePoint && codePoint <= 0xD7FB) ||\n (0xF900 <= codePoint && codePoint <= 0xFAFF) ||\n (0xFE10 <= codePoint && codePoint <= 0xFE19) ||\n (0xFE30 <= codePoint && codePoint <= 0xFE52) ||\n (0xFE54 <= codePoint && codePoint <= 0xFE66) ||\n (0xFE68 <= codePoint && codePoint <= 0xFE6B) ||\n (0x1B000 <= codePoint && codePoint <= 0x1B001) ||\n (0x1F200 <= codePoint && codePoint <= 0x1F202) ||\n (0x1F210 <= codePoint && codePoint <= 0x1F23A) ||\n (0x1F240 <= codePoint && codePoint <= 0x1F248) ||\n (0x1F250 <= codePoint && codePoint <= 0x1F251) ||\n (0x20000 <= codePoint && codePoint <= 0x2F73F) ||\n (0x2B740 <= codePoint && codePoint <= 0x2FFFD) ||\n (0x30000 <= codePoint && codePoint <= 0x3FFFD)) {\n return 'W';\n }\n if ((0x0020 <= codePoint && codePoint <= 0x007E) ||\n (0x00A2 <= codePoint && codePoint <= 0x00A3) ||\n (0x00A5 <= codePoint && codePoint <= 0x00A6) ||\n (0x00AC == codePoint) ||\n (0x00AF == codePoint) ||\n (0x27E6 <= codePoint && codePoint <= 0x27ED) ||\n (0x2985 <= codePoint && codePoint <= 0x2986)) {\n return 'Na';\n }\n if ((0x00A1 == codePoint) ||\n (0x00A4 == codePoint) ||\n (0x00A7 <= codePoint && codePoint <= 0x00A8) ||\n (0x00AA == codePoint) ||\n (0x00AD <= codePoint && codePoint <= 0x00AE) ||\n (0x00B0 <= codePoint && codePoint <= 0x00B4) ||\n (0x00B6 <= codePoint && codePoint <= 0x00BA) ||\n (0x00BC <= codePoint && codePoint <= 0x00BF) ||\n (0x00C6 == codePoint) ||\n (0x00D0 == codePoint) ||\n (0x00D7 <= codePoint && codePoint <= 0x00D8) ||\n (0x00DE <= codePoint && codePoint <= 0x00E1) ||\n (0x00E6 == codePoint) ||\n (0x00E8 <= codePoint && codePoint <= 0x00EA) ||\n (0x00EC <= codePoint && codePoint <= 0x00ED) ||\n (0x00F0 == codePoint) ||\n (0x00F2 <= codePoint && codePoint <= 0x00F3) ||\n (0x00F7 <= codePoint && codePoint <= 0x00FA) ||\n (0x00FC == codePoint) ||\n (0x00FE == codePoint) ||\n (0x0101 == codePoint) ||\n (0x0111 == codePoint) ||\n (0x0113 == codePoint) ||\n (0x011B == codePoint) ||\n (0x0126 <= codePoint && codePoint <= 0x0127) ||\n (0x012B == codePoint) ||\n (0x0131 <= codePoint && codePoint <= 0x0133) ||\n (0x0138 == codePoint) ||\n (0x013F <= codePoint && codePoint <= 0x0142) ||\n (0x0144 == codePoint) ||\n (0x0148 <= codePoint && codePoint <= 0x014B) ||\n (0x014D == codePoint) ||\n (0x0152 <= codePoint && codePoint <= 0x0153) ||\n (0x0166 <= codePoint && codePoint <= 0x0167) ||\n (0x016B == codePoint) ||\n (0x01CE == codePoint) ||\n (0x01D0 == codePoint) ||\n (0x01D2 == codePoint) ||\n (0x01D4 == codePoint) ||\n (0x01D6 == codePoint) ||\n (0x01D8 == codePoint) ||\n (0x01DA == codePoint) ||\n (0x01DC == codePoint) ||\n (0x0251 == codePoint) ||\n (0x0261 == codePoint) ||\n (0x02C4 == codePoint) ||\n (0x02C7 == codePoint) ||\n (0x02C9 <= codePoint && codePoint <= 0x02CB) ||\n (0x02CD == codePoint) ||\n (0x02D0 == codePoint) ||\n (0x02D8 <= codePoint && codePoint <= 0x02DB) ||\n (0x02DD == codePoint) ||\n (0x02DF == codePoint) ||\n (0x0300 <= codePoint && codePoint <= 0x036F) ||\n (0x0391 <= codePoint && codePoint <= 0x03A1) ||\n (0x03A3 <= codePoint && codePoint <= 0x03A9) ||\n (0x03B1 <= codePoint && codePoint <= 0x03C1) ||\n (0x03C3 <= codePoint && codePoint <= 0x03C9) ||\n (0x0401 == codePoint) ||\n (0x0410 <= codePoint && codePoint <= 0x044F) ||\n (0x0451 == codePoint) ||\n (0x2010 == codePoint) ||\n (0x2013 <= codePoint && codePoint <= 0x2016) ||\n (0x2018 <= codePoint && codePoint <= 0x2019) ||\n (0x201C <= codePoint && codePoint <= 0x201D) ||\n (0x2020 <= codePoint && codePoint <= 0x2022) ||\n (0x2024 <= codePoint && codePoint <= 0x2027) ||\n (0x2030 == codePoint) ||\n (0x2032 <= codePoint && codePoint <= 0x2033) ||\n (0x2035 == codePoint) ||\n (0x203B == codePoint) ||\n (0x203E == codePoint) ||\n (0x2074 == codePoint) ||\n (0x207F == codePoint) ||\n (0x2081 <= codePoint && codePoint <= 0x2084) ||\n (0x20AC == codePoint) ||\n (0x2103 == codePoint) ||\n (0x2105 == codePoint) ||\n (0x2109 == codePoint) ||\n (0x2113 == codePoint) ||\n (0x2116 == codePoint) ||\n (0x2121 <= codePoint && codePoint <= 0x2122) ||\n (0x2126 == codePoint) ||\n (0x212B == codePoint) ||\n (0x2153 <= codePoint && codePoint <= 0x2154) ||\n (0x215B <= codePoint && codePoint <= 0x215E) ||\n (0x2160 <= codePoint && codePoint <= 0x216B) ||\n (0x2170 <= codePoint && codePoint <= 0x2179) ||\n (0x2189 == codePoint) ||\n (0x2190 <= codePoint && codePoint <= 0x2199) ||\n (0x21B8 <= codePoint && codePoint <= 0x21B9) ||\n (0x21D2 == codePoint) ||\n (0x21D4 == codePoint) ||\n (0x21E7 == codePoint) ||\n (0x2200 == codePoint) ||\n (0x2202 <= codePoint && codePoint <= 0x2203) ||\n (0x2207 <= codePoint && codePoint <= 0x2208) ||\n (0x220B == codePoint) ||\n (0x220F == codePoint) ||\n (0x2211 == codePoint) ||\n (0x2215 == codePoint) ||\n (0x221A == codePoint) ||\n (0x221D <= codePoint && codePoint <= 0x2220) ||\n (0x2223 == codePoint) ||\n (0x2225 == codePoint) ||\n (0x2227 <= codePoint && codePoint <= 0x222C) ||\n (0x222E == codePoint) ||\n (0x2234 <= codePoint && codePoint <= 0x2237) ||\n (0x223C <= codePoint && codePoint <= 0x223D) ||\n (0x2248 == codePoint) ||\n (0x224C == codePoint) ||\n (0x2252 == codePoint) ||\n (0x2260 <= codePoint && codePoint <= 0x2261) ||\n (0x2264 <= codePoint && codePoint <= 0x2267) ||\n (0x226A <= codePoint && codePoint <= 0x226B) ||\n (0x226E <= codePoint && codePoint <= 0x226F) ||\n (0x2282 <= codePoint && codePoint <= 0x2283) ||\n (0x2286 <= codePoint && codePoint <= 0x2287) ||\n (0x2295 == codePoint) ||\n (0x2299 == codePoint) ||\n (0x22A5 == codePoint) ||\n (0x22BF == codePoint) ||\n (0x2312 == codePoint) ||\n (0x2460 <= codePoint && codePoint <= 0x24E9) ||\n (0x24EB <= codePoint && codePoint <= 0x254B) ||\n (0x2550 <= codePoint && codePoint <= 0x2573) ||\n (0x2580 <= codePoint && codePoint <= 0x258F) ||\n (0x2592 <= codePoint && codePoint <= 0x2595) ||\n (0x25A0 <= codePoint && codePoint <= 0x25A1) ||\n (0x25A3 <= codePoint && codePoint <= 0x25A9) ||\n (0x25B2 <= codePoint && codePoint <= 0x25B3) ||\n (0x25B6 <= codePoint && codePoint <= 0x25B7) ||\n (0x25BC <= codePoint && codePoint <= 0x25BD) ||\n (0x25C0 <= codePoint && codePoint <= 0x25C1) ||\n (0x25C6 <= codePoint && codePoint <= 0x25C8) ||\n (0x25CB == codePoint) ||\n (0x25CE <= codePoint && codePoint <= 0x25D1) ||\n (0x25E2 <= codePoint && codePoint <= 0x25E5) ||\n (0x25EF == codePoint) ||\n (0x2605 <= codePoint && codePoint <= 0x2606) ||\n (0x2609 == codePoint) ||\n (0x260E <= codePoint && codePoint <= 0x260F) ||\n (0x2614 <= codePoint && codePoint <= 0x2615) ||\n (0x261C == codePoint) ||\n (0x261E == codePoint) ||\n (0x2640 == codePoint) ||\n (0x2642 == codePoint) ||\n (0x2660 <= codePoint && codePoint <= 0x2661) ||\n (0x2663 <= codePoint && codePoint <= 0x2665) ||\n (0x2667 <= codePoint && codePoint <= 0x266A) ||\n (0x266C <= codePoint && codePoint <= 0x266D) ||\n (0x266F == codePoint) ||\n (0x269E <= codePoint && codePoint <= 0x269F) ||\n (0x26BE <= codePoint && codePoint <= 0x26BF) ||\n (0x26C4 <= codePoint && codePoint <= 0x26CD) ||\n (0x26CF <= codePoint && codePoint <= 0x26E1) ||\n (0x26E3 == codePoint) ||\n (0x26E8 <= codePoint && codePoint <= 0x26FF) ||\n (0x273D == codePoint) ||\n (0x2757 == codePoint) ||\n (0x2776 <= codePoint && codePoint <= 0x277F) ||\n (0x2B55 <= codePoint && codePoint <= 0x2B59) ||\n (0x3248 <= codePoint && codePoint <= 0x324F) ||\n (0xE000 <= codePoint && codePoint <= 0xF8FF) ||\n (0xFE00 <= codePoint && codePoint <= 0xFE0F) ||\n (0xFFFD == codePoint) ||\n (0x1F100 <= codePoint && codePoint <= 0x1F10A) ||\n (0x1F110 <= codePoint && codePoint <= 0x1F12D) ||\n (0x1F130 <= codePoint && codePoint <= 0x1F169) ||\n (0x1F170 <= codePoint && codePoint <= 0x1F19A) ||\n (0xE0100 <= codePoint && codePoint <= 0xE01EF) ||\n (0xF0000 <= codePoint && codePoint <= 0xFFFFD) ||\n (0x100000 <= codePoint && codePoint <= 0x10FFFD)) {\n return 'A';\n }\n\n return 'N';\n};\n\neaw.characterLength = function(character) {\n var code = this.eastAsianWidth(character);\n if (code == 'F' || code == 'W' || code == 'A') {\n return 2;\n } else {\n return 1;\n }\n};\n\n// Split a string considering surrogate-pairs.\nfunction stringToArray(string) {\n return string.match(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[^\\uD800-\\uDFFF]/g) || [];\n}\n\neaw.length = function(string) {\n var characters = stringToArray(string);\n var len = 0;\n for (var i = 0; i < characters.length; i++) {\n len = len + this.characterLength(characters[i]);\n }\n return len;\n};\n\neaw.slice = function(text, start, end) {\n textLen = eaw.length(text)\n start = start ? start : 0;\n end = end ? end : 1;\n if (start < 0) {\n start = textLen + start;\n }\n if (end < 0) {\n end = textLen + end;\n }\n var result = '';\n var eawLen = 0;\n var chars = stringToArray(text);\n for (var i = 0; i < chars.length; i++) {\n var char = chars[i];\n var charLen = eaw.length(char);\n if (eawLen >= start - (charLen == 2 ? 1 : 0)) {\n if (eawLen + charLen <= end) {\n result += char;\n } else {\n break;\n }\n }\n eawLen += charLen;\n }\n return result;\n};\n", "\"use strict\";\n\nmodule.exports = function () {\n // https://mths.be/emoji\n 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;\n};\n", "import stripAnsi from 'strip-ansi';\nimport eastAsianWidth from 'eastasianwidth';\nimport emojiRegex from 'emoji-regex';\n\nexport default function stringWidth(string, options = {}) {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\toptions = {\n\t\tambiguousIsNarrow: true,\n\t\t...options\n\t};\n\n\tstring = stripAnsi(string);\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = string.replace(emojiRegex(), ' ');\n\n\tconst ambiguousCharacterWidth = options.ambiguousIsNarrow ? 1 : 2;\n\tlet width = 0;\n\n\tfor (const character of 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 combining characters\n\t\tif (codePoint >= 0x300 && codePoint <= 0x36F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst code = eastAsianWidth.eastAsianWidth(character);\n\t\tswitch (code) {\n\t\t\tcase 'F':\n\t\t\tcase 'W':\n\t\t\t\twidth += 2;\n\t\t\t\tbreak;\n\t\t\tcase 'A':\n\t\t\t\twidth += ambiguousCharacterWidth;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\twidth += 1;\n\t\t}\n\t}\n\n\treturn width;\n}\n", "const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue: (red, green, blue) => {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue: hex => {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue: code => {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n", "import stringWidth from 'string-width';\nimport stripAnsi from 'strip-ansi';\nimport ansiStyles from 'ansi-styles';\n\nconst ESCAPES = new Set([\n\t'\\u001B',\n\t'\\u009B',\n]);\n\nconst END_CODE = 39;\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\n\nconst wrapAnsiCode = code => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = uri => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${uri}${ANSI_ESCAPE_BELL}`;\n\n// Calculate the length of words split on ' ', ignoring\n// the extra characters added by ansi escape codes\nconst wordLengths = string => string.split(' ').map(character => stringWidth(character));\n\n// Wrap a long word across multiple rows\n// Ansi escape codes do not count towards length\nconst wrapWord = (rows, word, columns) => {\n\tconst characters = [...word];\n\n\tlet isInsideEscape = false;\n\tlet isInsideLinkEscape = false;\n\tlet visible = stringWidth(stripAnsi(rows[rows.length - 1]));\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tconst characterLength = stringWidth(character);\n\n\t\tif (visible + characterLength <= columns) {\n\t\t\trows[rows.length - 1] += character;\n\t\t} else {\n\t\t\trows.push(character);\n\t\t\tvisible = 0;\n\t\t}\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tisInsideEscape = true;\n\t\t\tisInsideLinkEscape = characters.slice(index + 1).join('').startsWith(ANSI_ESCAPE_LINK);\n\t\t}\n\n\t\tif (isInsideEscape) {\n\t\t\tif (isInsideLinkEscape) {\n\t\t\t\tif (character === ANSI_ESCAPE_BELL) {\n\t\t\t\t\tisInsideEscape = false;\n\t\t\t\t\tisInsideLinkEscape = false;\n\t\t\t\t}\n\t\t\t} else if (character === ANSI_SGR_TERMINATOR) {\n\t\t\t\tisInsideEscape = false;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvisible += characterLength;\n\n\t\tif (visible === columns && index < characters.length - 1) {\n\t\t\trows.push('');\n\t\t\tvisible = 0;\n\t\t}\n\t}\n\n\t// It's possible that the last row we copy over is only\n\t// ansi escape characters, handle this edge-case\n\tif (!visible && rows[rows.length - 1].length > 0 && rows.length > 1) {\n\t\trows[rows.length - 2] += rows.pop();\n\t}\n};\n\n// Trims spaces from a string ignoring invisible sequences\nconst stringVisibleTrimSpacesRight = string => {\n\tconst words = string.split(' ');\n\tlet last = words.length;\n\n\twhile (last > 0) {\n\t\tif (stringWidth(words[last - 1]) > 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tlast--;\n\t}\n\n\tif (last === words.length) {\n\t\treturn string;\n\t}\n\n\treturn words.slice(0, last).join(' ') + words.slice(last).join('');\n};\n\n// The wrap-ansi module can be invoked in either 'hard' or 'soft' wrap mode\n//\n// 'hard' will never allow a string to take up more than columns characters\n//\n// 'soft' allows long words to expand past the column length\nconst exec = (string, columns, options = {}) => {\n\tif (options.trim !== false && string.trim() === '') {\n\t\treturn '';\n\t}\n\n\tlet returnValue = '';\n\tlet escapeCode;\n\tlet escapeUrl;\n\n\tconst lengths = wordLengths(string);\n\tlet rows = [''];\n\n\tfor (const [index, word] of string.split(' ').entries()) {\n\t\tif (options.trim !== false) {\n\t\t\trows[rows.length - 1] = rows[rows.length - 1].trimStart();\n\t\t}\n\n\t\tlet rowLength = stringWidth(rows[rows.length - 1]);\n\n\t\tif (index !== 0) {\n\t\t\tif (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {\n\t\t\t\t// If we start with a new word but the current row length equals the length of the columns, add a new row\n\t\t\t\trows.push('');\n\t\t\t\trowLength = 0;\n\t\t\t}\n\n\t\t\tif (rowLength > 0 || options.trim === false) {\n\t\t\t\trows[rows.length - 1] += ' ';\n\t\t\t\trowLength++;\n\t\t\t}\n\t\t}\n\n\t\t// In 'hard' wrap mode, the length of a line is never allowed to extend past 'columns'\n\t\tif (options.hard && lengths[index] > columns) {\n\t\t\tconst remainingColumns = (columns - rowLength);\n\t\t\tconst breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);\n\t\t\tconst breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns);\n\t\t\tif (breaksStartingNextLine < breaksStartingThisLine) {\n\t\t\t\trows.push('');\n\t\t\t}\n\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {\n\t\t\tif (options.wordWrap === false && rowLength < columns) {\n\t\t\t\twrapWord(rows, word, columns);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\trows.push('');\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && options.wordWrap === false) {\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\trows[rows.length - 1] += word;\n\t}\n\n\tif (options.trim !== false) {\n\t\trows = rows.map(row => stringVisibleTrimSpacesRight(row));\n\t}\n\n\tconst pre = [...rows.join('\\n')];\n\n\tfor (const [index, character] of pre.entries()) {\n\t\treturnValue += character;\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tconst {groups} = new RegExp(`(?:\\\\${ANSI_CSI}(?<code>\\\\d+)m|\\\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`).exec(pre.slice(index).join('')) || {groups: {}};\n\t\t\tif (groups.code !== undefined) {\n\t\t\t\tconst code = Number.parseFloat(groups.code);\n\t\t\t\tescapeCode = code === END_CODE ? undefined : code;\n\t\t\t} else if (groups.uri !== undefined) {\n\t\t\t\tescapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n\t\t\t}\n\t\t}\n\n\t\tconst code = ansiStyles.codes.get(Number(escapeCode));\n\n\t\tif (pre[index + 1] === '\\n') {\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink('');\n\t\t\t}\n\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(code);\n\t\t\t}\n\t\t} else if (character === '\\n') {\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(escapeCode);\n\t\t\t}\n\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink(escapeUrl);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn returnValue;\n};\n\n// For each newline, invoke the method separately\nexport default function wrapAnsi(string, columns, options) {\n\treturn String(string)\n\t\t.normalize()\n\t\t.replace(/\\r\\n/g, '\\n')\n\t\t.split('\\n')\n\t\t.map(line => exec(line, columns, options))\n\t\t.join('\\n');\n}\n", "const actions = ['up', 'down', 'left', 'right', 'space', 'enter', 'cancel'] as const;\nexport type Action = (typeof actions)[number];\n\n/** Global settings for Clack programs, stored in memory */\ninterface InternalClackSettings {\n\tactions: Set<Action>;\n\taliases: Map<string, Action>;\n}\n\nexport const settings: InternalClackSettings = {\n\tactions: new Set(actions),\n\taliases: new Map<string, Action>([\n\t\t// vim support\n\t\t['k', 'up'],\n\t\t['j', 'down'],\n\t\t['h', 'left'],\n\t\t['l', 'right'],\n\t\t['\\x03', 'cancel'],\n\t\t// opinionated defaults!\n\t\t['escape', 'cancel'],\n\t]),\n};\n\nexport interface ClackSettings {\n\t/**\n\t * Set custom global aliases for the default actions.\n\t * This will not overwrite existing aliases, it will only add new ones!\n\t *\n\t * @param aliases - An object that maps aliases to actions\n\t * @default { k: 'up', j: 'down', h: 'left', l: 'right', '\\x03': 'cancel', 'escape': 'cancel' }\n\t */\n\taliases: Record<string, Action>;\n}\n\nexport function updateSettings(updates: ClackSettings) {\n\tfor (const _key in updates) {\n\t\tconst key = _key as keyof ClackSettings;\n\t\tif (!Object.hasOwn(updates, key)) continue;\n\t\tconst value = updates[key];\n\n\t\tswitch (key) {\n\t\t\tcase 'aliases': {\n\t\t\t\tfor (const alias in value) {\n\t\t\t\t\tif (!Object.hasOwn(value, alias)) continue;\n\t\t\t\t\tif (!settings.aliases.has(alias)) {\n\t\t\t\t\t\tsettings.aliases.set(alias, value[alias]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Check if a key is an alias for a default action\n * @param key - The raw key which might match to an action\n * @param action - The action to match\n * @returns boolean\n */\nexport function isActionKey(key: string | Array<string | undefined>, action: Action) {\n\tif (typeof key === 'string') {\n\t\treturn settings.aliases.get(key) === action;\n\t}\n\n\tfor (const value of key) {\n\t\tif (value === undefined) continue;\n\t\tif (isActionKey(value, action)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n", "export function diffLines(a: string, b: string) {\n\tif (a === b) return;\n\n\tconst aLines = a.split('\\n');\n\tconst bLines = b.split('\\n');\n\tconst diff: number[] = [];\n\n\tfor (let i = 0; i < Math.max(aLines.length, bLines.length); i++) {\n\t\tif (aLines[i] !== bLines[i]) diff.push(i);\n\t}\n\n\treturn diff;\n}\n", "import { stdin, stdout } from 'node:process';\nimport type { Key } from 'node:readline';\nimport * as readline from 'node:readline';\nimport type { Readable } from 'node:stream';\nimport { cursor } from 'sisteransi';\nimport { isActionKey } from './settings';\n\nexport * from './string';\nexport * from './settings';\n\nconst isWindows = globalThis.process.platform.startsWith('win');\n\nexport const CANCEL_SYMBOL = Symbol('clack:cancel');\n\nexport function isCancel(value: unknown): value is symbol {\n\treturn value === CANCEL_SYMBOL;\n}\n\nexport function setRawMode(input: Readable, value: boolean) {\n\tconst i = input as typeof stdin;\n\n\tif (i.isTTY) i.setRawMode(value);\n}\n\nexport function block({\n\tinput = stdin,\n\toutput = stdout,\n\toverwrite = true,\n\thideCursor = true,\n} = {}) {\n\tconst rl = readline.createInterface({\n\t\tinput,\n\t\toutput,\n\t\tprompt: '',\n\t\ttabSize: 1,\n\t});\n\treadline.emitKeypressEvents(input, rl);\n\tif (input.isTTY) input.setRawMode(true);\n\n\tconst clear = (data: Buffer, { name, sequence }: Key) => {\n\t\tconst str = String(data);\n\t\tif (isActionKey([str, name, sequence], 'cancel')) {\n\t\t\tif (hideCursor) output.write(cursor.show);\n\t\t\tprocess.exit(0);\n\t\t\treturn;\n\t\t}\n\t\tif (!overwrite) return;\n\t\tconst dx = name === 'return' ? 0 : -1;\n\t\tconst dy = name === 'return' ? -1 : 0;\n\n\t\treadline.moveCursor(output, dx, dy, () => {\n\t\t\treadline.clearLine(output, 1, () => {\n\t\t\t\tinput.once('keypress', clear);\n\t\t\t});\n\t\t});\n\t};\n\tif (hideCursor) output.write(cursor.hide);\n\tinput.once('keypress', clear);\n\n\treturn () => {\n\t\tinput.off('keypress', clear);\n\t\tif (hideCursor) output.write(cursor.show);\n\n\t\t// Prevent Windows specific issues: https://github.com/bombshell-dev/clack/issues/176\n\t\tif (input.isTTY && !isWindows) input.setRawMode(false);\n\n\t\t// @ts-expect-error fix for https://github.com/nodejs/node/issues/31762#issuecomment-1441223907\n\t\trl.terminal = false;\n\t\trl.close();\n\t};\n}\n", "import { stdin, stdout } from 'node:process';\nimport readline, { type Key, type ReadLine } from 'node:readline';\nimport type { Readable } from 'node:stream';\nimport { Writable } from 'node:stream';\nimport { cursor, erase } from 'sisteransi';\nimport wrap from 'wrap-ansi';\n\nimport { CANCEL_SYMBOL, diffLines, isActionKey, setRawMode, settings } from '../utils';\n\nimport type { ClackEvents, ClackState } from '../types';\nimport type { Action } from '../utils';\n\nexport interface PromptOptions<Self extends Prompt> {\n\trender(this: Omit<Self, 'prompt'>): string | undefined;\n\tplaceholder?: string;\n\tinitialValue?: any;\n\tvalidate?: ((value: any) => string | Error | undefined) | undefined;\n\tinput?: Readable;\n\toutput?: Writable;\n\tdebug?: boolean;\n\tsignal?: AbortSignal;\n}\n\nexport default class Prompt {\n\tprotected input: Readable;\n\tprotected output: Writable;\n\tprivate _abortSignal?: AbortSignal;\n\n\tprivate rl: ReadLine | undefined;\n\tprivate opts: Omit<PromptOptions<Prompt>, 'render' | 'input' | 'output'>;\n\tprivate _render: (context: Omit<Prompt, 'prompt'>) => string | undefined;\n\tprivate _track = false;\n\tprivate _prevFrame = '';\n\tprivate _subscribers = new Map<string, { cb: (...args: any) => any; once?: boolean }[]>();\n\tprotected _cursor = 0;\n\n\tpublic state: ClackState = 'initial';\n\tpublic error = '';\n\tpublic value: any;\n\n\tconstructor(options: PromptOptions<Prompt>, trackValue = true) {\n\t\tconst { input = stdin, output = stdout, render, signal, ...opts } = options;\n\n\t\tthis.opts = opts;\n\t\tthis.onKeypress = this.onKeypress.bind(this);\n\t\tthis.close = this.close.bind(this);\n\t\tthis.render = this.render.bind(this);\n\t\tthis._render = render.bind(this);\n\t\tthis._track = trackValue;\n\t\tthis._abortSignal = signal;\n\n\t\tthis.input = input;\n\t\tthis.output = output;\n\t}\n\n\t/**\n\t * Unsubscribe all listeners\n\t */\n\tprotected unsubscribe() {\n\t\tthis._subscribers.clear();\n\t}\n\n\t/**\n\t * Set a subscriber with opts\n\t * @param event - The event name\n\t */\n\tprivate setSubscriber<T extends keyof ClackEvents>(\n\t\tevent: T,\n\t\topts: { cb: ClackEvents[T]; once?: boolean }\n\t) {\n\t\tconst params = this._subscribers.get(event) ?? [];\n\t\tparams.push(opts);\n\t\tthis._subscribers.set(event, params);\n\t}\n\n\t/**\n\t * Subscribe to an event\n\t * @param event - The event name\n\t * @param cb - The callback\n\t */\n\tpublic on<T extends keyof ClackEvents>(event: T, cb: ClackEvents[T]) {\n\t\tthis.setSubscriber(event, { cb });\n\t}\n\n\t/**\n\t * Subscribe to an event once\n\t * @param event - The event name\n\t * @param cb - The callback\n\t */\n\tpublic once<T extends keyof ClackEvents>(event: T, cb: ClackEvents[T]) {\n\t\tthis.setSubscriber(event, { cb, once: true });\n\t}\n\n\t/**\n\t * Emit an event with data\n\t * @param event - The event name\n\t * @param data - The data to pass to the callback\n\t */\n\tpublic emit<T extends keyof ClackEvents>(event: T, ...data: Parameters<ClackEvents[T]>) {\n\t\tconst cbs = this._subscribers.get(event) ?? [];\n\t\tconst cleanup: (() => void)[] = [];\n\n\t\tfor (const subscriber of cbs) {\n\t\t\tsubscriber.cb(...data);\n\n\t\t\tif (subscriber.once) {\n\t\t\t\tcleanup.push(() => cbs.splice(cbs.indexOf(subscriber), 1));\n\t\t\t}\n\t\t}\n\n\t\tfor (const cb of cleanup) {\n\t\t\tcb();\n\t\t}\n\t}\n\n\tpublic prompt() {\n\t\treturn new Promise<string | symbol>((resolve, reject) => {\n\t\t\tif (this._abortSignal) {\n\t\t\t\tif (this._abortSignal.aborted) {\n\t\t\t\t\tthis.state = 'cancel';\n\n\t\t\t\t\tthis.close();\n\t\t\t\t\treturn resolve(CANCEL_SYMBOL);\n\t\t\t\t}\n\n\t\t\t\tthis._abortSignal.addEventListener(\n\t\t\t\t\t'abort',\n\t\t\t\t\t() => {\n\t\t\t\t\t\tthis.state = 'cancel';\n\t\t\t\t\t\tthis.close();\n\t\t\t\t\t},\n\t\t\t\t\t{ once: true }\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst sink = new Writable();\n\t\t\tsink._write = (chunk, encoding, done) => {\n\t\t\t\tif (this._track) {\n\t\t\t\t\tthis.value = this.rl?.line.replace(/\\t/g, '');\n\t\t\t\t\tthis._cursor = this.rl?.cursor ?? 0;\n\t\t\t\t\tthis.emit('value', this.value);\n\t\t\t\t}\n\t\t\t\tdone();\n\t\t\t};\n\t\t\tthis.input.pipe(sink);\n\n\t\t\tthis.rl = readline.createInterface({\n\t\t\t\tinput: this.input,\n\t\t\t\toutput: sink,\n\t\t\t\ttabSize: 2,\n\t\t\t\tprompt: '',\n\t\t\t\tescapeCodeTimeout: 50,\n\t\t\t\tterminal: true,\n\t\t\t});\n\t\t\treadline.emitKeypressEvents(this.input, this.rl);\n\t\t\tthis.rl.prompt();\n\t\t\tif (this.opts.initialValue !== undefined && this._track) {\n\t\t\t\tthis.rl.write(this.opts.initialValue);\n\t\t\t}\n\n\t\t\tthis.input.on('keypress', this.onKeypress);\n\t\t\tsetRawMode(this.input, true);\n\t\t\tthis.output.on('resize', this.render);\n\n\t\t\tthis.render();\n\n\t\t\tthis.once('submit', () => {\n\t\t\t\tthis.output.write(cursor.show);\n\t\t\t\tthis.output.off('resize', this.render);\n\t\t\t\tsetRawMode(this.input, false);\n\t\t\t\tresolve(this.value);\n\t\t\t});\n\t\t\tthis.once('cancel', () => {\n\t\t\t\tthis.output.write(cursor.show);\n\t\t\t\tthis.output.off('resize', this.render);\n\t\t\t\tsetRawMode(this.input, false);\n\t\t\t\tresolve(CANCEL_SYMBOL);\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate onKeypress(char: string, key?: Key) {\n\t\tif (this.state === 'error') {\n\t\t\tthis.state = 'active';\n\t\t}\n\t\tif (key?.name) {\n\t\t\tif (!this._track && settings.aliases.has(key.name)) {\n\t\t\t\tthis.emit('cursor', settings.aliases.get(key.name));\n\t\t\t}\n\t\t\tif (settings.actions.has(key.name as Action)) {\n\t\t\t\tthis.emit('cursor', key.name as Action);\n\t\t\t}\n\t\t}\n\t\tif (char && (char.toLowerCase() === 'y' || char.toLowerCase() === 'n')) {\n\t\t\tthis.emit('confirm', char.toLowerCase() === 'y');\n\t\t}\n\t\tif (char === '\\t' && this.opts.placeholder) {\n\t\t\tif (!this.value) {\n\t\t\t\tthis.rl?.write(this.opts.placeholder);\n\t\t\t\tthis.emit('value', this.opts.placeholder);\n\t\t\t}\n\t\t}\n\t\tif (char) {\n\t\t\tthis.emit('key', char.toLowerCase());\n\t\t}\n\n\t\tif (key?.name === 'return') {\n\t\t\tif (this.opts.validate) {\n\t\t\t\tconst problem = this.opts.validate(this.value);\n\t\t\t\tif (problem) {\n\t\t\t\t\tthis.error = problem instanceof Error ? problem.message : problem;\n\t\t\t\t\tthis.state = 'error';\n\t\t\t\t\tthis.rl?.write(this.value);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.state !== 'error') {\n\t\t\t\tthis.state = 'submit';\n\t\t\t}\n\t\t}\n\n\t\tif (isActionKey([char, key?.name, key?.sequence], 'cancel')) {\n\t\t\tthis.state = 'cancel';\n\t\t}\n\t\tif (this.state === 'submit' || this.state === 'cancel') {\n\t\t\tthis.emit('finalize');\n\t\t}\n\t\tthis.render();\n\t\tif (this.state === 'submit' || this.state === 'cancel') {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tprotected close() {\n\t\tthis.input.unpipe();\n\t\tthis.input.removeListener('keypress', this.onKeypress);\n\t\tthis.output.write('\\n');\n\t\tsetRawMode(this.input, false);\n\t\tthis.rl?.close();\n\t\tthis.rl = undefined;\n\t\tthis.emit(`${this.state}`, this.value);\n\t\tthis.unsubscribe();\n\t}\n\n\tprivate restoreCursor() {\n\t\tconst lines =\n\t\t\twrap(this._prevFrame, process.stdout.columns, { hard: true }).split('\\n').length - 1;\n\t\tthis.output.write(cursor.move(-999, lines * -1));\n\t}\n\n\tprivate render() {\n\t\tconst frame = wrap(this._render(this) ?? '', process.stdout.columns, { hard: true });\n\t\tif (frame === this._prevFrame) return;\n\n\t\tif (this.state === 'initial') {\n\t\t\tthis.output.write(cursor.hide);\n\t\t} else {\n\t\t\tconst diff = diffLines(this._prevFrame, frame);\n\t\t\tthis.restoreCursor();\n\t\t\t// If a single line has changed, only update that line\n\t\t\tif (diff && diff?.length === 1) {\n\t\t\t\tconst diffLine = diff[0];\n\t\t\t\tthis.output.write(cursor.move(0, diffLine));\n\t\t\t\tthis.output.write(erase.lines(1));\n\t\t\t\tconst lines = frame.split('\\n');\n\t\t\t\tthis.output.write(lines[diffLine]);\n\t\t\t\tthis._prevFrame = frame;\n\t\t\t\tthis.output.write(cursor.move(0, lines.length - diffLine - 1));\n\t\t\t\treturn;\n\t\t\t\t// If many lines have changed, rerender everything past the first line\n\t\t\t}\n\t\t\tif (diff && diff?.length > 1) {\n\t\t\t\tconst diffLine = diff[0];\n\t\t\t\tthis.output.write(cursor.move(0, diffLine));\n\t\t\t\tthis.output.write(erase.down());\n\t\t\t\tconst lines = frame.split('\\n');\n\t\t\t\tconst newLines = lines.slice(diffLine);\n\t\t\t\tthis.output.write(newLines.join('\\n'));\n\t\t\t\tthis._prevFrame = frame;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.output.write(erase.down());\n\t\t}\n\n\t\tthis.output.write(frame);\n\t\tif (this.state === 'initial') {\n\t\t\tthis.state = 'active';\n\t\t}\n\t\tthis._prevFrame = frame;\n\t}\n}\n", "import { cursor } from 'sisteransi';\nimport Prompt, { type PromptOptions } from './prompt';\n\ninterface ConfirmOptions extends PromptOptions<ConfirmPrompt> {\n\tactive: string;\n\tinactive: string;\n\tinitialValue?: boolean;\n}\nexport default class ConfirmPrompt extends Prompt {\n\tget cursor() {\n\t\treturn this.value ? 0 : 1;\n\t}\n\n\tprivate get _value() {\n\t\treturn this.cursor === 0;\n\t}\n\n\tconstructor(opts: ConfirmOptions) {\n\t\tsuper(opts, false);\n\t\tthis.value = !!opts.initialValue;\n\n\t\tthis.on('value', () => {\n\t\t\tthis.value = this._value;\n\t\t});\n\n\t\tthis.on('confirm', (confirm) => {\n\t\t\tthis.output.write(cursor.move(0, -1));\n\t\t\tthis.value = confirm;\n\t\t\tthis.state = 'submit';\n\t\t\tthis.close();\n\t\t});\n\n\t\tthis.on('cursor', () => {\n\t\t\tthis.value = !this.value;\n\t\t});\n\t}\n}\n", "import Prompt, { type PromptOptions } from './prompt';\n\ninterface GroupMultiSelectOptions<T extends { value: any }>\n\textends PromptOptions<GroupMultiSelectPrompt<T>> {\n\toptions: Record<string, T[]>;\n\tinitialValues?: T['value'][];\n\trequired?: boolean;\n\tcursorAt?: T['value'];\n\tselectableGroups?: boolean;\n}\nexport default class GroupMultiSelectPrompt<T extends { value: any }> extends Prompt {\n\toptions: (T & { group: string | boolean })[];\n\tcursor = 0;\n\t#selectableGroups: boolean;\n\n\tgetGroupItems(group: string): T[] {\n\t\treturn this.options.filter((o) => o.group === group);\n\t}\n\n\tisGroupSelected(group: string) {\n\t\tconst items = this.getGroupItems(group);\n\t\treturn items.every((i) => this.value.includes(i.value));\n\t}\n\n\tprivate toggleValue() {\n\t\tconst item = this.options[this.cursor];\n\t\tif (item.group === true) {\n\t\t\tconst group = item.value;\n\t\t\tconst groupedItems = this.getGroupItems(group);\n\t\t\tif (this.isGroupSelected(group)) {\n\t\t\t\tthis.value = this.value.filter(\n\t\t\t\t\t(v: string) => groupedItems.findIndex((i) => i.value === v) === -1\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tthis.value = [...this.value, ...groupedItems.map((i) => i.value)];\n\t\t\t}\n\t\t\tthis.value = Array.from(new Set(this.value));\n\t\t} else {\n\t\t\tconst selected = this.value.includes(item.value);\n\t\t\tthis.value = selected\n\t\t\t\t? this.value.filter((v: T['value']) => v !== item.value)\n\t\t\t\t: [...this.value, item.value];\n\t\t}\n\t}\n\n\tconstructor(opts: GroupMultiSelectOptions<T>) {\n\t\tsuper(opts, false);\n\t\tconst { options } = opts;\n\t\tthis.#selectableGroups = opts.selectableGroups !== false;\n\t\tthis.options = Object.entries(options).flatMap(([key, option]) => [\n\t\t\t{ value: key, group: true, label: key },\n\t\t\t...option.map((opt) => ({ ...opt, group: key })),\n\t\t]) as any;\n\t\tthis.value = [...(opts.initialValues ?? [])];\n\t\tthis.cursor = Math.max(\n\t\t\tthis.options.findIndex(({ value }) => value === opts.cursorAt),\n\t\t\tthis.#selectableGroups ? 0 : 1\n\t\t);\n\n\t\tthis.on('cursor', (key) => {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'left':\n\t\t\t\tcase 'up': {\n\t\t\t\t\tthis.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n\t\t\t\t\tconst currentIsGroup = this.options[this.cursor]?.group === true;\n\t\t\t\t\tif (!this.#selectableGroups && currentIsGroup) {\n\t\t\t\t\t\tthis.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'down':\n\t\t\t\tcase 'right': {\n\t\t\t\t\tthis.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n\t\t\t\t\tconst currentIsGroup = this.options[this.cursor]?.group === true;\n\t\t\t\t\tif (!this.#selectableGroups && currentIsGroup) {\n\t\t\t\t\t\tthis.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'space':\n\t\t\t\t\tthis.toggleValue();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t}\n}\n", "import Prompt, { type PromptOptions } from './prompt';\n\ninterface MultiSelectOptions<T extends { value: any }> extends PromptOptions<MultiSelectPrompt<T>> {\n\toptions: T[];\n\tinitialValues?: T['value'][];\n\trequired?: boolean;\n\tcursorAt?: T['value'];\n}\nexport default class MultiSelectPrompt<T extends { value: any }> extends Prompt {\n\toptions: T[];\n\tcursor = 0;\n\n\tprivate get _value() {\n\t\treturn this.options[this.cursor].value;\n\t}\n\n\tprivate toggleAll() {\n\t\tconst allSelected = this.value.length === this.options.length;\n\t\tthis.value = allSelected ? [] : this.options.map((v) => v.value);\n\t}\n\n\tprivate toggleValue() {\n\t\tconst selected = this.value.includes(this._value);\n\t\tthis.value = selected\n\t\t\t? this.value.filter((value: T['value']) => value !== this._value)\n\t\t\t: [...this.value, this._value];\n\t}\n\n\tconstructor(opts: MultiSelectOptions<T>) {\n\t\tsuper(opts, false);\n\n\t\tthis.options = opts.options;\n\t\tthis.value = [...(opts.initialValues ?? [])];\n\t\tthis.cursor = Math.max(\n\t\t\tthis.options.findIndex(({ value }) => value === opts.cursorAt),\n\t\t\t0\n\t\t);\n\t\tthis.on('key', (char) => {\n\t\t\tif (char === 'a') {\n\t\t\t\tthis.toggleAll();\n\t\t\t}\n\t\t});\n\n\t\tthis.on('cursor', (key) => {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'left':\n\t\t\t\tcase 'up':\n\t\t\t\t\tthis.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'down':\n\t\t\t\tcase 'right':\n\t\t\t\t\tthis.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'space':\n\t\t\t\t\tthis.toggleValue();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t}\n}\n", "import color from 'picocolors';\nimport Prompt, { type PromptOptions } from './prompt';\n\ninterface PasswordOptions extends PromptOptions<PasswordPrompt> {\n\tmask?: string;\n}\nexport default class PasswordPrompt extends Prompt {\n\tvalueWithCursor = '';\n\tprivate _mask = '•';\n\tget cursor() {\n\t\treturn this._cursor;\n\t}\n\tget masked() {\n\t\treturn this.value.replaceAll(/./g, this._mask);\n\t}\n\tconstructor({ mask, ...opts }: PasswordOptions) {\n\t\tsuper(opts);\n\t\tthis._mask = mask ?? '•';\n\n\t\tthis.on('finalize', () => {\n\t\t\tthis.valueWithCursor = this.masked;\n\t\t});\n\t\tthis.on('value', () => {\n\t\t\tif (this.cursor >= this.value.length) {\n\t\t\t\tthis.valueWithCursor = `${this.masked}${color.inverse(color.hidden('_'))}`;\n\t\t\t} else {\n\t\t\t\tconst s1 = this.masked.slice(0, this.cursor);\n\t\t\t\tconst s2 = this.masked.slice(this.cursor);\n\t\t\t\tthis.valueWithCursor = `${s1}${color.inverse(s2[0])}${s2.slice(1)}`;\n\t\t\t}\n\t\t});\n\t}\n}\n", "import Prompt, { type PromptOptions } from './prompt';\n\ninterface SelectOptions<T extends { value: any }> extends PromptOptions<SelectPrompt<T>> {\n\toptions: T[];\n\tinitialValue?: T['value'];\n}\nexport default class SelectPrompt<T extends { value: any }> extends Prompt {\n\toptions: T[];\n\tcursor = 0;\n\n\tprivate get _value() {\n\t\treturn this.options[this.cursor];\n\t}\n\n\tprivate changeValue() {\n\t\tthis.value = this._value.value;\n\t}\n\n\tconstructor(opts: SelectOptions<T>) {\n\t\tsuper(opts, false);\n\n\t\tthis.options = opts.options;\n\t\tthis.cursor = this.options.findIndex(({ value }) => value === opts.initialValue);\n\t\tif (this.cursor === -1) this.cursor = 0;\n\t\tthis.changeValue();\n\n\t\tthis.on('cursor', (key) => {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'left':\n\t\t\t\tcase 'up':\n\t\t\t\t\tthis.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'down':\n\t\t\t\tcase 'right':\n\t\t\t\t\tthis.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis.changeValue();\n\t\t});\n\t}\n}\n", "import Prompt, { type PromptOptions } from './prompt';\n\ninterface SelectKeyOptions<T extends { value: any }> extends PromptOptions<SelectKeyPrompt<T>> {\n\toptions: T[];\n}\nexport default class SelectKeyPrompt<T extends { value: any }> extends Prompt {\n\toptions: T[];\n\tcursor = 0;\n\n\tconstructor(opts: SelectKeyOptions<T>) {\n\t\tsuper(opts, false);\n\n\t\tthis.options = opts.options;\n\t\tconst keys = this.options.map(({ value: [initial] }) => initial?.toLowerCase());\n\t\tthis.cursor = Math.max(keys.indexOf(opts.initialValue), 0);\n\n\t\tthis.on('key', (key) => {\n\t\t\tif (!keys.includes(key)) return;\n\t\t\tconst value = this.options.find(({ value: [initial] }) => initial?.toLowerCase() === key);\n\t\t\tif (value) {\n\t\t\t\tthis.value = value.value;\n\t\t\t\tthis.state = 'submit';\n\t\t\t\tthis.emit('submit');\n\t\t\t}\n\t\t});\n\t}\n}\n", "import color from 'picocolors';\nimport Prompt, { type PromptOptions } from './prompt';\n\nexport interface TextOptions extends PromptOptions<TextPrompt> {\n\tplaceholder?: string;\n\tdefaultValue?: string;\n}\n\nexport default class TextPrompt extends Prompt {\n\tget valueWithCursor() {\n\t\tif (this.state === 'submit') {\n\t\t\treturn this.value;\n\t\t}\n\t\tif (this.cursor >= this.value.length) {\n\t\t\treturn `${this.value}█`;\n\t\t}\n\t\tconst s1 = this.value.slice(0, this.cursor);\n\t\tconst [s2, ...s3] = this.value.slice(this.cursor);\n\t\treturn `${s1}${color.inverse(s2)}${s3.join('')}`;\n\t}\n\tget cursor() {\n\t\treturn this._cursor;\n\t}\n\tconstructor(opts: TextOptions) {\n\t\tsuper(opts);\n\n\t\tthis.on('finalize', () => {\n\t\t\tif (!this.value) {\n\t\t\t\tthis.value = opts.defaultValue;\n\t\t\t}\n\t\t});\n\t}\n}\n", "import process from 'node:process';\n\nexport default function isUnicodeSupported() {\n\tif (process.platform !== 'win32') {\n\t\treturn process.env.TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(process.env.CI)\n\t\t|| Boolean(process.env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(process.env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| process.env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| process.env.TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| process.env.TERM_PROGRAM === 'vscode'\n\t\t|| process.env.TERM === 'xterm-256color'\n\t\t|| process.env.TERM === 'alacritty'\n\t\t|| process.env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n", "import { stripVTControlCharacters as strip } from 'node:util';\nimport {\n\tConfirmPrompt,\n\tGroupMultiSelectPrompt,\n\tMultiSelectPrompt,\n\tPasswordPrompt,\n\tSelectKeyPrompt,\n\tSelectPrompt,\n\ttype State,\n\tTextPrompt,\n\tblock,\n\tisCancel,\n} from '@clack/core';\nimport isUnicodeSupported from 'is-unicode-supported';\nimport color from 'picocolors';\nimport { cursor, erase } from 'sisteransi';\n\nexport { isCancel } from '@clack/core';\nexport { updateSettings, type ClackSettings } from '@clack/core';\n\nconst unicode = isUnicodeSupported();\nconst s = (c: string, fallback: string) => (unicode ? c : fallback);\nconst S_STEP_ACTIVE = s('◆', '*');\nconst S_STEP_CANCEL = s('■', 'x');\nconst S_STEP_ERROR = s('▲', 'x');\nconst S_STEP_SUBMIT = s('◇', 'o');\n\nconst S_BAR_START = s('┌', 'T');\nconst S_BAR = s('│', '|');\nconst S_BAR_END = s('└', '—');\n\nconst S_RADIO_ACTIVE = s('●', '>');\nconst S_RADIO_INACTIVE = s('○', ' ');\nconst S_CHECKBOX_ACTIVE = s('◻', '[•]');\nconst S_CHECKBOX_SELECTED = s('◼', '[+]');\nconst S_CHECKBOX_INACTIVE = s('◻', '[ ]');\nconst S_PASSWORD_MASK = s('▪', '•');\n\nconst S_BAR_H = s('─', '-');\nconst S_CORNER_TOP_RIGHT = s('╮', '+');\nconst S_CONNECT_LEFT = s('├', '+');\nconst S_CORNER_BOTTOM_RIGHT = s('╯', '+');\n\nconst S_INFO = s('●', '•');\nconst S_SUCCESS = s('◆', '*');\nconst S_WARN = s('▲', '!');\nconst S_ERROR = s('■', 'x');\n\nconst symbol = (state: State) => {\n\tswitch (state) {\n\t\tcase 'initial':\n\t\tcase 'active':\n\t\t\treturn color.cyan(S_STEP_ACTIVE);\n\t\tcase 'cancel':\n\t\t\treturn color.red(S_STEP_CANCEL);\n\t\tcase 'error':\n\t\t\treturn color.yellow(S_STEP_ERROR);\n\t\tcase 'submit':\n\t\t\treturn color.green(S_STEP_SUBMIT);\n\t}\n};\n\ninterface LimitOptionsParams<TOption> {\n\toptions: TOption[];\n\tmaxItems: number | undefined;\n\tcursor: number;\n\tstyle: (option: TOption, active: boolean) => string;\n}\n\nconst limitOptions = <TOption>(params: LimitOptionsParams<TOption>): string[] => {\n\tconst { cursor, options, style } = params;\n\n\tconst paramMaxItems = params.maxItems ?? Number.POSITIVE_INFINITY;\n\tconst outputMaxItems = Math.max(process.stdout.rows - 4, 0);\n\t// We clamp to minimum 5 because anything less doesn't make sense UX wise\n\tconst maxItems = Math.min(outputMaxItems, Math.max(paramMaxItems, 5));\n\tlet slidingWindowLocation = 0;\n\n\tif (cursor >= slidingWindowLocation + maxItems - 3) {\n\t\tslidingWindowLocation = Math.max(Math.min(cursor - maxItems + 3, options.length - maxItems), 0);\n\t} else if (cursor < slidingWindowLocation + 2) {\n\t\tslidingWindowLocation = Math.max(cursor - 2, 0);\n\t}\n\n\tconst shouldRenderTopEllipsis = maxItems < options.length && slidingWindowLocation > 0;\n\tconst shouldRenderBottomEllipsis =\n\t\tmaxItems < options.length && slidingWindowLocation + maxItems < options.length;\n\n\treturn options\n\t\t.slice(slidingWindowLocation, slidingWindowLocation + maxItems)\n\t\t.map((option, i, arr) => {\n\t\t\tconst isTopLimit = i === 0 && shouldRenderTopEllipsis;\n\t\t\tconst isBottomLimit = i === arr.length - 1 && shouldRenderBottomEllipsis;\n\t\t\treturn isTopLimit || isBottomLimit\n\t\t\t\t? color.dim('...')\n\t\t\t\t: style(option, i + slidingWindowLocation === cursor);\n\t\t});\n};\n\nexport interface TextOptions {\n\tmessage: string;\n\tplaceholder?: string;\n\tdefaultValue?: string;\n\tinitialValue?: string;\n\tvalidate?: (value: string) => string | Error | undefined;\n}\nexport const text = (opts: TextOptions) => {\n\treturn new TextPrompt({\n\t\tvalidate: opts.validate,\n\t\tplaceholder: opts.placeholder,\n\t\tdefaultValue: opts.defaultValue,\n\t\tinitialValue: opts.initialValue,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst placeholder = opts.placeholder\n\t\t\t\t? color.inverse(opts.placeholder[0]) + color.dim(opts.placeholder.slice(1))\n\t\t\t\t: color.inverse(color.hidden('_'));\n\t\t\tconst value = !this.value ? placeholder : this.valueWithCursor;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error':\n\t\t\t\t\treturn `${title.trim()}\\n${color.yellow(S_BAR)} ${value}\\n${color.yellow(\n\t\t\t\t\t\tS_BAR_END\n\t\t\t\t\t)} ${color.yellow(this.error)}\\n`;\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.dim(this.value || opts.placeholder)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.strikethrough(\n\t\t\t\t\t\tcolor.dim(this.value ?? '')\n\t\t\t\t\t)}${this.value?.trim() ? `\\n${color.gray(S_BAR)}` : ''}`;\n\t\t\t\tdefault:\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${value}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<string | symbol>;\n};\n\nexport interface PasswordOptions {\n\tmessage: string;\n\tmask?: string;\n\tvalidate?: (value: string) => string | Error | undefined;\n}\nexport const password = (opts: PasswordOptions) => {\n\treturn new PasswordPrompt({\n\t\tvalidate: opts.validate,\n\t\tmask: opts.mask ?? S_PASSWORD_MASK,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst value = this.valueWithCursor;\n\t\t\tconst masked = this.masked;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error':\n\t\t\t\t\treturn `${title.trim()}\\n${color.yellow(S_BAR)} ${masked}\\n${color.yellow(\n\t\t\t\t\t\tS_BAR_END\n\t\t\t\t\t)} ${color.yellow(this.error)}\\n`;\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.dim(masked)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.strikethrough(color.dim(masked ?? ''))}${\n\t\t\t\t\t\tmasked ? `\\n${color.gray(S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\tdefault:\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${value}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<string | symbol>;\n};\n\nexport interface ConfirmOptions {\n\tmessage: string;\n\tactive?: string;\n\tinactive?: string;\n\tinitialValue?: boolean;\n}\nexport const confirm = (opts: ConfirmOptions) => {\n\tconst active = opts.active ?? 'Yes';\n\tconst inactive = opts.inactive ?? 'No';\n\treturn new ConfirmPrompt({\n\t\tactive,\n\t\tinactive,\n\t\tinitialValue: opts.initialValue ?? true,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst value = this.value ? active : inactive;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.dim(value)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.strikethrough(\n\t\t\t\t\t\tcolor.dim(value)\n\t\t\t\t\t)}\\n${color.gray(S_BAR)}`;\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${\n\t\t\t\t\t\tthis.value\n\t\t\t\t\t\t\t? `${color.green(S_RADIO_ACTIVE)} ${active}`\n\t\t\t\t\t\t\t: `${color.dim(S_RADIO_INACTIVE)} ${color.dim(active)}`\n\t\t\t\t\t} ${color.dim('/')} ${\n\t\t\t\t\t\t!this.value\n\t\t\t\t\t\t\t? `${color.green(S_RADIO_ACTIVE)} ${inactive}`\n\t\t\t\t\t\t\t: `${color.dim(S_RADIO_INACTIVE)} ${color.dim(inactive)}`\n\t\t\t\t\t}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<boolean | symbol>;\n};\n\ntype Primitive = Readonly<string | boolean | number>;\n\nexport type Option<Value> = Value extends Primitive\n\t? {\n\t\t\t/**\n\t\t\t * Internal data for this option.\n\t\t\t */\n\t\t\tvalue: Value;\n\t\t\t/**\n\t\t\t * The optional, user-facing text for this option.\n\t\t\t *\n\t\t\t * By default, the `value` is converted to a string.\n\t\t\t */\n\t\t\tlabel?: string;\n\t\t\t/**\n\t\t\t * An optional hint to display to the user when\n\t\t\t * this option might be selected.\n\t\t\t *\n\t\t\t * By default, no `hint` is displayed.\n\t\t\t */\n\t\t\thint?: string;\n\t\t}\n\t: {\n\t\t\t/**\n\t\t\t * Internal data for this option.\n\t\t\t */\n\t\t\tvalue: Value;\n\t\t\t/**\n\t\t\t * Required. The user-facing text for this option.\n\t\t\t */\n\t\t\tlabel: string;\n\t\t\t/**\n\t\t\t * An optional hint to display to the user when\n\t\t\t * this option might be selected.\n\t\t\t *\n\t\t\t * By default, no `hint` is displayed.\n\t\t\t */\n\t\t\thint?: string;\n\t\t};\n\nexport interface SelectOptions<Value> {\n\tmessage: string;\n\toptions: Option<Value>[];\n\tinitialValue?: Value;\n\tmaxItems?: number;\n}\n\nexport const select = <Value>(opts: SelectOptions<Value>) => {\n\tconst opt = (option: Option<Value>, state: 'inactive' | 'active' | 'selected' | 'cancelled') => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tswitch (state) {\n\t\t\tcase 'selected':\n\t\t\t\treturn `${color.dim(label)}`;\n\t\t\tcase 'active':\n\t\t\t\treturn `${color.green(S_RADIO_ACTIVE)} ${label} ${\n\t\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t\t}`;\n\t\t\tcase 'cancelled':\n\t\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t\tdefault:\n\t\t\t\treturn `${color.dim(S_RADIO_INACTIVE)} ${color.dim(label)}`;\n\t\t}\n\t};\n\n\treturn new SelectPrompt({\n\t\toptions: opts.options,\n\t\tinitialValue: opts.initialValue,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(this.options[this.cursor], 'selected')}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(\n\t\t\t\t\t\tthis.options[this.cursor],\n\t\t\t\t\t\t'cancelled'\n\t\t\t\t\t)}\\n${color.gray(S_BAR)}`;\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${limitOptions({\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tstyle: (item, active) => opt(item, active ? 'active' : 'inactive'),\n\t\t\t\t\t}).join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value | symbol>;\n};\n\nexport const selectKey = <Value extends string>(opts: SelectOptions<Value>) => {\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate: 'inactive' | 'active' | 'selected' | 'cancelled' = 'inactive'\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tif (state === 'selected') {\n\t\t\treturn `${color.dim(label)}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t}\n\t\tif (state === 'active') {\n\t\t\treturn `${color.bgCyan(color.gray(` ${option.value} `))} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\treturn `${color.gray(color.bgWhite(color.inverse(` ${option.value} `)))} ${label} ${\n\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t}`;\n\t};\n\n\treturn new SelectKeyPrompt({\n\t\toptions: opts.options,\n\t\tinitialValue: opts.initialValue,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(\n\t\t\t\t\t\tthis.options.find((opt) => opt.value === this.value) ?? opts.options[0],\n\t\t\t\t\t\t'selected'\n\t\t\t\t\t)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(this.options[0], 'cancelled')}\\n${color.gray(\n\t\t\t\t\t\tS_BAR\n\t\t\t\t\t)}`;\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${this.options\n\t\t\t\t\t\t.map((option, i) => opt(option, i === this.cursor ? 'active' : 'inactive'))\n\t\t\t\t\t\t.join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value | symbol>;\n};\n\nexport interface MultiSelectOptions<Value> {\n\tmessage: string;\n\toptions: Option<Value>[];\n\tinitialValues?: Value[];\n\tmaxItems?: number;\n\trequired?: boolean;\n\tcursorAt?: Value;\n}\nexport const multiselect = <Value>(opts: MultiSelectOptions<Value>) => {\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate: 'inactive' | 'active' | 'selected' | 'active-selected' | 'submitted' | 'cancelled'\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tif (state === 'active') {\n\t\t\treturn `${color.cyan(S_CHECKBOX_ACTIVE)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'selected') {\n\t\t\treturn `${color.green(S_CHECKBOX_SELECTED)} ${color.dim(label)} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t}\n\t\tif (state === 'active-selected') {\n\t\t\treturn `${color.green(S_CHECKBOX_SELECTED)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'submitted') {\n\t\t\treturn `${color.dim(label)}`;\n\t\t}\n\t\treturn `${color.dim(S_CHECKBOX_INACTIVE)} ${color.dim(label)}`;\n\t};\n\n\treturn new MultiSelectPrompt({\n\t\toptions: opts.options,\n\t\tinitialValues: opts.initialValues,\n\t\trequired: opts.required ?? true,\n\t\tcursorAt: opts.cursorAt,\n\t\tvalidate(selected: Value[]) {\n\t\t\tif (this.required && selected.length === 0)\n\t\t\t\treturn `Please select at least one option.\\n${color.reset(\n\t\t\t\t\tcolor.dim(\n\t\t\t\t\t\t`Press ${color.gray(color.bgWhite(color.inverse(' space ')))} to select, ${color.gray(\n\t\t\t\t\t\t\tcolor.bgWhite(color.inverse(' enter '))\n\t\t\t\t\t\t)} to submit`\n\t\t\t\t\t)\n\t\t\t\t)}`;\n\t\t},\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tconst styleOption = (option: Option<Value>, active: boolean) => {\n\t\t\t\tconst selected = this.value.includes(option.value);\n\t\t\t\tif (active && selected) {\n\t\t\t\t\treturn opt(option, 'active-selected');\n\t\t\t\t}\n\t\t\t\tif (selected) {\n\t\t\t\t\treturn opt(option, 'selected');\n\t\t\t\t}\n\t\t\t\treturn opt(option, active ? 'active' : 'inactive');\n\t\t\t};\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${\n\t\t\t\t\t\tthis.options\n\t\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t\t.map((option) => opt(option, 'submitted'))\n\t\t\t\t\t\t\t.join(color.dim(', ')) || color.dim('none')\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst label = this.options\n\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t.map((option) => opt(option, 'cancelled'))\n\t\t\t\t\t\t.join(color.dim(', '));\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${\n\t\t\t\t\t\tlabel.trim() ? `${label}\\n${color.gray(S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst footer = this.error\n\t\t\t\t\t\t.split('\\n')\n\t\t\t\t\t\t.map((ln, i) =>\n\t\t\t\t\t\t\ti === 0 ? `${color.yellow(S_BAR_END)} ${color.yellow(ln)}` : ` ${ln}`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\treturn `${title + color.yellow(S_BAR)} ${limitOptions({\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tstyle: styleOption,\n\t\t\t\t\t}).join(`\\n${color.yellow(S_BAR)} `)}\\n${footer}\\n`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${limitOptions({\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tstyle: styleOption,\n\t\t\t\t\t}).join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value[] | symbol>;\n};\n\nexport interface GroupMultiSelectOptions<Value> {\n\tmessage: string;\n\toptions: Record<string, Option<Value>[]>;\n\tinitialValues?: Value[];\n\trequired?: boolean;\n\tcursorAt?: Value;\n\tselectableGroups?: boolean;\n}\nexport const groupMultiselect = <Value>(opts: GroupMultiSelectOptions<Value>) => {\n\tconst { selectableGroups = true } = opts;\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate:\n\t\t\t| 'inactive'\n\t\t\t| 'active'\n\t\t\t| 'selected'\n\t\t\t| 'active-selected'\n\t\t\t| 'group-active'\n\t\t\t| 'group-active-selected'\n\t\t\t| 'submitted'\n\t\t\t| 'cancelled',\n\t\toptions: Option<Value>[] = []\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tconst isItem = typeof (option as any).group === 'string';\n\t\tconst next = isItem && (options[options.indexOf(option) + 1] ?? { group: true });\n\t\tconst isLast = isItem && (next as any).group === true;\n\t\tconst prefix = isItem ? (selectableGroups ? `${isLast ? S_BAR_END : S_BAR} ` : ' ') : '';\n\n\t\tif (state === 'active') {\n\t\t\treturn `${color.dim(prefix)}${color.cyan(S_CHECKBOX_ACTIVE)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'group-active') {\n\t\t\treturn `${prefix}${color.cyan(S_CHECKBOX_ACTIVE)} ${color.dim(label)}`;\n\t\t}\n\t\tif (state === 'group-active-selected') {\n\t\t\treturn `${prefix}${color.green(S_CHECKBOX_SELECTED)} ${color.dim(label)}`;\n\t\t}\n\t\tif (state === 'selected') {\n\t\t\tconst selectedCheckbox = isItem || selectableGroups ? color.green(S_CHECKBOX_SELECTED) : '';\n\t\t\treturn `${color.dim(prefix)}${selectedCheckbox} ${color.dim(label)} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t}\n\t\tif (state === 'active-selected') {\n\t\t\treturn `${color.dim(prefix)}${color.green(S_CHECKBOX_SELECTED)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'submitted') {\n\t\t\treturn `${color.dim(label)}`;\n\t\t}\n\t\tconst unselectedCheckbox = isItem || selectableGroups ? color.dim(S_CHECKBOX_INACTIVE) : '';\n\t\treturn `${color.dim(prefix)}${unselectedCheckbox} ${color.dim(label)}`;\n\t};\n\n\treturn new GroupMultiSelectPrompt({\n\t\toptions: opts.options,\n\t\tinitialValues: opts.initialValues,\n\t\trequired: opts.required ?? true,\n\t\tcursorAt: opts.cursorAt,\n\t\tselectableGroups,\n\t\tvalidate(selected: Value[]) {\n\t\t\tif (this.required && selected.length === 0)\n\t\t\t\treturn `Please select at least one option.\\n${color.reset(\n\t\t\t\t\tcolor.dim(\n\t\t\t\t\t\t`Press ${color.gray(color.bgWhite(color.inverse(' space ')))} to select, ${color.gray(\n\t\t\t\t\t\t\tcolor.bgWhite(color.inverse(' enter '))\n\t\t\t\t\t\t)} to submit`\n\t\t\t\t\t)\n\t\t\t\t)}`;\n\t\t},\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${this.options\n\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t.map((option) => opt(option, 'submitted'))\n\t\t\t\t\t\t.join(color.dim(', '))}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst label = this.options\n\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t.map((option) => opt(option, 'cancelled'))\n\t\t\t\t\t\t.join(color.dim(', '));\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${\n\t\t\t\t\t\tlabel.trim() ? `${label}\\n${color.gray(S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst footer = this.error\n\t\t\t\t\t\t.split('\\n')\n\t\t\t\t\t\t.map((ln, i) =>\n\t\t\t\t\t\t\ti === 0 ? `${color.yellow(S_BAR_END)} ${color.yellow(ln)}` : ` ${ln}`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\treturn `${title}${color.yellow(S_BAR)} ${this.options\n\t\t\t\t\t\t.map((option, i, options) => {\n\t\t\t\t\t\t\tconst selected =\n\t\t\t\t\t\t\t\tthis.value.includes(option.value) ||\n\t\t\t\t\t\t\t\t(option.group === true && this.isGroupSelected(`${option.value}`));\n\t\t\t\t\t\t\tconst active = i === this.cursor;\n\t\t\t\t\t\t\tconst groupActive =\n\t\t\t\t\t\t\t\t!active &&\n\t\t\t\t\t\t\t\ttypeof option.group === 'string' &&\n\t\t\t\t\t\t\t\tthis.options[this.cursor].value === option.group;\n\t\t\t\t\t\t\tif (groupActive) {\n\t\t\t\t\t\t\t\treturn opt(option, selected ? 'group-active-selected' : 'group-active', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (active && selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'active-selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn opt(option, active ? 'active' : 'inactive', options);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(`\\n${color.yellow(S_BAR)} `)}\\n${footer}\\n`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${this.options\n\t\t\t\t\t\t.map((option, i, options) => {\n\t\t\t\t\t\t\tconst selected =\n\t\t\t\t\t\t\t\tthis.value.includes(option.value) ||\n\t\t\t\t\t\t\t\t(option.group === true && this.isGroupSelected(`${option.value}`));\n\t\t\t\t\t\t\tconst active = i === this.cursor;\n\t\t\t\t\t\t\tconst groupActive =\n\t\t\t\t\t\t\t\t!active &&\n\t\t\t\t\t\t\t\ttypeof option.group === 'string' &&\n\t\t\t\t\t\t\t\tthis.options[this.cursor].value === option.group;\n\t\t\t\t\t\t\tif (groupActive) {\n\t\t\t\t\t\t\t\treturn opt(option, selected ? 'group-active-selected' : 'group-active', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (active && selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'active-selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn opt(option, active ? 'active' : 'inactive', options);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value[] | symbol>;\n};\n\nexport const note = (message = '', title = '') => {\n\tconst lines = `\\n${message}\\n`.split('\\n');\n\tconst titleLen = strip(title).length;\n\tconst len =\n\t\tMath.max(\n\t\t\tlines.reduce((sum, ln) => {\n\t\t\t\tconst line = strip(ln);\n\t\t\t\treturn line.length > sum ? line.length : sum;\n\t\t\t}, 0),\n\t\t\ttitleLen\n\t\t) + 2;\n\tconst msg = lines\n\t\t.map(\n\t\t\t(ln) =>\n\t\t\t\t`${color.gray(S_BAR)} ${color.dim(ln)}${' '.repeat(len - strip(ln).length)}${color.gray(\n\t\t\t\t\tS_BAR\n\t\t\t\t)}`\n\t\t)\n\t\t.join('\\n');\n\tprocess.stdout.write(\n\t\t`${color.gray(S_BAR)}\\n${color.green(S_STEP_SUBMIT)} ${color.reset(title)} ${color.gray(\n\t\t\tS_BAR_H.repeat(Math.max(len - titleLen - 1, 1)) + S_CORNER_TOP_RIGHT\n\t\t)}\\n${msg}\\n${color.gray(S_CONNECT_LEFT + S_BAR_H.repeat(len + 2) + S_CORNER_BOTTOM_RIGHT)}\\n`\n\t);\n};\n\nexport const cancel = (message = '') => {\n\tprocess.stdout.write(`${color.gray(S_BAR_END)} ${color.red(message)}\\n\\n`);\n};\n\nexport const intro = (title = '') => {\n\tprocess.stdout.write(`${color.gray(S_BAR_START)} ${title}\\n`);\n};\n\nexport const outro = (message = '') => {\n\tprocess.stdout.write(`${color.gray(S_BAR)}\\n${color.gray(S_BAR_END)} ${message}\\n\\n`);\n};\n\nexport type LogMessageOptions = {\n\tsymbol?: string;\n};\nexport const log = {\n\tmessage: (message = '', { symbol = color.gray(S_BAR) }: LogMessageOptions = {}) => {\n\t\tconst parts = [`${color.gray(S_BAR)}`];\n\t\tif (message) {\n\t\t\tconst [firstLine, ...lines] = message.split('\\n');\n\t\t\tparts.push(`${symbol} ${firstLine}`, ...lines.map((ln) => `${color.gray(S_BAR)} ${ln}`));\n\t\t}\n\t\tprocess.stdout.write(`${parts.join('\\n')}\\n`);\n\t},\n\tinfo: (message: string) => {\n\t\tlog.message(message, { symbol: color.blue(S_INFO) });\n\t},\n\tsuccess: (message: string) => {\n\t\tlog.message(message, { symbol: color.green(S_SUCCESS) });\n\t},\n\tstep: (message: string) => {\n\t\tlog.message(message, { symbol: color.green(S_STEP_SUBMIT) });\n\t},\n\twarn: (message: string) => {\n\t\tlog.message(message, { symbol: color.yellow(S_WARN) });\n\t},\n\t/** alias for `log.warn()`. */\n\twarning: (message: string) => {\n\t\tlog.warn(message);\n\t},\n\terror: (message: string) => {\n\t\tlog.message(message, { symbol: color.red(S_ERROR) });\n\t},\n};\n\nconst prefix = `${color.gray(S_BAR)} `;\nexport const stream = {\n\tmessage: async (\n\t\titerable: Iterable<string> | AsyncIterable<string>,\n\t\t{ symbol = color.gray(S_BAR) }: LogMessageOptions = {}\n\t) => {\n\t\tprocess.stdout.write(`${color.gray(S_BAR)}\\n${symbol} `);\n\t\tlet lineWidth = 3;\n\t\tfor await (let chunk of iterable) {\n\t\t\tchunk = chunk.replace(/\\n/g, `\\n${prefix}`);\n\t\t\tif (chunk.includes('\\n')) {\n\t\t\t\tlineWidth = 3 + strip(chunk.slice(chunk.lastIndexOf('\\n'))).length;\n\t\t\t}\n\t\t\tconst chunkLen = strip(chunk).length;\n\t\t\tif (lineWidth + chunkLen < process.stdout.columns) {\n\t\t\t\tlineWidth += chunkLen;\n\t\t\t\tprocess.stdout.write(chunk);\n\t\t\t} else {\n\t\t\t\tprocess.stdout.write(`\\n${prefix}${chunk.trimStart()}`);\n\t\t\t\tlineWidth = 3 + strip(chunk.trimStart()).length;\n\t\t\t}\n\t\t}\n\t\tprocess.stdout.write('\\n');\n\t},\n\tinfo: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.blue(S_INFO) });\n\t},\n\tsuccess: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.green(S_SUCCESS) });\n\t},\n\tstep: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.green(S_STEP_SUBMIT) });\n\t},\n\twarn: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.yellow(S_WARN) });\n\t},\n\t/** alias for `log.warn()`. */\n\twarning: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.warn(iterable);\n\t},\n\terror: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.red(S_ERROR) });\n\t},\n};\n\nexport interface SpinnerOptions {\n\tindicator?: 'dots' | 'timer';\n}\n\nexport const spinner = ({ indicator = 'dots' }: SpinnerOptions = {}) => {\n\tconst frames = unicode ? ['◒', '◐', '◓', '◑'] : ['•', 'o', 'O', '0'];\n\tconst delay = unicode ? 80 : 120;\n\tconst isCI = process.env.CI === 'true';\n\n\tlet unblock: () => void;\n\tlet loop: NodeJS.Timeout;\n\tlet isSpinnerActive = false;\n\tlet _message = '';\n\tlet _prevMessage: string | undefined = undefined;\n\tlet _origin: number = performance.now();\n\n\tconst handleExit = (code: number) => {\n\t\tconst msg = code > 1 ? 'Something went wrong' : 'Canceled';\n\t\tif (isSpinnerActive) stop(msg, code);\n\t};\n\n\tconst errorEventHandler = () => handleExit(2);\n\tconst signalEventHandler = () => handleExit(1);\n\n\tconst registerHooks = () => {\n\t\t// Reference: https://nodejs.org/api/process.html#event-uncaughtexception\n\t\tprocess.on('uncaughtExceptionMonitor', errorEventHandler);\n\t\t// Reference: https://nodejs.org/api/process.html#event-unhandledrejection\n\t\tprocess.on('unhandledRejection', errorEventHandler);\n\t\t// Reference Signal Events: https://nodejs.org/api/process.html#signal-events\n\t\tprocess.on('SIGINT', signalEventHandler);\n\t\tprocess.on('SIGTERM', signalEventHandler);\n\t\tprocess.on('exit', handleExit);\n\t};\n\n\tconst clearHooks = () => {\n\t\tprocess.removeListener('uncaughtExceptionMonitor', errorEventHandler);\n\t\tprocess.removeListener('unhandledRejection', errorEventHandler);\n\t\tprocess.removeListener('SIGINT', signalEventHandler);\n\t\tprocess.removeListener('SIGTERM', signalEventHandler);\n\t\tprocess.removeListener('exit', handleExit);\n\t};\n\n\tconst clearPrevMessage = () => {\n\t\tif (_prevMessage === undefined) return;\n\t\tif (isCI) process.stdout.write('\\n');\n\t\tconst prevLines = _prevMessage.split('\\n');\n\t\tprocess.stdout.write(cursor.move(-999, prevLines.length - 1));\n\t\tprocess.stdout.write(erase.down(prevLines.length));\n\t};\n\n\tconst parseMessage = (msg: string): string => {\n\t\treturn msg.replace(/\\.+$/, '');\n\t};\n\n\tconst formatTimer = (origin: number): string => {\n\t\tconst duration = (performance.now() - origin) / 1000;\n\t\tconst min = Math.floor(duration / 60);\n\t\tconst secs = Math.floor(duration % 60);\n\t\treturn min > 0 ? `[${min}m ${secs}s]` : `[${secs}s]`;\n\t};\n\n\tconst start = (msg = ''): void => {\n\t\tisSpinnerActive = true;\n\t\tunblock = block();\n\t\t_message = parseMessage(msg);\n\t\t_origin = performance.now();\n\t\tprocess.stdout.write(`${color.gray(S_BAR)}\\n`);\n\t\tlet frameIndex = 0;\n\t\tlet indicatorTimer = 0;\n\t\tregisterHooks();\n\t\tloop = setInterval(() => {\n\t\t\tif (isCI && _message === _prevMessage) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tclearPrevMessage();\n\t\t\t_prevMessage = _message;\n\t\t\tconst frame = color.magenta(frames[frameIndex]);\n\n\t\t\tif (isCI) {\n\t\t\t\tprocess.stdout.write(`${frame} ${_message}...`);\n\t\t\t} else if (indicator === 'timer') {\n\t\t\t\tprocess.stdout.write(`${frame} ${_message} ${formatTimer(_origin)}`);\n\t\t\t} else {\n\t\t\t\tconst loadingDots = '.'.repeat(Math.floor(indicatorTimer)).slice(0, 3);\n\t\t\t\tprocess.stdout.write(`${frame} ${_message}${loadingDots}`);\n\t\t\t}\n\n\t\t\tframeIndex = frameIndex + 1 < frames.length ? frameIndex + 1 : 0;\n\t\t\tindicatorTimer = indicatorTimer < frames.length ? indicatorTimer + 0.125 : 0;\n\t\t}, delay);\n\t};\n\n\tconst stop = (msg = '', code = 0): void => {\n\t\tisSpinnerActive = false;\n\t\tclearInterval(loop);\n\t\tclearPrevMessage();\n\t\tconst step =\n\t\t\tcode === 0\n\t\t\t\t? color.green(S_STEP_SUBMIT)\n\t\t\t\t: code === 1\n\t\t\t\t\t? color.red(S_STEP_CANCEL)\n\t\t\t\t\t: color.red(S_STEP_ERROR);\n\t\t_message = parseMessage(msg ?? _message);\n\t\tif (indicator === 'timer') {\n\t\t\tprocess.stdout.write(`${step} ${_message} ${formatTimer(_origin)}\\n`);\n\t\t} else {\n\t\t\tprocess.stdout.write(`${step} ${_message}\\n`);\n\t\t}\n\t\tclearHooks();\n\t\tunblock();\n\t};\n\n\tconst message = (msg = ''): void => {\n\t\t_message = parseMessage(msg ?? _message);\n\t};\n\n\treturn {\n\t\tstart,\n\t\tstop,\n\t\tmessage,\n\t};\n};\n\nexport type PromptGroupAwaitedReturn<T> = {\n\t[P in keyof T]: Exclude<Awaited<T[P]>, symbol>;\n};\n\nexport interface PromptGroupOptions<T> {\n\t/**\n\t * Control how the group can be canceled\n\t * if one of the prompts is canceled.\n\t */\n\tonCancel?: (opts: { results: Prettify<Partial<PromptGroupAwaitedReturn<T>>> }) => void;\n}\n\ntype Prettify<T> = {\n\t[P in keyof T]: T[P];\n} & {};\n\nexport type PromptGroup<T> = {\n\t[P in keyof T]: (opts: {\n\t\tresults: Prettify<Partial<PromptGroupAwaitedReturn<Omit<T, P>>>>;\n\t}) => undefined | Promise<T[P] | undefined>;\n};\n\n/**\n * Define a group of prompts to be displayed\n * and return a results of objects within the group\n */\nexport const group = async <T>(\n\tprompts: PromptGroup<T>,\n\topts?: PromptGroupOptions<T>\n): Promise<Prettify<PromptGroupAwaitedReturn<T>>> => {\n\tconst results = {} as any;\n\tconst promptNames = Object.keys(prompts);\n\n\tfor (const name of promptNames) {\n\t\tconst prompt = prompts[name as keyof T];\n\t\tconst result = await prompt({ results })?.catch((e) => {\n\t\t\tthrow e;\n\t\t});\n\n\t\t// Pass the results to the onCancel function\n\t\t// so the user can decide what to do with the results\n\t\t// TODO: Switch to callback within core to avoid isCancel Fn\n\t\tif (typeof opts?.onCancel === 'function' && isCancel(result)) {\n\t\t\tresults[name] = 'canceled';\n\t\t\topts.onCancel({ results });\n\t\t\tcontinue;\n\t\t}\n\n\t\tresults[name] = result;\n\t}\n\n\treturn results;\n};\n\nexport type Task = {\n\t/**\n\t * Task title\n\t */\n\ttitle: string;\n\t/**\n\t * Task function\n\t */\n\ttask: (message: (string: string) => void) => string | Promise<string> | void | Promise<void>;\n\n\t/**\n\t * If enabled === false the task will be skipped\n\t */\n\tenabled?: boolean;\n};\n\n/**\n * Define a group of tasks to be executed\n */\nexport const tasks = async (tasks: Task[]) => {\n\tfor (const task of tasks) {\n\t\tif (task.enabled === false) continue;\n\n\t\tconst s = spinner();\n\t\ts.start(task.title);\n\t\tconst result = await task.task(s.message);\n\t\ts.stop(result || task.title);\n\t}\n};\n", "import { existsSync, readdirSync } from \"node:fs\";\nimport { pathToFileURL } from \"node:url\";\nimport { join, resolve as resolvePath } from \"node:path\";\nimport picocolors from \"picocolors\";\nimport { AgentEnvStore } from \"./envStore\";\nimport { installInteractiveAuthInterceptors } from \"./interactiveAuth\";\nimport { renderDocyrusLogoPrimary } from \"./logo\";\nimport { cleanupOnboardingStdinState, runOnboarding, shouldRunOnboarding } from \"./onboarding\";\n\ntype IDocyrusPiProfileId = \"agent\" | \"coder\";\ntype IDocyrusPiMode = \"text\" | \"json\";\ntype IDocyrusPiThinkingLevel = \"off\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\";\n\ninterface IDocyrusPiLoaderRequest {\n profile: IDocyrusPiProfileId;\n prompt?: string;\n print?: boolean;\n mode?: IDocyrusPiMode;\n continue?: boolean;\n resume?: boolean;\n provider?: string;\n model?: string;\n thinking?: IDocyrusPiThinkingLevel;\n session?: string;\n sessionDir?: string;\n apiKey?: string;\n verbose?: boolean;\n}\n\ninterface IPiExports {\n AuthStorage: {\n create(path?: string): any;\n };\n DefaultResourceLoader: new(config: Record<string, unknown>) => { reload(): Promise<void> };\n ModelRegistry: new(authStorage: any, modelsJsonPath?: string) => any;\n SettingsManager: {\n create(cwd?: string, agentDir?: string): any;\n };\n SessionManager: {\n create(cwd: string, sessionDir?: string): any;\n open(path: string, sessionDir?: string): any;\n continueRecent(cwd: string, sessionDir?: string): any;\n list(cwd: string, sessionDir?: string): Promise<Array<{\n path: string;\n name?: string;\n firstMessage: string;\n modified: Date;\n }>>;\n };\n createAgentSession(options: Record<string, unknown>): Promise<{\n session: any;\n extensionsResult: {\n runtime: {\n flagValues: Map<string, boolean | string>;\n };\n };\n modelFallbackMessage?: string;\n }>;\n InteractiveMode: new(session: any, options?: Record<string, unknown>) => any;\n runPrintMode(session: any, options: Record<string, unknown>): Promise<void>;\n createBashTool(cwd: string): unknown;\n createEditTool(cwd: string): unknown;\n createFindTool(cwd: string): unknown;\n createGrepTool(cwd: string): unknown;\n createLsTool(cwd: string): unknown;\n createReadTool(cwd: string): unknown;\n createWriteTool(cwd: string): unknown;\n ExtensionInputComponent: new(...args: any[]) => any;\n ExtensionSelectorComponent: new(...args: any[]) => any;\n}\n\nfunction readRequiredEnv(name: string): string {\n const value = process.env[name];\n if (!value || value.trim().length === 0) {\n throw new Error(`Missing required environment variable: ${name}`);\n }\n\n return value;\n}\n\nfunction readLoaderRequest(): IDocyrusPiLoaderRequest {\n return JSON.parse(readRequiredEnv(\"DOCYRUS_PI_REQUEST\")) as IDocyrusPiLoaderRequest;\n}\n\nasync function loadPiExports(): Promise<IPiExports> {\n const piPackageDir = readRequiredEnv(\"PI_PACKAGE_DIR\");\n const moduleUrl = pathToFileURL(join(piPackageDir, \"dist\", \"index.js\")).href;\n return await import(moduleUrl) as IPiExports;\n}\n\nfunction resolvePackagedPiResourceRoot(): string {\n const candidates = [\n resolvePath(process.cwd(), \"apps/api-cli/resources/pi-agent\"),\n resolvePath(__dirname, \"../resources/pi-agent\"),\n resolvePath(__dirname, \"resources/pi-agent\"),\n resolvePath(process.cwd(), \"dist/apps/api-cli/resources/pi-agent\"),\n ];\n\n const resolved = candidates.find((candidate) => existsSync(candidate));\n if (!resolved) {\n throw new Error(`Unable to locate pi agent resources. Checked: ${candidates.join(\", \")}`);\n }\n\n return resolved;\n}\n\nfunction resolvePackagedExtensionPaths(resourceRoot: string): string[] {\n const extensionsRoot = join(resourceRoot, \"extensions\");\n if (!existsSync(extensionsRoot)) {\n return [];\n }\n\n return readdirSync(extensionsRoot, {\n withFileTypes: true,\n })\n .filter((entry) => entry.isDirectory() || (entry.isFile() && (entry.name.endsWith(\".ts\") || entry.name.endsWith(\".js\"))))\n .map((entry) => join(extensionsRoot, entry.name))\n .sort((left, right) => left.localeCompare(right));\n}\n\nfunction setProcessArgValue(flag: string, value: string): void {\n const existingIndex = process.argv.indexOf(flag);\n if (existingIndex >= 0) {\n if (existingIndex + 1 < process.argv.length) {\n process.argv[existingIndex + 1] = value;\n return;\n }\n\n process.argv.push(value);\n return;\n }\n\n process.argv.push(flag, value);\n}\n\nasync function readPipedStdin(): Promise<string | undefined> {\n if (process.stdin.isTTY) {\n return undefined;\n }\n\n return await new Promise((resolve) => {\n let data = \"\";\n process.stdin.setEncoding(\"utf8\");\n process.stdin.on(\"data\", (chunk) => {\n data += chunk;\n });\n process.stdin.on(\"end\", () => {\n resolve(data.trim() || undefined);\n });\n process.stdin.resume();\n });\n}\n\nfunction buildTools(profile: IDocyrusPiProfileId, cwd: string, pi: IPiExports) {\n if (profile === \"agent\") {\n return [\n pi.createReadTool(cwd),\n pi.createBashTool(cwd),\n pi.createGrepTool(cwd),\n pi.createFindTool(cwd),\n pi.createLsTool(cwd),\n ];\n }\n\n return [\n pi.createReadTool(cwd),\n pi.createBashTool(cwd),\n pi.createEditTool(cwd),\n pi.createWriteTool(cwd),\n pi.createGrepTool(cwd),\n pi.createFindTool(cwd),\n pi.createLsTool(cwd),\n ];\n}\n\nfunction resolveRequestedModel(params: {\n request: IDocyrusPiLoaderRequest;\n modelRegistry: { getAvailable(): Array<{ provider: string; id: string }>; find(provider: string, modelId: string): unknown | undefined };\n}): unknown | undefined {\n const { request, modelRegistry } = params;\n const requestedProvider = request.provider?.trim();\n const requestedModel = request.model?.trim();\n\n if (!requestedProvider && !requestedModel) {\n return undefined;\n }\n\n if (requestedProvider && requestedModel) {\n const normalizedModelId = requestedModel.startsWith(`${requestedProvider}/`)\n ? requestedModel.slice(requestedProvider.length + 1)\n : requestedModel;\n return modelRegistry.find(requestedProvider, normalizedModelId);\n }\n\n if (requestedModel && requestedModel.includes(\"/\")) {\n const slashIndex = requestedModel.indexOf(\"/\");\n return modelRegistry.find(requestedModel.slice(0, slashIndex).trim(), requestedModel.slice(slashIndex + 1).trim());\n }\n\n if (requestedModel) {\n const availableModels = modelRegistry.getAvailable();\n const exactMatches = availableModels.filter((model) => model.id === requestedModel);\n if (exactMatches.length === 1) {\n return exactMatches[0];\n }\n\n return availableModels.find((model) => model.id.includes(requestedModel));\n }\n\n return undefined;\n}\n\nfunction buildModelIdsByProvider(modelRegistry: { getAll(): Array<{ provider: string; id: string }> }): Record<string, string[]> {\n const values: Record<string, string[]> = {};\n for (const model of modelRegistry.getAll()) {\n if (!values[model.provider]) {\n values[model.provider] = [];\n }\n values[model.provider].push(model.id);\n }\n\n return values;\n}\n\nasync function chooseResumeSession(params: {\n pi: IPiExports;\n request: IDocyrusPiLoaderRequest;\n cwd: string;\n}): Promise<string | undefined> {\n const sessions = await params.pi.SessionManager.list(params.cwd, params.request.sessionDir);\n if (sessions.length === 0) {\n return undefined;\n }\n\n const prompts = await import(\"@clack/prompts\");\n const selected = await prompts.select({\n message: \"Select a session to resume\",\n options: sessions.slice(0, 20).map((session) => ({\n value: session.path,\n label: session.name || session.modified.toLocaleString(),\n hint: session.firstMessage.replace(/\\n/g, \" \").slice(0, 80) || \"Empty session\",\n })),\n });\n\n if (prompts.isCancel(selected) || !selected) {\n process.exit(0);\n }\n\n return String(selected);\n}\n\nasync function createSessionManager(params: {\n pi: IPiExports;\n request: IDocyrusPiLoaderRequest;\n cwd: string;\n isInteractive: boolean;\n}): Promise<any> {\n if (params.request.session) {\n return params.pi.SessionManager.open(params.request.session, params.request.sessionDir);\n }\n\n if (params.request.resume) {\n if (!params.isInteractive) {\n return params.pi.SessionManager.continueRecent(params.cwd, params.request.sessionDir);\n }\n\n const selectedSessionPath = await chooseResumeSession(params);\n if (selectedSessionPath) {\n return params.pi.SessionManager.open(selectedSessionPath, params.request.sessionDir);\n }\n }\n\n if (params.request.continue) {\n return params.pi.SessionManager.continueRecent(params.cwd, params.request.sessionDir);\n }\n\n return params.pi.SessionManager.create(params.cwd, params.request.sessionDir);\n}\n\nfunction renderStartupSplash(version: string): void {\n process.stderr.write(\n renderDocyrusLogoPrimary() +\n \"\\n\" +\n ` ${picocolors.bold(\"DOCYRUS\")} ${picocolors.dim(`v${version}`)}\\n` +\n ` ${picocolors.green(\"Welcome.\")} Preparing your agent workspace...\\n\\n`,\n );\n}\n\nasync function main(): Promise<void> {\n const request = readLoaderRequest();\n const pi = await loadPiExports();\n const cwd = process.cwd();\n const agentDir = readRequiredEnv(\"PI_CODING_AGENT_DIR\");\n const version = process.env.DOCYRUS_PI_VERSION || \"dev\";\n const resourceRoot = resolvePackagedPiResourceRoot();\n const packagedExtensionPaths = resolvePackagedExtensionPaths(resourceRoot);\n const mcpConfigPath = join(agentDir, \"mcp.json\");\n const hasPackagedMcpAdapter = packagedExtensionPaths.some((extensionPath) => extensionPath.includes(\"pi-mcp-adapter\"));\n const envStore = new AgentEnvStore(join(agentDir, \"env.json\"));\n await envStore.hydrateProcessEnv(process.env);\n\n if (hasPackagedMcpAdapter) {\n setProcessArgValue(\"--mcp-config\", mcpConfigPath);\n }\n\n const authStorage = pi.AuthStorage.create(join(agentDir, \"auth.json\"));\n const settingsManager = pi.SettingsManager.create(cwd, agentDir);\n const modelsJsonPath = join(agentDir, \"models.json\");\n const initialModelRegistry = new pi.ModelRegistry(authStorage, modelsJsonPath);\n const isPrintMode = Boolean(request.print) || !process.stdin.isTTY;\n const isInteractive = process.stdin.isTTY && !isPrintMode;\n const quietStartup = !request.verbose;\n\n if (quietStartup) {\n process.env.PI_SKIP_VERSION_CHECK = \"1\";\n settingsManager.setQuietStartup(true);\n settingsManager.setCollapseChangelog(true);\n settingsManager.setLastChangelogVersion(version);\n }\n\n const browserProviders = authStorage.getOAuthProviders();\n const apiKeyProviderIds = Array.from(new Set(initialModelRegistry.getAll().map((model: { provider: string }) => model.provider)));\n const modelIdsByProvider = buildModelIdsByProvider(initialModelRegistry);\n\n let usedClack = false;\n renderStartupSplash(version);\n\n if (await shouldRunOnboarding({\n authStorage,\n envStore,\n settingsManager,\n isInteractive,\n isPrintMode,\n browserProviders,\n apiKeyProviderIds,\n modelIdsByProvider,\n } as any)) {\n usedClack = true;\n await runOnboarding({\n authStorage,\n envStore,\n settingsManager,\n modelsJsonPath,\n browserProviders,\n apiKeyProviderIds,\n modelIdsByProvider,\n } as any);\n await envStore.hydrateProcessEnv(process.env);\n }\n\n const modelRegistry = new pi.ModelRegistry(authStorage, modelsJsonPath);\n const requestedModel = resolveRequestedModel({\n request,\n modelRegistry,\n });\n\n if (request.apiKey) {\n const apiKeyProvider = request.provider?.trim() || (requestedModel as { provider?: string } | undefined)?.provider;\n if (!apiKeyProvider) {\n throw new Error(\"--api-key requires a provider or a resolvable model.\");\n }\n\n authStorage.setRuntimeApiKey(apiKeyProvider, request.apiKey);\n }\n\n const sessionManager = await createSessionManager({\n pi,\n request,\n cwd,\n isInteractive,\n });\n\n const resourceLoader = new pi.DefaultResourceLoader({\n cwd,\n agentDir,\n settingsManager,\n additionalExtensionPaths: packagedExtensionPaths,\n systemPrompt: join(\n resourceRoot,\n \"prompts\",\n request.profile === \"agent\" ? \"agent-system.md\" : \"coder-system.md\",\n ),\n });\n await resourceLoader.reload();\n\n const { session, modelFallbackMessage, extensionsResult } = await pi.createAgentSession({\n cwd,\n agentDir,\n authStorage,\n modelRegistry,\n resourceLoader,\n settingsManager,\n sessionManager,\n tools: buildTools(request.profile, cwd, pi),\n model: requestedModel,\n thinkingLevel: request.thinking,\n });\n\n if (hasPackagedMcpAdapter) {\n extensionsResult.runtime.flagValues.set(\"mcp-config\", mcpConfigPath);\n }\n\n if (usedClack) {\n cleanupOnboardingStdinState();\n }\n\n const pipedStdin = await readPipedStdin();\n if (pipedStdin !== undefined && !request.print) {\n request.print = true;\n }\n\n if (request.print || pipedStdin !== undefined) {\n if (!session.model) {\n throw new Error(`No models available.\\n\\nSet an API key environment variable:\\n ANTHROPIC_API_KEY, OPENAI_API_KEY, GEMINI_API_KEY, etc.\\n\\nOr create ${modelsJsonPath}`);\n }\n\n const initialMessage = pipedStdin || request.prompt;\n const initialMessages = pipedStdin && request.prompt ? [request.prompt] : undefined;\n await pi.runPrintMode(session, {\n mode: request.mode || \"text\",\n initialMessage,\n messages: initialMessages,\n });\n return;\n }\n\n const interactiveMode = new pi.InteractiveMode(session, {\n initialMessage: request.prompt,\n modelFallbackMessage,\n verbose: request.verbose,\n });\n const originalInit = interactiveMode.init.bind(interactiveMode);\n interactiveMode.init = async() => {\n await originalInit();\n installInteractiveAuthInterceptors(interactiveMode, {\n authStorage,\n envStore,\n settingsManager,\n modelsJsonPath,\n browserProviders,\n apiKeyProviderIds: Array.from(new Set(modelRegistry.getAll().map((model: { provider: string }) => model.provider))),\n modelIdsByProvider: buildModelIdsByProvider(modelRegistry),\n uiComponents: {\n ExtensionInputComponent: pi.ExtensionInputComponent,\n ExtensionSelectorComponent: pi.ExtensionSelectorComponent,\n },\n });\n };\n\n await interactiveMode.run();\n}\n\nvoid main().catch((error: unknown) => {\n const message = error instanceof Error ? error.message : String(error);\n process.stderr.write(`${message}\\n`);\n process.exitCode = 1;\n});\n", "import { chmod, mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { dirname } from \"node:path\";\n\nexport interface IAgentEnvStoreState {\n version: 1;\n values: Record<string, string>;\n}\n\nfunction createDefaultState(): IAgentEnvStoreState {\n return {\n version: 1,\n values: {},\n };\n}\n\nfunction normalizeState(state: IAgentEnvStoreState): IAgentEnvStoreState {\n const values: Record<string, string> = {};\n for (const [key, value] of Object.entries(state.values || {})) {\n const normalizedKey = key.trim();\n const normalizedValue = value.trim();\n if (!normalizedKey || !normalizedValue) {\n continue;\n }\n values[normalizedKey] = normalizedValue;\n }\n\n return {\n version: 1,\n values,\n };\n}\n\nexport class AgentEnvStore {\n constructor(private readonly filePath: string) {}\n\n getFilePath(): string {\n return this.filePath;\n }\n\n async readState(): Promise<IAgentEnvStoreState> {\n try {\n const raw = await readFile(this.filePath, \"utf8\");\n const parsed = JSON.parse(raw) as IAgentEnvStoreState;\n if (!parsed || parsed.version !== 1 || typeof parsed.values !== \"object\" || parsed.values === null) {\n return createDefaultState();\n }\n\n return normalizeState(parsed);\n }\n catch (error: unknown) {\n if (\n typeof error === \"object\"\n && error !== null\n && \"code\" in error\n && (error as { code?: string }).code === \"ENOENT\"\n ) {\n return createDefaultState();\n }\n\n return createDefaultState();\n }\n }\n\n async writeState(state: IAgentEnvStoreState): Promise<void> {\n const normalized = normalizeState(state);\n const directory = dirname(this.filePath);\n\n await mkdir(directory, {\n recursive: true,\n mode: 0o700,\n });\n\n await writeFile(this.filePath, `${JSON.stringify(normalized, null, 2)}\\n`, {\n encoding: \"utf8\",\n mode: 0o600,\n });\n\n await chmod(this.filePath, 0o600);\n }\n\n async setMany(values: Record<string, string>): Promise<void> {\n const state = await this.readState();\n await this.writeState({\n version: 1,\n values: {\n ...state.values,\n ...Object.fromEntries(\n Object.entries(values)\n .map(([key, value]) => [key.trim(), value.trim()] as const)\n .filter(([key, value]) => key.length > 0 && value.length > 0),\n ),\n },\n });\n }\n\n async removeMany(keys: string[]): Promise<void> {\n const state = await this.readState();\n const nextValues = { ...state.values };\n\n for (const key of keys) {\n delete nextValues[key];\n }\n\n await this.writeState({\n version: 1,\n values: nextValues,\n });\n }\n\n async hydrateProcessEnv(env: NodeJS.ProcessEnv = process.env): Promise<Record<string, string>> {\n const state = await this.readState();\n for (const [key, value] of Object.entries(state.values)) {\n if (!env[key]) {\n env[key] = value;\n }\n }\n\n return state.values;\n }\n\n async hasAny(keys: string[]): Promise<boolean> {\n const state = await this.readState();\n return keys.some((key) => Boolean(state.values[key] || process.env[key]));\n }\n}\n", "import { chmod, mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { dirname } from \"node:path\";\n\ntype IJsonValue = string | number | boolean | null | IJsonArray | IJsonObject;\ninterface IJsonObject {\n [key: string]: IJsonValue;\n}\ntype IJsonArray = IJsonValue[];\n\nexport interface IModelsConfigState {\n providers: Record<string, IJsonObject>;\n}\n\nfunction createDefaultState(): IModelsConfigState {\n return {\n providers: {},\n };\n}\n\nexport async function readModelsConfig(filePath: string): Promise<IModelsConfigState> {\n try {\n const raw = await readFile(filePath, \"utf8\");\n const parsed = JSON.parse(raw) as IModelsConfigState;\n if (!parsed || typeof parsed !== \"object\" || typeof parsed.providers !== \"object\" || parsed.providers === null) {\n return createDefaultState();\n }\n\n return {\n providers: { ...parsed.providers },\n };\n }\n catch (error: unknown) {\n if (\n typeof error === \"object\"\n && error !== null\n && \"code\" in error\n && (error as { code?: string }).code === \"ENOENT\"\n ) {\n return createDefaultState();\n }\n\n return createDefaultState();\n }\n}\n\nexport async function writeModelsConfig(filePath: string, state: IModelsConfigState): Promise<void> {\n const directory = dirname(filePath);\n await mkdir(directory, {\n recursive: true,\n mode: 0o700,\n });\n\n await writeFile(filePath, `${JSON.stringify(state, null, 2)}\\n`, {\n encoding: \"utf8\",\n mode: 0o600,\n });\n\n await chmod(filePath, 0o600);\n}\n\nexport async function upsertModelsProvider(filePath: string, providerId: string, providerConfig: IJsonObject): Promise<void> {\n const state = await readModelsConfig(filePath);\n await writeModelsConfig(filePath, {\n providers: {\n ...state.providers,\n [providerId]: providerConfig,\n },\n });\n}\n\nexport async function removeModelsProvider(filePath: string, providerId: string): Promise<void> {\n const state = await readModelsConfig(filePath);\n const nextProviders = { ...state.providers };\n delete nextProviders[providerId];\n\n await writeModelsConfig(filePath, {\n providers: nextProviders,\n });\n}\n\nexport function createCustomOpenAiProviderConfig(params: {\n baseUrl: string;\n modelId: string;\n}): IJsonObject {\n return {\n baseUrl: params.baseUrl,\n apiKey: \"env:CUSTOM_OPENAI_API_KEY\",\n api: \"openai-completions\",\n models: [\n {\n id: params.modelId,\n name: params.modelId,\n reasoning: false,\n input: [\"text\"],\n contextWindow: 128000,\n maxTokens: 16384,\n cost: {\n input: 0,\n output: 0,\n cacheRead: 0,\n cacheWrite: 0,\n },\n },\n ],\n };\n}\n\nexport function createAzureProviderConfig(params: {\n baseUrl: string;\n modelId: string;\n useCustomModel: boolean;\n}): IJsonObject {\n const providerConfig: IJsonObject = {\n baseUrl: params.baseUrl,\n apiKey: \"env:AZURE_OPENAI_API_KEY\",\n };\n\n if (params.useCustomModel) {\n providerConfig.api = \"azure-openai-responses\";\n providerConfig.models = [\n {\n id: params.modelId,\n name: params.modelId,\n reasoning: false,\n input: [\"text\"],\n contextWindow: 128000,\n maxTokens: 16384,\n cost: {\n input: 0,\n output: 0,\n cacheRead: 0,\n cacheWrite: 0,\n },\n },\n ];\n }\n\n return providerConfig;\n}\n", "import type { AuthStorage, SettingsManager } from \"@mariozechner/pi-coding-agent\";\nimport { AgentEnvStore } from \"./envStore\";\nimport {\n createAzureProviderConfig,\n createCustomOpenAiProviderConfig,\n removeModelsProvider,\n upsertModelsProvider,\n} from \"./modelsConfig\";\n\nexport interface IAzureConfigInput {\n apiKey: string;\n baseUrl: string;\n modelId: string;\n deploymentName?: string;\n apiVersion?: string;\n useCustomModel?: boolean;\n}\n\nexport interface ICustomOpenAiConfigInput {\n apiKey: string;\n baseUrl: string;\n modelId: string;\n}\n\nexport interface IBedrockConfigInput {\n region: string;\n modelId: string;\n profile?: string;\n accessKeyId?: string;\n secretAccessKey?: string;\n sessionToken?: string;\n}\n\nexport interface IDocyrusAuthFlowDependencies {\n authStorage: AuthStorage;\n envStore: AgentEnvStore;\n settingsManager: SettingsManager;\n modelsJsonPath: string;\n}\n\nfunction trimOrUndefined(value?: string): string | undefined {\n const trimmed = value?.trim();\n return trimmed && trimmed.length > 0 ? trimmed : undefined;\n}\n\nexport async function saveGenericApiKey(params: IDocyrusAuthFlowDependencies & {\n providerId: string;\n apiKey: string;\n}): Promise<void> {\n params.authStorage.set(params.providerId, {\n type: \"api_key\",\n key: params.apiKey.trim(),\n });\n}\n\nexport async function saveCustomOpenAiConfig(params: IDocyrusAuthFlowDependencies & ICustomOpenAiConfigInput): Promise<void> {\n params.authStorage.set(\"custom-openai\", {\n type: \"api_key\",\n key: params.apiKey.trim(),\n });\n\n await params.envStore.removeMany([\n \"CUSTOM_OPENAI_API_KEY\",\n ]);\n await params.envStore.setMany({\n CUSTOM_OPENAI_API_KEY: params.apiKey.trim(),\n });\n\n await upsertModelsProvider(params.modelsJsonPath, \"custom-openai\", createCustomOpenAiProviderConfig({\n baseUrl: params.baseUrl.trim(),\n modelId: params.modelId.trim(),\n }));\n\n params.settingsManager.setDefaultModelAndProvider(\"custom-openai\", params.modelId.trim());\n}\n\nexport async function saveAzureConfig(params: IDocyrusAuthFlowDependencies & IAzureConfigInput): Promise<void> {\n const modelId = params.modelId.trim();\n const useCustomModel = params.useCustomModel ?? false;\n\n params.authStorage.set(\"azure-openai-responses\", {\n type: \"api_key\",\n key: params.apiKey.trim(),\n });\n\n await params.envStore.removeMany([\n \"AZURE_OPENAI_API_KEY\",\n \"AZURE_OPENAI_API_VERSION\",\n \"AZURE_OPENAI_DEPLOYMENT_NAME_MAP\",\n ]);\n const envValues: Record<string, string> = {\n AZURE_OPENAI_API_KEY: params.apiKey.trim(),\n };\n const trimmedApiVersion = trimOrUndefined(params.apiVersion);\n if (trimmedApiVersion) {\n envValues.AZURE_OPENAI_API_VERSION = trimmedApiVersion;\n }\n\n const trimmedDeploymentName = trimOrUndefined(params.deploymentName);\n if (trimmedDeploymentName && trimmedDeploymentName !== modelId) {\n envValues.AZURE_OPENAI_DEPLOYMENT_NAME_MAP = JSON.stringify({\n [modelId]: trimmedDeploymentName,\n });\n }\n\n await params.envStore.setMany(envValues);\n\n await upsertModelsProvider(params.modelsJsonPath, \"azure-openai-responses\", createAzureProviderConfig({\n baseUrl: params.baseUrl.trim(),\n modelId,\n useCustomModel,\n }));\n\n params.settingsManager.setDefaultModelAndProvider(\"azure-openai-responses\", modelId);\n}\n\nexport async function saveBedrockConfig(params: IDocyrusAuthFlowDependencies & IBedrockConfigInput): Promise<void> {\n params.authStorage.set(\"amazon-bedrock\", {\n type: \"api_key\",\n key: \"aws-configured\",\n });\n\n await params.envStore.removeMany([\n \"AWS_PROFILE\",\n \"AWS_ACCESS_KEY_ID\",\n \"AWS_SECRET_ACCESS_KEY\",\n \"AWS_SESSION_TOKEN\",\n \"AWS_REGION\",\n \"AWS_DEFAULT_REGION\",\n \"AWS_BEARER_TOKEN_BEDROCK\",\n ]);\n const envValues: Record<string, string> = {\n AWS_REGION: params.region.trim(),\n AWS_DEFAULT_REGION: params.region.trim(),\n };\n\n const profile = trimOrUndefined(params.profile);\n if (profile) {\n envValues.AWS_PROFILE = profile;\n }\n\n const accessKeyId = trimOrUndefined(params.accessKeyId);\n const secretAccessKey = trimOrUndefined(params.secretAccessKey);\n if (accessKeyId && secretAccessKey) {\n envValues.AWS_ACCESS_KEY_ID = accessKeyId;\n envValues.AWS_SECRET_ACCESS_KEY = secretAccessKey;\n }\n\n const sessionToken = trimOrUndefined(params.sessionToken);\n if (sessionToken) {\n envValues.AWS_SESSION_TOKEN = sessionToken;\n }\n\n await params.envStore.setMany(envValues);\n params.settingsManager.setDefaultModelAndProvider(\"amazon-bedrock\", params.modelId.trim());\n}\n\nexport async function clearProviderConfig(params: IDocyrusAuthFlowDependencies & {\n providerId: string;\n}): Promise<void> {\n params.authStorage.remove(params.providerId);\n\n if (params.providerId === \"custom-openai\") {\n await params.envStore.removeMany([\n \"CUSTOM_OPENAI_API_KEY\",\n ]);\n await removeModelsProvider(params.modelsJsonPath, \"custom-openai\");\n }\n\n if (params.providerId === \"azure-openai-responses\") {\n await params.envStore.removeMany([\n \"AZURE_OPENAI_API_KEY\",\n \"AZURE_OPENAI_API_VERSION\",\n \"AZURE_OPENAI_DEPLOYMENT_NAME_MAP\",\n ]);\n await removeModelsProvider(params.modelsJsonPath, \"azure-openai-responses\");\n }\n\n if (params.providerId === \"amazon-bedrock\") {\n await params.envStore.removeMany([\n \"AWS_PROFILE\",\n \"AWS_ACCESS_KEY_ID\",\n \"AWS_SECRET_ACCESS_KEY\",\n \"AWS_SESSION_TOKEN\",\n \"AWS_REGION\",\n \"AWS_DEFAULT_REGION\",\n \"AWS_BEARER_TOKEN_BEDROCK\",\n ]);\n }\n}\n", "export const DOCYRUS_LOGO: readonly string[] = [\n \"\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\",\n \"\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557 \u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557 \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u255A\u2588\u2588\u2557 \u2588\u2588\u2554\u255D\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\",\n \"\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\",\n \"\u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u255A\u2588\u2588\u2554\u255D \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551\u255A\u2550\u2550\u2550\u2550\u2588\u2588\u2551\",\n \"\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D \u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D \u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\",\n \"\u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\",\n];\n\nexport const DOCYRUS_LOGO_PRIMARY_HEX = \"#ef4444\";\nexport const DOCYRUS_LOGO_SHADOW_HEX = \"#3f4bff\";\n\nfunction colorizeHex(text: string, hex: string): string {\n const normalizedHex = hex.replace(\"#\", \"\");\n const red = parseInt(normalizedHex.slice(0, 2), 16);\n const green = parseInt(normalizedHex.slice(2, 4), 16);\n const blue = parseInt(normalizedHex.slice(4, 6), 16);\n\n return `\\x1b[38;2;${red};${green};${blue}m${text}\\x1b[0m`;\n}\n\nexport function renderDocyrusLogo(color: (text: string) => string = (text) => colorizeHex(text, DOCYRUS_LOGO_PRIMARY_HEX)): string {\n return `\\n${DOCYRUS_LOGO.map(color).join(\"\\n\")}\\n`;\n}\n\nexport function renderDocyrusLogoPrimary(): string {\n return renderDocyrusLogo();\n}\n", "import type { AgentEnvStore } from \"./envStore\";\n\nexport type IDocyrusAuthFlowId = \"oauth\" | \"generic-api-key\" | \"custom-openai\" | \"azure-openai-responses\" | \"amazon-bedrock\";\n\nexport interface IDocyrusProviderOption {\n id: string;\n label: string;\n hint?: string;\n flow: IDocyrusAuthFlowId;\n}\n\nconst OAUTH_ONLY_PROVIDER_IDS = new Set([\n \"github-copilot\",\n \"openai-codex\",\n \"google-gemini-cli\",\n \"google-antigravity\",\n]);\n\nconst PROVIDER_LABELS: Record<string, string> = {\n anthropic: \"Anthropic (Claude)\",\n openai: \"OpenAI\",\n google: \"Google (Gemini)\",\n \"google-vertex\": \"Google Vertex AI\",\n \"azure-openai-responses\": \"Azure OpenAI\",\n \"amazon-bedrock\": \"Amazon Bedrock\",\n xai: \"xAI (Grok)\",\n groq: \"Groq\",\n cerebras: \"Cerebras\",\n openrouter: \"OpenRouter\",\n \"vercel-ai-gateway\": \"Vercel AI Gateway\",\n zai: \"ZAI\",\n mistral: \"Mistral\",\n minimax: \"MiniMax\",\n \"minimax-cn\": \"MiniMax CN\",\n huggingface: \"Hugging Face\",\n opencode: \"OpenCode\",\n \"opencode-go\": \"OpenCode Go\",\n \"kimi-coding\": \"Kimi Coding\",\n \"custom-openai\": \"Custom OpenAI-Compatible\",\n \"google-gemini-cli\": \"Google Gemini CLI\",\n \"google-antigravity\": \"Google Antigravity\",\n \"openai-codex\": \"OpenAI Codex\",\n \"github-copilot\": \"GitHub Copilot\",\n};\n\nconst PROVIDER_HINTS: Record<string, string> = {\n anthropic: \"recommended\",\n \"custom-openai\": \"custom base URL + API key\",\n \"azure-openai-responses\": \"API key + base URL/resource + deployment\",\n \"amazon-bedrock\": \"AWS profile or access key pair\",\n \"openai-codex\": \"browser auth\",\n \"github-copilot\": \"browser auth\",\n \"google-gemini-cli\": \"browser auth\",\n \"google-antigravity\": \"browser auth\",\n};\n\nfunction humanizeProviderId(providerId: string): string {\n return providerId\n .split(\"-\")\n .map((part) => {\n if (!part) {return part;}\n if (part.length <= 3) {return part.toUpperCase();}\n return part[0].toUpperCase() + part.slice(1);\n })\n .join(\" \");\n}\n\nfunction toLabel(providerId: string): string {\n return PROVIDER_LABELS[providerId] || humanizeProviderId(providerId);\n}\n\nfunction toHint(providerId: string): string | undefined {\n return PROVIDER_HINTS[providerId];\n}\n\nfunction compareProviderOptions(a: IDocyrusProviderOption, b: IDocyrusProviderOption): number {\n return a.label.localeCompare(b.label);\n}\n\nexport function getBrowserAuthProviderOptions(oauthProviders: Array<{ id: string; name?: string }>): IDocyrusProviderOption[] {\n return oauthProviders\n .map((provider: { id: string; name?: string }) => ({\n id: provider.id,\n label: provider.name || toLabel(provider.id),\n hint: toHint(provider.id),\n flow: \"oauth\" as const,\n }))\n .sort(compareProviderOptions);\n}\n\nexport function getApiKeyProviderOptions(providerIds: string[]): IDocyrusProviderOption[] {\n const baseProviders: IDocyrusProviderOption[] = providerIds\n .filter((providerId: string) => !OAUTH_ONLY_PROVIDER_IDS.has(providerId))\n .map((providerId: string) => {\n let flow: IDocyrusAuthFlowId = \"generic-api-key\";\n if (providerId === \"azure-openai-responses\") {\n flow = \"azure-openai-responses\";\n }\n else if (providerId === \"amazon-bedrock\") {\n flow = \"amazon-bedrock\";\n }\n\n return {\n id: providerId,\n label: toLabel(providerId),\n hint: toHint(providerId),\n flow,\n } satisfies IDocyrusProviderOption;\n });\n\n baseProviders.push({\n id: \"custom-openai\",\n label: toLabel(\"custom-openai\"),\n hint: toHint(\"custom-openai\"),\n flow: \"custom-openai\",\n });\n\n const deduped = new Map<string, IDocyrusProviderOption>();\n for (const provider of baseProviders) {\n deduped.set(provider.id, provider);\n }\n\n return Array.from(deduped.values()).sort(compareProviderOptions);\n}\n\nexport async function findExistingConfiguredProvider(params: {\n authStorage: {\n hasAuth(providerId: string): boolean;\n };\n envStore: AgentEnvStore;\n knownProviderIds: string[];\n}): Promise<string | null> {\n for (const providerId of params.knownProviderIds) {\n if (params.authStorage.hasAuth(providerId)) {\n return providerId;\n }\n }\n\n const hasBedrock = await params.envStore.hasAny([\"AWS_PROFILE\", \"AWS_ACCESS_KEY_ID\", \"AWS_BEARER_TOKEN_BEDROCK\"]);\n if (hasBedrock) {\n return \"amazon-bedrock\";\n }\n\n return null;\n}\n\nexport function getProviderLabel(providerId: string): string {\n return toLabel(providerId);\n}\n\nexport function getProviderHint(providerId: string): string | undefined {\n return toHint(providerId);\n}\n", "import type { AuthStorage, InteractiveMode, SettingsManager } from \"@mariozechner/pi-coding-agent\";\nimport { clearProviderConfig, saveAzureConfig, saveBedrockConfig, saveCustomOpenAiConfig, saveGenericApiKey, type IDocyrusAuthFlowDependencies } from \"./authFlows\";\nimport { AgentEnvStore } from \"./envStore\";\nimport { renderDocyrusLogoPrimary } from \"./logo\";\nimport { getApiKeyProviderOptions, getProviderLabel, type IDocyrusProviderOption } from \"./providerCatalog\";\n\nexport interface IInteractiveAuthUiComponents {\n ExtensionInputComponent: new(\n title: string,\n placeholder: string | undefined,\n onSubmit: (value: string) => void,\n onCancel: () => void,\n options?: { tui?: unknown },\n ) => any;\n ExtensionSelectorComponent: new(\n title: string,\n options: string[],\n onSelect: (value: string) => void,\n onCancel: () => void,\n settings?: { tui?: unknown },\n ) => any;\n}\n\nexport interface IInteractiveAuthDependencies extends IDocyrusAuthFlowDependencies {\n authStorage: AuthStorage;\n envStore: AgentEnvStore;\n settingsManager: SettingsManager;\n modelsJsonPath: string;\n browserProviders: Array<{ id: string; name?: string }>;\n apiKeyProviderIds: string[];\n modelIdsByProvider: Record<string, string[]>;\n uiComponents: IInteractiveAuthUiComponents;\n}\n\nfunction modeAsAny(mode: InteractiveMode): any {\n return mode as any;\n}\n\nfunction getConfiguredProviderIds(dependencies: IInteractiveAuthDependencies): string[] {\n const ids = new Set<string>(dependencies.authStorage.list());\n return Array.from(ids.values()).sort((left, right) => getProviderLabel(left).localeCompare(getProviderLabel(right)));\n}\n\nfunction buildBrandedTitle(title: string): string {\n return `${renderDocyrusLogoPrimary().trim()}\\n\\n${title}`;\n}\n\nasync function showSelection(mode: InteractiveMode, title: string, options: Array<{ value: string; label: string; hint?: string }>): Promise<string | undefined> {\n const modeAny = modeAsAny(mode);\n const displayToValue = new Map<string, string>();\n const displayOptions = options.map((option) => {\n const display = option.hint\n ? `${option.label} \u2014 ${option.hint}`\n : option.label;\n displayToValue.set(display, option.value);\n return display;\n });\n\n return await new Promise((resolve) => {\n modeAny.showSelector((done: () => void) => {\n const selector = new modeAny.__docyrusUiComponents.ExtensionSelectorComponent(\n buildBrandedTitle(title),\n displayOptions,\n (selected: string) => {\n done();\n resolve(displayToValue.get(selected));\n },\n () => {\n done();\n resolve(undefined);\n },\n { tui: modeAny.ui },\n );\n\n return {\n component: selector,\n focus: selector,\n };\n });\n });\n}\n\nasync function showInput(mode: InteractiveMode, title: string, placeholder?: string): Promise<string | undefined> {\n const modeAny = modeAsAny(mode);\n return await new Promise((resolve) => {\n modeAny.showSelector((done: () => void) => {\n const input = new modeAny.__docyrusUiComponents.ExtensionInputComponent(\n buildBrandedTitle(title),\n placeholder,\n (value: string) => {\n done();\n resolve(value.trim() || undefined);\n },\n () => {\n done();\n resolve(undefined);\n },\n { tui: modeAny.ui },\n );\n\n return {\n component: input,\n focus: input,\n };\n });\n });\n}\n\nasync function refreshAfterCredentialChange(mode: InteractiveMode, preferredProviderId?: string, preferredModelId?: string): Promise<void> {\n const modeAny = modeAsAny(mode);\n modeAny.session.modelRegistry.refresh();\n await modeAny.updateAvailableProviderCount?.();\n\n const availableModels = modeAny.session.modelRegistry.getAvailable();\n const preferredModel = preferredProviderId && preferredModelId\n ? availableModels.find((model: { provider: string; id: string }) => (\n model.provider === preferredProviderId && model.id === preferredModelId\n ))\n : preferredProviderId\n ? availableModels.find((model: { provider: string }) => model.provider === preferredProviderId)\n : undefined;\n\n const currentModel = modeAny.session.model;\n const currentModelStillAvailable = currentModel\n ? availableModels.some((model: { provider: string; id: string }) => (\n model.provider === currentModel.provider && model.id === currentModel.id\n ))\n : false;\n\n if (currentModel && !currentModelStillAvailable) {\n if (preferredModel) {\n await modeAny.session.setModel(preferredModel);\n return;\n }\n\n if (availableModels[0]) {\n await modeAny.session.setModel(availableModels[0]);\n }\n return;\n }\n\n if (!currentModel && preferredModel) {\n await modeAny.session.setModel(preferredModel);\n return;\n }\n\n if (!currentModel && availableModels[0]) {\n await modeAny.session.setModel(availableModels[0]);\n }\n}\n\nasync function runApiKeyProviderFlow(mode: InteractiveMode, dependencies: IInteractiveAuthDependencies, provider: IDocyrusProviderOption): Promise<void> {\n const modeAny = modeAsAny(mode);\n\n switch (provider.flow) {\n case \"custom-openai\": {\n const baseUrl = await showInput(mode, \"Custom OpenAI base URL\", \"https://my-proxy.example.com/v1\");\n if (!baseUrl) {return;}\n const apiKey = await showInput(mode, \"Custom OpenAI API key\");\n if (!apiKey) {return;}\n const modelId = await showInput(mode, \"Model ID\", \"gpt-4o\");\n if (!modelId) {return;}\n\n await saveCustomOpenAiConfig({\n ...dependencies,\n baseUrl,\n apiKey,\n modelId,\n });\n await refreshAfterCredentialChange(mode, \"custom-openai\", modelId);\n modeAny.showStatus(`Configured ${provider.label}`);\n return;\n }\n\n case \"azure-openai-responses\": {\n const apiKey = await showInput(mode, \"Azure OpenAI API key\");\n if (!apiKey) {return;}\n\n const configMode = await showSelection(mode, \"Azure OpenAI configuration\", [\n { value: \"base-url\", label: \"Use a base URL\" },\n { value: \"resource-name\", label: \"Use an Azure resource name\" },\n ]);\n if (!configMode) {return;}\n\n let baseUrl: string | undefined;\n if (configMode === \"base-url\") {\n baseUrl = await showInput(mode, \"Azure OpenAI base URL\", \"https://my-resource.openai.azure.com/openai/v1\");\n }\n else {\n const resourceName = await showInput(mode, \"Azure resource name\", \"my-resource\");\n if (resourceName) {\n baseUrl = `https://${resourceName}.openai.azure.com/openai/v1`;\n }\n }\n if (!baseUrl) {return;}\n\n const modelId = await showInput(mode, \"Model ID\", dependencies.modelIdsByProvider[\"azure-openai-responses\"]?.[0] || \"gpt-4.1\");\n if (!modelId) {return;}\n\n const deploymentName = await showInput(mode, \"Deployment name (optional)\", modelId);\n const apiVersion = await showInput(mode, \"API version (optional)\", \"2025-03-01-preview\");\n const builtInModelIds = new Set(dependencies.modelIdsByProvider[\"azure-openai-responses\"] || []);\n\n await saveAzureConfig({\n ...dependencies,\n apiKey,\n baseUrl,\n modelId,\n deploymentName,\n apiVersion,\n useCustomModel: !builtInModelIds.has(modelId),\n });\n await refreshAfterCredentialChange(mode, \"azure-openai-responses\", modelId);\n modeAny.showStatus(`Configured ${provider.label}`);\n return;\n }\n\n case \"amazon-bedrock\": {\n const authMode = await showSelection(mode, \"Amazon Bedrock authentication\", [\n { value: \"profile\", label: \"Use an AWS profile\" },\n { value: \"access-keys\", label: \"Paste AWS access keys\" },\n ]);\n if (!authMode) {return;}\n\n let profile: string | undefined;\n let accessKeyId: string | undefined;\n let secretAccessKey: string | undefined;\n let sessionToken: string | undefined;\n\n if (authMode === \"profile\") {\n profile = await showInput(mode, \"AWS profile name\", \"default\");\n if (!profile) {return;}\n }\n else {\n accessKeyId = await showInput(mode, \"AWS access key ID\");\n if (!accessKeyId) {return;}\n secretAccessKey = await showInput(mode, \"AWS secret access key\");\n if (!secretAccessKey) {return;}\n sessionToken = await showInput(mode, \"AWS session token (optional)\");\n }\n\n const region = await showInput(mode, \"AWS region\", \"us-east-1\");\n if (!region) {return;}\n\n const modelId = await showInput(mode, \"Bedrock model ID\", dependencies.modelIdsByProvider[\"amazon-bedrock\"]?.[0] || \"anthropic.claude-3-7-sonnet-20250219-v1:0\");\n if (!modelId) {return;}\n\n await saveBedrockConfig({\n ...dependencies,\n region,\n modelId,\n profile,\n accessKeyId,\n secretAccessKey,\n sessionToken,\n });\n await refreshAfterCredentialChange(mode, \"amazon-bedrock\", modelId);\n modeAny.showStatus(`Configured ${provider.label}`);\n return;\n }\n\n case \"generic-api-key\":\n default: {\n const apiKey = await showInput(mode, `${provider.label} API key`);\n if (!apiKey) {return;}\n\n await saveGenericApiKey({\n ...dependencies,\n providerId: provider.id,\n apiKey,\n });\n await refreshAfterCredentialChange(mode, provider.id);\n modeAny.showStatus(`Configured ${provider.label}`);\n }\n }\n}\n\nasync function handleInteractiveLogin(mode: InteractiveMode, dependencies: IInteractiveAuthDependencies): Promise<void> {\n const modeAny = modeAsAny(mode);\n const method = await showSelection(mode, \"How do you want to sign in?\", [\n { value: \"browser\", label: \"Sign in with your browser\", hint: \"OAuth-backed providers\" },\n { value: \"api-key\", label: \"Paste an API key\", hint: \"provider dashboard\" },\n ]);\n\n if (!method) {\n modeAny.showStatus(\"Login cancelled\");\n return;\n }\n\n if (method === \"browser\") {\n await modeAny.showOAuthSelector(\"login\");\n return;\n }\n\n const providerId = await showSelection(mode, \"Choose provider\", getApiKeyProviderOptions(dependencies.apiKeyProviderIds).map((provider) => ({\n value: provider.id,\n label: provider.label,\n hint: provider.hint,\n })));\n\n if (!providerId) {\n modeAny.showStatus(\"Login cancelled\");\n return;\n }\n\n const provider = getApiKeyProviderOptions(dependencies.apiKeyProviderIds).find((item) => item.id === providerId);\n if (!provider) {\n modeAny.showError(`Unknown provider: ${providerId}`);\n return;\n }\n\n try {\n await runApiKeyProviderFlow(mode, dependencies, provider);\n }\n catch (error: unknown) {\n modeAny.showError(`Failed to login to ${provider.label}: ${error instanceof Error ? error.message : String(error)}`);\n }\n}\n\nasync function handleInteractiveLogout(mode: InteractiveMode, dependencies: IInteractiveAuthDependencies): Promise<void> {\n const modeAny = modeAsAny(mode);\n const configuredProviderIds = getConfiguredProviderIds(dependencies);\n if (configuredProviderIds.length === 0) {\n modeAny.showStatus(\"No saved providers to remove.\");\n return;\n }\n\n const providerId = await showSelection(mode, \"Remove which saved provider?\", configuredProviderIds.map((id) => ({\n value: id,\n label: getProviderLabel(id),\n })));\n\n if (!providerId) {\n modeAny.showStatus(\"Logout cancelled\");\n return;\n }\n\n try {\n await clearProviderConfig({\n ...dependencies,\n providerId,\n });\n await refreshAfterCredentialChange(mode);\n modeAny.showStatus(`Removed ${getProviderLabel(providerId)}`);\n }\n catch (error: unknown) {\n modeAny.showError(`Failed to remove ${getProviderLabel(providerId)}: ${error instanceof Error ? error.message : String(error)}`);\n }\n}\n\nexport function installInteractiveAuthInterceptors(mode: InteractiveMode, dependencies: IInteractiveAuthDependencies): void {\n const modeAny = modeAsAny(mode);\n modeAny.__docyrusUiComponents = dependencies.uiComponents;\n const defaultEditor = modeAny.defaultEditor;\n if (!defaultEditor || typeof defaultEditor.onSubmit !== \"function\") {\n return;\n }\n\n const originalOnSubmit = defaultEditor.onSubmit.bind(defaultEditor);\n\n defaultEditor.onSubmit = async(text: string) => {\n const trimmed = text.trim();\n if (trimmed === \"/login\") {\n modeAny.editor.setText(\"\");\n await handleInteractiveLogin(mode, dependencies);\n return;\n }\n\n if (trimmed === \"/logout\") {\n modeAny.editor.setText(\"\");\n await handleInteractiveLogout(mode, dependencies);\n return;\n }\n\n await originalOnSubmit(text);\n };\n\n if (modeAny.editor === defaultEditor) {\n modeAny.editor.onSubmit = defaultEditor.onSubmit;\n }\n}\n", "import { exec } from \"node:child_process\";\nimport type { AuthStorage, SettingsManager } from \"@mariozechner/pi-coding-agent\";\nimport { clearProviderConfig, saveAzureConfig, saveBedrockConfig, saveCustomOpenAiConfig, saveGenericApiKey, type IDocyrusAuthFlowDependencies } from \"./authFlows\";\nimport { AgentEnvStore } from \"./envStore\";\nimport { renderDocyrusLogoPrimary } from \"./logo\";\nimport { findExistingConfiguredProvider, getApiKeyProviderOptions, getBrowserAuthProviderOptions, getProviderLabel, type IDocyrusProviderOption } from \"./providerCatalog\";\n\ntype IClackModule = typeof import(\"@clack/prompts\");\ntype IPicoModule = typeof import(\"picocolors\");\n\nconst API_KEY_PREFIXES: Record<string, string[]> = {\n anthropic: [\"sk-ant-\"],\n openai: [\"sk-\"],\n};\n\nexport interface IDocyrusOnboardingDependencies extends IDocyrusAuthFlowDependencies {\n authStorage: AuthStorage;\n envStore: AgentEnvStore;\n settingsManager: SettingsManager;\n modelsJsonPath: string;\n browserProviders: Array<{ id: string; name?: string }>;\n apiKeyProviderIds: string[];\n modelIdsByProvider: Record<string, string[]>;\n}\n\nasync function loadClack(): Promise<IClackModule> {\n return await import(\"@clack/prompts\");\n}\n\nasync function loadPico(): Promise<IPicoModule> {\n return await import(\"picocolors\");\n}\n\nfunction isCancelError(clack: IClackModule, value: unknown): boolean {\n return clack.isCancel(value);\n}\n\nfunction openBrowser(url: string): void {\n const command = process.platform === \"darwin\"\n ? \"open\"\n : process.platform === \"win32\"\n ? \"start\"\n : \"xdg-open\";\n exec(`${command} \"${url}\"`, () => {\n // best effort\n });\n}\n\nexport async function shouldRunOnboarding(params: {\n authStorage: AuthStorage;\n envStore: AgentEnvStore;\n settingsManager: SettingsManager;\n isInteractive: boolean;\n isPrintMode: boolean;\n browserProviders: Array<{ id: string; name?: string }>;\n apiKeyProviderIds: string[];\n modelIdsByProvider: Record<string, string[]>;\n}): Promise<boolean> {\n if (!params.isInteractive || params.isPrintMode) {\n return false;\n }\n\n if (params.settingsManager.getDefaultProvider()) {\n return false;\n }\n\n const existingProvider = await findExistingConfiguredProvider({\n authStorage: params.authStorage,\n envStore: params.envStore,\n knownProviderIds: [\n ...params.browserProviders.map((provider) => provider.id),\n ...params.apiKeyProviderIds,\n \"custom-openai\",\n ],\n });\n\n return !existingProvider;\n}\n\nexport function cleanupOnboardingStdinState(): void {\n process.stdin.removeAllListeners(\"data\");\n process.stdin.removeAllListeners(\"keypress\");\n if (process.stdin.setRawMode) {\n process.stdin.setRawMode(false);\n }\n process.stdin.pause();\n}\n\nasync function runOAuthFlow(clack: IClackModule, pico: IPicoModule, dependencies: IDocyrusOnboardingDependencies, providerId: string): Promise<boolean> {\n const providerInfo = getBrowserAuthProviderOptions(dependencies.browserProviders).find((provider) => provider.id === providerId);\n const providerName = providerInfo?.label || getProviderLabel(providerId);\n const spinner = clack.spinner();\n spinner.start(`Authenticating with ${providerName}...`);\n\n try {\n await dependencies.authStorage.login(providerId, {\n onAuth: (info: { url: string; instructions?: string }) => {\n spinner.stop(`Opening browser for ${providerName}`);\n openBrowser(info.url);\n clack.log.info(`${pico.dim(\"URL:\")} ${pico.cyan(info.url)}`);\n if (info.instructions) {\n clack.log.info(pico.yellow(info.instructions));\n }\n },\n onPrompt: async(prompt: { message: string; placeholder?: string }) => {\n const result = await clack.text({\n message: prompt.message,\n placeholder: prompt.placeholder,\n });\n\n if (clack.isCancel(result)) {\n return \"\";\n }\n\n return String(result);\n },\n onProgress: (message: string) => {\n clack.log.step(pico.dim(message));\n },\n onManualCodeInput: async() => {\n const result = await clack.text({\n message: \"Paste the redirect URL from your browser:\",\n placeholder: \"http://localhost:...\",\n });\n\n if (clack.isCancel(result)) {\n return \"\";\n }\n\n return String(result);\n },\n });\n\n clack.log.success(`Authenticated with ${pico.green(providerName)}`);\n return true;\n }\n catch (error: unknown) {\n spinner.stop(`${providerName} authentication failed`);\n clack.log.warn(`OAuth error: ${error instanceof Error ? error.message : String(error)}`);\n return false;\n }\n}\n\nasync function runGenericApiKeyFlow(clack: IClackModule, pico: IPicoModule, dependencies: IDocyrusOnboardingDependencies, provider: IDocyrusProviderOption): Promise<boolean> {\n const apiKey = await clack.password({\n message: `Paste your ${provider.label} API key:`,\n mask: \"\u25CF\",\n });\n\n if (clack.isCancel(apiKey) || !apiKey) {\n return false;\n }\n\n const trimmed = String(apiKey).trim();\n if (!trimmed) {\n return false;\n }\n\n const expectedPrefixes = API_KEY_PREFIXES[provider.id];\n if (expectedPrefixes && !expectedPrefixes.some((prefix) => trimmed.startsWith(prefix))) {\n clack.log.warn(`Key doesn't start with expected prefix (${expectedPrefixes.join(\" or \")}). Saving anyway.`);\n }\n\n await saveGenericApiKey({\n ...dependencies,\n providerId: provider.id,\n apiKey: trimmed,\n });\n\n clack.log.success(`API key saved for ${pico.green(provider.label)}`);\n return true;\n}\n\nasync function runCustomOpenAiFlow(clack: IClackModule, pico: IPicoModule, dependencies: IDocyrusOnboardingDependencies): Promise<boolean> {\n const baseUrl = await clack.text({\n message: \"Base URL of your OpenAI-compatible endpoint:\",\n placeholder: \"https://my-proxy.example.com/v1\",\n validate: (value: string | undefined) => {\n const trimmed = value?.trim();\n if (!trimmed) {\n return \"Base URL is required\";\n }\n\n try {\n new URL(trimmed);\n }\n catch {\n return \"Must be a valid URL\";\n }\n },\n });\n\n if (clack.isCancel(baseUrl) || !baseUrl) {\n return false;\n }\n\n const apiKey = await clack.password({\n message: \"API key for this endpoint:\",\n mask: \"\u25CF\",\n });\n\n if (clack.isCancel(apiKey) || !apiKey) {\n return false;\n }\n\n const modelId = await clack.text({\n message: \"Model ID to use:\",\n placeholder: \"gpt-4o\",\n validate: (value: string | undefined) => value?.trim() ? undefined : \"Model ID is required\",\n });\n\n if (clack.isCancel(modelId) || !modelId) {\n return false;\n }\n\n await saveCustomOpenAiConfig({\n ...dependencies,\n apiKey: String(apiKey).trim(),\n baseUrl: String(baseUrl).trim(),\n modelId: String(modelId).trim(),\n });\n\n clack.log.success(`Custom endpoint saved: ${pico.green(String(baseUrl).trim())}`);\n clack.log.info(`Model: ${pico.cyan(String(modelId).trim())}`);\n return true;\n}\n\nasync function runAzureFlow(clack: IClackModule, pico: IPicoModule, dependencies: IDocyrusOnboardingDependencies): Promise<boolean> {\n const apiKey = await clack.password({\n message: \"Paste your Azure OpenAI API key:\",\n mask: \"\u25CF\",\n });\n\n if (clack.isCancel(apiKey) || !apiKey) {\n return false;\n }\n\n const configMode = await clack.select({\n message: \"How do you want to configure Azure OpenAI?\",\n options: [\n { value: \"base-url\", label: \"Use a base URL\" },\n { value: \"resource-name\", label: \"Use an Azure resource name\" },\n ],\n });\n\n if (clack.isCancel(configMode) || !configMode) {\n return false;\n }\n\n let baseUrl = \"\";\n if (configMode === \"base-url\") {\n const baseUrlInput = await clack.text({\n message: \"Azure OpenAI base URL:\",\n placeholder: \"https://my-resource.openai.azure.com/openai/v1\",\n validate: (value: string | undefined) => value?.trim() ? undefined : \"Base URL is required\",\n });\n\n if (clack.isCancel(baseUrlInput) || !baseUrlInput) {\n return false;\n }\n\n baseUrl = String(baseUrlInput).trim();\n }\n else {\n const resourceName = await clack.text({\n message: \"Azure resource name:\",\n placeholder: \"my-resource\",\n validate: (value: string | undefined) => value?.trim() ? undefined : \"Resource name is required\",\n });\n\n if (clack.isCancel(resourceName) || !resourceName) {\n return false;\n }\n\n baseUrl = `https://${String(resourceName).trim()}.openai.azure.com/openai/v1`;\n }\n\n const modelId = await clack.text({\n message: \"Model ID to use:\",\n placeholder: dependencies.modelIdsByProvider[\"azure-openai-responses\"]?.[0] || \"gpt-4.1\",\n validate: (value: string | undefined) => value?.trim() ? undefined : \"Model ID is required\",\n });\n\n if (clack.isCancel(modelId) || !modelId) {\n return false;\n }\n\n const deploymentName = await clack.text({\n message: `Deployment name ${pico.dim(\"(leave blank to reuse the model id)\")}:`,\n placeholder: String(modelId).trim(),\n });\n\n if (clack.isCancel(deploymentName)) {\n return false;\n }\n\n const apiVersion = await clack.text({\n message: `API version ${pico.dim(\"(leave blank to use pi's default)\")}:`,\n placeholder: \"2025-03-01-preview\",\n });\n\n if (clack.isCancel(apiVersion)) {\n return false;\n }\n\n const builtInModelIds = new Set(dependencies.modelIdsByProvider[\"azure-openai-responses\"] || []);\n await saveAzureConfig({\n ...dependencies,\n apiKey: String(apiKey).trim(),\n baseUrl,\n modelId: String(modelId).trim(),\n deploymentName: String(deploymentName || \"\").trim() || undefined,\n apiVersion: String(apiVersion || \"\").trim() || undefined,\n useCustomModel: !builtInModelIds.has(String(modelId).trim()),\n });\n\n clack.log.success(`Azure OpenAI configured for ${pico.green(String(modelId).trim())}`);\n return true;\n}\n\nasync function runBedrockFlow(clack: IClackModule, pico: IPicoModule, dependencies: IDocyrusOnboardingDependencies): Promise<boolean> {\n const authMode = await clack.select({\n message: \"How do you want to authenticate with Amazon Bedrock?\",\n options: [\n { value: \"profile\", label: \"Use an AWS profile\" },\n { value: \"access-keys\", label: \"Paste AWS access keys\" },\n ],\n });\n\n if (clack.isCancel(authMode) || !authMode) {\n return false;\n }\n\n let profile: string | undefined;\n let accessKeyId: string | undefined;\n let secretAccessKey: string | undefined;\n let sessionToken: string | undefined;\n\n if (authMode === \"profile\") {\n const profileInput = await clack.text({\n message: \"AWS profile name:\",\n placeholder: \"default\",\n validate: (value: string | undefined) => value?.trim() ? undefined : \"Profile name is required\",\n });\n\n if (clack.isCancel(profileInput) || !profileInput) {\n return false;\n }\n\n profile = String(profileInput).trim();\n }\n else {\n const accessKeyInput = await clack.password({\n message: \"AWS access key ID:\",\n mask: \"\u25CF\",\n });\n if (clack.isCancel(accessKeyInput) || !accessKeyInput) {\n return false;\n }\n\n const secretKeyInput = await clack.password({\n message: \"AWS secret access key:\",\n mask: \"\u25CF\",\n });\n if (clack.isCancel(secretKeyInput) || !secretKeyInput) {\n return false;\n }\n\n const sessionTokenInput = await clack.password({\n message: `AWS session token ${pico.dim(\"(optional)\")}:`,\n mask: \"\u25CF\",\n });\n if (clack.isCancel(sessionTokenInput)) {\n return false;\n }\n\n accessKeyId = String(accessKeyInput).trim();\n secretAccessKey = String(secretKeyInput).trim();\n sessionToken = String(sessionTokenInput || \"\").trim() || undefined;\n }\n\n const region = await clack.text({\n message: \"AWS region:\",\n placeholder: \"us-east-1\",\n validate: (value: string | undefined) => value?.trim() ? undefined : \"Region is required\",\n });\n\n if (clack.isCancel(region) || !region) {\n return false;\n }\n\n const modelId = await clack.text({\n message: \"Bedrock model ID:\",\n placeholder: dependencies.modelIdsByProvider[\"amazon-bedrock\"]?.[0] || \"anthropic.claude-3-7-sonnet-20250219-v1:0\",\n validate: (value: string | undefined) => value?.trim() ? undefined : \"Model ID is required\",\n });\n\n if (clack.isCancel(modelId) || !modelId) {\n return false;\n }\n\n await saveBedrockConfig({\n ...dependencies,\n region: String(region).trim(),\n modelId: String(modelId).trim(),\n profile,\n accessKeyId,\n secretAccessKey,\n sessionToken,\n });\n\n clack.log.success(`Amazon Bedrock configured for ${pico.green(String(modelId).trim())}`);\n return true;\n}\n\nasync function runProviderFlow(clack: IClackModule, pico: IPicoModule, dependencies: IDocyrusOnboardingDependencies, provider: IDocyrusProviderOption): Promise<boolean> {\n switch (provider.flow) {\n case \"oauth\":\n return await runOAuthFlow(clack, pico, dependencies, provider.id);\n case \"custom-openai\":\n return await runCustomOpenAiFlow(clack, pico, dependencies);\n case \"azure-openai-responses\":\n return await runAzureFlow(clack, pico, dependencies);\n case \"amazon-bedrock\":\n return await runBedrockFlow(clack, pico, dependencies);\n case \"generic-api-key\":\n default:\n return await runGenericApiKeyFlow(clack, pico, dependencies, provider);\n }\n}\n\nasync function runLogoutFlow(clack: IClackModule, pico: IPicoModule, dependencies: IDocyrusOnboardingDependencies, providerId: string): Promise<void> {\n await clearProviderConfig({\n ...dependencies,\n providerId,\n });\n clack.log.success(`Removed saved configuration for ${pico.green(getProviderLabel(providerId))}`);\n}\n\nexport async function runOnboarding(dependencies: IDocyrusOnboardingDependencies): Promise<void> {\n const [clack, pico] = await Promise.all([loadClack(), loadPico()]);\n process.stderr.write(renderDocyrusLogoPrimary());\n clack.intro(pico.bold(\"Welcome to DOCYRUS \u2014 let's get you set up\"));\n\n const existingProvider = await findExistingConfiguredProvider({\n authStorage: dependencies.authStorage,\n envStore: dependencies.envStore,\n knownProviderIds: [\n ...dependencies.browserProviders.map((provider) => provider.id),\n ...dependencies.apiKeyProviderIds,\n \"custom-openai\",\n ],\n });\n\n type IAuthOption = { value: string; label: string; hint?: string; providerId?: string };\n const authOptions: IAuthOption[] = [];\n if (existingProvider) {\n authOptions.push({\n value: \"keep\",\n label: `Keep current (${getProviderLabel(existingProvider)})`,\n hint: \"already configured\",\n providerId: existingProvider,\n });\n authOptions.push({\n value: \"logout-current\",\n label: `Remove current (${getProviderLabel(existingProvider)})`,\n hint: \"clear saved auth and config\",\n providerId: existingProvider,\n });\n }\n\n authOptions.push(\n { value: \"browser\", label: \"Sign in with your browser\", hint: \"recommended for OAuth-backed providers\" },\n { value: \"api-key\", label: \"Paste an API key\", hint: \"from your provider dashboard\" },\n { value: \"skip\", label: \"Skip for now\", hint: \"you can use /login inside DOCYRUS later\" },\n );\n\n const authMethod = await clack.select({\n message: existingProvider ? `LLM provider: ${getProviderLabel(existingProvider)} \u2014 change it?` : \"How do you want to sign in?\",\n options: authOptions.map((option) => ({\n value: option.value,\n label: option.label,\n hint: option.hint,\n })),\n });\n\n if (isCancelError(clack, authMethod) || authMethod === \"skip\") {\n clack.cancel(\"Setup skipped \u2014 you can run /login later inside DOCYRUS.\");\n return;\n }\n\n if (authMethod === \"keep\") {\n clack.log.success(`Keeping ${pico.green(getProviderLabel(existingProvider || \"\"))}`);\n clack.outro(\"DOCYRUS setup complete.\");\n return;\n }\n\n if (authMethod === \"logout-current\" && existingProvider) {\n await runLogoutFlow(clack, pico, dependencies, existingProvider);\n }\n\n let configuredProviderLabel: string | null = null;\n\n if (authMethod === \"browser\") {\n const provider = await clack.select({\n message: \"Choose provider\",\n options: getBrowserAuthProviderOptions(dependencies.browserProviders).map((providerOption) => ({\n value: providerOption.id,\n label: providerOption.label,\n hint: providerOption.hint,\n })),\n });\n\n if (!isCancelError(clack, provider) && provider) {\n const selected = getBrowserAuthProviderOptions(dependencies.browserProviders).find((item) => item.id === provider);\n if (selected && await runProviderFlow(clack, pico, dependencies, selected)) {\n configuredProviderLabel = selected.label;\n }\n }\n }\n else if (authMethod === \"api-key\") {\n const provider = await clack.select({\n message: \"Choose provider\",\n options: getApiKeyProviderOptions(dependencies.apiKeyProviderIds).map((providerOption) => ({\n value: providerOption.id,\n label: providerOption.label,\n hint: providerOption.hint,\n })),\n });\n\n if (!isCancelError(clack, provider) && provider) {\n const selected = getApiKeyProviderOptions(dependencies.apiKeyProviderIds).find((item) => item.id === provider);\n if (selected && await runProviderFlow(clack, pico, dependencies, selected)) {\n configuredProviderLabel = selected.label;\n }\n }\n }\n\n if (configuredProviderLabel) {\n clack.outro(`DOCYRUS is ready. Provider configured: ${pico.green(configuredProviderLabel)}`);\n }\n else {\n clack.outro(\"DOCYRUS setup ended without saving a provider.\");\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,oFAAAA,UAAAC,SAAA;AAAA;AAAA,QAAIC,KAAI,WAAW,CAAC;AAApB,QAAuB,OAAOA,GAAE,QAAQ,CAAC;AAAzC,QAA4C,MAAMA,GAAE,OAAO,CAAC;AAC5D,QAAI,mBACH,EAAE,CAAC,CAAC,IAAI,YAAY,KAAK,SAAS,YAAY,OAC7C,CAAC,CAAC,IAAI,eAAe,KAAK,SAAS,SAAS,KAAKA,GAAE,aAAa,YAAaA,GAAE,UAAU,CAAC,GAAG,SAAS,IAAI,SAAS,UAAW,CAAC,CAAC,IAAI;AAEtI,QAAI,YAAY,CAAC,MAAM,OAAO,UAAU,SACvC,WAAS;AACR,UAAI,SAAS,KAAK,OAAO,QAAQ,OAAO,QAAQ,OAAO,KAAK,MAAM;AAClE,aAAO,CAAC,QAAQ,OAAO,aAAa,QAAQ,OAAO,SAAS,KAAK,IAAI,QAAQ,OAAO,SAAS;AAAA,IAC9F;AAED,QAAI,eAAe,CAAC,QAAQ,OAAO,SAAS,UAAU;AACrD,UAAI,SAAS,IAAI,SAAS;AAC1B,SAAG;AACF,kBAAU,OAAO,UAAU,QAAQ,KAAK,IAAI;AAC5C,iBAAS,QAAQ,MAAM;AACvB,gBAAQ,OAAO,QAAQ,OAAO,MAAM;AAAA,MACrC,SAAS,CAAC;AACV,aAAO,SAAS,OAAO,UAAU,MAAM;AAAA,IACxC;AAEA,QAAI,eAAe,CAAC,UAAU,qBAAqB;AAClD,UAAI,IAAI,UAAU,YAAY,MAAM;AACpC,aAAO;AAAA,QACN,kBAAkB;AAAA,QAClB,OAAO,EAAE,WAAW,SAAS;AAAA,QAC7B,MAAM,EAAE,WAAW,YAAY,iBAAiB;AAAA,QAChD,KAAK,EAAE,WAAW,YAAY,iBAAiB;AAAA,QAC/C,QAAQ,EAAE,WAAW,UAAU;AAAA,QAC/B,WAAW,EAAE,WAAW,UAAU;AAAA,QAClC,SAAS,EAAE,WAAW,UAAU;AAAA,QAChC,QAAQ,EAAE,WAAW,UAAU;AAAA,QAC/B,eAAe,EAAE,WAAW,UAAU;AAAA,QAEtC,OAAO,EAAE,YAAY,UAAU;AAAA,QAC/B,KAAK,EAAE,YAAY,UAAU;AAAA,QAC7B,OAAO,EAAE,YAAY,UAAU;AAAA,QAC/B,QAAQ,EAAE,YAAY,UAAU;AAAA,QAChC,MAAM,EAAE,YAAY,UAAU;AAAA,QAC9B,SAAS,EAAE,YAAY,UAAU;AAAA,QACjC,MAAM,EAAE,YAAY,UAAU;AAAA,QAC9B,OAAO,EAAE,YAAY,UAAU;AAAA,QAC/B,MAAM,EAAE,YAAY,UAAU;AAAA,QAE9B,SAAS,EAAE,YAAY,UAAU;AAAA,QACjC,OAAO,EAAE,YAAY,UAAU;AAAA,QAC/B,SAAS,EAAE,YAAY,UAAU;AAAA,QACjC,UAAU,EAAE,YAAY,UAAU;AAAA,QAClC,QAAQ,EAAE,YAAY,UAAU;AAAA,QAChC,WAAW,EAAE,YAAY,UAAU;AAAA,QACnC,QAAQ,EAAE,YAAY,UAAU;AAAA,QAChC,SAAS,EAAE,YAAY,UAAU;AAAA,QAEjC,aAAa,EAAE,YAAY,UAAU;AAAA,QACrC,WAAW,EAAE,YAAY,UAAU;AAAA,QACnC,aAAa,EAAE,YAAY,UAAU;AAAA,QACrC,cAAc,EAAE,YAAY,UAAU;AAAA,QACtC,YAAY,EAAE,YAAY,UAAU;AAAA,QACpC,eAAe,EAAE,YAAY,UAAU;AAAA,QACvC,YAAY,EAAE,YAAY,UAAU;AAAA,QACpC,aAAa,EAAE,YAAY,UAAU;AAAA,QAErC,eAAe,EAAE,aAAa,UAAU;AAAA,QACxC,aAAa,EAAE,aAAa,UAAU;AAAA,QACtC,eAAe,EAAE,aAAa,UAAU;AAAA,QACxC,gBAAgB,EAAE,aAAa,UAAU;AAAA,QACzC,cAAc,EAAE,aAAa,UAAU;AAAA,QACvC,iBAAiB,EAAE,aAAa,UAAU;AAAA,QAC1C,cAAc,EAAE,aAAa,UAAU;AAAA,QACvC,eAAe,EAAE,aAAa,UAAU;AAAA,MACzC;AAAA,IACD;AAEA,IAAAD,QAAO,UAAU,aAAa;AAC9B,IAAAA,QAAO,QAAQ,eAAe;AAAA;AAAA;;;AC1E9B;AAAA,mFAAAE,UAAAC,SAAA;AAAA;AAEA,QAAM,MAAM;AACZ,QAAM,MAAM,GAAG,GAAG;AAClB,QAAM,OAAO;AAEb,QAAM,SAAS;AAAA,MACb,GAAGC,IAAGC,IAAG;AACP,YAAI,CAACA,GAAG,QAAO,GAAG,GAAG,GAAGD,KAAI,CAAC;AAC7B,eAAO,GAAG,GAAG,GAAGC,KAAI,CAAC,IAAID,KAAI,CAAC;AAAA,MAChC;AAAA,MACA,KAAKA,IAAGC,IAAG;AACT,YAAI,MAAM;AAEV,YAAID,KAAI,EAAG,QAAO,GAAG,GAAG,GAAG,CAACA,EAAC;AAAA,iBACpBA,KAAI,EAAG,QAAO,GAAG,GAAG,GAAGA,EAAC;AAEjC,YAAIC,KAAI,EAAG,QAAO,GAAG,GAAG,GAAG,CAACA,EAAC;AAAA,iBACpBA,KAAI,EAAG,QAAO,GAAG,GAAG,GAAGA,EAAC;AAEjC,eAAO;AAAA,MACT;AAAA,MACA,IAAI,CAAC,QAAQ,MAAM,GAAG,GAAG,GAAG,KAAK;AAAA,MACjC,MAAM,CAAC,QAAQ,MAAM,GAAG,GAAG,GAAG,KAAK;AAAA,MACnC,SAAS,CAAC,QAAQ,MAAM,GAAG,GAAG,GAAG,KAAK;AAAA,MACtC,UAAU,CAAC,QAAQ,MAAM,GAAG,GAAG,GAAG,KAAK;AAAA,MACvC,UAAU,CAAC,QAAQ,MAAM,GAAG,GAAG,IAAI,OAAO,KAAK;AAAA,MAC/C,UAAU,CAAC,QAAQ,MAAM,GAAG,GAAG,IAAI,OAAO,KAAK;AAAA,MAC/C,MAAM,GAAG,GAAG;AAAA,MACZ,MAAM,GAAG,GAAG;AAAA,MACZ,MAAM,GAAG,GAAG;AAAA,MACZ,MAAM,GAAG,GAAG;AAAA,MACZ,SAAS,GAAG,GAAG;AAAA,IACjB;AAEA,QAAM,SAAS;AAAA,MACb,IAAI,CAAC,QAAQ,MAAM,GAAG,GAAG,IAAI,OAAO,KAAK;AAAA,MACzC,MAAM,CAAC,QAAQ,MAAM,GAAG,GAAG,IAAI,OAAO,KAAK;AAAA,IAC7C;AAEA,QAAM,QAAQ;AAAA,MACZ,QAAQ,GAAG,GAAG;AAAA,MACd,IAAI,CAAC,QAAQ,MAAM,GAAG,GAAG,KAAK,OAAO,KAAK;AAAA,MAC1C,MAAM,CAAC,QAAQ,MAAM,GAAG,GAAG,IAAI,OAAO,KAAK;AAAA,MAC3C,MAAM,GAAG,GAAG;AAAA,MACZ,SAAS,GAAG,GAAG;AAAA,MACf,WAAW,GAAG,GAAG;AAAA,MACjB,MAAM,OAAO;AACX,YAAI,QAAQ;AACZ,iBAAS,IAAI,GAAG,IAAI,OAAO;AACzB,mBAAS,KAAK,QAAQ,IAAI,QAAQ,IAAI,OAAO,GAAG,IAAI;AACtD,YAAI;AACF,mBAAS,OAAO;AAClB,eAAO;AAAA,MACT;AAAA,IACF;AAEA,IAAAF,QAAO,UAAU,EAAE,QAAQ,QAAQ,OAAO,KAAK;AAAA;AAAA;;;ACzDhC,SAASG,GAAU,EAAC,WAAAC,KAAY,MAAK,IAAI,CAAA,GAAI;AAG3D,QAAMC,IAAU,CACf,2JACA,0DACF,EAAG,KAAK,GAAG;AAEV,SAAO,IAAI,OAAOA,GAASD,KAAY,SAAY,GAAG;AACvD;ACLe,SAASE,EAAUC,IAAQ;AACzC,MAAI,OAAOA,MAAW,SACrB,OAAM,IAAI,UAAU,gCAAgC,OAAOA,EAAM,IAAI;AAMtE,SAAOA,GAAO,QAAQC,IAAO,EAAE;AAChC;AAAA,SAAA,EAAAC,IAAA;AAAA,SAAAA,MAAAA,GAAA,cAAA,OAAA,UAAA,eAAA,KAAAA,IAAA,SAAA,IAAAA,GAAA,UAAAA;AAAA;AGTe,SAASC,EAAYH,IAAQI,KAAU,CAAA,GAAI;AAYzD,MAXI,OAAOJ,MAAW,YAAYA,GAAO,WAAW,MAIpDI,KAAU,EACT,mBAAmB,MACnB,GAAGA,GACL,GAECJ,KAASD,EAAUC,EAAM,GAErBA,GAAO,WAAW,GACrB,QAAO;AAGRA,EAAAA,KAASA,GAAO,QAAQK,GAAY,GAAE,IAAI;AAE1C,QAAMC,IAA0BF,GAAQ,oBAAoB,IAAI;AAChE,MAAIG,KAAQ;AAEZ,aAAWC,KAAaR,IAAQ;AAC/B,UAAMS,IAAYD,EAAU,YAAY,CAAC;AAQzC,QALIC,KAAa,MAASA,KAAa,OAAQA,KAAa,OAKxDA,KAAa,OAASA,KAAa,IACtC;AAID,YADaC,GAAe,eAAeF,CAAS,GACxC;MACX,KAAK;MACL,KAAK;AACJD,QAAAA,MAAS;AACT;MACD,KAAK;AACJA,QAAAA,MAASD;AACT;MACD;AACCC,QAAAA,MAAS;IACV;EACD;AAED,SAAOA;AACR;ACmBA,SAASI,KAAiB;AACzB,QAAMC,KAAQ,oBAAI;AAElB,aAAW,CAACC,IAAWC,CAAK,KAAK,OAAO,QAAQC,CAAM,GAAG;AACxD,eAAW,CAACC,IAAWC,CAAK,KAAK,OAAO,QAAQH,CAAK,EACpDC,GAAOC,EAAS,IAAI,EACnB,MAAM,QAAUC,EAAM,CAAC,CAAC,KACxB,OAAO,QAAUA,EAAM,CAAC,CAAC,IAC7B,GAEGH,EAAME,EAAS,IAAID,EAAOC,EAAS,GAEnCJ,GAAM,IAAIK,EAAM,CAAC,GAAGA,EAAM,CAAC,CAAC;AAG7B,WAAO,eAAeF,GAAQF,IAAW,EACxC,OAAOC,GACP,YAAY,MACf,CAAG;EACD;AAED,SAAA,OAAO,eAAeC,GAAQ,SAAS,EACtC,OAAOH,IACP,YAAY,MACd,CAAE,GAEDG,EAAO,MAAM,QAAQ,YACrBA,EAAO,QAAQ,QAAQ,YAEvBA,EAAO,MAAM,OAAOG,EAAAA,GACpBH,EAAO,MAAM,UAAUI,EAAAA,GACvBJ,EAAO,MAAM,UAAUK,EAAAA,GACvBL,EAAO,QAAQ,OAAOG,EAAWG,CAAsB,GACvDN,EAAO,QAAQ,UAAUI,EAAYE,CAAsB,GAC3DN,EAAO,QAAQ,UAAUK,EAAYC,CAAsB,GAG3D,OAAO,iBAAiBN,GAAQ,EAC/B,cAAc,EACb,OAAO,CAACO,IAAKC,GAAOC,OAGfF,OAAQC,KAASA,MAAUC,KAC1BF,KAAM,IACF,KAGJA,KAAM,MACF,MAGD,KAAK,OAAQA,KAAM,KAAK,MAAO,EAAE,IAAI,MAGtC,KACH,KAAK,KAAK,MAAMA,KAAM,MAAM,CAAC,IAC7B,IAAI,KAAK,MAAMC,IAAQ,MAAM,CAAC,IAC/B,KAAK,MAAMC,KAAO,MAAM,CAAC,GAE7B,YAAY,MACZ,GACD,UAAU,EACT,OAAOC,CAAAA,OAAO;AACb,UAAMC,IAAU,yBAAyB,KAAKD,GAAI,SAAS,EAAE,CAAC;AAC9D,QAAI,CAACC,EACJ,QAAO,CAAC,GAAG,GAAG,CAAC;AAGhB,QAAI,CAACC,EAAW,IAAID;AAEhBC,IAAAA,GAAY,WAAW,MAC1BA,KAAc,CAAC,GAAGA,EAAW,EAAE,IAAInB,OAAaA,IAAYA,CAAS,EAAE,KAAK,EAAE;AAG/E,UAAMoB,IAAU,OAAO,SAASD,IAAa,EAAE;AAE/C,WAAO,CAELC,KAAW,KAAM,KACjBA,KAAW,IAAK,KACjBA,IAAU,GAEf;EACI,GACD,YAAY,MACZ,GACD,cAAc,EACb,OAAOH,CAAAA,OAAOV,EAAO,aAAa,GAAGA,EAAO,SAASU,EAAG,CAAC,GACzD,YAAY,MACZ,GACD,eAAe,EACd,OAAOI,CAAAA,OAAQ;AACd,QAAIA,KAAO,EACV,QAAO,KAAKA;AAGb,QAAIA,KAAO,GACV,QAAO,MAAMA,KAAO;AAGrB,QAAIP,GACAC,IACAC;AAEJ,QAAIK,MAAQ,IACXP,OAASO,KAAO,OAAO,KAAM,KAAK,KAClCN,KAAQD,GACRE,IAAOF;SACD;AACNO,MAAAA,MAAQ;AAER,YAAMC,KAAYD,KAAO;AAEzBP,UAAM,KAAK,MAAMO,KAAO,EAAE,IAAI,GAC9BN,KAAQ,KAAK,MAAMO,KAAY,CAAC,IAAI,GACpCN,IAAQM,KAAY,IAAK;IACzB;AAED,UAAMC,IAAQ,KAAK,IAAIT,GAAKC,IAAOC,CAAI,IAAI;AAE3C,QAAIO,MAAU,EACb,QAAO;AAIR,QAAIC,KAAS,MAAO,KAAK,MAAMR,CAAI,KAAK,IAAM,KAAK,MAAMD,EAAK,KAAK,IAAK,KAAK,MAAMD,CAAG;AAEtF,WAAIS,MAAU,MACbC,MAAU,KAGJA;EACP,GACD,YAAY,MACZ,GACD,WAAW,EACV,OAAO,CAACV,IAAKC,GAAOC,OAAST,EAAO,cAAcA,EAAO,aAAaO,IAAKC,GAAOC,EAAI,CAAC,GACvF,YAAY,MACZ,GACD,WAAW,EACV,OAAOC,CAAAA,OAAOV,EAAO,cAAcA,EAAO,aAAaU,EAAG,CAAC,GAC3D,YAAY,MACZ,EACH,CAAE,GAEMV;AACR;ACZe,SAASkB,EAASjC,IAAQkC,IAAS9B,GAAS;AAC1D,SAAO,OAAOJ,EAAM,EAClB,UAAW,EACX,QAAQ,SAAS;CAAI,EACrB,MAAM;CAAI,EACV,IAAImC,CAAAA,OAAQC,GAAKD,IAAMD,IAAS9B,CAAO,CAAC,EACxC,KAAK;CAAI;AACZ;ACnLgB,SAAAiC,GAAeC,IAAwB;AACtD,aAAWC,MAAQD,IAAS;AAC3B,UAAME,IAAMD;AACZ,QAAI,CAAC,OAAO,OAAOD,IAASE,CAAG,EAAG;AAClC,UAAMT,KAAQO,GAAQE,CAAG;AAEzB,YAAQA,GAAAA;MACP,KAAK,WAAW;AACf,mBAAWC,KAASV,GACd,QAAO,OAAOA,IAAOU,CAAK,MAC1BC,EAAS,QAAQ,IAAID,CAAK,KAC9BC,EAAS,QAAQ,IAAID,GAAOV,GAAMU,CAAK,CAAC;AAG1C;MACD;IACD;EACD;AACD;AAQgB,SAAAE,EAAYH,IAAyCI,IAAgB;AACpF,MAAI,OAAOJ,MAAQ,SAClB,QAAOE,EAAS,QAAQ,IAAIF,EAAG,MAAMI;AAGtC,aAAWb,KAASS,GACnB,KAAIT,MAAU,UACVY,EAAYZ,GAAOa,EAAM,EAC5B,QAAO;AAGT,SAAO;AACR;ACxEgB,SAAAC,GAAUC,IAAWC,IAAW;AAC/C,MAAID,OAAMC,GAAG;AAEb,QAAMC,IAASF,GAAE,MAAM;CAAI,GACrBG,KAASF,GAAE,MAAM;CAAI,GACrBG,IAAiB,CAAA;AAEvB,WAASC,IAAI,GAAGA,IAAI,KAAK,IAAIH,EAAO,QAAQC,GAAO,MAAM,GAAGE,IACvDH,GAAOG,CAAC,MAAMF,GAAOE,CAAC,KAAGD,EAAK,KAAKC,CAAC;AAGzC,SAAOD;AACR;ACEgB,SAAAE,GAASrB,IAAiC;AACzD,SAAOA,OAAUsB;AAClB;AAEO,SAASC,EAAWC,IAAiBxB,IAAgB;AAC3D,QAAMoB,IAAII;AAENJ,IAAE,SAAOA,EAAE,WAAWpB,EAAK;AAChC;AAAA,SAEgByB,GAAM,EACrB,OAAAD,KAAQE,oBAAAA,OACR,QAAAC,KAASC,oBAAAA,QACT,WAAAC,IAAY,MACZ,YAAAC,KAAa,KACd,IAAI,CAAA,GAAI;AACP,QAAMC,IAAc,kBAAgB,EACnC,OAAAP,IACA,QAAAG,IACA,QAAQ,IACR,SAAS,EACV,CAAC;AACDK,EAAS,qBAAmBR,IAAOO,CAAE,GACjCP,GAAM,SAAOA,GAAM,WAAW,IAAI;AAEtC,QAAMS,IAAQ,CAACC,IAAc,EAAE,MAAAC,IAAM,UAAAC,EAAS,MAAW;AACxD,UAAMC,IAAM,OAAOH,EAAI;AACvB,QAAItB,EAAY,CAACyB,GAAKF,IAAMC,CAAQ,GAAG,QAAQ,GAAG;AAC7CN,MAAAA,MAAYH,GAAO,MAAMW,kBAAAA,OAAO,IAAI,GACxC,QAAQ,KAAK,CAAC;AACd;IACD;AACA,QAAI,CAACT,EAAW;AAChB,UAAMU,IAAKJ,OAAS,WAAW,IAAI,IAC7BK,KAAKL,OAAS,WAAW,KAAK;AAEpCH,IAAS,aAAWL,IAAQY,GAAIC,IAAI,MAAM;AACzCR,MAAS,YAAUL,IAAQ,GAAG,MAAM;AACnCH,QAAAA,GAAM,KAAK,YAAYS,CAAK;MAC7B,CAAC;IACF,CAAC;EACF;AACA,SAAIH,MAAYH,GAAO,MAAMW,kBAAAA,OAAO,IAAI,GACxCd,GAAM,KAAK,YAAYS,CAAK,GAErB,MAAM;AACZT,IAAAA,GAAM,IAAI,YAAYS,CAAK,GACvBH,MAAYH,GAAO,MAAMW,kBAAAA,OAAO,IAAI,GAGpCd,GAAM,SAAS,CAACiB,MAAWjB,GAAM,WAAW,KAAK,GAGrDO,EAAG,WAAW,OACdA,EAAG,MAAA;EACJ;AACD;4GRpEM7D,IAWN,GCwSS+B,IAAAA,ICnTT3B,IAGA,IELMgB,GAEAH,GAEAC,GAEAC,GAEAL,GA4DO0D,IACAC,IAuJPC,ICxNAC,GAKAC,IACAC,GACAC,GACAC,IACAC,GACAC,GAEAC,GACAC,GAIAC,IAIAC,GAmDAC,IAwBAnD,ICpGAoD,IASO9C,GECP8B,IAEOnB,GCZbN,IAAA0C,IAAAC,GAuBqBC,GCfAC,ICRrBH,IAAAI,IAAAC,GAAAC,GAAAC,GAAAC,IAAAC,IAAAC,GAAAA,ICAAC,IAAAtD,IAAAkD,GAAA,IA2DA,IAAA,IAAA,GCrDqBK,IA0BrB,IAAA,IAAA,GC1BqBC,IAkCrB,IAAA,IAAA,GCnCqBC,ICGAC;;;;;;;;;;AhBNrB,IAAMvG,KAAQL,GAAS;AAWvB,IAAA,IAAA,EAAA,SAAA,CAAA,EAAA;AAAA,KAAA,SAAAM,IAAA;ACbA,UAAIuG,KAAM,CAAA;AAKRC,MAAAA,GAAAA,UAAiBD,IAGnBA,GAAI,iBAAiB,SAASjG,IAAW;AACvC,YAAImG,IAAInG,GAAU,WAAW,CAAC,GAC1BoG,IAAKpG,GAAU,UAAU,IAAKA,GAAU,WAAW,CAAC,IAAI,GACxDC,KAAYkG;AAQhB,eAPK,SAAUA,KAAKA,KAAK,SAAY,SAAUC,KAAKA,KAAK,UACvDD,KAAK,MACLC,KAAK,MACLnG,KAAakG,KAAK,KAAMC,GACxBnG,MAAa,QAGAA,MAAV,SACA,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,QAChC,MAEMA,MAAV,QACA,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,QAChC,MAEJ,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,SACpC,UAAWA,MAAaA,MAAa,UACrC,UAAWA,MAAaA,MAAa,UACrC,UAAWA,MAAaA,MAAa,UACrC,UAAWA,MAAaA,MAAa,UACrC,UAAWA,MAAaA,MAAa,UACrC,UAAWA,MAAaA,MAAa,UACrC,UAAWA,MAAaA,MAAa,UACrC,UAAWA,MAAaA,MAAa,SACjC,MAEJ,MAAUA,MAAaA,MAAa,OACpC,OAAUA,MAAaA,MAAa,OACpC,OAAUA,MAAaA,MAAa,OAC1BA,MAAV,OACUA,MAAV,OACA,SAAUA,MAAaA,MAAa,SACpC,SAAUA,MAAaA,MAAa,QAChC,OAEMA,MAAV,OACUA,MAAV,OACA,OAAUA,MAAaA,MAAa,OAC1BA,MAAV,OACA,OAAUA,MAAaA,MAAa,OACpC,OAAUA,MAAaA,MAAa,OACpC,OAAUA,MAAaA,MAAa,OACpC,OAAUA,MAAaA,MAAa,OAC1BA,MAAV,OACUA,MAAV,OACA,OAAUA,MAAaA,MAAa,OACpC,OAAUA,MAAaA,MAAa,OAC1BA,MAAV,OACA,OAAUA,MAAaA,MAAa,OACpC,OAAUA,MAAaA,MAAa,OAC1BA,MAAV,OACA,OAAUA,MAAaA,MAAa,OACpC,OAAUA,MAAaA,MAAa,OAC1BA,MAAV,OACUA,MAAV,OACUA,MAAV,OACUA,MAAV,OACUA,MAAV,OACUA,MAAV,OACA,OAAUA,MAAaA,MAAa,OAC1BA,MAAV,OACA,OAAUA,MAAaA,MAAa,OAC1BA,MAAV,OACA,OAAUA,MAAaA,MAAa,OAC1BA,MAAV,OACA,OAAUA,MAAaA,MAAa,OAC1BA,MAAV,OACA,OAAUA,MAAaA,MAAa,OACpC,OAAUA,MAAaA,MAAa,OAC1BA,MAAV,OACUA,MAAV,OACUA,MAAV,OACUA,MAAV,OACUA,MAAV,OACUA,MAAV,OACUA,MAAV,OACUA,MAAV,OACUA,MAAV,OACUA,MAAV,OACUA,MAAV,OACUA,MAAV,OACUA,MAAV,OACA,OAAUA,MAAaA,MAAa,OAC1BA,MAAV,OACUA,MAAV,OACA,OAAUA,MAAaA,MAAa,OAC1BA,MAAV,OACUA,MAAV,OACA,OAAUA,MAAaA,MAAa,OACpC,OAAUA,MAAaA,MAAa,OACpC,OAAUA,MAAaA,MAAa,OACpC,OAAUA,MAAaA,MAAa,OACpC,OAAUA,MAAaA,MAAa,OAC1BA,MAAV,QACA,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACA,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACUA,MAAV,QACA,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QACpC,QAAUA,MAAaA,MAAa,QAC1BA,MAAV,QACA,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",
|
|
6
6
|
"names": ["exports", "module", "p", "exports", "module", "x", "y", "ansiRegex", "onlyFirst", "pattern", "stripAnsi", "string", "regex", "e", "stringWidth", "options", "emojiRegex", "ambiguousCharacterWidth", "width", "character", "codePoint", "eastAsianWidth", "assembleStyles", "codes", "groupName", "group", "styles", "styleName", "style", "wrapAnsi16", "wrapAnsi256", "wrapAnsi16m", "ANSI_BACKGROUND_OFFSET", "red", "green", "blue", "hex", "matches", "colorString", "integer", "code", "remainder", "value", "result", "wrapAnsi", "columns", "line", "exec", "updateSettings", "updates", "_key", "key", "alias", "settings", "isActionKey", "action", "diffLines", "a", "b", "aLines", "bLines", "diff", "i", "isCancel", "CANCEL_SYMBOL", "setRawMode", "input", "block", "stdin", "output", "stdout", "overwrite", "hideCursor", "rl", "readline", "clear", "data", "name", "sequence", "str", "cursor", "dx", "dy", "isWindows", "foregroundColorNames", "backgroundColorNames", "ansiStyles", "ESCAPES", "END_CODE", "ANSI_ESCAPE_BELL", "ANSI_CSI", "ANSI_OSC", "ANSI_SGR_TERMINATOR", "ANSI_ESCAPE_LINK", "wrapAnsiCode", "wrapAnsiHyperlink", "wordLengths", "wrapWord", "stringVisibleTrimSpacesRight", "actions", "v", "s", "Prompt", "ConfirmPrompt", "g", "n", "c", "l", "h", "p", "_selectableGroups", "o", "PasswordPrompt", "SelectPrompt", "SelectKeyPrompt", "TextPrompt", "eaw", "module", "x", "y", "stringToArray", "characters", "len", "text", "start", "end", "eawLen", "chars", "char", "charLen", "offset", "uri", "rows", "word", "isInsideEscape", "isInsideLinkEscape", "visible", "index", "characterLength", "words", "last", "returnValue", "escapeCode", "escapeUrl", "lengths", "rowLength", "remainingColumns", "breaksStartingThisLine", "row", "pre", "groups", "t", "trackValue", "__publicField", "render", "signal", "opts", "event", "params", "cb", "cbs", "cleanup", "subscriber", "resolve", "reject", "sink", "Writable", "chunk", "encoding", "done", "problem", "lines", "wrap", "frame", "diffLine", "erase", "newLines", "confirm", "__privateAdd", "__privateSet", "option", "opt", "__privateGet", "currentIsGroup", "item", "groupedItems", "selected", "allSelected", "u", "mask", "color", "s1", "s2", "keys", "initial", "s3", "isUnicodeSupported", "process", "unicode", "s", "S_STEP_ACTIVE", "S_STEP_CANCEL", "S_STEP_ERROR", "S_STEP_SUBMIT", "S_BAR_START", "S_BAR", "S_BAR_END", "S_RADIO_ACTIVE", "S_RADIO_INACTIVE", "S_CHECKBOX_ACTIVE", "S_CHECKBOX_SELECTED", "S_CHECKBOX_INACTIVE", "S_PASSWORD_MASK", "S_BAR_H", "S_CORNER_TOP_RIGHT", "S_CONNECT_LEFT", "S_CORNER_BOTTOM_RIGHT", "S_INFO", "S_SUCCESS", "S_WARN", "S_ERROR", "symbol", "limitOptions", "text", "password", "confirm", "select", "selectKey", "multiselect", "groupMultiselect", "note", "cancel", "intro", "outro", "log", "prefix", "stream", "spinner", "group", "tasks", "c", "fallback", "state", "color", "params", "cursor", "options", "style", "paramMaxItems", "outputMaxItems", "maxItems", "slidingWindowLocation", "shouldRenderTopEllipsis", "shouldRenderBottomEllipsis", "option", "i", "arr", "isTopLimit", "isBottomLimit", "opts", "TextPrompt", "title", "placeholder", "value", "PasswordPrompt", "masked", "active", "inactive", "ConfirmPrompt", "opt", "label", "SelectPrompt", "item", "SelectKeyPrompt", "MultiSelectPrompt", "selected", "styleOption", "footer", "ln", "selectableGroups", "isItem", "next", "isLast", "selectedCheckbox", "unselectedCheckbox", "GroupMultiSelectPrompt", "message", "lines", "titleLen", "strip", "len", "sum", "line", "msg", "parts", "firstLine", "iterable", "lineWidth", "chunk", "chunkLen", "indicator", "frames", "delay", "isCI", "unblock", "loop", "isSpinnerActive", "_message", "_prevMessage", "_origin", "handleExit", "code", "stop", "errorEventHandler", "signalEventHandler", "registerHooks", "clearHooks", "clearPrevMessage", "prevLines", "erase", "parseMessage", "formatTimer", "origin", "duration", "min", "secs", "start", "block", "frameIndex", "indicatorTimer", "frame", "loadingDots", "step", "prompts", "results", "promptNames", "name", "prompt", "result", "e", "isCancel", "task", "import_node_path", "import_picocolors", "import_promises", "import_node_path", "createDefaultState", "b", "provider", "resolvePath", "picocolors"]
|
|
7
7
|
}
|