superun-ai-cli 0.1.30 → 0.1.33
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 +2 -0
- package/README.md +45 -2
- package/dist/api/agent-friendly-api.d.ts +16 -0
- package/dist/api/agent-friendly-api.js +83 -0
- package/dist/api/agent-friendly-api.js.map +1 -0
- package/dist/api/security-review-api.d.ts +20 -0
- package/dist/api/security-review-api.js +75 -0
- package/dist/api/security-review-api.js.map +1 -0
- package/dist/commands/chat/agent-friendly.d.ts +4 -0
- package/dist/commands/chat/agent-friendly.js +97 -0
- package/dist/commands/chat/agent-friendly.js.map +1 -0
- package/dist/commands/chat/index.js +4 -0
- package/dist/commands/chat/index.js.map +1 -1
- package/dist/commands/chat/publish.js +7 -0
- package/dist/commands/chat/publish.js.map +1 -1
- package/dist/commands/chat/security.d.ts +4 -0
- package/dist/commands/chat/security.js +57 -0
- package/dist/commands/chat/security.js.map +1 -0
- package/dist/commands/chat/state.js +6 -2
- package/dist/commands/chat/state.js.map +1 -1
- package/dist/commands/chat/stop.js +17 -0
- package/dist/commands/chat/stop.js.map +1 -1
- package/dist/commands/chat/wait.js +5 -1
- package/dist/commands/chat/wait.js.map +1 -1
- package/dist/commands/shared.d.ts +1 -0
- package/dist/commands/shared.js +2 -0
- package/dist/commands/shared.js.map +1 -1
- package/dist/contracts/cli-output.d.ts +4 -1
- package/dist/contracts/security-review.d.ts +102 -0
- package/dist/contracts/security-review.js +47 -0
- package/dist/contracts/security-review.js.map +1 -0
- package/dist/conversation/agent-friendly-prompts.d.ts +11 -0
- package/dist/conversation/agent-friendly-prompts.js +57 -0
- package/dist/conversation/agent-friendly-prompts.js.map +1 -0
- package/dist/conversation/agent-friendly.d.ts +24 -0
- package/dist/conversation/agent-friendly.js +165 -0
- package/dist/conversation/agent-friendly.js.map +1 -0
- package/dist/conversation/next-actions.d.ts +1 -1
- package/dist/conversation/next-actions.js +22 -10
- package/dist/conversation/next-actions.js.map +1 -1
- package/dist/conversation/security-review.d.ts +129 -0
- package/dist/conversation/security-review.js +246 -0
- package/dist/conversation/security-review.js.map +1 -0
- package/dist/conversation/session-waiter.d.ts +3 -1
- package/dist/conversation/session-waiter.js +5 -2
- package/dist/conversation/session-waiter.js.map +1 -1
- package/dist/interactions/managed-agent-model.d.ts +13 -13
- package/dist/output/writer.d.ts +1 -1
- package/dist/output/writer.js +8 -3
- package/dist/output/writer.js.map +1 -1
- package/dist/runtime.d.ts +4 -2
- package/dist/runtime.js +12 -5
- package/dist/runtime.js.map +1 -1
- package/package.json +1 -1
package/README.en.md
CHANGED
|
@@ -101,6 +101,8 @@ superun-ai
|
|
|
101
101
|
│ │ └── select <sessionId> <choiceId> # Choose a style and show the development feature list
|
|
102
102
|
│ ├── demo <sessionId> # View the demo and record it as viewed
|
|
103
103
|
│ ├── develop <sessionId> # Keep the demo and plan development
|
|
104
|
+
│ ├── security <sessionId> # Scan security, apply necessary fixes, and generate an audit report
|
|
105
|
+
│ ├── agent-friendly <sessionId> # Prepare agent-friendly access and choose Skill or connector instructions
|
|
104
106
|
│ ├── interaction # Answer or skip interactions
|
|
105
107
|
│ │ ├── reply <sessionId> <interactionId> # Submit an answer
|
|
106
108
|
│ │ └── skip <sessionId> <interactionId> # 跳过当前交互
|
package/README.md
CHANGED
|
@@ -103,6 +103,8 @@ superun-ai
|
|
|
103
103
|
│ │ └── select <sessionId> <choiceId> # 选择风格并展示开发功能清单
|
|
104
104
|
│ ├── demo <sessionId> # 查看演示快照并记录已查看状态
|
|
105
105
|
│ ├── develop <sessionId> # 保留演示,进入研发并生成规划
|
|
106
|
+
│ ├── security <sessionId> # 安全扫描,自动评估、必要修复并生成审计报告
|
|
107
|
+
│ ├── agent-friendly <sessionId> # 准备 Agent 友好能力,选择技能或连接器接入方式
|
|
106
108
|
│ ├── interaction # 回答或跳过交互
|
|
107
109
|
│ │ ├── reply <sessionId> <interactionId> # 提交回答
|
|
108
110
|
│ │ └── skip <sessionId> <interactionId> # 跳过当前交互
|
|
@@ -266,7 +268,7 @@ superun-ai chat state <sessionId>
|
|
|
266
268
|
|
|
267
269
|
不传内容时发送“帮我测一下刚才完成的功能。”;`--message` 与 `--input` 只能选一个,JSON 形状与 `chat send` 相同,支持附件。指定内容原样发送,空白内容会被拒绝。测试使用 `business_type=auto_test`,默认等待测试、结果回传及必要的修复结束;运行中不得重复发起。探索阶段和待回答交互先按当前流程处理。
|
|
268
270
|
|
|
269
|
-
每次研发完成后,引导用户选择“代码审查 / 自动测试 / 继续创作 / 上线运营”。用户明确要求“自动测试”“测一下刚才的功能”后直接调用;指定范围时将原文作为内容提交。讨论是否需要测试不等于要求执行。普通主动调用不承诺免费。
|
|
271
|
+
每次研发完成后,引导用户选择“代码审查 / 自动测试 / 安全扫描 / 继续创作 / 上线运营”。用户明确要求“自动测试”“测一下刚才的功能”后直接调用;指定范围时将原文作为内容提交。讨论是否需要测试不等于要求执行。普通主动调用不承诺免费。
|
|
270
272
|
|
|
271
273
|
结果中的 `autoTest.phase` 区分 `test` 与后续 `repair`,`autoTest.reportMessages` 保留本次最新报告,`messages` 保留对话内容。`autoTest.sourceMessageId` 用于后续回复来源校验;`previousReportMessages` 如有返回,仅用于追溯上一份报告的编号和问题,不能替代本次结果。会话 `COMPLETED` 只表示操作结束,不表示测试通过。CLI 不从正文关键词推断结构化通过数或修复状态,由接入 Agent 依据实际报告按以下规则展示。
|
|
272
274
|
|
|
@@ -325,6 +327,7 @@ superun-ai chat state <sessionId>
|
|
|
325
327
|
>
|
|
326
328
|
> - **代码审查**:回复“代码审查”,检查刚才改动的代码,发现问题后先告知你,再自动修复。
|
|
327
329
|
> - **自动测试**:回复“自动测试”,实际验证刚才完成的功能,发现确认的问题后先告知你,再自动修复。
|
|
330
|
+
> - **安全扫描**:检查项目安全风险,必要时自动修复并生成审计报告。
|
|
328
331
|
> - **继续创作**:直接告诉我想新增或调整的内容。
|
|
329
332
|
> - **上线运营**:回复“上线运营”。
|
|
330
333
|
|
|
@@ -368,6 +371,46 @@ superun-ai chat send <sessionId> --review-followup <sourceMessageId> --message "
|
|
|
368
371
|
|
|
369
372
|
不增加“暂不需要”步骤。用户明确要求“审查完再自动测试”时,在审查及修复有效完成且无遗留问题后沿用已有授权衔接,否则等待用户选择。选择自动测试后沿用自动测试的结果规则;选择上线运营后沿用现有发布流程。当前审查流程不会在修复后自动重复审查同一范围。
|
|
370
373
|
|
|
374
|
+
## 安全扫描
|
|
375
|
+
|
|
376
|
+
研发完成后的引导增加“**安全扫描**:检查项目安全风险,必要时自动修复并生成审计报告”。用户选择即执行,默认扫描当前项目全部可用项,不展示费用和预计耗时、不增加二次确认或检查项选择。
|
|
377
|
+
|
|
378
|
+
```bash
|
|
379
|
+
superun-ai chat security <sessionId>
|
|
380
|
+
superun-ai chat security <sessionId> --no-wait
|
|
381
|
+
superun-ai chat state <sessionId> --review-id <reviewId>
|
|
382
|
+
superun-ai chat wait <sessionId> --review-id <reviewId>
|
|
383
|
+
superun-ai chat stop <sessionId> --review-id <reviewId>
|
|
384
|
+
superun-ai chat security <sessionId> --retry-report <reviewId>
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
用户主动指定范围时,可通过可重复的 `--check <category>` 传实际检查项。启动使用 Glow 同源接口,服务端将扫描写入项目会话,并自动推进评估、必要修复和报告生成。不要再通过普通 `chat send` 发送扫描或修复指令。已有扫描进行中时直接跟进,不重复启动。
|
|
388
|
+
|
|
389
|
+
`securityReview` 返回本次扫描 ID、检查项、阶段和报告;`taskProgress.markdown` 展示本次检查列表及等待中、进行中、已完成、失败、取消、跳过状态。仅变化时输出扫描进度事件,按同一 ID 更新,不展示历史扫描列表或内部任务派发消息。普通 `chat state` / `wait` 会识别当前安全扫描会话;返回的等待命令携带 `--review-id`,跨修复轮次保持本次身份。`--review-id` 和 `--message-id` 不应混用。
|
|
390
|
+
|
|
391
|
+
检查完成、扫描消息结束或修复任务启动都不代表整个流程完成。CLI 等到报告成功且取得正文后,由接入 Agent 根据 `securityReview.reportResult` 展示简洁的结果摘要,保留发现的问题、修复结果和必要注意事项。报告数据用于摘要,不展开完整正文、不提供完整报告或 PDF 下载链接、不另行生成报告文件;宿主支持直接内嵌 PDF 时可展示原 PDF,否则只展示结果。正常完成后接上“继续创作 / 自动测试 / 上线运营”引导;仅有未来条件下才需处理的注意事项时不省略菜单,存在当前必须处理的阻碍时先引导解决。修复由后端自动执行,无需用户再次确认;真实业务问题仍按现有交互处理。报告生成失败时,只在用户要求后使用 `--retry-report` 重试报告;扫描失效、失败或取消时如实说明,不自动重启。
|
|
392
|
+
|
|
393
|
+
本地超时或 Ctrl+C 只结束等待,远端任务继续;使用返回的扫描 ID 恢复等待。用户明确要求取消才调用专用取消接口。启动结果不确定时先查询已有记录,不重发写请求。
|
|
394
|
+
|
|
395
|
+
## Agent 友好
|
|
396
|
+
|
|
397
|
+
上线成功且站点已公开后,保留原有发布结果和访问入口,增加“**Agent 友好**:让你的 AI 应用使用这个项目,可以把项目连接到你正在使用的 AI 应用,通过对话查询数据、使用项目功能”。
|
|
398
|
+
|
|
399
|
+
```bash
|
|
400
|
+
superun-ai chat agent-friendly <sessionId>
|
|
401
|
+
superun-ai chat agent-friendly <sessionId> --status
|
|
402
|
+
superun-ai chat agent-friendly <sessionId> --method skill
|
|
403
|
+
superun-ai chat agent-friendly <sessionId> --method connector
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
用户选择入口后先查询技能状态;已开启项目直接选择方式,未开启项目通过与 Glow 相同的 `skill.superun_mcp.integrate` 命令协议发送真实 chat,沿用后台任务和真实业务问题的等待机制。CLI 不使用 fakeChat,不直接写入 ENABLED,也不调用普通插件启停接口。生成中的同一任务继续等待,未就绪或请求结果未知时不自动重复提交。`--status` 只读查询或等待,`--no-wait` 接受后返回,后续使用返回的状态命令继续。
|
|
407
|
+
|
|
408
|
+
方式选择使用宿主已有提问能力:仅“通过技能接入”和“通过连接器接入”,选择后执行对应 `--method`。返回 `agentFriendly.prompt` 和一个包含完整原文的文本代码块,只展示所选方式;不截断、不生成文件、不将命令里的 URL 转成 Markdown 链接。模板沿用 Glow 的项目检查、条件初始化、浏览器登录、能力刷新、Skill/MCP 配置及真实只读查询验证步骤。只使用项目的公开访问 Key,不返回整个 `.env` 或服务端密钥。
|
|
409
|
+
|
|
410
|
+
展示原文后,以“接下来,你可以直接回复我:”引出“接入当前会话 / 接入到新会话 / 接入其他 AI 应用”三项引导,按返回的固定文案原样展示选项与说明。只有用户明确选择后,宿主 Agent 才执行安装或使用实际可用的新会话工具;不支持新会话时如实说明。CLI 本身不会安装 `superun-cli`、修改宿主 Skill/MCP 配置或创建会话,后续动作的命令只重新读取指令。目标 Agent 必须完成真实只读查询才可声称接入成功,不能把指令准备完成当作已连接。
|
|
411
|
+
|
|
412
|
+
普通 `chat state/wait` 保持原有行为;需要持续跟进 Agent 友好生成和方式选择时,使用本次返回的 `agent-friendly --status` 命令。
|
|
413
|
+
|
|
371
414
|
## 余额不足与充值后重试
|
|
372
415
|
|
|
373
416
|
创建请求或对话执行中余额不足时,CLI 返回充值引导:前往 [superun.ai](https://superun.ai) 充值,完成后回复“重试”。用户确认前不自动重试,也不展示继续创作或上线运营菜单。
|
|
@@ -422,7 +465,7 @@ superun-ai chat publish visibility <sessionId> private
|
|
|
422
465
|
|
|
423
466
|
`routing` 包含 `status`(ready/fallback/unavailable)、`sourceFile`、`hasMultipleSides`、`defaultSide`、`groups` 和 `warnings`。每组包含 `side`、`label`、`basePath`、`entryPath`、`entryUrl`、`shareUrl` 及 `routes`(名称、路径、可生成的 URL)。默认端取第一组,进入地址取该组第一条路由,分享地址使用 basePath;动态参数路径不虚构参数和链接。
|
|
424
467
|
|
|
425
|
-
- **单端创作完成**:直接展示该端 entryUrl,命名为“查看预览”,再给“代码审查 / 自动测试 / 继续创作 / 上线运营”。
|
|
468
|
+
- **单端创作完成**:直接展示该端 entryUrl,命名为“查看预览”,再给“代码审查 / 自动测试 / 安全扫描 / 继续创作 / 上线运营”。
|
|
426
469
|
- **多端创作完成**:按原顺序逐端展示全部有名预览链接,引导点击进入;测试和继续创作引导用户说明对应端与功能。
|
|
427
470
|
- **单端发布完成**:展示“访问网站”和继续创作引导。
|
|
428
471
|
- **多端发布完成**:逐端展示全部有名正式链接,引导进入对应端,再提供继续创作引导。
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ApiClient } from '../transport/api-client.js';
|
|
2
|
+
import { HttpClient } from '../transport/http-client.js';
|
|
3
|
+
export declare const AGENT_FRIENDLY_SKILL_ID = "skill.superun_mcp.integrate";
|
|
4
|
+
export declare const LEGACY_AGENT_FRIENDLY_SKILL_ID = "superun.superun-cli.integrate";
|
|
5
|
+
export declare class AgentFriendlyApi {
|
|
6
|
+
private readonly client;
|
|
7
|
+
private readonly http;
|
|
8
|
+
constructor(client: ApiClient, http?: HttpClient);
|
|
9
|
+
enabled(sessionId: string): Promise<boolean>;
|
|
10
|
+
connection(sessionId: string, appName: string): Promise<{
|
|
11
|
+
appName: string;
|
|
12
|
+
supabaseUrl: string;
|
|
13
|
+
anonKey: string;
|
|
14
|
+
manifestUrl: string;
|
|
15
|
+
}>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/** Agent 友好的只读状态与公开接入参数,沿用 Glow 接口。@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
|
+
import { HttpClient } from '../transport/http-client.js';
|
|
6
|
+
export const AGENT_FRIENDLY_SKILL_ID = 'skill.superun_mcp.integrate';
|
|
7
|
+
export const LEGACY_AGENT_FRIENDLY_SKILL_ID = 'superun.superun-cli.integrate';
|
|
8
|
+
const PREFIX = '/api/uxa-center/agent/AgentQuery';
|
|
9
|
+
const URL_KEYS = ['VITE_SUPABASE_URL', 'NEXT_PUBLIC_SUPABASE_URL', 'PUBLIC_SUPABASE_URL', 'SUPABASE_URL'];
|
|
10
|
+
const ANON_KEYS = [
|
|
11
|
+
'VITE_SUPABASE_PUBLISHABLE_KEY',
|
|
12
|
+
'VITE_SUPABASE_ANON_KEY',
|
|
13
|
+
'NEXT_PUBLIC_SUPABASE_ANON_KEY',
|
|
14
|
+
'PUBLIC_SUPABASE_ANON_KEY',
|
|
15
|
+
'SUPABASE_ANON_KEY',
|
|
16
|
+
'SUPABASE_PUBLISHABLE_KEY',
|
|
17
|
+
];
|
|
18
|
+
/** 与 Glow 相同的变量优先级,只提取接入所需的公开配置,不返回整个 .env。 */
|
|
19
|
+
function readEnvValue(content, keys) {
|
|
20
|
+
for (const key of keys) {
|
|
21
|
+
const match = content.match(new RegExp(`^\\s*${key}\\s*=\\s*(.+?)\\s*$`, 'm'));
|
|
22
|
+
if (!match)
|
|
23
|
+
continue;
|
|
24
|
+
const value = match[1].trim();
|
|
25
|
+
return (value.startsWith('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'"))
|
|
26
|
+
? value.slice(1, -1)
|
|
27
|
+
: value;
|
|
28
|
+
}
|
|
29
|
+
return '';
|
|
30
|
+
}
|
|
31
|
+
function publicKey(value) {
|
|
32
|
+
if (/^sb_publishable_[A-Za-z0-9_-]+$/.test(value))
|
|
33
|
+
return true;
|
|
34
|
+
if (!/^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/.test(value))
|
|
35
|
+
return false;
|
|
36
|
+
try {
|
|
37
|
+
return JSON.parse(Buffer.from(value.split('.')[1], 'base64url').toString()).role === 'anon';
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export class AgentFriendlyApi {
|
|
44
|
+
client;
|
|
45
|
+
http;
|
|
46
|
+
constructor(client, http = new HttpClient()) {
|
|
47
|
+
this.client = client;
|
|
48
|
+
this.http = http;
|
|
49
|
+
}
|
|
50
|
+
async enabled(sessionId) {
|
|
51
|
+
const result = parseWire(z.object({
|
|
52
|
+
exists: z.boolean(),
|
|
53
|
+
skills: z.record(z.object({ state: z.enum(['ENABLED', 'DISABLED']).optional() })).optional(),
|
|
54
|
+
}), await this.client.call(`${PREFIX}/querySkillState`, { sessionId }));
|
|
55
|
+
if (result.exists && !result.skills)
|
|
56
|
+
throw new CliError('PROTOCOL_ERROR', '技能状态响应不完整,请重新查询');
|
|
57
|
+
return [AGENT_FRIENDLY_SKILL_ID, LEGACY_AGENT_FRIENDLY_SKILL_ID].some((id) => result.skills?.[id]?.state === 'ENABLED');
|
|
58
|
+
}
|
|
59
|
+
async connection(sessionId, appName) {
|
|
60
|
+
if (!/^[a-zA-Z0-9-]+$/.test(sessionId) || !appName.trim())
|
|
61
|
+
throw new CliError('PROTOCOL_ERROR', '项目缺少有效的会话标识或 sessionKey,无法生成接入指令');
|
|
62
|
+
const content = await this.client.call(`${PREFIX}/queryAttachment`, { sessionId, name: '.env' });
|
|
63
|
+
const supabaseUrl = readEnvValue(typeof content === 'string' ? content : '', URL_KEYS);
|
|
64
|
+
const anonKey = readEnvValue(typeof content === 'string' ? content : '', ANON_KEYS);
|
|
65
|
+
// 指令会被复制到 Shell,仅接受 HTTPS 地址与公开 Key,不泄露误填的服务端凭据。
|
|
66
|
+
if (!/^https:\/\/[a-zA-Z0-9.-]+(?::\d+)?\/?$/.test(supabaseUrl) || !publicKey(anonKey))
|
|
67
|
+
throw new CliError('PROTOCOL_ERROR', '项目缺少有效的 Supabase 地址或公开访问 Key,无法交付可执行的接入指令', { sessionId });
|
|
68
|
+
const manifestUrl = `https://id--${sessionId}.superun.yun/superun/openapi.json`;
|
|
69
|
+
const manifest = await this.http.request({
|
|
70
|
+
url: manifestUrl,
|
|
71
|
+
method: 'GET',
|
|
72
|
+
timeoutMs: 15000,
|
|
73
|
+
signal: this.client.signal,
|
|
74
|
+
});
|
|
75
|
+
const parsed = parseWire(z.object({ openapi: z.string().min(1), paths: z.record(z.unknown()) }), manifest.data);
|
|
76
|
+
if (!Object.keys(parsed.paths).length)
|
|
77
|
+
throw new CliError('PROTOCOL_ERROR', '项目 OpenAPI 清单没有可用接口,请先更新项目接入能力', {
|
|
78
|
+
sessionId,
|
|
79
|
+
});
|
|
80
|
+
return { appName, supabaseUrl, anonKey, manifestUrl };
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=agent-friendly-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-friendly-api.js","sourceRoot":"","sources":["../../src/api/agent-friendly-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ApiClient } from '../transport/api-client.js';
|
|
2
|
+
import type { SecurityReviewView, SecurityReviewResult } from '../contracts/security-review.js';
|
|
3
|
+
export declare function securityActive(review: SecurityReviewView | SecurityReviewResult): boolean;
|
|
4
|
+
export declare class SecurityReviewApi {
|
|
5
|
+
private readonly client;
|
|
6
|
+
private startReceipt?;
|
|
7
|
+
constructor(client: ApiClient);
|
|
8
|
+
options(sessionId: string): Promise<{
|
|
9
|
+
category: string;
|
|
10
|
+
label: string;
|
|
11
|
+
description?: string | undefined;
|
|
12
|
+
seq?: number | undefined;
|
|
13
|
+
selectable?: boolean | undefined;
|
|
14
|
+
available?: boolean | undefined;
|
|
15
|
+
}[]>;
|
|
16
|
+
start(sessionId: string, checks: string[]): Promise<SecurityReviewView>;
|
|
17
|
+
query(sessionId: string, reviewId?: string, includeResults?: boolean): Promise<SecurityReviewView>;
|
|
18
|
+
cancel(sessionId: string, reviewId: string): Promise<void>;
|
|
19
|
+
retryReport(sessionId: string, reviewId: string): Promise<void>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/** Glow 同源的安全扫描接口;编排和自动修复由 Center 负责。@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
|
+
import { securityReviewSchema, SecurityStage } from '../contracts/security-review.js';
|
|
6
|
+
const PREFIX = '/api/uxa-center/agent/AgentSecurityReview';
|
|
7
|
+
export function securityActive(review) {
|
|
8
|
+
return review.stage !== undefined && review.stage < SecurityStage.COMPLETED;
|
|
9
|
+
}
|
|
10
|
+
export class SecurityReviewApi {
|
|
11
|
+
client;
|
|
12
|
+
startReceipt;
|
|
13
|
+
constructor(client) {
|
|
14
|
+
this.client = client;
|
|
15
|
+
}
|
|
16
|
+
async options(sessionId) {
|
|
17
|
+
return parseWire(z.object({
|
|
18
|
+
checks: z.array(z.object({
|
|
19
|
+
category: z.string().min(1),
|
|
20
|
+
label: z.string(),
|
|
21
|
+
description: z.string().optional(),
|
|
22
|
+
seq: z.number().optional(),
|
|
23
|
+
selectable: z.boolean().optional(),
|
|
24
|
+
available: z.boolean().optional(),
|
|
25
|
+
})),
|
|
26
|
+
}), await this.client.call(`${PREFIX}/listSecurityCheckOptions`, { sessionId })).checks;
|
|
27
|
+
}
|
|
28
|
+
async start(sessionId, checks) {
|
|
29
|
+
const response = await this.client.call(`${PREFIX}/startSecurityReview`, {
|
|
30
|
+
sessionId,
|
|
31
|
+
checks,
|
|
32
|
+
locale: this.client.config.locale,
|
|
33
|
+
}, true);
|
|
34
|
+
try {
|
|
35
|
+
const started = parseWire(securityReviewSchema.omit({ found: true }).extend({ reviewId: z.string().min(1) }), response);
|
|
36
|
+
const review = { ...started, found: true, stage: started.stage ?? SecurityStage.CREATED };
|
|
37
|
+
this.startReceipt = { sessionId, review };
|
|
38
|
+
return review;
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
throw new CliError('OUTCOME_UNKNOWN', '扫描已提交但回执不完整,请查询当前扫描,勿重复启动', {
|
|
42
|
+
sessionId,
|
|
43
|
+
retryable: false,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async query(sessionId, reviewId, includeResults = false) {
|
|
48
|
+
const review = parseWire(securityReviewSchema, await this.client.call(`${PREFIX}/querySecurityReview`, {
|
|
49
|
+
sessionId,
|
|
50
|
+
...(reviewId ? { reviewId } : {}),
|
|
51
|
+
includeResults,
|
|
52
|
+
}));
|
|
53
|
+
// 新建记录尚未同步到查询副本时保留已接受回执,继续等待同一个 ID,绝不重发启动。
|
|
54
|
+
if (!review.found &&
|
|
55
|
+
this.startReceipt?.sessionId === sessionId &&
|
|
56
|
+
this.startReceipt.review.reviewId === reviewId)
|
|
57
|
+
return this.startReceipt.review;
|
|
58
|
+
if (review.found &&
|
|
59
|
+
(!review.reviewId || review.stage === undefined || (reviewId && review.reviewId !== reviewId)))
|
|
60
|
+
throw new CliError('PROTOCOL_ERROR', '扫描状态缺少身份、阶段或与本次扫描不一致', {
|
|
61
|
+
sessionId,
|
|
62
|
+
reviewId,
|
|
63
|
+
});
|
|
64
|
+
if (review.found && this.startReceipt?.review.reviewId === reviewId)
|
|
65
|
+
this.startReceipt = undefined;
|
|
66
|
+
return review;
|
|
67
|
+
}
|
|
68
|
+
async cancel(sessionId, reviewId) {
|
|
69
|
+
await this.client.call(`${PREFIX}/cancelSecurityReview`, { sessionId, reviewId }, true);
|
|
70
|
+
}
|
|
71
|
+
async retryReport(sessionId, reviewId) {
|
|
72
|
+
await this.client.call(`${PREFIX}/retrySecurityAuditReport`, { sessionId, reviewId }, true);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=security-review-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-review-api.js","sourceRoot":"","sources":["../../src/api/security-review-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/** Agent 友好:同源 chat 生成能力,按用户选择交付完整接入原文。@author xiuyu.yi */
|
|
2
|
+
import { Option } from 'commander';
|
|
3
|
+
import { runtime, businessWrite, withWait, waitOptions } from '../shared.js';
|
|
4
|
+
import { object, text } from '../../contracts/value.js';
|
|
5
|
+
import { AgentFriendlyApi } from '../../api/agent-friendly-api.js';
|
|
6
|
+
import { agentFriendlyChat } from '../../conversation/agent-friendly-prompts.js';
|
|
7
|
+
import { agentFriendlyGuidance, agentFriendlyNotReady, isAgentFriendlyRound, projectAgentFriendlyGeneration, readyAgentFriendly, } from '../../conversation/agent-friendly.js';
|
|
8
|
+
import { SessionWaiter } from '../../conversation/session-waiter.js';
|
|
9
|
+
import { CliError } from '../../output/exit-codes.js';
|
|
10
|
+
export function registerAgentFriendly(chat, context) {
|
|
11
|
+
withWait(chat.command('agent-friendly <sessionId>').description('准备 Agent 友好能力,选择技能或连接器接入方式'))
|
|
12
|
+
.addOption(new Option('--method <method>', '展示所选方式的完整接入指令,不执行安装').choices([
|
|
13
|
+
'skill',
|
|
14
|
+
'connector',
|
|
15
|
+
]))
|
|
16
|
+
.option('--status', '只查询或等待已有接入任务,不触发生成')
|
|
17
|
+
.option('--message-id <messageId>', '跟进已提交的接入生成消息')
|
|
18
|
+
.action(async (sessionId, _options, command) => {
|
|
19
|
+
const service = await runtime(context, command);
|
|
20
|
+
const options = object(command.opts());
|
|
21
|
+
const method = options.method;
|
|
22
|
+
let messageId = text(options.messageId);
|
|
23
|
+
if (messageId && !options.status)
|
|
24
|
+
throw new CliError('INVALID_ARGUMENT', '指定消息时须使用 --status,避免重新发起生成');
|
|
25
|
+
const api = new AgentFriendlyApi(service.client);
|
|
26
|
+
const view = await service.load(sessionId);
|
|
27
|
+
const enabled = await api.enabled(sessionId);
|
|
28
|
+
const busy = [0, 1, 2, 4, 10].includes(view.session.status) ||
|
|
29
|
+
(await service.taskProgress.hasPendingSubagentWork(sessionId));
|
|
30
|
+
const ownsTask = isAgentFriendlyRound(view);
|
|
31
|
+
if (!busy && enabled) {
|
|
32
|
+
context.output.write(await readyAgentFriendly(service, api, view, method));
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (busy && !ownsTask && !messageId) {
|
|
36
|
+
context.output.write(agentFriendlyGuidance(service, agentFriendlyNotReady(sessionId, '当前项目仍有其他任务或待回答问题,请先处理当前会话,再继续 Agent 友好接入。')));
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if (!busy && !ownsTask && (options.status || method)) {
|
|
40
|
+
context.output.write(agentFriendlyGuidance(service, agentFriendlyNotReady(sessionId, '当前项目尚未开启 Agent 友好,请先选择“Agent 友好”准备项目接入能力。')));
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (!busy && !options.status && !method && !messageId) {
|
|
44
|
+
if (view.session.publicStatus !== 1)
|
|
45
|
+
throw new CliError('INVALID_ARGUMENT', '请先完成上线运营,再准备 Agent 友好接入能力', {
|
|
46
|
+
sessionId,
|
|
47
|
+
});
|
|
48
|
+
if (view.session.status !== 3)
|
|
49
|
+
throw new CliError('INVALID_ARGUMENT', '请先处理当前任务或异常,再准备 Agent 友好接入能力', {
|
|
50
|
+
sessionId,
|
|
51
|
+
});
|
|
52
|
+
const response = object(await businessWrite(context, service, sessionId, () => service.command.chat(agentFriendlyChat(sessionId))));
|
|
53
|
+
messageId = text(response.messageId) ?? text(response.replyMessageId);
|
|
54
|
+
if (!messageId)
|
|
55
|
+
throw new CliError('OUTCOME_UNKNOWN', '接入生成已提交但未取得消息标识,请查询当前会话,勿重复生成', { sessionId, retryable: false });
|
|
56
|
+
}
|
|
57
|
+
if (options.wait === false && (busy || messageId)) {
|
|
58
|
+
context.output.write(agentFriendlyGuidance(service, {
|
|
59
|
+
state: 'RUNNING',
|
|
60
|
+
sessionId,
|
|
61
|
+
messageId,
|
|
62
|
+
messages: [
|
|
63
|
+
{
|
|
64
|
+
id: `${sessionId}:agent-friendly:generating`,
|
|
65
|
+
role: 'assistant',
|
|
66
|
+
text: '正在为你的项目准备 AI 应用接入能力。',
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
interactions: [],
|
|
70
|
+
progress: [],
|
|
71
|
+
agentFriendly: { stage: 'GENERATING' },
|
|
72
|
+
}));
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
const waiter = new SessionWaiter({
|
|
76
|
+
conversation: service.conversation,
|
|
77
|
+
command: service.command,
|
|
78
|
+
load: (id) => service.load(id),
|
|
79
|
+
inspect: (value) => projectAgentFriendlyGeneration(service, api, value),
|
|
80
|
+
onProgress: (result) => context.output.progress(result),
|
|
81
|
+
signal: context.signal,
|
|
82
|
+
});
|
|
83
|
+
const result = await waiter.wait(sessionId, {
|
|
84
|
+
...waitOptions(command),
|
|
85
|
+
messageId,
|
|
86
|
+
// 恢复查询时起始消息可能已被折叠;只对新提交的生成请求等待消息入流。
|
|
87
|
+
requiredMessageId: options.status ? undefined : messageId,
|
|
88
|
+
});
|
|
89
|
+
// 等待器会保留起始回合消息;就绪后只交付方式选择,避免展开生成时两种方式的长说明。
|
|
90
|
+
if (object(object(result).agentFriendly).stage === 'READY') {
|
|
91
|
+
context.output.write(await readyAgentFriendly(service, api, await service.load(sessionId), method));
|
|
92
|
+
}
|
|
93
|
+
else
|
|
94
|
+
context.output.write(result);
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=agent-friendly.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-friendly.js","sourceRoot":"","sources":["../../../src/commands/chat/agent-friendly.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,8 @@ import { registerRetry } from './retry.js';
|
|
|
9
9
|
import { registerStyle } from './style.js';
|
|
10
10
|
import { registerDemo } from './demo.js';
|
|
11
11
|
import { registerDevelop } from './develop.js';
|
|
12
|
+
import { registerSecurity } from './security.js';
|
|
13
|
+
import { registerAgentFriendly } from './agent-friendly.js';
|
|
12
14
|
import { registerInteraction } from './interaction.js';
|
|
13
15
|
import { registerPlugin } from './plugin.js';
|
|
14
16
|
import { registerPublish } from './publish.js';
|
|
@@ -25,6 +27,8 @@ export function registerChat(program, context) {
|
|
|
25
27
|
registerStyle(chat, context);
|
|
26
28
|
registerDemo(chat, context);
|
|
27
29
|
registerDevelop(chat, context);
|
|
30
|
+
registerSecurity(chat, context);
|
|
31
|
+
registerAgentFriendly(chat, context);
|
|
28
32
|
registerInteraction(chat, context);
|
|
29
33
|
registerPlugin(chat, context);
|
|
30
34
|
registerPublish(chat, context);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/chat/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,UAAU,YAAY,CAAC,OAAgB,EAAE,OAAuB;IACpE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACzD,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9B,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5B,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5B,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9B,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7B,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5B,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5B,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7B,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7B,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5B,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/B,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACnC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9B,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACjC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/chat/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,UAAU,YAAY,CAAC,OAAgB,EAAE,OAAuB;IACpE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACzD,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9B,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5B,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5B,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9B,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7B,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5B,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5B,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7B,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7B,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5B,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/B,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAChC,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACnC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9B,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -4,6 +4,7 @@ import { list, object, text } from '../../contracts/value.js';
|
|
|
4
4
|
import { CliError } from '../../output/exit-codes.js';
|
|
5
5
|
import { runtime, withWait, waitOptions, pollOperation, businessWrite } from '../shared.js';
|
|
6
6
|
import { COMMAND_NAME } from '../../config/constants.js';
|
|
7
|
+
import { AGENT_FRIENDLY_DESCRIPTION } from '../../conversation/agent-friendly-prompts.js';
|
|
7
8
|
import { missingPublishedRouting, readProjectRouting, routingInstruction, } from '../../conversation/project-routing.js';
|
|
8
9
|
function versions(value) {
|
|
9
10
|
return [
|
|
@@ -89,6 +90,12 @@ function publishActions(service, sessionId, value, publicStatus, encryptedId, fo
|
|
|
89
90
|
publicStatus === 1 &&
|
|
90
91
|
records.some((item) => (!encryptedId || item.encryptedId === encryptedId) && item.deployStatus === 1))
|
|
91
92
|
return [
|
|
93
|
+
{
|
|
94
|
+
action: 'AGENT_FRIENDLY',
|
|
95
|
+
instruction: `保留当前发布结果和正式访问入口,随后展示“- **Agent 友好**:${AGENT_FRIENDLY_DESCRIPTION}”。与继续创作并列,只在用户选择 Agent 友好后执行;已开启则选择接入方式,未开启则通过同源技能 chat 准备能力。不要自动生成、安装或新建会话。`,
|
|
96
|
+
requiresUserInput: true,
|
|
97
|
+
command: [...command.slice(0, -1), 'agent-friendly', '--', sessionId],
|
|
98
|
+
},
|
|
92
99
|
{
|
|
93
100
|
action: 'CONTINUE_CHAT',
|
|
94
101
|
instruction: `展示发布成功结果和目标版本的 changeLog 原文;未指定版本时使用 updatedAt 最新的已发布版本。${routingInstruction('published')} 单端使用“本次已成功上线,点击〔访问网站〕进入正式网站。”;多端使用“本次已成功上线,可以通过以下入口访问:”,随后逐端列出正式链接,再说“点击对应链接即可进入相应端,以上均为正式访问链接。”。〔链接〕必须替换为真实可点击链接。最后另起一行展示单端“**继续创作**:直接告诉我想新增或调整的内容。”或多端“**继续创作**:直接告诉我想新增或调整哪个端的什么功能。”。等待用户响应;收到新的创作要求后,将用户原文不经改写或扩充地放入 content,通过 --input - 提交 JSON,不自动追加需求或重复发布。`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/commands/chat/publish.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/commands/chat/publish.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAC1F,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,uCAAuC,CAAC;AAE/C,SAAS,QAAQ,CAAC,KAAiB;IACjC,OAAO;QACL,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;KAC7C,CAAC;AACJ,CAAC;AACD,SAAS,cAAc,CAAC,KAAiB,EAAE,WAAoB;IAC7D,OAAO;QACL,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC;aACtB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC;aAClE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACd,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;SAC9C,CAAC,CAAC;KACN,CAAC;AACJ,CAAC;AACD,SAAS,cAAc,CACrB,OAAwB,EACxB,SAAiB,EACjB,KAAiB,EACjB,YAAqB,EACrB,WAAoB,EACpB,SAAS,GAAG,KAAK,EACjB,qBAAqB,GAAG,IAAI;IAE5B,MAAM,OAAO,GAAG;QACd,YAAY;QACZ,YAAY;QACZ,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ;QAC9B,UAAU;QACV,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;QAC5B,MAAM;QACN,SAAS;KACV,CAAC;IACF,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAC1B,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,CACxF,CAAC;IACF,IAAI,OAAO;QACT,OAAO;YACL;gBACE,MAAM,EAAE,eAAe;gBACvB,WAAW,EAAE,4BAA4B;gBACzC,iBAAiB,EAAE,KAAK;gBACxB,OAAO,EAAE;oBACP,GAAG,OAAO;oBACV,QAAQ;oBACR,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtC,cAAc;oBACd,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;oBAC3B,IAAI;oBACJ,SAAS;iBACV;aACF;SACF,CAAC;IACJ,MAAM,SAAS,GAAG,WAAW;QAC3B,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC;QAC1D,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC5C,IAAI,MAAM,IAAI,SAAS,EAAE,YAAY,KAAK,CAAC;QACzC,OAAO;YACL;gBACE,MAAM,EAAE,iBAAiB;gBACzB,WAAW,EAAE,SAAS;oBACpB,CAAC,CAAC,8IAA8I;oBAChJ,CAAC,CAAC,+DAA+D;gBACnE,iBAAiB,EAAE,CAAC,SAAS;gBAC7B,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC;aAChG;SACF,CAAC;IACJ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC,IAAI,YAAY,KAAK,CAAC;QACvE,OAAO;YACL;gBACE,MAAM,EAAE,aAAa;gBACrB,WAAW,EAAE,SAAS;oBACpB,CAAC,CAAC,kDAAkD;oBACpD,CAAC,CAAC,iCAAiC;gBACrC,iBAAiB,EAAE,CAAC,SAAS;gBAC7B,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC;aAC/D;SACF,CAAC;IACJ,IACE,qBAAqB;QACrB,YAAY,KAAK,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC;QAErG,OAAO;YACL;gBACE,MAAM,EAAE,gBAAgB;gBACxB,WAAW,EAAE,uCAAuC,0BAA0B,8EAA8E;gBAC5J,iBAAiB,EAAE,IAAI;gBACvB,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,CAAC;aACtE;YACD;gBACE,MAAM,EAAE,eAAe;gBACvB,WAAW,EAAE,2DAA2D,kBAAkB,CAAC,WAAW,CAAC,uQAAuQ;gBAC9W,iBAAiB,EAAE,IAAI;gBACvB,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC;aAC5E;SACF,CAAC;IACJ,OAAO,EAAE,CAAC;AACZ,CAAC;AACD,KAAK,UAAU,aAAa,CAC1B,OAAwB,EACxB,SAAiB,EACjB,KAAiB,EACjB,WAAoB,EACpB,YAAY,GAAG,KAAK,EACpB,SAAS,GAAG,KAAK;IAEjB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAClC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,CACxF,CAAC;IACF,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CACnC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,CACxF,CAAC;IACF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,OAAO,GACX,CAAC,OAAO,IAAI,CAAC,YAAY,IAAI,QAAQ;QACnC,CAAC,CAAC,UAAU,IAAI,UAAU;YACxB,CAAC,CAAC,MAAM,kBAAkB,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC;YACrE,CAAC,CAAC,uBAAuB,EAAE;QAC7B,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO;QACL,KAAK,EAAE,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW;QACxD,SAAS;QACT,OAAO,EAAE;YACP,GAAG,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC;YACrC,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChC;QACD,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,WAAW,EAAE,cAAc,CACzB,OAAO,EACP,SAAS,EACT,KAAK,EACL,OAAO,CAAC,YAAY,EACpB,WAAW,EACX,SAAS,EACT,CAAC,YAAY,CACd;KACF,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,eAAe,CAAC,IAAa,EAAE,OAAuB;IACpE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IACnE,OAAO;SACJ,OAAO,CAAC,oBAAoB,CAAC;SAC7B,WAAW,CAAC,aAAa,CAAC;SAC1B,MAAM,CAAC,4BAA4B,EAAE,SAAS,CAAC;SAC/C,MAAM,CAAC,cAAc,EAAE,gCAAgC,CAAC;SACxD,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,QAAiB,EAAE,OAAgB,EAAE,EAAE;QACvE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,EAC7C,KAAK,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAC/C,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,MAAM,aAAa,CACjB,OAAO,EACP,SAAS,EACT,KAAK,EACL,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EACvB,KAAK,EACL,OAAO,CAAC,SAAS,KAAK,IAAI,CAC3B,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IACL,QAAQ,CACN,OAAO;SACJ,OAAO,CAAC,iCAAiC,CAAC;SAC1C,WAAW,CAAC,QAAQ,CAAC;SACrB,MAAM,CAAC,cAAc,EAAE,wBAAwB,CAAC;SAChD,SAAS,CAAC,IAAI,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;SAC1E,SAAS,CACR,IAAI,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CACjF;SACA,MAAM,CAAC,yBAAyB,EAAE,eAAe,CAAC,CACtD,CAAC,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,WAAmB,EAAE,QAAiB,EAAE,OAAgB,EAAE,EAAE;QAC7F,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,EAC7C,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CACnE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,KAAK,WAAW,CAC3C,CAAC;QACF,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;QACxE,IAAI,MAAM,CAAC,YAAY,KAAK,CAAC;YAAE,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC;QACvF,MAAM,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;gBAC3C,SAAS;gBACT,WAAW;gBACX,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;gBACjC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;gBAC/C,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC;gBACrD,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;gBAClC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrE,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,2BAA2B,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC9E,CAAC,CAAC;YACH,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC;YAC1E,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,QAAQ,CAChB,iBAAiB,EACjB,kCAAkC,EAClC;oBACE,SAAS;oBACT,WAAW;oBACX,KAAK,EAAE,oBAAoB;oBAC3B,SAAS,EAAE,KAAK;iBACjB,CACF,CAAC;YACJ,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;gBACnB,KAAK,EAAE,UAAU;gBACjB,SAAS;gBACT,OAAO,EAAE,EAAE,WAAW,EAAE;gBACxB,WAAW,EAAE,cAAc,CACzB,OAAO,EACP,SAAS,EACT,EAAE,iBAAiB,EAAE,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,EACzD,SAAS,EACT,WAAW,EACX,OAAO,CAAC,SAAS,KAAK,IAAI,CAC3B;aACF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,IAAI,QAAQ,GAAe,EAAE,EAC3B,YAAY,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,aAAa,CAC5B,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EACvC,CAAC,KAAK,EAAE,EAAE;gBACR,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;gBAChF,OAAO,CACL,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,YAAY,KAAK,CAAC,CAClG,CAAC;YACJ,CAAC,EACD,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CACpD,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,CAAC,KAAK,YAAY,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB;gBAAE,MAAM,KAAK,CAAC;YACrF,YAAY,GAAG,IAAI,CAAC;YACpB,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACrD,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;QACnF,IAAI,CAAC,YAAY,IAAI,MAAM,EAAE,YAAY,KAAK,CAAC;YAC7C,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,MAAM,EAAE;gBACzE,SAAS;gBACT,WAAW;gBACX,OAAO,EAAE,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC;aAC/C,CAAC,CAAC;QACL,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,MAAM,aAAa,CACjB,OAAO,EACP,SAAS,EACT,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,OAAO,CAAC,SAAS,KAAK,IAAI,CAC3B,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO;SACJ,OAAO,CAAC,qCAAqC,CAAC;SAC9C,WAAW,CAAC,aAAa,CAAC;SAC1B,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,UAAkB,EAAE,QAAiB,EAAE,OAAgB,EAAE,EAAE;QAC3F,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC7C,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,iCAAiC,CAAC,CAAC;QAC5E,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAChD,IACE,UAAU,KAAK,QAAQ;YACvB,CAAC,QAAQ,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC;YAE1F,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC;QAC1D,MAAM,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CACpD,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,KAAK,QAAQ,CAAC,CAC/D,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;YACnB,GAAG,CAAC,MAAM,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YACrF,UAAU;SACX,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { runtime, businessWrite, withWait, waitOptions } from '../shared.js';
|
|
2
|
+
import { object, text } from '../../contracts/value.js';
|
|
3
|
+
import { SecurityStage, SecurityStatus } from '../../contracts/security-review.js';
|
|
4
|
+
import { securityActive } from '../../api/security-review-api.js';
|
|
5
|
+
import { CliError } from '../../output/exit-codes.js';
|
|
6
|
+
import { appendValue } from './message.js';
|
|
7
|
+
export function registerSecurity(chat, context) {
|
|
8
|
+
withWait(chat.command('security <sessionId>').description('安全扫描,自动评估、必要修复并生成审计报告'))
|
|
9
|
+
.option('--check <category>', '仅在用户指定范围时传入检查项,可重复使用;默认全部可用项', appendValue, [])
|
|
10
|
+
.option('--retry-report <reviewId>', '只重试本次失败的审计报告,不重新扫描或修复')
|
|
11
|
+
.action(async (sessionId, _options, command) => {
|
|
12
|
+
const service = await runtime(context, command);
|
|
13
|
+
const options = object(command.opts());
|
|
14
|
+
const retryId = text(options.retryReport);
|
|
15
|
+
const requested = options.check;
|
|
16
|
+
if (retryId && requested.length)
|
|
17
|
+
throw new CliError('INVALID_ARGUMENT', '重试报告不能指定检查项');
|
|
18
|
+
const current = await service.security.query(sessionId, retryId);
|
|
19
|
+
let reviewId = current.reviewId;
|
|
20
|
+
if (retryId) {
|
|
21
|
+
if (!current.found ||
|
|
22
|
+
current.stage !== SecurityStage.FAILED ||
|
|
23
|
+
current.reportStatus !== SecurityStatus.FAILED)
|
|
24
|
+
throw new CliError('INVALID_ARGUMENT', '本次报告不处于可重试状态,请查询扫描进度', {
|
|
25
|
+
sessionId,
|
|
26
|
+
reviewId: retryId,
|
|
27
|
+
});
|
|
28
|
+
await businessWrite(context, service, sessionId, () => service.security.retryReport(sessionId, retryId));
|
|
29
|
+
}
|
|
30
|
+
else if (!current.found || !securityActive(current)) {
|
|
31
|
+
const catalog = (await service.security.options(sessionId)).filter((item) => item.selectable !== false && item.available !== false);
|
|
32
|
+
if (!catalog.length)
|
|
33
|
+
throw new CliError('INVALID_ARGUMENT', '当前项目暂无可执行的安全检查项,请先完成研发', {
|
|
34
|
+
sessionId,
|
|
35
|
+
});
|
|
36
|
+
if (requested.some((category) => !catalog.some((item) => item.category === category)))
|
|
37
|
+
throw new CliError('INVALID_ARGUMENT', '指定检查项不可用,请使用当前项目的实际检查项', {
|
|
38
|
+
checks: catalog,
|
|
39
|
+
});
|
|
40
|
+
const checks = requested.length ? [...new Set(requested)] : catalog.map((item) => item.category);
|
|
41
|
+
await businessWrite(context, service, sessionId, async () => {
|
|
42
|
+
const response = await service.security.start(sessionId, checks);
|
|
43
|
+
reviewId = response.reviewId;
|
|
44
|
+
return response;
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
if (!reviewId)
|
|
48
|
+
throw new CliError('OUTCOME_UNKNOWN', '扫描回执缺少标识,请查询会话,勿重复启动', {
|
|
49
|
+
sessionId,
|
|
50
|
+
retryable: false,
|
|
51
|
+
});
|
|
52
|
+
context.output.write(options.wait === false
|
|
53
|
+
? await service.state(sessionId, reviewId)
|
|
54
|
+
: await service.wait(sessionId, { ...waitOptions(command), reviewId }));
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=security.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../../src/commands/chat/security.ts"],"names":[],"mappings":"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"}
|