buroventures-harald-code
Version:
Harald Code - AI-powered coding assistant CLI
132 lines (131 loc) • 4.54 kB
TypeScript
/**
* @license
* Copyright 2025 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import { MCPServerConfig, BugCommandSettings, TelemetrySettings, AuthType } from 'buroventures-harald-code-core';
import { CustomTheme } from '../ui/themes/theme.js';
export declare const SETTINGS_DIRECTORY_NAME = ".qwen";
export declare const USER_SETTINGS_DIR: string;
export declare const USER_SETTINGS_PATH: string;
export declare const DEFAULT_EXCLUDED_ENV_VARS: string[];
export declare function getSystemSettingsPath(): string;
export declare function getWorkspaceSettingsPath(workspaceDir: string): string;
export type DnsResolutionOrder = 'ipv4first' | 'verbatim';
export declare enum SettingScope {
User = "User",
Workspace = "Workspace",
System = "System"
}
export interface CheckpointingSettings {
enabled?: boolean;
}
export interface SummarizeToolOutputSettings {
tokenBudget?: number;
}
export interface AccessibilitySettings {
disableLoadingPhrases?: boolean;
}
export interface ApiKeyRotationSettings {
/** List of API keys to rotate between */
apiKeys?: string[];
/** Current active key index */
currentKeyIndex?: number;
/** Whether to enable automatic rotation on rate limits */
autoRotateOnRateLimit?: boolean;
/** Reset rotation daily (to handle daily limits) */
resetRotationDaily?: boolean;
/** Track usage per key per day */
dailyUsageTracking?: Record<string, {
date: string;
requests: number;
}>;
}
export interface Settings {
theme?: string;
customThemes?: Record<string, CustomTheme>;
selectedAuthType?: AuthType;
useExternalAuth?: boolean;
sandbox?: boolean | string;
coreTools?: string[];
excludeTools?: string[];
toolDiscoveryCommand?: string;
toolCallCommand?: string;
mcpServerCommand?: string;
mcpServers?: Record<string, MCPServerConfig>;
allowMCPServers?: string[];
excludeMCPServers?: string[];
showMemoryUsage?: boolean;
contextFileName?: string | string[];
accessibility?: AccessibilitySettings;
telemetry?: TelemetrySettings;
usageStatisticsEnabled?: boolean;
preferredEditor?: string;
bugCommand?: BugCommandSettings;
checkpointing?: CheckpointingSettings;
autoConfigureMaxOldSpaceSize?: boolean;
/** The model name to use (e.g 'gemini-9.0-pro') */
model?: string;
enableOpenAILogging?: boolean;
/** API key rotation configuration */
apiKeyRotation?: ApiKeyRotationSettings;
fileFiltering?: {
respectGitIgnore?: boolean;
respectGeminiIgnore?: boolean;
enableRecursiveFileSearch?: boolean;
};
hideWindowTitle?: boolean;
hideTips?: boolean;
hideBanner?: boolean;
maxSessionTurns?: number;
sessionTokenLimit?: number;
maxFolderItems?: number;
summarizeToolOutput?: Record<string, SummarizeToolOutputSettings>;
vimMode?: boolean;
memoryImportFormat?: 'tree' | 'flat';
ideModeFeature?: boolean;
ideMode?: boolean;
disableAutoUpdate?: boolean;
disableUpdateNag?: boolean;
memoryDiscoveryMaxDirs?: number;
excludedProjectEnvVars?: string[];
dnsResolutionOrder?: DnsResolutionOrder;
sampling_params?: Record<string, unknown>;
systemPromptMappings?: Array<{
baseUrls: string[];
modelNames: string[];
template: string;
}>;
contentGenerator?: {
timeout?: number;
maxRetries?: number;
};
}
export interface SettingsError {
message: string;
path: string;
}
export interface SettingsFile {
settings: Settings;
path: string;
}
export declare class LoadedSettings {
constructor(system: SettingsFile, user: SettingsFile, workspace: SettingsFile, errors: SettingsError[]);
readonly system: SettingsFile;
readonly user: SettingsFile;
readonly workspace: SettingsFile;
readonly errors: SettingsError[];
private _merged;
get merged(): Settings;
private computeMergedSettings;
forScope(scope: SettingScope): SettingsFile;
setValue<K extends keyof Settings>(scope: SettingScope, key: K, value: Settings[K]): void;
}
export declare function setUpCloudShellEnvironment(envFilePath: string | null): void;
export declare function loadEnvironment(settings?: Settings): void;
/**
* Loads settings from user and workspace directories.
* Project settings override user settings.
*/
export declare function loadSettings(workspaceDir: string): LoadedSettings;
export declare function saveSettings(settingsFile: SettingsFile): void;