1.0.0 ko public

스펙

RAWP-DPS

Data processing specification for RAWP integrations.

7. 세션 이벤트 (session.*)

7.1. 이력 복구

7.1.1. session.history (Client → Master)

재연결(reattach) 성공 직후 선제적으로 발송한다. RAWP-1.0-Legacy의 agent_session_history를 대체한다.

{
  "type": "session.history",
  "payload": {
    "frames": [
      "Object[] (필수, 단절 동안 버퍼에 쌓인 과거 프레임의 배열. 각 요소는 본 규격의 Envelope 전체)"
    ],
    "buffer_status": {
      "policy_applied": "String (필수, 'RING' | 'DROP' | 'NONE')",
      "truncated": "Boolean (필수, 데이터 유실 발생 여부)",
      "lost_frame_count": "Number (선택, 유실된 프레임 수 추정치)",
      "buffer_high_watermark": "Number (선택, 버퍼 최대 사용량 바이트)"
    },
    "last_sync_timestamp": "String (필수, ISO 8601, 마지막 동기화 시각)",
    "last_message_id": "String (필수, 마지막 동기화 message_id)"
  }
}

buffer_status.truncatedtrue이면 마스터는 데이터 불완전성을 사용자에게 고지해야 한다 (MUST).

7.2. 컨텍스트 압축 보고

7.2.1. session.compacted (Client → Master)

에이전트가 자동 또는 수동 컨텍스트 압축을 수행한 후 결과를 보고한다.

{
  "type": "session.compacted",
  "payload": {
    "summary": "String (필수, 압축 요약 텍스트)",
    "previous_token_count": "Number (필수, 압축 전 토큰 수)",
    "current_token_count": "Number (필수, 압축 후 토큰 수)",
    "preserved_elements": {
      "files_modified": ["String (선택, 수정된 파일 경로)"],
      "decisions_made": ["String (선택, 주요 결정 사항)"],
      "errors_encountered": ["String (선택, 미해결 에러)"],
      "active_todos": ["Object (선택, 활성 TODO 항목)"]
    },
    "trigger": "String (필수, 'auto' | 'manual' | 'requested')"
  }
}

7.3. 사용량 지표

7.3.1. session.usage (양방향, 주로 Client → Master)

텍스트 생성 완료 시점(agent.text.done) 또는 Turn 종료 시 반드시 동반 발송해야 한다 (MUST). RAWP-1.0-Legacy의 agent_usage_metrics를 대체한다.

{
  "type": "session.usage",
  "payload": {
    "turn_id": "String (선택, 사용량이 소속된 Turn)",
    "token_usage": {
      "input_tokens": "Number (필수)",
      "output_tokens": "Number (필수)",
      "cache_read_tokens": "Number (선택, 캐시 히트 토큰)",
      "cache_write_tokens": "Number (선택, 캐시 기록 토큰)",
      "thinking_tokens": "Number (선택, 사고 토큰)"
    },
    "cost_usage": {
      "limit": "Number (필수, -1은 무제한)",
      "used": "Number (필수)",
      "unit": "String (필수, 'USD' 등)"
    },
    "message_usage": {
      "limit": "Number (필수)",
      "used": "Number (필수)",
      "unit": "String (필수, 'COUNT')"
    },
    "context_window": {
      "capacity": "Number (선택, 최대 토큰 윈도우)",
      "used": "Number (선택, 현재 사용 중 토큰)",
      "utilization": "Number (선택, 0.0–1.0, 사용률)"
    },
    "time_to_reset": "String (필수, ISO 8601)"
  }
}

7.4. 세션 에러

7.4.1. session.error (양방향)

세션 수준의 프로토콜 에러를 보고한다. 에이전트 수준 에러(agent.error)와 구분된다.

{
  "type": "session.error",
  "payload": {
    "error_code": "String (필수)",
    "message": "String (필수)",
    "fatal": "Boolean (필수, true 시 세션 종료 절차 개시)"
  }
}

7.5. Turn 라이프사이클

7.5.1. session.turn.start (Client → Master)

에이전트가 새 Turn을 시작함을 알린다.

{
  "type": "session.turn.start",
  "payload": {
    "turn_id": "String (필수, UUID v4)",
    "turn_index": "Number (필수, 0-based 순번)",
    "mode": "String (선택, 현재 동작 모드)"
  }
}

7.5.2. session.turn.end (Client → Master)

Turn이 완료되었음을 알린다. 이 이벤트 직후 session.usage가 동반되어야 한다 (MUST).

{
  "type": "session.turn.end",
  "payload": {
    "turn_id": "String (필수)",
    "stop_reason": "String (필수, 아래 열거 값)",
    "tool_invocation_count": "Number (선택, 이 Turn에서의 도구 호출 횟수)"
  }
}

stop_reason 열거 값:

설명
end_turn 정상 완료
max_tokens 최대 토큰 도달
cancelled 사용자/시스템 취소
error 에러로 인한 중단
tool_use 도구 사용 후 Turn 전환 (멀티턴)
awaiting_input 사용자 입력 대기

참조