@zhin.js/agent 0.1.16 → 0.1.18
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/lib/builtin/ask-user-tool.d.ts +1 -1
- package/lib/builtin/ask-user-tool.d.ts.map +1 -1
- package/lib/builtin/ask-user-tool.js +5 -3
- package/lib/builtin/ask-user-tool.js.map +1 -1
- package/lib/builtin/edit-file-tool.d.ts.map +1 -1
- package/lib/builtin/edit-file-tool.js +8 -2
- package/lib/builtin/edit-file-tool.js.map +1 -1
- package/lib/builtin/web-fetch-tool.js +1 -1
- package/lib/builtin/web-fetch-tool.js.map +1 -1
- package/lib/builtin/write-file-tool.d.ts.map +1 -1
- package/lib/builtin/write-file-tool.js +8 -2
- package/lib/builtin/write-file-tool.js.map +1 -1
- package/lib/discovery/utils.d.ts +3 -1
- package/lib/discovery/utils.d.ts.map +1 -1
- package/lib/discovery/utils.js +12 -5
- package/lib/discovery/utils.js.map +1 -1
- package/lib/index.d.ts +3 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/init/register-owner-approve-commands.d.ts +2 -0
- package/lib/init/register-owner-approve-commands.d.ts.map +1 -0
- package/lib/init/register-owner-approve-commands.js +137 -0
- package/lib/init/register-owner-approve-commands.js.map +1 -0
- package/lib/init.d.ts +1 -1
- package/lib/init.d.ts.map +1 -1
- package/lib/init.js +3 -1
- package/lib/init.js.map +1 -1
- package/lib/orchestrator/owner-confirm-orchestration.d.ts +30 -0
- package/lib/orchestrator/owner-confirm-orchestration.d.ts.map +1 -0
- package/lib/orchestrator/owner-confirm-orchestration.js +98 -0
- package/lib/orchestrator/owner-confirm-orchestration.js.map +1 -0
- package/lib/orchestrator/owner-orchestration-constants.d.ts +6 -0
- package/lib/orchestrator/owner-orchestration-constants.d.ts.map +1 -0
- package/lib/orchestrator/owner-orchestration-constants.js +10 -0
- package/lib/orchestrator/owner-orchestration-constants.js.map +1 -0
- package/lib/security/bash-tool-context.d.ts +5 -0
- package/lib/security/bash-tool-context.d.ts.map +1 -0
- package/lib/security/bash-tool-context.js +13 -0
- package/lib/security/bash-tool-context.js.map +1 -0
- package/lib/security/exec-policy.d.ts +1 -1
- package/lib/security/exec-policy.d.ts.map +1 -1
- package/lib/security/exec-policy.js +39 -3
- package/lib/security/exec-policy.js.map +1 -1
- package/lib/security/owner-approve-always-store.d.ts +52 -0
- package/lib/security/owner-approve-always-store.d.ts.map +1 -0
- package/lib/security/owner-approve-always-store.js +357 -0
- package/lib/security/owner-approve-always-store.js.map +1 -0
- package/lib/subagent.d.ts.map +1 -1
- package/lib/subagent.js +13 -1
- package/lib/subagent.js.map +1 -1
- package/lib/zhin-agent/index.d.ts.map +1 -1
- package/lib/zhin-agent/index.js +9 -2
- package/lib/zhin-agent/index.js.map +1 -1
- package/lib/zhin-agent/prompt.d.ts.map +1 -1
- package/lib/zhin-agent/prompt.js +1 -0
- package/lib/zhin-agent/prompt.js.map +1 -1
- package/package.json +3 -3
|
@@ -19,7 +19,7 @@ export declare function createAskUserTool(plugin: Plugin): Tool;
|
|
|
19
19
|
export declare class AskUserBuiltinTool extends BuiltinBaseTool {
|
|
20
20
|
private readonly plugin;
|
|
21
21
|
readonly name = "ask_user";
|
|
22
|
-
readonly description = "\u5411 Bot Owner \u53D1\u9001\u95EE\u9898\u5E76\u7B49\u5F85\u56DE\u590D\
|
|
22
|
+
readonly description = "\u5411 Bot Owner \u53D1\u9001\u95EE\u9898\u5E76\u7B49\u5F85\u56DE\u590D\uFF1B\u7FA4\u804A\u573A\u666F\u4E0B\u901A\u8FC7\u79C1\u804A\u786E\u8BA4\u3002bash/icqq\uFF1AOwner \u79C1\u804A\u53EF\u7528\u300C#approve always bash\u300D\u300C#approve rule <\u6B63\u5219>\u300D\uFF08\u5339\u914D\u6574\u6BB5 shell \u5B50\u547D\u4EE4\uFF0C\u5982\u70B9\u8D5E\u7C7B icqq \u4E0D\u5FC5\u56FA\u5316\u89E3\u53C2\u6570\uFF09\u3001\u300C#approve list\u300D\u300C#approve revoke rule <id>\u300D\u300C#approve revoke\u300D\u7B49\uFF08\u4EA6\u652F\u6301 / \u6216\u65E0 #\uFF09\u3002write_file / edit_file / web_fetch \u7684\u786C\u7F16\u6392\u4ECD\u987B\u9010\u6B21\u786E\u8BA4\u3002";
|
|
23
23
|
readonly parameters: ToolParametersSchema<Record<string, any>>;
|
|
24
24
|
readonly kind = "interaction";
|
|
25
25
|
constructor(plugin: Plugin);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-user-tool.d.ts","sourceRoot":"","sources":["../../src/builtin/ask-user-tool.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAGL,KAAK,MAAM,EAGX,KAAK,IAAI,EACT,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,KAAK,UAAU,EAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAMzD;;GAEG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"ask-user-tool.d.ts","sourceRoot":"","sources":["../../src/builtin/ask-user-tool.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAGL,KAAK,MAAM,EAGX,KAAK,IAAI,EACT,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,KAAK,UAAU,EAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAMzD;;GAEG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAmCjB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAgBxG;AAED,eAAO,MAAM,mBAAmB,EAAE,oBAgBjC,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAEtD;AAED,qBAAa,kBAAmB,SAAQ,eAAe;IAOzC,OAAO,CAAC,QAAQ,CAAC,MAAM;IANnC,QAAQ,CAAC,IAAI,cAAc;IAC3B,QAAQ,CAAC,WAAW,0pBAC2O;IAC/P,QAAQ,CAAC,UAAU,4CAAuB;IAC1C,QAAQ,CAAC,IAAI,iBAAiB;gBAED,MAAM,EAAE,MAAM;IAgBrC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;CA+ErF"}
|
|
@@ -11,7 +11,8 @@ import { BuiltinBaseTool } from './builtin-base-tool.js';
|
|
|
11
11
|
* 私聊 Owner 场景:使用 Prompt 类直接交互(原有行为)
|
|
12
12
|
*/
|
|
13
13
|
export async function askViaPrompt(plugin, message, args, questionType, timeoutMs) {
|
|
14
|
-
const
|
|
14
|
+
const host = plugin.root ?? plugin;
|
|
15
|
+
const prompt = new Prompt(host, message);
|
|
15
16
|
try {
|
|
16
17
|
switch (questionType) {
|
|
17
18
|
case 'number': {
|
|
@@ -93,7 +94,7 @@ export function createAskUserTool(plugin) {
|
|
|
93
94
|
export class AskUserBuiltinTool extends BuiltinBaseTool {
|
|
94
95
|
plugin;
|
|
95
96
|
name = 'ask_user';
|
|
96
|
-
description = '向 Bot Owner
|
|
97
|
+
description = '向 Bot Owner 发送问题并等待回复;群聊场景下通过私聊确认。bash/icqq:Owner 私聊可用「#approve always bash」「#approve rule <正则>」(匹配整段 shell 子命令,如点赞类 icqq 不必固化解参数)、「#approve list」「#approve revoke rule <id>」「#approve revoke」等(亦支持 / 或无 #)。write_file / edit_file / web_fetch 的硬编排仍须逐次确认。';
|
|
97
98
|
parameters = ASK_USER_PARAMETERS;
|
|
98
99
|
kind = 'interaction';
|
|
99
100
|
constructor(plugin) {
|
|
@@ -153,6 +154,7 @@ export class AskUserBuiltinTool extends BuiltinBaseTool {
|
|
|
153
154
|
catch (e) {
|
|
154
155
|
return `Error: 无法向 Owner 发送私聊消息: ${errMsg(e)}`;
|
|
155
156
|
}
|
|
157
|
+
const hostPlugin = this.plugin.root ?? this.plugin;
|
|
156
158
|
return new Promise((resolve) => {
|
|
157
159
|
const middleware = async (message, next) => {
|
|
158
160
|
if (message.$channel?.type !== 'private')
|
|
@@ -166,7 +168,7 @@ export class AskUserBuiltinTool extends BuiltinBaseTool {
|
|
|
166
168
|
const raw = message.$raw;
|
|
167
169
|
resolve(formatOwnerResponse(raw, questionType, recordArgs));
|
|
168
170
|
};
|
|
169
|
-
const dispose =
|
|
171
|
+
const dispose = hostPlugin.addMiddleware(middleware);
|
|
170
172
|
const timer = setTimeout(() => {
|
|
171
173
|
dispose();
|
|
172
174
|
if (args.default_value != null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-user-tool.js","sourceRoot":"","sources":["../../src/builtin/ask-user-tool.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,MAAM,GASP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,+EAA+E;AAC/E,+CAA+C;AAC/C,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,OAAY,EACZ,IAAyB,EACzB,YAAoB,EACpB,SAAiB;IAEjB,MAAM,
|
|
1
|
+
{"version":3,"file":"ask-user-tool.js","sourceRoot":"","sources":["../../src/builtin/ask-user-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit-file-tool.d.ts","sourceRoot":"","sources":["../../src/builtin/edit-file-tool.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"edit-file-tool.d.ts","sourceRoot":"","sources":["../../src/builtin/edit-file-tool.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAQzF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAMzD,eAAO,MAAM,oBAAoB,EAAE,oBAWlC,CAAC;AAEF,qBAAa,mBAAoB,SAAQ,eAAe;IACtD,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CAAC,WAAW,4YAC4D;IAChF,QAAQ,CAAC,UAAU,4CAAwB;IAC3C,QAAQ,CAAC,IAAI,UAAU;;IAiBjB,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;CAwDtF;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* edit_file — 内置查找替换编辑
|
|
3
3
|
*/
|
|
4
4
|
import * as fs from 'node:fs/promises';
|
|
5
|
-
import {
|
|
5
|
+
import { checkFileAccess, isBlockedDevicePath, MAX_EDIT_FILE_SIZE, isFileStale, } from '../security/file-policy.js';
|
|
6
6
|
import { expandHome, nodeErrToFileMessage } from '../discovery/utils.js';
|
|
7
7
|
import { BuiltinBaseTool } from './builtin-base-tool.js';
|
|
8
8
|
import { findActualStringInFile, preserveQuoteStyleInEdit, } from './file-edit-quote-utils.js';
|
|
@@ -43,7 +43,13 @@ export class EditFileBuiltinTool extends BuiltinBaseTool {
|
|
|
43
43
|
}
|
|
44
44
|
try {
|
|
45
45
|
const fp = expandHome(filePathArg);
|
|
46
|
-
|
|
46
|
+
if (isBlockedDevicePath(fp)) {
|
|
47
|
+
return `Error: 禁止访问设备路径: ${fp}`;
|
|
48
|
+
}
|
|
49
|
+
const access = checkFileAccess(fp);
|
|
50
|
+
if (!access.allowed) {
|
|
51
|
+
return `ZHIN_NEEDS_OWNER:\n${access.reason}\n\n(文件访问策略拒绝;仅 Owner 确认后在受控环境可重试或调整策略。)`;
|
|
52
|
+
}
|
|
47
53
|
const stat = await fs.stat(fp);
|
|
48
54
|
if (stat.size > MAX_EDIT_FILE_SIZE) {
|
|
49
55
|
return `Error: 文件过大 (${(stat.size / 1024 / 1024).toFixed(1)} MiB),超过 ${MAX_EDIT_FILE_SIZE / 1024 / 1024} MiB 限制。`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit-file-tool.js","sourceRoot":"","sources":["../../src/builtin/edit-file-tool.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEvC,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"edit-file-tool.js","sourceRoot":"","sources":["../../src/builtin/edit-file-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,7 +64,7 @@ export class WebFetchBuiltinTool extends BuiltinBaseTool {
|
|
|
64
64
|
}
|
|
65
65
|
const hostname = parsedUrl.hostname.toLowerCase();
|
|
66
66
|
if (isBlockedSsrfHostname(hostname)) {
|
|
67
|
-
return `
|
|
67
|
+
return `ZHIN_NEEDS_OWNER:\n禁止访问内网地址 ${hostname}(SSRF 防护)。若确有需要,请 Owner 确认风险后调整策略或在受控环境代为抓取。`;
|
|
68
68
|
}
|
|
69
69
|
const response = await fetch(String(args.url ?? ''), {
|
|
70
70
|
headers: { 'User-Agent': ZHIN_WEB_USER_AGENT },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-fetch-tool.js","sourceRoot":"","sources":["../../src/builtin/web-fetch-tool.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"web-fetch-tool.js","sourceRoot":"","sources":["../../src/builtin/web-fetch-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-file-tool.d.ts","sourceRoot":"","sources":["../../src/builtin/write-file-tool.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGzF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,eAAO,MAAM,qBAAqB,EAAE,oBAOnC,CAAC;AAEF,qBAAa,oBAAqB,SAAQ,eAAe;IACvD,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,WAAW,0LACe;IACnC,QAAQ,CAAC,UAAU,4CAAyB;IAC5C,QAAQ,CAAC,IAAI,UAAU;;IAiBjB,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"write-file-tool.d.ts","sourceRoot":"","sources":["../../src/builtin/write-file-tool.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGzF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,eAAO,MAAM,qBAAqB,EAAE,oBAOnC,CAAC;AAEF,qBAAa,oBAAqB,SAAQ,eAAe;IACvD,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,WAAW,0LACe;IACnC,QAAQ,CAAC,UAAU,4CAAyB;IAC5C,QAAQ,CAAC,IAAI,UAAU;;IAiBjB,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;CAyBtF;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import * as fs from 'node:fs/promises';
|
|
5
5
|
import * as path from 'node:path';
|
|
6
|
-
import {
|
|
6
|
+
import { checkFileAccess, isBlockedDevicePath } from '../security/file-policy.js';
|
|
7
7
|
import { expandHome, nodeErrToFileMessage } from '../discovery/utils.js';
|
|
8
8
|
import { BuiltinBaseTool } from './builtin-base-tool.js';
|
|
9
9
|
export const WRITE_FILE_PARAMETERS = {
|
|
@@ -35,7 +35,13 @@ export class WriteFileBuiltinTool extends BuiltinBaseTool {
|
|
|
35
35
|
}
|
|
36
36
|
try {
|
|
37
37
|
const fp = expandHome(filePathArg);
|
|
38
|
-
|
|
38
|
+
if (isBlockedDevicePath(fp)) {
|
|
39
|
+
return `Error: 禁止访问设备路径: ${fp}`;
|
|
40
|
+
}
|
|
41
|
+
const access = checkFileAccess(fp);
|
|
42
|
+
if (!access.allowed) {
|
|
43
|
+
return `ZHIN_NEEDS_OWNER:\n${access.reason}\n\n(文件访问策略拒绝;仅 Owner 确认后在受控环境可重试或调整策略。)`;
|
|
44
|
+
}
|
|
39
45
|
await fs.mkdir(path.dirname(fp), { recursive: true });
|
|
40
46
|
await fs.writeFile(fp, contentArg, 'utf-8');
|
|
41
47
|
return `✅ Wrote ${Buffer.byteLength(contentArg)} bytes to ${fp}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-file-tool.js","sourceRoot":"","sources":["../../src/builtin/write-file-tool.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"write-file-tool.js","sourceRoot":"","sources":["../../src/builtin/write-file-tool.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,CAAC,MAAM,qBAAqB,GAAyB;IACzD,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE;QACtD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE;KACrD;IACD,QAAQ,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;CACnC,CAAC;AAEF,MAAM,OAAO,oBAAqB,SAAQ,eAAe;IAC9C,IAAI,GAAG,YAAY,CAAC;IACpB,WAAW,GAClB,gCAAgC,CAAC;IAC1B,UAAU,GAAG,qBAAqB,CAAC;IACnC,IAAI,GAAG,MAAM,CAAC;IAEvB;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,KAAK,EACL,MAAM,EACN,MAAM,EACN,MAAM,EACN,YAAY,EACZ,OAAO,EACP,IAAI,EACJ,IAAI,CACL,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAA6B,EAAE,QAAsB;QAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC;QACnC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;QAChC,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;YAC3D,OAAO,8BAA8B,CAAC;QACxC,CAAC;QACD,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YACnC,OAAO,4BAA4B,CAAC;QACtC,CAAC;QACD,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;YACnC,IAAI,mBAAmB,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC5B,OAAO,oBAAoB,EAAE,EAAE,CAAC;YAClC,CAAC;YACD,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,sBAAsB,MAAM,CAAC,MAAO,0CAA0C,CAAC;YACxF,CAAC;YACD,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACtD,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YAC5C,OAAO,WAAW,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,CAAC;QACnE,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,OAAO,oBAAoB,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,oBAAoB,EAAE,CAAC,MAAM,EAAE,CAAC;AAC7C,CAAC"}
|
package/lib/discovery/utils.d.ts
CHANGED
|
@@ -14,7 +14,9 @@ export declare function expandHome(p: string): string;
|
|
|
14
14
|
/** Workspace / ~/.zhin / data 下 skills 根目录(与 activate_skill 扫描顺序一致的前缀) */
|
|
15
15
|
export declare function buildStandardSkillDirs(): string[];
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
17
|
+
* 从根插件树收集:各插件包目录下的 `skills/`(其下为 `<name>/SKILL.md`)
|
|
18
|
+
*
|
|
19
|
+
* 递归整棵子树(不仅一层子插件),避免适配器套在目录/聚合插件下时技能目录被漏扫。
|
|
18
20
|
*/
|
|
19
21
|
export declare function collectPluginSkillSearchRoots(root: Plugin | null | undefined): string[];
|
|
20
22
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/discovery/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C,wBAAwB;AACxB,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAEzC;AAED,yBAAyB;AACzB,wBAAgB,UAAU,IAAI,MAAM,CAInC;AAED,2BAA2B;AAC3B,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAI5C;AAED,0EAA0E;AAC1E,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAMjD;AAED
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/discovery/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C,wBAAwB;AACxB,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAEzC;AAED,yBAAyB;AACzB,wBAAgB,UAAU,IAAI,MAAM,CAInC;AAED,2BAA2B;AAC3B,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAI5C;AAED,0EAA0E;AAC1E,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAMjD;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,EAAE,CAyBvF;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,EAAE,CAMxE;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,CAAC,EAAE,MAAM,MAAM,EAAE,GAAG,MAAM,EAAE,CAM9E;AAED,iDAAiD;AACjD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CASrH"}
|
package/lib/discovery/utils.js
CHANGED
|
@@ -34,7 +34,9 @@ export function buildStandardSkillDirs() {
|
|
|
34
34
|
];
|
|
35
35
|
}
|
|
36
36
|
/**
|
|
37
|
-
*
|
|
37
|
+
* 从根插件树收集:各插件包目录下的 `skills/`(其下为 `<name>/SKILL.md`)
|
|
38
|
+
*
|
|
39
|
+
* 递归整棵子树(不仅一层子插件),避免适配器套在目录/聚合插件下时技能目录被漏扫。
|
|
38
40
|
*/
|
|
39
41
|
export function collectPluginSkillSearchRoots(root) {
|
|
40
42
|
if (!root)
|
|
@@ -55,10 +57,15 @@ export function collectPluginSkillSearchRoots(root) {
|
|
|
55
57
|
push(path.join(path.dirname(dir), 'skills'));
|
|
56
58
|
}
|
|
57
59
|
};
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
const walk = (p) => {
|
|
61
|
+
if (!p)
|
|
62
|
+
return;
|
|
63
|
+
fromPlugin(p);
|
|
64
|
+
for (const child of p.children || []) {
|
|
65
|
+
walk(child);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
walk(root);
|
|
62
69
|
return dirs;
|
|
63
70
|
}
|
|
64
71
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/discovery/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B,wBAAwB;AACxB,MAAM,UAAU,MAAM,CAAC,CAAU;IAC/B,OAAO,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,yBAAyB;AACzB,MAAM,UAAU,UAAU;IACxB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IAC7C,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,2BAA2B;AAC3B,MAAM,UAAU,UAAU,CAAC,CAAS;IAClC,IAAI,CAAC,KAAK,GAAG;QAAE,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;IACnC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,OAAO,CAAC,CAAC;AACX,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,QAAQ,CAAC;KAClC,CAAC;AACJ,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/discovery/utils.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Provides AgentOrchestrator as the central registry for
|
|
5
5
|
* tools, skills, subagents, mcps, and hooks.
|
|
6
6
|
*/
|
|
7
|
-
export type { AIConfig, AIProvider, ChatMessage, ContentPart, AgentTool, AgentConfig, AgentResult, } from '@zhin.js/ai';
|
|
7
|
+
export type { AIConfig, AIProvider, ChatMessage, ContentPart, AgentTool, AgentConfig, AgentResult, ToolResultTransformInput, ToolResultTransform, } from '@zhin.js/ai';
|
|
8
8
|
export { Agent, createAgent, formatToolTitle } from '@zhin.js/ai';
|
|
9
9
|
export type { AgentState, AgentEvents } from '@zhin.js/ai';
|
|
10
10
|
export { SessionManager, MemorySessionManager, DatabaseSessionManager, createMemorySessionManager, createDatabaseSessionManager, AI_SESSION_MODEL, } from '@zhin.js/ai';
|
|
@@ -29,6 +29,8 @@ export { PERM_MAP, DEFAULT_CONFIG as ZHIN_AGENT_DEFAULT_CONFIG, SECTION_SEP } fr
|
|
|
29
29
|
export { MODEL_HARNESS_DEFAULTS, resolveModelHarness, mergeModelHarnessValues } from './zhin-agent/model-harness.js';
|
|
30
30
|
export type { ModelHarnessRow, ResolvedModelHarness, ModelHarnessConfig } from './zhin-agent/model-harness.js';
|
|
31
31
|
export { checkExecPolicy, applyExecPolicyToTools, resolveExecAllowlist, EXEC_PRESETS, isDangerousCommand, stripEnvVarPrefix, stripSafeWrappers, splitCompoundCommand, extractCommandName, type ExecPolicyResult, } from './security/exec-policy.js';
|
|
32
|
+
export { ZHIN_NEEDS_OWNER_FIRST_LINE, OWNER_HARD_ORCHESTRATION_TOOLS, parseNeedsOwnerSignal, shouldHardOrchestrateOwnerConfirm, createOwnerOrchestratedToolResultTransform, } from './orchestrator/owner-confirm-orchestration.js';
|
|
33
|
+
export type { OwnerOrchestrationOptions } from './orchestrator/owner-confirm-orchestration.js';
|
|
32
34
|
export { buildRichSystemPrompt, buildContextHint, buildEnhancedPersona, buildUserMessageWithHistory, contentToText, describePromptSectionsForDebug, } from './zhin-agent/prompt.js';
|
|
33
35
|
export type { RichSystemPromptContext, PromptSectionDebugInfo } from './zhin-agent/prompt.js';
|
|
34
36
|
export { createChatHistoryTool, createUserProfileTool, createSpawnTaskTool } from './zhin-agent/builtin-tools.js';
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACV,QAAQ,EACR,UAAU,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,WAAW,EACX,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/index.js
CHANGED
|
@@ -19,6 +19,7 @@ export { ZhinAgent } from './zhin-agent/index.js';
|
|
|
19
19
|
export { PERM_MAP, DEFAULT_CONFIG as ZHIN_AGENT_DEFAULT_CONFIG, SECTION_SEP } from './zhin-agent/config.js';
|
|
20
20
|
export { MODEL_HARNESS_DEFAULTS, resolveModelHarness, mergeModelHarnessValues } from './zhin-agent/model-harness.js';
|
|
21
21
|
export { checkExecPolicy, applyExecPolicyToTools, resolveExecAllowlist, EXEC_PRESETS, isDangerousCommand, stripEnvVarPrefix, stripSafeWrappers, splitCompoundCommand, extractCommandName, } from './security/exec-policy.js';
|
|
22
|
+
export { ZHIN_NEEDS_OWNER_FIRST_LINE, OWNER_HARD_ORCHESTRATION_TOOLS, parseNeedsOwnerSignal, shouldHardOrchestrateOwnerConfirm, createOwnerOrchestratedToolResultTransform, } from './orchestrator/owner-confirm-orchestration.js';
|
|
22
23
|
export { buildRichSystemPrompt, buildContextHint, buildEnhancedPersona, buildUserMessageWithHistory, contentToText, describePromptSectionsForDebug, } from './zhin-agent/prompt.js';
|
|
23
24
|
export { createChatHistoryTool, createUserProfileTool, createSpawnTaskTool } from './zhin-agent/builtin-tools.js';
|
|
24
25
|
export { UserProfileStore, AI_USER_PROFILE_MODEL } from './user-profile.js';
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-owner-approve-commands.d.ts","sourceRoot":"","sources":["../../src/init/register-owner-approve-commands.ts"],"names":[],"mappings":"AAmIA,wBAAgB,4BAA4B,IAAI,IAAI,CAanD"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Owner 私聊指令:approve always / approve rule / list / revoke —— **bash + icqq 放行策略**。
|
|
3
|
+
*
|
|
4
|
+
* - **approve always bash**:永久跳过 bash 的 Owner 硬编排确认(ZHIN_NEEDS_OWNER)。
|
|
5
|
+
* - **approve rule <正则>**:对 **整条** shell 子命令做正则匹配(如 `^icqq\\s+friend\\s+like\\b`),命中则敏感 icqq 也无需再确认;持久化。
|
|
6
|
+
* - **approve list**:展示永久放行与规则列表。
|
|
7
|
+
*
|
|
8
|
+
* 支持前缀 `#`、`/` 或无符号。
|
|
9
|
+
*/
|
|
10
|
+
import { getPlugin, MessageCommand } from '@zhin.js/core';
|
|
11
|
+
import { addBashApproveRule, addOwnerApproveAlways, clearPendingOrchestrationTool, formatBashApproveList, getOwnerToolContextOrUndefined, getPendingOrchestrationTool, removeBashApproveRule, removeOwnerApproveAlways, OWNER_APPROVE_ALWAYS_TOOL, } from '../security/owner-approve-always-store.js';
|
|
12
|
+
function usageLines(cmdPrefix) {
|
|
13
|
+
return [
|
|
14
|
+
'用法(bash / icqq):',
|
|
15
|
+
` ${cmdPrefix}approve always bash — 永久跳过 bash 的 Owner 硬确认`,
|
|
16
|
+
` ${cmdPrefix}approve always — 同上;须在近期 bash 私聊待确认窗口内`,
|
|
17
|
+
` ${cmdPrefix}approve rule <正则> — 为敏感 icqq 命令增加放行规则(匹配整段子命令)`,
|
|
18
|
+
` ${cmdPrefix}approve list — 列出永久放行与规则 id`,
|
|
19
|
+
` ${cmdPrefix}approve revoke rule <id> — 删除一条规则(id 可用 list 前 8 位)`,
|
|
20
|
+
` ${cmdPrefix}approve revoke — 撤销 bash 永久放行(不删规则)`,
|
|
21
|
+
].join('\n');
|
|
22
|
+
}
|
|
23
|
+
function registerApproveCommandVariants(commandService, pluginName, disposers) {
|
|
24
|
+
const prefixes = ['', '#', '/'];
|
|
25
|
+
for (const p of prefixes) {
|
|
26
|
+
const alwaysExplicit = new MessageCommand(`${p}approve always bash`)
|
|
27
|
+
.desc('Owner:永久放行 bash 的在线安全确认', '仅私聊;写入 data/owner-approve-always.json')
|
|
28
|
+
.usage(`${p}approve always bash`)
|
|
29
|
+
.action((message) => {
|
|
30
|
+
const plugin = getPlugin().root ?? getPlugin();
|
|
31
|
+
const ctx = getOwnerToolContextOrUndefined(plugin, message);
|
|
32
|
+
if (!ctx)
|
|
33
|
+
return '⚠️ 仅 Bot Owner 可在私聊中使用此指令。';
|
|
34
|
+
const r = addOwnerApproveAlways(plugin, ctx, OWNER_APPROVE_ALWAYS_TOOL);
|
|
35
|
+
if (!r.ok)
|
|
36
|
+
return `⚠️ ${r.error}\n${usageLines(p)}`;
|
|
37
|
+
return '✅ 已对 bash 永久放行 Owner 硬确认(本 Bot)。后续 bash 需确认时将不再弹窗;若当前仍有一条待回复的 bash 确认,本轮仍需输入 yes。';
|
|
38
|
+
});
|
|
39
|
+
commandService.add(alwaysExplicit, pluginName);
|
|
40
|
+
disposers.push(() => commandService.remove(alwaysExplicit));
|
|
41
|
+
const alwaysImplicit = new MessageCommand(`${p}approve always`)
|
|
42
|
+
.desc('Owner:永久放行 bash(须在近期 bash 待确认窗口内)')
|
|
43
|
+
.action((message) => {
|
|
44
|
+
const plugin = getPlugin().root ?? getPlugin();
|
|
45
|
+
const ctx = getOwnerToolContextOrUndefined(plugin, message);
|
|
46
|
+
if (!ctx)
|
|
47
|
+
return '⚠️ 仅 Bot Owner 可在私聊中使用此指令。';
|
|
48
|
+
const pending = getPendingOrchestrationTool(plugin, ctx);
|
|
49
|
+
if (!pending) {
|
|
50
|
+
return `⚠️ 无近期 bash 待确认上下文,请使用:${p}approve always bash。\n${usageLines(p)}`;
|
|
51
|
+
}
|
|
52
|
+
const r = addOwnerApproveAlways(plugin, ctx, pending);
|
|
53
|
+
if (!r.ok)
|
|
54
|
+
return `⚠️ ${r.error}`;
|
|
55
|
+
clearPendingOrchestrationTool(plugin, ctx);
|
|
56
|
+
return '✅ 已对 bash 永久放行 Owner 硬确认(本 Bot)。';
|
|
57
|
+
});
|
|
58
|
+
commandService.add(alwaysImplicit, pluginName);
|
|
59
|
+
disposers.push(() => commandService.remove(alwaysImplicit));
|
|
60
|
+
const revokeRuleCmd = new MessageCommand(`${p}approve revoke rule <id:text>`)
|
|
61
|
+
.desc('Owner:按 id(或前 8 位前缀)删除一条放行正则')
|
|
62
|
+
.action((message, match) => {
|
|
63
|
+
const plugin = getPlugin().root ?? getPlugin();
|
|
64
|
+
const ctx = getOwnerToolContextOrUndefined(plugin, message);
|
|
65
|
+
if (!ctx)
|
|
66
|
+
return '⚠️ 仅 Bot Owner 可在私聊中使用此指令。';
|
|
67
|
+
const id = String(match.params?.id ?? '').trim();
|
|
68
|
+
if (!id)
|
|
69
|
+
return `⚠️ 请提供规则 id。\n${usageLines(p)}`;
|
|
70
|
+
const r = removeBashApproveRule(plugin, ctx, id);
|
|
71
|
+
if (!r.ok)
|
|
72
|
+
return `⚠️ ${r.error}`;
|
|
73
|
+
return '✅ 已删除该放行规则。';
|
|
74
|
+
});
|
|
75
|
+
commandService.add(revokeRuleCmd, pluginName);
|
|
76
|
+
disposers.push(() => commandService.remove(revokeRuleCmd));
|
|
77
|
+
const ruleCmd = new MessageCommand(`${p}approve rule <pattern:text>`)
|
|
78
|
+
.desc('Owner:添加 bash/icqq 放行正则(匹配整段待执行子命令)')
|
|
79
|
+
.usage(`${p}approve rule ^icqq\\\\s+friend\\\\s+like\\\\b`)
|
|
80
|
+
.action((message, match) => {
|
|
81
|
+
const plugin = getPlugin().root ?? getPlugin();
|
|
82
|
+
const ctx = getOwnerToolContextOrUndefined(plugin, message);
|
|
83
|
+
if (!ctx)
|
|
84
|
+
return '⚠️ 仅 Bot Owner 可在私聊中使用此指令。';
|
|
85
|
+
const raw = String(match.params?.pattern ?? '').trim();
|
|
86
|
+
if (!raw)
|
|
87
|
+
return `⚠️ 请提供正则。\n${usageLines(p)}`;
|
|
88
|
+
const r = addBashApproveRule(plugin, ctx, raw);
|
|
89
|
+
if (!r.ok)
|
|
90
|
+
return `⚠️ ${r.error}`;
|
|
91
|
+
return `✅ 已添加规则 id=${r.id.slice(0, 8)}… ,匹配子命令时将不再要求 Owner 确认(仍受危险命令黑名单等约束)。`;
|
|
92
|
+
});
|
|
93
|
+
commandService.add(ruleCmd, pluginName);
|
|
94
|
+
disposers.push(() => commandService.remove(ruleCmd));
|
|
95
|
+
const listCmd = new MessageCommand(`${p}approve list`)
|
|
96
|
+
.desc('Owner:列出 bash 永久放行与正则规则')
|
|
97
|
+
.action((message) => {
|
|
98
|
+
const plugin = getPlugin().root ?? getPlugin();
|
|
99
|
+
const ctx = getOwnerToolContextOrUndefined(plugin, message);
|
|
100
|
+
if (!ctx)
|
|
101
|
+
return '⚠️ 仅 Bot Owner 可在私聊中使用此指令。';
|
|
102
|
+
return formatBashApproveList(plugin, ctx);
|
|
103
|
+
});
|
|
104
|
+
commandService.add(listCmd, pluginName);
|
|
105
|
+
disposers.push(() => commandService.remove(listCmd));
|
|
106
|
+
const revokeCmd = new MessageCommand(`${p}approve revoke`)
|
|
107
|
+
.desc('Owner:撤销 bash 永久放行(保留正则规则)')
|
|
108
|
+
.action((message) => {
|
|
109
|
+
const plugin = getPlugin().root ?? getPlugin();
|
|
110
|
+
const ctx = getOwnerToolContextOrUndefined(plugin, message);
|
|
111
|
+
if (!ctx)
|
|
112
|
+
return '⚠️ 仅 Bot Owner 可在私聊中使用此指令。';
|
|
113
|
+
const r = removeOwnerApproveAlways(plugin, ctx, OWNER_APPROVE_ALWAYS_TOOL);
|
|
114
|
+
if (!r.ok)
|
|
115
|
+
return `⚠️ ${r.error}`;
|
|
116
|
+
return '✅ 已撤销 bash 永久放行(正则规则仍保留,可用 approve list 查看)。';
|
|
117
|
+
});
|
|
118
|
+
commandService.add(revokeCmd, pluginName);
|
|
119
|
+
disposers.push(() => commandService.remove(revokeCmd));
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
export function registerOwnerApproveCommands() {
|
|
123
|
+
const plugin = getPlugin();
|
|
124
|
+
const { useContext, root, logger } = plugin;
|
|
125
|
+
useContext('command', (commandService) => {
|
|
126
|
+
if (!commandService)
|
|
127
|
+
return;
|
|
128
|
+
const disposers = [];
|
|
129
|
+
registerApproveCommandVariants(commandService, root.name, disposers);
|
|
130
|
+
logger.debug(`Registered Owner approve (bash/icqq) commands (${disposers.length} patterns)`);
|
|
131
|
+
return () => {
|
|
132
|
+
for (const d of disposers)
|
|
133
|
+
d();
|
|
134
|
+
};
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=register-owner-approve-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-owner-approve-commands.js","sourceRoot":"","sources":["../../src/init/register-owner-approve-commands.ts"],"names":[],"mappings":"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"}
|
package/lib/init.d.ts
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* - register-ai-trigger — AI 触发处理器
|
|
11
11
|
* - register-db-upgrade — 数据库存储升级(无竞态条件)
|
|
12
12
|
* - register-message-recorder — 消息记录中间件
|
|
13
|
-
* - register-
|
|
13
|
+
* - register-owner-approve-commands — Owner 私聊 approve(仅 bash shell 硬确认白名单)
|
|
14
14
|
* - register-builtin-tools — 内置系统工具 + 工作区技能
|
|
15
15
|
*/
|
|
16
16
|
import './init/types.js';
|
package/lib/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,iBAAiB,CAAC;AAczB;;;;;;;;GAQG;AACH,wBAAgB,eAAe,IAAI,IAAI,CActC"}
|
package/lib/init.js
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* - register-ai-trigger — AI 触发处理器
|
|
11
11
|
* - register-db-upgrade — 数据库存储升级(无竞态条件)
|
|
12
12
|
* - register-message-recorder — 消息记录中间件
|
|
13
|
-
* - register-
|
|
13
|
+
* - register-owner-approve-commands — Owner 私聊 approve(仅 bash shell 硬确认白名单)
|
|
14
14
|
* - register-builtin-tools — 内置系统工具 + 工作区技能
|
|
15
15
|
*/
|
|
16
16
|
import './init/types.js';
|
|
@@ -24,6 +24,7 @@ import { registerAITrigger } from './init/register-ai-trigger.js';
|
|
|
24
24
|
import { registerDbUpgrade } from './init/register-db-upgrade.js';
|
|
25
25
|
import { registerMessageRecorder } from './init/register-message-recorder.js';
|
|
26
26
|
import { registerManagementTools } from './init/register-management-tools.js';
|
|
27
|
+
import { registerOwnerApproveCommands } from './init/register-owner-approve-commands.js';
|
|
27
28
|
import { registerBuiltinTools } from './init/register-builtin-tools.js';
|
|
28
29
|
/**
|
|
29
30
|
* 初始化 AI 模块
|
|
@@ -45,6 +46,7 @@ export function initAgentModule() {
|
|
|
45
46
|
registerDbUpgrade(refs);
|
|
46
47
|
registerMessageRecorder(refs);
|
|
47
48
|
registerManagementTools();
|
|
49
|
+
registerOwnerApproveCommands();
|
|
48
50
|
registerBuiltinTools(refs);
|
|
49
51
|
}
|
|
50
52
|
//# sourceMappingURL=init.js.map
|
package/lib/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;IAE1B,oBAAoB,EAAE,CAAC;IACvB,mBAAmB,EAAE,CAAC;IACtB,gBAAgB,EAAE,CAAC;IACnB,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxB,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC7B,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxB,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxB,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC9B,uBAAuB,EAAE,CAAC;IAC1B,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;IAE1B,oBAAoB,EAAE,CAAC;IACvB,mBAAmB,EAAE,CAAC;IACtB,gBAAgB,EAAE,CAAC;IACnB,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxB,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC7B,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxB,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxB,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC9B,uBAAuB,EAAE,CAAC;IAC1B,4BAA4B,EAAE,CAAC;IAC/B,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Plugin, ToolContext } from '@zhin.js/core';
|
|
2
|
+
import type { ToolResultTransform } from '@zhin.js/ai';
|
|
3
|
+
/** 工具结果第一行须与此完全一致(行首无空白) */
|
|
4
|
+
export declare const ZHIN_NEEDS_OWNER_FIRST_LINE: "ZHIN_NEEDS_OWNER:";
|
|
5
|
+
export { OWNER_HARD_ORCHESTRATION_TOOLS } from './owner-orchestration-constants.js';
|
|
6
|
+
export interface OwnerOrchestrationOptions {
|
|
7
|
+
toolContext: ToolContext;
|
|
8
|
+
/** 子 Agent 内为 true:仅保留信号,不执行 B */
|
|
9
|
+
disableHardOrchestration?: boolean;
|
|
10
|
+
/** 每根任务自动 ask_user 上限,默认 3 */
|
|
11
|
+
maxAutoOwnerAsk?: number;
|
|
12
|
+
/**
|
|
13
|
+
* 当前 Bot 插件实例。生产路径可由 {@link ZhinAgent} 传入 `getPlugin()`;
|
|
14
|
+
* 单测注入桩对象,避免依赖对 `@zhin.js/core` 的全局 mock(与 Vitest 模块缓存冲突)。
|
|
15
|
+
*/
|
|
16
|
+
plugin?: Plugin;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* 解析权威首行;正文为第二行起(可含多行)。
|
|
20
|
+
*/
|
|
21
|
+
export declare function parseNeedsOwnerSignal(result: string): {
|
|
22
|
+
hasSignal: boolean;
|
|
23
|
+
body: string;
|
|
24
|
+
};
|
|
25
|
+
export declare function shouldHardOrchestrateOwnerConfirm(toolName: string, result: string): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* 为单次 Agent.run 创建工具结果变换:在写入对话前可能插入 Owner confirm 结果。
|
|
28
|
+
*/
|
|
29
|
+
export declare function createOwnerOrchestratedToolResultTransform(options: OwnerOrchestrationOptions): ToolResultTransform;
|
|
30
|
+
//# sourceMappingURL=owner-confirm-orchestration.d.ts.map
|