beth-copilot 1.0.15 → 1.0.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.
- package/README.md +197 -77
- package/bin/cli.js +47 -0
- package/dist/core/context.d.ts +171 -0
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +353 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/context.test.d.ts +8 -0
- package/dist/core/context.test.d.ts.map +1 -0
- package/dist/core/context.test.js +253 -0
- package/dist/core/context.test.js.map +1 -0
- package/dist/core/handoffs.d.ts +151 -0
- package/dist/core/handoffs.d.ts.map +1 -0
- package/dist/core/handoffs.js +220 -0
- package/dist/core/handoffs.js.map +1 -0
- package/dist/core/handoffs.test.d.ts +8 -0
- package/dist/core/handoffs.test.d.ts.map +1 -0
- package/dist/core/handoffs.test.js +231 -0
- package/dist/core/handoffs.test.js.map +1 -0
- package/dist/core/orchestrator.d.ts +246 -0
- package/dist/core/orchestrator.d.ts.map +1 -0
- package/dist/core/orchestrator.js +514 -0
- package/dist/core/orchestrator.js.map +1 -0
- package/dist/core/orchestrator.test.d.ts +8 -0
- package/dist/core/orchestrator.test.d.ts.map +1 -0
- package/dist/core/orchestrator.test.js +517 -0
- package/dist/core/orchestrator.test.js.map +1 -0
- package/dist/core/router.d.ts +102 -0
- package/dist/core/router.d.ts.map +1 -0
- package/dist/core/router.js +178 -0
- package/dist/core/router.js.map +1 -0
- package/dist/core/router.test.d.ts +8 -0
- package/dist/core/router.test.d.ts.map +1 -0
- package/dist/core/router.test.js +215 -0
- package/dist/core/router.test.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/tools/cli/beads.d.ts +27 -0
- package/dist/tools/cli/beads.d.ts.map +1 -0
- package/dist/tools/cli/beads.js +172 -0
- package/dist/tools/cli/beads.js.map +1 -0
- package/dist/tools/cli/beads.test.d.ts +8 -0
- package/dist/tools/cli/beads.test.d.ts.map +1 -0
- package/dist/tools/cli/beads.test.js +264 -0
- package/dist/tools/cli/beads.test.js.map +1 -0
- package/dist/tools/cli/editFile.d.ts +17 -0
- package/dist/tools/cli/editFile.d.ts.map +1 -0
- package/dist/tools/cli/editFile.js +125 -0
- package/dist/tools/cli/editFile.js.map +1 -0
- package/dist/tools/cli/editFile.test.d.ts +8 -0
- package/dist/tools/cli/editFile.test.d.ts.map +1 -0
- package/dist/tools/cli/editFile.test.js +177 -0
- package/dist/tools/cli/editFile.test.js.map +1 -0
- package/dist/tools/cli/readFile.d.ts +25 -0
- package/dist/tools/cli/readFile.d.ts.map +1 -0
- package/dist/tools/cli/readFile.js +118 -0
- package/dist/tools/cli/readFile.js.map +1 -0
- package/dist/tools/cli/readFile.test.d.ts +8 -0
- package/dist/tools/cli/readFile.test.d.ts.map +1 -0
- package/dist/tools/cli/readFile.test.js +194 -0
- package/dist/tools/cli/readFile.test.js.map +1 -0
- package/dist/tools/cli/search.d.ts +16 -0
- package/dist/tools/cli/search.d.ts.map +1 -0
- package/dist/tools/cli/search.js +261 -0
- package/dist/tools/cli/search.js.map +1 -0
- package/dist/tools/cli/search.test.d.ts +8 -0
- package/dist/tools/cli/search.test.d.ts.map +1 -0
- package/dist/tools/cli/search.test.js +172 -0
- package/dist/tools/cli/search.test.js.map +1 -0
- package/dist/tools/cli/subagent.d.ts +43 -0
- package/dist/tools/cli/subagent.d.ts.map +1 -0
- package/dist/tools/cli/subagent.js +99 -0
- package/dist/tools/cli/subagent.js.map +1 -0
- package/dist/tools/cli/subagent.test.d.ts +8 -0
- package/dist/tools/cli/subagent.test.d.ts.map +1 -0
- package/dist/tools/cli/subagent.test.js +190 -0
- package/dist/tools/cli/subagent.test.js.map +1 -0
- package/dist/tools/cli/terminal.d.ts +19 -0
- package/dist/tools/cli/terminal.d.ts.map +1 -0
- package/dist/tools/cli/terminal.js +164 -0
- package/dist/tools/cli/terminal.js.map +1 -0
- package/dist/tools/cli/terminal.test.d.ts +8 -0
- package/dist/tools/cli/terminal.test.d.ts.map +1 -0
- package/dist/tools/cli/terminal.test.js +161 -0
- package/dist/tools/cli/terminal.test.js.map +1 -0
- package/dist/tools/index.d.ts +25 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +41 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/interface.d.ts +64 -0
- package/dist/tools/interface.d.ts.map +1 -0
- package/dist/tools/interface.js +37 -0
- package/dist/tools/interface.js.map +1 -0
- package/dist/tools/interface.test.d.ts +7 -0
- package/dist/tools/interface.test.d.ts.map +1 -0
- package/dist/tools/interface.test.js +179 -0
- package/dist/tools/interface.test.js.map +1 -0
- package/dist/tools/mcp/bridge.d.ts +48 -0
- package/dist/tools/mcp/bridge.d.ts.map +1 -0
- package/dist/tools/mcp/bridge.js +128 -0
- package/dist/tools/mcp/bridge.js.map +1 -0
- package/dist/tools/mcp/bridge.test.d.ts +8 -0
- package/dist/tools/mcp/bridge.test.d.ts.map +1 -0
- package/dist/tools/mcp/bridge.test.js +300 -0
- package/dist/tools/mcp/bridge.test.js.map +1 -0
- package/dist/tools/mcp/client.d.ts +135 -0
- package/dist/tools/mcp/client.d.ts.map +1 -0
- package/dist/tools/mcp/client.js +263 -0
- package/dist/tools/mcp/client.js.map +1 -0
- package/dist/tools/mcp/client.test.d.ts +8 -0
- package/dist/tools/mcp/client.test.d.ts.map +1 -0
- package/dist/tools/mcp/client.test.js +390 -0
- package/dist/tools/mcp/client.test.js.map +1 -0
- package/dist/tools/registry.d.ts +82 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +99 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/registry.test.d.ts +7 -0
- package/dist/tools/registry.test.d.ts.map +1 -0
- package/dist/tools/registry.test.js +199 -0
- package/dist/tools/registry.test.js.map +1 -0
- package/dist/tools/suite.test.d.ts +11 -0
- package/dist/tools/suite.test.d.ts.map +1 -0
- package/dist/tools/suite.test.js +119 -0
- package/dist/tools/suite.test.js.map +1 -0
- package/dist/tools/types.d.ts +75 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +30 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools/types.test.d.ts +7 -0
- package/dist/tools/types.test.d.ts.map +1 -0
- package/dist/tools/types.test.js +178 -0
- package/dist/tools/types.test.js.map +1 -0
- package/package.json +2 -2
- package/sbom.json +209 -209
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.test.js","sourceRoot":"","sources":["../../../src/tools/mcp/client.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Registry
|
|
3
|
+
*
|
|
4
|
+
* Maps tool names to their implementations.
|
|
5
|
+
* Provides lookup, enumeration, and conversion to
|
|
6
|
+
* OpenAI-compatible tool definitions for function calling.
|
|
7
|
+
*/
|
|
8
|
+
import type { ToolDefinition } from '../providers/types.js';
|
|
9
|
+
import type { Tool } from './interface.js';
|
|
10
|
+
/**
|
|
11
|
+
* Registry that maps tool names to implementations.
|
|
12
|
+
*
|
|
13
|
+
* Use this to register tools at startup and then retrieve them
|
|
14
|
+
* when the LLM requests a function call. The `getDefinitions()`
|
|
15
|
+
* method converts all registered tools into the format expected
|
|
16
|
+
* by the LLM provider layer.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const registry = new ToolRegistry();
|
|
21
|
+
* registry.register(readFileTool);
|
|
22
|
+
* registry.register(editFileTool);
|
|
23
|
+
*
|
|
24
|
+
* // Pass definitions to LLM
|
|
25
|
+
* const definitions = registry.getDefinitions();
|
|
26
|
+
*
|
|
27
|
+
* // Look up tool when LLM calls it
|
|
28
|
+
* const tool = registry.get('readFile');
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare class ToolRegistry {
|
|
32
|
+
/** Internal map of tool name → tool implementation */
|
|
33
|
+
private readonly tools;
|
|
34
|
+
/**
|
|
35
|
+
* Register a tool in the registry.
|
|
36
|
+
*
|
|
37
|
+
* @param tool - The tool to register
|
|
38
|
+
* @throws {ToolError} If a tool with the same name is already registered
|
|
39
|
+
*/
|
|
40
|
+
register(tool: Tool): void;
|
|
41
|
+
/**
|
|
42
|
+
* Get a tool by name.
|
|
43
|
+
*
|
|
44
|
+
* @param name - The name of the tool to retrieve
|
|
45
|
+
* @returns The tool, or undefined if not found
|
|
46
|
+
*/
|
|
47
|
+
get(name: string): Tool | undefined;
|
|
48
|
+
/**
|
|
49
|
+
* Check if a tool is registered.
|
|
50
|
+
*
|
|
51
|
+
* @param name - The name of the tool to check
|
|
52
|
+
* @returns True if the tool is registered
|
|
53
|
+
*/
|
|
54
|
+
has(name: string): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* List all registered tools.
|
|
57
|
+
*
|
|
58
|
+
* @returns Array of all registered tools
|
|
59
|
+
*/
|
|
60
|
+
list(): Tool[];
|
|
61
|
+
/**
|
|
62
|
+
* Get OpenAI-compatible tool definitions for all registered tools.
|
|
63
|
+
*
|
|
64
|
+
* Use this to pass tool definitions to the LLM provider's
|
|
65
|
+
* chat completion request.
|
|
66
|
+
*
|
|
67
|
+
* @returns Array of tool definitions for function calling
|
|
68
|
+
*/
|
|
69
|
+
getDefinitions(): ToolDefinition[];
|
|
70
|
+
/**
|
|
71
|
+
* Remove a tool from the registry.
|
|
72
|
+
*
|
|
73
|
+
* @param name - The name of the tool to remove
|
|
74
|
+
* @returns True if the tool was removed, false if it was not found
|
|
75
|
+
*/
|
|
76
|
+
unregister(name: string): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Remove all tools from the registry.
|
|
79
|
+
*/
|
|
80
|
+
clear(): void;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAI3C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,YAAY;IACvB,sDAAsD;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IAEtD;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAW1B;;;;;OAKG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAInC;;;;;OAKG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;;;OAIG;IACH,IAAI,IAAI,IAAI,EAAE;IAId;;;;;;;OAOG;IACH,cAAc,IAAI,cAAc,EAAE;IAIlC;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Registry
|
|
3
|
+
*
|
|
4
|
+
* Maps tool names to their implementations.
|
|
5
|
+
* Provides lookup, enumeration, and conversion to
|
|
6
|
+
* OpenAI-compatible tool definitions for function calling.
|
|
7
|
+
*/
|
|
8
|
+
import { toToolDefinition } from './interface.js';
|
|
9
|
+
import { ToolError } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Registry that maps tool names to implementations.
|
|
12
|
+
*
|
|
13
|
+
* Use this to register tools at startup and then retrieve them
|
|
14
|
+
* when the LLM requests a function call. The `getDefinitions()`
|
|
15
|
+
* method converts all registered tools into the format expected
|
|
16
|
+
* by the LLM provider layer.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const registry = new ToolRegistry();
|
|
21
|
+
* registry.register(readFileTool);
|
|
22
|
+
* registry.register(editFileTool);
|
|
23
|
+
*
|
|
24
|
+
* // Pass definitions to LLM
|
|
25
|
+
* const definitions = registry.getDefinitions();
|
|
26
|
+
*
|
|
27
|
+
* // Look up tool when LLM calls it
|
|
28
|
+
* const tool = registry.get('readFile');
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export class ToolRegistry {
|
|
32
|
+
/** Internal map of tool name → tool implementation */
|
|
33
|
+
tools = new Map();
|
|
34
|
+
/**
|
|
35
|
+
* Register a tool in the registry.
|
|
36
|
+
*
|
|
37
|
+
* @param tool - The tool to register
|
|
38
|
+
* @throws {ToolError} If a tool with the same name is already registered
|
|
39
|
+
*/
|
|
40
|
+
register(tool) {
|
|
41
|
+
if (this.tools.has(tool.name)) {
|
|
42
|
+
throw new ToolError(`Tool "${tool.name}" is already registered`, 'INVALID_INPUT', tool.name);
|
|
43
|
+
}
|
|
44
|
+
this.tools.set(tool.name, tool);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get a tool by name.
|
|
48
|
+
*
|
|
49
|
+
* @param name - The name of the tool to retrieve
|
|
50
|
+
* @returns The tool, or undefined if not found
|
|
51
|
+
*/
|
|
52
|
+
get(name) {
|
|
53
|
+
return this.tools.get(name);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Check if a tool is registered.
|
|
57
|
+
*
|
|
58
|
+
* @param name - The name of the tool to check
|
|
59
|
+
* @returns True if the tool is registered
|
|
60
|
+
*/
|
|
61
|
+
has(name) {
|
|
62
|
+
return this.tools.has(name);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* List all registered tools.
|
|
66
|
+
*
|
|
67
|
+
* @returns Array of all registered tools
|
|
68
|
+
*/
|
|
69
|
+
list() {
|
|
70
|
+
return Array.from(this.tools.values());
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Get OpenAI-compatible tool definitions for all registered tools.
|
|
74
|
+
*
|
|
75
|
+
* Use this to pass tool definitions to the LLM provider's
|
|
76
|
+
* chat completion request.
|
|
77
|
+
*
|
|
78
|
+
* @returns Array of tool definitions for function calling
|
|
79
|
+
*/
|
|
80
|
+
getDefinitions() {
|
|
81
|
+
return this.list().map(toToolDefinition);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Remove a tool from the registry.
|
|
85
|
+
*
|
|
86
|
+
* @param name - The name of the tool to remove
|
|
87
|
+
* @returns True if the tool was removed, false if it was not found
|
|
88
|
+
*/
|
|
89
|
+
unregister(name) {
|
|
90
|
+
return this.tools.delete(name);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Remove all tools from the registry.
|
|
94
|
+
*/
|
|
95
|
+
clear() {
|
|
96
|
+
this.tools.clear();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,YAAY;IACvB,sDAAsD;IACrC,KAAK,GAAsB,IAAI,GAAG,EAAE,CAAC;IAEtD;;;;;OAKG;IACH,QAAQ,CAAC,IAAU;QACjB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,SAAS,CACjB,SAAS,IAAI,CAAC,IAAI,yBAAyB,EAC3C,eAAe,EACf,IAAI,CAAC,IAAI,CACV,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACH,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;;OAOG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.test.d.ts","sourceRoot":"","sources":["../../src/tools/registry.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Registry Tests
|
|
3
|
+
*
|
|
4
|
+
* Tests for tool registration, lookup, enumeration, and conversion.
|
|
5
|
+
*/
|
|
6
|
+
import { describe, it, beforeEach } from 'node:test';
|
|
7
|
+
import assert from 'node:assert';
|
|
8
|
+
import { ToolRegistry } from './registry.js';
|
|
9
|
+
import { ToolError } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Create a minimal mock tool for testing.
|
|
12
|
+
*/
|
|
13
|
+
function createMockTool(name, description) {
|
|
14
|
+
return {
|
|
15
|
+
name,
|
|
16
|
+
description: description ?? `Mock ${name} tool`,
|
|
17
|
+
inputSchema: {
|
|
18
|
+
type: 'object',
|
|
19
|
+
properties: {
|
|
20
|
+
input: { type: 'string' },
|
|
21
|
+
},
|
|
22
|
+
required: ['input'],
|
|
23
|
+
},
|
|
24
|
+
execute: async () => ({ success: true, output: 'ok' }),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
describe('ToolRegistry', () => {
|
|
28
|
+
let registry;
|
|
29
|
+
beforeEach(() => {
|
|
30
|
+
registry = new ToolRegistry();
|
|
31
|
+
});
|
|
32
|
+
describe('register', () => {
|
|
33
|
+
it('should register a tool', () => {
|
|
34
|
+
const tool = createMockTool('readFile');
|
|
35
|
+
registry.register(tool);
|
|
36
|
+
assert.strictEqual(registry.has('readFile'), true);
|
|
37
|
+
});
|
|
38
|
+
it('should register multiple tools', () => {
|
|
39
|
+
registry.register(createMockTool('readFile'));
|
|
40
|
+
registry.register(createMockTool('editFile'));
|
|
41
|
+
registry.register(createMockTool('search'));
|
|
42
|
+
assert.strictEqual(registry.has('readFile'), true);
|
|
43
|
+
assert.strictEqual(registry.has('editFile'), true);
|
|
44
|
+
assert.strictEqual(registry.has('search'), true);
|
|
45
|
+
});
|
|
46
|
+
it('should throw ToolError on duplicate name', () => {
|
|
47
|
+
registry.register(createMockTool('readFile'));
|
|
48
|
+
assert.throws(() => registry.register(createMockTool('readFile')), (err) => {
|
|
49
|
+
assert.ok(err instanceof ToolError);
|
|
50
|
+
assert.strictEqual(err.code, 'INVALID_INPUT');
|
|
51
|
+
assert.strictEqual(err.toolName, 'readFile');
|
|
52
|
+
assert.ok(err.message.includes('readFile'));
|
|
53
|
+
return true;
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
it('should allow registering after unregistering the same name', () => {
|
|
57
|
+
registry.register(createMockTool('readFile', 'Version 1'));
|
|
58
|
+
registry.unregister('readFile');
|
|
59
|
+
registry.register(createMockTool('readFile', 'Version 2'));
|
|
60
|
+
const tool = registry.get('readFile');
|
|
61
|
+
assert.strictEqual(tool?.description, 'Version 2');
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
describe('get', () => {
|
|
65
|
+
it('should return the registered tool', () => {
|
|
66
|
+
const tool = createMockTool('readFile');
|
|
67
|
+
registry.register(tool);
|
|
68
|
+
const result = registry.get('readFile');
|
|
69
|
+
assert.strictEqual(result, tool);
|
|
70
|
+
});
|
|
71
|
+
it('should return undefined for unregistered name', () => {
|
|
72
|
+
const result = registry.get('nonexistent');
|
|
73
|
+
assert.strictEqual(result, undefined);
|
|
74
|
+
});
|
|
75
|
+
it('should return undefined after unregistering', () => {
|
|
76
|
+
registry.register(createMockTool('readFile'));
|
|
77
|
+
registry.unregister('readFile');
|
|
78
|
+
assert.strictEqual(registry.get('readFile'), undefined);
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
describe('has', () => {
|
|
82
|
+
it('should return true for registered tool', () => {
|
|
83
|
+
registry.register(createMockTool('readFile'));
|
|
84
|
+
assert.strictEqual(registry.has('readFile'), true);
|
|
85
|
+
});
|
|
86
|
+
it('should return false for unregistered name', () => {
|
|
87
|
+
assert.strictEqual(registry.has('nonexistent'), false);
|
|
88
|
+
});
|
|
89
|
+
it('should return false after clear', () => {
|
|
90
|
+
registry.register(createMockTool('readFile'));
|
|
91
|
+
registry.clear();
|
|
92
|
+
assert.strictEqual(registry.has('readFile'), false);
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
describe('list', () => {
|
|
96
|
+
it('should return empty array when no tools registered', () => {
|
|
97
|
+
const tools = registry.list();
|
|
98
|
+
assert.deepStrictEqual(tools, []);
|
|
99
|
+
});
|
|
100
|
+
it('should return all registered tools', () => {
|
|
101
|
+
const tool1 = createMockTool('readFile');
|
|
102
|
+
const tool2 = createMockTool('editFile');
|
|
103
|
+
registry.register(tool1);
|
|
104
|
+
registry.register(tool2);
|
|
105
|
+
const tools = registry.list();
|
|
106
|
+
assert.strictEqual(tools.length, 2);
|
|
107
|
+
assert.ok(tools.includes(tool1));
|
|
108
|
+
assert.ok(tools.includes(tool2));
|
|
109
|
+
});
|
|
110
|
+
it('should not include unregistered tools', () => {
|
|
111
|
+
registry.register(createMockTool('readFile'));
|
|
112
|
+
registry.register(createMockTool('editFile'));
|
|
113
|
+
registry.unregister('readFile');
|
|
114
|
+
const tools = registry.list();
|
|
115
|
+
assert.strictEqual(tools.length, 1);
|
|
116
|
+
assert.strictEqual(tools[0].name, 'editFile');
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
describe('getDefinitions', () => {
|
|
120
|
+
it('should return empty array when no tools registered', () => {
|
|
121
|
+
const defs = registry.getDefinitions();
|
|
122
|
+
assert.deepStrictEqual(defs, []);
|
|
123
|
+
});
|
|
124
|
+
it('should return OpenAI-compatible definitions for all tools', () => {
|
|
125
|
+
registry.register(createMockTool('readFile', 'Read a file'));
|
|
126
|
+
registry.register(createMockTool('search', 'Search the codebase'));
|
|
127
|
+
const defs = registry.getDefinitions();
|
|
128
|
+
assert.strictEqual(defs.length, 2);
|
|
129
|
+
for (const def of defs) {
|
|
130
|
+
assert.strictEqual(def.type, 'function');
|
|
131
|
+
assert.ok(typeof def.function.name === 'string');
|
|
132
|
+
assert.ok(typeof def.function.description === 'string');
|
|
133
|
+
assert.ok(typeof def.function.parameters === 'object');
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
it('should map tool names to function names', () => {
|
|
137
|
+
registry.register(createMockTool('readFile'));
|
|
138
|
+
const defs = registry.getDefinitions();
|
|
139
|
+
assert.strictEqual(defs[0].function.name, 'readFile');
|
|
140
|
+
});
|
|
141
|
+
it('should map tool descriptions to function descriptions', () => {
|
|
142
|
+
registry.register(createMockTool('readFile', 'Read a file from disk'));
|
|
143
|
+
const defs = registry.getDefinitions();
|
|
144
|
+
assert.strictEqual(defs[0].function.description, 'Read a file from disk');
|
|
145
|
+
});
|
|
146
|
+
it('should map tool inputSchema to function parameters', () => {
|
|
147
|
+
const tool = createMockTool('readFile');
|
|
148
|
+
registry.register(tool);
|
|
149
|
+
const defs = registry.getDefinitions();
|
|
150
|
+
assert.deepStrictEqual(defs[0].function.parameters, tool.inputSchema);
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
describe('unregister', () => {
|
|
154
|
+
it('should return true when tool is removed', () => {
|
|
155
|
+
registry.register(createMockTool('readFile'));
|
|
156
|
+
const result = registry.unregister('readFile');
|
|
157
|
+
assert.strictEqual(result, true);
|
|
158
|
+
});
|
|
159
|
+
it('should return false when tool is not found', () => {
|
|
160
|
+
const result = registry.unregister('nonexistent');
|
|
161
|
+
assert.strictEqual(result, false);
|
|
162
|
+
});
|
|
163
|
+
it('should actually remove the tool', () => {
|
|
164
|
+
registry.register(createMockTool('readFile'));
|
|
165
|
+
registry.unregister('readFile');
|
|
166
|
+
assert.strictEqual(registry.has('readFile'), false);
|
|
167
|
+
assert.strictEqual(registry.get('readFile'), undefined);
|
|
168
|
+
});
|
|
169
|
+
it('should not affect other registered tools', () => {
|
|
170
|
+
registry.register(createMockTool('readFile'));
|
|
171
|
+
registry.register(createMockTool('editFile'));
|
|
172
|
+
registry.unregister('readFile');
|
|
173
|
+
assert.strictEqual(registry.has('editFile'), true);
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
describe('clear', () => {
|
|
177
|
+
it('should remove all tools', () => {
|
|
178
|
+
registry.register(createMockTool('readFile'));
|
|
179
|
+
registry.register(createMockTool('editFile'));
|
|
180
|
+
registry.register(createMockTool('search'));
|
|
181
|
+
registry.clear();
|
|
182
|
+
assert.deepStrictEqual(registry.list(), []);
|
|
183
|
+
assert.strictEqual(registry.has('readFile'), false);
|
|
184
|
+
assert.strictEqual(registry.has('editFile'), false);
|
|
185
|
+
assert.strictEqual(registry.has('search'), false);
|
|
186
|
+
});
|
|
187
|
+
it('should allow re-registering after clear', () => {
|
|
188
|
+
registry.register(createMockTool('readFile'));
|
|
189
|
+
registry.clear();
|
|
190
|
+
registry.register(createMockTool('readFile'));
|
|
191
|
+
assert.strictEqual(registry.has('readFile'), true);
|
|
192
|
+
});
|
|
193
|
+
it('should be safe to call on empty registry', () => {
|
|
194
|
+
registry.clear();
|
|
195
|
+
assert.deepStrictEqual(registry.list(), []);
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
//# sourceMappingURL=registry.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.test.js","sourceRoot":"","sources":["../../src/tools/registry.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Suite Integration Tests
|
|
3
|
+
*
|
|
4
|
+
* Verifies the full tool abstraction layer works together:
|
|
5
|
+
* - All CLI tools conform to the Tool interface
|
|
6
|
+
* - All tools register without conflicts
|
|
7
|
+
* - createDefaultRegistry() wires everything correctly
|
|
8
|
+
* - Tool definitions produce valid OpenAI function calling schemas
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=suite.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suite.test.d.ts","sourceRoot":"","sources":["../../src/tools/suite.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Suite Integration Tests
|
|
3
|
+
*
|
|
4
|
+
* Verifies the full tool abstraction layer works together:
|
|
5
|
+
* - All CLI tools conform to the Tool interface
|
|
6
|
+
* - All tools register without conflicts
|
|
7
|
+
* - createDefaultRegistry() wires everything correctly
|
|
8
|
+
* - Tool definitions produce valid OpenAI function calling schemas
|
|
9
|
+
*/
|
|
10
|
+
import { describe, it } from 'node:test';
|
|
11
|
+
import assert from 'node:assert/strict';
|
|
12
|
+
import { readFileTool } from './cli/readFile.js';
|
|
13
|
+
import { editFileTool } from './cli/editFile.js';
|
|
14
|
+
import { searchTool } from './cli/search.js';
|
|
15
|
+
import { terminalTool } from './cli/terminal.js';
|
|
16
|
+
import { beadsTool } from './cli/beads.js';
|
|
17
|
+
import { subagentTool } from './cli/subagent.js';
|
|
18
|
+
import { ToolRegistry } from './registry.js';
|
|
19
|
+
import { toToolDefinition } from './interface.js';
|
|
20
|
+
import { createDefaultRegistry } from './index.js';
|
|
21
|
+
const ALL_TOOLS = [readFileTool, editFileTool, searchTool, terminalTool, beadsTool, subagentTool];
|
|
22
|
+
const EXPECTED_NAMES = ['readFile', 'editFile', 'search', 'terminal', 'beads', 'subagent'];
|
|
23
|
+
describe('Tool suite integration', () => {
|
|
24
|
+
describe('Tool interface conformance', () => {
|
|
25
|
+
for (const tool of ALL_TOOLS) {
|
|
26
|
+
it(`${tool.name} has a string name`, () => {
|
|
27
|
+
assert.equal(typeof tool.name, 'string');
|
|
28
|
+
assert.ok(tool.name.length > 0);
|
|
29
|
+
});
|
|
30
|
+
it(`${tool.name} has a string description`, () => {
|
|
31
|
+
assert.equal(typeof tool.description, 'string');
|
|
32
|
+
assert.ok(tool.description.length > 0);
|
|
33
|
+
});
|
|
34
|
+
it(`${tool.name} has an inputSchema with type "object"`, () => {
|
|
35
|
+
assert.ok(tool.inputSchema);
|
|
36
|
+
assert.equal(tool.inputSchema.type, 'object');
|
|
37
|
+
});
|
|
38
|
+
it(`${tool.name} has an execute function`, () => {
|
|
39
|
+
assert.equal(typeof tool.execute, 'function');
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
describe('ToolRegistry — no conflicts', () => {
|
|
44
|
+
it('should register all 6 CLI tools without error', () => {
|
|
45
|
+
const registry = new ToolRegistry();
|
|
46
|
+
for (const tool of ALL_TOOLS) {
|
|
47
|
+
registry.register(tool);
|
|
48
|
+
}
|
|
49
|
+
assert.equal(registry.list().length, 6);
|
|
50
|
+
});
|
|
51
|
+
it('should have unique names across all tools', () => {
|
|
52
|
+
const names = ALL_TOOLS.map((t) => t.name);
|
|
53
|
+
const unique = new Set(names);
|
|
54
|
+
assert.equal(unique.size, names.length, `Duplicate names found: ${names}`);
|
|
55
|
+
});
|
|
56
|
+
it('should contain all expected tool names', () => {
|
|
57
|
+
const names = ALL_TOOLS.map((t) => t.name);
|
|
58
|
+
for (const expected of EXPECTED_NAMES) {
|
|
59
|
+
assert.ok(names.includes(expected), `Missing tool: ${expected}`);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
describe('createDefaultRegistry()', () => {
|
|
64
|
+
it('should return a ToolRegistry', () => {
|
|
65
|
+
const registry = createDefaultRegistry();
|
|
66
|
+
assert.ok(registry instanceof ToolRegistry);
|
|
67
|
+
});
|
|
68
|
+
it('should contain all 6 built-in tools', () => {
|
|
69
|
+
const registry = createDefaultRegistry();
|
|
70
|
+
assert.equal(registry.list().length, 6);
|
|
71
|
+
});
|
|
72
|
+
it('should contain each expected tool by name', () => {
|
|
73
|
+
const registry = createDefaultRegistry();
|
|
74
|
+
for (const name of EXPECTED_NAMES) {
|
|
75
|
+
assert.ok(registry.has(name), `Registry missing tool: ${name}`);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
describe('getDefinitions() — OpenAI function calling schemas', () => {
|
|
80
|
+
it('should return 6 definitions', () => {
|
|
81
|
+
const registry = createDefaultRegistry();
|
|
82
|
+
const defs = registry.getDefinitions();
|
|
83
|
+
assert.equal(defs.length, 6);
|
|
84
|
+
});
|
|
85
|
+
it('should produce valid function definitions for each tool', () => {
|
|
86
|
+
const registry = createDefaultRegistry();
|
|
87
|
+
const defs = registry.getDefinitions();
|
|
88
|
+
for (const def of defs) {
|
|
89
|
+
assert.equal(def.type, 'function');
|
|
90
|
+
assert.ok(def.function, 'Missing function property');
|
|
91
|
+
assert.equal(typeof def.function.name, 'string');
|
|
92
|
+
assert.ok(def.function.name.length > 0, 'Empty function name');
|
|
93
|
+
assert.equal(typeof def.function.description, 'string');
|
|
94
|
+
assert.ok(def.function.description.length > 0, 'Empty function description');
|
|
95
|
+
assert.ok(def.function.parameters, 'Missing parameters');
|
|
96
|
+
assert.equal(def.function.parameters.type, 'object', 'Parameters must be type "object"');
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
it('should match tool names in definitions', () => {
|
|
100
|
+
const registry = createDefaultRegistry();
|
|
101
|
+
const defs = registry.getDefinitions();
|
|
102
|
+
const defNames = defs.map((d) => d.function.name).sort();
|
|
103
|
+
const expected = [...EXPECTED_NAMES].sort();
|
|
104
|
+
assert.deepEqual(defNames, expected);
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
describe('toToolDefinition() — individual tools', () => {
|
|
108
|
+
for (const tool of ALL_TOOLS) {
|
|
109
|
+
it(`toToolDefinition(${tool.name}) produces valid definition`, () => {
|
|
110
|
+
const def = toToolDefinition(tool);
|
|
111
|
+
assert.equal(def.type, 'function');
|
|
112
|
+
assert.equal(def.function.name, tool.name);
|
|
113
|
+
assert.equal(def.function.description, tool.description);
|
|
114
|
+
assert.deepEqual(def.function.parameters, tool.inputSchema);
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
//# sourceMappingURL=suite.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suite.test.js","sourceRoot":"","sources":["../../src/tools/suite.test.ts"],"names":[],"mappings":"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"}
|