@ugm/desiagent 0.1.26 → 0.1.27

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.
@@ -6,19 +6,50 @@
6
6
  */
7
7
  import type { ToolDefinition } from '../../types/index.js';
8
8
  import type { ToolRegistry } from '../tools/registry.js';
9
+ import type { BaseTool, ToolContext } from '../tools/base.js';
9
10
  /**
10
11
  * ToolsService handles tool listing and queries
11
12
  */
12
13
  export declare class ToolsService {
13
14
  private registry;
14
- constructor(registry: ToolRegistry);
15
+ private restrictedList;
16
+ private static readonly DEFAULT_RESTRICTED;
17
+ constructor(registry: ToolRegistry, restrictedList?: string[]);
15
18
  /**
16
- * List all available tools
19
+ * List all available tools (with optional filtering)
17
20
  */
18
21
  list(filter?: Record<string, any>): Promise<ToolDefinition[]>;
19
22
  /**
20
- * Get a specific tool by name
23
+ * Get a specific tool by name (returns definition)
21
24
  */
22
25
  get(name: string): Promise<ToolDefinition | null>;
26
+ /**
27
+ * Get a tool instance by name
28
+ */
29
+ getTool(name: string): BaseTool | undefined;
30
+ /**
31
+ * Get all tool instances
32
+ */
33
+ /**
34
+ * Get all tool definitions
35
+ */
36
+ /**
37
+ * Check if a tool exists
38
+ */
39
+ /**
40
+ * Filter tools by names
41
+ */
42
+ /**
43
+ * Register a new tool
44
+ */
45
+ /**
46
+ * Check if a tool is restricted
47
+ */
48
+ isRestricted(name: string): boolean;
49
+ isAllowed(name: string): boolean;
50
+ /**
51
+ * Execute a tool by name (blocks restricted tools)
52
+ */
53
+ execute(toolName: string, input: any, ctx: ToolContext): Promise<any>;
23
54
  }
24
55
  //# sourceMappingURL=tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/core/execution/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAe;gBAEnB,QAAQ,EAAE,YAAY;IAIlC;;OAEG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAUnE;;OAEG;IACG,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CAIxD"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/core/execution/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE9D;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,cAAc,CAAc;IAEpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAaxC;gBAEU,QAAQ,EAAE,YAAY,EAAE,cAAc,GAAE,MAAM,EAAoC;IAK9F;;OAEG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAgBnE;;OAEG;IACG,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAMvD;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAQ3C;;OAEG;IAMH;;OAEG;IAMH;;OAEG;IAKH;;OAEG;IAKH;;OAEG;IAKH;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAInC,SAAS,CAAC,IAAI,EAAC,MAAM,GAAE,OAAO;IAG9B;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;CAO5E"}
@@ -9,25 +9,106 @@
9
9
  */
10
10
  export class ToolsService {
11
11
  registry;
12
- constructor(registry) {
12
+ restrictedList;
13
+ static DEFAULT_RESTRICTED = [
14
+ 'bash',
15
+ // 'readFile',
16
+ // 'writeFile',
17
+ 'fetchPage',
18
+ 'webSearch',
19
+ 'fetchURLs',
20
+ 'glob',
21
+ 'grep',
22
+ 'edit',
23
+ // 'sendEmail',
24
+ // 'readEmail',
25
+ 'sendWebhook',
26
+ ];
27
+ constructor(registry, restrictedList = ToolsService.DEFAULT_RESTRICTED) {
13
28
  this.registry = registry;
29
+ this.restrictedList = new Set(restrictedList);
14
30
  }
15
31
  /**
16
- * List all available tools
32
+ * List all available tools (with optional filtering)
17
33
  */
18
34
  async list(filter) {
19
35
  let tools = this.registry.getAllDefinitions();
20
36
  if (filter?.name) {
21
- tools = tools.filter((t) => t.function.name === filter.name);
37
+ tools = tools.filter((t) => (t.function.name === filter.name && this.isRestricted(t.function.name)));
38
+ }
39
+ else {
40
+ tools = tools.filter((t) => !this.isRestricted(t.function.name));
22
41
  }
23
42
  return tools;
24
43
  }
25
44
  /**
26
- * Get a specific tool by name
45
+ * Get a specific tool by name (returns definition)
27
46
  */
28
47
  async get(name) {
29
48
  const tool = this.registry.get(name);
30
- return tool ? tool.toJSONSchema() : null;
49
+ return tool && this.isAllowed(name) ? tool.toJSONSchema() : null;
50
+ }
51
+ /**
52
+ * Get a tool instance by name
53
+ */
54
+ getTool(name) {
55
+ if (this.isAllowed(name)) {
56
+ return this.registry.get(name);
57
+ }
58
+ else {
59
+ return undefined;
60
+ }
61
+ }
62
+ /**
63
+ * Get all tool instances
64
+ */
65
+ // Not needed
66
+ //getAll(): BaseTool[] {
67
+ // return this.registry.getAll();
68
+ //}
69
+ /**
70
+ * Get all tool definitions
71
+ */
72
+ //Not needed
73
+ // getAllDefinitions(): ToolDefinition[] {
74
+ // return this.registry.getAllDefinitions();
75
+ // }
76
+ /**
77
+ * Check if a tool exists
78
+ */
79
+ // hasTool(name: string): boolean {
80
+ // return this.registry.hasTool(name);
81
+ // }
82
+ /**
83
+ * Filter tools by names
84
+ */
85
+ // filterByNames(names?: string[]): BaseTool[] {
86
+ // return this.registry.filterByNames(names);
87
+ // }
88
+ /**
89
+ * Register a new tool
90
+ */
91
+ // register(tool: BaseTool): void {
92
+ // this.registry.register(tool);
93
+ // }
94
+ /**
95
+ * Check if a tool is restricted
96
+ */
97
+ isRestricted(name) {
98
+ return this.restrictedList.has(name);
99
+ }
100
+ isAllowed(name) {
101
+ return !this.isRestricted(name);
102
+ }
103
+ /**
104
+ * Execute a tool by name (blocks restricted tools)
105
+ */
106
+ async execute(toolName, input, ctx) {
107
+ if (this.isRestricted(toolName)) {
108
+ return null;
109
+ //throw new Error(`Tool '${toolName}' is restricted and cannot be executed`);
110
+ }
111
+ return this.registry.execute(toolName, input, ctx);
31
112
  }
32
113
  }
33
114
  //# sourceMappingURL=tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/core/execution/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;GAEG;AACH,MAAM,OAAO,YAAY;IACf,QAAQ,CAAe;IAE/B,YAAY,QAAsB;QAChC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,MAA4B;QACrC,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QAE9C,IAAI,MAAM,EAAE,IAAI,EAAE,CAAC;YACjB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,IAAY;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,CAAC;CACF"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/core/execution/tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ugm/desiagent",
3
- "version": "0.1.26",
3
+ "version": "0.1.27",
4
4
  "description": "A library-first async agent system for building autonomous workflows",
5
5
  "homepage": "https://github.com/ugmurthy/desiAgent",
6
6
  "main": "./dist/index.js",