스키마 레퍼런스

스키마 레퍼런스 (1.0) (Schema Reference)

1.0 스키마의 모든 정의를 앵커 하나씩 정리한 생성 페이지예요. 프로토콜 구조의 원천은 이 페이지가 아니라 기계가 읽을 수 있는 스키마이며, 여기서는 각 정의에 연결할 앵커를 제공합니다.

출처: 문서

본문

이 페이지는 /spec/1.0/schema.json — 구조의 진실 원천 — 에서 생성되므로, 산문 스펙이 정의를 다시 서술하는 대신 연결할 수 있습니다. 손으로 편집하지 마세요. 스키마를 바꾸고 재생성하세요.

각 정의의 앵커는 이름을 소문자로 만든 것입니다.

이벤트 (Events)

이벤트 합집합(union), 그 판별자(discriminator), 그리고 모든 이벤트. 필드가 오는 믹스인들은 Mixins 아래에 나열됩니다.

EventType

모든 이벤트가 담는 판별자입니다.

값:

TEXT_MESSAGE_START · TEXT_MESSAGE_CONTENT · TEXT_MESSAGE_END · TEXT_MESSAGE_CHUNK · TOOL_CALL_START · TOOL_CALL_ARGS · TOOL_CALL_END · TOOL_CALL_CHUNK · TOOL_CALL_RESULT · STATE_SNAPSHOT · STATE_DELTA · MESSAGES_SNAPSHOT · ACTIVITY_SNAPSHOT · ACTIVITY_DELTA · RAW · CUSTOM · RUN_STARTED · RUN_FINISHED · RUN_ERROR · STEP_STARTED · STEP_FINISHED · REASONING_START · REASONING_MESSAGE_START · REASONING_MESSAGE_CONTENT · REASONING_MESSAGE_END · REASONING_MESSAGE_CHUNK · REASONING_END · REASONING_ENCRYPTED_VALUE · SUBAGENT_STARTED · SUBAGENT_FINISHED · SUBAGENT_ERROR

TextMessageStartEvent

스트리밍 텍스트 메시지를 엽니다. 콘텐츠는 TEXT_MESSAGE_CONTENT 이벤트로 도착하고, 메시지는 TEXT_MESSAGE_END로 닫힙니다.

Fields:

  • type — "TEXT_MESSAGE_START" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • messageId — string, required. 이 스트림이 만드는 메시지를 식별하고, 이후의 콘텐츠·종료 이벤트를 그것에 묶습니다.
  • role — TextMessageRole, optional. 메시지를 보낸 사람. 없는 role은 assistant를 의미하며, 그 의미는 규범적이고 산문에 명시되어 있습니다. 검증기는 기본값을 문서가 아니라 행동으로 여기기 때문입니다. 기본값: "assistant".
  • name — string, optional. 한 역할 안에서 여러 참여자를 구분하는 프로바이더를 위한 작성자 표시 이름(선택).

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent, Attributable을 구성하며; 구성된 필드는 위에 나열됩니다.

TextMessageContentEvent

스트리밍 텍스트 메시지에 조각을 덧붙입니다.

Fields:

  • type — "TEXT_MESSAGE_CONTENT" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • messageId — string, required. 이 조각이 속한 메시지.
  • delta — string, required. 덧붙일 조각. 빈 문자열일 수 있습니다: 프로바이더는 keep-alive와 도구 호출이 결정되는 동안 빈 delta를 내보내고, 그것을 거부하면 올바르게 작동하는 실행을 죽이게 됩니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent, Attributable을 구성하며; 구성된 필드는 위에 나열됩니다.

TextMessageEndEvent

스트리밍 텍스트 메시지를 닫습니다.

Fields:

  • type — "TEXT_MESSAGE_END" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • messageId — string, required. 닫히는 메시지.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent, Attributable을 구성하며; 구성된 필드는 위에 나열됩니다.

TextMessageChunkEvent

메시지 시작 위치를 미리 알 수 없는 생산자를 위해 start, content, end 시퀀스를 대신하는 줄임 형태입니다. 필드가 없는 청크가 이어가는 메시지는 산문 스펙이 답하는 시퀀스 질문입니다.

Fields:

  • type — "TEXT_MESSAGE_CHUNK" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • messageId — string, optional. 이 청크가 속한 메시지. 없으면 이미 열린 메시지를 이어갑니다.
  • role — TextMessageRole, optional. 그것을 여는 청크에서 메시지를 보낸 사람.
  • delta — string, optional. 덧붙일 조각. 빈 문자열일 수 있습니다.
  • name — string, optional. 작성자 표시 이름(선택).

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent, Attributable을 구성하며; 구성된 필드는 위에 나열됩니다.

ToolCallStartEvent

도구 호출을 엽니다. 인수는 TOOL_CALL_ARGS 이벤트로 도착하고, 호출은 TOOL_CALL_END로 닫힙니다.

Fields:

  • type — "TOOL_CALL_START" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • toolCallId — string, required. 호출을 식별하고, 이후의 args, end, result 이벤트를 그것에 묶습니다.
  • toolCallName — string, required. 호출되는 도구.
  • parentMessageId — string, optional. 이 호출을 담는 어시스턴트 메시지. 없으면 생산자가 그것을 어떤 메시지에도 귀속시키지 않았습니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent, Attributable을 구성하며; 구성된 필드는 위에 나열됩니다.

ToolCallArgsEvent

도구 호출 인수의 조각을 덧붙입니다.

Fields:

  • type — "TOOL_CALL_ARGS" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • toolCallId — string, required. 이 인수들이 속한 호출.
  • delta — string, required. 인수의 조각으로, 호출의 인수 텍스트로 이어집니다 — 관례적으로 JSON 문서지만 프로토콜은 그것을 검증하지 않습니다(FunctionCall.arguments 참고). 파싱된 JSON이 아니라 의도적으로 문자열입니다. 조각은 그 자체로 문서가 아니기 때문이죠. 빈 문자열일 수 있습니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent, Attributable을 구성하며; 구성된 필드는 위에 나열됩니다.

ToolCallEndEvent

도구 호출을 닫아, 인수가 완성되었음을 의미합니다.

Fields:

  • type — "TOOL_CALL_END" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • toolCallId — string, required. 닫히는 호출.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent, Attributable을 구성하며; 구성된 필드는 위에 나열됩니다.

ToolCallChunkEvent

도구 호출의 start, args, end 시퀀스를 대신하는 줄임 형태입니다. TEXT_MESSAGE_CHUNK와 같은 이유로 모든 필드가 선택입니다.

Fields:

  • type — "TOOL_CALL_CHUNK" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • toolCallId — string, optional. 이 청크가 속한 호출. 없으면 이미 열린 호출을 이어갑니다.
  • toolCallName — string, optional. 그것을 여는 청크에서 호출되는 도구.
  • parentMessageId — string, optional. 이 호출을 담는 어시스턴트 메시지.
  • delta — string, optional. 인수의 조각. 빈 문자열일 수 있습니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent, Attributable을 구성하며; 구성된 필드는 위에 나열됩니다.

ToolCallResultEvent

도구가 반환한 것을 운반합니다. 기존 메시지에 덧붙이지 않고 새 도구 메시지를 만드는 데, 그래서 자신만의 messageId가 있습니다.

Fields:

  • type — "TOOL_CALL_RESULT" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • messageId — string, required. 이 결과가 되는 도구 메시지.
  • toolCallId — string, required. 응답받는 호출.
  • content — string | ContentPart의 배열, required. 도구가 반환한 것: 이 이벤트가 만드는 도구 메시지에서와 정확히 같이, 평문이거나 정렬된 부분 목록. 구조화 데이터를 반환하는 도구는 그것을 텍스트로 직렬화합니다. 미디어는 그들만의 부분으로 이동합니다.
  • role — "tool", optional. 그것이 만드는 메시지와의 대칭을 위해서만 존재하며, 값은 고정이라 생산자는 생략할 수 있습니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent, Attributable을 구성하며; 구성된 필드는 위에 나열됩니다.

StateSnapshotEvent

에이전트 상태를 통째로 교체합니다. delta가 변경을 표현할 수 없을 때, 또는 소비자를 재동기화하기 위해 보냅니다.

Fields:

  • type — "STATE_SNAPSHOT" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • snapshot — State, required. 완전한 새 상태.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent, Attributable을 구성하며; 구성된 필드는 위에 나열됩니다.

StateDeltaEvent

에이전트 상태를 증분적으로 변경합니다.

Fields:

  • type — "STATE_DELTA" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • delta — JsonPatch, required. 현재 상태에 대한 RFC 6902 패치로서의 변경. 여기서의 구조적 유효성은 패치가 적용된다는 뜻이 아닙니다. 잘 만들어진 연산이 존재하지 않는 경로를 가리킬 수 있고, RFC 6902는 그것을 적용자에게 맡깁니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent, Attributable을 구성하며; 구성된 필드는 위에 나열됩니다.

MessagesSnapshotEvent

