agent-sdk/typescript.md +28 −9
1713`terminal_slash_commands`는 `exit`와 같은 로컬 터미널에 바인드된 인터페이스를 가진 `slash_commands`의 항목을 명명합니다. 다른 `slash_commands` 항목처럼 보낼 수 있습니다. 필드는 원격 또는 모바일 클라이언트가 명령 메뉴에서 이를 숨길 수 있도록 존재합니다. 필드는 비어 있지 않을 때만 있으며 Agent SDK v0.3.229 이상이 필요합니다.1713`terminal_slash_commands`는 `exit`와 같은 로컬 터미널에 바인드된 인터페이스를 가진 `slash_commands`의 항목을 명명합니다. 다른 `slash_commands` 항목처럼 보낼 수 있습니다. 필드는 원격 또는 모바일 클라이언트가 명령 메뉴에서 이를 숨길 수 있도록 존재합니다. 필드는 비어 있지 않을 때만 있으며 Agent SDK v0.3.229 이상이 필요합니다.
1714 1714
1715* 각 `mcp_servers` 항목의 `source`: 서버 정의가 어디에서 나왔는지로, [`McpServerStatus`](#mcpserverstatus)의 `source`와 동일한 값입니다. Agent SDK v0.3.274 이상이 필요합니다.1715* 각 `mcp_servers` 항목의 `source`: 서버 정의가 어디에서 나왔는지로, [`McpServerStatus`](#mcpserverstatus)의 `source`와 동일한 값입니다. Agent SDK v0.3.274 이상이 필요합니다.
17161716* `effort`: [노력 수준](/docs/ko/model-config#adjust-effort-level) Claude Code가 세션의 다음 요청에서 보내거나 보내지 않을 때 `null`입니다. Claude Code는 [Remote Control](/docs/ko/remote-control) 클라이언트로 보내는 초기화 메시지에만 필드를 설정하고 애플리케이션이 읽는 초기화 메시지에서 생략합니다. Agent SDK v0.3.234 이상이 필요합니다.*
1717
1718`effort`: [노력 수준](/docs/ko/model-config#adjust-effort-level) Claude Code가 세션의 다음 요청에서 보내거나 보내지 않을 때 `null`입니다. Claude Code는 [Remote Control](/docs/ko/remote-control) 클라이언트로 보내는 초기화 메시지에만 필드를 설정하고 애플리케이션이 읽는 초기화 메시지에서 생략합니다. Agent SDK v0.3.234 이상이 필요합니다.
1717 1719
1718`capabilities` 배열은 이 CLI가 구현하는 프로토콜 동작의 이름을 지정하므로 `claude_code_version` 문자열을 비교하는 대신 기능을 감지할 수 있습니다. 이는 열린 집합입니다: 인식하지 못하는 값을 무시하고 동작이 의존하는 특정 기능을 확인합니다. 필드는 Claude Code v2.1.205 이상이 필요하며 이전 CLI에는 없습니다.1720`capabilities` 배열은 이 CLI가 구현하는 프로토콜 동작의 이름을 지정하므로 `claude_code_version` 문자열을 비교하는 대신 기능을 감지할 수 있습니다. 이는 열린 집합입니다: 인식하지 못하는 값을 무시하고 동작이 의존하는 특정 기능을 확인합니다. 필드는 Claude Code v2.1.205 이상이 필요하며 이전 CLI에는 없습니다.
1719 1721
1720| 기능 | 의미 |1722| 기능 | 의미 |
17211723| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- || ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
1722| `interrupt_receipt_v1` | [`interrupt()`](#query-object)는 인터럽트가 도착했을 때 보류 중인 메시지를 나열하는 [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) 영수증으로 해결됩니다 |1724| `interrupt_receipt_v1` | [`interrupt()`](#query-object)는 인터럽트가 도착했을 때 보류 중인 메시지를 나열하는 [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) 영수증으로 해결됩니다 |
17231725| `interrupt_cancel_queued_v1` | `interrupt` 제어 요청이 `cancel_queued: true`를 준수하여 영수증이 `still_queued` 아래에 나열할 메시지를 취소하고 대신 `cancelled` 아래에 나열합니다. [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse)를 참조하세요. Claude Code v2.1.219 이상이 필요합니다 || `interrupt_cancel_queued_v1` | |
1726| `interrupt` 제어 요청이 `cancel_queued: true`를 준수하여 영수증이 `still_queued` 아래에 나열할 메시지를 취소하고 대신 `cancelled` 아래에 나열합니다. [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse)를 참조하세요. Claude Code v2.1.219 이상이 필요합니다 | |
1724 1727
1725<h3 id="sdkpartialassistantmessage">1728<h3 id="sdkpartialassistantmessage">
1726 `SDKPartialAssistantMessage`1729 `SDKPartialAssistantMessage`
2005Claude Code가 작업 알림을 세션에 전달할 때, Anthropic 서버가 해당 알림이 어디에서 나왔는지 확인했으면 알림의 `origin`에 `subkind`를 설정합니다. 또한 애플리케이션이 [메시지를 예약된 실행으로 선언](#declare-a-scheduled-run)할 때 `subkind`를 설정하며, TypeScript Agent SDK v0.3.280 이상이 필요합니다. `subkind`는 Claude Code v2.1.213 이상이 필요하며 두 가지 값 중 하나를 취합니다:2008Claude Code가 작업 알림을 세션에 전달할 때, Anthropic 서버가 해당 알림이 어디에서 나왔는지 확인했으면 알림의 `origin`에 `subkind`를 설정합니다. 또한 애플리케이션이 [메시지를 예약된 실행으로 선언](#declare-a-scheduled-run)할 때 `subkind`를 설정하며, TypeScript Agent SDK v0.3.280 이상이 필요합니다. `subkind`는 Claude Code v2.1.213 이상이 필요하며 두 가지 값 중 하나를 취합니다:
2006 2009
2007* `scheduled-trigger`: 알림은 [루틴](/docs/ko/routines)의 저장된 프롬프트로, 루틴의 트리거 중 하나가 발생했기 때문에 전달됩니다: 일정, [API 트리거](/docs/ko/routines#add-an-api-trigger), [GitHub 트리거](/docs/ko/routines#add-a-github-trigger), 또는 **지금 실행**. 애플리케이션이 [예약된 실행으로 선언](#declare-a-scheduled-run)하는 프롬프트도 이 값을 전달합니다. Claude Code는 이를 세션의 할당된 작업으로 모델에 프레임하며, [다른 작업 알림이 전달하는 알림](#sdktasknotificationmessage)과 다른 알림입니다.2010* `scheduled-trigger`: 알림은 [루틴](/docs/ko/routines)의 저장된 프롬프트로, 루틴의 트리거 중 하나가 발생했기 때문에 전달됩니다: 일정, [API 트리거](/docs/ko/routines#add-an-api-trigger), [GitHub 트리거](/docs/ko/routines#add-a-github-trigger), 또는 **지금 실행**. 애플리케이션이 [예약된 실행으로 선언](#declare-a-scheduled-run)하는 프롬프트도 이 값을 전달합니다. Claude Code는 이를 세션의 할당된 작업으로 모델에 프레임하며, [다른 작업 알림이 전달하는 알림](#sdktasknotificationmessage)과 다른 알림입니다.
20082011* `peer-send-message`: 알림은 [교차 세션 `SendMessage` 도구](/docs/ko/cross-session-messaging)가 아니라 [클라우드 세션](/docs/ko/claude-code-on-the-web)이 서로 메시지를 보내는 데 사용하는 서버 측 `send_message` 도구로 다른 세션이 보낸 메시지이며, Anthropic 서버가 두 세션이 동일한 비공개 세션 그룹에 속한다고 확인했습니다. Claude Code v2.1.224 이상이 필요합니다. 서버가 그런 식으로 확인하지 않은 `send_message` 전달은 `subkind`를 얻지 못합니다.*
2012
2013`peer-send-message`: 알림은 [교차 세션 `SendMessage` 도구](/docs/ko/cross-session-messaging)가 아니라 [클라우드 세션](/docs/ko/claude-code-on-the-web)이 서로 메시지를 보내는 데 사용하는 서버 측 `send_message` 도구로 다른 세션이 보낸 메시지이며, Anthropic 서버가 두 세션이 동일한 비공개 세션 그룹에 속한다고 확인했습니다. Claude Code v2.1.224 이상이 필요합니다. 서버가 그런 식으로 확인하지 않은 `send_message` 전달은 `subkind`를 얻지 못합니다.
2009 2014
2010다른 모든 작업 알림에는 `subkind`가 없습니다. 여기에는 [PR 활동](/docs/ko/claude-code-on-the-web#how-claude-responds-to-pr-activity)이 세션에 전달되고 완료된 작업과 같은 백그라운드 이벤트가 포함됩니다. [교차 세션 `SendMessage` 도구](/docs/ko/cross-session-messaging)의 메시지는 작업 알림이 아닙니다: 동일한 머신의 세션에서 오든 다른 머신의 Anthropic 서버를 통해 오든 Claude Code는 `kind: "peer"`를 제공하고 [피어 원점 필드](#peer-origin-fields)를 제공합니다.2015다른 모든 작업 알림에는 `subkind`가 없습니다. 여기에는 [PR 활동](/docs/ko/claude-code-on-the-web#how-claude-responds-to-pr-activity)이 세션에 전달되고 완료된 작업과 같은 백그라운드 이벤트가 포함됩니다. [교차 세션 `SendMessage` 도구](/docs/ko/cross-session-messaging)의 메시지는 작업 알림이 아닙니다: 동일한 머신의 세션에서 오든 다른 머신의 Anthropic 서버를 통해 오든 Claude Code는 `kind: "peer"`를 제공하고 [피어 원점 필드](#peer-origin-fields)를 제공합니다.
2011 2016
2024`peer` 원점은 메시지를 보낸 에이전트를 식별합니다: `SendMessage`로 `main`에 보내는 프로세스 내 [팀원](/docs/ko/agent-teams) 또는 [교차 세션 피어](/docs/ko/cross-session-messaging), 다른 Claude Code 세션입니다. 교차 세션 피어는 macOS 및 Linux에서 Claude Code v2.1.224 이상이 필요합니다. [교차 세션 메시징 가용성](/docs/ko/cross-session-messaging#availability)에서 네이티브 Windows 요구 사항을 참조하세요. 교차 세션 피어는 동일한 머신에서 실행되거나 [다른 머신](/docs/ko/cross-session-messaging#message-sessions-on-other-machines)에서 또는 [클라우드](/docs/ko/claude-code-on-the-web)에서 Remote Control을 통해 메시지가 도착할 때 실행될 수 있습니다. 두 종류의 발신자는 필드를 다르게 채웁니다:2029`peer` 원점은 메시지를 보낸 에이전트를 식별합니다: `SendMessage`로 `main`에 보내는 프로세스 내 [팀원](/docs/ko/agent-teams) 또는 [교차 세션 피어](/docs/ko/cross-session-messaging), 다른 Claude Code 세션입니다. 교차 세션 피어는 macOS 및 Linux에서 Claude Code v2.1.224 이상이 필요합니다. [교차 세션 메시징 가용성](/docs/ko/cross-session-messaging#availability)에서 네이티브 Windows 요구 사항을 참조하세요. 교차 세션 피어는 동일한 머신에서 실행되거나 [다른 머신](/docs/ko/cross-session-messaging#message-sessions-on-other-machines)에서 또는 [클라우드](/docs/ko/claude-code-on-the-web)에서 Remote Control을 통해 메시지가 도착할 때 실행될 수 있습니다. 두 종류의 발신자는 필드를 다르게 채웁니다:
2025 2030
2026* `from`: 팀원의 이름 또는 교차 세션 피어의 발신자 주소입니다. [일방향 교차 머신 메시지](/docs/ko/cross-session-messaging#message-sessions-on-other-machines)의 경우 발신자는 회신 주소가 없고 `from`은 `"unknown"`입니다. 값은 발신자가 작성한 것입니다. `verifiedPeerPid`는 확인된 신원입니다.2031* `from`: 팀원의 이름 또는 교차 세션 피어의 발신자 주소입니다. [일방향 교차 머신 메시지](/docs/ko/cross-session-messaging#message-sessions-on-other-machines)의 경우 발신자는 회신 주소가 없고 `from`은 `"unknown"`입니다. 값은 발신자가 작성한 것입니다. `verifiedPeerPid`는 확인된 신원입니다.
20272032* `fromMode`: 발신 세션의 권한 클래스로, `bypass` 또는 `prompting`이며, [데스크톱 앱](/docs/ko/desktop#work-across-sessions)과 같이 세션 간에 피어 메시지를 중계하는 호스트에서 선언합니다. Claude Code는 [인바운드 제어](/docs/ko/cross-session-messaging#control-inbound-messages)를 적용할 때 수신 세션에서 읽습니다. Agent SDK v0.3.234 이상이 필요합니다.*
2033
2034`fromMode`: 발신 세션의 권한 클래스로, `bypass` 또는 `prompting`이며, [데스크톱 앱](/docs/ko/desktop#work-across-sessions)과 같이 세션 간에 피어 메시지를 중계하는 호스트에서 선언합니다. Claude Code는 [인바운드 제어](/docs/ko/cross-session-messaging#control-inbound-messages)를 적용할 때 수신 세션에서 읽습니다. Agent SDK v0.3.234 이상이 필요합니다.
2035
2028* `senderTaskId`: 팀원의 작업 ID입니다. 교차 세션 피어의 경우 없습니다.2036* `senderTaskId`: 팀원의 작업 ID입니다. 교차 세션 피어의 경우 없습니다.
20292037* `name`: 발신자의 표시 이름으로, Claude Code에서 정규화됩니다: Unicode 제어, 형식, 대리, 줄 또는 단락 구분 기호 코드 포인트를 제거한 다음 결과를 자르고 64개 코드 포인트로 제한하고 줄임표를 추가합니다. Claude Code v2.1.205 이상이 필요합니다.*
20302038* `body`: 피어 봉투가 제거된 디코딩된 메시지 본문로, 모델이 보는 것과 바이트 정확합니다. 팀원 메시지의 경우 항상 있습니다. 교차 세션 피어의 경우 턴이 정확히 Claude Code에서 형성한 하나의 피어 봉투일 때만 있습니다. 메시지 텍스트를 다시 구문 분석하는 대신 `name`과 `body`를 렌더링합니다. Claude Code v2.1.205 이상이 필요합니다.
20312039* `fromSession`: 발신자의 호스트 열기 가능 세션 ID로, 발신자의 호스트에서 설정하여 UI가 발신 세션으로 다시 링크할 수 있습니다. `from`과 마찬가지로 발신자가 주장한 것입니다: 네비게이션 대상으로만 사용하고 발신자의 신원 증명으로 취급하지 마세요. Claude Code v2.1.216 이상이 필요합니다.`name`: 발신자의 표시 이름으로, Claude Code에서 정규화됩니다: Unicode 제어, 형식, 대리, 줄 또는 단락 구분 기호 코드 포인트를 제거한 다음 결과를 자르고 64개 코드 포인트로 제한하고 줄임표를 추가합니다. Claude Code v2.1.205 이상이 필요합니다.
20322040* `verifiedPeerPid`: 이 세션의 교차 세션 메시징 소켓에 연결된 프로세스의 프로세스 ID로, 커널에서 확인하고 페이로드가 아닌 연결 자체에서 읽습니다. 발신자를 식별하려면 `from`이 아니라 이를 사용합니다: `from`은 동일한 사용자 프로세스에서 위조 가능합니다. 필드는 Claude Code가 확인할 수 없을 때 없으며, 예를 들어 Windows 또는 비소켓 수신에서 없으므로 없는 값은 발신자가 확인되지 않음을 의미합니다. 중계된 트래픽의 경우 메시지의 작성자가 아니라 중계를 식별하고 프로세스 ID는 재활용 가능하므로 인증 토큰이 아니라 출처로 취급합니다. Claude Code v2.1.216 이상이 필요합니다.
2041*
2042
2043`body`: 피어 봉투가 제거된 디코딩된 메시지 본문로, 모델이 보는 것과 바이트 정확합니다. 팀원 메시지의 경우 항상 있습니다. 교차 세션 피어의 경우 턴이 정확히 Claude Code에서 형성한 하나의 피어 봉투일 때만 있습니다. 메시지 텍스트를 다시 구문 분석하는 대신 `name`과 `body`를 렌더링합니다. Claude Code v2.1.205 이상이 필요합니다.
2044
2045*
2046
2047`fromSession`: 발신자의 호스트 열기 가능 세션 ID로, 발신자의 호스트에서 설정하여 UI가 발신 세션으로 다시 링크할 수 있습니다. `from`과 마찬가지로 발신자가 주장한 것입니다: 네비게이션 대상으로만 사용하고 발신자의 신원 증명으로 취급하지 마세요. Claude Code v2.1.216 이상이 필요합니다.
2048
2049*
2050
2051`verifiedPeerPid`: 이 세션의 교차 세션 메시징 소켓에 연결된 프로세스의 프로세스 ID로, 커널에서 확인하고 페이로드가 아닌 연결 자체에서 읽습니다. 발신자를 식별하려면 `from`이 아니라 이를 사용합니다: `from`은 동일한 사용자 프로세스에서 위조 가능합니다. 필드는 Claude Code가 확인할 수 없을 때 없으며, 예를 들어 Windows 또는 비소켓 수신에서 없으므로 없는 값은 발신자가 확인되지 않음을 의미합니다. 중계된 트래픽의 경우 메시지의 작성자가 아니라 중계를 식별하고 프로세스 ID는 재활용 가능하므로 인증 토큰이 아니라 출처로 취급합니다. Claude Code v2.1.216 이상이 필요합니다.
2033 2052
2034<h2 id="hook-types">2053<h2 id="hook-types">
2035 훅 타입2054 훅 타입