cbs-4px-merchant-cli 0.0.1 → 0.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.
Files changed (70) hide show
  1. package/dist/cli.js +536 -42
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/address.d.ts +2 -0
  4. package/dist/commands/address.js +59 -0
  5. package/dist/commands/address.js.map +1 -0
  6. package/dist/commands/claim.js +8 -2
  7. package/dist/commands/claim.js.map +1 -1
  8. package/dist/commands/config.js +333 -0
  9. package/dist/commands/config.js.map +1 -1
  10. package/dist/commands/country.d.ts +5 -0
  11. package/dist/commands/country.js +50 -0
  12. package/dist/commands/country.js.map +1 -0
  13. package/dist/commands/customs.d.ts +23 -0
  14. package/dist/commands/customs.js +176 -0
  15. package/dist/commands/customs.js.map +1 -0
  16. package/dist/commands/finance.d.ts +62 -0
  17. package/dist/commands/finance.js +509 -0
  18. package/dist/commands/finance.js.map +1 -0
  19. package/dist/commands/label.js +7 -1
  20. package/dist/commands/label.js.map +1 -1
  21. package/dist/commands/notice.d.ts +18 -0
  22. package/dist/commands/notice.js +210 -0
  23. package/dist/commands/notice.js.map +1 -0
  24. package/dist/commands/order.d.ts +12 -0
  25. package/dist/commands/order.js +76 -1
  26. package/dist/commands/order.js.map +1 -1
  27. package/dist/commands/pickup.d.ts +21 -0
  28. package/dist/commands/pickup.js +249 -0
  29. package/dist/commands/pickup.js.map +1 -0
  30. package/dist/commands/problem.d.ts +41 -0
  31. package/dist/commands/problem.js +371 -0
  32. package/dist/commands/problem.js.map +1 -0
  33. package/dist/commands/product.d.ts +28 -0
  34. package/dist/commands/product.js +249 -1
  35. package/dist/commands/product.js.map +1 -1
  36. package/dist/commands/service.d.ts +41 -0
  37. package/dist/commands/service.js +395 -0
  38. package/dist/commands/service.js.map +1 -0
  39. package/dist/commands/skill.d.ts +15 -0
  40. package/dist/commands/skill.js +374 -0
  41. package/dist/commands/skill.js.map +1 -0
  42. package/dist/commands/track.d.ts +13 -0
  43. package/dist/commands/track.js +92 -1
  44. package/dist/commands/track.js.map +1 -1
  45. package/dist/commands/update.d.ts +1 -1
  46. package/dist/commands/update.js +72 -9
  47. package/dist/commands/update.js.map +1 -1
  48. package/dist/services/api-client.d.ts +49 -2
  49. package/dist/services/api-client.js +464 -6
  50. package/dist/services/api-client.js.map +1 -1
  51. package/dist/services/skill-installer.d.ts +174 -0
  52. package/dist/services/skill-installer.js +540 -0
  53. package/dist/services/skill-installer.js.map +1 -0
  54. package/dist/types/index.d.ts +609 -0
  55. package/package.json +8 -6
  56. package/scripts/postinstall.js +31 -161
  57. package/skill/SKILL.md +72 -14
  58. package/skill/package.json +25 -0
  59. package/skill/reference/customs.md +220 -0
  60. package/skill/reference/finance.md +337 -0
  61. package/skill/reference/index.md +62 -6
  62. package/skill/reference/notice.md +238 -0
  63. package/skill/reference/order.md +172 -0
  64. package/skill/reference/pickup.md +222 -0
  65. package/skill/reference/problem.md +318 -0
  66. package/skill/reference/product.md +203 -0
  67. package/skill/reference/service.md +406 -0
  68. package/skill/reference/track.md +105 -0
  69. package/skill/reference/update.md +99 -14
  70. package/skill/reference/claim.md +0 -66
