@zhin.js/agent 0.1.15 → 0.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/README.md +80 -43
  2. package/lib/builtin/activate-skill-tool.d.ts +21 -0
  3. package/lib/builtin/activate-skill-tool.d.ts.map +1 -0
  4. package/lib/builtin/activate-skill-tool.js +57 -0
  5. package/lib/builtin/activate-skill-tool.js.map +1 -0
  6. package/lib/builtin/ask-user-tool.d.ts +28 -0
  7. package/lib/builtin/ask-user-tool.d.ts.map +1 -0
  8. package/lib/builtin/ask-user-tool.js +182 -0
  9. package/lib/builtin/ask-user-tool.js.map +1 -0
  10. package/lib/builtin/bash-tool.d.ts +23 -0
  11. package/lib/builtin/bash-tool.d.ts.map +1 -0
  12. package/lib/builtin/bash-tool.js +64 -0
  13. package/lib/builtin/bash-tool.js.map +1 -0
  14. package/lib/builtin/bing-search-html.d.ts +37 -0
  15. package/lib/builtin/bing-search-html.d.ts.map +1 -0
  16. package/lib/builtin/bing-search-html.js +116 -0
  17. package/lib/builtin/bing-search-html.js.map +1 -0
  18. package/lib/builtin/builtin-base-tool.d.ts +25 -0
  19. package/lib/builtin/builtin-base-tool.d.ts.map +1 -0
  20. package/lib/builtin/builtin-base-tool.js +30 -0
  21. package/lib/builtin/builtin-base-tool.js.map +1 -0
  22. package/lib/builtin/edit-file-tool.d.ts +13 -0
  23. package/lib/builtin/edit-file-tool.d.ts.map +1 -0
  24. package/lib/builtin/edit-file-tool.js +87 -0
  25. package/lib/builtin/edit-file-tool.js.map +1 -0
  26. package/lib/builtin/file-edit-quote-utils.d.ts +24 -0
  27. package/lib/builtin/file-edit-quote-utils.d.ts.map +1 -0
  28. package/lib/builtin/file-edit-quote-utils.js +81 -0
  29. package/lib/builtin/file-edit-quote-utils.js.map +1 -0
  30. package/lib/builtin/glob-tool.d.ts +23 -0
  31. package/lib/builtin/glob-tool.d.ts.map +1 -0
  32. package/lib/builtin/glob-tool.js +54 -0
  33. package/lib/builtin/glob-tool.js.map +1 -0
  34. package/lib/builtin/grep-tool.d.ts +23 -0
  35. package/lib/builtin/grep-tool.d.ts.map +1 -0
  36. package/lib/builtin/grep-tool.js +118 -0
  37. package/lib/builtin/grep-tool.js.map +1 -0
  38. package/lib/builtin/install-skill-tool.d.ts +24 -0
  39. package/lib/builtin/install-skill-tool.d.ts.map +1 -0
  40. package/lib/builtin/install-skill-tool.js +76 -0
  41. package/lib/builtin/install-skill-tool.js.map +1 -0
  42. package/lib/builtin/list-dir-tool.d.ts +13 -0
  43. package/lib/builtin/list-dir-tool.d.ts.map +1 -0
  44. package/lib/builtin/list-dir-tool.js +59 -0
  45. package/lib/builtin/list-dir-tool.js.map +1 -0
  46. package/lib/builtin/read-file-tool.d.ts +14 -0
  47. package/lib/builtin/read-file-tool.d.ts.map +1 -0
  48. package/lib/builtin/read-file-tool.js +77 -0
  49. package/lib/builtin/read-file-tool.js.map +1 -0
  50. package/lib/builtin/read-memory-tool.d.ts +14 -0
  51. package/lib/builtin/read-memory-tool.d.ts.map +1 -0
  52. package/lib/builtin/read-memory-tool.js +49 -0
  53. package/lib/builtin/read-memory-tool.js.map +1 -0
  54. package/lib/builtin/spawn-task-tool.d.ts +20 -0
  55. package/lib/builtin/spawn-task-tool.d.ts.map +1 -0
  56. package/lib/builtin/spawn-task-tool.js +57 -0
  57. package/lib/builtin/spawn-task-tool.js.map +1 -0
  58. package/lib/builtin/todo-read-tool.d.ts +14 -0
  59. package/lib/builtin/todo-read-tool.d.ts.map +1 -0
  60. package/lib/builtin/todo-read-tool.js +56 -0
  61. package/lib/builtin/todo-read-tool.js.map +1 -0
  62. package/lib/builtin/todo-write-tool.d.ts +14 -0
  63. package/lib/builtin/todo-write-tool.d.ts.map +1 -0
  64. package/lib/builtin/todo-write-tool.js +54 -0
  65. package/lib/builtin/todo-write-tool.js.map +1 -0
  66. package/lib/builtin/web-fetch-tool.d.ts +19 -0
  67. package/lib/builtin/web-fetch-tool.d.ts.map +1 -0
  68. package/lib/builtin/web-fetch-tool.js +89 -0
  69. package/lib/builtin/web-fetch-tool.js.map +1 -0
  70. package/lib/builtin/web-search-locale.d.ts +16 -0
  71. package/lib/builtin/web-search-locale.d.ts.map +1 -0
  72. package/lib/builtin/web-search-locale.js +73 -0
  73. package/lib/builtin/web-search-locale.js.map +1 -0
  74. package/lib/builtin/web-search-tool.d.ts +20 -0
  75. package/lib/builtin/web-search-tool.d.ts.map +1 -0
  76. package/lib/builtin/web-search-tool.js +105 -0
  77. package/lib/builtin/web-search-tool.js.map +1 -0
  78. package/lib/builtin/web-tool-utils.d.ts +4 -0
  79. package/lib/builtin/web-tool-utils.d.ts.map +1 -0
  80. package/lib/builtin/web-tool-utils.js +4 -0
  81. package/lib/builtin/web-tool-utils.js.map +1 -0
  82. package/lib/builtin/write-file-tool.d.ts +13 -0
  83. package/lib/builtin/write-file-tool.d.ts.map +1 -0
  84. package/lib/builtin/write-file-tool.js +57 -0
  85. package/lib/builtin/write-file-tool.js.map +1 -0
  86. package/lib/builtin/write-memory-tool.d.ts +14 -0
  87. package/lib/builtin/write-memory-tool.d.ts.map +1 -0
  88. package/lib/builtin/write-memory-tool.js +50 -0
  89. package/lib/builtin/write-memory-tool.js.map +1 -0
  90. package/lib/builtin-tools.d.ts +10 -11
  91. package/lib/builtin-tools.d.ts.map +1 -1
  92. package/lib/builtin-tools.js +44 -862
  93. package/lib/builtin-tools.js.map +1 -1
  94. package/lib/defaults/tools.d.ts +3 -6
  95. package/lib/defaults/tools.d.ts.map +1 -1
  96. package/lib/defaults/tools.js +3 -11
  97. package/lib/defaults/tools.js.map +1 -1
  98. package/lib/index.d.ts +28 -4
  99. package/lib/index.d.ts.map +1 -1
  100. package/lib/index.js +25 -3
  101. package/lib/index.js.map +1 -1
  102. package/lib/init/create-zhin-agent.d.ts.map +1 -1
  103. package/lib/init/create-zhin-agent.js +4 -3
  104. package/lib/init/create-zhin-agent.js.map +1 -1
  105. package/lib/init/message-media.d.ts +8 -0
  106. package/lib/init/message-media.d.ts.map +1 -0
  107. package/lib/init/message-media.js +75 -0
  108. package/lib/init/message-media.js.map +1 -0
  109. package/lib/init/output-renderer.d.ts +3 -0
  110. package/lib/init/output-renderer.d.ts.map +1 -0
  111. package/lib/init/output-renderer.js +38 -0
  112. package/lib/init/output-renderer.js.map +1 -0
  113. package/lib/init/register-ai-trigger.d.ts +1 -1
  114. package/lib/init/register-ai-trigger.d.ts.map +1 -1
  115. package/lib/init/register-ai-trigger.js +35 -159
  116. package/lib/init/register-ai-trigger.js.map +1 -1
  117. package/lib/init/register-builtin-tools.d.ts.map +1 -1
  118. package/lib/init/register-builtin-tools.js +9 -5
  119. package/lib/init/register-builtin-tools.js.map +1 -1
  120. package/lib/orchestrator/index.d.ts +2 -0
  121. package/lib/orchestrator/index.d.ts.map +1 -1
  122. package/lib/orchestrator/index.js +1 -0
  123. package/lib/orchestrator/index.js.map +1 -1
  124. package/lib/orchestrator/owner-confirm-orchestration.d.ts +26 -0
  125. package/lib/orchestrator/owner-confirm-orchestration.d.ts.map +1 -0
  126. package/lib/orchestrator/owner-confirm-orchestration.js +87 -0
  127. package/lib/orchestrator/owner-confirm-orchestration.js.map +1 -0
  128. package/lib/orchestrator/resource-registry.d.ts +1 -0
  129. package/lib/orchestrator/resource-registry.d.ts.map +1 -1
  130. package/lib/orchestrator/resource-registry.js +6 -0
  131. package/lib/orchestrator/resource-registry.js.map +1 -1
  132. package/lib/orchestrator/tool-registry.d.ts +5 -11
  133. package/lib/orchestrator/tool-registry.d.ts.map +1 -1
  134. package/lib/orchestrator/tool-registry.js +30 -75
  135. package/lib/orchestrator/tool-registry.js.map +1 -1
  136. package/lib/orchestrator/tool-selection.d.ts +39 -0
  137. package/lib/orchestrator/tool-selection.d.ts.map +1 -0
  138. package/lib/orchestrator/tool-selection.js +319 -0
  139. package/lib/orchestrator/tool-selection.js.map +1 -0
  140. package/lib/orchestrator/types.d.ts +2 -0
  141. package/lib/orchestrator/types.d.ts.map +1 -1
  142. package/lib/reserved-tools.d.ts +3 -0
  143. package/lib/reserved-tools.d.ts.map +1 -0
  144. package/lib/reserved-tools.js +30 -0
  145. package/lib/reserved-tools.js.map +1 -0
  146. package/lib/security/exec-policy.d.ts +1 -1
  147. package/lib/security/exec-policy.js +3 -3
  148. package/lib/security/exec-policy.js.map +1 -1
  149. package/lib/service.d.ts +9 -5
  150. package/lib/service.d.ts.map +1 -1
  151. package/lib/service.js +42 -36
  152. package/lib/service.js.map +1 -1
  153. package/lib/subagent.d.ts +6 -0
  154. package/lib/subagent.d.ts.map +1 -1
  155. package/lib/subagent.js +38 -15
  156. package/lib/subagent.js.map +1 -1
  157. package/lib/task-executor.d.ts +1 -0
  158. package/lib/task-executor.d.ts.map +1 -1
  159. package/lib/task-executor.js +15 -8
  160. package/lib/task-executor.js.map +1 -1
  161. package/lib/zhin-agent/builtin-tools.d.ts +1 -3
  162. package/lib/zhin-agent/builtin-tools.d.ts.map +1 -1
  163. package/lib/zhin-agent/builtin-tools.js +4 -41
  164. package/lib/zhin-agent/builtin-tools.js.map +1 -1
  165. package/lib/zhin-agent/config.d.ts +7 -0
  166. package/lib/zhin-agent/config.d.ts.map +1 -1
  167. package/lib/zhin-agent/config.js +12 -7
  168. package/lib/zhin-agent/config.js.map +1 -1
  169. package/lib/zhin-agent/context-budget.d.ts +27 -0
  170. package/lib/zhin-agent/context-budget.d.ts.map +1 -0
  171. package/lib/zhin-agent/context-budget.js +50 -0
  172. package/lib/zhin-agent/context-budget.js.map +1 -0
  173. package/lib/zhin-agent/index.d.ts +10 -0
  174. package/lib/zhin-agent/index.d.ts.map +1 -1
  175. package/lib/zhin-agent/index.js +125 -88
  176. package/lib/zhin-agent/index.js.map +1 -1
  177. package/lib/zhin-agent/model-harness.d.ts +29 -0
  178. package/lib/zhin-agent/model-harness.d.ts.map +1 -0
  179. package/lib/zhin-agent/model-harness.js +67 -0
  180. package/lib/zhin-agent/model-harness.js.map +1 -0
  181. package/lib/zhin-agent/pre-exec.d.ts +7 -0
  182. package/lib/zhin-agent/pre-exec.d.ts.map +1 -0
  183. package/lib/zhin-agent/pre-exec.js +25 -0
  184. package/lib/zhin-agent/pre-exec.js.map +1 -0
  185. package/lib/zhin-agent/prompt.d.ts +10 -8
  186. package/lib/zhin-agent/prompt.d.ts.map +1 -1
  187. package/lib/zhin-agent/prompt.js +38 -30
  188. package/lib/zhin-agent/prompt.js.map +1 -1
  189. package/lib/zhin-agent/text-sanitize.d.ts +8 -0
  190. package/lib/zhin-agent/text-sanitize.d.ts.map +1 -0
  191. package/lib/zhin-agent/text-sanitize.js +19 -0
  192. package/lib/zhin-agent/text-sanitize.js.map +1 -0
  193. package/lib/zhin-agent/tool-runtime.d.ts +31 -0
  194. package/lib/zhin-agent/tool-runtime.d.ts.map +1 -0
  195. package/lib/zhin-agent/tool-runtime.js +49 -0
  196. package/lib/zhin-agent/tool-runtime.js.map +1 -0
  197. package/package.json +8 -6
  198. package/lib/tools.d.ts +0 -45
  199. package/lib/tools.d.ts.map +0 -1
  200. package/lib/tools.js +0 -205
  201. package/lib/tools.js.map +0 -1
  202. package/lib/zhin-agent/tool-collector.d.ts +0 -22
  203. package/lib/zhin-agent/tool-collector.d.ts.map +0 -1
  204. package/lib/zhin-agent/tool-collector.js +0 -225
  205. package/lib/zhin-agent/tool-collector.js.map +0 -1
