@optima-chat/commerce-cli 1.16.0 → 1.17.0

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.
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const adjustStockCommand: Command;
3
+ //# sourceMappingURL=adjust.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adjust.d.ts","sourceRoot":"","sources":["../../../src/commands/inventory/adjust.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6DpC,eAAO,MAAM,kBAAkB,SAAM,CAAC"}
@@ -0,0 +1,114 @@
1
+ import { Command } from 'commander';
2
+ import inquirer from 'inquirer';
3
+ import chalk from 'chalk';
4
+ import { commerceApi } from '../../api/rest/commerce.js';
5
+ import { handleError, createApiError, ValidationError } from '../../utils/error.js';
6
+ import { output } from '../../utils/output.js';
7
+ import { addEnhancedHelp } from '../../utils/helpText.js';
8
+ import { isInteractiveEnvironment, requireParam, requireNumberParam } from '../../utils/interactive.js';
9
+ const cmd = new Command('adjust')
10
+ .description('Adjust stock by adding or removing quantity (incremental +=/-=)')
11
+ .option('--id <uuid>', 'Product or Variant ID (required)')
12
+ .option('-q, --quantity <number>', 'Quantity to add (positive) or remove (negative) (required)')
13
+ .action(async (options) => {
14
+ try {
15
+ await adjustStock(options);
16
+ }
17
+ catch (error) {
18
+ handleError(error);
19
+ }
20
+ });
21
+ addEnhancedHelp(cmd, {
22
+ examples: [
23
+ '# Restock: add 100 units',
24
+ '$ commerce inventory adjust --id abc-123-def --quantity 100',
25
+ '',
26
+ '# Correction: remove 5 units (negative)',
27
+ '$ commerce inventory adjust --id abc-123-def --quantity -5',
28
+ '',
29
+ '# Restock low inventory items',
30
+ '$ commerce inventory low-stock --threshold 10',
31
+ '$ commerce inventory adjust --id <product_id> --quantity 200',
32
+ ],
33
+ output: {
34
+ example: JSON.stringify({
35
+ success: true,
36
+ data: {
37
+ product_id: 'uuid',
38
+ adjusted_by: 100,
39
+ note: 'Manual adjustment via CLI'
40
+ }
41
+ }, null, 2)
42
+ },
43
+ relatedCommands: [
44
+ { command: 'inventory set', description: 'Set stock to an exact number' },
45
+ { command: 'inventory low-stock', description: 'Find products needing restock' },
46
+ { command: 'inventory history', description: 'View stock change history' },
47
+ ],
48
+ notes: [
49
+ 'This command ADDS to current stock (+=). Use positive number to restock, negative to remove.',
50
+ 'To SET stock to an exact number, use \'inventory set\' instead.',
51
+ 'For products with variants, use variant ID to adjust variant stock.',
52
+ 'Adjustments are logged in inventory history.',
53
+ ]
54
+ });
55
+ export const adjustStockCommand = cmd;
56
+ async function adjustStock(options) {
57
+ const productId = isInteractiveEnvironment()
58
+ ? (options.id?.trim() || (() => { throw new ValidationError('商品 ID 不能为空', 'id'); })())
59
+ : requireParam(options.id, 'id', '商品 ID');
60
+ let quantity;
61
+ if (isInteractiveEnvironment()) {
62
+ if (!options.quantity) {
63
+ console.log(chalk.cyan(`\n📦 调整商品库存: ${productId}\n`));
64
+ console.log(chalk.gray('提示: 正数为补货(+),负数为扣减(-)\n'));
65
+ const answers = await inquirer.prompt([
66
+ {
67
+ type: 'input',
68
+ name: 'quantity',
69
+ message: '调整数量:',
70
+ validate: (input) => {
71
+ const qty = parseInt(input, 10);
72
+ if (isNaN(qty)) {
73
+ return '请输入有效的整数(正数补货,负数扣减)';
74
+ }
75
+ return true;
76
+ },
77
+ },
78
+ ]);
79
+ quantity = parseInt(answers.quantity, 10);
80
+ }
81
+ else {
82
+ quantity = parseInt(options.quantity, 10);
83
+ if (isNaN(quantity)) {
84
+ throw new ValidationError('数量必须是有效的整数', 'quantity');
85
+ }
86
+ }
87
+ }
88
+ else {
89
+ quantity = Math.floor(requireNumberParam(options.quantity, 'quantity', '调整数量'));
90
+ }
91
+ const spinner = output.spinner(`正在${quantity >= 0 ? '补货' : '扣减'}库存...`);
92
+ try {
93
+ await commerceApi.inventory.updateStock(productId, quantity, 'Manual adjustment via CLI');
94
+ spinner.succeed(`库存${quantity >= 0 ? '补货' : '扣减'}成功!(${quantity >= 0 ? '+' : ''}${quantity})`);
95
+ if (output.isJson()) {
96
+ output.success({
97
+ product_id: productId,
98
+ adjusted_by: quantity,
99
+ note: 'Manual adjustment via CLI'
100
+ });
101
+ }
102
+ else {
103
+ console.log();
104
+ console.log(chalk.gray('商品 ID: ') + chalk.cyan(productId));
105
+ console.log(chalk.gray('调整数量: ') + chalk.green(`${quantity >= 0 ? '+' : ''}${quantity}`));
106
+ console.log();
107
+ }
108
+ }
109
+ catch (error) {
110
+ spinner.fail('库存调整失败');
111
+ throw createApiError(error);
112
+ }
113
+ }
114
+ //# sourceMappingURL=adjust.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adjust.js","sourceRoot":"","sources":["../../../src/commands/inventory/adjust.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/inventory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,gBAAgB,SAKK,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/inventory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,gBAAgB,SAOI,CAAC"}
@@ -1,12 +1,16 @@
1
1
  import { Command } from 'commander';