생산자가 소유하는 메시지의 완전한 집합을 순서대로 담습니다. 평범한 덮어쓰기가 아니라 대화 전체 범위입니다. 소비자는 어떤 생산자도 추적하지 않는 자기 메시지를 유지할 수 있으므로, 스냅샷이 그것들과 정확히 어떻게 화해하는지는 행동적이고 산문에 속합니다. 대화 전체 범위이므로 단일 하위 에이전트에 속할 수 없어 귀속을 담지 않습니다. 다만 메시지들을 통해 그것이 포함하는 각 메시지를 어떤 하위 에이전트가 소유하는지는 확립합니다.

Fields:

  • type — "MESSAGES_SNAPSHOT" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • messages — Message의 배열, required. 생산자가 선언하는 메시지들을 순서대로 담습니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent을 구성합니다; 구성된 필드는 위에 나열됩니다.

ActivitySnapshotEvent

대화 콘텐츠가 아닌 구조적 진행을 보고합니다. UI가 자기만의 위젯으로 렌더링하는 단계 같은 것이죠.

Fields:

  • type — "ACTIVITY_SNAPSHOT" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • messageId — string, required. 이것이 설명하는 activity 메시지.
  • activityType — string, required. 어떤 종류의 activity인지. 열린 문자열입니다. 그 집합은 생산자의 것이지 프로토콜의 것이 아닙니다.
  • content — object, 키 기준으로 열림, required. activity의 페이로드, 키 기준으로 열림.
  • replace — boolean, optional. 이 스냅샷이 activity의 기존 콘텐츠를 덮어쓰는지. 없으면 덮어쓴다는 뜻이며, 그 의미는 규범적입니다. 오직 명시적인 false만이 소비자에게 이미 있는 것을 남겨 두라고 요청합니다. 병합을 요구하는 것은 아닙니다 — ACTIVITY_DELTA가 콘텐츠를 증분적으로 바꾸는 방식입니다. 소비자가 덮어쓰지 않는 스냅샷으로 하는 것은 행동적이고 산문에 속합니다. 기본값: true.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent, Attributable을 구성하며; 구성된 필드는 위에 나열됩니다.

ActivityDeltaEvent

activity 메시지의 콘텐츠를 증분적으로 변경합니다.

Fields:

  • type — "ACTIVITY_DELTA" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • messageId — string, required. 변경되는 activity 메시지.
  • activityType — string, required. 어떤 종류의 activity인지.
  • patch — JsonPatch, required. activity의 콘텐츠에 대한 RFC 6902 패치로서의 변경.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent, Attributable을 구성하며; 구성된 필드는 위에 나열됩니다.

RawEvent

프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해, 프로바이더 네이티브 이벤트를 그대로 통과시킵니다.

Fields:

  • type — "RAW" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • event — 어떤 JSON 값, required. 프로바이더 자신의 이벤트. 어떤 JSON 값이고 required입니다. 오직 그것을 운반하는 것이 유일한 목적인 이벤트라 그것 없이는 아무것도 말하지 못합니다.
  • source — string, optional. 이벤트가 온 프로바이더나 프레임워크.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent, Attributable을 구성하며; 구성된 필드는 위에 나열됩니다.

CustomEvent

애플리케이션 자신의 이벤트를 위한 프로토콜의 확장 지점입니다. 소비자가 하나로 하는 어떤 것이든 프로토콜 밖입니다.

Fields:

  • type — "CUSTOM" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • name — string, required. 이 커스텀 이벤트가 무엇인지. required: 없으면 소비자가 값을 라우팅할 수 없습니다.
  • value — 어떤 JSON 값, required. 페이로드. 어떤 JSON 값이고 required입니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent, Attributable을 구성하며; 구성된 필드는 위에 나열됩니다.

RunStartedEvent

실행을 엽니다. 실행 범위라 하위 에이전트 귀속을 담지 않습니다.

Fields:

  • type — "RUN_STARTED" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • threadId — string, required. 이 실행이 속한 대화.
  • runId — string, required. 이 실행을 식별합니다.
  • protocolVersion — string, optional. 이 생산자가 말하는 프로토콜 버전(예: "1.0") — 입력의 메아리가 아니라 생산자 자신의 버전입니다. 그것이 이 쌍을 협상으로 만드는 이유예요. 각 측이 자신을 선언하고 소비자는 다운그레이드를 그것이 일어난 순간에 봅니다. 없으면 프로토콜이 버전을 담기 전의 생산자입니다.
  • parentRunId — string, optional. 하나 안의 하위 에이전트가 아니라 별도 실행으로서 다른 에이전트를 호출할 때, 이 실행을 만든 실행.
  • input — RunAgentInput, optional. 이 실행이 시작된 요청으로, 요청을 만들지 않은 소비자도 에이전트가 무엇을 물었는지 볼 수 있도록 되돌려 보내집니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent을 구성합니다; 구성된 필드는 위에 나열됩니다.

RunFinishedEvent

실패하지 않은 실행을 닫습니다. 실행 범위라 하위 에이전트 귀속을 담지 않습니다.

Fields:

  • type — "RUN_FINISHED" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • threadId — string, required. 이 실행이 속한 대화.
  • runId — string, required. 닫히는 실행.
  • result — null을 제외한 어떤 JSON 값, optional. 실행의 반환 값(있으면). 어떤 JSON 값.
  • outcome — RunFinishedOutcome, optional. 실행이 왜 끝났는지. 없으면 성공을 의미하므로, outcome이 존재하기 전에 쓰인 모든 생산자가 이미 적합합니다.
  • usage — TokenUsage의 배열, optional. 실행의 토큰 사용량으로, 프로바이더와 모델별 항목 하나씩이어서 여러 모델을 호출한 실행이 그것들을 분리해 둡니다. 합계만 원하는 소비자는 항목들을 더합니다. 실행이 회계 경계입니다. 사용량은 실행 안에서 이루어진 모든 모델 호출을 포함하며, 하위 에이전트가 한 호출도 포함됩니다. parentRunId 아래 별도 실행으로 호출된 에이전트는 자기 종료 이벤트에 자기 사용량을 보고합니다. 그리고 중단된 실행을 재개하는 실행은 자기 자신이 한 호출만 보고하지, 중단된 실행의 것을 보고하지 않습니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent을 구성합니다; 구성된 필드는 위에 나열됩니다.

RunErrorEvent

실패한 실행을 끝냅니다. 실행 범위라 하위 에이전트 귀속을 담지 않습니다. 실행을 끝내지 않고 실패하는 하위 에이전트는 대신 SUBAGENT_ERROR를 보고합니다.

Fields:

  • type — "RUN_ERROR" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • message — string, required. 사람이 읽기 위한 무엇이 잘못되었는지.
  • code — string, optional. 기계가 읽을 수 있는 오류 코드. 열린 문자열입니다. 프로토콜은 어휘를 정의하지 않습니다.
  • usage — TokenUsage의 배열, optional. 죽기 전에 한 번 이상 모델 호출을 완료한 실행을 위해, 실패 전에 쌓인 토큰 사용량. RUN_FINISHED에서와 같이 범위가 정해집니다: 실행 자신의 호출, 하위 에이전트 포함.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent을 구성합니다; 구성된 필드는 위에 나열됩니다.

StepStartedEvent

단계 개념을 표면화할 가치가 있는 프레임워크의 생산자를 위해, 실행 안의 이름 있는 단계를 엽니다.

Fields:

  • type — "STEP_STARTED" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • stepName — string, required. 단계의 이름. 그것을 식별합니다. 대응하는 STEP_FINISHED가 같은 이름을 담습니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent, Attributable을 구성하며; 구성된 필드는 위에 나열됩니다.

StepFinishedEvent

이름 있는 단계를 닫습니다.

Fields:

  • type — "STEP_FINISHED" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • stepName — string, required. 닫히는 단계.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent, Attributable을 구성하며; 구성된 필드는 위에 나열됩니다.

ReasoningStartEvent

추론 범위(span)를 엽니다. 범위는 여러 추론 메시지를 담을 수 있습니다.

Fields:

  • type — "REASONING_START" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • messageId — string, required. 열리는 범위.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent, Attributable을 구성하며; 구성된 필드는 위에 나열됩니다.

ReasoningMessageStartEvent

스트리밍 추론 메시지를 엽니다.

Fields:

  • type — "REASONING_MESSAGE_START" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • messageId — string, required. 이 스트림이 만드는 추론 메시지.
  • role — "reasoning", required. 고정이며, 기본값이 아니라 required입니다. 그 요구는 선택된 것이 아니라 SDK에서 상속된 것입니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent, Attributable을 구성하며; 구성된 필드는 위에 나열됩니다.

ReasoningMessageContentEvent

스트리밍 추론 메시지에 조각을 덧붙입니다.

Fields:

  • type — "REASONING_MESSAGE_CONTENT" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • messageId — string, required. 이 조각이 속한 추론 메시지.
  • delta — string, required. 덧붙일 조각. 빈 문자열일 수 있습니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent, Attributable을 구성하며; 구성된 필드는 위에 나열됩니다.

ReasoningMessageEndEvent

