1.0.0 ko public

스펙

RAWP-DPS

Data processing specification for RAWP integrations.

4. 에이전트 출력 이벤트 (agent.*)

4.1. 텍스트 스트리밍

에이전트의 자연어 응답을 실시간으로 전달한다.

4.1.1. agent.text.delta (Client → Master)

{
  "type": "agent.text.delta",
  "payload": {
    "content_index": "Number (필수, 0-based, 현재 Content Block 순번)",
    "text": "String (필수, 텍스트 조각)"
  }
}

4.1.2. agent.text.done (Client → Master)

텍스트 스트리밍이 완료되었음을 알린다. 하나의 Content Block이 종료될 때마다 발송한다.

{
  "type": "agent.text.done",
  "payload": {
    "content_index": "Number (필수)",
    "full_text": "String (선택, 전체 텍스트. 수신 측 검증용)"
  }
}

4.2. 추론/사고 스트리밍 (Thinking)

에이전트의 내부 추론 과정을 전달한다. Extended Thinking, Chain-of-Thought 등에 사용.

4.2.1. agent.thinking.delta (Client → Master)

{
  "type": "agent.thinking.delta",
  "payload": {
    "content_index": "Number (필수)",
    "text": "String (필수, 사고 조각)",
    "redacted": "Boolean (선택, 기본값 false. 보안상 수정된 내용 여부)"
  }
}

4.2.2. agent.thinking.done (Client → Master)

{
  "type": "agent.thinking.done",
  "payload": {
    "content_index": "Number (필수)"
  }
}

4.3. 상호작용 요청 (Interaction Request)

에이전트가 사용자의 승인 또는 선택을 요구할 때 발송한다. RAWP-1.0-Legacy의 agent_approval_req/agent_interaction_ask를 통합 확장한다.

4.3.1. agent.interaction.request (Client → Master)

{
  "type": "agent.interaction.request",
  "payload": {
    "interaction_id": "String (필수, UUID v4)",
    "interaction_type": "String (필수, 아래 열거 값)",
    "question_text": "String (필수, 사용자에게 표시할 질문)",
    "timeout_sec": "Number (필수, 응답 대기 한계 시간)",
    "options": [
      {
        "value": "String (필수, 시스템 전달용 식별자)",
        "label": "String (필수, 사용자 노출용 텍스트)",
        "description": "String (선택, 부가 설명)",
        "risk_level": "String (선택, 'safe' | 'moderate' | 'dangerous')"
      }
    ],
    "context": {
      "tool_name": "String (선택, 승인이 필요한 도구명)",
      "tool_input": "Object (선택, 도구 입력 요약)",
      "affected_paths": ["String (선택, 영향받는 파일 경로 목록)"]
    },
    "default_value": "String (선택, 타임아웃 시 자동 선택될 값)"
  }
}

interaction_type 열거 값:

설명
YN 예/아니오 이진 선택
SELECT 다중 옵션 중 단일 선택
MULTI_SELECT 다중 옵션 중 복수 선택
TEXT_INPUT 사용자 자유 텍스트 입력
PERMISSION 도구 실행 권한 승인 (Claude Code의 도구 승인 흐름)

4.4. 에러 보고

4.4.1. agent.error (Client → Master)

{
  "type": "agent.error",
  "payload": {
    "error_code": "String (필수)",
    "message": "String (필수, 휴먼 리더블 에러)",
    "severity": "String (필수, 'fatal' | 'error' | 'warning')",
    "recoverable": "Boolean (필수, 에이전트가 자체 복구 가능한지 여부)",
    "details": {
      "module": "String (선택)",
      "trace": "String (선택, 스택 트레이스)",
      "related_tool": "String (선택, 에러 유발 도구명)",
      "related_invocation_id": "String (선택, 에러 유발 도구 호출 ID)"
    }
  }
}

severityfatal이면 클라이언트는 프로세스를 정리해야 한다 (MUST). warning이면 세션을 유지한다.

4.5. 파일 전송

4.5.1. agent.file.transfer (양방향)

RAWP-1.0-Legacy와 동일하게, 바이너리는 WSS를 태우지 않고 HTTP 스토리지 URL로 교환한다.

{
  "type": "agent.file.transfer",
  "payload": {
    "transfer_id": "String (필수, UUID v4)",
    "direction": "String (필수, 'upload' | 'download')",
    "file_url": "String (필수, 스토리지 URI)",
    "file_name": "String (필수)",
    "mime_type": "String (필수, IANA MIME 타입)",
    "size_bytes": "Number (필수)",
    "checksum": "String (선택, SHA-256 해시)",
    "context": {
      "workspace_relative_path": "String (선택, 워크스페이스 기준 상대 경로)",
      "related_tool_invocation_id": "String (선택)"
    }
  }
}

4.6. 에이전트 상태 변경

4.6.1. agent.state.changed (Client → Master)

에이전트의 내부 상태 전이를 마스터에 통보한다.

{
  "type": "agent.state.changed",
  "payload": {
    "previous_state": "String (필수)",
    "current_state": "String (필수)",
    "reason": "String (선택, 전이 사유)"
  }
}

예약된 상태 값: idle, thinking, tool_calling, awaiting_input, error

확장 상태는 x-{vendor}.{state_name} 형식을 따른다.

참조