2
2
  import { lowStockCommand } from './low-stock.js';
3
+ import { adjustStockCommand } from './adjust.js';
4
+ import { setStockCommand } from './set.js';
3
5
  import { updateStockCommand } from './update.js';
4
6
  import { historyCommand } from './history.js';
5
7
  import { reserveStockCommand } from './reserve.js';
6
8
  export const inventoryCommand = new Command('inventory')
7
9
  .description('库存管理')
10
+ .addCommand(setStockCommand)
11
+ .addCommand(adjustStockCommand)
8
12
  .addCommand(lowStockCommand)
9
- .addCommand(updateStockCommand)
10
13
  .addCommand(historyCommand)
11
- .addCommand(reserveStockCommand);
14
+ .addCommand(reserveStockCommand)
15
+ .addCommand(updateStockCommand); // deprecated alias, kept for backward compat
12
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/inventory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC;KACrD,WAAW,CAAC,MAAM,CAAC;KACnB,UAAU,CAAC,eAAe,CAAC;KAC3B,UAAU,CAAC,kBAAkB,CAAC;KAC9B,UAAU,CAAC,cAAc,CAAC;KAC1B,UAAU,CAAC,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/inventory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC;KACrD,WAAW,CAAC,MAAM,CAAC;KACnB,UAAU,CAAC,eAAe,CAAC;KAC3B,UAAU,CAAC,kBAAkB,CAAC;KAC9B,UAAU,CAAC,eAAe,CAAC;KAC3B,UAAU,CAAC,cAAc,CAAC;KAC1B,UAAU,CAAC,mBAAmB,CAAC;KAC/B,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAE,6CAA6C"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const setStockCommand: Command;
3
+ //# sourceMappingURL=set.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../src/commands/inventory/set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2DpC,eAAO,MAAM,eAAe,SAAM,CAAC"}
@@ -0,0 +1,111 @@
1
+ import { Command } from 'commander';
2
+ import inquirer from 'inquirer';
3
+ import chalk from 'chalk';
4
+ import { commerceApi } from '../../api/rest/commerce.js';
5
+ import { handleError, createApiError, ValidationError } from '../../utils/error.js';
6
+ import { output } from '../../utils/output.js';
7
+ import { addEnhancedHelp } from '../../utils/helpText.js';
8
+ import { isInteractiveEnvironment, requireParam, requireNumberParam } from '../../utils/interactive.js';
9
+ const cmd = new Command('set')
10
+ .description('Set stock to an exact quantity (overwrites current value)')
11
+ .option('--id <uuid>', 'Product or Variant ID (required)')
12
+ .option('-q, --quantity <number>', 'Target stock quantity (required)')
13
+ .action(async (options) => {
14
+ try {
15
+ await setStock(options);
16
+ }
17
+ catch (error) {
18
+ handleError(error);
19
+ }
20
+ });
21
+ addEnhancedHelp(cmd, {
22
+ examples: [
23
+ '# Set product stock to exactly 18',
24
+ '$ commerce inventory set --id abc-123-def --quantity 18',
25
+ '',
26
+ '# Set variant stock to 50',
27
+ '$ commerce inventory set --id variant-uuid --quantity 50',
28
+ '',
29
+ '# Set stock to 0 (out of stock)',
30
+ '$ commerce inventory set --id abc-123-def --quantity 0',
31
+ ],
32
+ output: {
33
+ example: JSON.stringify({
34
+ success: true,
35
+ data: {
36
+ product_id: 'uuid',
37
+ stock_quantity: 18,
38
+ }
39
+ }, null, 2)
40
+ },
41
+ relatedCommands: [
42
+ { command: 'inventory adjust', description: 'Add or remove stock (incremental)' },
43
+ { command: 'inventory low-stock', description: 'Find products needing restock' },
44
+ { command: 'inventory history', description: 'View stock change history' },
45
+ ],
46
+ notes: [
47
+ 'This command SETS stock to the exact number specified, replacing the current value.',
48
+ 'To ADD or REMOVE stock incrementally, use \'inventory adjust\' instead.',
49
+ 'For products with variants, use variant ID. Master product stock is auto-calculated from variants.',
50
+ 'Quantity must be a non-negative integer (0 = out of stock).',
51
+ ]
52
+ });
53
+ export const setStockCommand = cmd;
54
+ async function setStock(options) {
55
+ const productId = isInteractiveEnvironment()
56
+ ? (options.id?.trim() || (() => { throw new ValidationError('商品 ID 不能为空', 'id'); })())
57
+ : requireParam(options.id, 'id', '商品 ID');
58
+ let quantity;
59
+ if (isInteractiveEnvironment()) {
60
+ if (!options.quantity) {
61
+ console.log(chalk.cyan(`\n📦 设置商品库存: ${productId}\n`));
62
+ const answers = await inquirer.prompt([
63
+ {
64
+ type: 'input',
65
+ name: 'quantity',
66
+ message: '目标库存数量:',
67
+ validate: (input) => {
68
+ const qty = parseInt(input, 10);
69
+ if (isNaN(qty) || qty < 0) {
70
+ return '库存数量必须是大于等于 0 的整数';
71
+ }
72
+ return true;
73
+ },
74
+ },
75
+ ]);
76
+ quantity = parseInt(answers.quantity, 10);
77
+ }
78
+ else {
79
+ quantity = parseInt(options.quantity, 10);
80
+ if (isNaN(quantity) || quantity < 0) {
81
+ throw new ValidationError('库存数量必须是大于等于 0 的整数', 'quantity');
82
+ }
83
+ }
84
+ }
85
+ else {
86
+ quantity = Math.floor(requireNumberParam(options.quantity, 'quantity', '目标库存数量', 0));
87
+ }
88
+ const spinner = output.spinner('正在设置库存...');
89
+ try {
90
+ // Use product update API to set absolute stock value
91
+ await commerceApi.products.update(productId, { stock_quantity: quantity });
92
+ spinner.succeed(`库存已设置为 ${quantity}!`);
93
+ if (output.isJson()) {
94
+ output.success({
95
+ product_id: productId,
96
+ stock_quantity: quantity,
97
+ });
98
+ }
99
+ else {
100
+ console.log();
101
+ console.log(chalk.gray('商品 ID: ') + chalk.cyan(productId));
102
+ console.log(chalk.gray('库存数量: ') + chalk.green(quantity.toString()));
103
+ console.log();
104
+ }
105
+ }
106
+ catch (error) {
107
+ spinner.fail('库存设置失败');
108
+ throw createApiError(error);
109
+ }
110
+ }
111
+ //# sourceMappingURL=set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.js","sourceRoot":"","sources":["../../../src/commands/inventory/set.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,7 @@
1
+ /**
2
+ * @deprecated Use 'inventory adjust' (incremental) or 'inventory set' (absolute) instead.
3
+ * Kept as hidden alias for backward compatibility.
4
+ */
1
5
  import { Command } from 'commander';
