@nanocollective/nanocoder
Version:
A local-first CLI coding agent that brings the power of agentic coding tools like Claude Code and Gemini CLI to local models or controlled APIs like OpenRouter
119 lines • 3.26 kB
TypeScript
import type { TitleShape } from '../components/ui/styled-title.js';
import type { NanocoderShape, ThemePreset } from '../types/ui.js';
export type SdkProvider = 'openai-compatible' | 'google' | 'anthropic' | 'github-copilot';
export interface AIProviderConfig {
name: string;
type: string;
models: string[];
requestTimeout?: number;
socketTimeout?: number;
maxRetries?: number;
connectionPool?: {
idleTimeout?: number;
cumulativeMaxIdleTimeout?: number;
};
disableTools?: boolean;
disableToolModels?: string[];
sdkProvider?: SdkProvider;
config: {
baseURL?: string;
apiKey?: string;
headers?: Record<string, string>;
[key: string]: unknown;
};
}
export interface ProviderConfig {
name: string;
baseUrl?: string;
apiKey?: string;
models: string[];
requestTimeout?: number;
socketTimeout?: number;
maxRetries?: number;
organizationId?: string;
timeout?: number;
connectionPool?: {
idleTimeout?: number;
cumulativeMaxIdleTimeout?: number;
};
disableTools?: boolean;
disableToolModels?: string[];
headers?: Record<string, string>;
sdkProvider?: SdkProvider;
[key: string]: unknown;
}
export type CompressionMode = 'default' | 'aggressive' | 'conservative';
export interface AutoCompactConfig {
enabled: boolean;
threshold: number;
mode: CompressionMode;
notifyUser: boolean;
}
export interface AppConfig {
providers?: {
name: string;
baseUrl?: string;
apiKey?: string;
models: string[];
requestTimeout?: number;
socketTimeout?: number;
maxRetries?: number;
connectionPool?: {
idleTimeout?: number;
cumulativeMaxIdleTimeout?: number;
};
disableTools?: boolean;
disableToolModels?: string[];
sdkProvider?: SdkProvider;
[key: string]: unknown;
}[];
mcpServers?: MCPServerConfig[];
lspServers?: {
name: string;
command: string;
args?: string[];
languages: string[];
env?: Record<string, string>;
}[];
alwaysAllow?: string[];
nanocoderTools?: {
alwaysAllow?: string[];
};
autoCompact?: AutoCompactConfig;
sessions?: {
autoSave?: boolean;
saveInterval?: number;
maxSessions?: number;
maxMessages?: number;
retentionDays?: number;
directory?: string;
};
}
export interface MCPServerConfig {
name: string;
transport: 'stdio' | 'websocket' | 'http';
command?: string;
args?: string[];
env?: Record<string, string>;
url?: string;
headers?: Record<string, string>;
timeout?: number;
alwaysAllow?: string[];
description?: string;
tags?: string[];
enabled?: boolean;
source?: 'project' | 'global' | 'env';
}
export interface UserPreferences {
lastProvider?: string;
lastModel?: string;
providerModels?: {
[key in string]?: string;
};
lastUpdateCheck?: number;
selectedTheme?: ThemePreset;
trustedDirectories?: string[];
titleShape?: TitleShape;
nanocoderShape?: NanocoderShape;
}
//# sourceMappingURL=config.d.ts.map