UNPKG

mnemos-coder

Version:

CLI-based coding agent with graph-based execution loop and terminal UI

77 lines 2.52 kB
/** * 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