@round2ai/r2-cli 1.0.3 → 1.0.5

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/index.js.map DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/index.ts", "../src/commands/setup.ts", "../src/commands/auth/login.ts", "../src/query/executor.ts", "../src/errors/index.ts", "../src/services/api/api-client.service.ts", "../src/services/storage/index.ts", "../src/commands/business/pricing.ts", "../src/commands/business/report.ts", "../src/commands/inventory/risk.ts", "../src/commands/ai/chat.ts", "../src/commands/ai/skills.ts"],
4
- "sourcesContent": ["#!/usr/bin/env node\n\n/**\n * R2-CLI \u4E3B\u5165\u53E3\n * \u5411 AI \u5F00\u653E\u4E8C\u624B\u6F6E\u5962\u4EA4\u6613\u5168\u94FE\u8DEF\u80FD\u529B\n */\n\nimport { Command } from \"commander\";\nimport fse from \"fs-extra\";\nimport path from \"node:path\";\nimport chalk from \"chalk\";\nimport figlet from \"figlet\";\nimport { setupCommands } from \"./commands/setup.js\";\n\n// \u663E\u793A\u6B22\u8FCE\u4FE1\u606F\nfunction displayWelcomeMessage(): void {\n console.log(\n chalk.cyan(\n figlet.textSync(\"R2-CLI\", {\n font: \"Standard\",\n horizontalLayout: \"full\",\n }),\n ),\n );\n console.log(chalk.gray(\"\u5411 AI \u5F00\u653E\u4E8C\u624B\u6F6E\u5962\u4EA4\u6613\u5168\u94FE\u8DEF\u80FD\u529B\\n\"));\n}\n\n// \u8BBE\u7F6E CLI \u5E94\u7528\nfunction setupCliApp(): Command {\n displayWelcomeMessage();\n\n const pkgJson = fse.readJSONSync(path.join(import.meta.dirname, \"../package.json\"));\n const program = new Command();\n\n program\n .name(\"r2\")\n .description(\"R2-CLI\uFF0C\u5411 AI \u5F00\u653E\u4E8C\u624B\u6F6E\u5962\u4EA4\u6613\u5168\u94FE\u8DEF\u80FD\u529B\")\n .version(pkgJson.version, \"-v, --version\");\n\n // \u8BBE\u7F6E\u5168\u5C40\u9519\u8BEF\u5904\u7406\n program.configureOutput({\n writeErr: (str) => {\n const error = str.replace(\"error:\", \"\").trim();\n console.error(`\u274C \u9519\u8BEF: ${error}`);\n },\n });\n\n // \u8BBE\u7F6E\u547D\u4EE4\n setupCommands(program);\n\n return program;\n}\n\n// \u542F\u52A8\u5E94\u7528\nconst program = setupCliApp();\nprogram.parse(process.argv);", "/**\n * \u547D\u4EE4\u8BBE\u7F6E\u6A21\u5757\n */\n\nimport { Command } from \"commander\";\nimport chalk from \"chalk\";\n\n// \u8BA4\u8BC1\u547D\u4EE4\nimport { createLoginCommand, createLogoutCommand, createStatusCommand } from \"./auth/login.js\";\n\n// \u4E1A\u52A1\u547D\u4EE4\nimport { createPricingCommand } from \"./business/pricing.js\";\nimport { createReportCommand } from \"./business/report.js\";\n\n// \u5E93\u5B58\u547D\u4EE4\nimport { createRiskCommand } from \"./inventory/risk.js\";\n\n// AI \u547D\u4EE4\nimport { createChatCommand } from \"./ai/chat.js\";\nimport { createSkillsCommand } from \"./ai/skills.js\";\n\n/**\n * \u8BBE\u7F6E\u6240\u6709\u547D\u4EE4\n */\nexport function setupCommands(program: Command): void {\n // ==================== \u8BA4\u8BC1\u547D\u4EE4 ====================\n const authCommand = program.command(\"auth\").description(\"\u6388\u6743\u7BA1\u7406\");\n authCommand.addCommand(createLoginCommand());\n authCommand.addCommand(createLogoutCommand());\n authCommand.addCommand(createStatusCommand());\n\n // ==================== \u6570\u636E\u5BF9\u63A5\u547D\u4EE4 ====================\n program\n .command(\"ingest\")\n .description(\"\u5BF9\u63A5\u4E3B\u6D41 ERP\uFF0C\u7EDF\u4E00\u591A\u6E20\u9053\u7ECF\u8425\u6570\u636E\")\n .action(() => {\n console.log(chalk.blue(\"\u6B63\u5728\u5BF9\u63A5 ERP \u6570\u636E...\"));\n console.log(chalk.green(\"\u2705 \u5DF2\u5BF9\u63A5\u7EBF\u4E0A\u7535\u5546\u6570\u636E\"));\n console.log(chalk.green(\"\u2705 \u5DF2\u5BF9\u63A5\u7EBF\u4E0B\u95E8\u5E97\u6570\u636E\"));\n console.log(chalk.green(\"\u2705 \u5DF2\u5BF9\u63A5\u4ED3\u50A8\u5C65\u7EA6\u6570\u636E\"));\n console.log(chalk.blue(\"\u6570\u636E\u5BF9\u63A5\u5B8C\u6210\uFF01\"));\n });\n\n // ==================== \u7ECF\u8425\u5206\u6790\u547D\u4EE4 ====================\n const reportCommand = program.command(\"report\").description(\"\u751F\u6210\u7ECF\u8425\u65E5\u62A5/\u5468\u62A5\");\n reportCommand.addCommand(createReportCommand());\n\n // ==================== \u81EA\u7136\u8BED\u8A00\u67E5\u8BE2\u547D\u4EE4 ====================\n program\n .command(\"ask\")\n .description(\"\u81EA\u7136\u8BED\u8A00\u67E5\u8BE2\u7ECF\u8425\u6570\u636E\")\n .action(() => {\n console.log(\"\u81EA\u7136\u8BED\u8A00\u67E5\u8BE2\u529F\u80FD\u5F00\u53D1\u4E2D...\");\n });\n\n // ==================== \u5E02\u573A\u5206\u6790\u547D\u4EE4 ====================\n const demandCommand = program.command(\"demand\").description(\"\u626B\u63CF\u5E02\u573A\u9700\u6C42\u70ED\u5EA6\u4E0E\u4F9B\u9700\u7F3A\u53E3\");\n demandCommand\n .option(\"--sku <sku>\", \"\u5546\u54C1SKU\")\n .option(\"--region <region>\", \"\u533A\u57DF\")\n .action((options) => {\n console.log(chalk.blue(\"\u6B63\u5728\u626B\u63CF\u5E02\u573A\u9700\u6C42...\"));\n console.log(chalk.green(`SKU: ${options.sku || \"\u5168\u90E8\"}`));\n console.log(chalk.green(`\u533A\u57DF: ${options.region || \"\u5168\u56FD\"}`));\n console.log(chalk.yellow(\"\uD83D\uDD25 \u9700\u6C42\u70ED\u5EA6: \u9AD8\"));\n console.log(chalk.yellow(\"\uD83D\uDCC8 \u4F9B\u9700\u7F3A\u53E3: 20%\"));\n console.log(chalk.blue(\"\u5E02\u573A\u9700\u6C42\u5206\u6790\u5B8C\u6210\uFF01\"));\n });\n\n // ==================== \u4EF7\u683C\u5206\u6790\u547D\u4EE4 ====================\n const pricingCommand = program.command(\"pricing\").description(\"\u57FA\u4E8E\u771F\u5B9E\u6210\u4EA4\u6570\u636E\u7ED9\u51FA\u6536\u8D27\u4EF7\u4E0E\u552E\u5356\u4EF7\u5EFA\u8BAE\");\n pricingCommand.addCommand(createPricingCommand());\n\n // ==================== \u5E93\u5B58\u4E0E\u5C65\u7EA6\u547D\u4EE4 ====================\n const inventoryCommand = program.command(\"inventory\").description(\"\u5E93\u5B58\u7BA1\u7406\");\n inventoryCommand.addCommand(createRiskCommand());\n\n program\n .command(\"fulfillment\")\n .description(\"\u5C65\u7EA6\u5168\u94FE\u8DEF\u8FFD\u8E2A\")\n .action(() => {\n console.log(chalk.blue(\"\u6B63\u5728\u8FFD\u8E2A\u5C65\u7EA6\u5168\u94FE\u8DEF...\"));\n console.log(chalk.green(\"\uD83D\uDCE6 \u6536\u8D27: \u5B8C\u6210\"));\n console.log(chalk.green(\"\uD83D\uDD0D \u8D28\u68C0: \u5B8C\u6210\"));\n console.log(chalk.green(\"\uD83C\uDFE0 \u5165\u5E93: \u5B8C\u6210\"));\n console.log(chalk.green(\"\uD83D\uDE9A \u53D1\u8D27: \u8FDB\u884C\u4E2D\"));\n console.log(chalk.blue(\"\u5C65\u7EA6\u8FFD\u8E2A\u5B8C\u6210\uFF01\"));\n });\n\n // ==================== AI \u547D\u4EE4\u6A21\u5757 ====================\n const aiCommand = program.command(\"ai\").description(\"AI \u76F8\u5173\u529F\u80FD\");\n aiCommand.addCommand(createChatCommand());\n aiCommand.addCommand(createSkillsCommand());\n\n // ==================== \u7ADE\u4EF7\u6A21\u62DF\u547D\u4EE4 ====================\n const simulateCommand = program.command(\"simulate\").description(\"\u7ADE\u4EF7\u6210\u4EA4\u6A21\u62DF\");\n simulateCommand\n .option(\"--sku <sku>\", \"\u5546\u54C1SKU\")\n .option(\"--price <price>\", \"\u51FA\u4EF7\")\n .action((options) => {\n console.log(chalk.blue(\"\u6B63\u5728\u6A21\u62DF\u7ADE\u4EF7\u6210\u4EA4...\"));\n console.log(chalk.green(`SKU: ${options.sku}`));\n console.log(chalk.green(`\u51FA\u4EF7: \u00A5${options.price}`));\n console.log(chalk.yellow(\"\uD83D\uDCCA \u9884\u4F30\u6210\u4EA4\u7387: 85%\"));\n console.log(chalk.yellow(\"\uD83D\uDCB0 \u9884\u4F30\u5229\u6DA6\u7A7A\u95F4: 15%\"));\n console.log(chalk.blue(\"\u7ADE\u4EF7\u6A21\u62DF\u5B8C\u6210\uFF01\"));\n });\n\n program\n .command(\"bidding-strategy\")\n .description(\"\u57FA\u4E8E\u9884\u7B97\u4E0E\u54C1\u7C7B\u751F\u6210\u7ADE\u4EF7\u7B56\u7565\u5EFA\u8BAE\")\n .action(() => {\n console.log(chalk.blue(\"\u6B63\u5728\u751F\u6210\u7ADE\u4EF7\u7B56\u7565...\"));\n console.log(chalk.green(\"\uD83C\uDFAF \u7B56\u7565\u76EE\u6807: \u6700\u5927\u5316\u6210\u4EA4\u7387\"));\n console.log(chalk.green(\"\uD83D\uDCB8 \u9884\u7B97\u5206\u914D: \u9AD8\u9700\u6C42\u54C1\u7C7B 60%\uFF0C\u4E2D\u9700\u6C42\u54C1\u7C7B 30%\uFF0C\u4F4E\u9700\u6C42\u54C1\u7C7B 10%\"));\n console.log(chalk.yellow(\"\uD83D\uDCC8 \u5EFA\u8BAE\u51FA\u4EF7\u533A\u95F4: \u00A5800-\u00A51200\"));\n console.log(chalk.blue(\"\u7ADE\u4EF7\u7B56\u7565\u751F\u6210\u5B8C\u6210\uFF01\"));\n });\n\n // ==================== \u7ECF\u8425\u51B3\u7B56\u547D\u4EE4 ====================\n const decideCommand = program.command(\"decide\").description(\"\u7EFC\u5408\u6570\u636E\u8F93\u51FA\u7ECF\u8425\u52A8\u4F5C\u5EFA\u8BAE\");\n decideCommand\n .option(\"--store <store>\", \"\u5E97\u94FA\u4EE3\u7801\")\n .option(\"--horizon <horizon>\", \"\u9884\u6D4B\u5468\u671F\")\n .action((options) => {\n console.log(chalk.blue(\"\u6B63\u5728\u5206\u6790\u7ECF\u8425\u6570\u636E...\"));\n console.log(chalk.green(`\u5E97\u94FA: ${options.store || \"\u5168\u90E8\"}`));\n console.log(chalk.green(`\u9884\u6D4B\u5468\u671F: ${options.horizon || \"7d\"}`));\n console.log(chalk.yellow(\"\uD83D\uDCC8 \u8865\u8D27\u5EFA\u8BAE: Air Jordan 1 Retro High OG (20 \u53CC)\"));\n console.log(chalk.yellow(\"\uD83D\uDCC9 \u6E05\u4ED3\u5EFA\u8BAE: Louis Vuitton Neverfull (5 \u4E2A)\"));\n console.log(chalk.yellow(\"\uD83D\uDCB0 \u8C03\u8C03\u4EF7\u5EFA\u8BAE: Chanel Classic Flap (\u4E0A\u8C03 5%)\"));\n console.log(chalk.yellow(\"\u26A0\uFE0F \u98CE\u63A7\u5EFA\u8BAE: \u52A0\u5F3A\u9AD8\u4EF7\u503C\u5546\u54C1\u7684\u8D28\u68C0\u6D41\u7A0B\"));\n console.log(chalk.blue(\"\u7ECF\u8425\u51B3\u7B56\u5EFA\u8BAE\u751F\u6210\u5B8C\u6210\uFF01\"));\n });\n\n // ==================== AI Agent \u96C6\u6210\u547D\u4EE4 ====================\n program\n .command(\"agent\")\n .description(\"AI Agent \u96C6\u6210\")\n .action(() => {\n console.log(chalk.blue(\"AI Agent \u96C6\u6210\"));\n console.log(chalk.green(\"\uD83D\uDD27 \u652F\u6301\u7684 AI Agent \u6846\u67B6:\"));\n console.log(chalk.green(\" - Claude Code\"));\n console.log(chalk.green(\" - OpenClaw\"));\n console.log(chalk.green(\" - Codex\"));\n console.log(chalk.blue(\"\u5B89\u88C5 Agent Skills:\"));\n console.log(chalk.yellow(\"npx skills add Round2AI/r2-cli --all -y\"));\n console.log(chalk.blue(\"AI Agent \u96C6\u6210\u5B8C\u6210\uFF01\"));\n });\n}", "/**\n * \u626B\u7801\u767B\u5F55\u547D\u4EE4\u5B9E\u73B0\n *\n * \u53C2\u8003 claude-code \u7684\u67E5\u8BE2\u6267\u884C\u6A21\u5F0F\uFF0C\u5B9E\u73B0\u5B8C\u6574\u7684\u626B\u7801\u767B\u5F55\u6D41\u7A0B\uFF1A\n * 1. \u751F\u6210\u4E8C\u7EF4\u7801\n * 2. \u663E\u793A\u4E8C\u7EF4\u7801\uFF08\u4F7F\u7528\u7EC8\u7AEF ASCII \u827A\u672F\u6216\u94FE\u63A5\uFF09\n * 3. \u8F6E\u8BE2\u67E5\u8BE2\u72B6\u6001\n * 4. \u7B49\u5F85\u7528\u6237\u626B\u7801\u786E\u8BA4\n * 5. \u4FDD\u5B58\u767B\u5F55\u51ED\u8BC1\n */\n\nimport { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport type { UserInfo, QRCodeStatus, GenerateQRCodeData } from \"../../types/auth.js\";\nimport { executePollingQuery, type QueryDefinition } from \"../../query/executor.js\";\nimport { type IQRCodeAuthApi, ApiClientService, QRCodeAuthApiService } from \"../../services/api/index.js\";\nimport { createStorageService, StorageService } from \"../../services/storage/index.js\";\nimport { AuthError, PollingError } from \"../../errors/index.js\";\n\n// \u52A8\u6001\u5BFC\u5165 qrcode-terminal\uFF08CommonJS\uFF09\nimport { createRequire } from \"node:module\";\nconst require = createRequire(import.meta.url);\nconst qrcodeTerminal = require(\"qrcode-terminal\");\n\n// ==================== \u767B\u5F55\u670D\u52A1 ====================\n\n/**\n * \u767B\u5F55\u670D\u52A1\u7C7B\n */\nclass LoginService {\n private authApi: IQRCodeAuthApi;\n private storage: StorageService;\n\n constructor(authApi?: IQRCodeAuthApi, storage?: StorageService) {\n this.authApi = authApi ?? new QRCodeAuthApiService(new ApiClientService());\n this.storage = storage ?? createStorageService();\n }\n\n /**\n * \u6267\u884C\u626B\u7801\u767B\u5F55\n */\n async login(signal?: AbortSignal): Promise<{ userInfo: UserInfo; token: string }> {\n console.log(chalk.cyan(\"\\n\uD83D\uDD10 \u6B63\u5728\u542F\u52A8\u626B\u7801\u767B\u5F55...\"));\n\n // 1. \u751F\u6210\u4E8C\u7EF4\u7801\n const qrData = await this.authApi.generateQRCode();\n console.log(chalk.green(\"\u2705 \u4E8C\u7EF4\u7801\u5DF2\u751F\u6210\\n\"));\n\n // 2. \u663E\u793A\u4E8C\u7EF4\u7801\n this.displayQRCode(qrData);\n\n // 3. \u6784\u5EFA\u8F6E\u8BE2\u67E5\u8BE2\n const query: QueryDefinition<{ status: QRCodeStatus; userInfo: UserInfo | null; token: string | null }> = {\n id: \"qrcode-status-poll\",\n description: \"\u67E5\u8BE2\u4E8C\u7EF4\u7801\u767B\u5F55\u72B6\u6001\",\n deps: {\n signal: signal ?? null,\n uuid: () => Math.random().toString(36),\n api: {\n get: async <T = unknown>(url: string): Promise<T> => {\n // \u5FFD\u7565 url \u53C2\u6570\uFF0C\u4F7F\u7528\u5185\u90E8\u65B9\u6CD5\u8C03\u7528\n return this.authApi.getQRCodeStatus(qrData.qrToken) as T;\n },\n post: async <T = unknown>(_url: string, _body?: unknown): Promise<T> => {\n throw new Error(\"Not implemented\");\n },\n },\n log: {\n info: (msg) => console.log(chalk.blue(`[INFO] ${msg}`)),\n error: (msg) => console.error(chalk.red(`[ERROR] ${msg}`)),\n debug: (msg) => console.log(chalk.gray(`[DEBUG] ${msg}`)),\n },\n },\n execute: async () => {\n return this.authApi.getQRCodeStatus(qrData.qrToken);\n },\n options: {\n timeout: Number.parseInt(qrData.expireTime, 10),\n enableProgress: true,\n },\n };\n\n // 4. \u6267\u884C\u8F6E\u8BE2\u67E5\u8BE2\n try {\n const result = await this.pollLoginStatus(query, qrData);\n\n // 5. \u4FDD\u5B58\u767B\u5F55\u51ED\u8BC1\n if (result.data.token && result.data.userInfo) {\n await this.saveCredentials(result.data.token, result.data.userInfo);\n\n console.log(chalk.green(\"\\n\u2705 \u767B\u5F55\u6210\u529F\uFF01\\n\"));\n this.displayUserInfo(result.data.userInfo);\n\n return {\n userInfo: result.data.userInfo,\n token: result.data.token,\n };\n }\n\n throw new AuthError(\"\u767B\u5F55\u5931\u8D25: \u672A\u83B7\u53D6\u5230\u51ED\u8BC1\");\n } catch (error) {\n\n console.log('error', error);\n console.log(chalk.red(\"\\n\u274C \u767B\u5F55\u5931\u8D25\\n\"));\n\n // \u91CD\u65B0\u629B\u51FA\u9519\u8BEF\uFF0C\u8BA9\u4E0A\u5C42\u5904\u7406\n if (error instanceof Error) {\n throw error;\n }\n\n throw new AuthError(\"\u767B\u5F55\u5931\u8D25: \u672A\u77E5\u9519\u8BEF\");\n }\n }\n\n /**\n * \u663E\u793A\u4E8C\u7EF4\u7801\n */\n private displayQRCode(qrData: GenerateQRCodeData): void {\n console.log(chalk.yellow(\"\uD83D\uDCF1 \u8BF7\u4F7F\u7528 \u7B2C\u4E8C\u56DE\u5408APP \u626B\u63CF\u4E8C\u7EF4\u7801\u767B\u5F55\\n\"));\n\n // \u4F7F\u7528 qrcode-terminal \u663E\u793A\u4E8C\u7EF4\u7801\n qrcodeTerminal.generate(`r2://auth/login?qrToken=${qrData.qrContent}`, { small: true });\n\n const expireTimeMs = Number.parseInt(qrData.expireTime, 10);\n const pollIntervalMs = Number.parseInt(qrData.pollInterval, 10);\n\n // console.log(chalk.gray(\"\\n\u4E8C\u7EF4\u7801\u5185\u5BB9: \") + chalk.white(qrData.qrContent));\n // console.log(chalk.gray(\"\u8FC7\u671F\u65F6\u95F4: \") + chalk.white(`${expireTimeMs / 1000} \u79D2`));\n // console.log(chalk.gray(\"\u8F6E\u8BE2\u95F4\u9694: \") + chalk.white(`${pollIntervalMs} \u6BEB\u79D2`));\n\n console.log(chalk.yellow(\"\\n\u23F3 \u7B49\u5F85\u626B\u7801...\"));\n }\n\n /**\n * \u8F6E\u8BE2\u767B\u5F55\u72B6\u6001\n */\n private async pollLoginStatus(\n query: QueryDefinition<{\n status: QRCodeStatus;\n userInfo: UserInfo | null;\n token: string | null;\n }>,\n qrData: GenerateQRCodeData,\n ): Promise<{ data: { status: QRCodeStatus; userInfo: UserInfo | null; token: string | null } }> {\n let lastStatus: QRCodeStatus = \"waiting\";\n\n const expireTimeMs = Number.parseInt(qrData.expireTime, 10);\n const pollIntervalMs = Number.parseInt(qrData.pollInterval, 10);\n\n const pollingIterator = executePollingQuery(query, {\n interval: pollIntervalMs,\n timeout: expireTimeMs,\n condition: (data) => {\n // \u68C0\u67E5\u72B6\u6001\u53D8\u5316\n if (data.status !== lastStatus) {\n lastStatus = data.status;\n\n switch (data.status) {\n case \"scanned\":\n console.log(chalk.cyan(`\\n\uD83D\uDD0D \u5DF2\u626B\u7801: ${data.userInfo?.nickname || \"\u672A\u77E5\u7528\u6237\"}`));\n console.log(chalk.yellow(\"\u8BF7\u5728 APP \u4E0A\u786E\u8BA4\u767B\u5F55\"));\n break;\n case \"confirmed\":\n console.log(chalk.green(\"\\n\u2705 \u7528\u6237\u5DF2\u786E\u8BA4\u767B\u5F55\"));\n break;\n case \"expired\":\n console.log(chalk.red(\"\\n\u23F0 \u4E8C\u7EF4\u7801\u5DF2\u8FC7\u671F\"));\n break;\n case \"canceled\":\n console.log(chalk.red(\"\\n\uD83D\uDEAB \u7528\u6237\u5DF2\u53D6\u6D88\u767B\u5F55\"));\n break;\n }\n }\n\n return data.status === \"confirmed\";\n },\n });\n\n let result: { data: { status: QRCodeStatus; userInfo: UserInfo | null; token: string | null } } | null = null;\n\n // \u624B\u52A8\u8FED\u4EE3\u4EE5\u83B7\u53D6 AsyncGenerator \u7684\u8FD4\u56DE\u503C\n let done = false;\n while (!done) {\n const { value, done: iterationDone } = await pollingIterator.next();\n done = iterationDone ?? true;\n\n // \u8FD4\u56DE\u503C\u5728\u6700\u540E\u4E00\u6B21\u8FED\u4EE3\u65F6\u5728 value \u4E2D\n if (done) {\n if (value && \"data\" in value) {\n result = { data: value.data };\n }\n } else {\n // \u8FD9\u662F yield \u7684 ProgressEvent\uFF0C\u4E0D\u9700\u8981\u5904\u7406\n }\n }\n\n if (result) {\n return result;\n }\n\n throw new PollingError(\"\u8F6E\u8BE2\u5F02\u5E38\u7EC8\u6B62\");\n }\n\n /**\n * \u663E\u793A\u7528\u6237\u4FE1\u606F\n */\n private displayUserInfo(userInfo: UserInfo): void {\n console.log(chalk.white(\"\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\"));\n console.log(chalk.cyan(\"\u7528\u6237\u4FE1\u606F:\"));\n console.log(chalk.white(\" \u7528\u6237\u540D: \") + chalk.yellow(userInfo.username));\n console.log(chalk.white(\" \u6635\u79F0: \") + chalk.yellow(userInfo.nickname));\n console.log(chalk.white(\" \u624B\u673A\u53F7: \") + chalk.yellow(userInfo.mobile));\n console.log(chalk.white(\" \u7528\u6237ID: \") + chalk.yellow(userInfo.userId.toString()));\n console.log(chalk.white(\"\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\"));\n }\n\n /**\n * \u4FDD\u5B58\u767B\u5F55\u51ED\u8BC1\n */\n private async saveCredentials(token: string, userInfo: UserInfo): Promise<void> {\n await this.storage.saveCredentials(token, userInfo);\n\n const credentials = await this.storage.getCredentials();\n // console.log(chalk.gray(\"\\n\uD83D\uDCBE \u51ED\u8BC1\u5DF2\u4FDD\u5B58\u5230: \" + this.storage.getConfigPath()));\n // console.log(chalk.gray(` Token: ${token.substring(0, 20)}...`));\n // console.log(chalk.gray(` \u7528\u6237: ${userInfo.nickname} (${userInfo.username})`));\n // console.log(chalk.gray(` \u4FDD\u5B58\u65F6\u95F4: ${new Date(credentials!.timestamp).toLocaleString()}`));\n }\n\n /**\n * \u767B\u51FA\n */\n async logout(): Promise<void> {\n console.log(chalk.cyan(\"\\n\uD83D\uDEAA \u6B63\u5728\u9000\u51FA\u767B\u5F55...\"));\n\n // \u6E05\u9664\u672C\u5730\u51ED\u8BC1\n await this.clearCredentials();\n\n console.log(chalk.green(\"\u2705 \u5DF2\u9000\u51FA\u767B\u5F55\\n\"));\n }\n\n /**\n * \u67E5\u770B\u767B\u5F55\u72B6\u6001\n */\n async status(): Promise<void> {\n console.log(chalk.cyan(\"\\n\uD83D\uDCCA \u67E5\u770B\u767B\u5F55\u72B6\u6001...\\n\"));\n\n const isLoggedIn = await this.storage.isLoggedIn();\n\n if (!isLoggedIn) {\n console.log(chalk.yellow(\"\u26A0\uFE0F \u5C1A\u672A\u767B\u5F55\u6216\u51ED\u8BC1\u5DF2\u8FC7\u671F\\n\"));\n return;\n }\n\n const credentials = await this.storage.getCredentials();\n const userInfo = credentials!.userInfo;\n const lastLogin = new Date(credentials!.timestamp);\n const daysSinceLogin = Math.floor((Date.now() - credentials!.timestamp) / (1000 * 60 * 60 * 24));\n\n console.log(chalk.green(\"\u2705 \u5DF2\u767B\u5F55\\n\"));\n this.displayUserInfo(userInfo);\n console.log(chalk.gray(\"\\n\uD83D\uDCC5 \u6700\u540E\u767B\u5F55: \" + lastLogin.toLocaleString()));\n console.log(chalk.gray(\" \u8DDD\u79BB\u4ECA\u5929: \" + daysSinceLogin + \" \u5929\u524D\"));\n // console.log(chalk.gray(\"\\n\uD83D\uDCBE \u914D\u7F6E\u6587\u4EF6: \" + this.storage.getConfigPath()));\n }\n\n /**\n * \u6E05\u9664\u767B\u5F55\u51ED\u8BC1\n */\n private async clearCredentials(): Promise<void> {\n await this.storage.clearCredentials();\n // console.log(chalk.gray(\"\uD83D\uDCBE \u51ED\u8BC1\u5DF2\u4ECE \" + this.storage.getConfigPath() + \" \u6E05\u9664\"));\n }\n}\n\n// ==================== \u547D\u4EE4\u5DE5\u5382 ====================\n\n/**\n * \u521B\u5EFA\u767B\u5F55\u547D\u4EE4\n */\nexport function createLoginCommand(): Command {\n const command = new Command(\"login\");\n command.description(\"\u626B\u7801\u767B\u5F55 Round2AI \u8D26\u6237\");\n\n command.option(\"--timeout <ms>\", \"\u8D85\u65F6\u65F6\u95F4\uFF08\u6BEB\u79D2\uFF09\", \"300000\");\n command.option(\"--debug\", \"\u542F\u7528\u8C03\u8BD5\u6A21\u5F0F\", false);\n\n command.action(async (options: { timeout?: string; debug?: boolean }) => {\n try {\n const loginService = new LoginService();\n const controller = new AbortController();\n\n // \u8BBE\u7F6E\u8D85\u65F6\n const timeout = setTimeout(\n () => {\n controller.abort();\n },\n Number.parseInt(options.timeout ?? \"300000\", 10),\n );\n\n await loginService.login(controller.signal);\n clearTimeout(timeout);\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n console.error(chalk.red(`\u274C ${errorMessage}`));\n process.exit(1);\n }\n });\n\n return command;\n}\n\n/**\n * \u521B\u5EFA\u767B\u51FA\u547D\u4EE4\n */\nexport function createLogoutCommand(): Command {\n const command = new Command(\"logout\");\n command.description(\"\u9000\u51FA\u767B\u5F55\");\n\n command.action(async () => {\n try {\n const loginService = new LoginService();\n await loginService.logout();\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n console.error(chalk.red(`\u274C ${errorMessage}`));\n process.exit(1);\n }\n });\n\n return command;\n}\n\n/**\n * \u521B\u5EFA\u72B6\u6001\u547D\u4EE4\n */\nexport function createStatusCommand(): Command {\n const command = new Command(\"status\");\n command.description(\"\u67E5\u770B\u767B\u5F55\u72B6\u6001\");\n\n command.action(async () => {\n try {\n const loginService = new LoginService();\n await loginService.status();\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n console.error(chalk.red(`\u274C ${errorMessage}`));\n process.exit(1);\n }\n });\n\n return command;\n}\n", "/**\n * \u67E5\u8BE2\u6267\u884C\u5668 - \u53C2\u8003 claude-code \u7684 query.ts \u8BBE\u8BA1\n * \u652F\u6301\u5F02\u6B65\u6D41\u5F0F\u8F93\u51FA\u3001\u8FDB\u5EA6\u62A5\u544A\u3001\u72B6\u6001\u7BA1\u7406\n */\n\n// AbortSignal \u662F\u5168\u5C40\u7C7B\u578B\uFF0C\u65E0\u9700\u5BFC\u5165\n\n// ==================== \u7C7B\u578B\u5B9A\u4E49 ====================\n\n/** \u67E5\u8BE2\u8FDB\u5EA6\u4E8B\u4EF6\u7C7B\u578B */\nexport type ProgressEventType = \"start\" | \"update\" | \"complete\" | \"error\";\n\n/** \u67E5\u8BE2\u8FDB\u5EA6\u4E8B\u4EF6 */\nexport interface ProgressEvent {\n type: ProgressEventType;\n message: string;\n progress?: number; // 0-100\n timestamp?: number;\n}\n\n/** \u67E5\u8BE2\u7ED3\u679C\u5143\u6570\u636E */\nexport interface QueryMetadata {\n duration: number; // \u6267\u884C\u65F6\u957F\uFF08\u6BEB\u79D2\uFF09\n success: boolean;\n errors?: string[];\n [key: string]: unknown;\n}\n\n/** \u67E5\u8BE2\u7ED3\u679C */\nexport interface QueryResult<T = unknown> {\n data: T;\n metadata: QueryMetadata;\n progress?: ProgressEvent[];\n}\n\n/** \u67E5\u8BE2\u5B9A\u4E49 */\nexport interface QueryDefinition<T = unknown> {\n /** \u67E5\u8BE2\u552F\u4E00\u6807\u8BC6 */\n id: string;\n /** \u67E5\u8BE2\u63CF\u8FF0 */\n description: string;\n /** \u67E5\u8BE2\u6267\u884C\u4F9D\u8D56 */\n deps: QueryDeps;\n /** \u67E5\u8BE2\u6267\u884C\u51FD\u6570 */\n execute: (deps: QueryDeps, signal?: AbortSignal) => Promise<T>;\n /** \u67E5\u8BE2\u9009\u9879 */\n options?: {\n /** \u8D85\u65F6\u65F6\u95F4\uFF08\u6BEB\u79D2\uFF09 */\n timeout?: number;\n /** \u662F\u5426\u542F\u7528\u8FDB\u5EA6\u62A5\u544A */\n enableProgress?: boolean;\n };\n}\n\n/** \u67E5\u8BE2\u4F9D\u8D56 */\nexport interface QueryDeps {\n /** \u4FE1\u53F7\u63A7\u5236\u5668 */\n signal: AbortSignal | null;\n /** \u751F\u6210 UUID */\n uuid: () => string;\n /** API \u5BA2\u6237\u7AEF */\n api: {\n get: <T = unknown>(url: string) => Promise<T>;\n post: <T = unknown>(url: string, body?: unknown) => Promise<T>;\n };\n /** \u65E5\u5FD7\u8BB0\u5F55 */\n log: {\n info: (message: string) => void;\n error: (message: string, error?: unknown) => void;\n debug: (message: string) => void;\n };\n}\n\n/** \u67E5\u8BE2\u72B6\u6001 */\nexport type QueryStatus = \"idle\" | \"running\" | \"completed\" | \"error\" | \"aborted\";\n\n/** \u67E5\u8BE2\u4E0A\u4E0B\u6587 - \u67E5\u8BE2\u6267\u884C\u8FC7\u7A0B\u4E2D\u7684\u72B6\u6001\u7BA1\u7406 */\nexport interface QueryContext<T = unknown> {\n /** \u67E5\u8BE2 ID */\n id: string;\n /** \u67E5\u8BE2\u72B6\u6001 */\n status: QueryStatus;\n /** \u5F00\u59CB\u65F6\u95F4 */\n startTime: number;\n /** \u7ED3\u675F\u65F6\u95F4 */\n endTime?: number;\n /** \u5F53\u524D\u8FDB\u5EA6 */\n progress: number;\n /** \u8FDB\u5EA6\u4E8B\u4EF6\u5386\u53F2 */\n progressEvents: ProgressEvent[];\n /** \u7ED3\u679C\u6570\u636E */\n result?: QueryResult<T>;\n /** \u9519\u8BEF\u4FE1\u606F */\n error?: Error;\n}\n\n// ==================== \u67E5\u8BE2\u6267\u884C\u5668 ====================\n\n/**\n * \u5F02\u6B65\u67E5\u8BE2\u6267\u884C\u5668\n *\n * \u53C2\u8003 claude-code \u7684 query \u51FD\u6570\u8BBE\u8BA1\uFF0C\u4F7F\u7528 AsyncGenerator \u6A21\u5F0F\n * \u652F\u6301\u6D41\u5F0F\u8F93\u51FA\u8FDB\u5EA6\u4E8B\u4EF6\u548C\u6700\u7EC8\u7ED3\u679C\n *\n * @example\n * ```typescript\n * const query: QueryDefinition<UserInfo> = {\n * id: \"qrcode-login\",\n * description: \"\u626B\u7801\u767B\u5F55\",\n * deps: deps,\n * execute: async (deps, signal) => {\n * return await loginWithQrcode(deps, signal);\n * }\n * };\n *\n * for await (const event of executeQuery(query)) {\n * if (event.type === \"progress\") {\n * console.log(event.message, event.progress);\n * } else if (event.type === \"result\") {\n * console.log(\"\u5B8C\u6210:\", event.data);\n * }\n * }\n * ```\n */\nexport async function* executeQuery<T = unknown>(\n query: QueryDefinition<T>,\n customDeps?: Partial<QueryDeps>,\n): AsyncGenerator<ProgressEvent | QueryResult<T>, QueryResult<T>, unknown> {\n const deps: QueryDeps = {\n ...query.deps,\n ...customDeps,\n };\n\n const ctx: QueryContext<T> = {\n id: query.id,\n status: \"idle\",\n startTime: Date.now(),\n progress: 0,\n progressEvents: [],\n };\n\n ctx.status = \"running\";\n\n try {\n // \u53D1\u9001\u5F00\u59CB\u4E8B\u4EF6\n const startEvent: ProgressEvent = {\n type: \"start\",\n message: `\u5F00\u59CB\u6267\u884C: ${query.description}`,\n timestamp: Date.now(),\n };\n ctx.progressEvents.push(startEvent);\n yield startEvent;\n\n // \u6267\u884C\u67E5\u8BE2\n const startTime = Date.now();\n const data = await query.execute(deps, deps.signal ?? undefined);\n const duration = Date.now() - startTime;\n\n // \u53D1\u9001\u5B8C\u6210\u4E8B\u4EF6\n const completeEvent: ProgressEvent = {\n type: \"complete\",\n message: `${query.description} \u5B8C\u6210`,\n progress: 100,\n timestamp: Date.now(),\n };\n ctx.progressEvents.push(completeEvent);\n yield completeEvent;\n\n // \u6784\u5EFA\u7ED3\u679C\n const result: QueryResult<T> = {\n data,\n metadata: {\n duration,\n success: true,\n },\n progress: ctx.progressEvents,\n };\n\n ctx.status = \"completed\";\n ctx.endTime = Date.now();\n ctx.result = result;\n\n return result;\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n\n // \u53D1\u9001\u9519\u8BEF\u4E8B\u4EF6\n const errorEvent: ProgressEvent = {\n type: \"error\",\n message: `\u6267\u884C\u5931\u8D25: ${errorMessage}`,\n timestamp: Date.now(),\n };\n ctx.progressEvents.push(errorEvent);\n yield errorEvent;\n\n ctx.status = \"error\";\n ctx.endTime = Date.now();\n ctx.error = error instanceof Error ? error : new Error(errorMessage);\n\n // \u8FD4\u56DE\u9519\u8BEF\u7ED3\u679C\n const errorResult: QueryResult<T> = {\n data: null as T,\n metadata: {\n duration: Date.now() - ctx.startTime,\n success: false,\n errors: [errorMessage],\n },\n progress: ctx.progressEvents,\n };\n\n throw error;\n }\n}\n\n// ==================== \u8F6E\u8BE2\u67E5\u8BE2\u6267\u884C\u5668 ====================\n\n/**\n * \u8F6E\u8BE2\u67E5\u8BE2\u6267\u884C\u5668 - \u9002\u7528\u4E8E\u9700\u8981\u8F6E\u8BE2\u68C0\u67E5\u72B6\u6001\u7684\u573A\u666F\n * \u5982\uFF1A\u626B\u7801\u767B\u5F55\u72B6\u6001\u8F6E\u8BE2\n */\nexport interface PollingQueryOptions<T> {\n /** \u8F6E\u8BE2\u95F4\u9694\uFF08\u6BEB\u79D2\uFF09 */\n interval: number;\n /** \u8D85\u65F6\u65F6\u95F4\uFF08\u6BEB\u79D2\uFF09 */\n timeout: number;\n /** \u6761\u4EF6\u51FD\u6570 - \u5224\u65AD\u662F\u5426\u5B8C\u6210 */\n condition: (data: T) => boolean;\n /** \u8FDB\u5EA6\u56DE\u8C03 */\n onProgress?: (progress: number, message: string) => void;\n}\n\nexport async function* executePollingQuery<T = unknown>(\n query: QueryDefinition<T>,\n options: PollingQueryOptions<T>,\n): AsyncGenerator<ProgressEvent | QueryResult<T>, QueryResult<T>, unknown> {\n const { interval, timeout, condition, onProgress } = options;\n const startTime = Date.now();\n\n yield {\n type: \"start\",\n message: `\u5F00\u59CB\u8F6E\u8BE2: ${query.description}`,\n timestamp: startTime,\n };\n\n let attempts = 0;\n let lastData: T | null = null;\n\n while (Date.now() - startTime < timeout) {\n attempts++;\n\n // \u68C0\u67E5\u662F\u5426\u88AB\u4E2D\u6B62\n if (query.deps.signal?.aborted) {\n throw new Error(\"\u67E5\u8BE2\u88AB\u4E2D\u6B62\");\n }\n\n try {\n const data = await query.execute(query.deps);\n lastData = data;\n\n // \u8BA1\u7B97\u8FDB\u5EA6\n const progress = Math.min(\n Math.floor(((Date.now() - startTime) / timeout) * 100),\n 99,\n );\n\n // \u89E6\u53D1\u8FDB\u5EA6\u56DE\u8C03\n onProgress?.(progress, `\u8F6E\u8BE2\u4E2D... (\u7B2C ${attempts} \u6B21)`);\n\n yield {\n type: \"update\",\n message: `\u8F6E\u8BE2\u4E2D... (\u7B2C ${attempts} \u6B21)`,\n progress,\n timestamp: Date.now(),\n };\n\n // \u68C0\u67E5\u6761\u4EF6\u662F\u5426\u6EE1\u8DB3\n if (condition(data)) {\n const duration = Date.now() - startTime;\n\n yield {\n type: \"complete\",\n message: `\u8F6E\u8BE2\u5B8C\u6210 (\u5171 ${attempts} \u6B21)`,\n progress: 100,\n timestamp: Date.now(),\n };\n\n return {\n data,\n metadata: {\n duration,\n success: true,\n attempts,\n },\n };\n }\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n\n yield {\n type: \"error\",\n message: `\u8F6E\u8BE2\u9519\u8BEF: ${errorMessage}`,\n timestamp: Date.now(),\n };\n\n throw error;\n }\n\n // \u7B49\u5F85\u4E0B\u4E00\u6B21\u8F6E\u8BE2\n await sleep(interval);\n }\n\n // \u8D85\u65F6\n throw new Error(\n `\u8F6E\u8BE2\u8D85\u65F6: ${query.description} (\u5DF2\u7B49\u5F85 ${timeout}ms, \u5171 ${attempts} \u6B21)`,\n );\n}\n\n// ==================== \u5DE5\u5177\u51FD\u6570 ====================\n\n/**\n * \u5EF6\u8FDF\u51FD\u6570\n */\nexport function sleep(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\n/**\n * \u751F\u6210 UUID\n */\nexport function createUUID(): string {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, c => {\n const r = (Math.random() * 16) | 0;\n const v = c === \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\n/**\n * \u521B\u5EFA\u9ED8\u8BA4\u7684\u67E5\u8BE2\u4F9D\u8D56\n */\nexport function createDefaultDeps(\n signal: AbortSignal | null = null,\n): QueryDeps {\n return {\n signal,\n uuid: createUUID,\n api: {\n get: async <T = unknown>(url: string): Promise<T> => {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n }\n return response.json() as Promise<T>;\n },\n post: async <T = unknown>(\n url: string,\n body?: unknown,\n ): Promise<T> => {\n const init: RequestInit = {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n };\n if (body !== undefined) {\n init.body = JSON.stringify(body);\n }\n const response = await fetch(url, init);\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n }\n return response.json() as Promise<T>;\n },\n },\n log: {\n info: (message: string) => console.log(`[INFO] ${message}`),\n error: (message: string, error?: unknown) => {\n console.error(`[ERROR] ${message}`, error);\n },\n debug: (message: string) => {\n if (process.env.DEBUG === \"true\") {\n console.log(`[DEBUG] ${message}`);\n }\n },\n },\n };\n}\n", "/**\n * \u9519\u8BEF\u5904\u7406\u6A21\u5757 - \u63D0\u4F9B\u81EA\u5B9A\u4E49\u9519\u8BEF\u7C7B\n */\n\n/**\n * R2 CLI \u57FA\u7840\u9519\u8BEF\u7C7B\n */\nexport class R2Error extends Error {\n constructor(\n message: string,\n public readonly code?: string,\n public readonly details?: unknown,\n ) {\n super(message);\n this.name = \"R2Error\";\n // \u4FDD\u6301\u5806\u6808\u8DDF\u8E2A\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, R2Error);\n }\n }\n}\n\n/**\n * API \u9519\u8BEF\u7C7B\n */\nexport class ApiError extends R2Error {\n constructor(\n message: string,\n public readonly status?: number,\n public readonly response?: unknown,\n ) {\n super(message, \"API_ERROR\", response);\n this.name = \"ApiError\";\n }\n}\n\n/**\n * \u5B58\u50A8\u9519\u8BEF\u7C7B\n */\nexport class StorageError extends R2Error {\n constructor(\n message: string,\n public readonly path?: string,\n public readonly code?: string,\n ) {\n super(message, \"STORAGE_ERROR\", { path, code });\n this.name = \"StorageError\";\n }\n}\n\n/**\n * \u8BA4\u8BC1\u9519\u8BEF\u7C7B\n */\nexport class AuthError extends R2Error {\n constructor(message: string) {\n super(message, \"AUTH_ERROR\");\n this.name = \"AuthError\";\n }\n}\n\n/**\n * \u8F6E\u8BE2\u9519\u8BEF\u7C7B\n */\nexport class PollingError extends R2Error {\n constructor(\n message: string,\n public readonly attempts?: number,\n public readonly timeout?: number,\n ) {\n super(message, \"POLLING_ERROR\", { attempts, timeout });\n this.name = \"PollingError\";\n }\n}\n\n/**\n * \u547D\u4EE4\u884C\u9519\u8BEF\u7C7B\n */\nexport class CliError extends R2Error {\n constructor(message: string, public readonly command?: string) {\n super(message, \"CLI_ERROR\", { command });\n this.name = \"CliError\";\n }\n}", "/**\n * API \u5BA2\u6237\u7AEF\u670D\u52A1\u5B9E\u73B0\n */\n\nimport type { IApiClient, IQRCodeAuthApi, ApiConfig, RequestConfig, ApiResponse } from \"./api-client.interface.js\";\nimport { ApiError } from \"../../errors/index.js\";\nimport type { GenerateQRCodeData, QRCodeStatusData } from \"../../types/auth.js\";\n\n/**\n * API \u57FA\u7840\u5730\u5740 - \u6784\u5EFA\u65F6\u901A\u8FC7 esbuild --define \u66FF\u6362\n */\nconst R2_API_URL = \"https://api.puresnake.com\";\n\n/**\n * API \u5BA2\u6237\u7AEF\u670D\u52A1\u5B9E\u73B0\n */\nexport class ApiClientService implements IApiClient {\n private config: ApiConfig;\n private token: string | null = null;\n\n constructor(config: Partial<ApiConfig> = {}) {\n this.config = {\n baseUrl: config.baseUrl ?? R2_API_URL,\n version: config.version ?? \"v3\",\n debug: config.debug ?? false,\n };\n console.log(\"this.config\", this.config);\n }\n\n /**\n * \u8BBE\u7F6E\u8BA4\u8BC1\u4EE4\u724C\n */\n setToken(token: string | null): void {\n this.token = token;\n }\n\n /**\n * \u83B7\u53D6\u8BA4\u8BC1\u4EE4\u724C\n */\n getToken(): string | null {\n return this.token;\n }\n\n /**\n * \u6784\u5EFA URL\n */\n private buildUrl(path: string): string {\n const cleanPath = path.startsWith(\"/\") ? path.slice(1) : path;\n return `${this.config.baseUrl}/${this.config.version}/${cleanPath}`;\n }\n\n /**\n * \u6784\u5EFA HTTP \u5934\n */\n private buildHeaders(): HeadersInit {\n const headers: HeadersInit = {\n \"Content-Type\": \"application/json\",\n };\n\n if (this.token) {\n headers[\"token\"] = this.token;\n }\n\n return headers;\n }\n\n /**\n * \u5904\u7406\u54CD\u5E94\n */\n private async handleResponse<T>(response: Response): Promise<T> {\n if (!response.ok) {\n const errorText = await response.text();\n throw new ApiError(`HTTP ${response.status}: ${response.statusText} - ${errorText}`, response.status);\n }\n\n const result = (await response.json()) as ApiResponse<T>;\n\n if (this.config.debug) {\n console.log(\"[API Response]\", result);\n }\n\n if (!result.success || result.status !== 0) {\n throw new ApiError(`API Error: status=${result.status}, success=${result.success}, message=${result.msg}`, undefined, result);\n }\n\n return result.data;\n }\n\n /**\n * \u6267\u884C\u8BF7\u6C42\n */\n private async request<T = unknown>(path: string, config: RequestConfig): Promise<T> {\n const url = this.buildUrl(path);\n const { method, headers, body } = config;\n\n const init: RequestInit = {\n method,\n headers: { ...this.buildHeaders(), ...headers },\n };\n\n if (body !== undefined) {\n init.body = JSON.stringify(body);\n }\n\n if (this.config.debug) {\n console.log(`[API ${method}]`, url, body);\n }\n\n const response = await fetch(url, init);\n return this.handleResponse<T>(response);\n }\n\n /**\n * GET \u8BF7\u6C42\n */\n async get<T = unknown>(path: string, params?: URLSearchParams): Promise<T> {\n let url = this.buildUrl(path);\n\n if (params && params.size > 0) {\n url += `?${params.toString()}`;\n }\n\n const init: RequestInit = {\n method: \"GET\",\n headers: this.buildHeaders(),\n };\n\n if (this.config.debug) {\n console.log(`[API GET]`, url);\n }\n\n const response = await fetch(url, init);\n return this.handleResponse<T>(response);\n }\n\n /**\n * POST \u8BF7\u6C42\n */\n async post<T = unknown>(path: string, body?: unknown): Promise<T> {\n const config: RequestConfig = { method: \"POST\", body };\n return this.request<T>(path, config);\n }\n\n /**\n * PUT \u8BF7\u6C42\n */\n async put<T = unknown>(path: string, body?: unknown): Promise<T> {\n const config: RequestConfig = { method: \"PUT\", body };\n return this.request<T>(path, config);\n }\n\n /**\n * DELETE \u8BF7\u6C42\n */\n async delete<T = unknown>(path: string): Promise<T> {\n const config: RequestConfig = { method: \"DELETE\" };\n return this.request<T>(path, config);\n }\n}\n\n/**\n * \u4E8C\u7EF4\u7801\u8BA4\u8BC1 API \u670D\u52A1\u5B9E\u73B0\n */\nexport class QRCodeAuthApiService implements IQRCodeAuthApi {\n private client: IApiClient;\n\n constructor(client: IApiClient) {\n this.client = client;\n }\n\n /**\n * \u751F\u6210\u4E8C\u7EF4\u7801\n */\n async generateQRCode(): Promise<GenerateQRCodeData> {\n return this.client.post<GenerateQRCodeData>(\"app/qrcode/generate\");\n }\n\n /**\n * \u67E5\u8BE2\u4E8C\u7EF4\u7801\u72B6\u6001\n */\n async getQRCodeStatus(qrToken: string): Promise<QRCodeStatusData> {\n const params = new URLSearchParams();\n params.append(\"qrToken\", qrToken);\n return this.client.get<QRCodeStatusData>(\"app/qrcode/status\", params);\n }\n\n /**\n * \u786E\u8BA4\u767B\u5F55\n */\n async confirmLogin(qrToken: string): Promise<{ token: string }> {\n return this.client.post<{ token: string }>(\"app/qrcode/confirm\", {\n qrToken,\n });\n }\n}\n", "/**\n * \u672C\u5730\u5B58\u50A8\u670D\u52A1\n */\n\nimport { promises as fs } from \"node:fs\";\nimport path from \"node:path\";\nimport os from \"node:os\";\nimport { stat, mkdir } from \"node:fs/promises\";\nimport type { UserInfo } from \"../../types/auth.js\";\nimport type { IStorageService, LocalConfig, StoredCredentials } from \"./storage-service.interface.js\";\nimport { StorageError } from \"../../errors/index.js\";\n\n// ==================== \u5E38\u91CF ====================\n\n/** \u914D\u7F6E\u6587\u4EF6\u540D */\nconst CONFIG_FILE_NAME = \".r2-cli\";\n\n/** \u914D\u7F6E\u6587\u4EF6\u7248\u672C */\nconst CONFIG_VERSION = \"1.0.0\";\n\n// ==================== \u5B58\u50A8\u670D\u52A1 ====================\n\n/**\n * \u5B58\u50A8\u670D\u52A1\u5B9E\u73B0\n */\nexport class StorageService implements IStorageService {\n private configPath: string;\n private config: LocalConfig;\n\n constructor() {\n // \u83B7\u53D6\u7528\u6237\u4E3B\u76EE\u5F55\n const homeDir = os.homedir();\n // \u521B\u5EFA .r2-cli \u76EE\u5F55\n const configDir = path.join(homeDir, CONFIG_FILE_NAME);\n // \u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84\n this.configPath = path.join(configDir, \"config.json\");\n\n this.config = { credentials: null };\n }\n\n /**\n * \u83B7\u53D6\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84\n */\n getConfigPath(): string {\n return this.configPath;\n }\n\n /**\n * \u52A0\u8F7D\u914D\u7F6E\n */\n private async loadConfig(): Promise<LocalConfig> {\n try {\n const content = await fs.readFile(this.configPath, \"utf-8\");\n const config = JSON.parse(content) as LocalConfig;\n this.config = config;\n return config;\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") {\n // \u6587\u4EF6\u4E0D\u5B58\u5728\uFF0C\u8FD4\u56DE\u7A7A\u914D\u7F6E\n return { credentials: null };\n }\n throw new StorageError(\n \"Failed to load config\",\n this.configPath,\n (error as NodeJS.ErrnoException).code,\n );\n }\n }\n\n /**\n * \u4FDD\u5B58\u914D\u7F6E\n */\n private async saveConfig(config: LocalConfig): Promise<void> {\n this.config = config;\n const content = JSON.stringify(config, null, 2);\n\n const dirPath = path.dirname(this.configPath);\n\n try {\n // \u68C0\u67E5\u76EE\u5F55\u662F\u5426\u5B58\u5728\uFF0C\u4E0D\u5B58\u5728\u5219\u521B\u5EFA\n await stat(dirPath);\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") {\n // \u76EE\u5F55\u4E0D\u5B58\u5728\uFF0C\u521B\u5EFA\u76EE\u5F55\n await mkdir(dirPath, { recursive: true });\n } else {\n throw new StorageError(\n \"Failed to create directory\",\n dirPath,\n (error as NodeJS.ErrnoException).code,\n );\n }\n }\n\n try {\n await fs.writeFile(this.configPath, content, \"utf-8\");\n } catch (error) {\n throw new StorageError(\n \"Failed to save config\",\n this.configPath,\n (error as NodeJS.ErrnoException).code,\n );\n }\n }\n\n /**\n * \u4FDD\u5B58\u767B\u5F55\u51ED\u8BC1\n */\n async saveCredentials(token: string, userInfo: UserInfo): Promise<void> {\n const credentials: StoredCredentials = {\n token,\n userInfo,\n timestamp: Date.now(),\n };\n\n let config: LocalConfig;\n try {\n config = await this.loadConfig();\n } catch (error) {\n // \u5982\u679C\u6587\u4EF6\u4E0D\u5B58\u5728\uFF0C\u521B\u5EFA\u7A7A\u914D\u7F6E\n config = { credentials: null };\n }\n config.credentials = credentials;\n await this.saveConfig(config);\n }\n\n /**\n * \u83B7\u53D6\u767B\u5F55\u51ED\u8BC1\n */\n async getCredentials(): Promise<StoredCredentials | null> {\n const config = await this.loadConfig();\n return config.credentials;\n }\n\n /**\n * \u6E05\u9664\u767B\u5F55\u51ED\u8BC1\n */\n async clearCredentials(): Promise<void> {\n const config = await this.loadConfig();\n config.credentials = null;\n await this.saveConfig(config);\n }\n\n /**\n * \u83B7\u53D6 token\n */\n async getToken(): Promise<string | null> {\n const credentials = await this.getCredentials();\n return credentials?.token ?? null;\n }\n\n /**\n * \u83B7\u53D6\u7528\u6237\u4FE1\u606F\n */\n async getUserInfo(): Promise<UserInfo | null> {\n const credentials = await this.getCredentials();\n return credentials?.userInfo ?? null;\n }\n\n /**\n * \u68C0\u67E5\u662F\u5426\u5DF2\u767B\u5F55\n */\n async isLoggedIn(): Promise<boolean> {\n const credentials = await this.getCredentials();\n return credentials !== null;\n }\n}\n\n// ==================== \u5DE5\u5382\u51FD\u6570 ====================\n\n/**\n * \u521B\u5EFA\u5B58\u50A8\u670D\u52A1\n */\nexport function createStorageService(): StorageService {\n return new StorageService();\n}\n", "/**\n * \u4EF7\u683C\u5206\u6790\u547D\u4EE4\n */\n\nimport { Command } from \"commander\";\nimport chalk from \"chalk\";\n\n/**\n * \u521B\u5EFA\u4EF7\u683C\u5206\u6790\u547D\u4EE4\n */\nexport function createPricingCommand(): Command {\n\n const command = new Command(\"pricing\");\n command.description(\"\u57FA\u4E8E\u771F\u5B9E\u6210\u4EA4\u6570\u636E\u7ED9\u51FA\u6536\u8D27\u4EF7\u4E0E\u552E\u5356\u4EF7\u5EFA\u8BAE\");\n command.option(\"--sku <sku>\", \"\u5546\u54C1SKU\");\n command.option(\"--condition <condition>\", \"\u5546\u54C1\u6210\u8272\");\n\n command.action((options: { sku?: string; condition?: string }) => {\n console.log(chalk.blue(\"\u6B63\u5728\u5206\u6790\u4EF7\u683C\u6570\u636E...\"));\n console.log(chalk.green(`SKU: ${options.sku || \"\u5168\u90E8\"}`));\n console.log(chalk.green(`\u6210\u8272: ${options.condition || \"\u5168\u65B0\"}`));\n console.log(chalk.yellow(\"\uD83D\uDCB0 \u5EFA\u8BAE\u6536\u8D27\u4EF7: \u00A58000\"));\n console.log(chalk.yellow(\"\uD83D\uDCB8 \u5EFA\u8BAE\u552E\u5356\u4EF7: \u00A512000\"));\n console.log(chalk.blue(\"\u4EF7\u683C\u5206\u6790\u5B8C\u6210\uFF01\"));\n });\n\n return command;\n}", "/**\n * \u62A5\u544A\u547D\u4EE4\n */\n\nimport { Command } from \"commander\";\nimport chalk from \"chalk\";\n\n/**\n * \u521B\u5EFA\u62A5\u544A\u547D\u4EE4\n */\nexport function createReportCommand(): Command {\n\n const command = new Command(\"report\");\n command.description(\"\u751F\u6210\u7ECF\u8425\u65E5\u62A5/\u5468\u62A5\");\n command.option(\"--type <type>\", \"\u62A5\u544A\u7C7B\u578B: daily, weekly\", \"daily\");\n\n command.action((options: { type?: string }) => {\n console.log(chalk.blue(`\u751F\u6210${options.type === \"daily\" ? \"\u65E5\u62A5\" : \"\u5468\u62A5\"}...`));\n console.log(chalk.green(\"\uD83D\uDCCA \u9500\u552E\u6570\u636E\"));\n console.log(chalk.green(\"\uD83D\uDCC8 \u6BDB\u5229\u5206\u6790\"));\n console.log(chalk.green(\"\u23F0 \u5E93\u9F84\u5206\u6790\"));\n console.log(chalk.green(\"\u26A0\uFE0F \u5F02\u5E38\u6CE2\u52A8\"));\n console.log(chalk.blue(`${options.type === \"daily\" ? \"\u65E5\u62A5\" : \"\u5468\u62A5\"}\u751F\u6210\u5B8C\u6210\uFF01`));\n });\n\n return command;\n}", "/**\n * \u5E93\u5B58\u98CE\u9669\u547D\u4EE4\n */\n\nimport { Command } from \"commander\";\nimport chalk from \"chalk\";\n\n/**\n * \u521B\u5EFA\u5E93\u5B58\u98CE\u9669\u547D\u4EE4\n */\nexport function createRiskCommand(): Command {\n\n const command = new Command(\"risk\");\n command.description(\"\u5E93\u5B58\u98CE\u9669\u8BC6\u522B\");\n command.option(\"--warehouse <warehouse>\", \"\u4ED3\u5E93\u4EE3\u7801\");\n\n command.action((options: { warehouse?: string }) => {\n console.log(chalk.blue(\"\u6B63\u5728\u8BC6\u522B\u5E93\u5B58\u98CE\u9669...\"));\n console.log(chalk.green(`\u4ED3\u5E93: ${options.warehouse || \"\u5168\u90E8\"}`));\n console.log(chalk.yellow(\"\u26A0\uFE0F \u6EDE\u9500\u9884\u8B66: 15 \u4EF6\u5546\u54C1\"));\n console.log(chalk.yellow(\"\uD83D\uDCC9 \u8D2C\u503C\u901A\u9053: 8 \u4EF6\u5546\u54C1\"));\n console.log(chalk.yellow(\"\u23F0 \u5E93\u9F84\u8D85\u671F: 5 \u4EF6\u5546\u54C1\"));\n console.log(chalk.blue(\"\u5E93\u5B58\u98CE\u9669\u8BC6\u522B\u5B8C\u6210\uFF01\"));\n });\n\n return command;\n}", "/**\n * AI \u804A\u5929\u547D\u4EE4\n */\n\nimport { Command } from \"commander\";\nimport chalk from \"chalk\";\n\n/**\n * \u521B\u5EFA\u804A\u5929\u547D\u4EE4\n */\nexport function createChatCommand(): Command {\n\n const command = new Command(\"chat\");\n command.description(\"\u4E0E AI \u52A9\u624B\u804A\u5929\uFF0C\u83B7\u53D6\u7ECF\u8425\u5EFA\u8BAE\");\n\n command.action(() => {\n console.log(chalk.blue(\"\u6B63\u5728\u8FDE\u63A5 AI \u52A9\u624B...\"));\n console.log(chalk.green(\"\u2705 \u5DF2\u8FDE\u63A5 Claude AI\"));\n console.log(chalk.yellow(\"\uD83D\uDCAC \u8BF7\u8F93\u5165\u60A8\u7684\u95EE\u9898...\"));\n console.log(chalk.gray(\"\u793A\u4F8B\uFF1A\u5206\u6790\u672C\u5468\u9500\u552E\u6570\u636E\"));\n console.log(chalk.blue(\"AI \u804A\u5929\u529F\u80FD\u5F00\u53D1\u4E2D...\"));\n });\n\n return command;\n}", "/**\n * AI \u6280\u80FD\u7BA1\u7406\u547D\u4EE4\n */\n\nimport { Command } from \"commander\";\nimport chalk from \"chalk\";\n\n/**\n * \u521B\u5EFA\u6280\u80FD\u7BA1\u7406\u547D\u4EE4\n */\nexport function createSkillsCommand(): Command {\n\n const command = new Command(\"skills\");\n command.description(\"AI Agent \u6280\u80FD\u7BA1\u7406\");\n\n command.action(() => {\n console.log(chalk.blue(\"AI Agent \u6280\u80FD\u7BA1\u7406\"));\n console.log(chalk.green(\"\uD83D\uDD27 \u5DF2\u5B89\u88C5\u7684\u6280\u80FD:\"));\n console.log(chalk.green(\" - \u7ECF\u8425\u5206\u6790\"));\n console.log(chalk.green(\" - \u4EF7\u683C\u67E5\u8BE2\"));\n console.log(chalk.green(\" - \u5E93\u5B58\u7BA1\u7406\"));\n console.log(chalk.yellow(\"\uD83D\uDCA1 \u4F7F\u7528 'r2 ai chat' \u5F00\u59CB\u5BF9\u8BDD\"));\n });\n\n return command;\n}"],
5
- "mappings": "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",
6
- "names": ["Command", "path", "chalk", "chalk", "path", "path", "require", "Command", "chalk", "Command", "chalk", "Command", "chalk", "Command", "chalk", "Command", "chalk", "program", "chalk", "chalk", "path", "program", "Command"]
7
- }