superun-ai-cli 0.1.46 → 0.1.66

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 (130) hide show
  1. package/INSTALL.md +2 -0
  2. package/README.en.md +190 -6
  3. package/README.md +209 -8
  4. package/dist/api/agent-query-api.d.ts +27 -0
  5. package/dist/api/agent-query-api.js +31 -0
  6. package/dist/api/agent-query-api.js.map +1 -1
  7. package/dist/api/bill-query-api.d.ts +61 -0
  8. package/dist/api/bill-query-api.js +92 -0
  9. package/dist/api/bill-query-api.js.map +1 -0
  10. package/dist/api/managed-agent-resource-api.d.ts +19 -0
  11. package/dist/api/managed-agent-resource-api.js +63 -0
  12. package/dist/api/managed-agent-resource-api.js.map +1 -0
  13. package/dist/api/market-query-api.d.ts +74 -0
  14. package/dist/api/market-query-api.js +145 -0
  15. package/dist/api/market-query-api.js.map +1 -0
  16. package/dist/api/order-query-api.d.ts +47 -0
  17. package/dist/api/order-query-api.js +96 -0
  18. package/dist/api/order-query-api.js.map +1 -0
  19. package/dist/api/ppt-api.d.ts +258 -0
  20. package/dist/api/ppt-api.js +111 -0
  21. package/dist/api/ppt-api.js.map +1 -0
  22. package/dist/api/publish-api.d.ts +1 -0
  23. package/dist/api/publish-api.js +3 -0
  24. package/dist/api/publish-api.js.map +1 -1
  25. package/dist/api/security-review-api.d.ts +1 -1
  26. package/dist/api/security-review-api.js +15 -1
  27. package/dist/api/security-review-api.js.map +1 -1
  28. package/dist/api/site-analysis-api.d.ts +85 -0
  29. package/dist/api/site-analysis-api.js +165 -0
  30. package/dist/api/site-analysis-api.js.map +1 -0
  31. package/dist/auth/browser-login.d.ts +1 -0
  32. package/dist/auth/browser-login.js +25 -2
  33. package/dist/auth/browser-login.js.map +1 -1
  34. package/dist/auth/credential-status.d.ts +4 -0
  35. package/dist/auth/credential-status.js +19 -0
  36. package/dist/auth/credential-status.js.map +1 -0
  37. package/dist/auth/pat-store.js +14 -3
  38. package/dist/auth/pat-store.js.map +1 -1
  39. package/dist/auth/windows-credential-acl.d.ts +2 -0
  40. package/dist/auth/windows-credential-acl.js +68 -0
  41. package/dist/auth/windows-credential-acl.js.map +1 -0
  42. package/dist/commands/agent/index.d.ts +3 -0
  43. package/dist/commands/agent/index.js +68 -0
  44. package/dist/commands/agent/index.js.map +1 -0
  45. package/dist/commands/auth/login.js +8 -3
  46. package/dist/commands/auth/login.js.map +1 -1
  47. package/dist/commands/auth/status.d.ts +1 -1
  48. package/dist/commands/auth/status.js +7 -2
  49. package/dist/commands/auth/status.js.map +1 -1
  50. package/dist/commands/bill/index.d.ts +3 -0
  51. package/dist/commands/bill/index.js +106 -0
  52. package/dist/commands/bill/index.js.map +1 -0
  53. package/dist/commands/chat/create.js +1 -0
  54. package/dist/commands/chat/create.js.map +1 -1
  55. package/dist/commands/chat/interaction.js +39 -6
  56. package/dist/commands/chat/interaction.js.map +1 -1
  57. package/dist/commands/chat/message.js +56 -34
  58. package/dist/commands/chat/message.js.map +1 -1
  59. package/dist/commands/chat/publish.js +72 -11
  60. package/dist/commands/chat/publish.js.map +1 -1
  61. package/dist/commands/chat/security.d.ts +1 -1
  62. package/dist/commands/chat/security.js +73 -29
  63. package/dist/commands/chat/security.js.map +1 -1
  64. package/dist/commands/independent-creation.d.ts +6 -0
  65. package/dist/commands/independent-creation.js +140 -0
  66. package/dist/commands/independent-creation.js.map +1 -0
  67. package/dist/commands/market/index.d.ts +3 -0
  68. package/dist/commands/market/index.js +111 -0
  69. package/dist/commands/market/index.js.map +1 -0
  70. package/dist/commands/order/index.d.ts +3 -0
  71. package/dist/commands/order/index.js +41 -0
  72. package/dist/commands/order/index.js.map +1 -0
  73. package/dist/commands/ppt/index.d.ts +3 -0
  74. package/dist/commands/ppt/index.js +159 -0
  75. package/dist/commands/ppt/index.js.map +1 -0
  76. package/dist/commands/session/diff.d.ts +4 -0
  77. package/dist/commands/session/diff.js +12 -0
  78. package/dist/commands/session/diff.js.map +1 -0
  79. package/dist/commands/session/history.d.ts +3 -0
  80. package/dist/commands/session/history.js +50 -0
  81. package/dist/commands/session/history.js.map +1 -0
  82. package/dist/commands/session/index.js +4 -0
  83. package/dist/commands/session/index.js.map +1 -1
  84. package/dist/commands/shared.d.ts +2 -2
  85. package/dist/commands/shared.js +5 -4
  86. package/dist/commands/shared.js.map +1 -1
  87. package/dist/commands/site/index.d.ts +3 -0
  88. package/dist/commands/site/index.js +113 -0
  89. package/dist/commands/site/index.js.map +1 -0
  90. package/dist/commands/system/version.js +13 -2
  91. package/dist/commands/system/version.js.map +1 -1
  92. package/dist/conversation/managed-agent-create-only.d.ts +26 -0
  93. package/dist/conversation/managed-agent-create-only.js +287 -0
  94. package/dist/conversation/managed-agent-create-only.js.map +1 -0
  95. package/dist/conversation/managed-agent-entry.d.ts +8 -8
  96. package/dist/conversation/ppt-preflight.d.ts +13 -0
  97. package/dist/conversation/ppt-preflight.js +68 -0
  98. package/dist/conversation/ppt-preflight.js.map +1 -0
  99. package/dist/conversation/project-check-preflight.d.ts +22 -0
  100. package/dist/conversation/project-check-preflight.js +89 -0
  101. package/dist/conversation/project-check-preflight.js.map +1 -0
  102. package/dist/conversation/publish-preflight.d.ts +44 -0
  103. package/dist/conversation/publish-preflight.js +123 -0
  104. package/dist/conversation/publish-preflight.js.map +1 -0
  105. package/dist/conversation/security-entry.d.ts +14 -0
  106. package/dist/conversation/security-entry.js +49 -0
  107. package/dist/conversation/security-entry.js.map +1 -0
  108. package/dist/conversation/security-review.d.ts +1 -1
  109. package/dist/conversation/security-review.js +1 -1
  110. package/dist/conversation/security-review.js.map +1 -1
  111. package/dist/conversation/snapshot-diff.d.ts +44 -0
  112. package/dist/conversation/snapshot-diff.js +134 -0
  113. package/dist/conversation/snapshot-diff.js.map +1 -0
  114. package/dist/interactions/managed-agent-model.d.ts +3 -0
  115. package/dist/interactions/managed-agent-model.js +2 -0
  116. package/dist/interactions/managed-agent-model.js.map +1 -1
  117. package/dist/interactions/managed-agent-wizard.d.ts +1 -1
  118. package/dist/interactions/managed-agent-wizard.js +38 -6
  119. package/dist/interactions/managed-agent-wizard.js.map +1 -1
  120. package/dist/program.js +12 -0
  121. package/dist/program.js.map +1 -1
  122. package/dist/runtime.d.ts +1 -1
  123. package/dist/runtime.js +2 -2
  124. package/dist/runtime.js.map +1 -1
  125. package/dist/site-analysis/pagespeed-report.d.ts +48 -0
  126. package/dist/site-analysis/pagespeed-report.js +163 -0
  127. package/dist/site-analysis/pagespeed-report.js.map +1 -0
  128. package/dist/transport/http-client.js +17 -3
  129. package/dist/transport/http-client.js.map +1 -1
  130. package/package.json +1 -1
