@round2ai/r2-cli 1.0.1 → 1.0.2

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.
Files changed (157) hide show
  1. package/dist/api.d.ts +45 -0
  2. package/dist/api.d.ts.map +1 -0
  3. package/dist/api.js +90 -0
  4. package/dist/api.js.map +1 -0
  5. package/dist/auth.d.ts +35 -0
  6. package/dist/auth.d.ts.map +1 -0
  7. package/dist/auth.js +240 -0
  8. package/dist/auth.js.map +1 -0
  9. package/dist/commands/ai/chat.d.ts +9 -0
  10. package/dist/commands/ai/chat.d.ts.map +1 -0
  11. package/dist/commands/ai/chat.js +16 -0
  12. package/dist/commands/ai/chat.js.map +1 -0
  13. package/dist/commands/ai/skills.d.ts +9 -0
  14. package/dist/commands/ai/skills.d.ts.map +1 -0
  15. package/dist/commands/ai/skills.js +16 -0
  16. package/dist/commands/ai/skills.js.map +1 -0
  17. package/dist/commands/auth/login.d.ts +24 -0
  18. package/dist/commands/auth/login.d.ts.map +1 -0
  19. package/dist/commands/auth/login.js +288 -0
  20. package/dist/commands/auth/login.js.map +1 -0
  21. package/dist/commands/auth/logout.d.ts +16 -0
  22. package/dist/commands/auth/logout.d.ts.map +1 -0
  23. package/dist/commands/auth/logout.js +49 -0
  24. package/dist/commands/auth/logout.js.map +1 -0
  25. package/dist/commands/auth/status.d.ts +28 -0
  26. package/dist/commands/auth/status.d.ts.map +1 -0
  27. package/dist/commands/auth/status.js +92 -0
  28. package/dist/commands/auth/status.js.map +1 -0
  29. package/dist/commands/base.d.ts +107 -0
  30. package/dist/commands/base.d.ts.map +1 -0
  31. package/dist/commands/base.js +153 -0
  32. package/dist/commands/base.js.map +1 -0
  33. package/dist/commands/business/pricing.d.ts +9 -0
  34. package/dist/commands/business/pricing.d.ts.map +1 -0
  35. package/dist/commands/business/pricing.js +16 -0
  36. package/dist/commands/business/pricing.js.map +1 -0
  37. package/dist/commands/business/report.d.ts +9 -0
  38. package/dist/commands/business/report.d.ts.map +1 -0
  39. package/dist/commands/business/report.js +16 -0
  40. package/dist/commands/business/report.js.map +1 -0
  41. package/dist/commands/inventory/risk.d.ts +9 -0
  42. package/dist/commands/inventory/risk.d.ts.map +1 -0
  43. package/dist/commands/inventory/risk.js +16 -0
  44. package/dist/commands/inventory/risk.js.map +1 -0
  45. package/dist/config.d.ts +54 -0
  46. package/dist/config.d.ts.map +1 -0
  47. package/dist/config.js +111 -0
  48. package/dist/config.js.map +1 -0
  49. package/dist/index.d.ts +4 -0
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +66 -116
  52. package/dist/index.js.map +1 -1
  53. package/dist/query/executor.d.ts +138 -0
  54. package/dist/query/executor.d.ts.map +1 -0
  55. package/dist/query/executor.js +232 -0
  56. package/dist/query/executor.js.map +1 -0
  57. package/dist/query/types.d.ts +116 -0
  58. package/dist/query/types.d.ts.map +1 -0
  59. package/dist/query/types.js +15 -0
  60. package/dist/query/types.js.map +1 -0
  61. package/dist/query/utils.d.ts +99 -0
  62. package/dist/query/utils.d.ts.map +1 -0
  63. package/dist/query/utils.js +151 -0
  64. package/dist/query/utils.js.map +1 -0
  65. package/dist/services/ServiceContainer.d.ts +110 -0
  66. package/dist/services/ServiceContainer.d.ts.map +1 -0
  67. package/dist/services/ServiceContainer.js +242 -0
  68. package/dist/services/ServiceContainer.js.map +1 -0
  69. package/dist/services/api/client.d.ts +88 -0
  70. package/dist/services/api/client.d.ts.map +1 -0
  71. package/dist/services/api/client.js +188 -0
  72. package/dist/services/api/client.js.map +1 -0
  73. package/dist/services/api/types.d.ts +233 -0
  74. package/dist/services/api/types.d.ts.map +1 -0
  75. package/dist/services/api/types.js +83 -0
  76. package/dist/services/api/types.js.map +1 -0
  77. package/dist/services/auth/provider.d.ts +73 -0
  78. package/dist/services/auth/provider.d.ts.map +1 -0
  79. package/dist/services/auth/provider.js +339 -0
  80. package/dist/services/auth/provider.js.map +1 -0
  81. package/dist/services/auth/session.d.ts +73 -0
  82. package/dist/services/auth/session.d.ts.map +1 -0
  83. package/dist/services/auth/session.js +200 -0
  84. package/dist/services/auth/session.js.map +1 -0
  85. package/dist/services/business/demand.d.ts +70 -0
  86. package/dist/services/business/demand.d.ts.map +1 -0
  87. package/dist/services/business/demand.js +240 -0
  88. package/dist/services/business/demand.js.map +1 -0
  89. package/dist/services/business/fulfillment.d.ts +122 -0
  90. package/dist/services/business/fulfillment.d.ts.map +1 -0
  91. package/dist/services/business/fulfillment.js +267 -0
  92. package/dist/services/business/fulfillment.js.map +1 -0
  93. package/dist/services/business/inventory.d.ts +54 -0
  94. package/dist/services/business/inventory.d.ts.map +1 -0
  95. package/dist/services/business/inventory.js +245 -0
  96. package/dist/services/business/inventory.js.map +1 -0
  97. package/dist/services/business/pricing.d.ts +41 -0
  98. package/dist/services/business/pricing.d.ts.map +1 -0
  99. package/dist/services/business/pricing.js +133 -0
  100. package/dist/services/business/pricing.js.map +1 -0
  101. package/dist/services/business/report.d.ts +74 -0
  102. package/dist/services/business/report.d.ts.map +1 -0
  103. package/dist/services/business/report.js +380 -0
  104. package/dist/services/business/report.js.map +1 -0
  105. package/dist/services/config/manager.d.ts +105 -0
  106. package/dist/services/config/manager.d.ts.map +1 -0
  107. package/dist/services/config/manager.js +324 -0
  108. package/dist/services/config/manager.js.map +1 -0
  109. package/dist/services/config/types.d.ts +128 -0
  110. package/dist/services/config/types.d.ts.map +1 -0
  111. package/dist/services/config/types.js +209 -0
  112. package/dist/services/config/types.js.map +1 -0
  113. package/dist/services/index.d.ts +17 -0
  114. package/dist/services/index.d.ts.map +1 -0
  115. package/dist/services/index.js +44 -0
  116. package/dist/services/index.js.map +1 -0
  117. package/dist/services/storage/index.d.ts +63 -0
  118. package/dist/services/storage/index.d.ts.map +1 -0
  119. package/dist/services/storage/index.js +136 -0
  120. package/dist/services/storage/index.js.map +1 -0
  121. package/dist/types/api.d.ts +58 -0
  122. package/dist/types/api.d.ts.map +1 -0
  123. package/dist/types/api.js +5 -0
  124. package/dist/types/api.js.map +1 -0
  125. package/dist/types/auth.d.ts +59 -0
  126. package/dist/types/auth.d.ts.map +1 -0
  127. package/dist/types/auth.js +11 -0
  128. package/dist/types/auth.js.map +1 -0
  129. package/dist/types/business.d.ts +201 -0
  130. package/dist/types/business.d.ts.map +1 -0
  131. package/dist/types/business.js +5 -0
  132. package/dist/types/business.js.map +1 -0
  133. package/dist/types/command.d.ts +106 -0
  134. package/dist/types/command.d.ts.map +1 -0
  135. package/dist/types/command.js +5 -0
  136. package/dist/types/command.js.map +1 -0
  137. package/dist/types/config.d.ts +66 -0
  138. package/dist/types/config.d.ts.map +1 -0
  139. package/dist/types/config.js +5 -0
  140. package/dist/types/config.js.map +1 -0
  141. package/dist/utils/async.d.ts +79 -0
  142. package/dist/utils/async.d.ts.map +1 -0
  143. package/dist/utils/async.js +179 -0
  144. package/dist/utils/async.js.map +1 -0
  145. package/dist/utils/format.d.ts +90 -0
  146. package/dist/utils/format.d.ts.map +1 -0
  147. package/dist/utils/format.js +227 -0
  148. package/dist/utils/format.js.map +1 -0
  149. package/dist/utils/logger.d.ts +136 -0
  150. package/dist/utils/logger.d.ts.map +1 -0
  151. package/dist/utils/logger.js +249 -0
  152. package/dist/utils/logger.js.map +1 -0
  153. package/dist/utils/validation.d.ts +100 -0
  154. package/dist/utils/validation.d.ts.map +1 -0
  155. package/dist/utils/validation.js +334 -0
  156. package/dist/utils/validation.js.map +1 -0
  157. package/package.json +6 -2