스트리밍 추론 메시지를 닫습니다.

Fields:

  • type — "REASONING_MESSAGE_END" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • messageId — string, required. 닫히는 추론 메시지.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent, Attributable을 구성하며; 구성된 필드는 위에 나열됩니다.

ReasoningMessageChunkEvent

추론 메시지의 start, content, end 시퀀스를 대신하는 줄임 형태입니다.

Fields:

  • type — "REASONING_MESSAGE_CHUNK" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • messageId — string, optional. 이 청크가 속한 추론 메시지. 없으면 이미 열린 것을 이어갑니다.
  • delta — string, optional. 덧붙일 조각. 빈 문자열일 수 있습니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent, Attributable을 구성하며; 구성된 필드는 위에 나열됩니다.

ReasoningEndEvent

추론 범위를 닫습니다.

Fields:

  • type — "REASONING_END" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • messageId — string, required. 닫히는 범위.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent, Attributable을 구성하며; 구성된 필드는 위에 나열됩니다.

ReasoningEncryptedValueEvent

소비자가 읽을 수 없으면서 저장하고 나중 턴에 반환하는, 프로바이더의 불투명한 암호화 추론 아티팩트를 운반합니다.

Fields:

  • type — "REASONING_ENCRYPTED_VALUE" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • subtype — ReasoningEncryptedValueSubtype, required. entityId가 이름 붙이는 것이 어떤 종류인지, 그것이 값이 어디 저장될지 결정합니다.
  • entityId — string, required. 값이 속한 것: subtype에 따라 메시지 id 또는 도구 호출 id.
  • encryptedValue — string, required. 프로바이더의 불투명한 아티팩트.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent, Attributable을 구성하며; 구성된 필드는 위에 나열됩니다.

SubagentStartedEvent

하위 에이전트 호출이 시작되었음을 알립니다. 그 후 하위 에이전트가 만드는 모든 것은 자기 subagentRunId를 담아 귀속되므로, 소비자는 스트림을 재생하지 않고도 작업을 그룹화할 수 있습니다. 여기서 subagentRunId는 이벤트를 귀속시키는 것이 아니라 하위 에이전트를 식별하므로, Attributable이 아니라 BaseEvent 단독으로 구성됩니다. 둘러싸는 하위 에이전트로의 귀속은 parentSubagentRunId입니다.

Fields:

  • type — "SUBAGENT_STARTED" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • subagentRunId — SubagentRunId, required. 알려지는 호출.
  • name — string, required. 하위 에이전트의 이름으로, subagentRunId와 달리 호출끼리 재사용 가능합니다.
  • description — string, optional. 이 하위 에이전트가 무엇을 위한 것인지, 소비자가 표시하도록.
  • parentSubagentRunId — SubagentRunId, optional. 중첩 위임에서 이 호출을 만든 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • parentToolCallId — string, optional. 에이전트가 모델에 도구로 노출되는 패턴에서, 이 하위 에이전트를 만든 도구 호출. 소비자가 rawEvent를 읽지 않고도 하위 에이전트를 호출에 묶을 수 있게 합니다.
  • parentMessageId — string, optional. 만드는 도구 호출을 담은 메시지.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent을 구성합니다; 구성된 필드는 위에 나열됩니다.

SubagentFinishedEvent

작업이 완료되었거나 외부 입력을 기다리며 일시 중단되었기 때문에, 하위 에이전트 호출의 이 실행 세그먼트를 끝냅니다.

Fields:

  • type — "SUBAGENT_FINISHED" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • subagentRunId — SubagentRunId, required. 닫히는 호출.
  • result — null을 제외한 어떤 JSON 값, optional. 하위 에이전트의 반환 값(있으면). RUN_FINISHED.result를 반영한 어떤 JSON 값.
  • outcome — SubagentFinishedOutcome, optional. 세그먼트가 왜 끝났는지. 없으면 성공. 일시 중단된 하위 에이전트는 성공도 실패도 아니므로, 그것을 말하려면 나중 인터럽트에서 추론하는 대신 자신만의 값이 필요합니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent을 구성합니다; 구성된 필드는 위에 나열됩니다.

SubagentErrorEvent

하위 에이전트 호출이 실패했음을 보고합니다. 실행은 계속될 수 있습니다. 부모 에이전트는 실패한 하위 에이전트를 자유롭게 처리할 수 있는데, 그래서 이것은 RUN_ERROR가 아닙니다.

Fields:

  • type — "SUBAGENT_ERROR" (EventType), required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.
  • subagentRunId — SubagentRunId, required. 실패한 호출.
  • message — string, required. 사람이 읽기 위한 무엇이 잘못되었는지.
  • code — string, optional. 기계가 읽을 수 있는 오류 코드. 열린 문자열입니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseEvent을 구성합니다; 구성된 필드는 위에 나열됩니다.

Event

어떤 AG-UI 이벤트든. 모든 멤버는 규범적입니다. 선택 계층도, 소비자가 구현을 거부할 수 있는 이벤트도 없습니다. type 속성으로 판별됩니다.

멤버:

type으로 판별됩니다.

메시지 (Messages)

메시지 합집합과 대화 내역이 담는 메시지 타입.

TextMessageRole

스트리밍 텍스트 메시지가 취할 수 있는 역할. tool을 제외하는데, 그것은 텍스트로 스트리밍되는 대신 TOOL_CALL_RESULT가 운반하기 때문입니다.

값:

developer · system · assistant · user

DeveloperMessage

애플리케이션 개발자의 지시.

Fields:

  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • id — string, required. 대화 안에서 메시지를 식별합니다.
  • role — "developer", required. 메시지를 보낸 사람. 각 메시지 정의는 이것을 단일 값으로 좁힙니다.
  • name — string, optional. 작성자 표시 이름(선택).
  • encryptedValue — string, optional. 이 메시지에 속한 프로바이더의 불투명한 아티팩트로, 소비자가 저장하고 나중 턴에 반환합니다.
  • metadata — Metadata, optional. 이 메시지에 붙는 추가 정보.
  • content — string, required. 지시. required. 아무것도 없는 developer 메시지는 아무것도 말하지 않습니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseMessage, Attributable을 구성하며; 구성된 필드는 위에 나열됩니다.

SystemMessage

시스템의 지시.

Fields:

  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • id — string, required. 대화 안에서 메시지를 식별합니다.
  • role — "system", required. 메시지를 보낸 사람. 각 메시지 정의는 이것을 단일 값으로 좁힙니다.
  • name — string, optional. 작성자 표시 이름(선택).
  • encryptedValue — string, optional. 이 메시지에 속한 프로바이더의 불투명한 아티팩트로, 소비자가 저장하고 나중 턴에 반환합니다.
  • metadata — Metadata, optional. 이 메시지에 붙는 추가 정보.
  • content — string, required. 지시. required.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseMessage, Attributable을 구성하며; 구성된 필드는 위에 나열됩니다.

AssistantMessage

에이전트로부터의 메시지. 턴이 도구 호출만으로 구성될 수 있어 콘텐츠는 선택입니다.

Fields:

  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • id — string, required. 대화 안에서 메시지를 식별합니다.
  • role — "assistant", required. 메시지를 보낸 사람. 각 메시지 정의는 이것을 단일 값으로 좁힙니다.
  • name — string, optional. 작성자 표시 이름(선택).
  • encryptedValue — string, optional. 이 메시지에 속한 프로바이더의 불투명한 아티팩트로, 소비자가 저장하고 나중 턴에 반환합니다.
  • metadata — Metadata, optional. 이 메시지에 붙는 추가 정보.
  • content — string, optional. 에이전트가 말한 것(말했다면).
  • toolCalls — ToolCall의 배열, optional. 이 턴이 한 도구 호출.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseMessage, Attributable을 구성하며; 구성된 필드는 위에 나열됩니다.

UserMessage

애플리케이션을 쓰는 사람으로부터의 메시지.

Fields:

  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • id — string, required. 대화 안에서 메시지를 식별합니다.
  • role — "user", required. 메시지를 보낸 사람. 각 메시지 정의는 이것을 단일 값으로 좁힙니다.
  • name — string, optional. 작성자 표시 이름(선택).
  • encryptedValue — string, optional. 이 메시지에 속한 프로바이더의 불투명한 아티팩트로, 소비자가 저장하고 나중 턴에 반환합니다.
  • metadata — Metadata, optional. 이 메시지에 붙는 추가 정보.
  • content — string | ContentPart의 배열, required. 사람이 보낸 것: 평문이거나, 다중 모달 메시지를 위한 정렬된 부분 목록.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

BaseMessage, Attributable을 구성하며; 구성된 필드는 위에 나열됩니다.

ToolMessage

도구가 반환한 것을 대화 안의 메시지로 담습니다. name을 담지 않으므로 BaseMessage를 구성하지 않고 단독으로 섭니다.

