mnemos-coder
Version:
CLI-based coding agent with graph-based execution loop and terminal UI
77 lines • 2.52 kB
TypeScript
/**
* Base Subagent implementation
* 모든 subagent의 기본 구현체
*/
import { LLMClient, ChatMessage } from '../llm-client.js';
import { MCPClient } from '../mcp-client-sdk.js';
import { ISubagent, SubagentConfig, SubagentContext, SubagentResponse, SubagentResult } from './types.js';
import { Logger } from '../utils/Logger.js';
import { ContextCompactor } from '../utils/ContextCompactor.js';
export declare abstract class BaseSubagent implements ISubagent {
readonly name: string;
readonly config: SubagentConfig;
protected llmClient: LLMClient;
protected mcpClient: MCPClient;
protected context?: SubagentContext;
protected logs: string[];
protected logger: Logger;
protected contextCompactor: ContextCompactor;
constructor(name: string, config: SubagentConfig, sharedMCPClient?: MCPClient);
initialize(context: SubagentContext): Promise<void>;
/**
* 허용된 도구들만 초기화
*/
private initializeMCPTools;
/**
* 허용된 도구에 기반해서 필요한 MCP 서버 결정
*/
private getRequiredServers;
/**
* 메인 실행 메서드 - 각 subagent에서 구현
*/
execute(query: string, context: SubagentContext): AsyncGenerator<SubagentResponse, void, unknown>;
/**
* 각 subagent의 실제 실행 로직 (추상 메서드)
*/
protected abstract executeInternal(messages: ChatMessage[]): AsyncGenerator<SubagentResponse, void, unknown>;
/**
* 시스템 프롬프트 빌드
*/
protected buildSystemPrompt(): Promise<string>;
/**
* Get tool specifications from MCP servers
*/
private getToolSpecs;
/**
* Map tool parameters to fix common mismatches
*/
private mapToolParameters;
/**
* 도구 실행 (MCP 클라이언트 사용)
*/
protected executeTool(toolName: string, args: Record<string, any>): Promise<any>;
/**
* 작업 처리 능력 평가 (추상 메서드)
*/
abstract canHandle(taskDescription: string): Promise<number>;
/**
* 종료 처리
*/
shutdown(): Promise<void>;
/**
* 로그 기록
*/
protected log(message: string): void;
/**
* 도구 호출 파싱 (기본 구현)
*/
protected parseToolCalls(text: string): Array<{
name: string;
arguments: Record<string, any>;
}>;
/**
* 실행 결과 요약
*/
getExecutionSummary(): SubagentResult;
}
//# sourceMappingURL=BaseSubagent.d.ts.map