package/dist/index.js CHANGED
@@ -1,43 +1,35 @@
1
1
  #!/usr/bin/env node
2
+ /**
3
+ * R2-CLI 主入口
4
+ * 向 AI 开放二手潮奢交易全链路能力
5
+ */
2
6
  import { Command } from "commander";
3
7
  import fse from "fs-extra";
4
8
  import path from "node:path";
5
9
  import chalk from "chalk";
6
- import inquirer from "inquirer";
7
10
  import figlet from "figlet";
8
11
  // 显示欢迎信息
9
- console.log(chalk.cyan(figlet.textSync("R2-CLI,向 AI 开放二手潮奢交易全链路能力", {
12
+ console.log(chalk.cyan(figlet.textSync("R2-CLI", {
10
13
  font: "Standard",
11
14
  horizontalLayout: "full",
12
15
  })));
16
+ console.log(chalk.gray("向 AI 开放二手潮奢交易全链路能力\n"));
13
17
  const pkgJson = fse.readJSONSync(path.join(import.meta.dirname, "../package.json"));
14
18
  const program = new Command();
15
19
  // 当前版本号
16
- program.name("r2").description("R2-CLI,向 AI 开放二手潮奢交易全链路能力").version(pkgJson.version, "-v, --version");
17
- // auth 命令
20
+ program
21
+ .name("r2")
22
+ .description("R2-CLI,向 AI 开放二手潮奢交易全链路能力")
23
+ .version(pkgJson.version, "-v, --version");
24
+ // ==================== 认证命令 ====================
18
25
  const authCommand = program.command("auth").description("授权管理");
19
- authCommand
20
- .command("login")
21
- .description("登录 Round2AI 账户")
22
- .action(async () => {
23
- const answers = await inquirer.prompt([
24
- {
25
- type: "input",
26
- name: "username",
27
- message: "请输入用户名:",
28
- validate: (input) => input.trim() !== "",
29
- },
30
- {
31
- type: "password",
32
- name: "password",
33
- message: "请输入密码:",
34
- validate: (input) => input.trim() !== "",
35
- },
36
- ]);
37
- console.log(chalk.green("登录成功!"));
38
- console.log(chalk.blue(`欢迎回来,${answers.username}!`));
39
- });
40
- // 数据对接命令
26
+ // 导入认证命令
27
+ import { createLoginCommand, createLogoutCommand, createStatusCommand, } from "./commands/auth/login.js";
28
+ // 添加认证命令
29
+ authCommand.addCommand(createLoginCommand());
30
+ authCommand.addCommand(createLogoutCommand());
31
+ authCommand.addCommand(createStatusCommand());
32
+ // ==================== 数据对接命令 ====================
41
33
  program
42
34
  .command("ingest")
43
35
  .description("对接主流 ERP,统一多渠道经营数据")
@@ -48,7 +40,7 @@ program
48
40
  console.log(chalk.green("✅ 已对接仓储履约数据"));
49
41
  console.log(chalk.blue("数据对接完成!"));
50
42
  });
51
- // 经营分析命令
43
+ // ==================== 经营分析命令 ====================
52
44
  const reportCommand = program.command("report").description("生成经营日报/周报");
53
45
  reportCommand.option("--type <type>", "报告类型: daily, weekly", "daily").action((options) => {
54
46
  console.log(chalk.blue(`生成${options.type === "daily" ? "日报" : "周报"}...`));
@@ -58,23 +50,14 @@ reportCommand.option("--type <type>", "报告类型: daily, weekly", "daily").ac
58
50
  console.log(chalk.green("⚠️ 异常波动"));
59
51
  console.log(chalk.blue(`${options.type === "daily" ? "日报" : "周报"}生成完成!`));
60
52
  });
53
+ // ==================== 自然语言查询命令 ====================
61
54
  program
62
55
  .command("ask")
63
56
  .description("自然语言查询经营数据")
64
- .action(async () => {
65
- const { question } = await inquirer.prompt([
66
- {
67
- type: "input",
68
- name: "question",
69
- message: "请输入您的问题:",
70
- validate: (input) => input.trim() !== "",
71
- },
72
- ]);
73
- console.log(chalk.blue("正在分析您的问题..."));
74
- console.log(chalk.green(`根据您的问题 "${question}",以下是分析结果:`));
75
- console.log(chalk.yellow("📊 数据结果将在此显示"));
57
+ .action(() => {
58
+ console.log("自然语言查询功能开发中...");
76
59
  });
77
- // 市场分析命令
60
+ // ==================== 市场分析命令 ====================
78
61
  const demandCommand = program.command("demand").description("扫描市场需求热度与供需缺口");
79
62
  demandCommand
80
63
  .option("--sku <sku>", "商品SKU")
@@ -87,29 +70,7 @@ demandCommand
87
70
  console.log(chalk.yellow("📈 供需缺口: 20%"));
88
71
  console.log(chalk.blue("市场需求分析完成!"));
89
72
  });
90
- const simulateCommand = program.command("simulate").description("竞价成交模拟");
91
- simulateCommand
92
- .option("--sku <sku>", "商品SKU")
93
- .option("--price <price>", "出价")
94
- .action((options) => {
95
- console.log(chalk.blue("正在模拟竞价成交..."));
96
- console.log(chalk.green(`SKU: ${options.sku}`));
97
- console.log(chalk.green(`出价: ¥${options.price}`));
98
- console.log(chalk.yellow("📊 预估成交率: 85%"));
99
- console.log(chalk.yellow("💰 预估利润空间: 15%"));
100
- console.log(chalk.blue("竞价模拟完成!"));
101
- });
102
- program
103
- .command("bidding-strategy")
104
- .description("基于预算与品类生成竞价策略建议")
105
- .action(() => {
106
- console.log(chalk.blue("正在生成竞价策略..."));
107
- console.log(chalk.green("🎯 策略目标: 最大化成交率"));
108
- console.log(chalk.green("💸 预算分配: 高需求品类 60%,中需求品类 30%,低需求品类 10%"));
109
- console.log(chalk.yellow("📈 建议出价区间: ¥800-¥1200"));
110
- console.log(chalk.blue("竞价策略生成完成!"));
111
- });
112
- // 价格分析命令
73
+ // ==================== 价格分析命令 ====================
113
74
  const pricingCommand = program.command("pricing").description("基于真实成交数据给出收货价与售卖价建议");
114
75
  pricingCommand
115
76
  .option("--sku <sku>", "商品SKU")
@@ -122,21 +83,7 @@ pricingCommand
122
83
  console.log(chalk.yellow("💸 建议售卖价: ¥12000"));
123
84
  console.log(chalk.blue("价格分析完成!"));
124
85
  });