Fields:

  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • id — string, required. 메시지를 식별합니다.
  • role — "tool", required. 고정. 이 메시지는 BaseMessage를 구성하지 않으므로 상속이 아니라 여기 선언됩니다.
  • content — string | ContentPart의 배열, required. 도구가 반환한 것: 평문이거나 정렬된 부분 목록. 구조화 데이터를 반환하는 도구는 그것을 텍스트로 직렬화합니다. 미디어는 그들만의 부분으로 이동합니다.
  • toolCallId — string, required. 이것이 응답하는 호출.
  • error — string, optional. 도구가 실패했을 때 왜 실패했는지. 콘텐츠를 대신하는 것이 아니라 콘텐츠와 함께 존재해, 실패에도 부분 결과가 살아남습니다.
  • encryptedValue — string, optional. 이 메시지에 속한 프로바이더의 불투명한 아티팩트.
  • metadata — Metadata, optional. 이 메시지에 붙는 추가 정보.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

Attributable을 구성합니다; 구성된 필드는 위에 나열됩니다.

ActivityMessage

대화 콘텐츠가 아닌 구조적 진행으로, 시퀀스에서 자기 자리를 지키도록 메시지로 구체화되었습니다. 콘텐츠가 객체지 문자열이 아니므로 BaseMessage를 구성하지 않고 단독으로 섭니다.

Fields:

  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • id — string, required. 메시지를 식별합니다.
  • role — "activity", required. 고정. 이 메시지는 BaseMessage를 구성하지 않으므로 상속이 아니라 여기 선언됩니다.
  • activityType — string, required. 어떤 종류의 activity인지. 열린 문자열입니다. 그 집합은 생산자의 것입니다.
  • content — object, 키 기준으로 열림, required. activity의 페이로드, 키 기준으로 열림.
  • metadata — Metadata, optional. 이 메시지에 붙는 추가 정보.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

Attributable을 구성합니다; 구성된 필드는 위에 나열됩니다.

ReasoningMessage

에이전트의 추론 범위로, 메시지로 구체화되었습니다. name을 담지 않으므로 BaseMessage를 구성하지 않고 단독으로 섭니다.

Fields:

  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • id — string, required. 메시지를 식별합니다.
  • role — "reasoning", required. 고정. 이 메시지는 BaseMessage를 구성하지 않으므로 상속이 아니라 여기 선언됩니다.
  • content — string, required. 추론 텍스트.
  • encryptedValue — string, optional. 이 메시지에 속한 프로바이더의 불투명한 추론 아티팩트.
  • metadata — Metadata, optional. 이 메시지에 붙는 추가 정보.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

Attributable을 구성합니다; 구성된 필드는 위에 나열됩니다.

Message

대화 안의 어떤 메시지든. role로 판별됩니다.

멤버:

role로 판별됩니다.

Role

구체화된 메시지가 가질 수 있는 모든 역할.

값:

developer · system · assistant · user · tool · activity · reasoning

실행 입력 (Run Input)

실행을 시작하는 요청과, 오직 그것만이 담는 타입. 행동: 실행 입력 (Run Input).

TextPart

텍스트 부분.

Fields:

  • type — "text", required. 판별자.
  • id — string, optional. 메시지 안에서 이 부분을 식별합니다. 선택이고 아직 아무것도 읽지 않습니다. 어시스턴트 메시지도 부분을 담게 되면 스트리밍된 부분이 내역의 항목과 일치될 수 있도록 예약된 것입니다.
  • text — string, required. 텍스트.
  • metadata — null을 제외한 어떤 JSON 값, optional. 이 부분에 대한 추가 정보. 미디어 부분에서와 같이 제약되지 않습니다. 텍스트 검색 히트가 그 출처와 제목을 담는 곳이며, 프로토콜이 검색 결과 부분을 모델링하는 대신입니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

DataSource

바이트가 인라인으로 담깁니다.

Fields:

  • type — "data", required. 판별자.
  • value — string, required. 바이트, base64 인코딩. 2020-12에서 contentEncoding은 제약이 아니라 주석이므로, 잘못된 문자열도 여기서는 여전히 검증됩니다. 그것을 거부하는 것은 디코더의 몫입니다. 인코딩: base64.
  • mimeType — string, required. 바이트가 무엇인지. URL 소스와 달리 여기서 required인 이유는 소비자에게 그것을 어떻게 읽을지 말해 줄 다른 것이 없기 때문입니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

UrlSource

URL로 참조되는 바이트로, 필요한 사람이 가져옵니다.

Fields:

  • type — "url", required. 판별자.
  • value — string, required. URL. 의도적으로 URI 형식으로 제약되지 않아서, 생산자가 이미 쓰는 스킴이 여기서 거부되지 않습니다.
  • mimeType — string, optional. 생산자가 알 때 리소스가 무엇인지. 응답이 말할 수 있어 선택입니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

FileSource

프로바이더가 발급한 핸들로 이름 붙은 채, 바이트가 이미 프로바이더에 있습니다. OpenAI나 Anthropic 파일 id, Gemini 파일 URI, 그 프로바이더만 읽을 수 있는 스토리지 URL. 바이트는 이동하지 않고 아무것도 가져오지 않습니다. 핸들을 만든 프로바이더만 그것을 해석할 수 있고, 그럴 수 없는 피어는 쓸 수 없는 다른 부분을 버리듯 부분을 버립니다.

Fields:

  • type — "file", required. 판별자.
  • value — string, required. 프로바이더가 발급한 그대로의 핸들. 불투명합니다. 소비자는 그것을 가져오거나, 파싱하거나, 스킴을 읽으면 안 됩니다(MUST NOT).
  • provider — string, optional. 생산자가 알 때 누가 핸들을 발급했는지. 선택. 에이전트는 이미 자신이 말하는 프로바이더를 압니다. 있을 때는 TokenUsage.provider가 쓰는 소문자 벤더 id(openai, anthropic, google)여야 하며(SHOULD), 그래서 피어가 보내기 전에 핸들이 자신이 쓸 수 있는 것인지 알 수 있습니다.
  • mimeType — string, optional. 생산자가 알 때 파일이 무엇인지. 선택. 바이트를 가진 프로바이더가 알기 때문입니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

PartSource

미디어 부분의 바이트가 오는 곳: 인라인으로 담기거나, URL로 참조되거나, 발급한 핸들 아래 프로바이더에 이미 있거나.

멤버:

type으로 판별됩니다.

ImagePart

이미지 부분.

Fields:

  • type — "image", required. 판별자.
  • id — string, optional. 메시지 안에서 이 부분을 식별합니다. 선택이고 아직 아무것도 읽지 않습니다. 텍스트 부분에서와 같이 예약됨.
  • source — PartSource, required. 이미지가 오는 곳.
  • metadata — null을 제외한 어떤 JSON 값, optional. 이 부분에 대한 추가 정보. 객체가 아니라 제약되지 않습니다. SDK에서 상속된 것으로, 그것들은 레코드가 아니라 unknown으로 선언하며; README의 알려진 차이점 아래에 해결되지 않고 나열됩니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

AudioPart

오디오 부분.

Fields:

  • type — "audio", required. 판별자.
  • id — string, optional. 메시지 안에서 이 부분을 식별합니다. 선택이고 아직 아무것도 읽지 않습니다. 텍스트 부분에서와 같이 예약됨.
  • source — PartSource, required. 오디오가 오는 곳.
  • metadata — null을 제외한 어떤 JSON 값, optional. 이 부분에 대한 추가 정보. 다른 미디어 부분에서와 같이 제약되지 않음.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

VideoPart

비디오 부분.

Fields:

  • type — "video", required. 판별자.
  • id — string, optional. 메시지 안에서 이 부분을 식별합니다. 선택이고 아직 아무것도 읽지 않습니다. 텍스트 부분에서와 같이 예약됨.
  • source — PartSource, required. 비디오가 오는 곳.
  • metadata — null을 제외한 어떤 JSON 값, optional. 이 부분에 대한 추가 정보. 다른 미디어 부분에서와 같이 제약되지 않음.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

DocumentPart

문서 부분.

Fields:

  • type — "document", required. 판별자.
  • id — string, optional. 메시지 안에서 이 부분을 식별합니다. 선택이고 아직 아무것도 읽지 않습니다. 텍스트 부분에서와 같이 예약됨.
  • source — PartSource, required. 문서가 오는 곳.
  • metadata — null을 제외한 어떤 JSON 값, optional. 이 부분에 대한 추가 정보. 다른 미디어 부분에서와 같이 제약되지 않음.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

ContentPart

메시지 본문의 한 부분: 사람이 user 메시지로 보내는 것, 또는 도구가 tool 메시지로 반환하는 것. type으로 판별됩니다. 방향이 아니라 부분이 무엇인지로 이름 붙는데, 같은 부분이 user 메시지 안에서 모델로 들어가고 tool 결과 안에서 스트림 밖으로 나오기 때문입니다.

멤버:

type으로 판별됩니다.

Tool

에이전트가 호출할 수 있는 도구.