@@ -0,0 +1,63 @@
1
+ /** 托管智能体创建流程的角色检查与同项目资源读回。@author xiuyu.yi */
2
+ import { z } from 'zod';
3
+ import { parseWire } from '../contracts/node-wire.js';
4
+ import { CliError } from '../output/exit-codes.js';
5
+ const publicAgentId = /^uxagent_[A-Za-z0-9_-]{16,}$/;
6
+ const optionalText = z.string().nullish();
7
+ const timestamp = z.union([z.string(), z.number().int().safe()]).nullish();
8
+ const memberSchema = z.object({
9
+ members: z.array(z.object({ itsYou: z.boolean().nullish(), role: optionalText, status: optionalText })),
10
+ });
11
+ const agentSchema = z.object({
12
+ id: z.string().regex(publicAgentId),
13
+ name: optionalText,
14
+ description: optionalText,
15
+ version: z.number().int().positive().safe().nullish(),
16
+ model: z.union([z.string(), z.object({ id: z.string().min(1) })]).nullish(),
17
+ created_at: timestamp,
18
+ updated_at: timestamp,
19
+ });
20
+ function requireSessionId(sessionId) {
21
+ if (!sessionId || /[\s,\/\\?#]/.test(sessionId))
22
+ throw new CliError('INVALID_ARGUMENT', '请明确本次操作的单个项目 sessionId');
23
+ }
24
+ /** 原生 provider ID 不经项目映射,不允许作为公开资源读取目标。 */
25
+ export function validateManagedAgentId(value) {
26
+ if (!publicAgentId.test(value))
27
+ throw new CliError('INVALID_ARGUMENT', '请使用本次创建返回的公开 uxagent_ 智能体 ID');
28
+ return value;
29
+ }
30
+ export class ManagedAgentResourceApi {
31
+ client;
32
+ constructor(client) {
33
+ this.client = client;
34
+ }
35
+ async assertEditor(sessionId) {
36
+ requireSessionId(sessionId);
37
+ const response = parseWire(memberSchema, await this.client.call('/web-api/conversation/session-member-info', { sessionId }));
38
+ const current = response.members.filter((member) => member.itsYou === true);
39
+ if (current.length !== 1)
40
+ throw new CliError('PROTOCOL_ERROR', '无法唯一确认当前账号的项目角色,未写入智能体资源', {
41
+ sessionId,
42
+ });
43
+ const member = current[0];
44
+ const role = member.role?.trim().toLowerCase();
45
+ const status = member.status?.trim().toLowerCase();
46
+ if ((role !== 'owner' && role !== 'editor') || (status != null && status !== 'active'))
47
+ throw new CliError('AUTH_REQUIRED', '当前账号没有该项目的编辑权限,不能继续创建智能体', {
48
+ sessionId,
49
+ });
50
+ return role;
51
+ }
52
+ async getAgent(sessionId, agentId) {
53
+ requireSessionId(sessionId);
54
+ validateManagedAgentId(agentId);
55
+ const response = await this.client.request(`/web-api/managed-agent-v2/v1/agents/${encodeURIComponent(agentId)}`, undefined, { method: 'GET', sessionId, native: true });
56
+ // 逐层白名单剔除 system、MCP 配置、请求头及任意 provider 内部字段。
57
+ const agent = parseWire(agentSchema, response.data);
58
+ if (agent.id !== agentId)
59
+ throw new CliError('PROTOCOL_ERROR', '智能体读回 ID 与本次查询目标不一致', { sessionId, agentId });
60
+ return agent;
61
+ }
62
+ }
63
+ //# sourceMappingURL=managed-agent-resource-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-agent-resource-api.js","sourceRoot":"","sources":["../../src/api/managed-agent-resource-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import type { ApiClient } from '../transport/api-client.js';
2
+ export type MarketTarget = {
3
+ communityId: number;
4
+ } | {
5
+ sessionKey: string;
6
+ } | {
7
+ encryptedSnapshotId: string;
8
+ };
9
+ export type MarketCopyType = 'PROTOTYPE' | 'FRONTEND_DEMO' | 'FULL_APP';
10
+ export type MarketListQuery = {
11
+ category: string;
12
+ keyword?: string;
13
+ page: number;
14
+ limit: number;
15
+ };
16
+ export declare class MarketQueryApi {
17
+ private readonly client;
18
+ constructor(client: ApiClient);
19
+ list(query: MarketListQuery): Promise<{
20
+ total: number;
21
+ items: {
22
+ visitUrl: string | null;
23
+ coverImage: string | null;
24
+ previewImage: string | null;
25
+ copyTypes: string[];
26
+ communityId: number;
27
+ category?: string | null | undefined;
28
+ createdAt?: number | null | undefined;
29
+ title?: string | null | undefined;
30
+ description?: string | null | undefined;
31
+ updatedAt?: number | null | undefined;
32
+ communityType?: string | null | undefined;
33
+ websiteIntroduction?: string | null | undefined;
34
+ tags?: string[] | null | undefined;
35
+ authorName?: string | null | undefined;
36
+ }[];
37
+ }>;
38
+ private resolveId;
39
+ get(target: MarketTarget): Promise<{
40
+ communityType: string | null | undefined;
41
+ authorName: string | null | undefined;
42
+ copyTypes: string[];
43
+ copyConfigs: {
44
+ copyType: string;
45
+ configId: number;
46
+ description?: string | null | undefined;
47
+ websiteIntroduction?: string | null | undefined;
48
+ snapshotCreatedAt?: number | null | undefined;
49
+ previewVersionName?: string | null | undefined;
50
+ }[];
51
+ visitUrl: string | null;
52
+ coverImage: string | null;
53
+ previewImage: string | null;
54
+ communityId: number;
55
+ category?: string | null | undefined;
56
+ createdAt?: number | null | undefined;
57
+ title?: string | null | undefined;
58
+ description?: string | null | undefined;
59
+ updatedAt?: number | null | undefined;
60
+ websiteIntroduction?: string | null | undefined;
61
+ tags?: string[] | null | undefined;
62
+ }>;
63
+ quote(communityId: number, copyType: MarketCopyType): Promise<{
64
+ amount: number;
65
+ copyType: string;
66
+ communityId: number;
67
+ configId: number;
68
+ currency: string;
69
+ rate: number;
70
+ originalAmount?: number | null | undefined;
71
+ limitedSpecial?: boolean | null | undefined;
72
+ limitedSpecialRemainingCount?: number | null | undefined;
73
+ }>;
74
+ }
@@ -0,0 +1,145 @@
1
+ /** 公开市场浏览与买家报价,只查询,不触发复刻或支付。@author xiuyu.yi */
2
+ import { z } from 'zod';
3
+ import { parseWire } from '../contracts/node-wire.js';
4
+ import { CliError } from '../output/exit-codes.js';
5
+ const PREFIX = '/api/uxa-center/agent/AgentCommunity';
6
+ const id = z.number().int().positive().safe();
7
+ const optionalText = z.string().nullish();
8
+ const timestamp = z.number().int().safe().nullish();
9
+ const simpleConfigSchema = z.object({ copyType: z.string().min(1) });
10
+ const cardSchema = z.object({
11
+ communityId: id,
12
+ communityType: optionalText,
13
+ title: optionalText,
14
+ description: optionalText,
15
+ websiteIntroduction: optionalText,
16
+ category: optionalText,
17
+ tags: z.array(z.string()).nullish(),
18
+ visitUrl: optionalText,
19
+ coverImage: optionalText,
20
+ previewImage: optionalText,
21
+ authorName: optionalText,
22
+ createdAt: timestamp,
23
+ updatedAt: timestamp,
24
+ copyConfigs: z.array(simpleConfigSchema).nullish(),
25
+ });
26
+ const pageSchema = z.object({ total: z.number().int().nonnegative().safe(), items: z.array(cardSchema) });
27
+ const detailSchema = z.object({
28
+ communityId: id,
29
+ communityType: optionalText,
30
+ authorName: optionalText,
31
+ copyConfigs: z
32
+ .array(z.object({
33
+ configId: id,
34
+ copyType: z.string().min(1),
35
+ description: optionalText,
36
+ websiteIntroduction: optionalText,
37
+ snapshotCreatedAt: timestamp,
38
+ previewVersionName: optionalText,
39
+ }))
40
+ .nullish(),
41
+ });
42
+ const priceSchema = z.object({
43
+ communityId: id,
44
+ configId: id,
45
+ copyType: z.string().min(1),
46
+ amount: z.number().int().nonnegative().safe(),
47
+ originalAmount: z.number().int().nonnegative().safe().nullish(),
48
+ currency: z.string().trim().min(1),
49
+ rate: z.number().int().positive().safe(),
50
+ limitedSpecial: z.boolean().nullish(),
51
+ limitedSpecialRemainingCount: z.number().int().nonnegative().safe().nullish(),
52
+ });
53
+ /** 普通浏览链接不能携带会恢复复刻、支付单或复制轮询的动作参数。 */
54
+ function displayUrl(value) {
55
+ if (!value)
56
+ return null;
57
+ try {
58
+ const url = new URL(value);
59
+ if (!['https:', 'http:'].includes(url.protocol) || url.username || url.password)
60
+ return null;
61
+ for (const key of ['autoRemix', 'autoFullAppCopy', 'cashOrderNo', 'copyingSessionId'])
62
+ url.searchParams.delete(key);
63
+ return url.toString();
64
+ }
65
+ catch {
66
+ return null;
67
+ }
68
+ }
69
+ function cardView(card) {
70
+ const { copyConfigs, ...fields } = card;
71
+ return {
72
+ ...fields,
73
+ visitUrl: displayUrl(card.visitUrl),
74
+ coverImage: displayUrl(card.coverImage),
75
+ previewImage: displayUrl(card.previewImage),
76
+ copyTypes: (copyConfigs ?? []).map((config) => config.copyType),
77
+ };
78
+ }
79
+ export class MarketQueryApi {
80
+ client;
81
+ constructor(client) {
82
+ this.client = client;
83
+ }
84
+ async list(query) {
85
+ const result = parseWire(pageSchema, await this.client.call(`${PREFIX}/queryByCategory`, {
86
+ category: query.category,
87
+ page: query.page,
88
+ pageSize: query.limit,
89
+ orderBy: 'popularity',
90
+ device: 'pc',
91
+ ...(query.keyword === undefined ? {} : { keyword: query.keyword }),
92
+ }));
93
+ if (result.items.length > query.limit || result.items.length > result.total)
94
+ throw new CliError('PROTOCOL_ERROR', '市场列表数量与页大小或总数不一致');
95
+ return { total: result.total, items: result.items.map(cardView) };
96
+ }
97
+ async resolveId(target) {
98
+ if ('communityId' in target)
99
+ return target.communityId;
100
+ const result = parseWire(z.object({ communityId: id }).nullish(), await this.client.call(`${PREFIX}/queryBySessionKey`, 'sessionKey' in target
101
+ ? { sessionKey: target.sessionKey }
102
+ : { encryptedSnapshotId: target.encryptedSnapshotId }));
103
+ if (!result)
104
+ throw new CliError('BUSINESS_ERROR', '该链接未找到当前公开可用的市场作品,请搜索作品后选择');
105
+ return result.communityId;
106
+ }
107
+ async get(target) {
108
+ const communityId = await this.resolveId(target);
109
+ // 解析接口可能返回子版本;再走公开入口过滤,不沿 parentId 静默切换目标。
110
+ const cards = parseWire(z.array(cardSchema), await this.client.call(`${PREFIX}/queryByCommunityIds`, { communityIds: [communityId] }));
111
+ if (cards.length === 0)
112
+ throw new CliError('BUSINESS_ERROR', '该市场入口当前不可用或未公开,请重新搜索并选择');
113
+ if (cards.length !== 1 || cards[0]?.communityId !== communityId)
114
+ throw new CliError('PROTOCOL_ERROR', '市场卡片与本次查询目标不一致');
115
+ const detail = parseWire(detailSchema, await this.client.call(`${PREFIX}/queryMarketWorkDetail`, { communityId }));
116
+ if (detail.communityId !== communityId)
117
+ throw new CliError('PROTOCOL_ERROR', '市场详情改变了本次查询目标');
118
+ const copyConfigs = detail.copyConfigs ?? [];
119
+ return {
120
+ ...cardView(cards[0]),
121
+ communityType: detail.communityType ?? cards[0].communityType,
122
+ authorName: detail.authorName ?? cards[0].authorName,
123
+ copyTypes: copyConfigs.map((config) => config.copyType),
124
+ copyConfigs,
125
+ };
126
+ }
127
+ async quote(communityId, copyType) {
128
+ const item = await this.get({ communityId });
129
+ const configs = item.copyConfigs.filter((config) => config.copyType === copyType);
130
+ if (configs.length === 0)
131
+ throw new CliError('BUSINESS_ERROR', '该作品当前未公布所选复刻类型,请重新查看可用类型');
132
+ if (configs.length !== 1)
133
+ throw new CliError('PROTOCOL_ERROR', '所选复刻类型存在多个配置,无法确定报价目标');
134
+ const price = parseWire(priceSchema, await this.client.call('/api/uxa-center/agent/AgentToken/queryMarketWorkRemixCost', {
135
+ communityId,
136
+ copyType,
137
+ }));
138
+ if (price.communityId !== communityId ||
139
+ price.copyType !== copyType ||
140
+ price.configId !== configs[0]?.configId)
141
+ throw new CliError('PROTOCOL_ERROR', '报价作品或复制版本已变化,请重新查看详情后查询');
142
+ return price;
143
+ }
144
+ }
145
+ //# sourceMappingURL=market-query-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"market-query-api.js","sourceRoot":"","sources":["../../src/api/market-query-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import type { ApiClient } from '../transport/api-client.js';
2
+ export declare class OrderQueryApi {
3
+ private readonly client;
4
+ constructor(client: ApiClient);
5
+ page(page: number, pageSize: number, status?: number): Promise<{
6
+ total: number;
7
+ items: {
8
+ orderInfo: {
9
+ statusName: string;
10
+ invoiceStatusName: string;
11
+ orderNo: string;
12
+ status?: number | null | undefined;
13
+ createdAt?: number | null | undefined;
14
+ total?: number | null | undefined;
15
+ currencyCode?: string | null | undefined;
16
+ subtotal?: number | null | undefined;
17
+ discount?: number | null | undefined;
18
+ bookedAt?: number | null | undefined;
19
+ paidAt?: number | null | undefined;
20
+ cancelledAt?: number | null | undefined;
21
+ expiringAt?: number | null | undefined;
22
+ invoiceStatus?: number | null | undefined;
23
+ invoiceAppliedAt?: number | null | undefined;
24
+ invoiceDownloadUrl?: string | null | undefined;
25
+ invoiceOfdUrl?: string | null | undefined;
26
+ latestEffectiveInvoice?: {
27
+ currencyCode?: string | null | undefined;
28
+ invoiceCode?: string | null | undefined;
29
+ invoiceNum?: string | null | undefined;
30
+ invoiceDate?: number | null | undefined;
31
+ invoiceAmount?: number | null | undefined;
32
+ } | null | undefined;
33
+ };
34
+ orderItems: {
35
+ title?: string | null | undefined;
36
+ total?: number | null | undefined;
37
+ num?: number | null | undefined;
38
+ skuProperty?: {
39
+ k?: string | null | undefined;
40
+ v?: string | null | undefined;
41
+ }[] | null | undefined;
42
+ unitPrice?: number | null | undefined;
43
+ subTotal?: number | null | undefined;
44
+ }[];
45
+ }[];
46
+ }>;
47
+ }
@@ -0,0 +1,96 @@
1
+ /** 当前登录用户的购买订单查询,只保留展示所需字段。@author xiuyu.yi */
2
+ import { z } from 'zod';
3
+ import { parseWire } from '../contracts/node-wire.js';
4
+ import { CliError } from '../output/exit-codes.js';
5
+ const amount = z.number().int().safe().nullish();
6
+ const timestamp = z.number().int().safe().nullish();
7
+ const optionalText = z.string().nullish();
8
+ const orderPageSchema = z.object({
9
+ total: z.number().int().nonnegative().safe(),
10
+ items: z.array(z.object({
11
+ orderInfo: z.object({
12
+ orderNo: z.string().min(1),
13
+ status: z.number().int().safe().nullish(),
14
+ currencyCode: optionalText,
15
+ subtotal: amount,
16
+ discount: amount,
17
+ total: amount,
18
+ createdAt: timestamp,
19
+ bookedAt: timestamp,
20
+ paidAt: timestamp,
21
+ cancelledAt: timestamp,
22
+ expiringAt: timestamp,
23
+ invoiceStatus: z.number().int().safe().nullish(),
24
+ invoiceAppliedAt: timestamp,
25
+ invoiceDownloadUrl: optionalText,
26
+ invoiceOfdUrl: optionalText,
27
+ latestEffectiveInvoice: z
28
+ .object({
29
+ invoiceCode: optionalText,
30
+ invoiceNum: optionalText,
31
+ invoiceDate: timestamp,
32
+ currencyCode: optionalText,
33
+ invoiceAmount: amount,
34
+ })
35
+ .nullish(),
36
+ }),
37
+ orderItems: z.array(z.object({
38
+ title: optionalText,
39
+ num: z.number().int().safe().nullish(),
40
+ skuProperty: z.array(z.object({ k: optionalText, v: optionalText })).nullish(),
41
+ unitPrice: amount,
42
+ subTotal: amount,
43
+ total: amount,
44
+ })),
45
+ })),
46
+ });
47
+ const ORDER_STATUS_NAMES = {
48
+ 0: '初始化',
49
+ 10: '待支付',
50
+ 20: '已支付',
51
+ 50: '已完成',
52
+ 60: '已关闭',
53
+ 70: '已取消',
54
+ };
55
+ const INVOICE_STATUS_NAMES = {
56
+ 0: '未开票',
57
+ 1: '已申请',
58
+ 2: '开票成功',
59
+ 3: '开票中',
60
+ 4: '开票失败',
61
+ 5: '调整中',
62
+ 6: '已全额红冲',
63
+ };
64
+ function statusName(code, names) {
65
+ return code == null ? '未返回状态' : (names[code] ?? `未知状态(${code})`);
66
+ }
67
+ export class OrderQueryApi {
68
+ client;
69
+ constructor(client) {
70
+ this.client = client;
71
+ }
72
+ async page(page, pageSize, status) {
73
+ const result = parseWire(orderPageSchema, await this.client.call('/api/uxa-center/ecommerce/OrderQuery/pageOrder', {
74
+ page,
75
+ pageSize,
76
+ ...(status === undefined ? {} : { status }),
77
+ }));
78
+ if (result.items.length > pageSize || result.items.length > result.total)
79
+ throw new CliError('PROTOCOL_ERROR', '订单分页返回的数量与页大小或总数不一致');
80
+ if (status !== undefined && result.items.some((item) => item.orderInfo.status !== status))
81
+ throw new CliError('PROTOCOL_ERROR', '订单返回状态与本次筛选条件不一致');
82
+ return {
83
+ total: result.total,
84
+ // Zod 在每层对象剔除未声明字段,避免透出身份、支付对象和完整发票资料。
85
+ items: result.items.map((item) => ({
86
+ ...item,
87
+ orderInfo: {
88
+ ...item.orderInfo,
89
+ statusName: statusName(item.orderInfo.status, ORDER_STATUS_NAMES),
90
+ invoiceStatusName: statusName(item.orderInfo.invoiceStatus, INVOICE_STATUS_NAMES),
91
+ },
92
+ })),
93
+ };
94
+ }
95
+ }
96
+ //# sourceMappingURL=order-query-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order-query-api.js","sourceRoot":"","sources":["../../src/api/order-query-api.ts"],"names":[],"mappings":"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"}