1.0.0 ko public

스펙

RAWP-DPS

Data processing specification for RAWP integrations.

6. 제어 이벤트 (control.*)

마스터 서버가 클라이언트(에이전트)로 전달하는 제어 명령이다.

6.1. 프롬프트/입력 전달

6.1.1. control.prompt.request (Master → Client)

{
  "type": "control.prompt.request",
  "payload": {
    "prompt_text": "String (필수, 사용자 입력. 파일 참조 토큰 포함 가능, §16.2 참조)",
    "input_type": "String (선택, 기본값 'text'. 아래 열거 값)",
    "context_files": [
      {
        "file_url": "String (필수, 참조 파일 URL)",
        "file_name": "String (필수)",
        "mime_type": "String (선택)",
        "intent": "String (선택, 'reference' | 'edit_target' | 'context')"
      }
    ],
    "file_references": [
      {
        "ref_id": "String (필수, prompt_text 내 토큰의 ref_id와 일치)",
        "path": "String (필수, workspace 기준 상대 경로)",
        "name": "String (필수, 파일명)",
        "extension": "String (선택, 확장자)",
        "mime_type": "String (선택, IANA MIME 타입)",
        "size_bytes": "Number (선택)",
        "workspace_relative_path": "String (필수, 워크스페이스 기준 상대 경로)"
      }
    ],
    "config_overrides": {
      "output_format": "String (선택, 'text' | 'json' | 'stream-json')",
      "json_schema": "Object (선택, 구조화 출력 스키마)",
      "max_turns": "Number (선택, 최대 Turn 수 제한)",
      "allowed_tools": ["String (선택, 허용 도구 목록)"],
      "denied_tools": ["String (선택, 금지 도구 목록)"]
    }
  }
}

변경 사항: file_references 필드가 추가되었다. 이 필드는 prompt_text 내에 삽입된 인라인 파일 참조 토큰(§16.2)의 메타데이터를 제공한다. file_references와 기존 context_files의 관계: context_files는 프롬프트와 함께 첨부되는 참조 파일이고, file_references는 프롬프트 텍스트 내에서 인라인으로 언급된 파일의 메타데이터이다. 양자는 독립적이며, 동일 파일이 양쪽에 모두 존재할 수 있다.

input_type 열거 값:

설명
text 일반 텍스트 프롬프트
slash_command 슬래시 명령 (예: /compact, /cost)
continuation 이전 Turn에 이어지는 후속 입력
piped_stdin 파이프된 표준 입력 (headless 모드)

6.1.2. control.prompt.cancel (Master → Client)

진행 중인 에이전트 Turn을 취소한다. 수신 시 클라이언트는 현재 실행 중인 도구를 가능한 한 빨리 중단하고, agent.text.done(is_cancelled: true)을 발송해야 한다 (MUST).

{
  "type": "control.prompt.cancel",
  "payload": {
    "target_turn_id": "String (필수, 취소 대상 turn_id)",
    "reason": "String (선택, 'user_cancelled' | 'timeout' | 'quota_exceeded')"
  }
}

6.2. 상호작용 응답

6.2.1. control.interaction.response (Master → Client)

{
  "type": "control.interaction.response",
  "payload": {
    "interaction_id": "String (필수, 대응하는 agent.interaction.request의 interaction_id)",
    "selected_value": "String | [String] (필수, 단일 선택 또는 복수 선택 값)",
    "text_input": "String (선택, TEXT_INPUT 타입의 사용자 자유 입력)"
  }
}

6.2.2. control.interaction.timeout (Master → Client)

{
  "type": "control.interaction.timeout",
  "payload": {
    "interaction_id": "String (필수)"
  }
}

6.3. 세션 제어 명령

6.3.1. control.session.compact (Master → Client)

마스터가 컨텍스트 압축을 요청한다 (사용자의 /compact 명령 등).

{
  "type": "control.session.compact",
  "payload": {
    "instruction": "String (선택, 압축 시 보존할 내용 지시)",
    "target_token_ratio": "Number (선택, 0.0–1.0, 목표 압축 비율)"
  }
}

6.3.2. control.mode.switch (Master → Client)

에이전트 동작 모드를 전환한다.

{
  "type": "control.mode.switch",
  "payload": {
    "mode": "String (필수, 아래 열거 값)",
    "config": "Object (선택, 모드별 추가 설정)"
  }
}

mode 열거 값:

설명
default 기본 실행 모드 (읽기/쓰기/실행 모두 가능)
plan 계획 모드 (읽기/검색만 허용, 쓰기/실행 차단)
review 코드 리뷰 모드

참조