superun-ai-cli 0.1.30 → 0.1.32

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 (40) hide show
  1. package/README.en.md +1 -0
  2. package/README.md +25 -2
  3. package/dist/api/security-review-api.d.ts +20 -0
  4. package/dist/api/security-review-api.js +75 -0
  5. package/dist/api/security-review-api.js.map +1 -0
  6. package/dist/commands/chat/index.js +2 -0
  7. package/dist/commands/chat/index.js.map +1 -1
  8. package/dist/commands/chat/security.d.ts +4 -0
  9. package/dist/commands/chat/security.js +57 -0
  10. package/dist/commands/chat/security.js.map +1 -0
  11. package/dist/commands/chat/state.js +6 -2
  12. package/dist/commands/chat/state.js.map +1 -1
  13. package/dist/commands/chat/stop.js +17 -0
  14. package/dist/commands/chat/stop.js.map +1 -1
  15. package/dist/commands/chat/wait.js +5 -1
  16. package/dist/commands/chat/wait.js.map +1 -1
  17. package/dist/commands/shared.d.ts +1 -0
  18. package/dist/commands/shared.js +2 -0
  19. package/dist/commands/shared.js.map +1 -1
  20. package/dist/contracts/cli-output.d.ts +4 -1
  21. package/dist/contracts/security-review.d.ts +102 -0
  22. package/dist/contracts/security-review.js +47 -0
  23. package/dist/contracts/security-review.js.map +1 -0
  24. package/dist/conversation/next-actions.d.ts +1 -1
  25. package/dist/conversation/next-actions.js +22 -10
  26. package/dist/conversation/next-actions.js.map +1 -1
  27. package/dist/conversation/security-review.d.ts +129 -0
  28. package/dist/conversation/security-review.js +246 -0
  29. package/dist/conversation/security-review.js.map +1 -0
  30. package/dist/conversation/session-waiter.d.ts +3 -1
  31. package/dist/conversation/session-waiter.js +5 -2
  32. package/dist/conversation/session-waiter.js.map +1 -1
  33. package/dist/interactions/managed-agent-model.d.ts +13 -13
  34. package/dist/output/writer.d.ts +1 -1
  35. package/dist/output/writer.js +8 -3
  36. package/dist/output/writer.js.map +1 -1
  37. package/dist/runtime.d.ts +4 -2
  38. package/dist/runtime.js +12 -5
  39. package/dist/runtime.js.map +1 -1
  40. package/package.json +1 -1
@@ -0,0 +1,47 @@
1
+ /** 安全扫描接口和 CLI 输出共用的数据契约。@author xiuyu.yi */
2
+ import { z } from 'zod';
3
+ const status = z.number().int().min(0).max(5);
4
+ const checkSchema = z.object({
5
+ category: z.string().min(1),
6
+ label: z.string().optional(),
7
+ status,
8
+ statusDesc: z.string().optional(),
9
+ });
10
+ export const securityReviewSchema = z.object({
11
+ found: z.boolean(),
12
+ reviewId: z.string().min(1).optional(),
13
+ reviewSeqNo: z.number().optional(),
14
+ stage: z.number().int().min(0).max(8).optional(),
15
+ stageDesc: z.string().optional(),
16
+ currentCheckCategory: z.string().nullish(),
17
+ checks: z.array(checkSchema).optional(),
18
+ assessmentStatus: status.nullish(),
19
+ remediationRequired: z.boolean().nullish(),
20
+ remediationStatus: status.nullish(),
21
+ reportStatus: status.nullish(),
22
+ reportStatusDesc: z.string().optional(),
23
+ reportResult: z.string().nullish(),
24
+ reportPdfUrl: z.string().nullish(),
25
+ reportGeneratedAt: z.union([z.number(), z.string()]).nullish(),
26
+ invalidatedReason: z.string().nullish(),
27
+ });
28
+ export const SecurityStage = {
29
+ CREATED: 0,
30
+ CHECKING: 1,
31
+ ASSESSING: 2,
32
+ REMEDIATING: 3,
33
+ REPORTING: 4,
34
+ COMPLETED: 5,
35
+ FAILED: 6,
36
+ CANCELLED: 7,
37
+ INVALIDATED: 8,
38
+ };
39
+ export const SecurityStatus = {
40
+ SKIPPED: 0,
41
+ PENDING: 1,
42
+ RUNNING: 2,
43
+ SUCCEEDED: 3,
44
+ FAILED: 4,
45
+ CANCELLED: 5,
46
+ };
47
+ //# sourceMappingURL=security-review.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-review.js","sourceRoot":"","sources":["../../src/contracts/security-review.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9C,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,MAAM;IACN,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE;IAClB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;IAC1C,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE;IACvC,gBAAgB,EAAE,MAAM,CAAC,OAAO,EAAE;IAClC,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE;IAC1C,iBAAiB,EAAE,MAAM,CAAC,OAAO,EAAE;IACnC,YAAY,EAAE,MAAM,CAAC,OAAO,EAAE;IAC9B,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;IAClC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;IAClC,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;IAC9D,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;CACxC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC;IACX,SAAS,EAAE,CAAC;IACZ,WAAW,EAAE,CAAC;IACd,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,CAAC;IACZ,MAAM,EAAE,CAAC;IACT,SAAS,EAAE,CAAC;IACZ,WAAW,EAAE,CAAC;CACN,CAAC;AACX,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,CAAC;IACZ,MAAM,EAAE,CAAC;IACT,SAAS,EAAE,CAAC;CACJ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { RuntimeConfig } from '../config/runtime-config.js';
2
2
  import type { CreationResult, NextAction } from '../contracts/cli-output.js';