Fields:

  • name — string, required. 에이전트가 호출할 때 쓸 도구 이름.
  • description — string, required. 언제 쓸지 결정하기 위해 에이전트가 보는, 도구가 하는 일.
  • parameters — null을 제외한 어떤 JSON 값, optional. 도구 인수를 설명하는 JSON Schema. 불투명하게 운반됩니다. 프로토콜은 그것을 제약하거나 검증하지 않습니다. 선택. 세 SDK가 이미 그렇게 취급하고, 인수를 받지 않는 도구는 선언할 것이 없기 때문입니다. 없는 스키마와 빈 스키마는 에이전트에게 같은 뜻입니다.
  • metadata — Metadata, optional. 자신의 렌더링이나 라우팅 정보를 도구에 붙이는 소비자를 위한, 도구에 대한 추가 정보.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

Context

대화와 구별되는, 실행을 위해 에이전트에게 주어지는 이름 있는 환경 정보 조각.

Fields:

  • description — string, required. 에이전트가 해석하도록 이 컨텍스트가 무엇인지.
  • value — string, required. 컨텍스트 그 자체.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

ResumeEntry

그것에서 이어지는 실행에 보내지는, 하나의 인터럽트에 대한 답.

Fields:

  • interruptId — string, required. 응답받는 인터럽트.
  • status — "resolved" | "cancelled", required. 인터럽트가 응답되었는지 버려졌는지.
  • payload — null을 제외한 어떤 JSON 값, optional. 에이전트가 물어보고 작용할 답. 어떤 JSON 값.
  • metadata — Metadata, optional. 답 그 자체인 payload와 대조되는, 서명이나 라우팅 키 같은 응답에 대한 봉투 정보.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

RunAgentInput

에이전트를 실행하라는 요청. RUN_STARTED.input으로도 되돌려 보내집니다. 오직 threadId, runId, messages만 required입니다. 그것들은 SDK들이 이미 동의하는 세 가지고, tools와 context는 없는 키와 빈 배열이 같은 뜻이라 그것들을 required로 만들면 생산자가 잘못할 수 있는 것을 잡지 못하기 때문입니다.

Fields:

  • threadId — string, required. 이 실행이 속한 대화.
  • runId — string, required. 이 실행을 식별합니다.
  • protocolVersion — string, optional. 이 소비자가 말하는 프로토콜 버전(예: "1.0"). 없으면 프로토콜이 버전을 담기 전에 만들어진 입력입니다. 산문의 버저닝 규칙이 각 측이 그것으로 무엇을 하는지 지배합니다. 전송이 아니라 대역 안에서 보내져, 기록된 교환이 자기 서술적으로 유지됩니다.
  • parentRunId — string, optional. 이 실행을 만든 실행.
  • state — null을 제외한 State, optional. 실행이 시작하는 상태.
  • messages — Message의 배열, required. 지금까지의 대화를 순서대로.
  • tools — Tool의 배열, optional. 에이전트가 호출할 수 있는 도구. 없으면 없음.
  • context — Context의 배열, optional. 실행을 위한 환경 정보. 없으면 없음.
  • forwardedProps — null을 제외한 어떤 JSON 값, optional. 에이전트로 그대로 통과되는 애플리케이션 특화 값. 어떤 JSON 값.
  • resume — ResumeEntry의 배열, optional. 이 실행이 하나에서 이어질 때, 이전 실행을 끝낸 인터럽트에 대한 답.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

결과와 인터럽트 (Outcomes and Interrupts)

실행과 하위 에이전트가 끝남을 어떻게 보고하는지, 그리고 중단된 실행이 무엇을 기다리는지. 행동: 인터럽트와 재개 (Interrupts and Resume).

RunFinishedSuccessOutcome

실행이 완료되었습니다. 없는 outcome과 동등합니다. 다른 모든 객체처럼 닫혀 있는데, 그것이 또한 일시 중단 형제의 인터럽트를 담지 못하게 하는 이유입니다 — 처리되지 않은 인터럽트가 있는 성공은 오히려 확장이 아니라 모순이기 때문입니다. 완료된 실행은 여전히 애플리케이션이 응답할 프런트엔드 도구 호출을 남겼을 수 있습니다. pendingToolCallIds가 그것들을 이름 붙입니다.

Fields:

  • type — "success", required. 판별자.
  • pendingToolCallIds — string의 배열, optional. 이 실행이 시작하고 응답받지 않은 도구 호출 — 실행 안에 TOOL_CALL_RESULT가 없음 — 을, 만들어진 순서대로 다음 입력의 messages에서 애플리케이션이 응답하도록. 없거나 비면 생산자가 아무것도 이름 붙이지 않았고, 소비자는 목록을 스트림에서 유도합니다. 그 외에는 그것이 목록이고 스트림과 일치합니다. 성공 outcome에 있는 이유는 프런트엔드 도구 호출에서 멈춘 실행은 완료된 실행이기 때문입니다. 애플리케이션이 스레드를 이어갈지는 애플리케이션 자신의 결정이라, 생산자는 아는 것만 보고 더 이상은 아닙니다. 각 항목: TOOL_CALL_START가 운반하는 것 같은 도구 호출 id.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

Interrupt

계속하기 전에 실행이 밖에서 필요로 하는 것 — 승인이나 빠진 값 같은.

Fields:

  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • id — string, required. 인터럽트를 식별합니다. 재개 항목은 이 id로 응답합니다.
  • reason — string, required. 실행이 왜 멈췄는지. 열거형이 아니라 열린 문자열입니다. 프로토콜은 에이전트가 입력을 필요로 하는 모든 이유를 분류하려 하지 않습니다.
  • message — string, optional. 응답하는 사람을 위한 사람이 읽을 수 있는 프롬프트.
  • toolCallId — string, optional. 도구 승인일 때, 이 인터럽트가 다루는 도구 호출.
  • responseSchema — object, 키 기준으로 열림, optional. 이 인터럽트가 기대하는 답을 설명하는 JSON Schema라, 소비자가 그것을 위한 폼을 만들 수 있습니다. 불투명하게 운반됩니다. 프로토콜은 그것을 제약하거나 검증하지 않습니다. TypeScript와 Python이 둘 다 그렇게 선언하므로 객체로 제한됩니다. .NET은 어떤 JSON으로든 잡고, 이 스키마를 위임한 티켓은 그것을 임의 JSON 필드 중에 나열합니다. 그것을 제약하는 둘을 따르면 참조 클라이언트가 거부하는 문서를 스키마가 받아들이는 것을 막지만, JSON Schema가 또한 허용하는 불리언 스키마 — "어떤 답이든"을 위한 순수한 true — 를 거부하는 비용이 듭니다. 해결되지 않고 알려진 차이점으로 기록됩니다.
  • expiresAt — string, optional. 언제 인터럽트가 응답 가능하지 않게 되는지. date-time 형식이 아니라 의도적으로 제약되지 않는데, 생산자들이 이미 표현에 대해 불일치하고 여기서 조이면 오늘 작동하는 스트림을 거부하게 되기 때문입니다. 문서화된 관례는 ISO 8601이고, 이 값을 비교하는 소비자는 그것을 날짜로 파싱하므로, 그렇지 않은 값은 인터럽트가 영원히 만료되지 않은 것처럼 보이게 합니다.
  • metadata — Metadata, optional. 이 인터럽트에 붙는 추가 정보.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

Attributable을 구성합니다; 구성된 필드는 위에 나열됩니다.

RunFinishedInterruptOutcome

실행이 밖의 무언가를 기다리며 멈췄습니다. 재개는 그 재개 항목들이 이 인터럽트들에 답하는 새 실행을 시작하는 것을 뜻합니다.

Fields:

  • type — "interrupt", required. 판별자.
  • interrupts — Interrupt의 배열 (min 1), required. 실행이 기다리는 것. 하나 이상. 응답할 것이 없는 인터럽트 outcome은 소비자를 할 일 없이 남기기 때문입니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

RunFinishedCancelledOutcome

실행이 완료되기 전에, 실행하던 누군가에 의해 멈추고, 실패하지는 않았습니다. 성공도 인터럽트도 아닙니다. 결과로 만들어진 것이 없고 기다리는 것도 없으므로, 스레드의 다음 실행은 재개가 아니라 평범한 새 실행입니다. 형제처럼 닫혀 있습니다. 취소된 실행은 담을 인터럽트가 없습니다. 1.0 이전에 스키마에 이름 붙은 이유는 소비자가 인식하지 못하는 outcome은 떼어내 성공으로 읽히기 때문입니다 — 나중에 추가된 취소는 모든 1.0 소비자에게 완료된 실행으로 도달할 것입니다.

Fields:

  • type — "cancelled", required. 판별자.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

RunFinishedOutcome

실행이 왜 끝났는지.

멤버:

type으로 판별됩니다.

SubagentFinishedSuccessOutcome

하위 에이전트가 작업을 완료했습니다. 없는 outcome과 동등합니다.

Fields:

  • type — "success", required. 판별자.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

SubagentFinishedSuspendedOutcome

하위 에이전트가 외부 입력을 기다리며 멈췄습니다. 이 스트림에는 종료지만 하위 에이전트에는 아닙니다. 인터럽트가 응답되면 나중 실행이 같은 호출을 이어갈 수 있습니다.