2
6
  export declare const updateStockCommand: Command;
3
7
  //# sourceMappingURL=update.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/commands/inventory/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4DpC,eAAO,MAAM,kBAAkB,SAAM,CAAC"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/commands/inventory/update.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwCpC,eAAO,MAAM,kBAAkB,SAAM,CAAC"}
@@ -1,120 +1,40 @@
1
+ /**
2
+ * @deprecated Use 'inventory adjust' (incremental) or 'inventory set' (absolute) instead.
3
+ * Kept as hidden alias for backward compatibility.
4
+ */
1
5
  import { Command } from 'commander';
2
- import inquirer from 'inquirer';
3
- import chalk from 'chalk';
4
6
  import { commerceApi } from '../../api/rest/commerce.js';
5
7
  import { handleError, createApiError, ValidationError } from '../../utils/error.js';
6
8
  import { output } from '../../utils/output.js';
7
- import { addEnhancedHelp } from '../../utils/helpText.js';
8
9
  import { isInteractiveEnvironment, requireParam, requireNumberParam } from '../../utils/interactive.js';
9
10
  const cmd = new Command('update')
10
- .description('Update product inventory stock quantity')
11
- .option('--id <uuid>', 'Product or Variant ID (required)')
12
- .option('-q, --quantity <number>', 'New stock quantity (required)')
11
+ .description('(Deprecated: use "adjust" or "set") Adjust stock incrementally')
12
+ .option('--id <uuid>', 'Product or Variant ID')
13
+ .option('-q, --quantity <number>', 'Quantity to adjust')
13
14
  .action(async (options) => {
14
15
  try {
15
- await updateStock(options);
16
- }
17
- catch (error) {
18
- handleError(error);
19
- }
20
- });
21
- addEnhancedHelp(cmd, {
22
- examples: [
23
- '# Update product stock',
24
- '$ commerce inventory update --id abc-123-def --quantity 100',
25
- '',
26
- '# Restock low inventory items',
27
- '$ commerce inventory low-stock --threshold 10',
28
- '$ commerce inventory update --id <product_id> --quantity 200',
29
- ],
30
- output: {
31
- example: JSON.stringify({
32
- success: true,
33
- data: {
34
- product_id: 'uuid',
35
- product_name: 'Ceramic Mug',
36
- old_quantity: 5,
37
- new_quantity: 100,
38
- updated_at: 'timestamp'
39
- }
40
- }, null, 2)
41
- },
42
- relatedCommands: [
43
- { command: 'inventory low-stock', description: 'Find products needing restock' },
44
- { command: 'inventory history', description: 'View stock change history' },
45
- { command: 'product list', description: 'Find product IDs' },
46
- ],
47
- notes: [
48
- 'Product or Variant ID is required (use \'commerce product list\' to find IDs)',
49
- 'For products with variants, use variant ID to update variant stock',
50
- 'Quantity must be a non-negative integer',
51
- 'Updates are logged in inventory history',
52
- ]
53
- });
54
- export const updateStockCommand = cmd;
55
- async function updateStock(options) {
56
- // 验证商品 ID(必需)
57
- const productId = isInteractiveEnvironment()
58
- ? (options.id?.trim() || (() => { throw new ValidationError('商品 ID 不能为空', 'id'); })())
59
- : requireParam(options.id, 'id', '商品 ID');
60
- let quantity;
61
- // 检测环境
62
- if (isInteractiveEnvironment()) {
63
- // 交互模式:友好提示
64
- if (!options.quantity) {
65
- console.log(chalk.cyan(`\n📦 更新商品库存: ${productId}\n`));
66
- const answers = await inquirer.prompt([
67
- {
68
- type: 'input',
69
- name: 'quantity',
70
- message: '新库存数量:',
71
- validate: (input) => {
72
- const qty = parseInt(input, 10);
73
- if (isNaN(qty) || qty < 0) {
74
- return '库存数量必须是大于等于 0 的整数';
75
- }
76
- return true;
77
- },
78
- },
79
- ]);
80
- quantity = parseInt(answers.quantity, 10);
81
- }
82
- else {
83
- // 交互环境但参数完整
84
- quantity = parseInt(options.quantity, 10);
85
- // 验证数量
86
- if (isNaN(quantity) || quantity < 0) {
87
- throw new ValidationError('库存数量必须是大于等于 0 的整数', 'quantity');
16
+ console.warn('⚠️ "inventory update" is deprecated. Use "inventory adjust" (incremental) or "inventory set" (absolute) instead.');
17
+ const productId = isInteractiveEnvironment()
18
+ ? (options.id?.trim() || (() => { throw new ValidationError('商品 ID 不能为空', 'id'); })())
19
+ : requireParam(options.id, 'id', '商品 ID');
20
+ const quantity = Math.floor(requireNumberParam(options.quantity, 'quantity', '库存数量', 0));
21
+ const spinner = output.spinner('正在调整库存...');
22
+ try {
23
+ await commerceApi.inventory.updateStock(productId, quantity, 'Manual adjustment via CLI (deprecated update command)');
24
+ spinner.succeed(`库存调整成功!(+${quantity})`);
25
+ if (output.isJson()) {
26
+ output.success({ product_id: productId, adjusted_by: quantity });
88
27
  }
89
28
  }
90
- }
91
- else {
92
- // 非交互模式:直接验证参数
93
- quantity = Math.floor(requireNumberParam(options.quantity, 'quantity', '库存数量', 0));
94
- }
95
- const spinner = output.spinner('正在更新库存...');
96
- try {
97
- await commerceApi.inventory.updateStock(productId, quantity, 'Manual adjustment via CLI');
98
- spinner.succeed('库存更新成功!');
99
- if (output.isJson()) {
100
- // JSON 模式:输出结构化数据
101
- output.success({
102
- product_id: productId,
103
- quantity,
104
- note: 'Manual adjustment via CLI'
105
- });
106
- }
107
- else {
108
- // Pretty 模式:保持原有格式化输出
109
- console.log();
110
- console.log(chalk.gray('商品 ID: ') + chalk.cyan(productId));
111
- console.log(chalk.gray('新库存数量: ') + chalk.green(quantity.toString()));
112
- console.log();
29
+ catch (error) {
30
+ spinner.fail('库存调整失败');
31
+ throw createApiError(error);
113
32
  }
114
33
  }
115
34
  catch (error) {
116
- spinner.fail('库存更新失败');
117
- throw createApiError(error);
35
+ handleError(error);
118
36
  }
119
- }
37
+ });
38
+ cmd.helpInformation = () => ''; // Hide from help
39
+ export const updateStockCommand = cmd;
120
40
  //# sourceMappingURL=update.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/inventory/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/inventory/update.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAOxG,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC9B,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAAC;KAC9C,MAAM,CAAC,yBAAyB,EAAE,oBAAoB,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;IAC5C,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,mHAAmH,CAAC,CAAC;QAClI,MAAM,SAAS,GAAG,wBAAwB,EAAE;YAC1C,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtF,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;QACzF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC;YACH,MAAM,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,uDAAuD,CAAC,CAAC;YACtH,OAAO,CAAC,OAAO,CAAC,YAAY,QAAQ,GAAG,CAAC,CAAC;YACzC,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;gBACpB,MAAM,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,GAAG,CAAC,eAAe,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAE,iBAAiB;AAElD,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optima-chat/commerce-cli",
3
- "version": "1.16.0",
3
+ "version": "1.17.0",
4
4
  "description": "用自然语言管理电商店铺 - 专为 Claude Code 设计的对话式 CLI 工具,支持多环境和功能测试",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",