125
- program
126
- .command("sell-optimize")
127
- .description("在售商品的定价与渠道优化建议")
128
- .action(() => {
129
- console.log(chalk.blue("正在优化在售商品..."));
130
- console.log(chalk.green("📊 定价优化:"));
131
- console.log(chalk.green(" - 高需求商品: 上调 5%"));
132
- console.log(chalk.green(" - 低需求商品: 下调 10%"));
133
- console.log(chalk.green("📈 渠道优化:"));
134
- console.log(chalk.green(" - 线上电商: 60% 库存"));
135
- console.log(chalk.green(" - 线下门店: 30% 库存"));
136
- console.log(chalk.green(" - 二手平台: 10% 库存"));
137
- console.log(chalk.blue("优化建议生成完成!"));
138
- });
139
- // 库存与履约命令
86
+ // ==================== 库存与履约命令 ====================
140
87
  const inventoryCommand = program.command("inventory").description("库存管理");
141
88
  inventoryCommand
142
89
  .command("risk")
@@ -161,7 +108,44 @@ program
161
108
  console.log(chalk.green("🚚 发货: 进行中"));
162
109
  console.log(chalk.blue("履约追踪完成!"));
163
110
  });
164
- // 经营决策命令
111
+ // ==================== AI 命令模块 ====================
112
+ const aiCommand = program.command("ai").description("AI 相关功能");
113
+ aiCommand
114
+ .command("chat")
115
+ .description("与 AI 助手聊天,获取经营建议")
116
+ .action(() => {
117
+ console.log("AI 聊天功能开发中...");
118
+ });
119
+ aiCommand
120
+ .command("skills")
121
+ .description("AI Agent 技能管理")
122
+ .action(() => {
123
+ console.log("技能管理功能开发中...");
124
+ });
125
+ // ==================== 竞价模拟命令 ====================
126
+ const simulateCommand = program.command("simulate").description("竞价成交模拟");
127
+ simulateCommand
128
+ .option("--sku <sku>", "商品SKU")
129
+ .option("--price <price>", "出价")
130
+ .action((options) => {
131
+ console.log(chalk.blue("正在模拟竞价成交..."));
132
+ console.log(chalk.green(`SKU: ${options.sku}`));
133
+ console.log(chalk.green(`出价: ¥${options.price}`));
134
+ console.log(chalk.yellow("📊 预估成交率: 85%"));
135
+ console.log(chalk.yellow("💰 预估利润空间: 15%"));
136
+ console.log(chalk.blue("竞价模拟完成!"));
137
+ });
138
+ program
139
+ .command("bidding-strategy")
140
+ .description("基于预算与品类生成竞价策略建议")
141
+ .action(() => {
142
+ console.log(chalk.blue("正在生成竞价策略..."));
143
+ console.log(chalk.green("🎯 策略目标: 最大化成交率"));
144
+ console.log(chalk.green("💸 预算分配: 高需求品类 60%,中需求品类 30%,低需求品类 10%"));
145
+ console.log(chalk.yellow("📈 建议出价区间: ¥800-¥1200"));
146
+ console.log(chalk.blue("竞价策略生成完成!"));
147
+ });
148
+ // ==================== 经营决策命令 ====================
165
149
  const decideCommand = program.command("decide").description("综合数据输出经营动作建议");
