/** * Centralized Grackle configuration resolved from environment variables. * * Call {@link resolveGrackleConfig} once at startup and pass the result to * consumers. Partial resolvers ({@link resolveLogConfig}, * {@link resolveNetworkConfig}) serve leaf packages that only need a slice. * * @module */ import { type EnvSource } from "./env.js"; /** Pino-compatible log levels. */ export type LogLevel = "fatal" | "error" | "warn" | "info" | "debug" | "trace" | "silent"; /** Logging configuration shared across all packages. */ export interface LogConfig { /** Pino log level. */ level: LogLevel; /** Whether `NODE_ENV` is `"production"`. */ isProduction: boolean; } /** Network and port configuration. */ export interface NetworkConfig { /** gRPC server port (`GRACKLE_PORT`). */ grpcPort: number; /** Web UI + WebSocket port (`GRACKLE_WEB_PORT`). */ webPort: number; /** MCP server port (`GRACKLE_MCP_PORT`). */ mcpPort: number; /** MCP Apps widget sandbox port (`GRACKLE_SANDBOX_PORT`). */ sandboxPort: number; /** PowerLine gRPC port (`GRACKLE_POWERLINE_PORT`). */ powerlinePort: number; /** Bind address (`GRACKLE_HOST`). */ host: string; /** Canonical browser-facing origin (`GRACKLE_PUBLIC_URL`). */ publicUrl?: string; /** Explicit MCP origin for broker-captured widgets (`GRACKLE_MCP_ORIGIN`). */ mcpOrigin?: string; /** Explicit sandbox origin (`GRACKLE_SANDBOX_ORIGIN`). */ sandboxOrigin?: string; } /** Filesystem path overrides. */ export interface PathConfig { /** Raw `GRACKLE_HOME` override (before joining with `.grackle`). */ grackleHome?: string; /** Override agent working directory (`GRACKLE_WORKING_DIRECTORY`). */ workingDirectory?: string; /** Worktree base path (`GRACKLE_WORKTREE_BASE`). */ worktreeBase?: string; /** Override web asset directory (`GRACKLE_WEB_DIR`). */ webDir?: string; /** MCP config file path (`GRACKLE_MCP_CONFIG`). */ mcpConfig?: string; } /** Docker-related configuration. */ export interface DockerConfig { /** Container hostname for DooD mode (`GRACKLE_DOCKER_HOST`). */ dockerHost?: string; /** Socat helper image (`GRACKLE_DOCKER_SOCAT_IMAGE`). */ dockerSocatImage: string; /** Docker network name (`GRACKLE_DOCKER_NETWORK`). */ dockerNetwork?: string; } /** Feature flags. */ export interface FeatureConfig { /** Skip auto-starting local PowerLine (`GRACKLE_SKIP_LOCAL_POWERLINE=1`). */ skipLocalPowerline: boolean; /** Skip auto-starting root task on connect (`GRACKLE_SKIP_ROOT_AUTOSTART=1`). */ skipRootAutostart: boolean; /** Skip task orchestration (`GRACKLE_SKIP_ORCHESTRATION=1`). */ skipOrchestration: boolean; /** Skip task scheduling (`GRACKLE_SKIP_SCHEDULING=1`). */ skipScheduling: boolean; /** Enable knowledge graph features (`GRACKLE_KNOWLEDGE_ENABLED`). */ knowledgeEnabled: boolean; } /** Operational tuning knobs (resolve once at startup). */ export interface TuningConfig { /** Reconciliation loop interval in ms (`GRACKLE_RECONCILIATION_TICK_MS`). */ reconciliationTickMs: number; /** Per-provider timeout for spawn-context resolution in ms (`GRACKLE_KG_SPAWN_CONTEXT_TIMEOUT_MS`). */ kgSpawnContextTimeoutMs: number; } /** Complete Grackle configuration resolved from environment variables. */ export interface GrackleConfig { /** Network ports and bind address. */ network: NetworkConfig; /** Filesystem path overrides. */ paths: PathConfig; /** Docker-related configuration. */ docker: DockerConfig; /** Feature flags. */ features: FeatureConfig; /** Operational tuning. */ tuning: TuningConfig; /** Logging. */ log: LogConfig; } /** Resolve logging configuration from env vars. */ export declare function resolveLogConfig(env?: EnvSource): Readonly; /** Resolve network/port configuration from env vars. */ export declare function resolveNetworkConfig(env?: EnvSource): Readonly; /** Resolve path configuration from env vars. */ export declare function resolvePathConfig(env?: EnvSource): Readonly; /** Resolve Docker configuration from env vars. */ export declare function resolveDockerConfig(env?: EnvSource): Readonly; /** Resolve feature flags from env vars. */ export declare function resolveFeatureConfig(env?: EnvSource): Readonly; /** Resolve tuning configuration from env vars. */ export declare function resolveTuningConfig(env?: EnvSource): Readonly; /** * Resolve and validate all Grackle configuration from environment variables. * Returns a frozen config object. Call once at startup, pass to consumers. * * Does NOT include TLS or network-exposure validation — those are * server-specific concerns in `@grackle-ai/server`. */ export declare function resolveGrackleConfig(opts?: { env?: EnvSource; }): Readonly; //# sourceMappingURL=config.d.ts.map