12. 명령어 및 능력 고지 (Command & Capability Negotiation)
12.1. 명령어 목록 조회
에이전트가 지원하는 슬래시 명령어 목록을 마스터에 고지한다.
12.1.1. agent.commands.publish (Client → Master)
{
"type": "agent.commands.publish",
"payload": {
"commands": [
{
"name": "String (필수, 슬래시 명령명. 예: 'compact', 'cost', 'clear')",
"description": "String (필수, 명령 설명)",
"parameters": [
{
"name": "String (필수)",
"type": "String (필수, 'string' | 'number' | 'boolean')",
"required": "Boolean (필수)",
"description": "String (선택)"
}
],
"category": "String (선택, 'session' | 'display' | 'config' | 'navigation')"
}
]
}
}
12.2. 능력 협상
세션 시작 직후, 양측은 session.capabilities 이벤트를 교환하여 지원하는 기능 목록을 협상한다.
12.2.1. session.capabilities (양방향)
{
"type": "session.capabilities",
"payload": {
"protocol_version": "String (필수, 'rawp-dps-1.0')",
"supported_namespaces": ["String (필수, 지원하는 네임스페이스 목록)"],
"features": {
"thinking_stream": "Boolean (선택, 사고 스트리밍 지원)",
"tool_streaming": "Boolean (선택, 도구 출력 스트리밍 지원)",
"structured_output": "Boolean (선택, 구조화 출력 지원)",
"subagent": "Boolean (선택, 서브에이전트 지원)",
"context_compaction": "Boolean (선택, 컨텍스트 압축 지원)",
"plan_mode": "Boolean (선택, 계획 모드 지원)",
"file_reference": "Boolean (선택, 파일 참조 토큰 해석 지원 여부)",
"file_search_fuzzy": "Boolean (선택, 퍼지 파일 검색 지원 여부)"
},
"max_frame_size": "Number (선택, 최대 단일 프레임 바이트)",
"extensions": "Object (선택, 벤더 확장 기능)"
}
}
변경 사항:
features에file_reference와file_search_fuzzy가 추가되었다 (§16.5 참조).
수신 측은 상대방이 고지하지 않은 features의 이벤트를 발송해서는 안 된다 (MUST NOT). 예를 들어 마스터가 thinking_stream: false이면, 클라이언트는 agent.thinking.delta를 발송하지 않아야 한다.
파일 참조 관련 능력 기반 필터링 규칙 (MUST):
- 마스터는 클라이언트가
file_search_fuzzy: true를 고지하지 않은 경우,control.file.search를 발송해서는 안 된다 (MUST NOT). file_reference: false이거나 미고지인 클라이언트에게file_references가 포함된control.prompt.request가 전달되는 경우, 클라이언트는 §16.2.2의 파싱 순서에 따라 토큰을 추출한 뒤display_path를 리터럴 텍스트로 치환하여 에이전트에 전달한다 (MUST).