@@ -0,0 +1,374 @@
1
+ /**
2
+ * `mc skill install | status | uninstall` — the explicit, re-runnable entry
3
+ * point for laying the bundled skill down into local AI coding tools.
4
+ *
5
+ * Why this exists as a real command instead of only an npm lifecycle hook:
6
+ * npm 11 blocks dependency install scripts by default (and still exits 0 when
7
+ * it skips them), so anything that *must* happen cannot hang off postinstall.
8
+ * The hook is kept as a best-effort convenience; this command is the contract.
9
+ *
10
+ * stdout = JSON envelope (only with --output json or when piped);
11
+ * stderr = human messages. Credentials are never read into the output — only
12
+ * a configured/not-configured boolean, plus the console URL to obtain a key.
13
+ */
14
+ import { Command } from 'commander';
15
+ import chalk from 'chalk';
16
+ import { AK_URL, BIN_NAME, PACKAGE_NAME } from '../generated/site.js';
17
+ import { ConfigManager } from '../services/config-manager.js';
18
+ import { SkillInstallerError, applyPlan, applyUninstall, buildPlan, buildUninstallPlan, knownAgentIds, readSkillSource, validateAgentIds, } from '../services/skill-installer.js';
19
+ import * as logger from '../utils/logger.js';
20
+ import { detectOutputFormat, printJson } from '../utils/output.js';
21
+ // ────────────────────────── Command builder ──────────────────────────
22
+ export function buildSkillCommand() {
23
+ const skill = new Command('skill').description('管理本机 AI 工具的 skill 安装');
24
+ withCommonOptions(skill
25
+ .command('install')
26
+ .description('把当前 CLI 版本的 skill 安装/同步到本机 AI 工具')).action(async (opts, cmd) => {
27
+ await runInstall(opts, globalsOf(cmd));
28
+ });
29
+ withCommonOptions(skill.command('status').description('查看各 AI 工具的 skill 安装状态')).action(async (opts, cmd) => {
30
+ await runStatus(opts, globalsOf(cmd));
31
+ });
32
+ withCommonOptions(skill.command('uninstall').description('从本机 AI 工具移除本 CLI 安装的 skill')).action(async (opts, cmd) => {
33
+ await runUninstall(opts, globalsOf(cmd));
34
+ });
35
+ return skill;
36
+ }
37
+ /**
38
+ * Declared per sub-command rather than relying on the root program: commander
39
+ * only accepts global flags *before* the sub-command, and `mc skill install
40
+ * --dry-run` is the spelling users actually type.
41
+ */
42
+ function withCommonOptions(cmd) {
43
+ return cmd
44
+ .option('--agent <ids>', `只处理指定 AI 工具(逗号分隔,可重复;合法值:${knownAgentIds().join(', ')})`, collectAgents, [])
45
+ .option('--force', '覆盖 / 删除非本 CLI 安装的目录(默认拒绝)')
46
+ .option('--dry-run', '只打印将要执行的操作,不写入任何文件')
47
+ .option('--output <format>', '输出格式: text | json');
48
+ }
49
+ function collectAgents(value, previous) {
50
+ const parsed = value
51
+ .split(',')
52
+ .map((s) => s.trim())
53
+ .filter(Boolean);
54
+ return [...previous, ...parsed];
55
+ }
56
+ function globalsOf(cmd) {
57
+ let root = cmd;
58
+ while (root.parent)
59
+ root = root.parent;
60
+ const o = root.opts();
61
+ return { output: o.output, verbose: o.verbose, dryRun: o.dryRun };
62
+ }
63
+ // ────────────────────────── install ──────────────────────────
64
+ async function runInstall(opts, globals) {
65
+ const format = detectOutputFormat(opts.output ?? globals.output);
66
+ const dryRun = Boolean(opts.dryRun || globals.dryRun);
67
+ const prepared = prepare(opts, format);
68
+ if (!prepared)
69
+ return;
70
+ const { source, resolve } = prepared;
71
+ const plan = buildPlan(source, resolve);
72
+ if (plan.targets.length === 0) {
73
+ return emit(format, noTargetsEnvelope(source, dryRun));
74
+ }
75
+ if (dryRun) {
76
+ return emit(format, {
77
+ ok: true,
78
+ action: 'planned',
79
+ package: PACKAGE_NAME,
80
+ skill: { name: source.name, version: source.version },
81
+ dry_run: true,
82
+ targets: plan.targets,
83
+ summary: summarizePlan(plan, Boolean(opts.force)),
84
+ message: `将向 ${plan.targets.length} 个 AI 工具安装 skill v${source.version}(dry-run,未写入)`,
85
+ });
86
+ }
87
+ const results = applyPlan(plan, { force: opts.force });
88
+ const summary = summarizeResults(results);
89
+ const apiKeyConfigured = await hasApiKey();
90
+ const blocked = results.filter((r) => r.outcome === 'skipped');
91
+ const envelope = {
92
+ ok: summary.failed === 0,
93
+ action: 'installed',
94
+ package: PACKAGE_NAME,
95
+ skill: { name: source.name, version: source.version },
96
+ api_key_configured: apiKeyConfigured,
97
+ targets: results,
98
+ summary,
99
+ message: summary.failed === 0
100
+ ? `skill v${source.version} 已同步到 ${summary.installed + summary.updated} 个 AI 工具`
101
+ : `skill v${source.version} 部分同步失败(${summary.failed}/${summary.total})`,
102
+ };
103
+ if (!apiKeyConfigured) {
104
+ envelope.hint = `尚未配置 API Key。申请地址: ${AK_URL},然后执行 ${BIN_NAME} auth login --api-key <key>`;
105
+ }
106
+ else if (blocked.length > 0) {
107
+ envelope.hint = `${blocked.length} 个目录因归属不明被跳过,确认后可加 --force 覆盖`;
108
+ }
109
+ if (format === 'json') {
110
+ printJson(envelope);
111
+ if (!envelope.ok)
112
+ process.exitCode = 1;
113
+ return;
114
+ }
115
+ renderInstallText(results, source, apiKeyConfigured);
116
+ if (!envelope.ok)
117
+ process.exitCode = 1;
118
+ }
119
+ // ────────────────────────── status ──────────────────────────
120
+ async function runStatus(opts, globals) {
121
+ const format = detectOutputFormat(opts.output ?? globals.output);
122
+ const prepared = prepare(opts, format);
123
+ if (!prepared)
124
+ return;
125
+ const { source, resolve } = prepared;
126
+ const plan = buildPlan(source, resolve);
127
+ const drifted = plan.targets.filter((t) => t.installed_version !== null && t.installed_version !== source.version);
128
+ const missing = plan.targets.filter((t) => t.installed_version === null);
129
+ const envelope = {
130
+ ok: true,
131
+ action: 'status',
132
+ package: PACKAGE_NAME,
133
+ skill: { name: source.name, version: source.version },
134
+ api_key_configured: await hasApiKey(),
135
+ targets: plan.targets,
136
+ message: plan.targets.length === 0
137
+ ? '未检测到任何 AI 工具的 skills 目录'
138
+ : `${plan.targets.length} 个目标:${plan.targets.length - drifted.length - missing.length} 个已同步、${drifted.length} 个版本不一致、${missing.length} 个未安装`,
139
+ };
140
+ if (drifted.length > 0 || missing.length > 0) {
141
+ envelope.hint = `执行 ${BIN_NAME} skill install 同步到 v${source.version}`;
142
+ }
143
+ if (format === 'json') {
144
+ printJson(envelope);
145
+ return;
146
+ }
147
+ renderStatusText(plan, source);
148
+ if (envelope.hint)
149
+ logger.info(envelope.hint);
150
+ }
151
+ // ────────────────────────── uninstall ──────────────────────────
152
+ async function runUninstall(opts, globals) {
153
+ const format = detectOutputFormat(opts.output ?? globals.output);
154
+ const dryRun = Boolean(opts.dryRun || globals.dryRun);
155
+ const prepared = prepare(opts, format);
156
+ if (!prepared)
157
+ return;
158
+ const { source, resolve } = prepared;
159
+ const plans = buildUninstallPlan(source, resolve);
160
+ if (plans.length === 0) {
161
+ return emit(format, {
162
+ ok: true,
163
+ action: 'uninstalled',
164
+ package: PACKAGE_NAME,
165
+ skill: { name: source.name, version: source.version },
166
+ targets: [],
167
+ summary: { total: 0, installed: 0, updated: 0, skipped: 0, failed: 0 },
168
+ message: `未在本机找到 ${source.name} 的 skill 安装`,
169
+ });
170
+ }
171
+ if (dryRun) {
172
+ return emit(format, {
173
+ ok: true,
174
+ action: 'planned',
175
+ package: PACKAGE_NAME,
176
+ skill: { name: source.name, version: source.version },
177
+ dry_run: true,
178
+ targets: plans,
179
+ message: `将从 ${plans.length} 个 AI 工具移除 skill(dry-run,未删除)`,
180
+ });
181
+ }
182
+ const results = applyUninstall(plans, { force: opts.force });
183
+ const summary = summarizeResults(results);
184
+ const envelope = {
185
+ ok: summary.failed === 0,
186
+ action: 'uninstalled',
187
+ package: PACKAGE_NAME,
188
+ skill: { name: source.name, version: source.version },
189
+ targets: results,
190
+ summary,
191
+ message: summary.failed === 0
192
+ ? `已从 ${summary.updated} 个 AI 工具移除 skill`
193
+ : `移除部分失败(${summary.failed}/${summary.total})`,
194
+ };
195
+ if (format === 'json') {
196
+ printJson(envelope);
197
+ if (!envelope.ok)
198
+ process.exitCode = 1;
199
+ return;
200
+ }
201
+ for (const r of results)
202
+ renderResultLine(r);
203
+ if (summary.failed === 0)
204
+ logger.success(envelope.message ?? '已移除');
205
+ else {
206
+ logger.error(envelope.message ?? '移除失败');
207
+ process.exitCode = 1;
208
+ }
209
+ }
210
+ // ────────────────────────── shared setup ──────────────────────────
211
+ /** Resolve the skill source and `--agent` filter, reporting errors uniformly. */
212
+ function prepare(opts, format) {
213
+ try {
214
+ const agents = opts.agent ?? [];
215
+ if (agents.length > 0)
216
+ validateAgentIds(agents);
217
+ const source = readSkillSource();
218
+ return { source, resolve: agents.length > 0 ? { agents } : {} };
219
+ }
220
+ catch (e) {
221
+ if (e instanceof SkillInstallerError) {
222
+ emit(format, {
223
+ ok: false,
224
+ action: 'error',
225
+ package: PACKAGE_NAME,
226
+ error: {
227
+ code: e.code,
228
+ message: e.message,
229
+ ...(e.hint ? { hint: e.hint } : {}),
230
+ },
231
+ });
232
+ return null;
233
+ }
234
+ throw e;
235
+ }
236
+ }
237
+ function noTargetsEnvelope(source, dryRun) {
238
+ return {
239
+ ok: true,
240
+ action: dryRun ? 'planned' : 'installed',
241
+ package: PACKAGE_NAME,
242
+ skill: { name: source.name, version: source.version },
243
+ ...(dryRun ? { dry_run: true } : {}),
244
+ targets: [],
245
+ summary: { total: 0, installed: 0, updated: 0, skipped: 0, failed: 0 },
246
+ message: '未检测到任何 AI 工具目录,跳过安装',
247
+ hint: '安装 Qoder / Claude Code / Cursor 等工具后重新执行本命令',
248
+ };
249
+ }
250
+ function summarizePlan(plan, force) {
251
+ const summary = {
252
+ total: plan.targets.length,
253
+ installed: 0,
254
+ updated: 0,
255
+ skipped: 0,
256
+ failed: 0,
257
+ };
258
+ for (const t of plan.targets) {
259
+ if (t.blocked && !force)
260
+ summary.skipped += 1;
261
+ else if (t.state === 'fresh')
262
+ summary.installed += 1;
263
+ else
264
+ summary.updated += 1;
265
+ }
266
+ return summary;
267
+ }
268
+ function summarizeResults(results) {
269
+ const summary = {
270
+ total: results.length,
271
+ installed: 0,
272
+ updated: 0,
273
+ skipped: 0,
274
+ failed: 0,
275
+ };
276
+ for (const r of results)
277
+ summary[r.outcome] += 1;
278
+ return summary;
279
+ }
280
+ function emit(format, envelope) {
281
+ if (format === 'json') {
282
+ printJson(envelope);
283
+ if (!envelope.ok)
284
+ process.exitCode = 1;
285
+ return;
286
+ }
287
+ if (envelope.error) {
288
+ logger.error(`[${envelope.error.code}] ${envelope.error.message}`);
289
+ if (envelope.error.hint)
290
+ logger.info(envelope.error.hint);
291
+ process.exitCode = 1;
292
+ return;
293
+ }
294
+ if (Array.isArray(envelope.targets)) {
295
+ for (const t of envelope.targets) {
296
+ renderPlanLine(t);
297
+ }
298
+ }
299
+ if (envelope.message)
300
+ logger.success(envelope.message);
301
+ if (envelope.hint)
302
+ logger.info(envelope.hint);
303
+ }
304
+ // ────────────────────────── text rendering ──────────────────────────
305
+ function renderPlanLine(t) {
306
+ const state = t.blocked ? chalk.yellow(t.state) : chalk.dim(t.state);
307
+ const extra = t.remove.length > 0 ? chalk.dim(` (-${t.remove.length})`) : '';
308
+ process.stderr.write(` ${chalk.cyan(t.agent.padEnd(16))} ${state}${extra} ${chalk.dim(t.dir)}\n`);
309
+ }
310
+ function renderResultLine(r) {
311
+ const mark = r.outcome === 'failed'
312
+ ? chalk.red('✖')
313
+ : r.outcome === 'skipped'
314
+ ? chalk.yellow('-')
315
+ : chalk.green('✓');
316
+ const removed = r.removed.length > 0 ? chalk.dim(` 清理 ${r.removed.length} 个孤儿文件`) : '';
317
+ const reason = r.reason ? chalk.dim(` ${r.reason}`) : '';
318
+ process.stderr.write(` ${mark} ${r.label}${removed}${reason}\n`);
319
+ }
320
+ /**
321
+ * Install output. This is where the welcome banner and API Key guidance moved
322
+ * to after postinstall was slimmed down — both are host-state dependent and so
323
+ * belong in the terminal, never inside SKILL.md.
324
+ */
325
+ function renderInstallText(results, source, apiKeyConfigured) {
326
+ process.stderr.write(`\n🚀 同步 ${source.name} skill v${source.version} 到 ${results.length} 个 AI 工具:\n`);
327
+ for (const r of results)
328
+ renderResultLine(r);
329
+ if (apiKeyConfigured) {
330
+ process.stderr.write('\n🎯 试试这些命令:\n\n');
331
+ process.stderr.write(` ${BIN_NAME} track get <orderNo> 查询物流轨迹\n`);
332
+ process.stderr.write(` ${BIN_NAME} label get <orderNo> 获取面单 PDF\n`);
333
+ process.stderr.write(` ${BIN_NAME} order get <orderNo> 查看订单详情\n\n`);
334
+ }
335
+ else {
336
+ process.stderr.write('\n💡 配置 API Key 后即可开始使用:\n\n');
337
+ process.stderr.write(' 1️⃣ 申请 API Key:\n');
338
+ process.stderr.write(` ${AK_URL}\n\n`);
339
+ process.stderr.write(' 2️⃣ 登录:\n');
340
+ process.stderr.write(` ${BIN_NAME} auth login --api-key SK_xxxxx\n\n`);
341
+ }
342
+ }
343
+ function renderStatusText(plan, source) {
344
+ process.stderr.write(`\n📦 ${source.name} skill v${source.version}(当前 CLI 携带的版本)\n\n`);
345
+ if (plan.targets.length === 0) {
346
+ logger.warn('未检测到任何 AI 工具的 skills 目录');
347
+ return;
348
+ }
349
+ for (const t of plan.targets) {
350
+ const version = t.installed_version === null
351
+ ? chalk.dim('未安装')
352
+ : t.installed_version === source.version
353
+ ? chalk.green(`v${t.installed_version}`)
354
+ : chalk.yellow(`v${t.installed_version} (漂移)`);
355
+ const owner = t.installed_source ? chalk.yellow(` [${t.installed_source}]`) : '';
356
+ process.stderr.write(` ${chalk.cyan(t.agent.padEnd(16))} ${version}${owner} ${chalk.dim(t.dir)}\n`);
357
+ }
358
+ process.stderr.write('\n');
359
+ }
360
+ // ────────────────────────── API Key probe ──────────────────────────
361
+ /**
362
+ * Presence check only. The key itself is never returned, printed or exported —
363
+ * skills that teach an Agent to read credential files out of the user's home
364
+ * are exactly what marketplace security scanners flag as privilege escalation.
365
+ */
366
+ async function hasApiKey() {
367
+ try {
368
+ return Boolean(await new ConfigManager().resolveApiKey());
369
+ }
370
+ catch {
371
+ return false;
372
+ }
373
+ }
374
+ //# sourceMappingURL=skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,15 @@
1
1
  import type { GlobalOptions } from '../types/index.js';