166
150
  decideCommand
167
151
  .option("--store <store>", "店铺代码")
@@ -176,42 +160,7 @@ decideCommand
176
160
  console.log(chalk.yellow("⚠️ 风控建议: 加强高价值商品的质检流程"));
177
161
  console.log(chalk.blue("经营决策建议生成完成!"));
178
162
  });
179
- // AI 命令模块
180
- const aiCommand = program.command("ai").description("AI 相关功能");
181
- aiCommand
182
- .command("chat")
183
- .description("与 AI 助手聊天,获取经营建议")
184
- .action(async () => {
185
- const { message } = await inquirer.prompt([
186
- {
187
- type: "input",
188
- name: "message",
189
- message: "请输入您的问题或需求:",
190
- validate: (input) => input.trim() !== "",
191
- },
192
- ]);
193
- console.log(chalk.blue("正在与 AI 助手交流..."));
194
- console.log(chalk.green(`AI 助手: 正在分析您的需求 "${message}"`));
195
- console.log(chalk.yellow("📊 分析中..."));
196
- console.log(chalk.green("AI 助手: 基于您的需求,我建议您执行以下操作:"));
197
- console.log(chalk.green("1. 查看本周销售数据: r2 report --type weekly"));
198
- console.log(chalk.green('2. 分析热门商品: r2 demand --sku "Air Jordan 1"'));
199
- console.log(chalk.green("3. 检查库存风险: r2 inventory risk"));
200
- console.log(chalk.blue("AI 助手对话完成!"));
201
- });
202
- aiCommand
203
- .command("skills")
204
- .description("AI Agent 技能管理")
205
- .action(() => {
206
- console.log(chalk.blue("AI Agent 技能管理"));
207
- console.log(chalk.green("📚 已安装的技能:"));
208
- console.log(chalk.green(" - 经营分析技能"));
209
- console.log(chalk.green(" - 市场分析技能"));
210
- console.log(chalk.green(" - 价格分析技能"));
211
- console.log(chalk.green(" - 库存管理技能"));
212
- console.log(chalk.blue("技能管理完成!"));
213
- });
214
- // AI Agent 集成命令
163
+ // ==================== AI Agent 集成命令 ====================
215
164
  program