Fields:

  • type — "suspended", required. 판별자.
  • interruptIds — string의 배열, optional. 이 하위 에이전트가 스스로 올린 실행 수준 인터럽트. 비거나 없을 수 있습니다. 자손이 인터럽트해서 일시 중단된 하위 에이전트는 자기 인터럽트를 소유하지 않습니다. 각 항목: Interrupt.id.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

SubagentFinishedOutcome

실행의 하위 에이전트 세그먼트가 왜 끝났는지. RunFinishedOutcome을 한 단계 아래로 반영합니다.

멤버:

type으로 판별됩니다.

공통 타입 (Common Types)

위 섹션들이 공유하는 모든 것.

Metadata

이벤트, 메시지, 도구 호출, 도구, 인터럽트 또는 재개 항목에 붙는 추가 정보. 키 기준으로 열립니다. 키 아래에는 어떤 JSON 값이라도 허용되는데, 거기의 null은 의미 있는 데이터이기 때문입니다. 객체 자체는 없을 수 있지만 있을 때 결코 null이 아닙니다. ag-ui 키는 프로토콜 자신의 용도로 예약됩니다. 예약은 관례에 의한 것입니다. 키 값의 형태를 검증하는 것은 키 기준으로 열려 있다는 것과 모순되기 때문입니다.

타입: object, 키 기준으로 열림

SubagentRunId

하위 에이전트 정의의 재사용 가능한 이름이 아니라 하나의 하위 에이전트 호출을 위한 불투명한 핸들입니다. 같은 하위 에이전트의 두 호출은 서로 다른 두 값을 담습니다. 하위 에이전트의 이름이 agentId를 반영하는 것처럼, runId를 한 단계 아래로 반영하도록 이름 붙었습니다.

타입: string

State

에이전트 상태. 어떤 JSON 값. 프로토콜은 상태를 해석하지 않고 운반하므로, 객체, 배열, 문자열, 숫자가 모두 유효합니다.

타입: 어떤 JSON 값

JsonPointer

RFC 6901이 정의하는 JSON Pointer. 전체 문서를 뜻하는 빈 문자열이거나, 물결표가 ~0으로 슬래시가 ~1로 이스케이프되는 슬래시 접두사 참조 토큰들의 시퀀스. 선행 슬래시가 없는 값이나, 0이나 1 외의 것이 뒤따르는 물결표는 JSON Pointer가 아닙니다.

타입: ^(/([^/~]|~[01])*)*$와 일치하는 string

AddOperation

path에 value를 삽입합니다. RFC 6902 4.1절.

Fields:

  • op — "add", required. add 연산의 판별자.
  • path — JsonPointer, required. 값을 삽입할 위치.
  • value — 어떤 JSON 값, required. 삽입할 값. 어떤 JSON 값 — 추가하는 것이 정당한 null 포함.

열린 객체: 이것들 너머의 멤버는 프로토콜 법적이고 결코 떼어내지 않습니다.

RemoveOperation

path의 값을 제거합니다. RFC 6902 4.2절.

Fields:

  • op — "remove", required. remove 연산의 판별자.
  • path — JsonPointer, required. 제거할 것.

열린 객체: 이것들 너머의 멤버는 프로토콜 법적이고 결코 떼어내지 않습니다.

ReplaceOperation

path의 값을 교체합니다. RFC 6902 4.3절.

Fields:

  • op — "replace", required. replace 연산의 판별자.
  • path — JsonPointer, required. 교체할 것.
  • value — 어떤 JSON 값, required. 교체물. 어떤 JSON 값 — null 포함.

열린 객체: 이것들 너머의 멤버는 프로토콜 법적이고 결코 떼어내지 않습니다.

MoveOperation

from의 값을 path로 옮깁니다. RFC 6902 4.4절.

Fields:

  • op — "move", required. move 연산의 판별자.
  • from — JsonPointer, required. 값이 옮겨지는 곳.
  • path — JsonPointer, required. 값이 옮겨지는 곳.

열린 객체: 이것들 너머의 멤버는 프로토콜 법적이고 결코 떼어내지 않습니다.

CopyOperation

from의 값을 path로 복사합니다. RFC 6902 4.5절.

Fields:

  • op — "copy", required. copy 연산의 판별자.
  • from — JsonPointer, required. 값이 복사되는 곳.
  • path — JsonPointer, required. 값이 복사되는 곳.

열린 객체: 이것들 너머의 멤버는 프로토콜 법적이고 결코 떼어내지 않습니다.

TestOperation

path의 값이 value와 같음을 단언합니다. RFC 6902 4.6절.

Fields:

  • op — "test", required. test 연산의 판별자.
  • path — JsonPointer, required. 비교할 것.
  • value — 어떤 JSON 값, required. 대상이 같아야 하는 값. 어떤 JSON 값 — null 포함.

열린 객체: 이것들 너머의 멤버는 프로토콜 법적이고 결코 떼어내지 않습니다.

JsonPatchOperation

단일 RFC 6902 연산. op로 판별되는 연산 형태 중 정확히 하나가 일치해야 합니다. 프로토콜 자신의 객체와 달리 연산은 열려 있습니다. RFC 6902 4절은 연산이 정의하지 않는 멤버를 거부가 아니라 무시하도록 요구하므로, 남은 값을 담은 remove도 유효한 패치입니다. RFC의 규칙 두 가지는 형태가 아니라 값 사이의 관계라 어떤 정적 스키마도 표현할 수 없고 여기서 어느 것도 검사되지 않습니다: from이 자기 path의 진접두사인 move(4.4절), 그리고 포인터가 대상 문서에서 해석되지 않는 모든 연산. 둘 다 적용자가 거부할 것입니다.

멤버:

op로 판별됩니다.

JsonPatch

STATE_DELTA.delta와 ACTIVITY_DELTA.patch가 참조하는, RFC 6902가 정의하는 JSON Patch 문서: 대상 문서에 적용되는 정렬된 연산 시퀀스. 빈 배열은 유효한 no-op 패치입니다. 연산이 실제로 대상 문서에 적용되는지는 런타임 질문이고 RFC 6902가 적용자에게 맡기며, 여기서의 구조적 유효성은 그것에 대해 아무것도 말하지 않습니다.

타입: JsonPatchOperation의 배열

FunctionCall

도구 호출의 이름과 인수.

Fields:

  • name — string, required. 호출되는 도구.
  • arguments — string, required. 파싱된 JSON이 아니라 JSON 문자열로서의 인수. 모델이 유효하지 않은 JSON인 인수를 만들 수 있고, 프로토콜 경계에서 그것을 잃으면 그것을 처리해야 하는 소비자로부터 결함이 숨겨지므로, 쓰인 그대로 유지됩니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

ToolCall

어시스턴트 메시지가 한 호출. 여러 호출이 하나의 부모를 공유할 수 있으므로, 자기 하위 에이전트 귀속을 담지 않고 담는 메시지의 것을 상속합니다.

Fields:

  • id — string, required. 호출을 식별합니다. 응답하는 도구 메시지가 이것을 자기 toolCallId로 담습니다.
  • type — "function", required. 프로토콜이 모델링하는 유일한 호출 종류.
  • function — FunctionCall, required. 무엇을 무엇과 함께 호출하는지.
  • encryptedValue — string, optional. 이 호출에 속한 프로바이더의 불투명한 아티팩트.
  • metadata — Metadata, optional. 이 호출에 붙는 추가 정보. 여러 호출이 하나의 부모를 공유하고 그것들을 합치면 결과가 그 순서에 달라지므로, 담는 메시지로 접히는 대신 여기 운반됩니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

TokenUsage

프로토콜 자신의 회계에서 하나의 프로바이더·모델에 대한 토큰 수. 모든 수는 총합이거나 그 한 부분이므로, 다른 프로바이더의 항목들이 이중 계산 없이 합산됩니다. inputTokens와 outputTokens가 총합이고, reasoningTokens, cachedInputTokens, cacheWriteInputTokens는 그것들의 일부이며 결코 그것들에 더해지지 않습니다. totalTokens는 두 총합의 합입니다. 모든 필드는 라벨이거나 숫자입니다 — 내용이나 식별을 담는 것은 없으며, 프롬프트, 완성, 메시지, 그리고 스레드·실행·사용자 식별자가 없습니다.

