84 lines
2.0 KiB
Markdown
84 lines
2.0 KiB
Markdown
# KB Configuration
|
|
|
|
Configuration directory for Knowledge Base project using Nickel schemas.
|
|
|
|
## Structure
|
|
|
|
```
|
|
.kb-config/
|
|
├── README.md # This file
|
|
├── core/ # Core KB configuration
|
|
│ └── kb.ncl # Main KB config
|
|
├── platform/ # Platform-specific configs
|
|
│ ├── dev.ncl # Development mode
|
|
│ ├── prod.ncl # Production mode
|
|
│ └── test.ncl # Testing mode
|
|
└── targets/ # Target-specific configs (generated)
|
|
├── kb-cli.json
|
|
├── kb-mcp.json
|
|
└── kb-core.json
|
|
```
|
|
|
|
## Pattern
|
|
|
|
Follows the typedialog + provisioning pattern:
|
|
|
|
1. **Schemas** define types and contracts (`schemas/kb/`)
|
|
2. **Defaults** provide base values
|
|
3. **Mode overlays** adjust for environment (dev/prod/test)
|
|
4. **User customization** overrides for specific needs
|
|
5. **Composition** merges layers using Nickel helpers
|
|
|
|
## Usage
|
|
|
|
```bash
|
|
# Validate configuration
|
|
just nickel::validate .kb-config/core/kb.ncl
|
|
|
|
# Export to JSON for targets
|
|
nickel export --format json .kb-config/core/kb.ncl > .kb-config/targets/kb-core.json
|
|
|
|
# Use in Rust
|
|
let config = KbConfig::from_file(".kb-config/targets/kb-core.json")?;
|
|
```
|
|
|
|
## Modes
|
|
|
|
### Development (`dev.ncl`)
|
|
- Filesystem storage only
|
|
- Local embeddings (fastembed)
|
|
- Debug logging
|
|
- Fast iteration
|
|
|
|
### Production (`prod.ncl`)
|
|
- Hybrid storage (filesystem + SurrealDB)
|
|
- Cloud embeddings (OpenAI/Claude)
|
|
- Production logging
|
|
- Performance optimized
|
|
|
|
### Testing (`test.ncl`)
|
|
- In-memory storage
|
|
- No embeddings
|
|
- Verbose logging
|
|
- Test fixtures
|
|
|
|
## Configuration Layers
|
|
|
|
```
|
|
Base Schema (contracts.ncl)
|
|
↓
|
|
Default Values (defaults.ncl)
|
|
↓
|
|
Mode Overlay (dev/prod/test)
|
|
↓
|
|
User Customization (kb.ncl)
|
|
↓
|
|
Exported JSON (targets/*.json)
|
|
```
|
|
|
|
## See Also
|
|
|
|
- [Nickel Schemas](../schemas/kb/) - Type definitions
|
|
- [Configuration Guide](../docs/config/overview.md) - User documentation
|
|
- [ADR-001: Nickel vs TOML](../docs/architecture/adrs/001-nickel-vs-toml.md) - Decision rationale
|