3
- export type GuidanceResult = Pick<CreationResult, 'state' | 'sessionId'> & Partial<Pick<CreationResult, 'interactions' | 'choices' | 'messageId' | 'cursor' | 'demo' | 'development' | 'stylePlanning' | 'styleGeneration' | 'taskProgress' | 'toolUsage' | 'autoTest' | 'codeReview' | 'replyMessageId'>>;
3
+ export type GuidanceResult = Pick<CreationResult, 'state' | 'sessionId'> & Partial<Pick<CreationResult, 'interactions' | 'choices' | 'messageId' | 'cursor' | 'demo' | 'development' | 'stylePlanning' | 'styleGeneration' | 'taskProgress' | 'toolUsage' | 'autoTest' | 'codeReview' | 'securityReview' | 'replyMessageId'>>;
4
4
  /** 只静默确认风格选择后这一轮规划;实际业务问题仍交给用户。 */
5
5
  export declare function pendingStylePlanApproval(result: GuidanceResult): import("../contracts/cli-output.js").Interaction | undefined;
6
6
  /** 研发结束后选择后续功能仍是本轮完成结果,不能退回过程卡或漏掉工具统计。 */
@@ -4,6 +4,7 @@ import { COMMAND_NAME } from '../config/constants.js';
4
4
  import { AUTO_TEST_RESULT_INSTRUCTION } from './auto-test.js';
5
5
  import { CODE_REVIEW_RESULT_INSTRUCTION } from './code-review.js';
6
6
  import { routingInstruction } from './project-routing.js';
7
+ import { securityNextActions, SECURITY_REVIEW_INSTRUCTION } from './security-review.js';
7
8
  /** 只静默确认风格选择后这一轮规划;实际业务问题仍交给用户。 */
