import { JSONSchema } from './types.js'; /** 에이전트가 호출할 수 있는 도구 하나 */ export interface AgentTool { /** 모델이 지목할 이름. 공백 없는 짧은 식별자를 써라. */ name: string; /** 언제 쓰는 도구인지. 모델이 이 문장만 보고 고르므로 구체적으로 써라. */ description: string; /** 인자 JSON Schema. 없으면 인자 없는 도구로 취급한다. */ parameters?: JSONSchema; /** 실제 실행. 반환값은 문자열로 직렬화되어 모델에게 돌아간다. */ execute: (args: TArgs) => unknown | Promise; } /** 타입 추론용 헬퍼. `tool<{ city: string }>({...})` 처럼 쓴다. */ export declare function tool(definition: AgentTool): AgentTool; /** 최종 답변을 의미하는 예약어. 실제 도구 이름과 겹치면 안 된다. */ export declare const FINAL = "final"; /** * 툴 루프 한 스텝의 출력 스키마. * argsJson을 object가 아닌 문자열로 받는 이유: 온디바이스 모델의 제약 디코딩이 * 자유 형태 object보다 문자열을 훨씬 안정적으로 뱉기 때문이다. */ export declare function stepSchema(toolNames: Array): JSONSchema; /** 도구 목록을 시스템 프롬프트에 붙일 설명서로 만든다. */ export declare function toolManual(tools: Array): string; /** 모델이 코드펜스를 섞어 뱉는 경우까지 감안한 JSON 파서 */ export declare function parseJson(raw: string): T; /** 잘린 사실을 모델이 알 수 있도록 표시를 남기고 자른다. */ export declare function truncate(text: string, limit: number): string; /** 도구 실행 결과를 모델에게 돌려줄 문자열로 만든다. */ export declare function stringifyResult(value: unknown): string;