@orient-bot/core
v1.1.0
Published
Shared utilities, types, and configuration for Orient
Downloads
258
Readme
@orient-bot/core
Shared utilities, types, and configuration for the Orient.
Features
- Configuration: Zod-validated configuration with environment variable substitution
- Logger: Structured logging with Winston, log rotation, and sensitive data redaction
- Types: Common type definitions used across all packages
- Utils: Utility functions for common operations
Installation
pnpm add @orient-bot/coreUsage
Configuration
import { loadConfig, getConfig } from '@orient-bot/core';
// Load configuration from file and environment
const config = loadConfig();
// Access configuration values
console.log(config.organization.name);
console.log(config.integrations.jira.host);Logger
import { createServiceLogger, logger } from '@orient-bot/core';
// Use the main logger
logger.info('Application started');
// Create a service-specific logger
const serviceLog = createServiceLogger('my-service');
serviceLog.info('Service initialized');
// Track operations with timing
const op = serviceLog.startOperation('fetchData');
try {
await fetchData();
op.success('Data fetched');
} catch (error) {
op.failure(error);
}Types
import type { JiraIssue, ChatPermission, WhatsAppMessage } from '@orient-bot/core';
const issue: JiraIssue = {
id: '10001',
key: 'PROJ-123',
summary: 'Example issue',
// ...
};Utils
import { sleep, retryWithBackoff, formatDuration, isProduction } from '@orient-bot/core';
// Wait for a duration
await sleep(1000);
// Retry with exponential backoff
const result = await retryWithBackoff(
() => fetchWithRetry(),
3, // max retries
1000 // initial delay
);
// Format duration
console.log(formatDuration(125000)); // "2m 5s"
// Environment checks
if (isProduction()) {
// Production-specific code
}Configuration File
The config loader looks for configuration in this order:
.mcp.config.local.json.mcp.config.jsonmcp-config.jsonconfig.jsonconfig/app.json
Environment variables can be substituted using ${VAR_NAME} syntax:
{
"integrations": {
"jira": {
"apiToken": "${JIRA_API_TOKEN}"
}
}
}Development
# Build
pnpm build
# Run tests
pnpm test
# Type check
pnpm typecheck