8
9
  export function pendingStylePlanApproval(result) {
9
10
  const interaction = result.interactions?.[0];
@@ -48,15 +49,17 @@ export function buildNextActions(result, config) {
48
49
  const silentPlanning = result.stylePlanning && (!result.interactions?.length || pendingStylePlanApproval(result));
49
50
  const progressInstruction = silentPlanning
50
51
  ? '只展示一次“已采用所选方案,正在整理开发功能清单”(使用实际方案编号),随后静默等待结果;不展示 taskProgress 进度卡、内部步骤或中间演示和规划正文。每 5 分钟的任务提醒照常展示。'
51
- : result.codeReview
52
- ? CODE_REVIEW_RESULT_INSTRUCTION
53
- : result.autoTest
54
- ? AUTO_TEST_RESULT_INSTRUCTION
55
- : completed
56
- ? '整轮已结束,按 messages 顺序原样展示本轮完成说明,保留服务端返回的内容、预览链接和后续引导。不改写为步骤表或结束卡片,不以 taskProgress.markdown 替代原始回复。'
57
- : result.taskProgress
58
- ? '每次查询都展示 taskProgress.markdown 进度卡,即使 changed 为 false 也展示。按 Glow 开发中列表展示当前返回的功能和步骤,不从历史消息补回已完成的功能或旧步骤;等待中的功能只展示标题与状态。不追加执行详情或工具次数。界面支持原位更新时按 taskProgress.id 更新同一张卡,否则每次展示当前快照。保留状态待同步提示,不虚构阶段或百分比。'
59
- : '';
52
+ : result.securityReview
53
+ ? SECURITY_REVIEW_INSTRUCTION
54
+ : result.codeReview
55
+ ? CODE_REVIEW_RESULT_INSTRUCTION
56
+ : result.autoTest
57
+ ? AUTO_TEST_RESULT_INSTRUCTION
58
+ : completed
59
+ ? '整轮已结束,按 messages 顺序原样展示本轮完成说明,保留服务端返回的内容、预览链接和后续引导。不改写为步骤表或结束卡片,不以 taskProgress.markdown 替代原始回复。'
60
+ : result.taskProgress
61
+ ? '每次查询都展示 taskProgress.markdown 进度卡,即使 changed 为 false 也展示。按 Glow 开发中列表展示当前返回的功能和步骤,不从历史消息补回已完成的功能或旧步骤;等待中的功能只展示标题与状态。不追加执行详情或工具次数。界面支持原位更新时按 taskProgress.id 更新同一张卡,否则每次展示当前快照。保留状态待同步提示,不虚构阶段或百分比。'
62
+ : '';
60
63
  const waitInstruction = action.requiresUserInput
61
64
  ? result.codeReview
62
65
  ? '后续动作需要用户明确授权;若用户已明确要求审查后接着测试,满足当前结果条件后沿用该授权,无需重复确认。否则等待用户选择,不自动修复未确认的业务规则或发布。'
@@ -83,6 +86,9 @@ export function buildNextActions(result, config) {
83
86
  function nextActionsForState(result, config) {
84
87
  // 显式保留连接地址,避免调用方执行下一步时切回默认环境;凭据不进入命令。
85
88
  const command = [COMMAND_NAME, '--endpoint', config.endpoint, '--locale', config.locale, 'chat'];
89
+ const securityActions = securityNextActions(result, command);
90
+ if (securityActions)
91
+ return securityActions;
86
92
  const styleActions = styleNextActions(result, command);
87
93
  if (styleActions)
88
94
  return styleActions;
@@ -269,7 +275,7 @@ function developmentActions(result, command) {
269
275
  ? `先展示本轮原始结果。${routingInstruction('preview')} 单端使用“本轮创作已完成,点击〔查看预览〕查看效果。”;多端使用“本轮创作已完成,可以分别查看以下入口:”,随后逐端列出链接,并说明“点击对应链接查看各端效果。以上为预览链接,本次改动尚未正式发布。”;只有可确认本次改动尚未发布时才使用后一状态说明,否则仅说明预览不代表发布。〔链接〕必须替换为真实可点击链接。`
270
276
  : '先按 messages 顺序展示原始对话,不把规划确认当作研发完成。';
271
277
  const multiple = result.development?.routing?.hasMultipleSides === true;
272
- const instruction = `${previewInstruction} 接着说明“接下来,你可以:”,然后按以下四条独立列表原样展示,不合并或改名:\n- **代码审查**:检查本轮改动。\n- **自动测试**:${multiple ? '告诉我需要验证哪个端的什么功能。' : '验证指定功能。'}\n- **继续创作**:${multiple ? '告诉我想调整哪个端、什么功能。' : '告诉我想新增或调整的内容。'}\n- **上线运营**:将本次成果发布为正式版本。`;
278
+ const instruction = `${previewInstruction} 接着说明“接下来,你可以:”,然后按以下五条独立列表原样展示,不合并或改名:\n- **代码审查**:检查本轮改动。\n- **自动测试**:${multiple ? '告诉我需要验证哪个端的什么功能。' : '验证指定功能。'}\n- **安全扫描**:检查项目安全风险,必要时自动修复并生成审计报告。\n- **继续创作**:${multiple ? '告诉我想调整哪个端、什么功能。' : '告诉我想新增或调整的内容。'}\n- **上线运营**:将本次成果发布为正式版本。`;
273
279
  return [
274
280
  {
275
281
  action: 'CODE_REVIEW',
@@ -283,6 +289,12 @@ function developmentActions(result, command) {
283
289
  requiresUserInput: true,
284
290
  command: [...command, 'test', '--', result.sessionId],
285
291
  },
292
+ {
293
+ action: 'SECURITY_SCAN',
294
+ instruction: `${instruction} 用户选择安全扫描或安全审查后直接执行,不增加费用或耗时提示、二次确认、检查项选择。默认执行全部可用检查项;用户主动指定范围时用 --check 传实际 category,不扩大范围。已有扫描时跟进本次进度,修复由后端自动推进,不重复发送扫描或修复聊天消息。`,
295
+ requiresUserInput: true,
296
+ command: [...command, 'security', '--', result.sessionId],
297
+ },
286
298
  {
287
299
  action: 'CONTINUE_CHAT',
288
300
  instruction: `${instruction} 用户直接提出需求后,将原文放入 content,通过 --input - 继续当前会话;不强制先回复继续研发或选择推荐功能。如果有 details.features,保留真实 id、标题和说明供参考;只有用户明确选择其中条目时,才使用对应 interactionId 的 SELECT 和 featureIds 提交,不默认全选。`,
@@ -1 +1 @@
1
- {"version":3,"file":"next-actions.js","sourceRoot":"","sources":["../../src/conversation/next-actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"next-actions.js","sourceRoot":"","sources":["../../src/conversation/next-actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,129 @@
1
+ import type { CreationResult, NextAction } from '../contracts/cli-output.js';
2
+ import type { SessionView } from '../contracts/node-wire.js';
3
+ import type { SecurityReviewApi } from '../api/security-review-api.js';
4
+ import type { SecurityReviewView } from '../contracts/security-review.js';
5
+ /** 只从当前轮认领扫描;不把历史扫描或继承到普通研发轮的标记当成当前任务。 */
6
+ export declare function roundSecurityReviewId(view: SessionView, round?: import("zod").objectOutputType<{
7
+ roundId: import("zod").ZodString;
8
+ sessionId: import("zod").ZodString;
9
+ anchorUserMessageId: import("zod").ZodString;
10
+ status: import("zod").ZodEnum<["running", "completed", "failed", "interrupted"]>;
11
+ time: import("zod").ZodObject<{
12
+ timestamp: import("zod").ZodNumber;
13
+ }, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
14
+ timestamp: import("zod").ZodNumber;
15
+ }, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
16
+ timestamp: import("zod").ZodNumber;
17
+ }, import("zod").ZodTypeAny, "passthrough">>;
18
+ userItems: import("zod").ZodArray<import("zod").ZodObject<{
19
+ id: import("zod").ZodString;
20
+ kind: import("zod").ZodString;
21
+ variant: import("zod").ZodString;
22
+ role: import("zod").ZodOptional<import("zod").ZodString>;
23
+ intent: import("zod").ZodOptional<import("zod").ZodString>;
24
+ source: import("zod").ZodOptional<import("zod").ZodObject<{
25
+ messageId: import("zod").ZodOptional<import("zod").ZodString>;
26
+ contentId: import("zod").ZodOptional<import("zod").ZodString>;
27
+ }, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
28
+ messageId: import("zod").ZodOptional<import("zod").ZodString>;
29
+ contentId: import("zod").ZodOptional<import("zod").ZodString>;
30
+ }, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
31
+ messageId: import("zod").ZodOptional<import("zod").ZodString>;
32
+ contentId: import("zod").ZodOptional<import("zod").ZodString>;
33
+ }, import("zod").ZodTypeAny, "passthrough">>>;
34
+ payload: import("zod").ZodDefault<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
35
+ }, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
36
+ id: import("zod").ZodString;
37
+ kind: import("zod").ZodString;
38
+ variant: import("zod").ZodString;
39
+ role: import("zod").ZodOptional<import("zod").ZodString>;
40
+ intent: import("zod").ZodOptional<import("zod").ZodString>;
41
+ source: import("zod").ZodOptional<import("zod").ZodObject<{
42
+ messageId: import("zod").ZodOptional<import("zod").ZodString>;
43
+ contentId: import("zod").ZodOptional<import("zod").ZodString>;
44
+ }, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
45
+ messageId: import("zod").ZodOptional<import("zod").ZodString>;
46
+ contentId: import("zod").ZodOptional<import("zod").ZodString>;
47
+ }, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
48
+ messageId: import("zod").ZodOptional<import("zod").ZodString>;
49
+ contentId: import("zod").ZodOptional<import("zod").ZodString>;
50
+ }, import("zod").ZodTypeAny, "passthrough">>>;
51
+ payload: import("zod").ZodDefault<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
52
+ }, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
53
+ id: import("zod").ZodString;
54
+ kind: import("zod").ZodString;
55
+ variant: import("zod").ZodString;
56
+ role: import("zod").ZodOptional<import("zod").ZodString>;
57
+ intent: import("zod").ZodOptional<import("zod").ZodString>;
58
+ source: import("zod").ZodOptional<import("zod").ZodObject<{
59
+ messageId: import("zod").ZodOptional<import("zod").ZodString>;
60
+ contentId: import("zod").ZodOptional<import("zod").ZodString>;
61
+ }, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
62
+ messageId: import("zod").ZodOptional<import("zod").ZodString>;
63
+ contentId: import("zod").ZodOptional<import("zod").ZodString>;
64
+ }, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
65
+ messageId: import("zod").ZodOptional<import("zod").ZodString>;
66
+ contentId: import("zod").ZodOptional<import("zod").ZodString>;
67
+ }, import("zod").ZodTypeAny, "passthrough">>>;
68
+ payload: import("zod").ZodDefault<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
69
+ }, import("zod").ZodTypeAny, "passthrough">>, "many">;
70
+ agentItems: import("zod").ZodArray<import("zod").ZodObject<{
71
+ id: import("zod").ZodString;
72
+ kind: import("zod").ZodString;
73
+ variant: import("zod").ZodString;
74
+ role: import("zod").ZodOptional<import("zod").ZodString>;
75
+ intent: import("zod").ZodOptional<import("zod").ZodString>;
76
+ source: import("zod").ZodOptional<import("zod").ZodObject<{
77
+ messageId: import("zod").ZodOptional<import("zod").ZodString>;
78
+ contentId: import("zod").ZodOptional<import("zod").ZodString>;
79
+ }, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
80
+ messageId: import("zod").ZodOptional<import("zod").ZodString>;
81
+ contentId: import("zod").ZodOptional<import("zod").ZodString>;
82
+ }, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
83
+ messageId: import("zod").ZodOptional<import("zod").ZodString>;
84
+ contentId: import("zod").ZodOptional<import("zod").ZodString>;
85
+ }, import("zod").ZodTypeAny, "passthrough">>>;
86
+ payload: import("zod").ZodDefault<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
87
+ }, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
88
+ id: import("zod").ZodString;
89
+ kind: import("zod").ZodString;
90
+ variant: import("zod").ZodString;
91
+ role: import("zod").ZodOptional<import("zod").ZodString>;
92
+ intent: import("zod").ZodOptional<import("zod").ZodString>;
93
+ source: import("zod").ZodOptional<import("zod").ZodObject<{
94
+ messageId: import("zod").ZodOptional<import("zod").ZodString>;
95
+ contentId: import("zod").ZodOptional<import("zod").ZodString>;
96
+ }, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
97
+ messageId: import("zod").ZodOptional<import("zod").ZodString>;
98
+ contentId: import("zod").ZodOptional<import("zod").ZodString>;
99
+ }, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
100
+ messageId: import("zod").ZodOptional<import("zod").ZodString>;
101
+ contentId: import("zod").ZodOptional<import("zod").ZodString>;
102
+ }, import("zod").ZodTypeAny, "passthrough">>>;
103
+ payload: import("zod").ZodDefault<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
104
+ }, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
105
+ id: import("zod").ZodString;
106
+ kind: import("zod").ZodString;
107
+ variant: import("zod").ZodString;
108
+ role: import("zod").ZodOptional<import("zod").ZodString>;
109
+ intent: import("zod").ZodOptional<import("zod").ZodString>;
110
+ source: import("zod").ZodOptional<import("zod").ZodObject<{
111
+ messageId: import("zod").ZodOptional<import("zod").ZodString>;
112
+ contentId: import("zod").ZodOptional<import("zod").ZodString>;
113
+ }, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
114
+ messageId: import("zod").ZodOptional<import("zod").ZodString>;
115
+ contentId: import("zod").ZodOptional<import("zod").ZodString>;
116
+ }, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
117
+ messageId: import("zod").ZodOptional<import("zod").ZodString>;
118
+ contentId: import("zod").ZodOptional<import("zod").ZodString>;
119
+ }, import("zod").ZodTypeAny, "passthrough">>>;
120
+ payload: import("zod").ZodDefault<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
121
+ }, import("zod").ZodTypeAny, "passthrough">>, "many">;
122
+ activity: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
123
+ meta: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>;
124
+ }, import("zod").ZodTypeAny, "passthrough"> | undefined): string | undefined;
125
+ export declare function reportMarkdown(value?: string | null): string | undefined;
126
+ export declare function inspectSecurityReview(api: SecurityReviewApi, view: SessionView, requestedId?: string): Promise<CreationResult | undefined>;
127
+ export declare function projectSecurityReview(view: SessionView, review: SecurityReviewView): CreationResult;
128
+ export declare const SECURITY_REVIEW_INSTRUCTION = "\u8FD0\u884C\u4E2D\u53EA\u5C55\u793A\u672C\u6B21\u5B89\u5168\u626B\u63CF\u7684 taskProgress.markdown\uFF0C\u6309\u540C\u4E00 id \u66F4\u65B0\u5217\u8868\uFF1B\u4E0D\u5C55\u793A\u5386\u53F2\u626B\u63CF\u3001\u4E0D\u4F30\u7B97\u767E\u5206\u6BD4\u3001\u4E0D\u628A\u68C0\u67E5\u5B8C\u6210\u89E3\u91CA\u4E3A\u65E0\u98CE\u9669\u3002\u8BC4\u4F30\u548C\u5FC5\u8981\u4FEE\u590D\u7531\u670D\u52A1\u7AEF\u81EA\u52A8\u6267\u884C\uFF0C\u53EA\u5C55\u793A\u9636\u6BB5\u72B6\u6001\uFF0C\u4E0D\u91CD\u590D\u53D1\u9001\u4FEE\u590D\u6307\u4EE4\u3001\u4E0D\u589E\u52A0\u786E\u8BA4\u3001\u4E0D\u5C55\u5F00\u5185\u90E8\u6D3E\u53D1\u6D88\u606F\u3002\u5B8C\u6210\u540E\u4F9D\u636E securityReview.reportResult \u5C55\u793A\u7B80\u6D01\u7ED3\u679C\u6458\u8981\uFF1A\u5B9E\u9645\u53D1\u73B0\u7684\u95EE\u9898\u53CA\u98CE\u9669\u3001\u5DF2\u5904\u7406\u5185\u5BB9\u3001\u672A\u5904\u7406\u4E8B\u9879\u548C\u5FC5\u8981\u7684\u672A\u8986\u76D6\u8303\u56F4\uFF0C\u6570\u91CF\u4E0E\u7ED3\u8BBA\u5FC5\u987B\u6709\u62A5\u544A\u4F9D\u636E\u3002\u4E0D\u5C55\u5F00\u5B8C\u6574\u62A5\u544A\u6B63\u6587\u3001\u4E0D\u63D0\u4F9B\u5B8C\u6574\u62A5\u544A\u6216 PDF \u4E0B\u8F7D\u94FE\u63A5\u3001\u4E0D\u53E6\u884C\u751F\u6210\u62A5\u544A\u6587\u4EF6\u3002\u5BBF\u4E3B\u652F\u6301\u76F4\u63A5\u5185\u5D4C\u5C55\u793A PDF \u65F6\u53EF\u5C55\u793A\u539F PDF\uFF0C\u5426\u5219\u53EA\u5C55\u793A\u7ED3\u679C\u6458\u8981\u3002\u6B63\u5E38\u5B8C\u6210\u540E\u5FC5\u987B\u5728\u6458\u8981\u540E\u63A5\u4E0A\u201C\u63A5\u4E0B\u6765\uFF0C\u4F60\u53EF\u4EE5\uFF1A\u201D\uFF0C\u5C55\u793A nextActions \u4E2D\u7B26\u5408\u6761\u4EF6\u7684\u7EE7\u7EED\u521B\u4F5C\u3001\u81EA\u52A8\u6D4B\u8BD5\u3001\u4E0A\u7EBF\u8FD0\u8425\u4E09\u9879\u5F15\u5BFC\uFF0C\u4E0D\u80FD\u7701\u7565\uFF1B\u82E5\u5B58\u5728\u5F53\u524D\u5FC5\u987B\u5904\u7406\u7684\u963B\u788D\uFF0C\u5148\u8BF4\u660E\u5177\u4F53\u4E8B\u9879\u5E76\u5F15\u5BFC\u5904\u7406\u3002\u771F\u5B9E\u4E1A\u52A1\u63D0\u95EE\u3001\u6267\u884C\u9519\u8BEF\u548C\u4F59\u989D\u4E0D\u8DB3\u4ECD\u987B\u5982\u5B9E\u5C55\u793A\u3002";
129
+ export declare function securityNextActions(result: Pick<CreationResult, 'sessionId' | 'state'> & Partial<CreationResult>, command: string[]): NextAction[] | undefined;
@@ -0,0 +1,246 @@
1
+ /** 将本次安全扫描投影为会话进度与报告,不另行触发修复。@author xiuyu.yi */
2
+ import { createHash } from 'node:crypto';
3
+ import { text } from '../contracts/value.js';
4
+ import { currentRound, roundMessage } from './round-selector.js';
5
+ import { collectInteractions } from '../interactions/registry.js';
6
+ import { projectText } from './text-projector.js';
7
+ import { SecurityStage, SecurityStatus } from '../contracts/security-review.js';
8
+ import { securityActive } from '../api/security-review-api.js';
9
+ import { CliError } from '../output/exit-codes.js';
10
+ const STATUS_LABELS = ['已跳过', '等待中', '进行中', '已完成', '失败', '已取消'];
11
+ const statusLabel = (status) => STATUS_LABELS[status] ?? '状态待同步';
12
+ const STAGE_LABELS = [
13
+ '正在准备安全检查',
14
+ '安全检查进行中',
15
+ '安全评估进行中',
16
+ '安全修复进行中',
17
+ '审计报告生成中',
18
+ '安全扫描已完成',
19
+ '安全扫描未完成',
20
+ '安全扫描已取消',
21
+ '本次扫描已失效',
22
+ ];
23
+ /** 只从当前轮认领扫描;不把历史扫描或继承到普通研发轮的标记当成当前任务。 */
24
+ export function roundSecurityReviewId(view, round = currentRound(view)) {
25
+ if (!round)
26
+ return undefined;
27
+ const card = round.agentItems.find((item) => item.variant === 'security_scan');
28
+ if (card)
29
+ return text(card.payload.reviewId);
30
+ // BFF 会把后台回执并入修复轮,末条 Agent 消息可能已变成 sub_agent_report。
31
+ const anchor = view.pipeline.messages.find((message) => message.messageId === round.anchorUserMessageId);
32
+ const extra = anchor?.roundExtra ?? roundMessage(view, round)?.roundExtra ?? {};
33
+ if (extra.business_type === 'security_remediation')
34
+ return text(extra.securityRemediationReviewId);
35
+ const message = roundMessage(view, round);
36
+ if (message?.roundExtra?.business_type === 'sub_agent_report' &&
37
+ message.roundExtra.securityRemediationAgentMessageId === message.messageId)
38
+ return text(message.roundExtra.securityRemediationReviewId);
39
+ return undefined;
40
+ }
41
+ function ownedRound(view, round, reviewId) {
42
+ return roundSecurityReviewId(view, round) === reviewId;
43
+ }
44
+ export function reportMarkdown(value) {
45
+ if (!value?.trim())
46
+ return undefined;
47
+ try {
48
+ const parsed = JSON.parse(value);
49
+ if (typeof parsed === 'string')
50
+ return parsed.trim() || undefined;
51
+ }
52
+ catch {
53
+ /* 报告已是 Markdown 时直接保留。 */
54
+ }
55
+ return value;
56
+ }
57
+ const cell = (value) => value.replace(/\|/g, '\\|').replace(/[\r\n]+/g, ' ');
58
+ export async function inspectSecurityReview(api, view, requestedId) {
59
+ const reviewId = requestedId ?? roundSecurityReviewId(view);
60
+ if (!reviewId)
61
+ return undefined;
62
+ let review = await api.query(view.session.sessionId, reviewId);
63
+ if (!review.found)
64
+ throw new CliError('INVALID_ARGUMENT', '未找到指定安全扫描,请核对扫描 ID', {
65
+ sessionId: view.session.sessionId,
66
+ reviewId,
67
+ });
68
+ if (!securityActive(review))
69
+ review = await api.query(view.session.sessionId, reviewId, true);
70
+ if (!review.found)
71
+ throw new CliError('PROTOCOL_ERROR', '本次安全扫描详情暂未同步,请继续查询', {
72
+ sessionId: view.session.sessionId,
73
+ reviewId,
74
+ });
75
+ return projectSecurityReview(view, review);
76
+ }
77
+ export function projectSecurityReview(view, review) {
78
+ const reviewId = review.reviewId;
79
+ const stage = review.stage;
80
+ const body = reportMarkdown(review.reportResult);
81
+ const ready = stage === SecurityStage.COMPLETED &&
82
+ review.reportStatus === SecurityStatus.SUCCEEDED &&
83
+ !!body &&
84
+ Array.isArray(review.checks);
85
+ let state = ready
86
+ ? 'COMPLETED'
87
+ : stage === SecurityStage.CANCELLED
88
+ ? 'CANCELLED'
89
+ : stage === SecurityStage.FAILED || stage === SecurityStage.INVALIDATED
90
+ ? 'FAILED'
91
+ : 'RUNNING';
92
+ const owned = (view.pipeline.render?.rounds ?? []).filter((round) => ownedRound(view, round, reviewId));
93
+ // 普通功能推荐不是扫描需要用户回答的问题。真实修复交互仍沿用原协议。
94
+ const bindings = securityActive(review)
95
+ ? collectInteractions(view).filter((binding) => owned.some((round) => round.roundId === binding.round.roundId) &&
96
+ binding.interaction.kind !== 'SELECT_FEATURES')
97
+ : [];
98
+ if (bindings.length)
99
+ state = 'NEEDS_INPUT';
100
+ const current = owned.at(-1);
101
+ let notice = STAGE_LABELS[stage ?? 0] ?? '扫描状态待同步';
102
+ if (stage === SecurityStage.COMPLETED && !ready)
103
+ notice = '审计报告正在同步,请继续等待';
104
+ if (stage === SecurityStage.INVALIDATED)
105
+ notice = '安全修复未完成,本次扫描结果已失效,请重新扫描';
106
+ if (stage === SecurityStage.FAILED && review.reportStatus === SecurityStatus.FAILED)
107
+ notice = '审计报告生成失败,可重试生成报告,无需重新扫描或修复';
108
+ if (review.reportStatus === SecurityStatus.SKIPPED && !securityActive(review))
109
+ notice += ';本次未生成审计报告';
110
+ const rows = (review.checks ?? []).map((check) => [
111
+ check.label || check.category,
112
+ check.statusDesc || statusLabel(check.status),
113
+ ]);
114
+ rows.push(['安全评估', review.assessmentStatus == null ? '等待中' : statusLabel(review.assessmentStatus)], [
115
+ '安全修复',
116
+ review.remediationStatus === SecurityStatus.SKIPPED
117
+ ? '无需修复'
118
+ : review.remediationStatus == null
119
+ ? '等待中'
120
+ : statusLabel(review.remediationStatus),
121
+ ], [
122
+ '审计报告',
123
+ review.reportStatus == null ? '等待中' : review.reportStatusDesc || statusLabel(review.reportStatus),
124
+ ]);
125
+ const markdown = [
126
+ `**本次安全扫描${review.reviewSeqNo === undefined ? '' : `(第 ${review.reviewSeqNo} 次)`}**`,
127
+ '',
128
+ notice,
129
+ '',
130
+ '| 检查项 | 状态 |',
131
+ '| --- | --- |',
132
+ ...rows.map(([name, label]) => `| ${cell(name)} | ${cell(label)} |`),
133
+ ].join('\n');
134
+ const id = `security:${reviewId}`;
135
+ const taskStatus = state === 'COMPLETED'
136
+ ? 'completed'
137
+ : state === 'FAILED'
138
+ ? 'failed'
139
+ : state === 'CANCELLED'
140
+ ? 'interrupted'
141
+ : state === 'NEEDS_INPUT'
142
+ ? 'needs_input'
143
+ : 'running';
144
+ const messages = ready
145
+ ? [
146
+ {
147
+ id: `${id}:report`,
148
+ role: 'assistant',
149
+ text: '本次安全扫描已完成。',
150
+ },
151
+ ]
152
+ : bindings.length
153
+ ? projectText(owned).messages.filter((message) => message.role === 'assistant')
154
+ : state === 'FAILED' || state === 'CANCELLED'
155
+ ? [{ id: `${id}:result`, role: 'assistant', text: notice }]
156
+ : [];
157
+ const { found: _found, ...details } = review;
158
+ return {
159
+ state,
160
+ sessionId: view.session.sessionId,
161
+ topic: view.session.topic,
162
+ messageId: roundMessage(view, current)?.messageId,
163
+ replyMessageId: current?.anchorUserMessageId,
164
+ messages,
165
+ progress: [],
166
+ interactions: bindings.map((binding) => binding.interaction),
167
+ securityReview: { ...details, reviewId, reportResult: ready ? body : undefined },
168
+ taskProgress: {
169
+ id,
170
+ revision: createHash('sha256').update(markdown).digest('hex').slice(0, 16),
171
+ activeCount: state === 'RUNNING' || state === 'NEEDS_INPUT' ? 1 : 0,
172
+ tasks: [{ id, kind: 'security', title: '安全扫描', status: taskStatus, detail: notice }],
173
+ markdown,
174
+ complete: Array.isArray(review.checks),
175
+ warnings: [],
176
+ },
177
+ };
178
+ }
179
+ export const SECURITY_REVIEW_INSTRUCTION = '运行中只展示本次安全扫描的 taskProgress.markdown,按同一 id 更新列表;不展示历史扫描、不估算百分比、不把检查完成解释为无风险。评估和必要修复由服务端自动执行,只展示阶段状态,不重复发送修复指令、不增加确认、不展开内部派发消息。完成后依据 securityReview.reportResult 展示简洁结果摘要:实际发现的问题及风险、已处理内容、未处理事项和必要的未覆盖范围,数量与结论必须有报告依据。不展开完整报告正文、不提供完整报告或 PDF 下载链接、不另行生成报告文件。宿主支持直接内嵌展示 PDF 时可展示原 PDF,否则只展示结果摘要。正常完成后必须在摘要后接上“接下来,你可以:”,展示 nextActions 中符合条件的继续创作、自动测试、上线运营三项引导,不能省略;若存在当前必须处理的阻碍,先说明具体事项并引导处理。真实业务提问、执行错误和余额不足仍须如实展示。';
180
+ export function securityNextActions(result, command) {
181
+ const review = result.securityReview;
182
+ if (!review || result.interactions?.length)
183
+ return undefined;
184
+ const target = ['--review-id', review.reviewId, '--', result.sessionId];
185
+ if (['ACCEPTED', 'RUNNING', 'QUEUED'].includes(result.state))
186
+ return [
187
+ {
188
+ action: 'WAIT_SECURITY_SCAN',
189
+ requiresUserInput: false,
190
+ instruction: '持续跟进本次扫描直到报告生成,不把扫描消息结束或修复任务启动当作完成,不展示后置菜单。',
191
+ command: [
192
+ ...command,
193
+ 'wait',
194
+ ...(result.taskProgress?.revision ? ['--progress-revision', result.taskProgress.revision] : []),
195
+ ...target,
196
+ ],
197
+ },
198
+ {
199
+ action: 'CANCEL_SECURITY_SCAN',
200
+ when: '仅在用户主动要求停止本次扫描或自动修复时执行;不作为等待期间的操作菜单展示。',
201
+ requiresUserInput: true,
202
+ instruction: '用户明确要求停止后,取消本次扫描及自动修复,不调用普通会话停止命令。',
203
+ command: [...command, 'stop', ...target],
204
+ },
205
+ ];
206
+ if (result.state !== 'COMPLETED')
207
+ return [
208
+ {
209
+ action: review.stage === SecurityStage.FAILED && review.reportStatus === SecurityStatus.FAILED
210
+ ? 'RETRY_SECURITY_REPORT'
211
+ : 'RESTART_SECURITY_SCAN',
212
+ requiresUserInput: true,
213
+ instruction: review.stage === SecurityStage.FAILED && review.reportStatus === SecurityStatus.FAILED
214
+ ? '说明报告生成失败。用户要求重试时只重试报告,不重新扫描或修复。'
215
+ : '如实说明扫描失败、取消或失效的状态与原因。用户要求重新扫描后再执行,不自动重启。',
216
+ command: review.stage === SecurityStage.FAILED && review.reportStatus === SecurityStatus.FAILED
217
+ ? [...command, 'security', '--retry-report', review.reviewId, '--', result.sessionId]
218
+ : [...command, 'security', '--', result.sessionId],
219
+ },
220
+ ];
221
+ const when = '扫描及报告已完成,且没有当前必须优先处理的遗留问题或阻碍时展示。仅有未来接入真实数据等条件下才需要处理的注意事项时,先说明该事项,再照常展示完成后的三项引导,不省略菜单,也不宣称无风险。';
222
+ return [
223
+ {
224
+ action: 'CONTINUE_CHAT',
225
+ when,
226
+ requiresUserInput: true,
227
+ instruction: '展示“- **继续创作**:告诉我想新增或调整的内容。”,收到需求后原样提交 content。',
228
+ command: [...command, 'send', '--input', '-', '--', result.sessionId],
229
+ },
230
+ {
231
+ action: 'AUTO_TEST',
232
+ when,
233
+ requiresUserInput: true,
234
+ instruction: '展示“- **自动测试**:验证相关功能或修复效果。”,用户选择后按实际范围执行。',
235
+ command: [...command, 'test', '--', result.sessionId],
236
+ },
237
+ {
238
+ action: 'REVIEW_PUBLISH',
239
+ when,
240
+ requiresUserInput: true,
241
+ instruction: '展示“- **上线运营**:将成果发布为正式版本。”,只有用户明确要求上线才按现有发布流程执行。',
242
+ command: [...command, 'publish', 'status', '--for-launch', '--', result.sessionId],
243
+ },
244
+ ];
245
+ }
246
+ //# sourceMappingURL=security-review.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-review.js","sourceRoot":"","sources":["../../src/conversation/security-review.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,8 @@ import type { ConversationApi } from '../api/conversation-api.js';
4
4
  import type { AgentCommandApi } from '../api/agent-command-api.js';
5
5
  import type { StyleWaitTarget } from '../interactions/parsers/style-selection.js';
6
6
  export type WaitOptions = {
7
+ /** 跨越扫描和自动修复消息轮次,始终跟进同一次扫描。 */
8
+ reviewId?: string;
7
9
  timeout?: number;
8
10
  interval?: number;
9
11
  messageId?: string;
@@ -22,7 +24,7 @@ export declare class SessionWaiter {
22
24
  conversation: ConversationApi;
23
25
  command: AgentCommandApi;
24
26
  load: (sessionId: string) => Promise<SessionView>;
25
- inspect: (view: SessionView, styleTarget?: StyleWaitTarget) => Promise<CreationResult>;
27
+ inspect: (view: SessionView, styleTarget?: StyleWaitTarget, reviewId?: string) => Promise<CreationResult>;
26
28
  /** 只展示过程,不结束等待,也不参与整体状态判断。 */
27
29
  onProgress?: (result: CreationResult) => void;
28
30
  signal?: AbortSignal;