superun-ai-cli 0.1.44 → 0.1.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +189 -5
- package/README.md +208 -7
- package/dist/api/agent-query-api.d.ts +27 -0
- package/dist/api/agent-query-api.js +31 -0
- package/dist/api/agent-query-api.js.map +1 -1
- package/dist/api/bill-query-api.d.ts +61 -0
- package/dist/api/bill-query-api.js +92 -0
- package/dist/api/bill-query-api.js.map +1 -0
- package/dist/api/managed-agent-resource-api.d.ts +19 -0
- package/dist/api/managed-agent-resource-api.js +63 -0
- package/dist/api/managed-agent-resource-api.js.map +1 -0
- package/dist/api/market-query-api.d.ts +74 -0
- package/dist/api/market-query-api.js +145 -0
- package/dist/api/market-query-api.js.map +1 -0
- package/dist/api/order-query-api.d.ts +47 -0
- package/dist/api/order-query-api.js +96 -0
- package/dist/api/order-query-api.js.map +1 -0
- package/dist/api/ppt-api.d.ts +258 -0
- package/dist/api/ppt-api.js +111 -0
- package/dist/api/ppt-api.js.map +1 -0
- package/dist/api/publish-api.d.ts +1 -0
- package/dist/api/publish-api.js +3 -0
- package/dist/api/publish-api.js.map +1 -1
- package/dist/api/security-review-api.d.ts +1 -1
- package/dist/api/security-review-api.js +15 -1
- package/dist/api/security-review-api.js.map +1 -1
- package/dist/api/site-analysis-api.d.ts +85 -0
- package/dist/api/site-analysis-api.js +165 -0
- package/dist/api/site-analysis-api.js.map +1 -0
- package/dist/auth/browser-login.d.ts +1 -0
- package/dist/auth/browser-login.js +25 -2
- package/dist/auth/browser-login.js.map +1 -1
- package/dist/auth/credential-status.d.ts +4 -0
- package/dist/auth/credential-status.js +19 -0
- package/dist/auth/credential-status.js.map +1 -0
- package/dist/commands/agent/index.d.ts +3 -0
- package/dist/commands/agent/index.js +68 -0
- package/dist/commands/agent/index.js.map +1 -0
- package/dist/commands/auth/login.js +8 -3
- package/dist/commands/auth/login.js.map +1 -1
- package/dist/commands/auth/status.d.ts +1 -1
- package/dist/commands/auth/status.js +7 -2
- package/dist/commands/auth/status.js.map +1 -1
- package/dist/commands/bill/index.d.ts +3 -0
- package/dist/commands/bill/index.js +106 -0
- package/dist/commands/bill/index.js.map +1 -0
- package/dist/commands/chat/create.js +1 -0
- package/dist/commands/chat/create.js.map +1 -1
- package/dist/commands/chat/interaction.js +39 -6
- package/dist/commands/chat/interaction.js.map +1 -1
- package/dist/commands/chat/message.js +57 -33
- package/dist/commands/chat/message.js.map +1 -1
- package/dist/commands/chat/publish.js +72 -11
- package/dist/commands/chat/publish.js.map +1 -1
- package/dist/commands/chat/security.d.ts +1 -1
- package/dist/commands/chat/security.js +73 -29
- package/dist/commands/chat/security.js.map +1 -1
- package/dist/commands/independent-creation.d.ts +6 -0
- package/dist/commands/independent-creation.js +140 -0
- package/dist/commands/independent-creation.js.map +1 -0
- package/dist/commands/market/index.d.ts +3 -0
- package/dist/commands/market/index.js +111 -0
- package/dist/commands/market/index.js.map +1 -0
- package/dist/commands/order/index.d.ts +3 -0
- package/dist/commands/order/index.js +41 -0
- package/dist/commands/order/index.js.map +1 -0
- package/dist/commands/ppt/index.d.ts +3 -0
- package/dist/commands/ppt/index.js +159 -0
- package/dist/commands/ppt/index.js.map +1 -0
- package/dist/commands/session/diff.d.ts +4 -0
- package/dist/commands/session/diff.js +12 -0
- package/dist/commands/session/diff.js.map +1 -0
- package/dist/commands/session/history.d.ts +3 -0
- package/dist/commands/session/history.js +50 -0
- package/dist/commands/session/history.js.map +1 -0
- package/dist/commands/session/index.js +4 -0
- package/dist/commands/session/index.js.map +1 -1
- package/dist/commands/shared.d.ts +2 -2
- package/dist/commands/shared.js +5 -4
- package/dist/commands/shared.js.map +1 -1
- package/dist/commands/site/index.d.ts +3 -0
- package/dist/commands/site/index.js +113 -0
- package/dist/commands/site/index.js.map +1 -0
- package/dist/commands/system/version.js +13 -2
- package/dist/commands/system/version.js.map +1 -1
- package/dist/conversation/agent-friendly.js +2 -2
- package/dist/conversation/managed-agent-create-only.d.ts +26 -0
- package/dist/conversation/managed-agent-create-only.js +287 -0
- package/dist/conversation/managed-agent-create-only.js.map +1 -0
- package/dist/conversation/managed-agent-entry.d.ts +8 -8
- package/dist/conversation/ppt-preflight.d.ts +13 -0
- package/dist/conversation/ppt-preflight.js +68 -0
- package/dist/conversation/ppt-preflight.js.map +1 -0
- package/dist/conversation/project-check-preflight.d.ts +22 -0
- package/dist/conversation/project-check-preflight.js +89 -0
- package/dist/conversation/project-check-preflight.js.map +1 -0
- package/dist/conversation/publish-preflight.d.ts +44 -0
- package/dist/conversation/publish-preflight.js +123 -0
- package/dist/conversation/publish-preflight.js.map +1 -0
- package/dist/conversation/security-entry.d.ts +14 -0
- package/dist/conversation/security-entry.js +49 -0
- package/dist/conversation/security-entry.js.map +1 -0
- package/dist/conversation/security-review.d.ts +1 -1
- package/dist/conversation/security-review.js +1 -1
- package/dist/conversation/security-review.js.map +1 -1
- package/dist/conversation/snapshot-diff.d.ts +44 -0
- package/dist/conversation/snapshot-diff.js +134 -0
- package/dist/conversation/snapshot-diff.js.map +1 -0
- package/dist/interactions/managed-agent-model.d.ts +3 -0
- package/dist/interactions/managed-agent-model.js +2 -0
- package/dist/interactions/managed-agent-model.js.map +1 -1
- package/dist/interactions/managed-agent-wizard.d.ts +1 -1
- package/dist/interactions/managed-agent-wizard.js +38 -6
- package/dist/interactions/managed-agent-wizard.js.map +1 -1
- package/dist/program.js +12 -0
- package/dist/program.js.map +1 -1
- package/dist/runtime.d.ts +1 -1
- package/dist/runtime.js +2 -2
- package/dist/runtime.js.map +1 -1
- package/dist/site-analysis/pagespeed-report.d.ts +48 -0
- package/dist/site-analysis/pagespeed-report.js +163 -0
- package/dist/site-analysis/pagespeed-report.js.map +1 -0
- package/dist/transport/http-client.js +17 -3
- package/dist/transport/http-client.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/** 网站分析只读接口与结果投影。@author xiuyu.yi */
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { parseWire } from '../contracts/node-wire.js';
|
|
4
|
+
import { object } from '../contracts/value.js';
|
|
5
|
+
import { CliError } from '../output/exit-codes.js';
|
|
6
|
+
import { REPORT_CATEGORIES, readPageSpeedReport } from '../site-analysis/pagespeed-report.js';
|
|
7
|
+
const optionalText = z.string().nullish();
|
|
8
|
+
const integer = z.number().int().safe();
|
|
9
|
+
const timestamp = integer.nullish();
|
|
10
|
+
const pagespeedSchema = z
|
|
11
|
+
.object({
|
|
12
|
+
sessionId: z.string().min(1),
|
|
13
|
+
strategy: optionalText,
|
|
14
|
+
status: integer.min(0).max(15),
|
|
15
|
+
updatedAt: timestamp,
|
|
16
|
+
accessibility: optionalText,
|
|
17
|
+
bestPractices: optionalText,
|
|
18
|
+
performance: optionalText,
|
|
19
|
+
seo: optionalText,
|
|
20
|
+
})
|
|
21
|
+
.nullish();
|
|
22
|
+
const monitorSchema = z.object({
|
|
23
|
+
sessionId: z.string().min(1),
|
|
24
|
+
published: z.boolean(),
|
|
25
|
+
currentPublishedSnapshotId: integer.nullish(),
|
|
26
|
+
currentPublishedVersion: optionalText,
|
|
27
|
+
planId: optionalText,
|
|
28
|
+
status: optionalText,
|
|
29
|
+
frequency: optionalText,
|
|
30
|
+
outdated: z.boolean().nullish(),
|
|
31
|
+
lastRunAt: timestamp,
|
|
32
|
+
nextRunAt: timestamp,
|
|
33
|
+
selectedEndpointIds: z.array(z.string()),
|
|
34
|
+
candidates: z.array(z.object({
|
|
35
|
+
id: z.string().min(1),
|
|
36
|
+
displayName: optionalText,
|
|
37
|
+
targetType: optionalText,
|
|
38
|
+
method: optionalText,
|
|
39
|
+
path: optionalText,
|
|
40
|
+
monitorable: z.boolean().nullish(),
|
|
41
|
+
blockedReasonCode: optionalText,
|
|
42
|
+
})),
|
|
43
|
+
latestResults: z.array(z.object({
|
|
44
|
+
endpointId: z.string().min(1),
|
|
45
|
+
status: z.string().min(1),
|
|
46
|
+
httpStatus: integer.nullish(),
|
|
47
|
+
latencyMs: integer.nonnegative().nullish(),
|
|
48
|
+
checkedAt: timestamp,
|
|
49
|
+
})),
|
|
50
|
+
notice: optionalText,
|
|
51
|
+
});
|
|
52
|
+
const reportsSchema = z.array(z.object({
|
|
53
|
+
id: z.string().min(1),
|
|
54
|
+
weekStart: integer,
|
|
55
|
+
weekEnd: integer,
|
|
56
|
+
summary: z.string(),
|
|
57
|
+
createdAt: integer,
|
|
58
|
+
}));
|
|
59
|
+
const trafficRowsSchema = z
|
|
60
|
+
.array(z.object({
|
|
61
|
+
date: z.string().min(1),
|
|
62
|
+
visits: z.number().finite().nonnegative(),
|
|
63
|
+
pageviews: z.number().finite().nonnegative(),
|
|
64
|
+
}))
|
|
65
|
+
.min(1);
|
|
66
|
+
const listRowsSchema = z
|
|
67
|
+
.array(z.object({ label: z.string(), value: z.number().finite().nonnegative() }))
|
|
68
|
+
.min(1);
|
|
69
|
+
const RESULT_EXPLANATIONS = {
|
|
70
|
+
SUCCESS: '该监测项在记录时间检查成功,不代表整个网站当前健康',
|
|
71
|
+
HTTP_ERROR: '该监测项返回了异常 HTTP 状态',
|
|
72
|
+
AUTH_FAILED: '该监测项认证失败',
|
|
73
|
+
TIMEOUT: '该监测项检查超时',
|
|
74
|
+
NETWORK_BLOCKED: '该监测项网络访问受限',
|
|
75
|
+
INCONCLUSIVE: '该监测项结果无法确定',
|
|
76
|
+
PAUSED: '该监测项已暂停',
|
|
77
|
+
};
|
|
78
|
+
export const TRAFFIC_RANGE_DESCRIPTIONS = {
|
|
79
|
+
today: '服务端当天零点至今;时区由服务端决定',
|
|
80
|
+
yesterday: '服务端昨天零点至今天零点前;时区由服务端决定',
|
|
81
|
+
last7Days: '服务端7天前零点至今,并非固定最近168小时;时区由服务端决定',
|
|
82
|
+
};
|
|
83
|
+
function available(conditions) {
|
|
84
|
+
return conditions.every(Boolean) ? 'AVAILABLE' : conditions.some(Boolean) ? 'PARTIAL' : 'UNKNOWN';
|
|
85
|
+
}
|
|
86
|
+
export class SiteAnalysisApi {
|
|
87
|
+
client;
|
|
88
|
+
constructor(client) {
|
|
89
|
+
this.client = client;
|
|
90
|
+
}
|
|
91
|
+
async traffic(sessionId, range) {
|
|
92
|
+
const params = new URLSearchParams({ timeRange: range, sessionId });
|
|
93
|
+
const raw = parseWire(z.record(z.unknown()), (await this.client.request(`/web-api/analysis?${params}`, undefined, { method: 'GET' })).data);
|
|
94
|
+
const currentAvailable = typeof raw.currentVisitors === 'number' &&
|
|
95
|
+
Number.isFinite(raw.currentVisitors) &&
|
|
96
|
+
raw.currentVisitors > 0;
|
|
97
|
+
const rows = trafficRowsSchema.safeParse(object(object(raw.timeSeries).result).data);
|
|
98
|
+
const rawLists = Array.isArray(raw.lists) ? raw.lists.map(object) : [];
|
|
99
|
+
const labels = { source: 'Source', page: 'Page', country: 'Country', device: 'Device' };
|
|
100
|
+
const lists = Object.fromEntries(Object.entries(labels).map(([key, label]) => {
|
|
101
|
+
const matches = rawLists.filter((entry) => entry.label === label);
|
|
102
|
+
const parsed = listRowsSchema.safeParse(matches.length === 1 ? matches[0]?.data : undefined);
|
|
103
|
+
return [
|
|
104
|
+
key,
|
|
105
|
+
{
|
|
106
|
+
availability: parsed.success ? 'AVAILABLE' : 'UNKNOWN',
|
|
107
|
+
items: parsed.success ? parsed.data.slice(0, 5) : [],
|
|
108
|
+
},
|
|
109
|
+
];
|
|
110
|
+
}));
|
|
111
|
+
return {
|
|
112
|
+
availability: available([
|
|
113
|
+
currentAvailable,
|
|
114
|
+
rows.success,
|
|
115
|
+
...Object.values(lists).map((entry) => entry.availability === 'AVAILABLE'),
|
|
116
|
+
]),
|
|
117
|
+
traffic: {
|
|
118
|
+
currentVisitors: {
|
|
119
|
+
availability: currentAvailable ? 'AVAILABLE' : 'UNKNOWN',
|
|
120
|
+
value: currentAvailable ? raw.currentVisitors : null,
|
|
121
|
+
},
|
|
122
|
+
series: {
|
|
123
|
+
availability: rows.success ? 'AVAILABLE' : 'UNKNOWN',
|
|
124
|
+
items: rows.success ? rows.data : [],
|
|
125
|
+
},
|
|
126
|
+
lists,
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
async performance(sessionId) {
|
|
131
|
+
const record = parseWire(pagespeedSchema, await this.client.call('/api/uxa-center/agent/AgentQuery/querySessionPagespeed', { sessionId }));
|
|
132
|
+
if (!record)
|
|
133
|
+
return { availability: 'NO_REPORT', reports: [] };
|
|
134
|
+
if (record.sessionId !== sessionId)
|
|
135
|
+
throw new CliError('PROTOCOL_ERROR', '性能报告目标与本次作品不一致');
|
|
136
|
+
const reports = await Promise.all(REPORT_CATEGORIES.map((category) => readPageSpeedReport(sessionId, category, record[category.field], record.status, this.client.signal)));
|
|
137
|
+
return {
|
|
138
|
+
availability: available(reports.map((report) => report.availability === 'AVAILABLE')),
|
|
139
|
+
recordedAt: record.updatedAt ?? null,
|
|
140
|
+
strategy: record.strategy ?? null,
|
|
141
|
+
statusMask: record.status,
|
|
142
|
+
reports,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
async overview(sessionId) {
|
|
146
|
+
const monitor = parseWire(monitorSchema, await this.client.call('/api/uxa-center/agent/RuntimeMonitor/overview', { sessionId }));
|
|
147
|
+
if (monitor.sessionId !== sessionId)
|
|
148
|
+
throw new CliError('PROTOCOL_ERROR', '巡检结果目标与本次作品不一致');
|
|
149
|
+
return {
|
|
150
|
+
...monitor,
|
|
151
|
+
latestResults: monitor.latestResults.map((result) => ({
|
|
152
|
+
...result,
|
|
153
|
+
selected: monitor.selectedEndpointIds.includes(result.endpointId),
|
|
154
|
+
statusExplanation: RESULT_EXPLANATIONS[result.status] ?? '未知监测状态,不能判断是否健康',
|
|
155
|
+
})),
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
async reports(sessionId, page, pageSize) {
|
|
159
|
+
const items = parseWire(reportsSchema, await this.client.call('/api/uxa-center/agent/RuntimeMonitor/reports', { sessionId, page, pageSize }));
|
|
160
|
+
if (items.length > pageSize)
|
|
161
|
+
throw new CliError('PROTOCOL_ERROR', '巡检周报返回数量超过请求页大小');
|
|
162
|
+
return items;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=site-analysis-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"site-analysis-api.js","sourceRoot":"","sources":["../../src/api/site-analysis-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ import { object, text } from '../contracts/value.js';
|
|
|
7
7
|
import { CliError } from '../output/exit-codes.js';
|
|
8
8
|
import { ApiClient } from '../transport/api-client.js';
|
|
9
9
|
import { PatStore, validatePat } from './pat-store.js';
|
|
10
|
+
import { isCredentialRejected, verifyCredential } from './credential-status.js';
|
|
10
11
|
async function openBrowser(url, signal) {
|
|
11
12
|
const [command, args] = process.platform === 'darwin'
|
|
12
13
|
? ['open', [url]]
|
|
@@ -27,8 +28,30 @@ async function openBrowser(url, signal) {
|
|
|
27
28
|
export async function ensurePat(options) {
|
|
28
29
|
const { store, config, output, signal: commandSignal, allowBrowser, name } = options;
|
|
29
30
|
const existing = await store.readIfPresent();
|
|
30
|
-
if (existing)
|
|
31
|
-
|
|
31
|
+
if (existing) {
|
|
32
|
+
output.registerSecret(existing.pat);
|
|
33
|
+
if (!options.verifyExisting)
|
|
34
|
+
return existing;
|
|
35
|
+
try {
|
|
36
|
+
await verifyCredential(new ApiClient(config, existing.pat, undefined, commandSignal));
|
|
37
|
+
return existing;
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
if (!isCredentialRejected(error))
|
|
41
|
+
throw error;
|
|
42
|
+
if (existing.source === 'env')
|
|
43
|
+
throw new CliError('AUTH_REQUIRED', 'SUPERUN_PAT 已被拒绝,请更新或移除该环境变量后重新登录', {
|
|
44
|
+
authFailure: 'CREDENTIAL_REJECTED',
|
|
45
|
+
credentialSource: 'env',
|
|
46
|
+
});
|
|
47
|
+
if (config.endpoint !== DEFAULT_ENDPOINT)
|
|
48
|
+
throw new CliError('AUTH_REQUIRED', '目标环境拒绝了当前 PAT,请核对 endpoint 与对应环境的凭据', {
|
|
49
|
+
authFailure: 'CREDENTIAL_REJECTED',
|
|
50
|
+
credentialSource: 'file',
|
|
51
|
+
});
|
|
52
|
+
// 旧凭据先保留,只有完整网页登录成功后才原子替换。
|
|
53
|
+
}
|
|
54
|
+
}
|
|
32
55
|
if (!allowBrowser)
|
|
33
56
|
throw new CliError('AUTH_REQUIRED', '未配置 PAT,请执行 superun-ai auth login;脚本中请设置 SUPERUN_PAT 或使用 auth login --stdin');
|
|
34
57
|
// 认证统一使用 superun 站点,业务地址不影响登录与凭据签发。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-login.js","sourceRoot":"","sources":["../../src/auth/browser-login.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"browser-login.js","sourceRoot":"","sources":["../../src/auth/browser-login.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { CliError } from '../output/exit-codes.js';
|
|
2
|
+
import type { ApiClient } from '../transport/api-client.js';
|
|
3
|
+
export declare function isCredentialRejected(error: unknown): error is CliError;
|
|
4
|
+
export declare function verifyCredential(client: ApiClient): Promise<void>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** 在线核对 PAT,不读取或选择具体作品。@author xiuyu.yi */
|
|
2
|
+
import { object } from '../contracts/value.js';
|
|
3
|
+
import { CliError } from '../output/exit-codes.js';
|
|
4
|
+
export function isCredentialRejected(error) {
|
|
5
|
+
return (error instanceof CliError &&
|
|
6
|
+
error.code === 'AUTH_REQUIRED' &&
|
|
7
|
+
(error.details.httpStatus === 401 || String(error.details.businessCode) === '1000011'));
|
|
8
|
+
}
|
|
9
|
+
export async function verifyCredential(client) {
|
|
10
|
+
const response = object(await client.call('/api/uxa-center/agent/AgentQuery/pageQuerySessionByLastId', {
|
|
11
|
+
pageSize: 1,
|
|
12
|
+
modes: [6],
|
|
13
|
+
scopes: ['mine'],
|
|
14
|
+
}));
|
|
15
|
+
// 空列表同样是有效登录;只校验结构,不输出列表或改变项目绑定。
|
|
16
|
+
if (![response.data, response.items, response.list].some(Array.isArray))
|
|
17
|
+
throw new CliError('PROTOCOL_ERROR', '登录校验未返回有效分页结构,请稍后重试');
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=credential-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credential-status.js","sourceRoot":"","sources":["../../src/auth/credential-status.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGnD,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,CACL,KAAK,YAAY,QAAQ;QACzB,KAAK,CAAC,IAAI,KAAK,eAAe;QAC9B,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,SAAS,CAAC,CACvF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAiB;IACtD,MAAM,QAAQ,GAAG,MAAM,CACrB,MAAM,MAAM,CAAC,IAAI,CAAC,2DAA2D,EAAE;QAC7E,QAAQ,EAAE,CAAC;QACX,KAAK,EAAE,CAAC,CAAC,CAAC;QACV,MAAM,EAAE,CAAC,MAAM,CAAC;KACjB,CAAC,CACH,CAAC;IACF,iCAAiC;IACjC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QACrE,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/** 只搭建托管智能体配置,复用官方入口和既有向导。@author xiuyu.yi */
|
|
2
|
+
import { InvalidArgumentError } from 'commander';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { runtime, readInput, businessWrite } from '../shared.js';
|
|
5
|
+
import { object } from '../../contracts/value.js';
|
|
6
|
+
import { CliError } from '../../output/exit-codes.js';
|
|
7
|
+
import { startAgentCreation } from '../../conversation/managed-agent-create-only.js';
|
|
8
|
+
import { ManagedAgentResourceApi, validateManagedAgentId } from '../../api/managed-agent-resource-api.js';
|
|
9
|
+
import { registerIndependentCreation } from '../independent-creation.js';
|
|
10
|
+
function sessionValue(value) {
|
|
11
|
+
if (!value || /[\s,\/\\?#]/.test(value))
|
|
12
|
+
throw new InvalidArgumentError('请明确一个主项目sessionId,不能传分支链接或多个目标');
|
|
13
|
+
return value;
|
|
14
|
+
}
|
|
15
|
+
export function registerAgent(program, context) {
|
|
16
|
+
const agent = program.command('agent').description('搭建托管智能体配置并读回资源,不运行或部署');
|
|
17
|
+
registerIndependentCreation(agent.command('app').description('从需求独立搭建智能体应用'), context, 'agent-app');
|
|
18
|
+
agent
|
|
19
|
+
.command('create')
|
|
20
|
+
.argument('<sessionId>', '本次明确的主项目资源域', sessionValue)
|
|
21
|
+
.description('提交官方智能体创建入口,只创建资源;后续用chat state查看向导')
|
|
22
|
+
.option('--message <text>', '本次智能体工作说明,最多4000字符')
|
|
23
|
+
.option('--input <file>', '仅含content或message的JSON,-表示标准输入')
|
|
24
|
+
.action(async (sessionId, _options, command) => {
|
|
25
|
+
const options = command.opts();
|
|
26
|
+
if ((options.message !== undefined) === (options.input !== undefined))
|
|
27
|
+
throw new CliError('INVALID_ARGUMENT', '--message和--input必须且只能选一个');
|
|
28
|
+
const input = z
|
|
29
|
+
.object({ content: z.string().optional(), message: z.string().optional() })
|
|
30
|
+
.strict()
|
|
31
|
+
.safeParse(options.input !== undefined ? await readInput(options.input) : { message: options.message });
|
|
32
|
+
if (!input.success || (input.data.content !== undefined && input.data.message !== undefined))
|
|
33
|
+
throw new CliError('INVALID_ARGUMENT', '工作说明JSON只能包含content或message之一');
|
|
34
|
+
const description = (input.data.content ?? input.data.message ?? '').trim();
|
|
35
|
+
if (!description || description.length > 4000)
|
|
36
|
+
throw new CliError('INVALID_ARGUMENT', '智能体工作说明须为1至4000字符');
|
|
37
|
+
const service = await runtime(context, command);
|
|
38
|
+
const response = object(await businessWrite(context, service, sessionId, () => startAgentCreation(service, sessionId, description)));
|
|
39
|
+
const result = await service.accepted(response, sessionId, false, {});
|
|
40
|
+
context.output.write({
|
|
41
|
+
...result,
|
|
42
|
+
managedAgentEntry: {
|
|
43
|
+
createOnly: true,
|
|
44
|
+
sessionId,
|
|
45
|
+
sourceMessageId: response.sourceMessageId ?? response.messageId ?? null,
|
|
46
|
+
reused: response.reused === true,
|
|
47
|
+
phase: response.entryPending ? 'ENTRY_PENDING' : 'SUBMITTED',
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
agent
|
|
52
|
+
.command('get')
|
|
53
|
+
.argument('<sessionId>', '资源所属的同一主项目', sessionValue)
|
|
54
|
+
.argument('<agentId>', '平台返回的公开uxagent_智能体ID', validateManagedAgentId)
|
|
55
|
+
.description('在指定项目资源域只读核验已创建智能体,不创建测试运行会话')
|
|
56
|
+
.action(async (sessionId, agentId, _options, command) => {
|
|
57
|
+
const service = await runtime(context, command);
|
|
58
|
+
const resource = await new ManagedAgentResourceApi(service.client).getAgent(sessionId, agentId);
|
|
59
|
+
context.output.write({
|
|
60
|
+
state: 'COMPLETED',
|
|
61
|
+
resourceSessionId: sessionId,
|
|
62
|
+
agentId,
|
|
63
|
+
verified: true,
|
|
64
|
+
agent: resource,
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/agent/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** 校验并复用已有 PAT,缺失或失效时通过网页登录领取;支持手动导入。@author xiuyu.yi */
|
|
2
2
|
import { Option } from 'commander';
|
|
3
3
|
import { readPatFromStdin } from '../../auth/pat-store.js';
|
|
4
4
|
import { requireCredentials } from '../shared.js';
|
|
@@ -10,8 +10,13 @@ export function registerLogin(auth, context) {
|
|
|
10
10
|
.option('--stdin', '从标准输入读取 PAT')
|
|
11
11
|
.action(async (options, command) => {
|
|
12
12
|
if (!options.pat && !options.stdin) {
|
|
13
|
-
const { credentialSource } = await requireCredentials(context, command, true);
|
|
14
|
-
context.output.write({
|
|
13
|
+
const { credentialSource } = await requireCredentials(context, command, true, true);
|
|
14
|
+
context.output.write({
|
|
15
|
+
state: 'CONFIGURED',
|
|
16
|
+
credentialSource,
|
|
17
|
+
authenticated: true,
|
|
18
|
+
checkedOnline: true,
|
|
19
|
+
});
|
|
15
20
|
return;
|
|
16
21
|
}
|
|
17
22
|
const pat = await readPatFromStdin(!options.stdin);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,UAAU,aAAa,CAAC,IAAa,EAAE,OAAuB;IAClE,IAAI;SACD,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,oBAAoB,CAAC;SACjC,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;SAClE,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC;SAChC,MAAM,CAAC,KAAK,EAAE,OAA2C,EAAE,OAAgB,EAAE,EAAE;QAC9E,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnC,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACpF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;gBACnB,KAAK,EAAE,YAAY;gBACnB,gBAAgB;gBAChB,aAAa,EAAE,IAAI;gBACnB,aAAa,EAAE,IAAI;aACpB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnD,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** 默认查看本地配置,可显式在线核对已有 PAT。@author xiuyu.yi */
|
|
2
2
|
import type { Command } from 'commander';
|
|
3
3
|
import type { CommandContext } from '../shared.js';
|
|
4
4
|
export declare function registerStatus(auth: Command, context: CommandContext): void;
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import { requireCredentials } from '../shared.js';
|
|
2
|
+
import { verifyCredential } from '../../auth/credential-status.js';
|
|
2
3
|
export function registerStatus(auth, context) {
|
|
3
4
|
auth
|
|
4
5
|
.command('status')
|
|
5
6
|
.description('查看本地 PAT 配置状态')
|
|
6
|
-
.
|
|
7
|
-
|
|
7
|
+
.option('--online', '只读验证当前 PAT 是否仍有效,不打开浏览器')
|
|
8
|
+
.action(async (options, command) => {
|
|
9
|
+
const { credentialSource, service } = await requireCredentials(context, command);
|
|
10
|
+
if (options.online)
|
|
11
|
+
await verifyCredential(service.client);
|
|
8
12
|
context.output.write({
|
|
9
13
|
state: 'CONFIGURED',
|
|
10
14
|
credentialSource,
|
|
15
|
+
...(options.online ? { authenticated: true, checkedOnline: true } : {}),
|
|
11
16
|
});
|
|
12
17
|
});
|
|
13
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/auth/status.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/auth/status.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,MAAM,UAAU,cAAc,CAAC,IAAa,EAAE,OAAuB;IACnE,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,eAAe,CAAC;SAC5B,MAAM,CAAC,UAAU,EAAE,yBAAyB,CAAC;SAC7C,MAAM,CAAC,KAAK,EAAE,OAA6B,EAAE,OAAgB,EAAE,EAAE;QAChE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACjF,IAAI,OAAO,CAAC,MAAM;YAAE,MAAM,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;YACnB,KAAK,EAAE,YAAY;YACnB,gBAAgB;YAChB,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxE,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/** 查询算力账单明细、扣减汇总和筛选目录。@author xiuyu.yi */
|
|
2
|
+
import { InvalidArgumentError, Option } from 'commander';
|
|
3
|
+
import { BillQueryApi } from '../../api/bill-query-api.js';
|
|
4
|
+
import { CliError } from '../../output/exit-codes.js';
|
|
5
|
+
import { runtime } from '../shared.js';
|
|
6
|
+
function positiveLong(value) {
|
|
7
|
+
if (value.length > 19 || !/^[1-9]\d*$/.test(value) || BigInt(value) > 9223372036854775807n)
|
|
8
|
+
throw new InvalidArgumentError('参数必须是 Java Long 范围内的正整数字符串,不能传 0');
|
|
9
|
+
return value;
|
|
10
|
+
}
|
|
11
|
+
function sessionValue(value) {
|
|
12
|
+
if (!value || /[\s,]/.test(value))
|
|
13
|
+
throw new InvalidArgumentError('请传入本次明确的单个 sessionId,不能包含空格或逗号');
|
|
14
|
+
return value;
|
|
15
|
+
}
|
|
16
|
+
function typeValues(value) {
|
|
17
|
+
const parts = value.split(',');
|
|
18
|
+
if (parts.some((part) => !/^\d+$/.test(part) || Number(part) > 2_147_483_647))
|
|
19
|
+
throw new InvalidArgumentError('消费类型必须是逗号分隔的 0 至 2147483647 整数,不能有空项');
|
|
20
|
+
return [...new Set(parts.map(Number))];
|
|
21
|
+
}
|
|
22
|
+
function dateValue(value) {
|
|
23
|
+
const milliseconds = Date.parse(`${value}T00:00:00.000Z`);
|
|
24
|
+
if (!/^\d{4}-\d{2}-\d{2}$/.test(value) ||
|
|
25
|
+
!Number.isFinite(milliseconds) ||
|
|
26
|
+
new Date(milliseconds).toISOString().slice(0, 10) !== value)
|
|
27
|
+
throw new InvalidArgumentError('日期必须是真实有效的 YYYY-MM-DD');
|
|
28
|
+
return value;
|
|
29
|
+
}
|
|
30
|
+
function withWorkspace(command) {
|
|
31
|
+
return command.option('--workspace-id <id>', '明确的工作空间 ID;省略查询个人账单', positiveLong);
|
|
32
|
+
}
|
|
33
|
+
function withFilters(command) {
|
|
34
|
+
return withWorkspace(command)
|
|
35
|
+
.option('--session-id <id>', '在既定账单账户内筛选本次明确的单个作品', sessionValue)
|
|
36
|
+
.option('--related-types <codes>', '逗号分隔的业务类型 code,先通过 bill types 查询', typeValues);
|
|
37
|
+
}
|
|
38
|
+
function queryScope(filters) {
|
|
39
|
+
return {
|
|
40
|
+
currency: 'GLOW_TOKEN',
|
|
41
|
+
scope: filters.workspaceId === undefined ? 'personal' : 'workspace',
|
|
42
|
+
workspaceId: filters.workspaceId ?? null,
|
|
43
|
+
sessionId: filters.sessionId ?? null,
|
|
44
|
+
relatedTypes: filters.relatedTypes ?? [],
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export function registerBill(program, context) {
|
|
48
|
+
const bill = program.command('bill').description('查询算力账单和扣减类统计');
|
|
49
|
+
withFilters(bill.command('list').description('查询算力账单明细,按服务端游标翻页,无日期或条数选项'))
|
|
50
|
+
.option('--cursor <scrollId>', '上次返回的 scrollId;账户或筛选变化时省略', positiveLong)
|
|
51
|
+
.action(async (_options, command) => {
|
|
52
|
+
const filters = command.opts();
|
|
53
|
+
const service = await runtime(context, command);
|
|
54
|
+
const result = await new BillQueryApi(service.client).page(filters, filters.cursor);
|
|
55
|
+
context.output.write({
|
|
56
|
+
state: 'COMPLETED',
|
|
57
|
+
...queryScope(filters),
|
|
58
|
+
amountUnit: 'hundredth-credit',
|
|
59
|
+
...result,
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
withFilters(bill.command('stats').description('按日期汇总扣减类账单,含负数冲正,不含充值类用量返还'))
|
|
63
|
+
.requiredOption('--from <date>', '开始日期 YYYY-MM-DD,按上海时区且包含当天', dateValue)
|
|
64
|
+
.requiredOption('--to <date>', '结束日期 YYYY-MM-DD,含首尾最多 60 天', dateValue)
|
|
65
|
+
.addOption(new Option('--granularity <period>', '统计粒度').choices(['DAY', 'WEEK', 'MONTH']).default('DAY'))
|
|
66
|
+
.action(async (_options, command) => {
|
|
67
|
+
const options = command.opts();
|
|
68
|
+
const days = (Date.parse(`${options.to}T00:00:00.000Z`) - Date.parse(`${options.from}T00:00:00.000Z`)) /
|
|
69
|
+
86_400_000 +
|
|
70
|
+
1;
|
|
71
|
+
if (days < 1 || days > 60)
|
|
72
|
+
throw new CliError('INVALID_ARGUMENT', '开始日期不能晚于结束日期,且含首尾最多 60 天');
|
|
73
|
+
const service = await runtime(context, command);
|
|
74
|
+
const result = await new BillQueryApi(service.client).statistics({
|
|
75
|
+
...options,
|
|
76
|
+
startDate: options.from,
|
|
77
|
+
endDate: options.to,
|
|
78
|
+
});
|
|
79
|
+
context.output.write({
|
|
80
|
+
state: 'COMPLETED',
|
|
81
|
+
...queryScope(options),
|
|
82
|
+
startDate: options.from,
|
|
83
|
+
endDate: options.to,
|
|
84
|
+
granularity: options.granularity,
|
|
85
|
+
timeZone: 'Asia/Shanghai',
|
|
86
|
+
amountUnit: 'credit',
|
|
87
|
+
statisticsScope: '仅统计扣减类账单(type=2),包含负数冲正,不包含充值类用量返还。',
|
|
88
|
+
...result,
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
withWorkspace(bill.command('projects').description('查询账单作品筛选候选,不代表当前编辑权限')).action(async (_options, command) => {
|
|
92
|
+
const options = command.opts();
|
|
93
|
+
const service = await runtime(context, command);
|
|
94
|
+
const items = await new BillQueryApi(service.client).projects(options.workspaceId);
|
|
95
|
+
context.output.write({ state: 'COMPLETED', ...queryScope(options), items });
|
|
96
|
+
});
|
|
97
|
+
bill
|
|
98
|
+
.command('types')
|
|
99
|
+
.description('查询算力账单支持的充值和消费业务类型')
|
|
100
|
+
.action(async (_options, command) => {
|
|
101
|
+
const service = await runtime(context, command);
|
|
102
|
+
const items = await new BillQueryApi(service.client).types();
|
|
103
|
+
context.output.write({ state: 'COMPLETED', currency: 'GLOW_TOKEN', items });
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/bill/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ export function registerCreate(chat, context) {
|
|
|
3
3
|
messageOptions(chat.command('create').description('新建项目并发送需求'))
|
|
4
4
|
.option('--model <model>', '选择模型')
|
|
5
5
|
.option('--workspace-id <workspaceId>', '归属工作空间')
|
|
6
|
+
.option('--slides', '创建网页PPT作品;使用 --no-wait 保留独立演示流程')
|
|
6
7
|
.option('--skip-question', '跳过需求问卷,创建后立即生成方案')
|
|
7
8
|
.option('--advanced', '配合 --skip-question 委托高级设计师;先运行 free-quota,缺少设计师额度或查询失败时暂停,实际状态以服务端回执为准')
|
|
8
9
|
.action(async (_options, command) => sendMessage(context, undefined, command));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/chat/create.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3D,MAAM,UAAU,cAAc,CAAC,IAAa,EAAE,OAAuB;IACnE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;SAC5D,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC;SACjC,MAAM,CAAC,8BAA8B,EAAE,QAAQ,CAAC;SAChD,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;SAC7C,MAAM,CACL,YAAY,EACZ,wEAAwE,CACzE;SACA,MAAM,CAAC,KAAK,EAAE,QAAiB,EAAE,OAAgB,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AACrG,CAAC"}
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/chat/create.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3D,MAAM,UAAU,cAAc,CAAC,IAAa,EAAE,OAAuB;IACnE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;SAC5D,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC;SACjC,MAAM,CAAC,8BAA8B,EAAE,QAAQ,CAAC;SAChD,MAAM,CAAC,UAAU,EAAE,iCAAiC,CAAC;SACrD,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;SAC7C,MAAM,CACL,YAAY,EACZ,wEAAwE,CACzE;SACA,MAAM,CAAC,KAAK,EAAE,QAAiB,EAAE,OAAgB,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AACrG,CAAC"}
|