2
2
  export declare function trackCommand(orderNo: string, opts: GlobalOptions): Promise<void>;
3
+ export interface TrackSubscriptionOrderCommandOptions extends GlobalOptions {
4
+ trackNos: string;
5
+ page?: string;
6
+ size?: string;
7
+ }
8
+ export interface TrackSubscriptionProductCommandOptions extends GlobalOptions {
9
+ productCode?: string;
10
+ countryCode?: string;
11
+ page?: string;
12
+ size?: string;
13
+ }
14
+ export declare function trackSubscriptionOrderCommand(opts: TrackSubscriptionOrderCommandOptions): Promise<void>;
15
+ export declare function trackSubscriptionProductCommand(opts: TrackSubscriptionProductCommandOptions): Promise<void>;
@@ -11,7 +11,13 @@ export async function trackCommand(orderNo, opts) {
11
11
  const data = await client.getTrackDetail(orderNo);
12
12
  spinner.stop();
13
13
  if (opts.output === 'json') {
14
- console.log(JSON.stringify(data, null, 2));
14
+ console.log(JSON.stringify(data ?? null, null, 2));
15
+ return;
16
+ }
17
+ if (!data) {
18
+ console.log('');
19
+ console.log(chalk.yellow(' 暂无数据'));
20
+ console.log('');
15
21
  return;
16
22
  }
17
23
  printTrackDetail(data);
@@ -51,4 +57,89 @@ function printTrackDetail(data) {
51
57
  function printTrackItem(t) {
52
58
  console.log(` ${chalk.yellow(t.tkDate)} ${t.tkLocation ?? ''} ${t.tkDesc}`);
53
59
  }
60
+ export async function trackSubscriptionOrderCommand(opts) {
61
+ const spinner = createSpinner('正在查询轨迹订阅...');
62
+ try {
63
+ spinner.start();
64
+ const client = new ApiClient(new ConfigManager(), opts);
65
+ const pageNum = opts.page ? parseInt(opts.page, 10) : undefined;
66
+ const pageSize = opts.size ? parseInt(opts.size, 10) : undefined;
67
+ const data = await client.listTrackSubscriptionByOrder(opts.trackNos, pageNum, pageSize);
68
+ spinner.stop();
69
+ if (opts.output === 'json') {
70
+ console.log(JSON.stringify(data ?? null, null, 2));
71
+ return;
72
+ }
73
+ if (!data) {
74
+ console.log('');
75
+ console.log(chalk.yellow(' 暂无数据'));
76
+ console.log('');
77
+ return;
78
+ }
79
+ printTrackSubscriptionList(data);
80
+ }
81
+ catch (e) {
82
+ spinner.stop();
83
+ handleError(e);
84
+ }
85
+ }
86
+ export async function trackSubscriptionProductCommand(opts) {
87
+ const spinner = createSpinner('正在查询轨迹订阅...');
88
+ try {
89
+ spinner.start();
90
+ const client = new ApiClient(new ConfigManager(), opts);
91
+ const pageNum = opts.page ? parseInt(opts.page, 10) : undefined;
92
+ const pageSize = opts.size ? parseInt(opts.size, 10) : undefined;
93
+ const data = await client.listTrackSubscriptionByProduct(opts.productCode, opts.countryCode, pageNum, pageSize);
94
+ spinner.stop();
95
+ if (opts.output === 'json') {
96
+ console.log(JSON.stringify(data ?? null, null, 2));
97
+ return;
98
+ }
99
+ if (!data) {
100
+ console.log('');
101
+ console.log(chalk.yellow(' 暂无数据'));
102
+ console.log('');
103
+ return;
104
+ }
105
+ printTrackSubscriptionList(data);
106
+ }
107
+ catch (e) {
108
+ spinner.stop();
109
+ handleError(e);
110
+ }
111
+ }
112
+ function printTrackSubscriptionList(data) {
113
+ console.log('');
114
+ console.log(chalk.bold('轨迹订阅列表'));
115
+ console.log(chalk.gray('─'.repeat(50)));
116
+ console.log(` 页码 ${data.pageNum}/${Math.ceil(data.total / data.pageSize) || 1} 共 ${data.total} 条`);
117
+ if (data.list && data.list.length > 0) {
118
+ console.log('');
119
+ for (const item of data.list) {
120
+ printTrackSubscriptionItem(item);
121
+ }
122
+ }
123
+ else {
124
+ console.log('');
125
+ console.log(chalk.yellow(' 暂无轨迹订阅记录'));
126
+ }
127
+ console.log('');
128
+ }
129
+ function printTrackSubscriptionItem(item) {
130
+ console.log(` ${chalk.cyan(item.trackNo)}`);
131
+ if (item.productName)
132
+ console.log(` 产品名称 ${item.productName}`);
133
+ if (item.countryCode)
134
+ console.log(` 国家代码 ${item.countryCode}`);
135
+ if (item.subscribeNodeList && item.subscribeNodeList.length > 0) {
136
+ console.log(` 订阅节点:`);
137
+ for (const node of item.subscribeNodeList) {
138
+ const name = node.name ?? node.code;
139
+ const status = node.status ?? '-';
140
+ console.log(` ${name} ${chalk.yellow(status)}`);
141
+ }
142
+ }
143
+ console.log('');
144
+ }
54
145
  //# sourceMappingURL=track.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"track.js","sourceRoot":"","sources":["../../src/commands/track.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"track.js","sourceRoot":"","sources":["../../src/commands/track.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * `mc update` — self-update the CLI (and its bundled skill via postinstall).
2
+ * `mc update` — self-update the CLI, then re-run `skill install` to sync docs.
3
3
  *
4
4
  * Inspired by:
5
5
  * - bailian-cli (npm-only, simple execSync flow)