diff --git a/src/agent/SlashCommand.zig b/src/agent/SlashCommand.zig index 7768a3e0..5a08ff45 100644 --- a/src/agent/SlashCommand.zig +++ b/src/agent/SlashCommand.zig @@ -367,6 +367,7 @@ fn lookupFieldType(schema: *const SchemaInfo, key: []const u8) FieldType { // ---------- tests ---------- const testing = std.testing; +const ToolExecutor = @import("ToolExecutor.zig"); const ParsedTest = struct { tool_name: []const u8, @@ -374,14 +375,7 @@ const ParsedTest = struct { }; fn parse(arena: std.mem.Allocator, input: []const u8) !ParsedTest { - const tools = try arena.alloc(zenai.provider.Tool, browser_tools.tool_defs.len); - for (browser_tools.tool_defs, 0..) |td, i| { - tools[i] = .{ - .name = td.name, - .description = td.description, - .parameters = try std.json.parseFromSliceLeaky(std.json.Value, arena, td.input_schema, .{}), - }; - } + const tools = try ToolExecutor.buildTools(arena); const schemas = try buildSchemas(arena, tools); const split = splitNameRest(input) orelse return error.MissingName; const schema = findSchema(schemas, split.name) orelse return error.UnknownTool; diff --git a/src/agent/ToolExecutor.zig b/src/agent/ToolExecutor.zig index 18f446a8..8c977ec1 100644 --- a/src/agent/ToolExecutor.zig +++ b/src/agent/ToolExecutor.zig @@ -66,7 +66,7 @@ pub fn init(allocator: std.mem.Allocator, app: *App) !*ToolExecutor { return self; } -fn buildTools(arena: std.mem.Allocator) ![]const zenai.provider.Tool { +pub fn buildTools(arena: std.mem.Allocator) ![]const zenai.provider.Tool { const tools = try arena.alloc(zenai.provider.Tool, browser_tools.tool_defs.len); for (browser_tools.tool_defs, 0..) |t, i| { const parsed = try std.json.parseFromSliceLeaky(std.json.Value, arena, t.input_schema, .{});