216
165
  .command("agent")
217
166
  .description("AI Agent 集成")
@@ -232,5 +181,6 @@ program.configureOutput({
232
181
  console.error(`❌ 错误: ${error}`);
233
182
  },
234
183
  });
235
- program.parse(process.argv); // 解析命令行参数
184
+ // 解析命令行参数
185
+ program.parse(process.argv);
236
186
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * 查询执行器 - 参考 claude-code 的 query.ts 设计
3
+ * 支持异步流式输出、进度报告、状态管理
4
+ */
5
+ /** 查询进度事件类型 */
6
+ export type ProgressEventType = "start" | "update" | "complete" | "error";
7
+ /** 查询进度事件 */
8
+ export interface ProgressEvent {
9
+ type: ProgressEventType;
10
+ message: string;
11
+ progress?: number;
12
+ timestamp?: number;
13
+ }
14
+ /** 查询结果元数据 */
15
+ export interface QueryMetadata {
16
+ duration: number;
17
+ success: boolean;
18
+ errors?: string[];
19
+ [key: string]: unknown;
20
+ }
21
+ /** 查询结果 */
22
+ export interface QueryResult<T = unknown> {
23
+ data: T;
24
+ metadata: QueryMetadata;
25
+ progress?: ProgressEvent[];
26
+ }
27
+ /** 查询定义 */
28
+ export interface QueryDefinition<T = unknown> {
29
+ /** 查询唯一标识 */
30
+ id: string;
31
+ /** 查询描述 */
32
+ description: string;
33
+ /** 查询执行依赖 */
34
+ deps: QueryDeps;
35
+ /** 查询执行函数 */
36
+ execute: (deps: QueryDeps, signal?: AbortSignal) => Promise<T>;
37
+ /** 查询选项 */
38
+ options?: {
39
+ /** 超时时间(毫秒) */
40
+ timeout?: number;
41
+ /** 是否启用进度报告 */
42
+ enableProgress?: boolean;
43
+ };
44
+ }
45
+ /** 查询依赖 */
46
+ export interface QueryDeps {
47
+ /** 信号控制器 */
48
+ signal: AbortSignal | null;
49
+ /** 生成 UUID */
50
+ uuid: () => string;
51
+ /** API 客户端 */
52
+ api: {
53
+ get: <T = unknown>(url: string) => Promise<T>;
54
+ post: <T = unknown>(url: string, body?: unknown) => Promise<T>;
55
+ };
56
+ /** 日志记录 */
57
+ log: {
58
+ info: (message: string) => void;
59
+ error: (message: string, error?: unknown) => void;
60
+ debug: (message: string) => void;
61
+ };
62
+ }
63
+ /** 查询状态 */
64
+ export type QueryStatus = "idle" | "running" | "completed" | "error" | "aborted";
65
+ /** 查询上下文 - 查询执行过程中的状态管理 */
66
+ export interface QueryContext<T = unknown> {
67
+ /** 查询 ID */
68
+ id: string;
69
+ /** 查询状态 */
70
+ status: QueryStatus;
71
+ /** 开始时间 */
72
+ startTime: number;
73
+ /** 结束时间 */
74
+ endTime?: number;
75
+ /** 当前进度 */
76
+ progress: number;
77
+ /** 进度事件历史 */
78
+ progressEvents: ProgressEvent[];
79
+ /** 结果数据 */
80
+ result?: QueryResult<T>;
81
+ /** 错误信息 */
82
+ error?: Error;
83
+ }
84
+ /**
85
+ * 异步查询执行器
86
+ *
87
+ * 参考 claude-code 的 query 函数设计,使用 AsyncGenerator 模式
88
+ * 支持流式输出进度事件和最终结果
89
+ *
90
+ * @example
91
+ * ```typescript
92
+ * const query: QueryDefinition<UserInfo> = {
93
+ * id: "qrcode-login",
94
+ * description: "扫码登录",
95
+ * deps: deps,
96
+ * execute: async (deps, signal) => {
97
+ * return await loginWithQrcode(deps, signal);
98
+ * }
99
+ * };
100
+ *
101
+ * for await (const event of executeQuery(query)) {
102
+ * if (event.type === "progress") {
103
+ * console.log(event.message, event.progress);
104
+ * } else if (event.type === "result") {
105
+ * console.log("完成:", event.data);
106
+ * }
107
+ * }
108
+ * ```
109
+ */
110
+ export declare function executeQuery<T = unknown>(query: QueryDefinition<T>, customDeps?: Partial<QueryDeps>): AsyncGenerator<ProgressEvent | QueryResult<T>, QueryResult<T>, unknown>;
111
+ /**
112
+ * 轮询查询执行器 - 适用于需要轮询检查状态的场景
113
+ * 如:扫码登录状态轮询
114
+ */
115
+ export interface PollingQueryOptions<T> {
116
+ /** 轮询间隔(毫秒) */
117
+ interval: number;
118
+ /** 超时时间(毫秒) */
119
+ timeout: number;
120
+ /** 条件函数 - 判断是否完成 */
121
+ condition: (data: T) => boolean;
122
+ /** 进度回调 */
123
+ onProgress?: (progress: number, message: string) => void;
124
+ }
125
+ export declare function executePollingQuery<T = unknown>(query: QueryDefinition<T>, options: PollingQueryOptions<T>): AsyncGenerator<ProgressEvent | QueryResult<T>, QueryResult<T>, unknown>;
126
+ /**
127
+ * 延迟函数
128
+ */
129
+ export declare function sleep(ms: number): Promise<void>;
130
+ /**
131
+ * 生成 UUID
132
+ */
133
+ export declare function createUUID(): string;
134
+ /**
135
+ * 创建默认的查询依赖
136
+ */
137
+ export declare function createDefaultDeps(signal?: AbortSignal | null): QueryDeps;
138
+ //# sourceMappingURL=executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/query/executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,232 @@
1
+ /**
2
+ * 查询执行器 - 参考 claude-code 的 query.ts 设计
3
+ * 支持异步流式输出、进度报告、状态管理
4
+ */
5
+ // ==================== 查询执行器 ====================
6
+ /**
7
+ * 异步查询执行器
8
+ *
9
+ * 参考 claude-code 的 query 函数设计,使用 AsyncGenerator 模式
10
+ * 支持流式输出进度事件和最终结果
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const query: QueryDefinition<UserInfo> = {
15
+ * id: "qrcode-login",
16
+ * description: "扫码登录",
17
+ * deps: deps,
18
+ * execute: async (deps, signal) => {
19
+ * return await loginWithQrcode(deps, signal);
20
+ * }
21
+ * };
22
+ *
23
+ * for await (const event of executeQuery(query)) {
24
+ * if (event.type === "progress") {
25
+ * console.log(event.message, event.progress);
26
+ * } else if (event.type === "result") {
27
+ * console.log("完成:", event.data);
28
+ * }
29
+ * }
30
+ * ```
31
+ */
32
+ export async function* executeQuery(query, customDeps) {
33
+ const deps = {
34
+ ...query.deps,
35
+ ...customDeps,
36
+ };
37
+ const ctx = {
38
+ id: query.id,
39
+ status: "idle",
40
+ startTime: Date.now(),
41
+ progress: 0,
42
+ progressEvents: [],
43
+ };
44
+ ctx.status = "running";
45
+ try {
46
+ // 发送开始事件
47
+ const startEvent = {
48
+ type: "start",
49
+ message: `开始执行: ${query.description}`,
50
+ timestamp: Date.now(),
51
+ };
52
+ ctx.progressEvents.push(startEvent);
53
+ yield startEvent;
54
+ // 执行查询
55
+ const startTime = Date.now();
56
+ const data = await query.execute(deps, deps.signal ?? undefined);
57
+ const duration = Date.now() - startTime;
58
+ // 发送完成事件
59
+ const completeEvent = {
60
+ type: "complete",
61
+ message: `${query.description} 完成`,
62
+ progress: 100,
63
+ timestamp: Date.now(),
64
+ };
65
+ ctx.progressEvents.push(completeEvent);
66
+ yield completeEvent;
67
+ // 构建结果
68
+ const result = {
69
+ data,
70
+ metadata: {
71
+ duration,
72
+ success: true,
73
+ },
74
+ progress: ctx.progressEvents,
75
+ };
76
+ ctx.status = "completed";
77
+ ctx.endTime = Date.now();
78
+ ctx.result = result;
79
+ return result;
80
+ }
81
+ catch (error) {
82
+ const errorMessage = error instanceof Error ? error.message : String(error);
83
+ // 发送错误事件
84
+ const errorEvent = {
85
+ type: "error",
86
+ message: `执行失败: ${errorMessage}`,
87
+ timestamp: Date.now(),
88
+ };
89
+ ctx.progressEvents.push(errorEvent);
90
+ yield errorEvent;
91
+ ctx.status = "error";
92
+ ctx.endTime = Date.now();
93
+ ctx.error = error instanceof Error ? error : new Error(errorMessage);
94
+ // 返回错误结果
95
+ const errorResult = {
96
+ data: null,
97
+ metadata: {
98
+ duration: Date.now() - ctx.startTime,
99
+ success: false,
100
+ errors: [errorMessage],
101
+ },
102
+ progress: ctx.progressEvents,
103
+ };
104
+ throw error;
105
+ }
106
+ }
107
+ export async function* executePollingQuery(query, options) {
108
+ const { interval, timeout, condition, onProgress } = options;
109
+ const startTime = Date.now();
110
+ yield {
111
+ type: "start",
112
+ message: `开始轮询: ${query.description}`,
113
+ timestamp: startTime,
114
+ };
115
+ let attempts = 0;
116
+ let lastData = null;
117
+ while (Date.now() - startTime < timeout) {
118
+ attempts++;
119
+ // 检查是否被中止
120
+ if (query.deps.signal?.aborted) {
121
+ throw new Error("查询被中止");
122
+ }
123
+ try {
124
+ const data = await query.execute(query.deps);
125
+ lastData = data;
126
+ // 计算进度
127
+ const progress = Math.min(Math.floor(((Date.now() - startTime) / timeout) * 100), 99);
128
+ // 触发进度回调
129
+ onProgress?.(progress, `轮询中... (第 ${attempts} 次)`);
130
+ yield {
131
+ type: "update",
132
+ message: `轮询中... (第 ${attempts} 次)`,
133
+ progress,
134
+ timestamp: Date.now(),
135
+ };
136
+ // 检查条件是否满足
137
+ if (condition(data)) {
138
+ const duration = Date.now() - startTime;
139
+ yield {
140
+ type: "complete",
141
+ message: `轮询完成 (共 ${attempts} 次)`,
142
+ progress: 100,
143
+ timestamp: Date.now(),
144
+ };
145
+ return {
146
+ data,
147
+ metadata: {
148
+ duration,
149
+ success: true,
150
+ attempts,
151
+ },
152
+ };
153
+ }
154
+ }
155
+ catch (error) {
156
+ const errorMessage = error instanceof Error ? error.message : String(error);
157
+ yield {
158
+ type: "error",
159
+ message: `轮询错误: ${errorMessage}`,
160
+ timestamp: Date.now(),
161
+ };
162
+ throw error;
163
+ }
164
+ // 等待下一次轮询
165
+ await sleep(interval);
166
+ }
167
+ // 超时
168
+ throw new Error(`轮询超时: ${query.description} (已等待 ${timeout}ms, 共 ${attempts} 次)`);
169
+ }
170
+ // ==================== 工具函数 ====================
171
+ /**
172
+ * 延迟函数
173
+ */
174
+ export function sleep(ms) {
175
+ return new Promise(resolve => setTimeout(resolve, ms));
176
+ }
177
+ /**
178
+ * 生成 UUID
179
+ */
180
+ export function createUUID() {
181
+ return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, c => {
182
+ const r = (Math.random() * 16) | 0;
183
+ const v = c === "x" ? r : (r & 0x3) | 0x8;
184
+ return v.toString(16);
185
+ });
186
+ }
187
+ /**
188
+ * 创建默认的查询依赖
189
+ */
190
+ export function createDefaultDeps(signal = null) {
191
+ return {
192
+ signal,
193
+ uuid: createUUID,
194
+ api: {
195
+ get: async (url) => {
196
+ const response = await fetch(url);
197
+ if (!response.ok) {
198
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
199
+ }
200
+ return response.json();
201
+ },
202
+ post: async (url, body) => {
203
+ const init = {
204
+ method: "POST",
205
+ headers: {
206
+ "Content-Type": "application/json",
207
+ },
208
+ };
209
+ if (body !== undefined) {
210
+ init.body = JSON.stringify(body);
211
+ }
212
+ const response = await fetch(url, init);
213
+ if (!response.ok) {
214
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
215
+ }
216
+ return response.json();
217
+ },
218
+ },
219
+ log: {
220
+ info: (message) => console.log(`[INFO] ${message}`),
221
+ error: (message, error) => {
222
+ console.error(`[ERROR] ${message}`, error);
223
+ },
224
+ debug: (message) => {
225
+ if (process.env.DEBUG === "true") {
226
+ console.log(`[DEBUG] ${message}`);
227
+ }
228
+ },
229
+ },
230
+ };
231
+ }
232
+ //# sourceMappingURL=executor.js.map