Fields:

  • provider — string, optional. 요청을 제공한 프로바이더.
  • model — string, optional. 요청을 제공한 모델.
  • inputTokens — integer (min 0, max 9007199254740991), optional. 호출이 청구된 모든 프롬프트 토큰: 프로바이더 캐시에서 읽은 토큰, 캐시에 쓴 토큰, 그리고 오디오나 다른 비텍스트 입력이 모두 여기 쏩니다. cachedInputTokens와 cacheWriteInputTokens는 이 수를 나누고 결코 더하지 않습니다 — 캐시 수를 더 작은 입력 수 옆에 보고하는 프로바이더는 항목이 떠나기 전에 생산자가 더해 넣습니다. timestamp처럼 그리고 같은 이유로 한정됩니다. JSON 안전 정수 범위를 넘는 수는 라운드트립을 살아남지 못해, 소비자가 생산자가 쓴 것과 다른 수를 조용히 읽기 때문입니다.
  • outputTokens — integer (min 0, max 9007199254740991), optional. 모든 생성 토큰, 프로바이더가 구분하는 추론 포함. reasoningTokens는 이 수를 나누고 결코 더하지 않습니다 — 추론 토큰을 더 작은 완성 수 옆에 보고하는 프로바이더는 생산자가 더해 넣습니다.
  • totalTokens — integer (min 0, max 9007199254740991), optional. 위 회계 아래의 inputTokens 더하기 outputTokens. 생산자는 프로바이더 총합을 복사하기보다 계산할 수 있고(MAY), 그 총합이 같은 방식으로 셀 때에만 프로바이더 총합을 복사합니다. 그래서 소비자는 이 필드를 다른 두 개의 합으로 읽을 수 있습니다.
  • reasoningTokens — integer (min 0, max 9007199254740991), optional. 프로바이더가 구분할 때 추론에 쓴 출력 토큰. outputTokens의 일부이지 그것에 더해진 게 아닙니다.
  • cachedInputTokens — integer (min 0, max 9007199254740991), optional. 프로바이더 캐시에서 읽은 입력 토큰. inputTokens의 일부이지 그것에 더해진 게 아니고, cacheWriteInputTokens와 서로소입니다.
  • cacheWriteInputTokens — integer (min 0, max 9007199254740991), optional. 프로바이더가 구분할 때 이 호출에서 캐시에 쓴 입력 토큰. inputTokens의 일부이지 그것에 더해진 게 아니고, cachedInputTokens와 서로소입니다. 프로바이더가 캐시 읽기와 다른 가격으로 캐시 쓰기를 책정하므로, 비용을 계산하는 소비자는 그것 없이는 못 하도록 자기 필드입니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

ReasoningEncryptedValueSubtype

REASONING_ENCRYPTED_VALUE가 메시지에 속하는지 도구 호출에 속하는지.

값:

tool-call · message

SubagentInfo

부모 에이전트가 호출할 수 있는 하위 에이전트를 설명합니다.

Fields:

  • name — string, required. 하위 에이전트의 고유한 이름 또는 식별자.
  • description — string, optional. 이 하위 에이전트가 특화된 것. 클라이언트가 에이전트 선택 UI를 만드는 데 돕습니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

IdentityCapabilities

에이전트에 대한 기본 메타데이터. 발견 UI, 에이전트 마켓플레이스, 디버깅에 유용합니다. 클라이언트가 에이전트 정보를 표시하길 원하거나, 여러 에이전트가 있고 사용자가 하나를 골라야 할 때 설정하세요.

Fields:

  • name — string, optional. UI와 에이전트 선택기에서 보이는 사람이 읽을 수 있는 이름.
  • type — string, optional. 이 에이전트를 구동하는 프레임워크나 플랫폼(예: "langgraph", "mastra", "crewai").
  • description — string, optional. 이 에이전트가 하는 일 — 사용자와 라우팅 로직이 언제 쓸지 결정하는 데 돕습니다.
  • version — string, optional. 에이전트의 시맨틱 버전(예: "1.2.0"). 호환성 검사에 유용합니다.
  • provider — string, optional. 이 에이전트를 유지하는 조직이나 팀.
  • documentationUrl — string, optional. 에이전트 문서나 홈페이지 URL.
  • metadata — Metadata, optional. 통합 특화 신원 정보를 위한 임의 키-값 쌍.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

TransportCapabilities

에이전트가 지원하는 전송 메커니즘을 선언합니다. 클라이언트는 이것으로 최상의 연결 전략을 고릅니다. 에이전트가 실제로 다루는 전송에만 true로 설정하고, 지원하지 않는 것은 생략하거나 false로 설정하세요.

Fields:

  • streaming — boolean, optional. 에이전트가 SSE로 응답을 스트리밍하면 true. 대부분의 에이전트가 이를 활성화합니다.
  • websocket — boolean, optional. 에이전트가 영속 WebSocket 연결을 받으면 true.
  • httpBinary — boolean, optional. 에이전트가 AG-UI 바이너리 프로토콜(HTTP 위의 protobuf)을 지원하면 true.
  • pushNotifications — boolean, optional. 에이전트가 실행이 끝난 후 웹훅으로 비동기 업데이트를 보낼 수 있으면 true.
  • resumable — boolean, optional. 에이전트가 시퀀스 번호로 중단된 스트림 재개를 지원하면 true.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

ToolsCapabilities

도구 호출 능력. 에이전트 자신이 제공하는 도구(items에 나열)와 클라이언트가 RunAgentInput.tools로 런타임에 전달하는 도구를 구분합니다. 에이전트가 함수를 호출하거나, 웹을 검색하거나, 코드를 실행할 수 있을 때 활성화하세요.

Fields:

  • supported — boolean, optional. 에이전트가 도구 호출을 아예 할 수 있으면 true. items가 있어도 도구 호출이 비활성임을 명시적으로 알리려면 false로 설정.
  • items — Tool의 배열, optional. 이 에이전트가 스스로 제공하는 도구(완전한 JSON Schema 정의). RunAgentInput.tools로 전달되는 클라이언트 제공 도구와 구별됩니다.
  • parallelCalls — boolean, optional. 에이전트가 단일 단계 안에서 여러 도구를 동시에 호출할 수 있으면 true.
  • clientProvided — boolean, optional. 에이전트가 런타임에 클라이언트가 제공한 도구를 받아 사용하면 true.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

OutputCapabilities

출력 형식 지원. 에이전트가 JSON 스키마를 준수하는 응답을 반환할 수 있을 때 structuredOutput을 활성화하세요. 프로그램적 소비에 유용합니다.

Fields:

  • structuredOutput — boolean, optional. 에이전트가 제공된 스키마와 일치하는 구조화된 JSON 출력을 만들 수 있으면 true.
  • supportedMimeTypes — string의 배열, optional. 에이전트가 만들 수 있는 MIME 타입(예: ["text/plain", "application/json"]). 에이전트가 평문만 만들면 생략.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

StateCapabilities

상태 및 메모리 관리 능력. 클라이언트에게 에이전트가 공유 상태를 어떻게 다루고 대화 컨텍스트가 실행 간 지속되는지 말해 줍니다.

Fields:

  • snapshots — boolean, optional. 에이전트가 STATE_SNAPSHOT 이벤트(전체 상태 교체)를 내보내면 true.
  • deltas — boolean, optional. 에이전트가 STATE_DELTA 이벤트(JSON Patch 증분 업데이트)를 내보내면 true.
  • memory — boolean, optional. 에이전트가 현재 스레드 너머의 장기 메모리(예: 벡터 저장소, 지식 베이스, 또는 크로스 세션 회상)를 가지면 true.
  • persistentState — boolean, optional. 상태가 같은 스레드 안의 여러 실행에 걸쳐 보존되면 true. false면 실행마다 상태가 리셋됩니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

MultiAgentCapabilities

멀티 에이전트 조정 능력. 에이전트가 다른 에이전트에게 작업을 오케스트레이션하거나 핸드오프할 수 있을 때 활성화하세요.

Fields:

  • supported — boolean, optional. 에이전트가 어떤 형태의 멀티 에이전트 조정에 참여하면 true.
  • delegation — boolean, optional. 에이전트가 통제를 유지하면서 다른 에이전트에게 하위 작업을 위임할 수 있으면 true.
  • handoffs — boolean, optional. 에이전트가 대화를 완전히 다른 에이전트로 이전할 수 있으면 true.
  • subagents — SubagentInfo의 배열, optional. 이 에이전트가 호출할 수 있는 하위 에이전트 목록. 클라이언트가 에이전트 선택 UI를 만드는 데 돕습니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

ReasoningCapabilities

추론 및 사고 능력. 에이전트가 내부 사고 과정(예: chain-of-thought, extended thinking)을 노출할 때 활성화하세요.

Fields:

  • supported — boolean, optional. 에이전트가 클라이언트에게 보이는 추론/사고 토큰을 만들면 true.
  • streaming — boolean, optional. 추론 토큰이 한 번에 반환되는 대신 증분적으로 스트리밍되면 true.
  • encrypted — boolean, optional. 추론 콘텐츠가 암호화(제로 데이터 보존 모드)되면 true. 클라이언트는 읽을 수 있는 콘텐츠 대신 불투명한 encryptedValue 필드를 기대해야 합니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

MultimodalInputCapabilities

에이전트가 입력으로 받을 수 있는 양식(modality). 클라이언트는 이것으로 파일 업로드 버튼, 오디오 녹음기, 이미지 선택기 등을 보이거나 숨깁니다.

Fields:

  • image — boolean, optional. 에이전트가 이미지 입력(예: 스크린샷, 사진)을 처리할 수 있으면 true.
  • audio — boolean, optional. 에이전트가 오디오 입력(음성, 녹음)을 처리할 수 있으면 true.
  • video — boolean, optional. 에이전트가 비디오 입력을 처리할 수 있으면 true.
  • pdf — boolean, optional. 에이전트가 PDF 문서를 처리할 수 있으면 true.
  • file — boolean, optional. 에이전트가 임의 파일 업로드, 즉 image, audio, video, document 부분이 다루지 않는 종류의 파일을 처리할 수 있으면 true. 파일이 어떻게 도착하는지는 말하지 않습니다. 부분의 source(인라인, URL, 프로바이더 핸들)는 별개 질문입니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

