@zhin.js/agent 0.1.17 → 0.1.19
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/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/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 +7 -3
- package/lib/orchestrator/owner-confirm-orchestration.d.ts.map +1 -1
- package/lib/orchestrator/owner-confirm-orchestration.js +30 -19
- package/lib/orchestrator/owner-confirm-orchestration.js.map +1 -1
- 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/orchestrator/tool-selection.d.ts.map +1 -1
- package/lib/orchestrator/tool-selection.js +72 -1
- package/lib/orchestrator/tool-selection.js.map +1 -1
- 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.map +1 -1
- package/lib/security/exec-policy.js +36 -0
- 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 +9 -2
- package/lib/subagent.js.map +1 -1
- package/lib/zhin-agent/index.d.ts.map +1 -1
- package/lib/zhin-agent/index.js +4 -2
- package/lib/zhin-agent/index.js.map +1 -1
- package/lib/zhin-agent/prompt.js +2 -2
- 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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"}
|
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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"}
|
|
@@ -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"}
|
|
@@ -1,15 +1,19 @@
|
|
|
1
|
-
import type { ToolContext } from '@zhin.js/core';
|
|
1
|
+
import type { Plugin, ToolContext } from '@zhin.js/core';
|
|
2
2
|
import type { ToolResultTransform } from '@zhin.js/ai';
|
|
3
3
|
/** 工具结果第一行须与此完全一致(行首无空白) */
|
|
4
4
|
export declare const ZHIN_NEEDS_OWNER_FIRST_LINE: "ZHIN_NEEDS_OWNER:";
|
|
5
|
-
|
|
6
|
-
export declare const OWNER_HARD_ORCHESTRATION_TOOLS: readonly ["bash", "write_file", "edit_file", "web_fetch"];
|
|
5
|
+
export { OWNER_HARD_ORCHESTRATION_TOOLS } from './owner-orchestration-constants.js';
|
|
7
6
|
export interface OwnerOrchestrationOptions {
|
|
8
7
|
toolContext: ToolContext;
|
|
9
8
|
/** 子 Agent 内为 true:仅保留信号,不执行 B */
|
|
10
9
|
disableHardOrchestration?: boolean;
|
|
11
10
|
/** 每根任务自动 ask_user 上限,默认 3 */
|
|
12
11
|
maxAutoOwnerAsk?: number;
|
|
12
|
+
/**
|
|
13
|
+
* 当前 Bot 插件实例。生产路径可由 {@link ZhinAgent} 传入 `getPlugin()`;
|
|
14
|
+
* 单测注入桩对象,避免依赖对 `@zhin.js/core` 的全局 mock(与 Vitest 模块缓存冲突)。
|
|
15
|
+
*/
|
|
16
|
+
plugin?: Plugin;
|
|
13
17
|
}
|
|
14
18
|
/**
|
|
15
19
|
* 解析权威首行;正文为第二行起(可含多行)。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"owner-confirm-orchestration.d.ts","sourceRoot":"","sources":["../../src/orchestrator/owner-confirm-orchestration.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"owner-confirm-orchestration.d.ts","sourceRoot":"","sources":["../../src/orchestrator/owner-confirm-orchestration.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAUvD,4BAA4B;AAC5B,eAAO,MAAM,2BAA2B,EAAG,mBAA4B,CAAC;AAExE,OAAO,EAAE,8BAA8B,EAAE,MAAM,oCAAoC,CAAC;AAMpF,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,WAAW,CAAC;IACzB,kCAAkC;IAClC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,8BAA8B;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAQ1F;AAED,wBAAgB,iCAAiC,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAG3F;AAqBD;;GAEG;AACH,wBAAgB,0CAA0C,CACxD,OAAO,EAAE,yBAAyB,GACjC,mBAAmB,CAoDrB"}
|
|
@@ -7,15 +7,11 @@
|
|
|
7
7
|
import { getPlugin } from '@zhin.js/core';
|
|
8
8
|
import { AskUserBuiltinTool } from '../builtin/ask-user-tool.js';
|
|
9
9
|
import { errMsg } from '../discovery/utils.js';
|
|
10
|
+
import { clearPendingOrchestrationTool, hasOwnerApproveAlways, setPendingOrchestrationTool, } from '../security/owner-approve-always-store.js';
|
|
11
|
+
import { OWNER_HARD_ORCHESTRATION_TOOLS } from './owner-orchestration-constants.js';
|
|
10
12
|
/** 工具结果第一行须与此完全一致(行首无空白) */
|
|
11
13
|
export const ZHIN_NEEDS_OWNER_FIRST_LINE = 'ZHIN_NEEDS_OWNER:';
|
|
12
|
-
|
|
13
|
-
export const OWNER_HARD_ORCHESTRATION_TOOLS = [
|
|
14
|
-
'bash',
|
|
15
|
-
'write_file',
|
|
16
|
-
'edit_file',
|
|
17
|
-
'web_fetch',
|
|
18
|
-
];
|
|
14
|
+
export { OWNER_HARD_ORCHESTRATION_TOOLS } from './owner-orchestration-constants.js';
|
|
19
15
|
const WHITELIST = new Set(OWNER_HARD_ORCHESTRATION_TOOLS);
|
|
20
16
|
const DEFAULT_MAX_AUTO_ASK = 3;
|
|
21
17
|
/**
|
|
@@ -65,23 +61,38 @@ export function createOwnerOrchestratedToolResultTransform(options) {
|
|
|
65
61
|
if (usedOrchestrationSlots >= maxAsk) {
|
|
66
62
|
return appendLimitNote(result, maxAsk);
|
|
67
63
|
}
|
|
68
|
-
let plugin;
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
64
|
+
let plugin = options.plugin;
|
|
65
|
+
if (!plugin) {
|
|
66
|
+
try {
|
|
67
|
+
plugin = getPlugin();
|
|
68
|
+
}
|
|
69
|
+
catch (e) {
|
|
70
|
+
return appendUnavailableNote(result, errMsg(e));
|
|
71
|
+
}
|
|
74
72
|
}
|
|
75
73
|
const askTool = new AskUserBuiltinTool(plugin);
|
|
76
74
|
const { body } = parseNeedsOwnerSignal(result);
|
|
77
75
|
const question = buildConfirmQuestion(toolName, body);
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
76
|
+
if (toolName === 'bash' && hasOwnerApproveAlways(plugin, options.toolContext, toolName)) {
|
|
77
|
+
return appendOrchestratedOwnerAnswer(result, 'yes');
|
|
78
|
+
}
|
|
79
|
+
if (toolName === 'bash') {
|
|
80
|
+
setPendingOrchestrationTool(plugin, options.toolContext, toolName);
|
|
81
|
+
}
|
|
82
|
+
try {
|
|
83
|
+
const ownerRaw = await askTool.run({ question, type: 'confirm', timeout: 120 }, options.toolContext);
|
|
84
|
+
const ownerStr = typeof ownerRaw === 'string' ? ownerRaw : String(ownerRaw);
|
|
85
|
+
if (ownerStr.startsWith('Error:')) {
|
|
86
|
+
return appendUnavailableNote(result, ownerStr);
|
|
87
|
+
}
|
|
88
|
+
usedOrchestrationSlots++;
|
|
89
|
+
return appendOrchestratedOwnerAnswer(result, ownerStr.trim());
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
if (toolName === 'bash') {
|
|
93
|
+
clearPendingOrchestrationTool(plugin, options.toolContext);
|
|
94
|
+
}
|
|
82
95
|
}
|
|
83
|
-
usedOrchestrationSlots++;
|
|
84
|
-
return appendOrchestratedOwnerAnswer(result, ownerStr.trim());
|
|
85
96
|
};
|
|
86
97
|
}
|
|
87
98
|
//# sourceMappingURL=owner-confirm-orchestration.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"owner-confirm-orchestration.js","sourceRoot":"","sources":["../../src/orchestrator/owner-confirm-orchestration.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"owner-confirm-orchestration.js","sourceRoot":"","sources":["../../src/orchestrator/owner-confirm-orchestration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Owner 硬编排(ZHIN_NEEDS_OWNER → ask_user)涉及的工具白名单。
|
|
3
|
+
*/
|
|
4
|
+
export declare const OWNER_HARD_ORCHESTRATION_TOOLS: readonly ["bash", "write_file", "edit_file", "web_fetch"];
|
|
5
|
+
export type OwnerHardOrchestrationTool = (typeof OWNER_HARD_ORCHESTRATION_TOOLS)[number];
|
|
6
|
+
//# sourceMappingURL=owner-orchestration-constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"owner-orchestration-constants.d.ts","sourceRoot":"","sources":["../../src/orchestrator/owner-orchestration-constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,8BAA8B,2DAKjC,CAAC;AAEX,MAAM,MAAM,0BAA0B,GAAG,CAAC,OAAO,8BAA8B,CAAC,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"owner-orchestration-constants.js","sourceRoot":"","sources":["../../src/orchestrator/owner-orchestration-constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,MAAM;IACN,YAAY;IACZ,WAAW;IACX,WAAW;CACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-selection.d.ts","sourceRoot":"","sources":["../../src/orchestrator/tool-selection.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"tool-selection.d.ts","sourceRoot":"","sources":["../../src/orchestrator/tool-selection.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAS,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AA6C/D,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAMzE,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,IAAI,IAAI,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE3D,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAClC,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAC5C;AAED,eAAO,MAAM,2BAA2B,kHAU9B,CAAC;AAEX,MAAM,WAAW,yBAAyB;IACxC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAGjG;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,mBAAmB,EAAE,aAAa,EAAE,mBAAmB,GAAG,OAAO,CAE9G;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,GAAG,mBAAmB,CAO9E;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAEpE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAIvE;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,SAAS,EAAE,EAClB,OAAO,GAAE,yBAA8B,GACtC,SAAS,EAAE,CAcb;AAmED,wBAAgB,aAAa,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,SAAS,CAyCvF;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0B;IAEvD,SAAS,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,SAAS;IAIpE,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,SAAS,EAAE;IAIhG,UAAU,IAAI,IAAI;IAIlB,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,oBAAoB,CAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,IAAI,EAAE,EACrB,GAAG,EAAE,mBAAmB,GACvB,SAAS,EAAE;CAyKf;AAED,eAAO,MAAM,mBAAmB,eAAsB,CAAC"}
|