/** * Config Manager * * ~/.a2a/config.json 설정 파일을 관리합니다. */ import { z } from 'zod'; import { type A2AConfig } from '../types/index.js'; export declare const ConfigSchema: z.ZodEffects; }, "strip", z.ZodTypeAny, { url: string; apiKey?: string | undefined; }, { url: string; apiKey?: string | undefined; }>; mode: z.ZodEnum<["local", "team"]>; team: z.ZodOptional>; llm: z.ZodDefault; apiKey: z.ZodOptional; model: z.ZodOptional; maxTokens: z.ZodOptional; }, "strip", z.ZodTypeAny, { enabled: boolean; provider: "openai" | "anthropic" | "none"; maxTokens?: number | undefined; apiKey?: string | undefined; model?: string | undefined; }, { enabled: boolean; provider: "openai" | "anthropic" | "none"; maxTokens?: number | undefined; apiKey?: string | undefined; model?: string | undefined; }>>>; embedding: z.ZodDefault; dimensions: z.ZodNumber; }, "strip", z.ZodTypeAny, { enabled: boolean; provider: "openai" | "local" | "e5"; dimensions: number; }, { enabled: boolean; provider: "openai" | "local" | "e5"; dimensions: number; }>>>; lifecycle: z.ZodDefault; cleanupOnSessionEnd: z.ZodBoolean; qualityThreshold: z.ZodNumber; tiering: z.ZodOptional>; }, "strip", z.ZodTypeAny, { ttlDays: number; maxMemories: number; cleanupOnSessionEnd: boolean; qualityThreshold: number; maxMemoriesPerProject?: number | undefined; tiering?: { enabled: boolean; hotThresholdDays: number; warmThresholdDays: number; coldCompressionEnabled: boolean; autoPromote: boolean; } | undefined; }, { ttlDays: number; maxMemories: number; cleanupOnSessionEnd: boolean; qualityThreshold: number; maxMemoriesPerProject?: number | undefined; tiering?: { enabled: boolean; hotThresholdDays: number; warmThresholdDays: number; coldCompressionEnabled: boolean; autoPromote: boolean; } | undefined; }>>>; contradiction: z.ZodDefault>>; autoCapture: z.ZodObject<{ enabled: z.ZodBoolean; triggers: z.ZodArray; excludePatterns: z.ZodArray; significanceThreshold: z.ZodNumber; }, "strip", z.ZodTypeAny, { enabled: boolean; triggers: string[]; excludePatterns: string[]; significanceThreshold: number; }, { enabled: boolean; triggers: string[]; excludePatterns: string[]; significanceThreshold: number; }>; autoInject: z.ZodObject<{ enabled: z.ZodBoolean; maxMemories: z.ZodNumber; maxTokens: z.ZodNumber; projectScopeOnly: z.ZodDefault; minQuality: z.ZodDefault; }, "strip", z.ZodTypeAny, { enabled: boolean; maxTokens: number; maxMemories: number; projectScopeOnly: boolean; minQuality: number; }, { enabled: boolean; maxTokens: number; maxMemories: number; projectScopeOnly?: boolean | undefined; minQuality?: number | undefined; }>; search: z.ZodDefault; nu: z.ZodDefault; floor: z.ZodDefault; expand: z.ZodDefault; expandLimit: z.ZodDefault; mmrLambda: z.ZodDefault; }, "strip", z.ZodTypeAny, { enabled: boolean; nu: number; floor: number; expand: boolean; expandLimit: number; mmrLambda: number; }, { enabled?: boolean | undefined; nu?: number | undefined; floor?: number | undefined; expand?: boolean | undefined; expandLimit?: number | undefined; mmrLambda?: number | undefined; }>>; }, "strip", z.ZodTypeAny, { rerank: { enabled: boolean; nu: number; floor: number; expand: boolean; expandLimit: number; mmrLambda: number; }; }, { rerank?: { enabled?: boolean | undefined; nu?: number | undefined; floor?: number | undefined; expand?: boolean | undefined; expandLimit?: number | undefined; mmrLambda?: number | undefined; } | undefined; }>>; contextrank: z.ZodDefault; lagDays: z.ZodDefault; nullThreshold: z.ZodDefault; }, "strip", z.ZodTypeAny, { enabled: boolean; lagDays: number; nullThreshold: number; }, { enabled?: boolean | undefined; lagDays?: number | undefined; nullThreshold?: number | undefined; }>>; }, "strip", z.ZodTypeAny, { autoRebuild: { enabled: boolean; lagDays: number; nullThreshold: number; }; }, { autoRebuild?: { enabled?: boolean | undefined; lagDays?: number | undefined; nullThreshold?: number | undefined; } | undefined; }>>; sessionSummary: z.ZodObject<{ enabled: z.ZodBoolean; minActions: z.ZodNumber; }, "strip", z.ZodTypeAny, { enabled: boolean; minActions: number; }, { enabled: boolean; minActions: number; }>; db: z.ZodObject<{ path: z.ZodString; maxSizeMB: z.ZodNumber; }, "strip", z.ZodTypeAny, { path: string; maxSizeMB: number; }, { path: string; maxSizeMB: number; }>; autoSync: z.ZodDefault; staleHoursThreshold: z.ZodDefault; pendingThreshold: z.ZodDefault; encryption: z.ZodOptional; }, "strip", z.ZodTypeAny, { enabled: boolean; algorithm: "aes-256-gcm"; }, { enabled: boolean; algorithm: "aes-256-gcm"; }>>; }, "strip", z.ZodTypeAny, { enabled: boolean; timeoutMs: number; pushOnSessionEnd: boolean; pullOnSessionStart: boolean; intervalMs: number; staleHoursThreshold: number; pendingThreshold: number; encryption?: { enabled: boolean; algorithm: "aes-256-gcm"; } | undefined; }, { enabled: boolean; timeoutMs: number; pushOnSessionEnd: boolean; pullOnSessionStart: boolean; intervalMs?: number | undefined; staleHoursThreshold?: number | undefined; pendingThreshold?: number | undefined; encryption?: { enabled: boolean; algorithm: "aes-256-gcm"; } | undefined; }>>>; logging: z.ZodDefault; outputDir: z.ZodString; maxFileSizeMB: z.ZodNumber; maxFiles: z.ZodNumber; }, "strip", z.ZodTypeAny, { enabled: boolean; level: "debug" | "info" | "warn" | "error"; outputDir: string; maxFileSizeMB: number; maxFiles: number; }, { enabled: boolean; level: "debug" | "info" | "warn" | "error"; outputDir: string; maxFileSizeMB: number; maxFiles: number; }>>>; skillConversion: z.ZodDefault>>; proficiency: z.ZodDefault; levelFormula: z.ZodEnum<["activation", "powerLaw"]>; maxLevel: z.ZodNumber; }, "strip", z.ZodTypeAny, { enabled: boolean; levelFormula: "activation" | "powerLaw"; maxLevel: number; actr: { decayRate: number; baseLevelConstant: number; maxAssociativeStrength: number; fanEffectFactor: number; mismatchPenalty: number; retrievalThreshold: number; }; }, { enabled: boolean; levelFormula: "activation" | "powerLaw"; maxLevel: number; actr: { decayRate: number; baseLevelConstant: number; maxAssociativeStrength: number; fanEffectFactor: number; mismatchPenalty: number; retrievalThreshold: number; }; }>>>; realtimeInject: z.ZodDefault>>; emotionTracking: z.ZodDefault>>; abTest: z.ZodDefault>>; tieredRetrieval: z.ZodDefault>>; frozenSnapshot: z.ZodDefault; }, "strip", z.ZodTypeAny, { enabled: boolean; midSessionAutoSync?: boolean | undefined; }, { enabled: boolean; midSessionAutoSync?: boolean | undefined; }>>>; dialectic: z.ZodDefault; }, "strip", z.ZodTypeAny, { enabled: boolean; minSessionMessages?: number | undefined; }, { enabled: boolean; minSessionMessages?: number | undefined; }>>>; locale: z.ZodOptional>; }, "strip", z.ZodTypeAny, { embedding: { enabled: boolean; provider: "openai" | "local" | "e5"; dimensions: number; }; server: { url: string; apiKey?: string | undefined; }; mode: "local" | "team"; llm: { enabled: boolean; provider: "openai" | "anthropic" | "none"; maxTokens?: number | undefined; apiKey?: string | undefined; model?: string | undefined; }; lifecycle: { ttlDays: number; maxMemories: number; cleanupOnSessionEnd: boolean; qualityThreshold: number; maxMemoriesPerProject?: number | undefined; tiering?: { enabled: boolean; hotThresholdDays: number; warmThresholdDays: number; coldCompressionEnabled: boolean; autoPromote: boolean; } | undefined; }; contradiction: { enabled: boolean; cosineThreshold: number; confidenceThreshold: number; decayFactor: number; maxCandidatesPerSession: number; }; autoCapture: { enabled: boolean; triggers: string[]; excludePatterns: string[]; significanceThreshold: number; }; autoInject: { enabled: boolean; maxTokens: number; maxMemories: number; projectScopeOnly: boolean; minQuality: number; }; search: { rerank: { enabled: boolean; nu: number; floor: number; expand: boolean; expandLimit: number; mmrLambda: number; }; }; contextrank: { autoRebuild: { enabled: boolean; lagDays: number; nullThreshold: number; }; }; sessionSummary: { enabled: boolean; minActions: number; }; db: { path: string; maxSizeMB: number; }; autoSync: { enabled: boolean; timeoutMs: number; pushOnSessionEnd: boolean; pullOnSessionStart: boolean; intervalMs: number; staleHoursThreshold: number; pendingThreshold: number; encryption?: { enabled: boolean; algorithm: "aes-256-gcm"; } | undefined; }; logging: { enabled: boolean; level: "debug" | "info" | "warn" | "error"; outputDir: string; maxFileSizeMB: number; maxFiles: number; }; skillConversion: { enabled: boolean; evaluationInterval: number; minRepetitions: number; similarityThreshold: number; minConfidence: number; reviewCycleDays: number; maxSkills: number; llmValidation: boolean; }; proficiency: { enabled: boolean; levelFormula: "activation" | "powerLaw"; maxLevel: number; actr: { decayRate: number; baseLevelConstant: number; maxAssociativeStrength: number; fanEffectFactor: number; mismatchPenalty: number; retrievalThreshold: number; }; }; realtimeInject: { enabled: boolean; maxTokens: number; maxMemories: number; cacheSize: number; cacheTTLSeconds: number; timeoutMs: number; }; emotionTracking: { enabled: boolean; maxPerSession: number; }; abTest: { enabled: boolean; }; tieredRetrieval: { enabled: boolean; }; frozenSnapshot: { enabled: boolean; midSessionAutoSync?: boolean | undefined; }; dialectic: { enabled: boolean; minSessionMessages?: number | undefined; }; team?: { teamId: string; teamPath: string; nodeId: string; } | undefined; locale?: "en" | "ko" | undefined; }, { server: { url: string; apiKey?: string | undefined; }; mode: "local" | "team"; autoCapture: { enabled: boolean; triggers: string[]; excludePatterns: string[]; significanceThreshold: number; }; autoInject: { enabled: boolean; maxTokens: number; maxMemories: number; projectScopeOnly?: boolean | undefined; minQuality?: number | undefined; }; sessionSummary: { enabled: boolean; minActions: number; }; db: { path: string; maxSizeMB: number; }; team?: { teamId: string; teamPath: string; nodeId: string; } | undefined; embedding?: { enabled: boolean; provider: "openai" | "local" | "e5"; dimensions: number; } | undefined; llm?: { enabled: boolean; provider: "openai" | "anthropic" | "none"; maxTokens?: number | undefined; apiKey?: string | undefined; model?: string | undefined; } | undefined; lifecycle?: { ttlDays: number; maxMemories: number; cleanupOnSessionEnd: boolean; qualityThreshold: number; maxMemoriesPerProject?: number | undefined; tiering?: { enabled: boolean; hotThresholdDays: number; warmThresholdDays: number; coldCompressionEnabled: boolean; autoPromote: boolean; } | undefined; } | undefined; contradiction?: { enabled: boolean; cosineThreshold: number; confidenceThreshold: number; decayFactor: number; maxCandidatesPerSession: number; } | undefined; search?: { rerank?: { enabled?: boolean | undefined; nu?: number | undefined; floor?: number | undefined; expand?: boolean | undefined; expandLimit?: number | undefined; mmrLambda?: number | undefined; } | undefined; } | undefined; contextrank?: { autoRebuild?: { enabled?: boolean | undefined; lagDays?: number | undefined; nullThreshold?: number | undefined; } | undefined; } | undefined; autoSync?: { enabled: boolean; timeoutMs: number; pushOnSessionEnd: boolean; pullOnSessionStart: boolean; intervalMs?: number | undefined; staleHoursThreshold?: number | undefined; pendingThreshold?: number | undefined; encryption?: { enabled: boolean; algorithm: "aes-256-gcm"; } | undefined; } | undefined; logging?: { enabled: boolean; level: "debug" | "info" | "warn" | "error"; outputDir: string; maxFileSizeMB: number; maxFiles: number; } | undefined; skillConversion?: { enabled: boolean; evaluationInterval: number; minRepetitions: number; similarityThreshold: number; minConfidence: number; reviewCycleDays: number; maxSkills: number; llmValidation: boolean; } | undefined; proficiency?: { enabled: boolean; levelFormula: "activation" | "powerLaw"; maxLevel: number; actr: { decayRate: number; baseLevelConstant: number; maxAssociativeStrength: number; fanEffectFactor: number; mismatchPenalty: number; retrievalThreshold: number; }; } | undefined; realtimeInject?: { enabled: boolean; maxTokens: number; maxMemories: number; cacheSize: number; cacheTTLSeconds: number; timeoutMs: number; } | undefined; emotionTracking?: { enabled: boolean; maxPerSession: number; } | undefined; abTest?: { enabled: boolean; } | undefined; tieredRetrieval?: { enabled: boolean; } | undefined; frozenSnapshot?: { enabled: boolean; midSessionAutoSync?: boolean | undefined; } | undefined; dialectic?: { enabled: boolean; minSessionMessages?: number | undefined; } | undefined; locale?: "en" | "ko" | undefined; }>, { embedding: { enabled: boolean; provider: "openai" | "local" | "e5"; dimensions: number; }; server: { url: string; apiKey?: string | undefined; }; mode: "local" | "team"; llm: { enabled: boolean; provider: "openai" | "anthropic" | "none"; maxTokens?: number | undefined; apiKey?: string | undefined; model?: string | undefined; }; lifecycle: { ttlDays: number; maxMemories: number; cleanupOnSessionEnd: boolean; qualityThreshold: number; maxMemoriesPerProject?: number | undefined; tiering?: { enabled: boolean; hotThresholdDays: number; warmThresholdDays: number; coldCompressionEnabled: boolean; autoPromote: boolean; } | undefined; }; contradiction: { enabled: boolean; cosineThreshold: number; confidenceThreshold: number; decayFactor: number; maxCandidatesPerSession: number; }; autoCapture: { enabled: boolean; triggers: string[]; excludePatterns: string[]; significanceThreshold: number; }; autoInject: { enabled: boolean; maxTokens: number; maxMemories: number; projectScopeOnly: boolean; minQuality: number; }; search: { rerank: { enabled: boolean; nu: number; floor: number; expand: boolean; expandLimit: number; mmrLambda: number; }; }; contextrank: { autoRebuild: { enabled: boolean; lagDays: number; nullThreshold: number; }; }; sessionSummary: { enabled: boolean; minActions: number; }; db: { path: string; maxSizeMB: number; }; autoSync: { enabled: boolean; timeoutMs: number; pushOnSessionEnd: boolean; pullOnSessionStart: boolean; intervalMs: number; staleHoursThreshold: number; pendingThreshold: number; encryption?: { enabled: boolean; algorithm: "aes-256-gcm"; } | undefined; }; logging: { enabled: boolean; level: "debug" | "info" | "warn" | "error"; outputDir: string; maxFileSizeMB: number; maxFiles: number; }; skillConversion: { enabled: boolean; evaluationInterval: number; minRepetitions: number; similarityThreshold: number; minConfidence: number; reviewCycleDays: number; maxSkills: number; llmValidation: boolean; }; proficiency: { enabled: boolean; levelFormula: "activation" | "powerLaw"; maxLevel: number; actr: { decayRate: number; baseLevelConstant: number; maxAssociativeStrength: number; fanEffectFactor: number; mismatchPenalty: number; retrievalThreshold: number; }; }; realtimeInject: { enabled: boolean; maxTokens: number; maxMemories: number; cacheSize: number; cacheTTLSeconds: number; timeoutMs: number; }; emotionTracking: { enabled: boolean; maxPerSession: number; }; abTest: { enabled: boolean; }; tieredRetrieval: { enabled: boolean; }; frozenSnapshot: { enabled: boolean; midSessionAutoSync?: boolean | undefined; }; dialectic: { enabled: boolean; minSessionMessages?: number | undefined; }; team?: { teamId: string; teamPath: string; nodeId: string; } | undefined; locale?: "en" | "ko" | undefined; }, { server: { url: string; apiKey?: string | undefined; }; mode: "local" | "team"; autoCapture: { enabled: boolean; triggers: string[]; excludePatterns: string[]; significanceThreshold: number; }; autoInject: { enabled: boolean; maxTokens: number; maxMemories: number; projectScopeOnly?: boolean | undefined; minQuality?: number | undefined; }; sessionSummary: { enabled: boolean; minActions: number; }; db: { path: string; maxSizeMB: number; }; team?: { teamId: string; teamPath: string; nodeId: string; } | undefined; embedding?: { enabled: boolean; provider: "openai" | "local" | "e5"; dimensions: number; } | undefined; llm?: { enabled: boolean; provider: "openai" | "anthropic" | "none"; maxTokens?: number | undefined; apiKey?: string | undefined; model?: string | undefined; } | undefined; lifecycle?: { ttlDays: number; maxMemories: number; cleanupOnSessionEnd: boolean; qualityThreshold: number; maxMemoriesPerProject?: number | undefined; tiering?: { enabled: boolean; hotThresholdDays: number; warmThresholdDays: number; coldCompressionEnabled: boolean; autoPromote: boolean; } | undefined; } | undefined; contradiction?: { enabled: boolean; cosineThreshold: number; confidenceThreshold: number; decayFactor: number; maxCandidatesPerSession: number; } | undefined; search?: { rerank?: { enabled?: boolean | undefined; nu?: number | undefined; floor?: number | undefined; expand?: boolean | undefined; expandLimit?: number | undefined; mmrLambda?: number | undefined; } | undefined; } | undefined; contextrank?: { autoRebuild?: { enabled?: boolean | undefined; lagDays?: number | undefined; nullThreshold?: number | undefined; } | undefined; } | undefined; autoSync?: { enabled: boolean; timeoutMs: number; pushOnSessionEnd: boolean; pullOnSessionStart: boolean; intervalMs?: number | undefined; staleHoursThreshold?: number | undefined; pendingThreshold?: number | undefined; encryption?: { enabled: boolean; algorithm: "aes-256-gcm"; } | undefined; } | undefined; logging?: { enabled: boolean; level: "debug" | "info" | "warn" | "error"; outputDir: string; maxFileSizeMB: number; maxFiles: number; } | undefined; skillConversion?: { enabled: boolean; evaluationInterval: number; minRepetitions: number; similarityThreshold: number; minConfidence: number; reviewCycleDays: number; maxSkills: number; llmValidation: boolean; } | undefined; proficiency?: { enabled: boolean; levelFormula: "activation" | "powerLaw"; maxLevel: number; actr: { decayRate: number; baseLevelConstant: number; maxAssociativeStrength: number; fanEffectFactor: number; mismatchPenalty: number; retrievalThreshold: number; }; } | undefined; realtimeInject?: { enabled: boolean; maxTokens: number; maxMemories: number; cacheSize: number; cacheTTLSeconds: number; timeoutMs: number; } | undefined; emotionTracking?: { enabled: boolean; maxPerSession: number; } | undefined; abTest?: { enabled: boolean; } | undefined; tieredRetrieval?: { enabled: boolean; } | undefined; frozenSnapshot?: { enabled: boolean; midSessionAutoSync?: boolean | undefined; } | undefined; dialectic?: { enabled: boolean; minSessionMessages?: number | undefined; } | undefined; locale?: "en" | "ko" | undefined; }>; /** * 고유 노드 ID 생성 (UUID) */ export declare function generateNodeId(): string; export declare class ConfigManager { private configPath; private readonly isExplicitPath; private config; private lastMtime; private _validationFailed; /** * #145 — 「이 키는 키체인에서 왔다」는 출처 기록. 디스크로 나갈 때만 제거하고 메모리에는 유지한다. * 🔴 `setApiKey` 의 **키체인 실패 폴백**은 평문 저장이 의도이므로 그 시점에 해제한다. */ private keychainSourcedKeys; constructor(configPath?: string); load(): A2AConfig; save(config: A2AConfig): void; get(key: K): A2AConfig[K]; set(key: K, value: A2AConfig[K]): void; /** * API 키 설정 (키체인 우선, 실패 시 config.json) * @returns 'keychain' | 'config' — 저장 위치 */ setApiKey(apiKey: string): 'keychain' | 'config'; /** * API 키 삭제 (키체인 + config.json 모두) */ deleteApiKey(): void; reset(): void; getConfigDir(): string; } export declare function getConfigManager(configPath?: string): ConfigManager; export declare function resetConfigManager(): void; //# sourceMappingURL=manager.d.ts.map