@@ -1,16 +1,16 @@
1
1
  /**
2
2
  * ToolRegistry — unified tool management with common/specialized support.
3
3
  *
4
- * Absorbs functionality from:
4
+ * Owns registry state and delegates tool semantics to tool-selection:
5
5
  * - core/built/tool.ts (ToolFeature, ZhinTool, permission checking)
6
6
  * - ai/tool-filter.ts + tool-search-cache.ts (relevance filtering)
7
7
  */
8
8
  import type { AgentTool, ToolFilterOptions } from '@zhin.js/ai';
9
9
  import { ResourceRegistry } from './resource-registry.js';
10
10
  import type { ResourceScope, Tool, ToolContext, ToolPermissionLevel, ToolParametersSchema, PropertySchema, ToolScope } from './types.js';
11
- export declare function hasPermissionLevel(userLevel: ToolPermissionLevel, requiredLevel: ToolPermissionLevel): boolean;
12
- export declare function inferPermissionLevel(context: ToolContext): ToolPermissionLevel;
13
- export declare function canAccessTool(tool: Tool, context: ToolContext): boolean;
11
+ import { type ToolLike } from './tool-selection.js';
12
+ export { canAccessTool, hasPermissionLevel, inferPermissionLevel } from './tool-selection.js';
13
+ export type { ToolLike } from './tool-selection.js';
14
14
  interface ParamDef {
15
15
  name: string;
16
16
  schema: PropertySchema;
@@ -44,11 +44,8 @@ export declare function isZhinTool(obj: any): obj is ZhinTool;
44
44
  export declare function defineTool<TArgs extends Record<string, any> = Record<string, any>>(tool: Tool<TArgs>): Tool;
45
45
  export declare function extractParamInfo(parameters: ToolParametersSchema): Tool.ParamInfo[];
46
46
  export type ToolInput = Tool | ZhinTool;
47
- export interface ToolLike {
48
- toTool(): Tool;
49
- }
50
47
  export declare class ToolRegistry extends ResourceRegistry<AgentTool> {
51
- private readonly cachedFilter;
48
+ private readonly logger;
52
49
  private readonly toolPluginMap;
53
50
  addTool(input: ToolInput | AgentTool | ToolLike, scope?: ResourceScope, source?: string): () => void;
54
51
  removeTool(name: string, scope?: ResourceScope): boolean;
@@ -59,9 +56,6 @@ export declare class ToolRegistry extends ResourceRegistry<AgentTool> {
59
56
  setToolPluginMap(toolName: string, pluginName: string): void;
60
57
  getToolsByPlugin(pluginName: string): AgentTool[];
61
58
  dispose(): void;
62
- private normalizeToAgentTool;
63
- private toolToAgentTool;
64
59
  private findInSpecialized;
65
60
  }
66
- export {};
67
61
  //# sourceMappingURL=tool-registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../src/orchestrator/tool-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../src/orchestrator/tool-registry.ts"],"names":[],"mappings":"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"}
@@ -1,46 +1,16 @@
1
1
  /**
2
2
  * ToolRegistry — unified tool management with common/specialized support.
3
3
  *
4
- * Absorbs functionality from:
4
+ * Owns registry state and delegates tool semantics to tool-selection:
5
5
  * - core/built/tool.ts (ToolFeature, ZhinTool, permission checking)
6
6
  * - ai/tool-filter.ts + tool-search-cache.ts (relevance filtering)
7
7
  */
8
- import { CachedToolFilter } from '@zhin.js/ai';
8
+ import { isBuiltinToolSource, isReservedToolName } from '@zhin.js/ai';
9
+ import { Logger } from '@zhin.js/core';
9
10
  import { ResourceRegistry } from './resource-registry.js';
10
- // ============================================================================
11
- // Permission helpers
12
- // ============================================================================
13
- const PERMISSION_LEVEL_PRIORITY = {
14
- user: 0,
15
- group_admin: 1,
16
- group_owner: 2,
17
- bot_admin: 3,
18
- owner: 4,
19
- };
20
- export function hasPermissionLevel(userLevel, requiredLevel) {
21
- return PERMISSION_LEVEL_PRIORITY[userLevel] >= PERMISSION_LEVEL_PRIORITY[requiredLevel];
22
- }
23
- export function inferPermissionLevel(context) {
24
- if (context.senderPermissionLevel)
25
- return context.senderPermissionLevel;
26
- if (context.isOwner)
27
- return 'owner';
28
- if (context.isBotAdmin)
29
- return 'bot_admin';
30
- if (context.isGroupOwner)
31
- return 'group_owner';
32
- if (context.isGroupAdmin)
33
- return 'group_admin';
34
- return 'user';
35
- }
36
- export function canAccessTool(tool, context) {
37
- if (tool.platforms?.length && (!context.platform || !tool.platforms.includes(context.platform)))
38
- return false;
39
- if (tool.scopes?.length && (!context.scope || !tool.scopes.includes(context.scope)))
40
- return false;
41
- const requiredLevel = tool.permissionLevel || 'user';
42
- return hasPermissionLevel(inferPermissionLevel(context), requiredLevel);
43
- }
11
+ import { RESERVED_TOOL_NAMES, RESERVED_TOOL_NAME_PREFIXES } from '../reserved-tools.js';
12
+ import { canAccessTool, sharedToolSelection, } from './tool-selection.js';
13
+ export { canAccessTool, hasPermissionLevel, inferPermissionLevel } from './tool-selection.js';
44
14
  export class ZhinTool {
45
15
  #name;
46
16
  #description = '';
@@ -186,15 +156,32 @@ export function extractParamInfo(parameters) {
186
156
  // ToolRegistry
187
157
  // ============================================================================
188
158
  export class ToolRegistry extends ResourceRegistry {
189
- cachedFilter = new CachedToolFilter();
159
+ logger = new Logger(null, 'ToolRegistry');
190
160
  toolPluginMap = new Map();
191
161
  addTool(input, scope, source) {
192
- const tool = this.normalizeToAgentTool(input);
193
- this.cachedFilter.invalidate();
194
- return this.add(tool, scope, source);
162
+ const incomingSource = source || 'unknown';
163
+ const normalized = sharedToolSelection.normalize(input);
164
+ const tool = {
165
+ ...normalized,
166
+ source: normalized.source || input?.source || incomingSource,
167
+ };
168
+ const protectedName = isReservedToolName(tool.name, {
169
+ reservedNames: RESERVED_TOOL_NAMES,
170
+ reservedPrefixes: RESERVED_TOOL_NAME_PREFIXES,
171
+ });
172
+ if (protectedName && !isBuiltinToolSource(tool.source)) {
173
+ this.logger.warn(`[工具命名] name=${tool.name} source=${incomingSource} action=ignored reason=reserved_name`);
174
+ return () => { };
175
+ }
176
+ const existingEntry = this.getEntry(tool.name, scope);
177
+ if (existingEntry) {
178
+ this.logger.warn(`[工具命名] name=${tool.name} source=${incomingSource} action=overridden previous=${existingEntry.source} reason=duplicate_name_last_wins`);
179
+ }
180
+ sharedToolSelection.invalidate();
181
+ return this.add(tool, scope, incomingSource);
195
182
  }
196
183
  removeTool(name, scope) {
197
- this.cachedFilter.invalidate();
184
+ sharedToolSelection.invalidate();
198
185
  this.toolPluginMap.delete(name);
199
186
  return this.remove(name, scope);
200
187
  }
@@ -203,7 +190,7 @@ export class ToolRegistry extends ResourceRegistry {
203
190
  }
204
191
  filterByRelevance(message, agentId, options) {
205
192
  const pool = agentId ? this.getForAgent(agentId) : this.getAll();
206
- return this.cachedFilter.filter(message, pool, options);
193
+ return sharedToolSelection.filterByRelevance(message, pool, options);
207
194
  }
208
195
  async execute(name, args, _context) {
209
196
  const tool = this.get(name) ?? this.findInSpecialized(name);
@@ -230,41 +217,9 @@ export class ToolRegistry extends ResourceRegistry {
230
217
  }
231
218
  dispose() {
232
219
  this.toolPluginMap.clear();
233
- this.cachedFilter.invalidate();
220
+ sharedToolSelection.invalidate();
234
221
  super.dispose();
235
222
  }
236
- normalizeToAgentTool(input) {
237
- if (isZhinTool(input)) {
238
- return this.toolToAgentTool(input.toTool());
239
- }
240
- if (typeof input.toTool === 'function') {
241
- return this.toolToAgentTool(input.toTool());
242
- }
243
- const obj = input;
244
- if ('execute' in obj && 'parameters' in obj) {
245
- if ('platforms' in obj || 'scopes' in obj || (typeof obj.permissionLevel === 'string')) {
246
- return this.toolToAgentTool(obj);
247
- }
248
- return obj;
249
- }
250
- return obj;
251
- }
252
- toolToAgentTool(t) {
253
- const PERM_MAP = { user: 0, group_admin: 1, group_owner: 2, bot_admin: 3, owner: 4 };
254
- const result = {
255
- name: t.name,
256
- description: t.description,
257
- parameters: t.parameters,
258
- execute: async (args) => t.execute(args),
259
- tags: t.tags,
260
- keywords: t.keywords,
261
- preExecutable: t.preExecutable,
262
- kind: t.kind,
263
- };
264
- if (t.permissionLevel)
265
- result.permissionLevel = PERM_MAP[t.permissionLevel] ?? 0;
266
- return result;
267
- }
268
223
  findInSpecialized(name) {
269
224
  for (const agentMap of this.specialized.values()) {
270
225
  const entry = agentMap.get(name);
@@ -1 +1 @@
1
- {"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../src/orchestrator/tool-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../src/orchestrator/tool-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Tool selection — normalization, permission checks, context injection and relevance caching.
3
+ */
4
+ import type { AgentTool, ToolFilterOptions } from '@zhin.js/ai';
5
+ import type { SkillRegistry } from './skill-registry.js';
6
+ import type { Tool, ToolContext, ToolPermissionLevel } from './types.js';
7
+ import type { ZhinAgentConfig } from '../zhin-agent/config.js';
8
+ export declare const PERMISSION_LEVEL_PRIORITY: Record<ToolPermissionLevel, number>;
9
+ export type ToolLike = {
10
+ toTool(): Tool;
11
+ };
12
+ export type NormalizableTool = Tool | AgentTool | ToolLike;
13
+ export interface CollectToolsContext {
14
+ config: Required<ZhinAgentConfig>;
15
+ skillRegistry: SkillRegistry | null;
16
+ externalRegistered: Map<string, AgentTool>;
17
+ }
18
+ export declare const DEFAULT_SUBAGENT_TOOL_NAMES: readonly ["read_file", "write_file", "edit_file", "list_dir", "glob", "grep", "bash", "web_search", "web_fetch"];
19
+ export interface RestrictedToolViewOptions {
20
+ allowedNames?: readonly string[];
21
+ disabledNames?: readonly string[];
22
+ }
23
+ export declare function permissionLevelToPriority(level: ToolPermissionLevel | string | undefined): number;
24
+ export declare function hasPermissionLevel(userLevel: ToolPermissionLevel, requiredLevel: ToolPermissionLevel): boolean;
25
+ export declare function inferPermissionLevel(context: ToolContext): ToolPermissionLevel;
26
+ export declare function inferPermissionPriority(context: ToolContext): number;
27
+ export declare function canAccessTool(tool: Tool, context: ToolContext): boolean;
28
+ export declare function createRestrictedToolView(tools: AgentTool[], options?: RestrictedToolViewOptions): AgentTool[];
29
+ export declare function normalizeTool(input: NormalizableTool, context?: ToolContext): AgentTool;
30
+ export declare class ToolSelection {
31
+ private readonly cachedFilter;
32
+ normalize(input: NormalizableTool, context?: ToolContext): AgentTool;
33
+ filterByRelevance(message: string, tools: AgentTool[], options?: ToolFilterOptions): AgentTool[];
34
+ invalidate(): void;
35
+ get cacheSize(): number;
36
+ collectRelevantTools(message: string, context: ToolContext, externalTools: Tool[], ctx: CollectToolsContext): AgentTool[];
37
+ }
38
+ export declare const sharedToolSelection: ToolSelection;
39
+ //# sourceMappingURL=tool-selection.d.ts.map
@@ -0,0 +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,EAAE,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAI/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;CA2If;AAED,eAAO,MAAM,mBAAmB,eAAsB,CAAC"}
@@ -0,0 +1,319 @@
1
+ /**
2
+ * Tool selection — normalization, permission checks, context injection and relevance caching.
3
+ */
4
+ import { Logger } from '@zhin.js/core';
5
+ import { CachedToolFilter } from '@zhin.js/ai';
6
+ const logger = new Logger(null, 'ZhinAgent:ToolSelection');
7
+ export const PERMISSION_LEVEL_PRIORITY = {
8
+ user: 0,
9
+ group_admin: 1,
10
+ group_owner: 2,
11
+ bot_admin: 3,
12
+ owner: 4,
13
+ };
14
+ export const DEFAULT_SUBAGENT_TOOL_NAMES = [
15
+ 'read_file',
16
+ 'write_file',
17
+ 'edit_file',
18
+ 'list_dir',
19
+ 'glob',
20
+ 'grep',
21
+ 'bash',
22
+ 'web_search',
23
+ 'web_fetch',
24
+ ];
25
+ export function permissionLevelToPriority(level) {
26
+ if (!level)
27
+ return 0;
28
+ return PERMISSION_LEVEL_PRIORITY[level] ?? 0;
29
+ }
30
+ export function hasPermissionLevel(userLevel, requiredLevel) {
31
+ return permissionLevelToPriority(userLevel) >= permissionLevelToPriority(requiredLevel);
32
+ }
33
+ export function inferPermissionLevel(context) {
34
+ if (context.senderPermissionLevel)
35
+ return context.senderPermissionLevel;
36
+ if (context.isOwner)
37
+ return 'owner';
38
+ if (context.isBotAdmin)
39
+ return 'bot_admin';
40
+ if (context.isGroupOwner)
41
+ return 'group_owner';
42
+ if (context.isGroupAdmin)
43
+ return 'group_admin';
44
+ return 'user';
45
+ }
46
+ export function inferPermissionPriority(context) {
47
+ return permissionLevelToPriority(inferPermissionLevel(context));
48
+ }
49
+ export function canAccessTool(tool, context) {
50
+ if (tool.platforms?.length && (!context.platform || !tool.platforms.includes(context.platform)))
51
+ return false;
52
+ if (tool.scopes?.length && (!context.scope || !tool.scopes.includes(context.scope)))
53
+ return false;
54
+ return hasPermissionLevel(inferPermissionLevel(context), tool.permissionLevel || 'user');
55
+ }
56
+ export function createRestrictedToolView(tools, options = {}) {
57
+ const allowed = new Set((options.allowedNames ?? DEFAULT_SUBAGENT_TOOL_NAMES).map(name => name.toLowerCase()));
58
+ const disabled = new Set((options.disabledNames ?? []).map(name => name.toLowerCase()));
59
+ const selected = [];
60
+ const seen = new Set();
61
+ for (const tool of tools) {
62
+ const key = tool.name.toLowerCase();
63
+ if (!allowed.has(key) || disabled.has(key) || seen.has(key))
64
+ continue;
65
+ selected.push(tool);
66
+ seen.add(key);
67
+ }
68
+ return selected;
69
+ }
70
+ function isToolLike(input) {
71
+ return !!input && typeof input.toTool === 'function';
72
+ }
73
+ function hasToolShape(input) {
74
+ const obj = input;
75
+ return !!obj
76
+ && typeof obj.name === 'string'
77
+ && typeof obj.description === 'string'
78
+ && typeof obj.execute === 'function'
79
+ && !!obj.parameters;
80
+ }
81
+ function isIMTool(input) {
82
+ if (!hasToolShape(input))
83
+ return false;
84
+ const obj = input;
85
+ return 'platforms' in obj
86
+ || 'scopes' in obj
87
+ || typeof obj.permissionLevel === 'string'
88
+ || 'permissions' in obj
89
+ || 'hidden' in obj
90
+ || 'source' in obj;
91
+ }
92
+ function stripContextParameters(tool, context) {
93
+ const injections = [];
94
+ let parameters = tool.parameters;
95
+ if (!context || !tool.parameters?.properties) {
96
+ return { parameters, injections };
97
+ }
98
+ const props = tool.parameters.properties;
99
+ const filteredProps = {};
100
+ const filteredRequired = [];
101
+ for (const [key, schema] of Object.entries(props)) {
102
+ if (schema.contextKey && context[schema.contextKey] != null) {
103
+ injections.push({
104
+ paramName: key,
105
+ contextKey: schema.contextKey,
106
+ paramType: schema.type || 'string',
107
+ });
108
+ continue;
109
+ }
110
+ filteredProps[key] = schema;
111
+ if (tool.parameters.required?.includes(key)) {
112
+ filteredRequired.push(key);
113
+ }
114
+ }
115
+ if (injections.length > 0) {
116
+ parameters = {
117
+ ...tool.parameters,
118
+ properties: filteredProps,
119
+ required: filteredRequired.length > 0 ? filteredRequired : undefined,
120
+ };
121
+ }
122
+ return { parameters, injections };
123
+ }
124
+ export function normalizeTool(input, context) {
125
+ if (isToolLike(input)) {
126
+ return normalizeTool(input.toTool(), context);
127
+ }
128
+ if (!isIMTool(input) && !(context && hasToolShape(input))) {
129
+ return input;
130
+ }
131
+ const tool = input;
132
+ const originalExecute = tool.execute;
133
+ const { parameters, injections } = stripContextParameters(tool, context);
134
+ const agentTool = {
135
+ name: tool.name,
136
+ description: tool.description,
137
+ parameters,
138
+ execute: context
139
+ ? async (args) => {
140
+ const enrichedArgs = { ...args };
141
+ for (const { paramName, contextKey, paramType } of injections) {
142
+ let value = context[contextKey];
143
+ if (paramType === 'number' && typeof value === 'string') {
144
+ value = Number(value);
145
+ }
146
+ else if (paramType === 'string' && typeof value !== 'string') {
147
+ value = String(value);
148
+ }
149
+ enrichedArgs[paramName] = value;
150
+ }
151
+ return originalExecute(enrichedArgs, context);
152
+ }
153
+ : async (args) => originalExecute(args),
154
+ };
155
+ if (tool.tags?.length)
156
+ agentTool.tags = tool.tags;
157
+ if (tool.keywords?.length)
158
+ agentTool.keywords = tool.keywords;
159
+ if (tool.permissionLevel)
160
+ agentTool.permissionLevel = permissionLevelToPriority(tool.permissionLevel);
161
+ if (tool.preExecutable)
162
+ agentTool.preExecutable = true;
163
+ if (tool.kind)
164
+ agentTool.kind = tool.kind;
165
+ if (tool.source)
166
+ agentTool.source = tool.source;
167
+ return agentTool;
168
+ }
169
+ export class ToolSelection {
170
+ cachedFilter = new CachedToolFilter();
171
+ normalize(input, context) {
172
+ return normalizeTool(input, context);
173
+ }
174
+ filterByRelevance(message, tools, options) {
175
+ return this.cachedFilter.filter(message, tools, options);
176
+ }
177
+ invalidate() {
178
+ this.cachedFilter.invalidate();
179
+ }
180
+ get cacheSize() {
181
+ return this.cachedFilter.size;
182
+ }
183
+ collectRelevantTools(message, context, externalTools, ctx) {
184
+ const { config, skillRegistry, externalRegistered } = ctx;
185
+ const callerPerm = inferPermissionPriority(context);
186
+ const collected = [];
187
+ const collectedNames = new Set();
188
+ let mentionedSkill = null;
189
+ if (skillRegistry && skillRegistry.size > 0) {
190
+ const msgLower = message.toLowerCase();
191
+ outer: for (const skill of skillRegistry.getAll()) {
192
+ if (msgLower.includes(skill.name.toLowerCase())) {
193
+ mentionedSkill = skill.name;
194
+ logger.debug(`[技能检测] 用户提到技能(名称): ${mentionedSkill}`);
195
+ break;
196
+ }
197
+ for (const kw of skill.keywords || []) {
198
+ if (kw && msgLower.includes(String(kw).toLowerCase())) {
199
+ mentionedSkill = skill.name;
200
+ logger.debug(`[技能检测] 用户提到技能(关键词→${skill.name}): ${kw}`);
201
+ break outer;
202
+ }
203
+ }
204
+ }
205
+ }
206
+ if (mentionedSkill) {
207
+ const activateSkillTool = externalTools.find(t => t.name === 'activate_skill');
208
+ if (activateSkillTool && canAccessTool(activateSkillTool, context)) {
209
+ collected.push(this.normalize(activateSkillTool, context));
210
+ collectedNames.add('activate_skill');
211
+ logger.debug(`[技能激活] 已提前加入 activate_skill 工具(优先级最高)`);
212
+ }
213
+ }
214
+ if (skillRegistry) {
215
+ const skills = skillRegistry.search(message, { maxResults: config.maxSkills, platform: context.platform });
216
+ const skillStr = skills.length > 0
217
+ ? skills.map(s => `${s.name}(${s.tools?.length || 0}工具)`).join(', ')
218
+ : '(无匹配技能)';
219
+ logger.debug(`[Skill 匹配] ${skillStr}` + (context.platform ? ` (平台: ${context.platform})` : ''));
220
+ for (const skill of skills) {
221
+ for (const tool of skill.tools) {
222
+ if (!canAccessTool(tool, context))
223
+ continue;
224
+ if (collectedNames.has(tool.name))
225
+ continue;
226
+ collected.push(this.normalize(tool, context));
227
+ collectedNames.add(tool.name);
228
+ }
229
+ }
230
+ }
231
+ let deduped = 0;
232
+ for (const tool of externalTools) {
233
+ if (!canAccessTool(tool, context))
234
+ continue;
235
+ if (collectedNames.has(tool.name)) {
236
+ deduped++;
237
+ continue;
238
+ }
239
+ collected.push(this.normalize(tool, context));
240
+ collectedNames.add(tool.name);
241
+ }
242
+ if (deduped > 0) {
243
+ logger.debug(`externalTools 去重: 跳过 ${deduped} 个已由 Skill 提供的工具`);
244
+ }
245
+ for (const tool of externalRegistered.values()) {
246
+ if (tool.permissionLevel != null && tool.permissionLevel > callerPerm)
247
+ continue;
248
+ if (collectedNames.has(tool.name))
249
+ continue;
250
+ collected.push(tool);
251
+ collectedNames.add(tool.name);
252
+ }
253
+ const filtered = this.filterByRelevance(message, collected, {
254
+ callerPermissionLevel: callerPerm,
255
+ maxTools: config.maxTools,
256
+ minScore: 0.3,
257
+ });
258
+ /** 时事/实体类问题常无关键词命中;以下工具仍应留在候选集中供模型自行调用 */
259
+ const relevanceResidentNames = ['web_search', 'ask_user'];
260
+ for (const name of relevanceResidentNames) {
261
+ if (filtered.some(t => t.name === name))
262
+ continue;
263
+ const t = collected.find(x => x.name === name);
264
+ if (t)
265
+ filtered.unshift(t);
266
+ }
267
+ if (mentionedSkill && filtered.length > 0) {
268
+ const activateSkillIdx = filtered.findIndex(t => t.name === 'activate_skill');
269
+ if (activateSkillIdx > 0) {
270
+ const activateSkillTool = filtered[activateSkillIdx];
271
+ filtered.splice(activateSkillIdx, 1);
272
+ filtered.unshift(activateSkillTool);
273
+ logger.debug(`[工具排序] activate_skill 提升至首位(因检测到技能: ${mentionedSkill})`);
274
+ }
275
+ }
276
+ const skillSupportTools = ['bash', 'web_fetch', 'web_search', 'write_file', 'read_file'];
277
+ const hasSkillTool = filtered.some(t => t.name === 'activate_skill' || t.name === 'install_skill');
278
+ if (hasSkillTool) {
279
+ const filteredNames = new Set(filtered.map(t => t.name));
280
+ for (const supportName of skillSupportTools) {
281
+ if (filteredNames.has(supportName))
282
+ continue;
283
+ const supportTool = collected.find(t => t.name === supportName);
284
+ if (supportTool) {
285
+ filtered.push(supportTool);
286
+ filteredNames.add(supportName);
287
+ }
288
+ }
289
+ logger.debug(`[技能支持] 已补充工具: ${skillSupportTools.filter(n => filteredNames.has(n)).join(', ')}`);
290
+ }
291
+ let final = filtered;
292
+ const allowed = config.allowedTools;
293
+ const disabled = config.disabledTools ?? [];
294
+ if (allowed && allowed.length > 0) {
295
+ const allowSet = new Set(allowed.map(n => n.toLowerCase()));
296
+ final = final.filter(t => allowSet.has(t.name.toLowerCase()));
297
+ if (final.length < filtered.length) {
298
+ logger.debug(`[工具开关] allowedTools 限制: ${filtered.length} -> ${final.length}`);
299
+ }
300
+ }
301
+ else if (disabled.length > 0) {
302
+ const disabledSet = new Set(disabled.map(n => n.toLowerCase()));
303
+ final = final.filter(t => !disabledSet.has(t.name.toLowerCase()));
304
+ if (final.length < filtered.length) {
305
+ logger.debug(`[工具开关] disabledTools 过滤: ${filtered.length} -> ${final.length}`);
306
+ }
307
+ }
308
+ if (final.length > 0) {
309
+ logger.debug(`[工具收集] 收集了 ${collected.length} 个工具,过滤后 ${final.length} 个,` +
310
+ `用户消息相关性最高的: ${final.slice(0, 3).map(t => t.name).join(', ')}`);
311
+ }
312
+ else {
313
+ logger.debug(`[工具收集] 收集了 ${collected.length} 个工具,但过滤后 0 个(没有超过相关性阈值的)`);
314
+ }
315
+ return final;
316
+ }
317
+ }
318
+ export const sharedToolSelection = new ToolSelection();
319
+ //# sourceMappingURL=tool-selection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-selection.js","sourceRoot":"","sources":["../../src/orchestrator/tool-selection.ts"],"names":[],"mappings":"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"}
@@ -72,6 +72,8 @@ export interface ToolContext {
72
72
  isGroupAdmin?: boolean;
73
73
  isGroupOwner?: boolean;
74
74
  message?: unknown;
75
+ /** 与 @zhin.js/core.ToolContext.extra 对齐:供内置工具等读取扩展字段(如 web_search_locale) */
76
+ extra?: Record<string, unknown>;
75
77
  }
76
78
  export type IMToolContext = ToolContext;
77
79
  export interface ToolJsonSchema extends JsonSchema {