wechat-ai 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +55 -3
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -41,6 +41,53 @@ var HELP = `
|
|
|
41
41
|
/model deepseek \u5207\u6362\u5230 DeepSeek
|
|
42
42
|
/help \u663E\u793A\u5E2E\u52A9
|
|
43
43
|
`;
|
|
44
|
+
function printBanner(defaultProvider) {
|
|
45
|
+
const c = {
|
|
46
|
+
reset: "\x1B[0m",
|
|
47
|
+
bold: "\x1B[1m",
|
|
48
|
+
dim: "\x1B[2m",
|
|
49
|
+
green: "\x1B[32m",
|
|
50
|
+
cyan: "\x1B[36m",
|
|
51
|
+
gray: "\x1B[90m",
|
|
52
|
+
bgGray: "\x1B[48;5;236m",
|
|
53
|
+
white: "\x1B[97m"
|
|
54
|
+
};
|
|
55
|
+
const title = `${c.bold}${c.white} Wechat AI ${c.reset}${c.dim}v${VERSION}${c.reset}`;
|
|
56
|
+
const welcome = `${c.white}Welcome!${c.reset}`;
|
|
57
|
+
const bot = [
|
|
58
|
+
`${c.green} \u256D\u2500\u2500\u2500\u256E${c.reset}`,
|
|
59
|
+
`${c.green} \u2502\xB0 \xB0\u2502${c.reset}`,
|
|
60
|
+
`${c.green} \u2570\u2500\u222A\u2500\u256F${c.reset}`
|
|
61
|
+
];
|
|
62
|
+
const info = `${c.dim}model: ${defaultProvider} \xB7 type /help in chat${c.reset}`;
|
|
63
|
+
const boxW = 40;
|
|
64
|
+
const h = "\u2500".repeat(boxW - 2);
|
|
65
|
+
const displayWidth = (s) => {
|
|
66
|
+
const stripped = s.replace(/\x1b\[[0-9;]*m/g, "");
|
|
67
|
+
let w = 0;
|
|
68
|
+
for (const ch of stripped) {
|
|
69
|
+
const code = ch.codePointAt(0);
|
|
70
|
+
w += code >= 11904 && code <= 40959 || code >= 63744 && code <= 64255 || code >= 65072 && code <= 65103 || code >= 65280 && code <= 65376 ? 2 : 1;
|
|
71
|
+
}
|
|
72
|
+
return w;
|
|
73
|
+
};
|
|
74
|
+
const pad = (s) => {
|
|
75
|
+
const space = boxW - 2 - displayWidth(s);
|
|
76
|
+
return `${c.gray}\u2502${c.reset}${s}${" ".repeat(Math.max(0, space))}${c.gray}\u2502${c.reset}`;
|
|
77
|
+
};
|
|
78
|
+
console.log();
|
|
79
|
+
console.log(` ${c.gray}\u256D${h}\u256E${c.reset}`);
|
|
80
|
+
console.log(` ${pad(` ${title} `)}`);
|
|
81
|
+
console.log(` ${c.gray}\u2502${c.reset}${" ".repeat(boxW - 2)}${c.gray}\u2502${c.reset}`);
|
|
82
|
+
console.log(` ${pad(` ${welcome}`)}`);
|
|
83
|
+
for (const line of bot) {
|
|
84
|
+
console.log(` ${pad(` ${line}`)}`);
|
|
85
|
+
}
|
|
86
|
+
console.log(` ${c.gray}\u2502${c.reset}${" ".repeat(boxW - 2)}${c.gray}\u2502${c.reset}`);
|
|
87
|
+
console.log(` ${pad(` ${info}`)}`);
|
|
88
|
+
console.log(` ${c.gray}\u2570${h}\u256F${c.reset}`);
|
|
89
|
+
console.log();
|
|
90
|
+
}
|
|
44
91
|
async function main() {
|
|
45
92
|
const args = process.argv.slice(2);
|
|
46
93
|
const command = args[0];
|
|
@@ -93,10 +140,15 @@ async function main() {
|
|
|
93
140
|
}
|
|
94
141
|
case "update": {
|
|
95
142
|
const { execSync } = await import("child_process");
|
|
96
|
-
console.log(
|
|
143
|
+
console.log(`\u6B63\u5728\u66F4\u65B0 wechat-ai... (\u5F53\u524D v${VERSION})`);
|
|
97
144
|
try {
|
|
98
145
|
execSync("npm i -g wechat-ai@latest", { stdio: "inherit" });
|
|
99
|
-
|
|
146
|
+
let newVersion = "latest";
|
|
147
|
+
try {
|
|
148
|
+
newVersion = execSync("npm info wechat-ai version", { encoding: "utf-8" }).trim();
|
|
149
|
+
} catch {
|
|
150
|
+
}
|
|
151
|
+
console.log(`\x1B[32m\u2713\x1B[0m \u66F4\u65B0\u5B8C\u6210 v${VERSION} \u2192 v${newVersion}`);
|
|
100
152
|
} catch {
|
|
101
153
|
console.error("\x1B[31m\u2717\x1B[0m \u66F4\u65B0\u5931\u8D25\uFF0C\u8BF7\u624B\u52A8\u6267\u884C: npm i -g wechat-ai@latest");
|
|
102
154
|
process.exit(1);
|
|
@@ -115,6 +167,7 @@ async function main() {
|
|
|
115
167
|
break;
|
|
116
168
|
}
|
|
117
169
|
default: {
|
|
170
|
+
printBanner(config.defaultProvider);
|
|
118
171
|
const gateway = new Gateway(config);
|
|
119
172
|
gateway.init();
|
|
120
173
|
const shutdown = async () => {
|
|
@@ -123,7 +176,6 @@ async function main() {
|
|
|
123
176
|
};
|
|
124
177
|
process.on("SIGINT", shutdown);
|
|
125
178
|
process.on("SIGTERM", shutdown);
|
|
126
|
-
log.info(`wechat-ai v${VERSION}`);
|
|
127
179
|
await gateway.start();
|
|
128
180
|
break;
|
|
129
181
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { readFileSync } from \"node:fs\";\nimport { fileURLToPath } from \"node:url\";\nimport { dirname, join } from \"node:path\";\nimport { loadConfig, saveConfig } from \"./config.js\";\nimport { Gateway } from \"./gateway.js\";\nimport { setLogLevel, createLogger } from \"./logger.js\";\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\nconst pkg = JSON.parse(readFileSync(join(__dirname, \"..\", \"package.json\"), \"utf-8\"));\nconst VERSION = pkg.version as string;\n\nconst log = createLogger(\"cli\");\n\nconst HELP = `\n \\x1b[1mwechat-ai\\x1b[0m — WeChat AI Bot\n\n \\x1b[1m命令:\\x1b[0m\n wechat-ai 启动 (首次自动扫码登录)\n wechat-ai set <provider> <key> 设置模型 API Key\n wechat-ai use <provider> 设置默认模型\n wechat-ai config 查看当前配置\n wechat-ai update 更新到最新版\n wechat-ai help 显示帮助\n\n \\x1b[1m设置 API Key:\\x1b[0m\n wechat-ai set qwen sk-xxx 设置通义千问 Key\n wechat-ai set deepseek sk-xxx 设置 DeepSeek Key\n wechat-ai set claude sk-xxx 设置 Claude Key\n\n \\x1b[1m设置默认模型:\\x1b[0m\n wechat-ai use qwen 默认使用 Qwen\n wechat-ai use deepseek 默认使用 DeepSeek\n\n \\x1b[1m微信指令:\\x1b[0m\n /model 查看当前模型\n /model qwen 切换到 Qwen\n /model deepseek 切换到 DeepSeek\n /help 显示帮助\n`;\n\nasync function main() {\n const args = process.argv.slice(2);\n const command = args[0];\n\n const logLevel = (process.env.WAI_LOG_LEVEL || \"info\") as \"debug\" | \"info\" | \"warn\" | \"error\";\n setLogLevel(logLevel);\n\n if (command === \"--version\" || command === \"-v\") {\n console.log(`wechat-ai v${VERSION}`);\n process.exit(0);\n }\n\n if (command === \"help\" || command === \"--help\" || command === \"-h\") {\n console.log(HELP);\n process.exit(0);\n }\n\n const config = await loadConfig();\n\n switch (command) {\n case \"set\": {\n const provider = args[1];\n const apiKey = args[2];\n\n if (!provider || !apiKey) {\n console.log(\"用法: wechat-ai set <provider> <key>\");\n console.log(\"示例: wechat-ai set qwen sk-xxx\");\n process.exit(1);\n }\n\n if (!config.providers[provider]) {\n console.log(`未知模型: ${provider}`);\n console.log(`可用: ${Object.keys(config.providers).join(\", \")}`);\n process.exit(1);\n }\n\n config.providers[provider]!.apiKey = apiKey;\n await saveConfig(config);\n console.log(`\\x1b[32m✓\\x1b[0m 已保存 ${provider} 的 API Key`);\n break;\n }\n\n case \"use\": {\n const provider = args[1];\n\n if (!provider) {\n console.log(`当前默认模型: ${config.defaultProvider}`);\n console.log(`可用: ${Object.keys(config.providers).join(\", \")}`);\n break;\n }\n\n if (!config.providers[provider]) {\n console.log(`未知模型: ${provider}`);\n console.log(`可用: ${Object.keys(config.providers).join(\", \")}`);\n process.exit(1);\n }\n\n config.defaultProvider = provider;\n await saveConfig(config);\n console.log(`\\x1b[32m✓\\x1b[0m 默认模型已切换到 ${provider}`);\n break;\n }\n\n case \"update\": {\n const { execSync } = await import(\"node:child_process\");\n console.log(\"正在更新 wechat-ai...\");\n try {\n execSync(\"npm i -g wechat-ai@latest\", { stdio: \"inherit\" });\n console.log(\"\\x1b[32m✓\\x1b[0m 更新完成\");\n } catch {\n console.error(\"\\x1b[31m✗\\x1b[0m 更新失败,请手动执行: npm i -g wechat-ai@latest\");\n process.exit(1);\n }\n break;\n }\n\n case \"config\": {\n // Hide API keys in output\n const display = JSON.parse(JSON.stringify(config));\n for (const p of Object.values(display.providers)) {\n const prov = p as Record<string, unknown>;\n if (prov.apiKey && typeof prov.apiKey === \"string\") {\n prov.apiKey = prov.apiKey.slice(0, 6) + \"...\" + prov.apiKey.slice(-4);\n }\n }\n console.log(JSON.stringify(display, null, 2));\n break;\n }\n\n default: {\n const gateway = new Gateway(config);\n gateway.init();\n\n const shutdown = async () => {\n await gateway.stop();\n process.exit(0);\n };\n process.on(\"SIGINT\", shutdown);\n process.on(\"SIGTERM\", shutdown);\n\n log.info(`wechat-ai v${VERSION}`);\n await gateway.start();\n break;\n }\n }\n}\n\nmain().catch((err) => {\n log.error(err instanceof Error ? err.message : String(err));\n process.exit(1);\n});\n"],"mappings":";;;;;;;;;;AAEA,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAC9B,SAAS,SAAS,YAAY;AAK9B,IAAM,YAAY,QAAQ,cAAc,YAAY,GAAG,CAAC;AACxD,IAAM,MAAM,KAAK,MAAM,aAAa,KAAK,WAAW,MAAM,cAAc,GAAG,OAAO,CAAC;AACnF,IAAM,UAAU,IAAI;AAEpB,IAAM,MAAM,aAAa,KAAK;AAE9B,IAAM,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2Bb,eAAe,OAAO;AACpB,QAAM,OAAO,QAAQ,KAAK,MAAM,CAAC;AACjC,QAAM,UAAU,KAAK,CAAC;AAEtB,QAAM,WAAY,QAAQ,IAAI,iBAAiB;AAC/C,cAAY,QAAQ;AAEpB,MAAI,YAAY,eAAe,YAAY,MAAM;AAC/C,YAAQ,IAAI,cAAc,OAAO,EAAE;AACnC,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,MAAI,YAAY,UAAU,YAAY,YAAY,YAAY,MAAM;AAClE,YAAQ,IAAI,IAAI;AAChB,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,SAAS,MAAM,WAAW;AAEhC,UAAQ,SAAS;AAAA,IACf,KAAK,OAAO;AACV,YAAM,WAAW,KAAK,CAAC;AACvB,YAAM,SAAS,KAAK,CAAC;AAErB,UAAI,CAAC,YAAY,CAAC,QAAQ;AACxB,gBAAQ,IAAI,8CAAoC;AAChD,gBAAQ,IAAI,yCAA+B;AAC3C,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,UAAI,CAAC,OAAO,UAAU,QAAQ,GAAG;AAC/B,gBAAQ,IAAI,6BAAS,QAAQ,EAAE;AAC/B,gBAAQ,IAAI,iBAAO,OAAO,KAAK,OAAO,SAAS,EAAE,KAAK,IAAI,CAAC,EAAE;AAC7D,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,aAAO,UAAU,QAAQ,EAAG,SAAS;AACrC,YAAM,WAAW,MAAM;AACvB,cAAQ,IAAI,4CAAwB,QAAQ,iBAAY;AACxD;AAAA,IACF;AAAA,IAEA,KAAK,OAAO;AACV,YAAM,WAAW,KAAK,CAAC;AAEvB,UAAI,CAAC,UAAU;AACb,gBAAQ,IAAI,yCAAW,OAAO,eAAe,EAAE;AAC/C,gBAAQ,IAAI,iBAAO,OAAO,KAAK,OAAO,SAAS,EAAE,KAAK,IAAI,CAAC,EAAE;AAC7D;AAAA,MACF;AAEA,UAAI,CAAC,OAAO,UAAU,QAAQ,GAAG;AAC/B,gBAAQ,IAAI,6BAAS,QAAQ,EAAE;AAC/B,gBAAQ,IAAI,iBAAO,OAAO,KAAK,OAAO,SAAS,EAAE,KAAK,IAAI,CAAC,EAAE;AAC7D,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,aAAO,kBAAkB;AACzB,YAAM,WAAW,MAAM;AACvB,cAAQ,IAAI,0EAA6B,QAAQ,EAAE;AACnD;AAAA,IACF;AAAA,IAEA,KAAK,UAAU;AACb,YAAM,EAAE,SAAS,IAAI,MAAM,OAAO,eAAoB;AACtD,cAAQ,IAAI,uCAAmB;AAC/B,UAAI;AACF,iBAAS,6BAA6B,EAAE,OAAO,UAAU,CAAC;AAC1D,gBAAQ,IAAI,gDAAuB;AAAA,MACrC,QAAQ;AACN,gBAAQ,MAAM,+GAAwD;AACtE,gBAAQ,KAAK,CAAC;AAAA,MAChB;AACA;AAAA,IACF;AAAA,IAEA,KAAK,UAAU;AAEb,YAAM,UAAU,KAAK,MAAM,KAAK,UAAU,MAAM,CAAC;AACjD,iBAAW,KAAK,OAAO,OAAO,QAAQ,SAAS,GAAG;AAChD,cAAM,OAAO;AACb,YAAI,KAAK,UAAU,OAAO,KAAK,WAAW,UAAU;AAClD,eAAK,SAAS,KAAK,OAAO,MAAM,GAAG,CAAC,IAAI,QAAQ,KAAK,OAAO,MAAM,EAAE;AAAA,QACtE;AAAA,MACF;AACA,cAAQ,IAAI,KAAK,UAAU,SAAS,MAAM,CAAC,CAAC;AAC5C;AAAA,IACF;AAAA,IAEA,SAAS;AACP,YAAM,UAAU,IAAI,QAAQ,MAAM;AAClC,cAAQ,KAAK;AAEb,YAAM,WAAW,YAAY;AAC3B,cAAM,QAAQ,KAAK;AACnB,gBAAQ,KAAK,CAAC;AAAA,MAChB;AACA,cAAQ,GAAG,UAAU,QAAQ;AAC7B,cAAQ,GAAG,WAAW,QAAQ;AAE9B,UAAI,KAAK,cAAc,OAAO,EAAE;AAChC,YAAM,QAAQ,MAAM;AACpB;AAAA,IACF;AAAA,EACF;AACF;AAEA,KAAK,EAAE,MAAM,CAAC,QAAQ;AACpB,MAAI,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAC1D,UAAQ,KAAK,CAAC;AAChB,CAAC;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { readFileSync } from \"node:fs\";\nimport { fileURLToPath } from \"node:url\";\nimport { dirname, join } from \"node:path\";\nimport { loadConfig, saveConfig } from \"./config.js\";\nimport { Gateway } from \"./gateway.js\";\nimport { setLogLevel, createLogger } from \"./logger.js\";\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\nconst pkg = JSON.parse(readFileSync(join(__dirname, \"..\", \"package.json\"), \"utf-8\"));\nconst VERSION = pkg.version as string;\n\nconst log = createLogger(\"cli\");\n\nconst HELP = `\n \\x1b[1mwechat-ai\\x1b[0m — WeChat AI Bot\n\n \\x1b[1m命令:\\x1b[0m\n wechat-ai 启动 (首次自动扫码登录)\n wechat-ai set <provider> <key> 设置模型 API Key\n wechat-ai use <provider> 设置默认模型\n wechat-ai config 查看当前配置\n wechat-ai update 更新到最新版\n wechat-ai help 显示帮助\n\n \\x1b[1m设置 API Key:\\x1b[0m\n wechat-ai set qwen sk-xxx 设置通义千问 Key\n wechat-ai set deepseek sk-xxx 设置 DeepSeek Key\n wechat-ai set claude sk-xxx 设置 Claude Key\n\n \\x1b[1m设置默认模型:\\x1b[0m\n wechat-ai use qwen 默认使用 Qwen\n wechat-ai use deepseek 默认使用 DeepSeek\n\n \\x1b[1m微信指令:\\x1b[0m\n /model 查看当前模型\n /model qwen 切换到 Qwen\n /model deepseek 切换到 DeepSeek\n /help 显示帮助\n`;\n\nfunction printBanner(defaultProvider: string): void {\n const c = {\n reset: \"\\x1b[0m\",\n bold: \"\\x1b[1m\",\n dim: \"\\x1b[2m\",\n green: \"\\x1b[32m\",\n cyan: \"\\x1b[36m\",\n gray: \"\\x1b[90m\",\n bgGray: \"\\x1b[48;5;236m\",\n white: \"\\x1b[97m\",\n };\n\n const title = `${c.bold}${c.white} Wechat AI ${c.reset}${c.dim}v${VERSION}${c.reset}`;\n const welcome = `${c.white}Welcome!${c.reset}`;\n const bot = [\n `${c.green} ╭───╮${c.reset}`,\n `${c.green} │° °│${c.reset}`,\n `${c.green} ╰─∪─╯${c.reset}`,\n ];\n const info = `${c.dim}model: ${defaultProvider} · type /help in chat${c.reset}`;\n\n const boxW = 40;\n const h = \"─\".repeat(boxW - 2);\n const displayWidth = (s: string) => {\n const stripped = s.replace(/\\x1b\\[[0-9;]*m/g, \"\");\n let w = 0;\n for (const ch of stripped) {\n // CJK characters and fullwidth symbols take 2 columns\n const code = ch.codePointAt(0)!;\n w += (code >= 0x2e80 && code <= 0x9fff) || (code >= 0xf900 && code <= 0xfaff)\n || (code >= 0xfe30 && code <= 0xfe4f) || (code >= 0xff00 && code <= 0xff60) ? 2 : 1;\n }\n return w;\n };\n const pad = (s: string) => {\n const space = boxW - 2 - displayWidth(s);\n return `${c.gray}│${c.reset}${s}${\" \".repeat(Math.max(0, space))}${c.gray}│${c.reset}`;\n };\n\n console.log();\n console.log(` ${c.gray}╭${h}╮${c.reset}`);\n console.log(` ${pad(` ${title} `)}`);\n console.log(` ${c.gray}│${c.reset}${\" \".repeat(boxW - 2)}${c.gray}│${c.reset}`);\n console.log(` ${pad(` ${welcome}`)}`);\n for (const line of bot) {\n console.log(` ${pad(` ${line}`)}`);\n }\n console.log(` ${c.gray}│${c.reset}${\" \".repeat(boxW - 2)}${c.gray}│${c.reset}`);\n console.log(` ${pad(` ${info}`)}`);\n console.log(` ${c.gray}╰${h}╯${c.reset}`);\n console.log();\n}\n\nasync function main() {\n const args = process.argv.slice(2);\n const command = args[0];\n\n const logLevel = (process.env.WAI_LOG_LEVEL || \"info\") as \"debug\" | \"info\" | \"warn\" | \"error\";\n setLogLevel(logLevel);\n\n if (command === \"--version\" || command === \"-v\") {\n console.log(`wechat-ai v${VERSION}`);\n process.exit(0);\n }\n\n if (command === \"help\" || command === \"--help\" || command === \"-h\") {\n console.log(HELP);\n process.exit(0);\n }\n\n const config = await loadConfig();\n\n switch (command) {\n case \"set\": {\n const provider = args[1];\n const apiKey = args[2];\n\n if (!provider || !apiKey) {\n console.log(\"用法: wechat-ai set <provider> <key>\");\n console.log(\"示例: wechat-ai set qwen sk-xxx\");\n process.exit(1);\n }\n\n if (!config.providers[provider]) {\n console.log(`未知模型: ${provider}`);\n console.log(`可用: ${Object.keys(config.providers).join(\", \")}`);\n process.exit(1);\n }\n\n config.providers[provider]!.apiKey = apiKey;\n await saveConfig(config);\n console.log(`\\x1b[32m✓\\x1b[0m 已保存 ${provider} 的 API Key`);\n break;\n }\n\n case \"use\": {\n const provider = args[1];\n\n if (!provider) {\n console.log(`当前默认模型: ${config.defaultProvider}`);\n console.log(`可用: ${Object.keys(config.providers).join(\", \")}`);\n break;\n }\n\n if (!config.providers[provider]) {\n console.log(`未知模型: ${provider}`);\n console.log(`可用: ${Object.keys(config.providers).join(\", \")}`);\n process.exit(1);\n }\n\n config.defaultProvider = provider;\n await saveConfig(config);\n console.log(`\\x1b[32m✓\\x1b[0m 默认模型已切换到 ${provider}`);\n break;\n }\n\n case \"update\": {\n const { execSync } = await import(\"node:child_process\");\n console.log(`正在更新 wechat-ai... (当前 v${VERSION})`);\n try {\n execSync(\"npm i -g wechat-ai@latest\", { stdio: \"inherit\" });\n // Read the newly installed version\n let newVersion = \"latest\";\n try {\n newVersion = execSync(\"npm info wechat-ai version\", { encoding: \"utf-8\" }).trim();\n } catch { /* ignore */ }\n console.log(`\\x1b[32m✓\\x1b[0m 更新完成 v${VERSION} → v${newVersion}`);\n } catch {\n console.error(\"\\x1b[31m✗\\x1b[0m 更新失败,请手动执行: npm i -g wechat-ai@latest\");\n process.exit(1);\n }\n break;\n }\n\n case \"config\": {\n // Hide API keys in output\n const display = JSON.parse(JSON.stringify(config));\n for (const p of Object.values(display.providers)) {\n const prov = p as Record<string, unknown>;\n if (prov.apiKey && typeof prov.apiKey === \"string\") {\n prov.apiKey = prov.apiKey.slice(0, 6) + \"...\" + prov.apiKey.slice(-4);\n }\n }\n console.log(JSON.stringify(display, null, 2));\n break;\n }\n\n default: {\n printBanner(config.defaultProvider);\n\n const gateway = new Gateway(config);\n gateway.init();\n\n const shutdown = async () => {\n await gateway.stop();\n process.exit(0);\n };\n process.on(\"SIGINT\", shutdown);\n process.on(\"SIGTERM\", shutdown);\n\n await gateway.start();\n break;\n }\n }\n}\n\nmain().catch((err) => {\n log.error(err instanceof Error ? err.message : String(err));\n process.exit(1);\n});\n"],"mappings":"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","names":[]}
|