llm-advanced-tools 0.1.0
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 +402 -0
- package/dist/adapters/index.d.ts +3 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +8 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/openai.d.ts +38 -0
- package/dist/adapters/openai.d.ts.map +1 -0
- package/dist/adapters/openai.js +170 -0
- package/dist/adapters/openai.js.map +1 -0
- package/dist/adapters/vercel-ai.d.ts +46 -0
- package/dist/adapters/vercel-ai.d.ts.map +1 -0
- package/dist/adapters/vercel-ai.js +228 -0
- package/dist/adapters/vercel-ai.js.map +1 -0
- package/dist/core/client.d.ts +36 -0
- package/dist/core/client.d.ts.map +1 -0
- package/dist/core/client.js +188 -0
- package/dist/core/client.js.map +1 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +8 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/registry.d.ts +64 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +169 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/executor/base.d.ts +35 -0
- package/dist/executor/base.d.ts.map +1 -0
- package/dist/executor/base.js +85 -0
- package/dist/executor/base.js.map +1 -0
- package/dist/executor/index.d.ts +3 -0
- package/dist/executor/index.d.ts.map +1 -0
- package/dist/executor/index.js +9 -0
- package/dist/executor/index.js.map +1 -0
- package/dist/executor/vm.d.ts +18 -0
- package/dist/executor/vm.d.ts.map +1 -0
- package/dist/executor/vm.js +106 -0
- package/dist/executor/vm.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/search/base.d.ts +32 -0
- package/dist/search/base.d.ts.map +1 -0
- package/dist/search/base.js +28 -0
- package/dist/search/base.js.map +1 -0
- package/dist/search/bm25.d.ts +16 -0
- package/dist/search/bm25.d.ts.map +1 -0
- package/dist/search/bm25.js +84 -0
- package/dist/search/bm25.js.map +1 -0
- package/dist/search/index.d.ts +4 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +10 -0
- package/dist/search/index.js.map +1 -0
- package/dist/search/regex.d.ts +12 -0
- package/dist/search/regex.d.ts.map +1 -0
- package/dist/search/regex.js +57 -0
- package/dist/search/regex.js.map +1 -0
- package/dist/types/index.d.ts +186 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +52 -0
- package/plan.md +576 -0
- package/src/adapters/index.ts +2 -0
- package/src/adapters/openai.ts +195 -0
- package/src/adapters/vercel-ai.ts +270 -0
- package/src/core/client.ts +232 -0
- package/src/core/index.ts +2 -0
- package/src/core/registry.ts +198 -0
- package/src/executor/base.ts +122 -0
- package/src/executor/index.ts +2 -0
- package/src/executor/vm.ts +87 -0
- package/src/index.ts +26 -0
- package/src/search/base.ts +63 -0
- package/src/search/bm25.ts +64 -0
- package/src/search/index.ts +3 -0
- package/src/search/regex.ts +66 -0
- package/src/types/index.ts +221 -0
- package/test-advanced.ts +212 -0
- package/test-simple.ts +91 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vercel-ai.d.ts","sourceRoot":"","sources":["../../src/adapters/vercel-ai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,aAAa,EAAkB,MAAM,IAAI,CAAC;AAEjE,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,UAAU,EAEX,MAAM,UAAU,CAAC;AAElB;;;GAGG;AACH,qBAAa,eAAgB,YAAW,eAAe;IACrD,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAOzC;IAEF,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,YAAY,CAAS;IAE7B;;;OAGG;gBACS,KAAK,EAAE,aAAa,EAAE,YAAY,SAAW;IAKzD;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAyBrD;;OAEG;IACH,OAAO,CAAC,eAAe;IAsBvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAsDvB;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA6EvD;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,QAAQ,EAAE;IAQ5C;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,GAAG;IAK7C;;OAEG;IACH,OAAO,CAAC,eAAe;CAiBxB"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VercelAIAdapter = void 0;
|
|
4
|
+
const ai_1 = require("ai");
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
/**
|
|
7
|
+
* Vercel AI SDK adapter
|
|
8
|
+
* Works with any provider supported by AI SDK (OpenAI, Anthropic, Google, etc.)
|
|
9
|
+
*/
|
|
10
|
+
class VercelAIAdapter {
|
|
11
|
+
/**
|
|
12
|
+
* @param model - AI SDK language model (e.g., from @ai-sdk/openai, @ai-sdk/anthropic)
|
|
13
|
+
* @param providerName - Optional provider name for identification
|
|
14
|
+
*/
|
|
15
|
+
constructor(model, providerName = 'ai-sdk') {
|
|
16
|
+
this.name = 'vercel-ai';
|
|
17
|
+
this.capabilities = {
|
|
18
|
+
supportsNativeToolSearch: false,
|
|
19
|
+
supportsNativeCodeExecution: false,
|
|
20
|
+
supportsNativeExamples: false,
|
|
21
|
+
supportsStreaming: true,
|
|
22
|
+
supportsParallelToolCalls: true,
|
|
23
|
+
maxTokens: 128000 // Depends on model, using safe default
|
|
24
|
+
};
|
|
25
|
+
this.model = model;
|
|
26
|
+
this.providerName = providerName;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Format a tool definition for AI SDK's format
|
|
30
|
+
*/
|
|
31
|
+
formatTool(tool) {
|
|
32
|
+
// AI SDK uses Zod schemas, but also accepts JSON schema
|
|
33
|
+
let parameters = tool.inputSchema;
|
|
34
|
+
// If it's already a Zod schema, use it directly
|
|
35
|
+
if (typeof parameters === 'object' && 'parse' in parameters) {
|
|
36
|
+
parameters = tool.inputSchema;
|
|
37
|
+
}
|
|
38
|
+
// Add examples to description for better accuracy
|
|
39
|
+
let description = tool.description;
|
|
40
|
+
if (tool.inputExamples && tool.inputExamples.length > 0) {
|
|
41
|
+
description += '\n\nExample usage:';
|
|
42
|
+
tool.inputExamples.forEach((example, i) => {
|
|
43
|
+
description += `\n${i + 1}. ${JSON.stringify(example)}`;
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
// AI SDK CoreTool format
|
|
47
|
+
return {
|
|
48
|
+
description,
|
|
49
|
+
parameters
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Convert our Message format to AI SDK's format
|
|
54
|
+
*/
|
|
55
|
+
convertMessages(messages) {
|
|
56
|
+
const converted = [];
|
|
57
|
+
for (const msg of messages) {
|
|
58
|
+
if (msg.role === 'tool') {
|
|
59
|
+
// Tool results are handled differently in AI SDK
|
|
60
|
+
// They're included in the tool execution flow
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
converted.push({
|
|
64
|
+
role: msg.role,
|
|
65
|
+
content: typeof msg.content === 'string' ? msg.content : JSON.stringify(msg.content)
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
return converted;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Convert JSON Schema to Zod schema (simplified)
|
|
72
|
+
*/
|
|
73
|
+
jsonSchemaToZod(schema) {
|
|
74
|
+
// If it's already a Zod schema, return it
|
|
75
|
+
if (schema && typeof schema === 'object' && 'parse' in schema) {
|
|
76
|
+
return schema;
|
|
77
|
+
}
|
|
78
|
+
// Simple JSON Schema to Zod conversion
|
|
79
|
+
// This is a simplified version - for production, use a proper converter
|
|
80
|
+
if (schema.type === 'object') {
|
|
81
|
+
const shape = {};
|
|
82
|
+
const required = schema.required || [];
|
|
83
|
+
for (const [key, value] of Object.entries(schema.properties || {})) {
|
|
84
|
+
const prop = value;
|
|
85
|
+
let zodType;
|
|
86
|
+
switch (prop.type) {
|
|
87
|
+
case 'string':
|
|
88
|
+
zodType = zod_1.z.string();
|
|
89
|
+
if (prop.enum) {
|
|
90
|
+
zodType = zod_1.z.enum(prop.enum);
|
|
91
|
+
}
|
|
92
|
+
break;
|
|
93
|
+
case 'number':
|
|
94
|
+
zodType = zod_1.z.number();
|
|
95
|
+
break;
|
|
96
|
+
case 'boolean':
|
|
97
|
+
zodType = zod_1.z.boolean();
|
|
98
|
+
break;
|
|
99
|
+
case 'array':
|
|
100
|
+
zodType = zod_1.z.array(zod_1.z.any());
|
|
101
|
+
break;
|
|
102
|
+
default:
|
|
103
|
+
zodType = zod_1.z.any();
|
|
104
|
+
}
|
|
105
|
+
if (prop.description) {
|
|
106
|
+
zodType = zodType.describe(prop.description);
|
|
107
|
+
}
|
|
108
|
+
// Make field optional if not in required array
|
|
109
|
+
if (!required.includes(key)) {
|
|
110
|
+
zodType = zodType.optional();
|
|
111
|
+
}
|
|
112
|
+
shape[key] = zodType;
|
|
113
|
+
}
|
|
114
|
+
return zod_1.z.object(shape);
|
|
115
|
+
}
|
|
116
|
+
return zod_1.z.any();
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Create a chat completion using AI SDK
|
|
120
|
+
*/
|
|
121
|
+
async chat(request) {
|
|
122
|
+
const messages = this.convertMessages(request.messages);
|
|
123
|
+
// Convert our tools to AI SDK format using the tool() helper
|
|
124
|
+
const tools = {};
|
|
125
|
+
const toolDefinitions = request.tools?.filter(t => !t.deferLoading) || [];
|
|
126
|
+
for (const toolDef of toolDefinitions) {
|
|
127
|
+
// Add examples to description
|
|
128
|
+
let description = toolDef.description;
|
|
129
|
+
if (toolDef.inputExamples && toolDef.inputExamples.length > 0) {
|
|
130
|
+
description += '\n\nExample usage:';
|
|
131
|
+
toolDef.inputExamples.forEach((example, i) => {
|
|
132
|
+
description += `\n${i + 1}. ${JSON.stringify(example)}`;
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
// Convert schema to Zod
|
|
136
|
+
const parameters = this.jsonSchemaToZod(toolDef.inputSchema);
|
|
137
|
+
// Create the tool using AI SDK's tool() helper
|
|
138
|
+
tools[toolDef.name] = (0, ai_1.tool)({
|
|
139
|
+
description,
|
|
140
|
+
parameters,
|
|
141
|
+
execute: async (args) => {
|
|
142
|
+
try {
|
|
143
|
+
const result = await toolDef.handler(args);
|
|
144
|
+
return result;
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
throw new Error(`Tool ${toolDef.name} failed: ${error.message}`);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
// Generate text with tools
|
|
153
|
+
const result = await (0, ai_1.generateText)({
|
|
154
|
+
model: this.model,
|
|
155
|
+
messages: messages.map(m => ({
|
|
156
|
+
role: m.role,
|
|
157
|
+
content: m.content
|
|
158
|
+
})),
|
|
159
|
+
tools: Object.keys(tools).length > 0 ? tools : undefined,
|
|
160
|
+
maxTokens: request.maxTokens,
|
|
161
|
+
temperature: request.temperature
|
|
162
|
+
});
|
|
163
|
+
// Parse tool calls from result
|
|
164
|
+
const toolCalls = [];
|
|
165
|
+
if (result.toolCalls && result.toolCalls.length > 0) {
|
|
166
|
+
result.toolCalls.forEach((tc, index) => {
|
|
167
|
+
toolCalls.push({
|
|
168
|
+
id: `call_${index}`,
|
|
169
|
+
name: tc.toolName,
|
|
170
|
+
input: tc.args
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
return {
|
|
175
|
+
message: {
|
|
176
|
+
role: 'assistant',
|
|
177
|
+
content: result.text || '',
|
|
178
|
+
toolCalls
|
|
179
|
+
},
|
|
180
|
+
usage: result.usage
|
|
181
|
+
? {
|
|
182
|
+
inputTokens: result.usage.promptTokens,
|
|
183
|
+
outputTokens: result.usage.completionTokens,
|
|
184
|
+
totalTokens: result.usage.totalTokens
|
|
185
|
+
}
|
|
186
|
+
: undefined,
|
|
187
|
+
stopReason: this.mapFinishReason(result.finishReason),
|
|
188
|
+
toolCalls
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Parse tool calls from AI SDK response
|
|
193
|
+
*/
|
|
194
|
+
parseToolCalls(toolCalls) {
|
|
195
|
+
return toolCalls.map((tc, index) => ({
|
|
196
|
+
id: `call_${index}`,
|
|
197
|
+
name: tc.toolName,
|
|
198
|
+
input: tc.args
|
|
199
|
+
}));
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Format tool results for AI SDK
|
|
203
|
+
*/
|
|
204
|
+
formatToolResults(results) {
|
|
205
|
+
// AI SDK handles tool results automatically in the execute callback
|
|
206
|
+
return results;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Map AI SDK finish reason to our format
|
|
210
|
+
*/
|
|
211
|
+
mapFinishReason(reason) {
|
|
212
|
+
switch (reason) {
|
|
213
|
+
case 'stop':
|
|
214
|
+
return 'end_turn';
|
|
215
|
+
case 'length':
|
|
216
|
+
return 'max_tokens';
|
|
217
|
+
case 'tool-calls':
|
|
218
|
+
return 'tool_use';
|
|
219
|
+
case 'content-filter':
|
|
220
|
+
case 'error':
|
|
221
|
+
return 'stop_sequence';
|
|
222
|
+
default:
|
|
223
|
+
return undefined;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
exports.VercelAIAdapter = VercelAIAdapter;
|
|
228
|
+
//# sourceMappingURL=vercel-ai.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vercel-ai.js","sourceRoot":"","sources":["../../src/adapters/vercel-ai.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ClientConfig, ChatRequest, ChatResponse } from '../types';
|
|
2
|
+
import { ToolRegistry } from './registry';
|
|
3
|
+
/**
|
|
4
|
+
* Main client for provider-agnostic tool use
|
|
5
|
+
*/
|
|
6
|
+
export declare class Client {
|
|
7
|
+
private config;
|
|
8
|
+
private registry;
|
|
9
|
+
private executor?;
|
|
10
|
+
constructor(config: ClientConfig, registry?: ToolRegistry);
|
|
11
|
+
/**
|
|
12
|
+
* Get the tool registry
|
|
13
|
+
*/
|
|
14
|
+
getRegistry(): ToolRegistry;
|
|
15
|
+
/**
|
|
16
|
+
* Send a chat message
|
|
17
|
+
*/
|
|
18
|
+
chat(request: Omit<ChatRequest, 'tools'>): Promise<ChatResponse>;
|
|
19
|
+
/**
|
|
20
|
+
* Handle tool calls from LLM response
|
|
21
|
+
*/
|
|
22
|
+
private handleToolCalls;
|
|
23
|
+
/**
|
|
24
|
+
* Handle programmatic tool calling (code execution)
|
|
25
|
+
*/
|
|
26
|
+
private handleProgrammaticToolCall;
|
|
27
|
+
/**
|
|
28
|
+
* Execute tool calls
|
|
29
|
+
*/
|
|
30
|
+
private executeToolCalls;
|
|
31
|
+
/**
|
|
32
|
+
* Helper method for simple text chat
|
|
33
|
+
*/
|
|
34
|
+
ask(prompt: string, systemPrompt?: string): Promise<string>;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,WAAW,EACX,YAAY,EAIb,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C;;GAEG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,QAAQ,CAAC,CAAe;gBAEpB,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,YAAY;IASzD;;OAEG;IACH,WAAW,IAAI,YAAY;IAI3B;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IA+BtE;;OAEG;YACW,eAAe;IAiC7B;;OAEG;YACW,0BAA0B;IAsCxC;;OAEG;YACW,gBAAgB;IA2D9B;;OAEG;IACG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAoBlE"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Client = void 0;
|
|
4
|
+
const registry_1 = require("./registry");
|
|
5
|
+
const executor_1 = require("../executor");
|
|
6
|
+
/**
|
|
7
|
+
* Main client for provider-agnostic tool use
|
|
8
|
+
*/
|
|
9
|
+
class Client {
|
|
10
|
+
constructor(config, registry) {
|
|
11
|
+
this.config = config;
|
|
12
|
+
this.registry = registry || new registry_1.ToolRegistry(config.searchConfig);
|
|
13
|
+
if (config.enableProgrammaticCalling) {
|
|
14
|
+
this.executor = (0, executor_1.createDefaultExecutor)(config.executorConfig);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Get the tool registry
|
|
19
|
+
*/
|
|
20
|
+
getRegistry() {
|
|
21
|
+
return this.registry;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Send a chat message
|
|
25
|
+
*/
|
|
26
|
+
async chat(request) {
|
|
27
|
+
const messages = [...request.messages];
|
|
28
|
+
// If tool search is enabled and provider doesn't support it natively,
|
|
29
|
+
// add the tool search tool to loaded tools
|
|
30
|
+
if (this.config.enableToolSearch &&
|
|
31
|
+
!this.config.adapter.capabilities.supportsNativeToolSearch) {
|
|
32
|
+
const toolSearchTool = this.registry.createToolSearchTool();
|
|
33
|
+
this.registry.register(toolSearchTool);
|
|
34
|
+
}
|
|
35
|
+
// Get loaded tools for this request
|
|
36
|
+
const tools = this.registry.getLoadedTools();
|
|
37
|
+
// Make the request
|
|
38
|
+
const response = await this.config.adapter.chat({
|
|
39
|
+
...request,
|
|
40
|
+
messages,
|
|
41
|
+
tools
|
|
42
|
+
});
|
|
43
|
+
// Handle tool calls if any
|
|
44
|
+
if (response.toolCalls && response.toolCalls.length > 0) {
|
|
45
|
+
return this.handleToolCalls(request, response);
|
|
46
|
+
}
|
|
47
|
+
return response;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Handle tool calls from LLM response
|
|
51
|
+
*/
|
|
52
|
+
async handleToolCalls(originalRequest, response) {
|
|
53
|
+
const toolCalls = response.toolCalls;
|
|
54
|
+
// Check if any tool call is for code execution
|
|
55
|
+
const codeExecutionCall = toolCalls.find(tc => tc.name === 'code_execution');
|
|
56
|
+
if (codeExecutionCall && this.executor && this.config.enableProgrammaticCalling) {
|
|
57
|
+
return this.handleProgrammaticToolCall(originalRequest, response, codeExecutionCall);
|
|
58
|
+
}
|
|
59
|
+
// Regular tool execution
|
|
60
|
+
const results = await this.executeToolCalls(toolCalls);
|
|
61
|
+
// Add tool results to messages and continue conversation
|
|
62
|
+
const messages = [
|
|
63
|
+
...originalRequest.messages,
|
|
64
|
+
response.message,
|
|
65
|
+
{
|
|
66
|
+
role: 'tool',
|
|
67
|
+
content: '',
|
|
68
|
+
toolResults: results
|
|
69
|
+
}
|
|
70
|
+
];
|
|
71
|
+
return this.chat({
|
|
72
|
+
...originalRequest,
|
|
73
|
+
messages
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Handle programmatic tool calling (code execution)
|
|
78
|
+
*/
|
|
79
|
+
async handleProgrammaticToolCall(originalRequest, response, codeCall) {
|
|
80
|
+
const code = codeCall.input.code;
|
|
81
|
+
const tools = this.registry.getLoadedTools();
|
|
82
|
+
// Execute the code with access to tools
|
|
83
|
+
const execResult = await this.executor.execute(code, tools);
|
|
84
|
+
// Create tool result message
|
|
85
|
+
const result = {
|
|
86
|
+
toolCallId: codeCall.id,
|
|
87
|
+
data: {
|
|
88
|
+
stdout: execResult.stdout,
|
|
89
|
+
returnValue: execResult.returnValue
|
|
90
|
+
},
|
|
91
|
+
error: execResult.error
|
|
92
|
+
};
|
|
93
|
+
// Continue conversation with execution result
|
|
94
|
+
const messages = [
|
|
95
|
+
...originalRequest.messages,
|
|
96
|
+
response.message,
|
|
97
|
+
{
|
|
98
|
+
role: 'tool',
|
|
99
|
+
content: '',
|
|
100
|
+
toolResults: [result]
|
|
101
|
+
}
|
|
102
|
+
];
|
|
103
|
+
return this.chat({
|
|
104
|
+
...originalRequest,
|
|
105
|
+
messages
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Execute tool calls
|
|
110
|
+
*/
|
|
111
|
+
async executeToolCalls(toolCalls) {
|
|
112
|
+
const results = [];
|
|
113
|
+
for (const call of toolCalls) {
|
|
114
|
+
const tool = this.registry.get(call.name);
|
|
115
|
+
if (!tool) {
|
|
116
|
+
results.push({
|
|
117
|
+
toolCallId: call.id,
|
|
118
|
+
error: {
|
|
119
|
+
message: `Tool "${call.name}" not found`,
|
|
120
|
+
code: 'TOOL_NOT_FOUND'
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
// Special handling for tool_search
|
|
126
|
+
if (call.name === 'tool_search') {
|
|
127
|
+
try {
|
|
128
|
+
const data = await tool.handler(call.input);
|
|
129
|
+
results.push({
|
|
130
|
+
toolCallId: call.id,
|
|
131
|
+
data
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
results.push({
|
|
136
|
+
toolCallId: call.id,
|
|
137
|
+
error: {
|
|
138
|
+
message: error.message,
|
|
139
|
+
code: 'EXECUTION_ERROR'
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
// Execute regular tool
|
|
146
|
+
try {
|
|
147
|
+
const data = await tool.handler(call.input);
|
|
148
|
+
results.push({
|
|
149
|
+
toolCallId: call.id,
|
|
150
|
+
data
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
results.push({
|
|
155
|
+
toolCallId: call.id,
|
|
156
|
+
error: {
|
|
157
|
+
message: error.message,
|
|
158
|
+
code: 'EXECUTION_ERROR',
|
|
159
|
+
details: error
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return results;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Helper method for simple text chat
|
|
168
|
+
*/
|
|
169
|
+
async ask(prompt, systemPrompt) {
|
|
170
|
+
const messages = [];
|
|
171
|
+
if (systemPrompt) {
|
|
172
|
+
messages.push({
|
|
173
|
+
role: 'system',
|
|
174
|
+
content: systemPrompt
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
messages.push({
|
|
178
|
+
role: 'user',
|
|
179
|
+
content: prompt
|
|
180
|
+
});
|
|
181
|
+
const response = await this.chat({ messages });
|
|
182
|
+
return typeof response.message.content === 'string'
|
|
183
|
+
? response.message.content
|
|
184
|
+
: JSON.stringify(response.message.content);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
exports.Client = Client;
|
|
188
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Client = exports.ToolRegistry = void 0;
|
|
4
|
+
var registry_1 = require("./registry");
|
|
5
|
+
Object.defineProperty(exports, "ToolRegistry", { enumerable: true, get: function () { return registry_1.ToolRegistry; } });
|
|
6
|
+
var client_1 = require("./client");
|
|
7
|
+
Object.defineProperty(exports, "Client", { enumerable: true, get: function () { return client_1.Client; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";;;AAAA,uCAA0C;AAAjC,wGAAA,YAAY,OAAA;AACrB,mCAAkC;AAAzB,gGAAA,MAAM,OAAA"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { ToolDefinition, SearchConfig } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Registry for managing tool definitions and discovery
|
|
4
|
+
*/
|
|
5
|
+
export declare class ToolRegistry {
|
|
6
|
+
private tools;
|
|
7
|
+
private deferredTools;
|
|
8
|
+
private loadedTools;
|
|
9
|
+
private searchStrategy;
|
|
10
|
+
constructor(searchConfig?: SearchConfig);
|
|
11
|
+
/**
|
|
12
|
+
* Register a tool
|
|
13
|
+
*/
|
|
14
|
+
register(tool: ToolDefinition): void;
|
|
15
|
+
/**
|
|
16
|
+
* Register multiple tools at once
|
|
17
|
+
*/
|
|
18
|
+
registerMany(tools: ToolDefinition[]): void;
|
|
19
|
+
/**
|
|
20
|
+
* Get a specific tool by name
|
|
21
|
+
*/
|
|
22
|
+
get(name: string): ToolDefinition | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* Load a deferred tool into active context
|
|
25
|
+
*/
|
|
26
|
+
load(name: string): ToolDefinition | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Get all currently loaded tools
|
|
29
|
+
*/
|
|
30
|
+
getLoadedTools(): ToolDefinition[];
|
|
31
|
+
/**
|
|
32
|
+
* Get all tools (including deferred)
|
|
33
|
+
*/
|
|
34
|
+
getAllTools(): ToolDefinition[];
|
|
35
|
+
/**
|
|
36
|
+
* Search for tools matching a query
|
|
37
|
+
* @param query Search query
|
|
38
|
+
* @param maxResults Maximum results to return
|
|
39
|
+
* @param loadResults Whether to automatically load found tools
|
|
40
|
+
*/
|
|
41
|
+
search(query: string, maxResults?: number, loadResults?: boolean): Promise<ToolDefinition[]>;
|
|
42
|
+
/**
|
|
43
|
+
* Clear all loaded tools (keeps registrations)
|
|
44
|
+
*/
|
|
45
|
+
clearLoaded(): void;
|
|
46
|
+
/**
|
|
47
|
+
* Unregister a tool
|
|
48
|
+
*/
|
|
49
|
+
unregister(name: string): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Get statistics about the registry
|
|
52
|
+
*/
|
|
53
|
+
getStats(): {
|
|
54
|
+
total: number;
|
|
55
|
+
loaded: number;
|
|
56
|
+
deferred: number;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Create a tool search tool definition
|
|
60
|
+
* This is a meta-tool that allows LLMs to search for other tools
|
|
61
|
+
*/
|
|
62
|
+
createToolSearchTool(): ToolDefinition;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxD;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,cAAc,CAAiB;gBAE3B,YAAY,CAAC,EAAE,YAAY;IA6BvC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAcpC;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI;IAI3C;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI7C;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAS9C;;OAEG;IACH,cAAc,IAAI,cAAc,EAAE;IAMlC;;OAEG;IACH,WAAW,IAAI,cAAc,EAAE;IAI/B;;;;;OAKG;IACG,MAAM,CACV,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,EACnB,WAAW,UAAO,GACjB,OAAO,CAAC,cAAc,EAAE,CAAC;IAa5B;;OAEG;IACH,WAAW,IAAI,IAAI;IAUnB;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAOjC;;OAEG;IACH,QAAQ,IAAI;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB;IAQD;;;OAGG;IACH,oBAAoB,IAAI,cAAc;CAgCvC"}
|