@round2ai/r2-cli 1.0.1 → 1.0.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/README.md +1 -1
- package/dist/index.js +842 -230
- package/dist/index.js.map +7 -1
- package/package.json +13 -5
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
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
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@round2ai/r2-cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "R2-CLI,向 AI 开放二手潮奢交易全链路能力",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -14,8 +14,10 @@
|
|
|
14
14
|
"README.md"
|
|
15
15
|
],
|
|
16
16
|
"scripts": {
|
|
17
|
-
"build": "
|
|
18
|
-
"
|
|
17
|
+
"build": "node scripts/build.js",
|
|
18
|
+
"build:prod": "cross-env R2_API_URL=https://api.puresnake.com node scripts/build.js",
|
|
19
|
+
"dev": "nodemon --exec ts-node src/index.ts",
|
|
20
|
+
"publish:prod": "npm run build:prod && npm publish"
|
|
19
21
|
},
|
|
20
22
|
"keywords": [
|
|
21
23
|
"round2ai",
|
|
@@ -35,12 +37,18 @@
|
|
|
35
37
|
"figlet": "^1.11.0",
|
|
36
38
|
"fs-extra": "^11.3.4",
|
|
37
39
|
"inquirer": "^9.2.19",
|
|
38
|
-
"mammoth": "^1.12.0"
|
|
40
|
+
"mammoth": "^1.12.0",
|
|
41
|
+
"open": "^11.0.0",
|
|
42
|
+
"qrcode-terminal": "^0.12.0"
|
|
39
43
|
},
|
|
40
44
|
"devDependencies": {
|
|
41
45
|
"@types/fs-extra": "^11.0.4",
|
|
42
46
|
"@types/inquirer": "^9.0.7",
|
|
43
|
-
"@types/node": "^25.5.
|
|
47
|
+
"@types/node": "^25.5.2",
|
|
48
|
+
"@types/open": "^6.1.0",
|
|
49
|
+
"@types/qrcode-terminal": "^0.12.2",
|
|
50
|
+
"cross-env": "^10.1.0",
|
|
51
|
+
"esbuild": "^0.28.0",
|
|
44
52
|
"ts-node": "^10.9.2",
|
|
45
53
|
"typescript": "^6.0.2"
|
|
46
54
|
}
|
package/dist/index.d.ts
DELETED
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|