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
|
@@ -1,24 +1,28 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { object } from '../../contracts/value.js';
|
|
2
|
+
import { object, text } from '../../contracts/value.js';
|
|
3
3
|
import { applySnapshot } from '../../conversation/session-waiter.js';
|
|
4
4
|
import { runtime } from '../shared.js';
|
|
5
5
|
import { appendValue } from './message.js';
|
|
6
|
+
import { CliError } from '../../output/exit-codes.js';
|
|
6
7
|
export function registerState(chat, context) {
|
|
7
8
|
chat
|
|
8
9
|
.command('state <sessionId>')
|
|
9
10
|
.description('查询当前任务和交互')
|
|
10
11
|
.option('--message-id <messageId>', '刷新指定消息快照')
|
|
12
|
+
.option('--review-id <reviewId>', '查询指定的本次安全扫描及报告')
|
|
11
13
|
.option('--progress-revision <revision>', '上次已展示的任务进度版本')
|
|
12
14
|
.option('--include-file <name>', '包含指定可见附件正文,可重复使用', appendValue, [])
|
|
13
15
|
.action(async (sessionId, _options, command) => {
|
|
14
16
|
const service = await runtime(context, command), options = object(command.opts());
|
|
17
|
+
if (options.reviewId && options.messageId)
|
|
18
|
+
throw new CliError('INVALID_ARGUMENT', '扫描 ID 与消息 ID 不能同时指定');
|
|
15
19
|
let view = await service.load(sessionId);
|
|
16
20
|
if (typeof options.messageId === 'string') {
|
|
17
21
|
const snapshot = await service.conversation.snapshot(sessionId, options.messageId);
|
|
18
22
|
if (snapshot.pipeline)
|
|
19
23
|
view = applySnapshot(view, snapshot.pipeline);
|
|
20
24
|
}
|
|
21
|
-
const result = await service.inspect(view), names = z.array(z.string()).parse(options.includeFile);
|
|
25
|
+
const result = await service.inspect(view, undefined, text(options.reviewId)), names = z.array(z.string()).parse(options.includeFile);
|
|
22
26
|
if (result.taskProgress)
|
|
23
27
|
result.taskProgress.changed = result.taskProgress.revision !== options.progressRevision;
|
|
24
28
|
if (names.length)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/commands/chat/state.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/commands/chat/state.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAErE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,MAAM,UAAU,aAAa,CAAC,IAAa,EAAE,OAAuB;IAClE,IAAI;SACD,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,WAAW,CAAC;SACxB,MAAM,CAAC,0BAA0B,EAAE,UAAU,CAAC;SAC9C,MAAM,CAAC,wBAAwB,EAAE,gBAAgB,CAAC;SAClD,MAAM,CAAC,gCAAgC,EAAE,cAAc,CAAC;SACxD,MAAM,CAAC,uBAAuB,EAAE,kBAAkB,EAAE,WAAW,EAAE,EAAE,CAAC;SACpE,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,QAAiB,EAAE,OAAgB,EAAE,EAAE;QACvE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,EAC7C,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACnC,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,SAAS;YACvC,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;QAChE,IAAI,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YACnF,IAAI,QAAQ,CAAC,QAAQ;gBAAE,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvE,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAC3E,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACzD,IAAI,MAAM,CAAC,YAAY;YACrB,MAAM,CAAC,YAAY,CAAC,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,KAAK,OAAO,CAAC,gBAAgB,CAAC;QAC1F,IAAI,KAAK,CAAC,MAAM;YAAE,MAAM,CAAC,WAAW,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACzF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,14 +1,31 @@
|
|
|
1
1
|
import { Option } from 'commander';
|
|
2
2
|
import { object, text } from '../../contracts/value.js';
|
|
3
3
|
import { runtime, businessWrite } from '../shared.js';
|
|
4
|
+
import { securityActive } from '../../api/security-review-api.js';
|
|
5
|
+
import { CliError } from '../../output/exit-codes.js';
|
|
4
6
|
export function registerStop(chat, context) {
|
|
5
7
|
chat
|
|
6
8
|
.command('stop <sessionId>')
|
|
7
9
|
.description('停止远端任务')
|
|
8
10
|
.option('--message-id <messageId>', '指定任务消息')
|
|
11
|
+
.option('--review-id <reviewId>', '只取消指定安全扫描及其自动修复')
|
|
9
12
|
.addOption(new Option('--scope <scope>', '停止范围').choices(['own', 'all']).default('own'))
|
|
10
13
|
.action(async (sessionId, _options, command) => {
|
|
11
14
|
const service = await runtime(context, command), options = object(command.opts());
|
|
15
|
+
if (options.reviewId && (options.messageId || options.scope === 'all'))
|
|
16
|
+
throw new CliError('INVALID_ARGUMENT', '指定安全扫描时不能同时指定消息或全部停止');
|
|
17
|
+
const reviewId = text(options.reviewId);
|
|
18
|
+
if (reviewId) {
|
|
19
|
+
const review = await service.security.query(sessionId, reviewId);
|
|
20
|
+
if (!review.found || !securityActive(review))
|
|
21
|
+
throw new CliError('INVALID_ARGUMENT', '该安全扫描已结束或不存在,无需取消', {
|
|
22
|
+
sessionId,
|
|
23
|
+
reviewId,
|
|
24
|
+
});
|
|
25
|
+
await businessWrite(context, service, sessionId, () => service.security.cancel(sessionId, reviewId));
|
|
26
|
+
context.output.write(await service.state(sessionId, reviewId));
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
12
29
|
await businessWrite(context, service, sessionId, () => service.command.stop(sessionId, options.scope === 'all' ? 'all' : 'own', text(options.messageId)));
|
|
13
30
|
context.output.write({ state: 'COMPLETED', sessionId });
|
|
14
31
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../src/commands/chat/stop.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,UAAU,YAAY,CAAC,IAAa,EAAE,OAAuB;IACjE,IAAI;SACD,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,QAAQ,CAAC;SACrB,MAAM,CAAC,0BAA0B,EAAE,QAAQ,CAAC;SAC5C,SAAS,CAAC,IAAI,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SACvF,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,QAAiB,EAAE,OAAgB,EAAE,EAAE;QACvE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,EAC7C,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACnC,MAAM,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CACpD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAClG,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
1
|
+
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../src/commands/chat/stop.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,MAAM,UAAU,YAAY,CAAC,IAAa,EAAE,OAAuB;IACjE,IAAI;SACD,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,QAAQ,CAAC;SACrB,MAAM,CAAC,0BAA0B,EAAE,QAAQ,CAAC;SAC5C,MAAM,CAAC,wBAAwB,EAAE,iBAAiB,CAAC;SACnD,SAAS,CAAC,IAAI,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SACvF,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,QAAiB,EAAE,OAAgB,EAAE,EAAE;QACvE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,EAC7C,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACnC,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC;YACpE,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,sBAAsB,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACjE,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;gBAC1C,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,mBAAmB,EAAE;oBAC1D,SAAS;oBACT,QAAQ;iBACT,CAAC,CAAC;YACL,MAAM,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;YACrG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QACD,MAAM,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CACpD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAClG,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
import { runtime, positive, waitOptions } from '../shared.js';
|
|
2
|
+
import { CliError } from '../../output/exit-codes.js';
|
|
2
3
|
export function registerWait(chat, context) {
|
|
3
4
|
chat
|
|
4
5
|
.command('wait <sessionId>')
|
|
5
6
|
.description('等待当前交互或任务结果,期间持续展示任务进度')
|
|
6
7
|
.option('--message-id <messageId>', '起始消息 ID')
|
|
8
|
+
.option('--review-id <reviewId>', '持续跟进指定安全扫描,直到报告生成')
|
|
7
9
|
.option('--timeout <seconds>', '本地等待上限;不传则持续等待', positive)
|
|
8
10
|
.option('--interval <seconds>', '轮询最小间隔', positive)
|
|
9
11
|
.option('--progress-revision <revision>', '上次已展示的任务进度版本;仅输出变化的进度')
|
|
10
12
|
.action(async (sessionId, _options, command) => {
|
|
11
13
|
const options = waitOptions(command);
|
|
14
|
+
if (options.reviewId && options.messageId)
|
|
15
|
+
throw new CliError('INVALID_ARGUMENT', '扫描 ID 与消息 ID 不能同时指定');
|
|
12
16
|
context.output.write(await (await runtime(context, command)).wait(sessionId, {
|
|
13
17
|
...options,
|
|
14
18
|
// no-wait 回执带的新消息也必须先入流,不能返回前一轮结果。
|
|
15
|
-
requiredMessageId: options.messageId,
|
|
19
|
+
requiredMessageId: options.reviewId ? undefined : options.messageId,
|
|
16
20
|
}));
|
|
17
21
|
});
|
|
18
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wait.js","sourceRoot":"","sources":["../../../src/commands/chat/wait.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"wait.js","sourceRoot":"","sources":["../../../src/commands/chat/wait.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,MAAM,UAAU,YAAY,CAAC,IAAa,EAAE,OAAuB;IACjE,IAAI;SACD,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,wBAAwB,CAAC;SACrC,MAAM,CAAC,0BAA0B,EAAE,SAAS,CAAC;SAC7C,MAAM,CAAC,wBAAwB,EAAE,mBAAmB,CAAC;SACrD,MAAM,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,QAAQ,CAAC;SACzD,MAAM,CAAC,sBAAsB,EAAE,QAAQ,EAAE,QAAQ,CAAC;SAClD,MAAM,CAAC,gCAAgC,EAAE,uBAAuB,CAAC;SACjE,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,QAAiB,EAAE,OAAgB,EAAE,EAAE;QACvE,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,SAAS;YACvC,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;QAChE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,MAAM,CACJ,MAAM,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAChC,CAAC,IAAI,CAAC,SAAS,EAAE;YAChB,GAAG,OAAO;YACV,mCAAmC;YACnC,iBAAiB,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS;SACpE,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -29,6 +29,7 @@ export declare function waitOptions(command: Command): {
|
|
|
29
29
|
interval?: number;
|
|
30
30
|
messageId?: string;
|
|
31
31
|
progressRevision?: string;
|
|
32
|
+
reviewId?: string;
|
|
32
33
|
};
|
|
33
34
|
export declare function withWait(command: Command, noWaitDescription?: string): Command;
|
|
34
35
|
export declare function readInput(path: string): Promise<JsonObject>;
|
package/dist/commands/shared.js
CHANGED
|
@@ -41,6 +41,7 @@ const projectOperations = new Set([
|
|
|
41
41
|
'send',
|
|
42
42
|
'test',
|
|
43
43
|
'review',
|
|
44
|
+
'security',
|
|
44
45
|
'stop',
|
|
45
46
|
'retry',
|
|
46
47
|
'demo',
|
|
@@ -95,6 +96,7 @@ export function waitOptions(command) {
|
|
|
95
96
|
interval: typeof options.interval === 'number' ? options.interval : undefined,
|
|
96
97
|
messageId: text(options.messageId),
|
|
97
98
|
progressRevision: text(options.progressRevision),
|
|
99
|
+
reviewId: text(options.reviewId),
|
|
98
100
|
};
|
|
99
101
|
}
|
|
100
102
|
export function withWait(command, noWaitDescription = '服务端接受请求后立即返回') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/commands/shared.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/commands/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/** 面向终端、Agent 和 MCP 调用方的稳定输出协议。@author xiuyu.yi */
|
|
2
|
+
import type { SecurityReviewResult } from './security-review.js';
|
|
2
3
|
export type CreationState = 'ACCEPTED' | 'QUEUED' | 'RUNNING' | 'PAUSED' | 'NEEDS_INPUT' | 'NEEDS_SELECTION' | 'COMPLETED' | 'FAILED' | 'INTERRUPTED' | 'CANCELLED';
|
|
3
4
|
export type InteractionKind = 'PRD_CLARIFICATION' | 'ASK_USER_TOOL' | 'ASK_USER_MESSAGE' | 'SECRET_INPUT' | 'PLUGIN_SECRET_INPUT' | 'PLUGIN_ACTION' | 'DDL_CONFIRMATION' | 'STYLE_SELECTION' | 'ENTER_IDEATION' | 'APPROVE_ARCHITECTURE_PLAN' | 'SELECT_FEATURES' | 'START_EXECUTION' | 'MANAGED_AGENT_WIZARD' | 'UNSUPPORTED';
|
|
4
5
|
export type Question = {
|
|
@@ -106,7 +107,7 @@ export type DevelopmentProgress = {
|
|
|
106
107
|
export type TaskProgressStatus = 'submitted' | 'queued' | 'running' | 'waiting' | 'needs_input' | 'completed' | 'failed' | 'interrupted' | 'unknown';
|
|
107
108
|
export type TaskProgressItem = {
|
|
108
109
|
id: string;
|
|
109
|
-
kind: 'feature' | 'message' | 'consult' | 'subtask' | 'style' | 'other-member' | 'request';
|
|
110
|
+
kind: 'feature' | 'message' | 'consult' | 'subtask' | 'style' | 'other-member' | 'request' | 'security';
|
|
110
111
|
title: string;
|
|
111
112
|
status: TaskProgressStatus;
|
|
112
113
|
detail?: string;
|
|
@@ -169,6 +170,8 @@ export type CreationResult = {
|
|
|
169
170
|
/** 自动测试及其后续修复的上下文;不以会话完成推断测试通过。 */
|
|
170
171
|
autoTest?: CheckContext<'test'>;
|
|
171
172
|
codeReview?: CheckContext<'review'>;
|
|
173
|
+
/** 本次安全扫描的完整生命周期;不以任意单条聊天消息结束判定完成。 */
|
|
174
|
+
securityReview?: SecurityReviewResult;
|
|
172
175
|
messages: Array<{
|
|
173
176
|
id: string;
|
|
174
177
|
role: 'user' | 'assistant';
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/** 安全扫描接口和 CLI 输出共用的数据契约。@author xiuyu.yi */
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
export declare const securityReviewSchema: z.ZodObject<{
|
|
4
|
+
found: z.ZodBoolean;
|
|
5
|
+
reviewId: z.ZodOptional<z.ZodString>;
|
|
6
|
+
reviewSeqNo: z.ZodOptional<z.ZodNumber>;
|
|
7
|
+
stage: z.ZodOptional<z.ZodNumber>;
|
|
8
|
+
stageDesc: z.ZodOptional<z.ZodString>;
|
|
9
|
+
currentCheckCategory: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
10
|
+
checks: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
11
|
+
category: z.ZodString;
|
|
12
|
+
label: z.ZodOptional<z.ZodString>;
|
|
13
|
+
status: z.ZodNumber;
|
|
14
|
+
statusDesc: z.ZodOptional<z.ZodString>;
|
|
15
|
+
}, "strip", z.ZodTypeAny, {
|
|
16
|
+
status: number;
|
|
17
|
+
category: string;
|
|
18
|
+
label?: string | undefined;
|
|
19
|
+
statusDesc?: string | undefined;
|
|
20
|
+
}, {
|
|
21
|
+
status: number;
|
|
22
|
+
category: string;
|
|
23
|
+
label?: string | undefined;
|
|
24
|
+
statusDesc?: string | undefined;
|
|
25
|
+
}>, "many">>;
|
|
26
|
+
assessmentStatus: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
27
|
+
remediationRequired: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
28
|
+
remediationStatus: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
29
|
+
reportStatus: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
30
|
+
reportStatusDesc: z.ZodOptional<z.ZodString>;
|
|
31
|
+
reportResult: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
32
|
+
reportPdfUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
33
|
+
reportGeneratedAt: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodNumber, z.ZodString]>>>;
|
|
34
|
+
invalidatedReason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
35
|
+
}, "strip", z.ZodTypeAny, {
|
|
36
|
+
found: boolean;
|
|
37
|
+
reviewId?: string | undefined;
|
|
38
|
+
reviewSeqNo?: number | undefined;
|
|
39
|
+
stage?: number | undefined;
|
|
40
|
+
stageDesc?: string | undefined;
|
|
41
|
+
currentCheckCategory?: string | null | undefined;
|
|
42
|
+
checks?: {
|
|
43
|
+
status: number;
|
|
44
|
+
category: string;
|
|
45
|
+
label?: string | undefined;
|
|
46
|
+
statusDesc?: string | undefined;
|
|
47
|
+
}[] | undefined;
|
|
48
|
+
assessmentStatus?: number | null | undefined;
|
|
49
|
+
remediationRequired?: boolean | null | undefined;
|
|
50
|
+
remediationStatus?: number | null | undefined;
|
|
51
|
+
reportStatus?: number | null | undefined;
|
|
52
|
+
reportStatusDesc?: string | undefined;
|
|
53
|
+
reportResult?: string | null | undefined;
|
|
54
|
+
reportPdfUrl?: string | null | undefined;
|
|
55
|
+
reportGeneratedAt?: string | number | null | undefined;
|
|
56
|
+
invalidatedReason?: string | null | undefined;
|
|
57
|
+
}, {
|
|
58
|
+
found: boolean;
|
|
59
|
+
reviewId?: string | undefined;
|
|
60
|
+
reviewSeqNo?: number | undefined;
|
|
61
|
+
stage?: number | undefined;
|
|
62
|
+
stageDesc?: string | undefined;
|
|
63
|
+
currentCheckCategory?: string | null | undefined;
|
|
64
|
+
checks?: {
|
|
65
|
+
status: number;
|
|
66
|
+
category: string;
|
|
67
|
+
label?: string | undefined;
|
|
68
|
+
statusDesc?: string | undefined;
|
|
69
|
+
}[] | undefined;
|
|
70
|
+
assessmentStatus?: number | null | undefined;
|
|
71
|
+
remediationRequired?: boolean | null | undefined;
|
|
72
|
+
remediationStatus?: number | null | undefined;
|
|
73
|
+
reportStatus?: number | null | undefined;
|
|
74
|
+
reportStatusDesc?: string | undefined;
|
|
75
|
+
reportResult?: string | null | undefined;
|
|
76
|
+
reportPdfUrl?: string | null | undefined;
|
|
77
|
+
reportGeneratedAt?: string | number | null | undefined;
|
|
78
|
+
invalidatedReason?: string | null | undefined;
|
|
79
|
+
}>;
|
|
80
|
+
export type SecurityReviewView = z.infer<typeof securityReviewSchema>;
|
|
81
|
+
export type SecurityReviewResult = Omit<SecurityReviewView, 'found'> & {
|
|
82
|
+
reviewId: string;
|
|
83
|
+
};
|
|
84
|
+
export declare const SecurityStage: {
|
|
85
|
+
readonly CREATED: 0;
|
|
86
|
+
readonly CHECKING: 1;
|
|
87
|
+
readonly ASSESSING: 2;
|
|
88
|
+
readonly REMEDIATING: 3;
|
|
89
|
+
readonly REPORTING: 4;
|
|
90
|
+
readonly COMPLETED: 5;
|
|
91
|
+
readonly FAILED: 6;
|
|
92
|
+
readonly CANCELLED: 7;
|
|
93
|
+
readonly INVALIDATED: 8;
|
|
94
|
+
};
|
|
95
|
+
export declare const SecurityStatus: {
|
|
96
|
+
readonly SKIPPED: 0;
|
|
97
|
+
readonly PENDING: 1;
|
|
98
|
+
readonly RUNNING: 2;
|
|
99
|
+
readonly SUCCEEDED: 3;
|
|
100
|
+
readonly FAILED: 4;
|
|
101
|
+
readonly CANCELLED: 5;
|
|
102
|
+
};
|
|
@@ -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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** 与 Glow origin/pre 29112fe11d 同源的技能协议及两种完整接入指令。@author xiuyu.yi */
|
|
2
|
+
import type { ChatInput } from '../api/agent-command-api.js';
|
|
3
|
+
export type AgentFriendlyMethod = 'skill' | 'connector';
|
|
4
|
+
export declare const AGENT_FRIENDLY_DESCRIPTION = "\u8BA9\u4F60\u7684 AI \u5E94\u7528\u4F7F\u7528\u8FD9\u4E2A\u9879\u76EE\uFF0C\u53EF\u4EE5\u628A\u9879\u76EE\u8FDE\u63A5\u5230\u4F60\u6B63\u5728\u4F7F\u7528\u7684 AI \u5E94\u7528\uFF0C\u901A\u8FC7\u5BF9\u8BDD\u67E5\u8BE2\u6570\u636E\u3001\u4F7F\u7528\u9879\u76EE\u529F\u80FD\u3002";
|
|
5
|
+
export declare function agentFriendlyChat(sessionId: string): ChatInput;
|
|
6
|
+
export declare function agentFriendlyPrompt(method: AgentFriendlyMethod, connection: {
|
|
7
|
+
appName: string;
|
|
8
|
+
supabaseUrl: string;
|
|
9
|
+
anonKey: string;
|
|
10
|
+
manifestUrl: string;
|
|
11
|
+
}): string;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { AGENT_FRIENDLY_SKILL_ID } from '../api/agent-friendly-api.js';
|
|
2
|
+
export const AGENT_FRIENDLY_DESCRIPTION = '让你的 AI 应用使用这个项目,可以把项目连接到你正在使用的 AI 应用,通过对话查询数据、使用项目功能。';
|
|
3
|
+
export function agentFriendlyChat(sessionId) {
|
|
4
|
+
return {
|
|
5
|
+
sessionId,
|
|
6
|
+
content: [
|
|
7
|
+
'<command-message>连接 AI 应用</command-message>',
|
|
8
|
+
`<command-name>${AGENT_FRIENDLY_SKILL_ID}</command-name>`,
|
|
9
|
+
'<command-args>请生成「连接 AI 应用」:按照该技能的 SOP 为当前项目准备技能和连接器两种接入方式,并在完成后将该技能状态更新为 ENABLED。</command-args>',
|
|
10
|
+
'<command-type>skill</command-type>',
|
|
11
|
+
].join('\n'),
|
|
12
|
+
roundExtra: { special_skill_scope: 'official' },
|
|
13
|
+
businessParams: {
|
|
14
|
+
skill_display: {
|
|
15
|
+
skillId: AGENT_FRIENDLY_SKILL_ID,
|
|
16
|
+
name: '连接 AI 应用',
|
|
17
|
+
category: 'technical',
|
|
18
|
+
description: '连接常用的 AI 应用,并在其中使用 superun 部分功能、查询数据。',
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
const SKILL_PROMPT = '请把这个 superun 项目作为一个技能接入你当前所在的AI应用,并完成一次真实查询验证。\n\n请按顺序执行:\n1. 先确认当前应用支持安装或导入技能;如果不支持,请明确告诉我,不要声称已经接入。\n2. 确认本机有 Node.js 20 或更高版本,然后执行:\n{{installCommand}}\n3. 先检查项目是否已经存在:\n{{inspectCommand}}\n只有明确提示项目未注册或不存在时,才执行:\n{{initCommand}}\n不要重复初始化已有项目。\n4. 完成登录并刷新项目能力:\n{{loginCommand}}\n{{refreshCommand}}\n5. 从 {{skillUrl}} 下载技能说明,安装到当前应用的技能目录中。保留已有其他技能,不要覆盖无关文件。\n6. 按技能说明执行一次只读的真实项目查询。只有拿到真实结果后才告诉我接入成功;如果失败,请说明失败步骤和错误信息。';
|
|
24
|
+
const CONNECTOR_PROMPT = '请把这个 superun 项目接入你当前所在的智能体或 MCP 客户端,并用一次真实查询确认连接成功。先确认当前客户端支持运行本地 MCP 服务(stdio);如果不支持,请直接说明,不能假装接入成功。然后按以下步骤执行:\n\n1. 检查 Node.js 版本为 20 或更高,然后安装 CLI:\n{{installCommand}}\n\n2. 先检查这个项目是否已经注册:\n{{inspectCommand}}\n如果命令成功,复用现有项目配置,不要重复执行 init,以免覆盖已有设置。只有明确提示项目未注册或不存在时,才执行:\n{{initCommand}}\n初始化后再次运行上述 app show 命令,并记录返回的 id(如有)。\n\n3. 使用浏览器登录:\n{{loginCommand}}\n请让我在浏览器中完成授权,不要要求我在对话中粘贴 access token 或 refresh token。\n\n4. 优先使用当前客户端自带的 MCP 设置页面或命令。如果必须修改配置文件,先确认该客户端官方规定的配置位置和格式,再把下面的本地 MCP 服务参数合并进去;如果客户端使用 mcpServers 结构,可以直接采用下面的配置,否则请转换成作用相同的格式。必须保留已有的其他 MCP 服务,不要覆盖整个配置。如果 app show 返回 id,优先使用该 id 替换下方 args 中 --app 后的名称;如果当前客户端找不到 superun 命令,请先找到它的绝对路径再写入:\n{{mcpConfig}}\n\n5. 让客户端重新加载 MCP 服务并确认已经发现可用工具,然后实际调用 project_status,再执行一次只读项目查询。只有真实查询成功后,才告诉我配置完成;失败时请保留原配置并说明具体原因。不要开启不受限制的高权限模式。每次调用 call_function 前,先展示具体函数名和参数并等待我明确确认;只有确认后才将 userConfirmed 设为 true,未确认不得调用。';
|
|
25
|
+
/** 保留 Glow 的命令形状,转义项目名中的 Shell 特殊字符。 */
|
|
26
|
+
function shellName(name) {
|
|
27
|
+
return '"' + name.replace(/[\\"$`]/g, '\\$&') + '"';
|
|
28
|
+
}
|
|
29
|
+
export function agentFriendlyPrompt(method, connection) {
|
|
30
|
+
const { appName, supabaseUrl, anonKey, manifestUrl } = connection;
|
|
31
|
+
const app = `superun --app ${shellName(appName)} --env production`;
|
|
32
|
+
const login = `${app} login --browser`;
|
|
33
|
+
const refresh = `${app} app refresh`;
|
|
34
|
+
const serverName = `superun-${appName
|
|
35
|
+
.trim()
|
|
36
|
+
.replace(/[^a-zA-Z0-9._-]+/g, '-')
|
|
37
|
+
.replace(/^-+|-+$/g, '') || 'project'}`;
|
|
38
|
+
const values = {
|
|
39
|
+
installCommand: 'npm install -g superun-cli',
|
|
40
|
+
inspectCommand: `${app} app show`,
|
|
41
|
+
initCommand: `superun init --name ${shellName(appName)} --url ${supabaseUrl} --anon-key ${anonKey} --manifest ${manifestUrl} --environment production`,
|
|
42
|
+
loginCommand: method === 'skill' ? login : `${login}\n${refresh}`,
|
|
43
|
+
refreshCommand: refresh,
|
|
44
|
+
skillUrl: 'https://raw.githubusercontent.com/AiGuangInc/superun-cli/main/skills/superun/SKILL.md',
|
|
45
|
+
mcpConfig: JSON.stringify({
|
|
46
|
+
mcpServers: {
|
|
47
|
+
[serverName]: {
|
|
48
|
+
type: 'stdio',
|
|
49
|
+
command: 'superun',
|
|
50
|
+
args: ['--app', appName, '--env', 'production', 'mcp'],
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
}, null, 2),
|
|
54
|
+
};
|
|
55
|
+
return (method === 'skill' ? SKILL_PROMPT : CONNECTOR_PROMPT).replace(/{{(\w+)}}/g, (_, key) => values[key]);
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=agent-friendly-prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-friendly-prompts.js","sourceRoot":"","sources":["../../src/conversation/agent-friendly-prompts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAGvE,MAAM,CAAC,MAAM,0BAA0B,GACrC,uDAAuD,CAAC;AAE1D,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,OAAO;QACL,SAAS;QACT,OAAO,EAAE;YACP,6CAA6C;YAC7C,iBAAiB,uBAAuB,iBAAiB;YACzD,mGAAmG;YACnG,oCAAoC;SACrC,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,UAAU,EAAE,EAAE,mBAAmB,EAAE,UAAU,EAAE;QAC/C,cAAc,EAAE;YACd,aAAa,EAAE;gBACb,OAAO,EAAE,uBAAuB;gBAChC,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,WAAW;gBACrB,WAAW,EAAE,uCAAuC;aACrD;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,YAAY,GAChB,qaAAqa,CAAC;AACxa,MAAM,gBAAgB,GACpB,02BAA02B,CAAC;AAE72B,wCAAwC;AACxC,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAA2B,EAC3B,UAKC;IAED,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC;IAClE,MAAM,GAAG,GAAG,iBAAiB,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC;IACnE,MAAM,KAAK,GAAG,GAAG,GAAG,kBAAkB,CAAC;IACvC,MAAM,OAAO,GAAG,GAAG,GAAG,cAAc,CAAC;IACrC,MAAM,UAAU,GAAG,WACjB,OAAO;SACJ,IAAI,EAAE;SACN,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC;SACjC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,SAChC,EAAE,CAAC;IACH,MAAM,MAAM,GAA2B;QACrC,cAAc,EAAE,4BAA4B;QAC5C,cAAc,EAAE,GAAG,GAAG,WAAW;QACjC,WAAW,EAAE,uBAAuB,SAAS,CAAC,OAAO,CAAC,UAAU,WAAW,eAAe,OAAO,eAAe,WAAW,2BAA2B;QACtJ,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,OAAO,EAAE;QACjE,cAAc,EAAE,OAAO;QACvB,QAAQ,EAAE,uFAAuF;QACjG,SAAS,EAAE,IAAI,CAAC,SAAS,CACvB;YACE,UAAU,EAAE;gBACV,CAAC,UAAU,CAAC,EAAE;oBACZ,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,SAAS;oBAClB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC;iBACvD;aACF;SACF,EACD,IAAI,EACJ,CAAC,CACF;KACF,CAAC;IACF,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,OAAO,CACnE,YAAY,EACZ,CAAC,CAAC,EAAE,GAAW,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAE,CACjC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/** Agent 友好的独立结果与引导,不改变普通会话的状态判断。@author xiuyu.yi */
|
|
2
|
+
import type { CreationResult } from '../contracts/cli-output.js';
|
|
3
|
+
import type { SessionView } from '../contracts/node-wire.js';
|
|
4
|
+
import type { CreationRuntime } from '../runtime.js';
|
|
5
|
+
import { AgentFriendlyApi } from '../api/agent-friendly-api.js';
|
|
6
|
+
import { type AgentFriendlyMethod } from './agent-friendly-prompts.js';
|
|
7
|
+
export type AgentFriendlyResult = CreationResult & {
|
|
8
|
+
agentFriendly: {
|
|
9
|
+
stage: 'GENERATING' | 'NOT_READY' | 'READY' | 'INSTRUCTIONS';
|
|
10
|
+
method?: AgentFriendlyMethod;
|
|
11
|
+
prompt?: string;
|
|
12
|
+
methods?: Array<{
|
|
13
|
+
value: AgentFriendlyMethod;
|
|
14
|
+
label: string;
|
|
15
|
+
description: string;
|
|
16
|
+
}>;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
export declare function isAgentFriendlyRound(view: SessionView): boolean;
|
|
20
|
+
export declare function agentFriendlyGuidance(service: CreationRuntime, result: AgentFriendlyResult): AgentFriendlyResult;
|
|
21
|
+
export declare function agentFriendlyNotReady(sessionId: string, notice: string): AgentFriendlyResult;
|
|
22
|
+
export declare function readyAgentFriendly(service: CreationRuntime, api: AgentFriendlyApi, view: SessionView, method?: AgentFriendlyMethod): Promise<AgentFriendlyResult>;
|
|
23
|
+
/** 只包装新命令的等待结果,普通 chat state/wait 保持原有行为。 */
|
|
24
|
+
export declare function projectAgentFriendlyGeneration(service: CreationRuntime, api: AgentFriendlyApi, view: SessionView): Promise<AgentFriendlyResult>;
|