@quatrain/config
📦 API Reference: Detailed TypeScript documentation, classes, interfaces, and methods are available in the TypeDoc API Reference for @quatrain/config ↗.
Multi-source configuration manager and registry for Quatrain applications and autonomous agent tools.
Provides seamless, zero-dependency configuration management featuring:
- Central Registry Pattern: Multi-tool isolation mirroring
Backend,Storage, andLog. - Fail-Fast Validation: Immediate
ConfigurationErrorwhen critical parameters or API credentials are missing or blank. - Multi-Source Resolution: Hierarchical priority cascading (
Memory>Environment>Object/JSON). - Sub-Scoping & Dot Notation: Clean delegation across namespaces
(e.g.,
Config.scope('odoo').requireString('apiKey')).
Installation
yarn add @quatrain/configUsage
1. Isolated Tool Configurations (Agent Gateway & Multi-Tool)
Register independent configurations for distinct third-party tools or external services without namespace collision:
import { Config } from '@quatrain/config'
// Register tool credentials
Config.addConfig('odoo', {
url: 'https://erp.example.com',
database: 'production',
apiKey: 'odoo-secret-key',
})
Config.addConfig('google-drive', {
clientId: 'gdrive-client-id',
clientSecret: 'gdrive-client-secret',
})
// Retrieve tool configurations safely
const odoo = Config.getConfig('odoo')
const odooUrl = odoo.requireString('url')
const apiKey = odoo.requireString('apiKey')
// Scoped access
const gdrive = Config.scope('google-drive')
const clientId = gdrive.requireString('clientId')2. Global Default Configuration & Fail-Fast Helpers
Use the global default container for application runtime variables:
import { Config } from '@quatrain/config'
// Sets or overrides values in the in-memory store
Config.set('server.port', 3000)
Config.set('server.host', '0.0.0.0')
// Strict fail-fast access (throws ConfigurationError if missing)
const port = Config.requireNumber('server.port')
const host = Config.requireString('server.host')
const secret = Config.requireString(
'JWT_SECRET',
'Set JWT_SECRET in your environment or .env file',
)
// Optional values with fallbacks
const logLevel = Config.getString('LOG_LEVEL', 'info')3. Multi-Source Priority & Environment Mapping
ConfigContainer resolves parameters across registered sources by descending
priority:
- MemoryConfigSource (Priority: 100) — Runtime programmatic overrides.
- EnvConfigSource (Priority: 50) — Process environment variables,
supporting automatic UPPER_SNAKE_CASE mapping (
database.host->DATABASE_HOST). - ObjectConfigSource (Priority: 10) — Structured JavaScript objects or parsed JSON files.
import { Config, ObjectConfigSource, EnvConfigSource } from '@quatrain/config'
const container = Config.getConfig()
container.addSource(new ObjectConfigSource({ title: 'Default Title' }))License
AGPL-3.0-only © Quatrain Développement SAS