60 lines · 2.3 KB · Zig
RawDownload
const std = @import("std");const config_runtime = @import("../config/config_runtime.zig");const devbox_executor = @import("../execution/devbox_executor.zig");const background_process_provider = @import(    "../execution/background_process_provider.zig",);const gateway_provider = @import("../gateway/gateway_provider.zig");const host = @import("../hosts/host.zig");const mode_registry = @import("../modes/mode_registry.zig");const permission_auto_classifier = @import("../permissions/auto_classifier.zig");const prompt_policy = @import("../config/prompt_policy.zig");const context_contract = @import("../workspace/context_contract.zig"); const Allocator = std.mem.Allocator; pub const Config = struct {    default_model: []const u8,    default_agent_step_limit: usize,    gateway_retry_count: usize,    gateway_chat_url: []const u8,    gateway_models_path: []const u8,    gateway_provider: gateway_provider.Provider,    background_process_provider: background_process_provider.Provider =        background_process_provider.unavailable_provider,    secret_store: host.SecretStore,    prompt_policy: prompt_policy.Policy,    ignored_list_entries: []const []const u8,    max_list_entries: usize,    max_read_file_bytes: usize,    max_read_file_lines: usize,    max_read_file_line_len: usize,    max_command_output_bytes: usize,    max_tool_result_bytes: usize,    max_history_turns: usize,    context_registry: context_contract.Registry,    mode_registry: mode_registry.Registry,    devbox_provider: ?devbox_executor.Provider = null,    permission_reviewer_provider: ?permission_auto_classifier.Provider = null,    model_override: ?[]const u8 = null,    credential_override: ?[]const u8 = null,    home_override: ?[]const u8 = null,    workspace_root_override: ?[]const u8 = null,    log_file: ?[]const u8 = null,    context_limit_overrides: []const config_runtime.context_limits.Override = &.{},    additional_directories: []const []const u8 = &.{},    saved_directories_suppressed: bool = false,    allow_acp_mcp: bool = true,    allow_native_tools: bool = true,}; pub const RunFn = *const fn (?*anyopaque, Allocator, Config) anyerror!void; pub const Runner = struct {    context: ?*anyopaque = null,    run_fn: RunFn,     pub fn run(self: Runner, alloc: Allocator, cfg: Config) !void {        return self.run_fn(self.context, alloc, cfg);    }};