Overview
The ResolvedConfig interface represents the fully resolved configuration used at runtime. It’s created by merging user-provided configuration (DocbotUserConfig) with default values. All fields are required and guaranteed to be present.
Import
import type { ResolvedConfig } from "docbot/config"
import { loadConfig } from "docbot/config"
Interface definition
interface ResolvedConfig {
projectSlug : string
qdrant : {
url : string
manifestPath : string
collections : { docs : string ; code : string }
}
models : {
planning : string
planningHeavy : string
prose : string
fast : string
nano : string
context : string
embedding : string
embeddingLarge : string
}
agents : {
discoveryBudget : number
}
server : {
port : number
}
paths : {
cacheDir : string
manifest : string
docs ?: string
codebase ?: string []
}
}
Fields
Sanitized project identifier used for collection naming. Default: Sanitized from package.json name field
Qdrant vector database configuration Qdrant server URL. Default: "http://127.0.0.1:6333"
Path to the manifest file that tracks indexed files. Default: ".docbot/manifest.json"
Collection names for vector storage Collection name for documentation embeddings. Default: docbot_{projectSlug}_docs
Collection name for code embeddings. Default: docbot_{projectSlug}_code
Resolved model identifiers for all AI operations Model for planning and orchestration. Default: "openai/gpt-5.2"
Model for complex planning tasks. Default: "anthropic/claude-opus-4.5"
Model for generating documentation content. Default: "anthropic/claude-sonnet-4.5"
Fast model for quick operations. Default: "openai/gpt-5.2"
Lightweight model for simple tasks. Default: "google/gemini-3-flash"
Model for long-context analysis operations. Default: "google/gemini-3-pro-preview"
Model for generating embeddings for semantic search. Default: "openai/text-embedding-3-small"
Model for generating high-quality embeddings. Default: "openai/text-embedding-3-large"
Agent behavior configuration Maximum number of discovery iterations for file exploration. Default: 6
Server configuration Port number for the development server. Default: 3070
Runtime paths for cache, manifest, and optional user-configured paths Directory for caching temporary files. Typically: ".docbot"
Full path to the manifest file. Typically: ".docbot/manifest.json"
Path to documentation output directory (if configured).
Array of paths to source code directories (if configured).
Loading configuration
loadConfig
Loads and resolves configuration from the project:
function loadConfig ( options ?: LoadConfigOptions ) : Promise < ResolvedConfig >
import { loadConfig } from "docbot/config"
// Load from current directory
const config = await loadConfig ()
// Load from specific directory
const config = await loadConfig ({ cwd: "/path/to/project" })
// Access resolved values
console . log ( config . projectSlug )
console . log ( config . models . planning )
console . log ( config . qdrant . collections . code )
Default values
The following constants define the default configuration:
DEFAULT_MODELS
const DEFAULT_MODELS = {
context: "google/gemini-3-pro-preview" ,
embedding: "openai/text-embedding-3-small" ,
embeddingLarge: "openai/text-embedding-3-large" ,
fast: "openai/gpt-5.2" ,
nano: "google/gemini-3-flash" ,
planning: "openai/gpt-5.2" ,
planningHeavy: "anthropic/claude-opus-4.5" ,
prose: "anthropic/claude-sonnet-4.5" ,
} as const
DEFAULT_AGENTS
const DEFAULT_AGENTS = {
discoveryBudget: 6 ,
} as const
DEFAULT_QDRANT_URL
const DEFAULT_QDRANT_URL = "http://127.0.0.1:6333"
DEFAULT_SERVER_PORT
const DEFAULT_SERVER_PORT = 3070
Utility functions
makeCollectionNames
Generates default collection names from a project slug:
function makeCollectionNames ( slug : string ) : {
code : string
docs : string
}
import { makeCollectionNames } from "docbot/config"
const collections = makeCollectionNames ( "my-project" )
// {
// code: "docbot_my-project_code",
// docs: "docbot_my-project_docs"
// }
sanitizeSlug
Sanitizes a string for use as a project slug:
function sanitizeSlug ( name : string ) : string
Converts to lowercase, replaces non-alphanumeric characters (except hyphens) with hyphens, and removes leading/trailing hyphens.
import { sanitizeSlug } from "docbot/config"
sanitizeSlug ( "My Project Name!" )
// "my-project-name"
sanitizeSlug ( "@company/package-name" )
// "company-package-name"
sanitizeSlug ( "Test___Project" )
// "test-project"
findProjectRoot
Finds the project root directory by searching for package.json:
function findProjectRoot ( startDir ?: string ) : string | null
import { findProjectRoot } from "docbot/config"
const root = findProjectRoot ()
if ( root ) {
console . log ( "Project root:" , root )
}
Usage examples
Accessing configuration in code
import { loadConfig } from "docbot/config"
const config = await loadConfig ()
// Use model configuration
const planningModel = config . models . planning
// Access Qdrant settings
const qdrantUrl = config . qdrant . url
const codeCollection = config . qdrant . collections . code
// Check agent settings
const maxIterations = config . agents . discoveryBudget
Custom configuration with overrides
import { loadConfig , DEFAULT_MODELS } from "docbot/config"
const config = await loadConfig ()
// Merge with custom overrides
const customConfig = {
... config ,
models: {
... config . models ,
planning: "openai/gpt-4o" ,
},
}
Validating resolved configuration
import type { ResolvedConfig } from "docbot/config"
import { loadConfig } from "docbot/config"
function validateConfig ( config : ResolvedConfig ) : boolean {
// All fields are guaranteed to exist
return (
config . projectSlug . length > 0 &&
config . qdrant . url . startsWith ( "http" ) &&
config . models . planning . includes ( "/" ) &&
config . agents . discoveryBudget > 0 &&
config . server . port > 0 &&
config . server . port <= 65535
)
}
const config = await loadConfig ()
if ( validateConfig ( config )) {
console . log ( "Configuration is valid" )
}