MultimodalOutputCapabilities

에이전트가 출력으로 만들 수 있는 양식. 클라이언트는 이것으로 에이전트 응답 안의 풍부한 콘텐츠를 예상합니다.

Fields:

  • image — boolean, optional. 에이전트가 응답의 일부로 이미지를 생성할 수 있으면 true.
  • audio — boolean, optional. 에이전트가 오디오 출력(텍스트-음성, 오디오 파일)을 만들 수 있으면 true.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

MultimodalCapabilities

다중 모달 입력 및 출력 지원. 에이전트가 받는 것과 만드는 것을 클라이언트가 독립적으로 물을 수 있도록 입력·출력 하위 객체로 구성됩니다.

Fields:

  • input — MultimodalInputCapabilities, optional. 에이전트가 입력으로 받을 수 있는 양식(이미지, 오디오, 비디오, PDF, 파일).
  • output — MultimodalOutputCapabilities, optional. 에이전트가 출력으로 만들 수 있는 양식(이미지, 오디오).

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

ExecutionCapabilities

실행 제어와 한계. 클라이언트가 에이전트 실행이 얼마나 오래 걸리거나 몇 단계일지 기대치를 세울 수 있도록 선언하세요.

Fields:

  • codeExecution — boolean, optional. 에이전트가 실행 중에 코드(예: Python, JavaScript)를 실행할 수 있으면 true.
  • sandboxed — boolean, optional. 코드 실행이 샌드박스나 격리 환경에서 이뤄지면 true. codeExecution이 true일 때만 의미가 있습니다.
  • maxIterations — integer (min 0, max 9007199254740991), optional. 에이전트가 실행당 수행할 최대 도구 호출/추론 반복 횟수. 클라이언트가 진행을 표시하거나 타임아웃 기대치를 세우는 데 돕습니다.
  • maxExecutionTime — integer (min 0, max 9007199254740991), optional. 타임아웃 전에 에이전트가 실행될 최대 벽시계 시간(밀리초).

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

HumanInTheLoopCapabilities

인간 개입 상호작용 지원. 에이전트가 계속하기 전에 인간 입력, 승인, 피드백을 요청하려고 실행을 멈출 수 있을 때 활성화하세요.

Fields:

  • supported — boolean, optional. 에이전트가 어떤 형태의 인간 개입 상호작용을 지원하면 true.
  • approvals — boolean, optional. 에이전트가 민감한 액션(예: 이메일 보내기, 데이터 삭제)을 수행하기 전에 멈추고 명시적 승인을 요청할 수 있으면 true.
  • interventions — boolean, optional. 에이전트가 인간이 실행 중에 개입해 계획을 수정할 수 있게 하면 true.
  • feedback — boolean, optional. 에이전트가 현재 세션 안에서 행동을 개선하기 위해 사용자 피드백(좋아요/싫어요, 수정)을 통합할 수 있으면 true.
  • interrupts — boolean, optional. 에이전트가 AG-UI 인터럽트 프로토콜에 참여하면 true: 인터럽트 outcome을 담은 RUN_FINISHED로 실행을 끝내고, RunAgentInput.resume의 답을 받습니다.
  • approveWithEdits — boolean, optional. 도구 호출 인터럽트가 재개 페이로드의 editedArgs를 받으면 true. interrupts가 true일 때만 의미가 있습니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

AgentCapabilities

에이전트 현재 능력의 타입이 지정되고 범주화된 스냅샷. 모든 필드는 선택입니다 — 에이전트는 지원하는 것만 선언합니다. 생략된 필드는 지원되지 않는 것이 아니라 능력이 선언되지 않았음(unknown)을 의미합니다. custom 필드는 표준 범주에 맞지 않는 통합 특화 능력을 위한 탈출구입니다.

Fields:

  • identity — IdentityCapabilities, optional. 에이전트 신원과 메타데이터.
  • transport — TransportCapabilities, optional. 지원되는 전송 메커니즘(SSE, WebSocket, binary 등).
  • tools — ToolsCapabilities, optional. 에이전트가 제공하는 도구와 도구 호출 구성.
  • output — OutputCapabilities, optional. 출력 형식 지원(구조화 출력, MIME 타입).
  • state — StateCapabilities, optional. 상태 및 메모리 관리(스냅샷, 델타, 영속).
  • multiAgent — MultiAgentCapabilities, optional. 멀티 에이전트 조정(위임, 핸드오프, 하위 에이전트).
  • reasoning — ReasoningCapabilities, optional. 추론 및 사고 지원(chain-of-thought, 암호화 사고).
  • multimodal — MultimodalCapabilities, optional. 다중 모달 입출력 지원(이미지, 오디오, 비디오, 파일).
  • execution — ExecutionCapabilities, optional. 실행 제어와 한계(코드 실행, 타임아웃, 반복 상한).
  • humanInTheLoop — HumanInTheLoopCapabilities, optional. 인간 개입 지원(승인, 개입, 피드백).
  • custom — object, 키 기준으로 열림, optional. 표준 범주가 다루지 않는 통합 특화 능력. 키 기준으로 열린다: 위 범주가 통합이 선언하는 것을 예상할 수 없으므로 키 아래에는 어떤 JSON 값이라도 허용됩니다.

닫힌 객체: 스키마는 여기 나열되지 않은 멤버를 거부합니다.

믹스인 (Mixins)

그것을 구성하는 모든 정의에 평탄화되는 공유 필드 집합. 그것들은 문서가 한 번 산다는 이름 있는 정의로 스키마에 존재하지만, 어떤 유선 객체도 단지 믹스인인 적은 없습니다.

Attributable

하위 에이전트의 작업에 속할 수 있는 모든 것에 구성됩니다: 콘텐츠나 진행을 설명하는 이벤트, 메시지 타입, 그리고 각 인터럽트. 실행 범위 이벤트는 그것을 생략합니다 — RUN_STARTED, RUN_FINISHED, RUN_ERROR는 실행 자체를 설명하고 MESSAGES_SNAPSHOT은 대화 전체 범위라, 그 어느 것도 한 하위 에이전트에 속할 수 없습니다. 도구 호출도 생략하고 담는 메시지의 귀속을 상속합니다.

Fields:

  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.

BaseEvent

타입이 무엇이든 모든 이벤트가 담는 필드. 반복 대신 각 이벤트 정의에 구성되어, 여기의 변경이 모든 이벤트에 한 번에 닿습니다.

Fields:

  • type — EventType, required. 어떤 이벤트인지. 각 이벤트 정의는 이것을 단일 값으로 좁힙니다.
  • timestamp — integer (min -9007199254740991, max 9007199254740991), optional. 이벤트가 만들어진 시각. JSON 숫자가 라운드트립으로 살아남는 범위로 한정되어, 소비자가 읽는 값이 생산자가 쓴 값이 됩니다. 의도적으로 float가 아닙니다. 단위는 여기서 제약되지 않는데, 규범적으로 명시된 적이 없기 때문입니다. 실제로 그것을 설정하는 모든 SDK는 Unix epoch 이후 밀리초를 쓰며, 다른 단위를 고르는 생산자는 검증은 통과해도 소비자에게 오독됩니다. 프로토콜은 이 값으로 계산하는 것이 없습니다.
  • rawEvent — null을 제외한 어떤 JSON 값, optional. 이것이 번역된 프로바이더 네이티브 이벤트로, 디버깅과 프로토콜이 모델링하지 않는 세부가 필요한 소비자를 위해 그대로 운반됩니다. 어떤 JSON 값.
  • metadata — Metadata, optional. 이 이벤트에 붙는 추가 정보.

BaseMessage

developer, system, assistant, user 메시지가 공유하는 필드. content를 의도적으로 제외하는데, 사용자 메시지의 content는 배열일 수 있는 반면 다른 것들은 문자열이고, 여기서의 구성은 재정의가 아니라 교차하기 때문입니다. content를 문자열로 제약한 베이스는 배열 content를 무효로 만들 것입니다. tool, activity, reasoning 메시지는 name을 담지 않으므로 이것을 구성하지 않습니다.

Fields:

  • subagentRunId — SubagentRunId, optional. 이것이 속한 하위 에이전트 호출. 없으면 부모 에이전트가 직접 만들었습니다.
  • id — string, required. 대화 안에서 메시지를 식별합니다.
  • role — string, required. 메시지를 보낸 사람. 각 메시지 정의는 이것을 단일 값으로 좁힙니다.
  • name — string, optional. 작성자 표시 이름(선택).
  • encryptedValue — string, optional. 이 메시지에 속한 프로바이더의 불투명한 아티팩트로, 소비자가 저장하고 나중 턴에 반환합니다.
  • metadata — Metadata, optional. 이 메시지에 붙는 추가 정보.

더 알아보기 (Learn more)