跳至內容

聊天通道 ​

ahp-chat:/<uuid> 通道的參考資料 — 每個聊天的狀態、回合生命週期、工具呼叫狀態機、附件、待處理訊息與輸入請求。聊天隸屬於某個工作階段(請參閱工作階段通道);一個工作階段可包含多個聊天。線路層級的概觀請參閱聊天通道規格。

JSON Schema: state.schema.json

狀態類型 ​

ChatState ​

單一聊天的完整狀態,於用戶端訂閱該聊天的 URI 時載入。

聊天的輕量目錄表示為 {@link ChatSummary},承載於 {@link SessionState.chats | SessionState.chats}。ChatState 將每個 {@link ChatSummary} 欄位直接 反正規化 到自身,讓訂閱者收到單一 扁平物件,而不需合併巢狀的 summary 子物件。產生者 MUST 保持兩個 表示一致:下方內嵌欄位的任何變更,也 SHOULD 透過相符的 {@link SessionChatUpdatedAction | session/chatUpdated} 操作在父工作階段上發布。

欄位類型必要說明
resourceURI是聊天 URI
titlestring是聊天標題
statusSessionStatus是目前的聊天狀態(沿用 SessionStatus 形狀)
activitystring否此聊天目前正在做什麼的人類可讀描述
modifiedAtstring是上次修改時間戳記(ISO 8601,例如 "2025-03-10T18:42:03.123Z")
originChatOrigin否此聊天如何產生
interactivityChatInteractivity否使用者可如何與此聊天互動。參見 {@link ChatInteractivity}。

支援代理程式團隊模式,其中工作者聊天為唯讀或隱藏。當此欄位缺省時, 為向後相容預設為 {@link ChatInteractivity.Full}。
workingDirectoriesURI[]否此聊天的代理程式具有工具存取權的工作階段 {@link SessionState.workingDirectories | workingDirectories} 子集。每個 項目 MUST 存在於所屬工作階段的 workingDirectories 中;伺服器 MUST 拒絕 違反此限制的 chat/workingDirectorySet 操作。

當缺省時,聊天會繼承完整的工作階段集合。當存在但為空(不建議)時, 聊天完全沒有工作目錄工具存取權。

分派 chat/workingDirectorySet / chat/workingDirectoryRemoved 以 更新執行中聊天上的子集。
primaryWorkingDirectoryURI否聊天的主要工作目錄 — 此聊天所居中的特殊根目錄(例如此聊天的代理程式 行程根目錄、相對路徑的預設位置)。MUST 為此聊天的有效工作目錄之一 ({@link workingDirectories},或當缺省時為工作階段的集合)。當代理程式 廣告 {@link MultipleWorkingDirectoriesCapability.requiresPrimary} 時存在。

建立時即為唯讀且固定。 其值取自 {@link CreateChatParams.primaryWorkingDirectory}(或對於工作階段的預設 聊天,取自 {@link CreateSessionParams.primaryWorkingDirectory}),且在 聊天生命週期內不會改變 — 沒有操作可變動它,且它不參與 session/chatUpdated。
turnsTurn[]是已完成的回合
turnsNextCursorstring否用於將較舊的已完成回合載入此聊天狀態的游標。

存在時表示 turns 為尾端視窗,且有更多歷史回合可用。將此不透明 游標傳遞給 fetchTurns;主機 MUST 在回應前將載入的回合插入狀態, 並更新或清除此游標。缺省時表示狀態包含所有保留的回合。
activeTurnActiveTurn否目前進行中的回合
steeringMessagePendingMessage否在適當時機注入目前回合的訊息
queuedMessagesPendingMessage[]否在目前回合結束後自動作為新回合傳送的訊息
draftMessage否使用者對此聊天進行中的草稿輸入 — 他們正在撰寫但尚未傳送的訊息, 包含其 {@link Message.model | model} / {@link Message.agent | agent} 選擇與附件。

用戶端 MAY 定期將其本地輸入狀態同步到此欄位,讓草稿在重新載入後存活, 且對檢視相同聊天的其他用戶端可見。並 不 需要積極同步 — 用戶端 SHOULD 去抖動,且 MAY 僅在適當時機同步。在為既有聊天呈現輸入 UI 時, 用戶端 SHOULD 使用任何 draft 來初始化其輸入狀態。一旦訊息傳送即清除 (設為 undefined)。
_metaRecord<string, unknown>否此聊天的額外提供者特定中介資料。

ChatSummary ​

聊天的輕量目錄項目,承載於 {@link SessionState.chats | SessionState.chats}。 完整對話存在於 {@link ChatState},其內嵌(反正規化)了下方所有欄位。

欄位類型必要說明
resourceURI是聊天 URI
titlestring是聊天標題
statusSessionStatus是目前的聊天狀態(沿用 SessionStatus 形狀)
activitystring否此聊天目前正在做什麼的人類可讀描述
modifiedAtstring是上次修改時間戳記(ISO 8601,例如 "2025-03-10T18:42:03.123Z")
originChatOrigin否此聊天如何產生
interactivityChatInteractivity否使用者可如何與此聊天互動。參見 {@link ChatInteractivity}。

支援代理程式團隊模式,其中工作者聊天為唯讀或隱藏。當此欄位缺省時, 為向後相容預設為 {@link ChatInteractivity.Full}。
workingDirectoriesURI[]否此聊天使用的工作階段工作目錄子集。 完整語意請參見 {@link ChatState.workingDirectories}。
primaryWorkingDirectoryURI否聊天的主要工作目錄。 完整語意請參見 {@link ChatState.primaryWorkingDirectory}。

ChatOriginKind ​

{@link ChatOrigin} 的判別欄位 — 聊天如何產生。

成員值說明
User'user'使用者明確建立此聊天(例如透過主機 UI)。
Fork'fork'在特定回合從既有聊天分岔。
SideChat'sideChat'從特定回合建立為獨立的側邊對話。
Tool'tool'由執行於另一個聊天的工具呼叫產生(例如子代理程式委派)。

SideChatSelection ​

建立側邊聊天時擷取的不可變選取文字快照。

主機在接受 createChat 時記錄此確切文字;之後對來源聊天的變更不會 改變它。

欄位類型必要說明
textstring是在接受 createChat 時擷取的確切選取文字快照。

MUST 非空。
responsePartIdstring否主機拍攝快照時,包含 {@link text} 的回應部分的選用出處資訊。

僅供參考:這不是即時範圍或位移,且 MUST NOT 用於重新計算 text。

ChatOrigin ​

聊天如何產生。用戶端 MAY 使用它來呈現情境 UI(父項指標、分岔標記、 「由工具產生」徽章)。

分岔與側邊聊天起源兩者都帶有穩定的頂層 turnId,伴隨其判別 kind 值,而非快照建立時該回合為作用中或歷史的狀態。消費者視需要將 識別碼解析為來源聊天目前的 activeTurn 或保留的 turns。

當主機接受從來源聊天目前作用中回合建立側邊聊天時,它會快照保留的 歷史,加上該回合目前的使用者訊息與任何已可用的部分代理程式回應。 之後來源回合的差異不會回溯變更所建立側邊聊天的起始情境,且一旦 來源回合完成,它仍由相同的 turnId 參照。側邊聊天起源 MAY 也保留 在接受時擷取的不可變 {@link SideChatSelection | 選取文字快照};其中 的任何 responsePartId 僅為出處,不是範圍。

tool 變體從工作者側記錄工具產生的工作者:其 chat/toolCallId 識別父聊天中產生的工具呼叫。這是產生關係的標準記錄。相同的邊從父側 由 {@link ToolResultSubagentContent} 呈現,其 resource 為此聊天的 URI;主機 MUST 保持兩者一致。

{ kind: ChatOriginKind.User } | { kind: ChatOriginKind.Fork; chat: URI; turnId: string } | { kind: ChatOriginKind.SideChat; chat: URI; turnId: string; selection?: SideChatSelection } | { kind: ChatOriginKind.Tool; chat: URI; toolCallId: string }

ChatInteractivity ​

使用者可如何與聊天互動。

  • Full — 使用者可傳送訊息並觀看(缺省時為預設)
  • ReadOnly — 使用者可觀看但無法傳送訊息(例如代理程式團隊工作者)
  • Hidden — 完全不顯示在 UI 中的內部工作者

支援代理程式團隊模式,其中主導聊天為完全互動,而工作者聊天為唯讀 (可見以供可觀測性)或隱藏(內部實作細節)。框架根據聊天的角色 設定此值;UI 使用它來顯示適當的控制項。

成員值說明
Full'full'使用者可傳送訊息並觀看(缺省時為預設)
ReadOnly'read-only'使用者可觀看但無法傳送訊息
Hidden'hidden'完全不顯示在 UI 中的內部工作者

PendingMessageKind ​

待處理訊息種類的判別欄位。

成員值說明
Steering'steering'在適當時機注入目前回合
Queued'queued'在目前回合結束後自動作為新回合傳送

PendingMessage ​

已排入佇列、待未來傳遞給代理程式的訊息。

引導訊息會在進行中注入目前回合。佇列訊息會在目前回合自然結束後 自動作為新回合啟動。

欄位類型說明
idstring此待處理訊息的唯一識別碼
messageMessage將啟動下一回合的訊息

ChatInputResponseKind ​

用戶端如何完成輸入請求。

成員值
Accept'accept'
Decline'decline'
Cancel'cancel'

ChatInputQuestionKind ​

問題/輸入控制項種類。

成員值
Text'text'
Number'number'
Integer'integer'
Boolean'boolean'
SingleSelect'single-select'
MultiSelect'multi-select'

ChatInputOption ​

選擇式問題中的一個選項。

欄位類型必要說明
idstring是穩定的選項識別碼;對 MCP 列舉值而言此為列舉字串
labelstring是顯示標籤
descriptionstring否選用的次要文字
recommendedboolean否此選項是否為建議/預設選擇

ChatInputTextQuestion ​

聊天輸入請求中的文字問題。

欄位類型必要說明
kindChatInputQuestionKind.Text是
formatstring否文字問題的格式提示,例如 email、uri、date 或 date-time
minnumber否最小字串長度
maxnumber否最大字串長度
defaultValuestring否預設文字

ChatInputNumberQuestion ​

聊天輸入請求中的數值問題。

欄位類型必要說明
kindChatInputQuestionKind.Number | ChatInputQuestionKind.Integer是
minnumber否最小值
maxnumber否最大值
defaultValuenumber否預設數值

ChatInputBooleanQuestion ​

聊天輸入請求中的布林值問題。

欄位類型必要說明
kindChatInputQuestionKind.Boolean是
defaultValueboolean否預設布林值

ChatInputSingleSelectQuestion ​

聊天輸入請求中的單選問題。

欄位類型必要說明
kindChatInputQuestionKind.SingleSelect是
optionsChatInputOption[]是使用者可從中選取的選項
allowFreeformInputboolean否使用者是否可改為輸入文字而不選取選項

ChatInputMultiSelectQuestion ​

聊天輸入請求中的多選問題。

欄位類型必要說明
kindChatInputQuestionKind.MultiSelect是
optionsChatInputOption[]是使用者可從中選取的選項
allowFreeformInputboolean否使用者是否可在選取選項之外另輸入文字
minnumber否最小選取項目數
maxnumber否最大選取項目數

ChatInputQuestion ​

聊天輸入請求中的單一問題。

ChatInputTextQuestion | ChatInputNumberQuestion | ChatInputBooleanQuestion | ChatInputSingleSelectQuestion | ChatInputMultiSelectQuestion

ChatInputRequest ​

由 {@link InputRequestResponsePart} 承載的請求有效負載。

伺服器會以 chat/inputRequested 建立或取代包含的回應部分。用戶端以 chat/inputAnswerChanged 同步草稿,並以 chat/inputCompleted 提交回應。

欄位類型必要說明
idstring是穩定的請求識別碼
messagestring否整個請求的顯示訊息
urlURI否使用者應檢閱或開啟的 URL,用於 URL 式引出
questionsChatInputQuestion[]否要詢問使用者的有序問題
answersRecord<string, ChatInputAnswer>否目前的草稿或已提交答案,以問題 ID 為索引鍵

ChatInputAnswerValueKind ​

答案值種類。

成員值
Text'text'
Number'number'
Boolean'boolean'
Selected'selected'
SelectedMany'selected-many'

ChatInputTextAnswerValue ​

為單一答案擷取的值。

欄位類型說明
kindChatInputAnswerValueKind.Text
valuestring

ChatInputNumberAnswerValue ​

欄位類型說明
kindChatInputAnswerValueKind.Number
valuenumber

ChatInputBooleanAnswerValue ​

欄位類型說明
kindChatInputAnswerValueKind.Boolean
valueboolean

ChatInputSelectedAnswerValue ​

欄位類型必要說明
kindChatInputAnswerValueKind.Selected是
valuestring是
freeformValuesstring[]否改為輸入而非選取選項的自由格式文字

ChatInputSelectedManyAnswerValue ​

欄位類型必要說明
kindChatInputAnswerValueKind.SelectedMany是
valuestring[]是
freeformValuesstring[]否除了選取選項之外另輸入的自由格式文字

ChatInputAnswerValue ​

ChatInputTextAnswerValue | ChatInputNumberAnswerValue | ChatInputBooleanAnswerValue | ChatInputSelectedAnswerValue | ChatInputSelectedManyAnswerValue

ChatInputAnswered ​

欄位類型說明
stateChatInputAnswerState.Draft | ChatInputAnswerState.Submitted答案狀態
valueChatInputAnswerValue答案值

ChatInputSkipped ​

欄位類型必要說明
stateChatInputAnswerState.Skipped是答案狀態
freeformValuesstring[]否跳過時擷取的自由格式原因或值(若有)

ChatInputAnswerState ​

答案生命週期狀態。

成員值
Draft'draft'
Submitted'submitted'
Skipped'skipped'

ChatInputAnswer ​

單一問題的草稿、已提交或已跳過答案。

ChatInputAnswered | ChatInputSkipped

TurnState ​

回合如何結束。

成員值
Complete'complete'
Cancelled'cancelled'
Error'error'

MessageAttachmentKind ​

{@link MessageAttachment} 變體的判別欄位。

成員值說明
Simple'simple'簡單、不透明的附件,其表示由產生者描述。
EmbeddedResource'embeddedResource'資料以 base64 字串內嵌的附件。
Resource'resource'依 URI 參照資源的附件。
Annotations'annotations'參照註解通道上之註解的附件。
Chat'chat'參照另一個聊天之有界轉錄的附件。

Turn ​

已完成的請求/回應循環。

欄位類型必要說明
idstring是回合識別碼
startedAtstring否此回合開始時的 ISO 8601 時間戳記。
durationnumber否回合持續時間,以毫秒為單位。
messageMessage是啟動此回合的訊息
responsePartsResponsePart[]是所有回應內容依串流順序排列:文字、工具呼叫、推理與內容參照。

消費者應透過串接 markdown 部分來衍生顯示文字,並透過篩選 ToolCall 部分來尋找工具呼叫。
usageUsageInfo | undefined是權杖使用資訊
stateTurnState是回合如何結束
errorErrorInfo否當狀態為 'error' 時的錯誤細節

ActiveTurn ​

進行中的回合 — 助理正在主動串流。

欄位類型說明
idstring回合識別碼
startedAtstring此回合開始時的 ISO 8601 時間戳記。
messageMessage啟動此回合的訊息
responsePartsResponsePart[]所有回應內容依串流順序排列:文字、工具呼叫、推理與內容參照。

當權限等待使用者核准時,工具呼叫部分會包含 pendingPermissions。
usageUsageInfo | undefined權杖使用資訊

MessageKind ​

{@link MessageOrigin} 的判別欄位 — 識別訊息的產生者。

成員值說明
User'user'由使用者直接傳送。
Agent'agent'由代理程式本身而非使用者產生 — 例如,代理程式為其產生的聊天 植入第一則訊息。
Tool'tool'由工具而非使用者產生 — 例如,工具產生一個工作者聊天,其第一則 訊息帶有種子提示。
SystemNotification'systemNotification'系統產生的通知,而非直接的使用者訊息。

MessageOrigin ​

識別 {@link Message} 的起源 — 由誰產生。對於啟動回合的訊息 ({@link Turn.message}),這也是回合的起源;對於引導或佇列訊息, 則僅為該訊息的起源。

欄位類型說明
kindMessageKind產生此訊息的行為者種類。

Message ​

啟動或引導回合的訊息。訊息可來自使用者、代理程式、工具,或由系統 產生(參見 {@link MessageOrigin})。

附件 MAY 透過其 {@link MessageAttachmentBase.range} 欄位在 {@link Message.text} 中被參照。沒有範圍的附件仍與訊息關聯,但不 對應文字中的特定跨度。

欄位類型必要說明
textstring是訊息文字
originMessageOrigin是訊息的起源
attachmentsMessageAttachment[]否檔案/選取範圍附件
modelModelSelection否此訊息已(或將)用來傳送的模型。

對於歷史使用者/代理程式訊息,此記錄實際使用的模型,讓編輯或重送 訊息的用戶端可保留該選擇。對於 {@link ChatState.draft | draft}, 它承載使用者為其正在撰寫的訊息所挑選的模型。缺省表示套用代理主機 的預設模型。
agentAgentSelection否此訊息已(或將)用來傳送的自訂代理程式。

對於歷史訊息,此記錄實際使用的代理程式;對於 {@link ChatState.draft | draft},它承載使用者挑選的代理程式。缺省 表示無自訂代理程式 — 套用提供者的預設行為。
_metaRecord<string, unknown>否此訊息的額外提供者特定中介資料。

用戶端 MAY 在此尋找已知的索引鍵以提供增強 UI,代理主機 MAY 用它 承載不符合任何其他欄位的情境。鏡像 MCP 的 _meta 慣例。

MessageAttachmentBase ​

所有 {@link MessageAttachment} 變體共用的欄位。

欄位類型必要說明
labelstring是附件的人類可讀標籤(例如檔案附件的檔名)。用於 UI 中的顯示。
rangeTextRange否若已定義,為 {@link Message.text} 中參照此附件的範圍。這是文字 範圍,不是位元組範圍。
displayKindstring否轉譯此附件的用戶端的建議顯示提示。可辨識的值包含:

- 'image':附件為影像 - 'document':附件為文字文件 - 'symbol':附件為程式碼符號(例如函式或類別) - 'directory':附件為資料夾 - 'selection':附件為文件內的選取範圍

實作 MAY 提供額外的值;用戶端 SHOULD 在遇到未知值時退回合理的 預設值。
_metaRecord<string, unknown>否附件的額外實作定義中介資料。

若附件由 completions 指令產生,用戶端在傳送包含已接受補全的 使用者訊息時,MUST 保留代理主機原先傳回的 _meta 的每個屬性。

SimpleMessageAttachment ​

簡單、不透明的附件,其模型表示由產生者描述。

欄位類型必要說明
typeMessageAttachmentKind.Simple是判別欄位
modelRepresentationstring否附件應顯示給模型的表示。

若附件由用戶端產生,此屬性 MUST 已定義,讓代理主機可正確解讀附件。 當附件源自 completions 回應時,MAY 省略此屬性。

MessageEmbeddedResourceAttachment ​

資料以 base64 字串內嵌的附件。

將此用於應隨使用者訊息本身傳遞而非另行擷取的小型二進位有效負載 (例如貼上的影像)。

欄位類型必要說明
typeMessageAttachmentKind.EmbeddedResource是判別欄位
datastring是Base64 編碼的二進位資料
contentTypestring是內容 MIME 類型(例如 "image/png"、"application/pdf")
selectionTextSelection否附加文字資源內的選用選取範圍。

僅對文字資源有意義。

MessageResourceAttachment ​

依 URI 參照資源的附件。內容不會內嵌傳遞;消費者可在需要時透過 resourceRead 擷取它。

欄位類型必要說明
typeMessageAttachmentKind.Resource是判別欄位
selectionTextSelection否被參照文字資源內的選用選取範圍。

僅對文字資源有意義。

MessageAnnotationsAttachment ​

參照工作階段之註解通道上之註解的附件(參見 {@link AnnotationsState})。

當 {@link annotationIds} 缺省時,附件參照通道上的每個註解;當存在時, 僅參照列出的 {@link Annotation.id | 註解識別碼}。

欄位類型必要說明
typeMessageAttachmentKind.Annotations是判別欄位
resourceURI是註解通道的 URI(通常為 ahp-session:/&lt;uuid&gt;/annotations)。 符合 {@link AnnotationsSummary.resource}。
annotationIdsstring[]否要參照的特定 {@link Annotation.id | 註解識別碼}。當缺省時,附件 參照通道上的所有註解。

MessageChatAttachment ​

透過固定已完成回合參照聊天轉錄的附件。

被參照的聊天 MUST 與訊息的聊天屬於同一工作階段。主機在接受訊息時, 從其第一個保留回合到 endTurn(含)解析轉錄。之後的回合不會變更 已傳送附件所代表的情境。

主機 MUST NOT 遞迴展開在參照轉錄內找到的聊天附件。用戶端 SHOULD 在 被參照聊天之後被修剪時持續轉譯 label,並將開啟 resource 視為 盡力而為。

欄位類型說明
typeMessageAttachmentKind.Chat判別欄位
resourceURI被參照聊天的 URI。
endTurnstring被參照轉錄中包含的最後一個已完成回合。

MessageAttachment ​

與 {@link Message} 關聯的附件。

SimpleMessageAttachment | MessageEmbeddedResourceAttachment | MessageResourceAttachment | MessageAnnotationsAttachment | MessageChatAttachment

ResponsePartKind ​

回應部分類型的判別欄位。

成員值
Markdown'markdown'
ContentRef'contentRef'
ToolCall'toolCall'
Reasoning'reasoning'
SystemNotification'systemNotification'
InputRequest'inputRequest'

MarkdownResponsePart ​

欄位類型說明
kindResponsePartKind.Markdown判別欄位
idstring部分識別碼,由 chat/delta 用來指定此部分進行內容附加
contentstringMarkdown 內容

ResourceReponsePart ​

作為對儲存於狀態樹外之大型內容參照的內容部分。

欄位類型說明
kindResponsePartKind.ContentRef判別欄位

ToolCallResponsePart ​

表示為回應部分的工具呼叫。

工具呼叫為回應串流的一部分,與文字與推理交錯。toolCall.toolCallId 作為指定此部分之操作的識別碼。

欄位類型說明
kindResponsePartKind.ToolCall判別欄位
toolCallToolCallState完整工具呼叫生命週期狀態

ReasoningResponsePart ​

來自模型的推理/思考內容。

欄位類型說明
kindResponsePartKind.Reasoning判別欄位
idstring部分識別碼,由 chat/reasoning 用來指定此部分進行內容附加
contentstring累積的推理文字

ResponsePart ​

MarkdownResponsePart | ResourceReponsePart | ToolCallResponsePart | ReasoningResponsePart | SystemNotificationResponsePart | InputRequestResponsePart

InputRequestResponsePart ​

回合回應串流中的作用中或已解決輸入請求(引出)。

伺服器以 chat/inputRequested 插入此部分。當 {@link response} 缺省時, 用戶端可以 chat/inputAnswerChanged 更新答案草稿,並以 chat/inputCompleted 提交回應。完成時會就地更新此部分,使其串流 位置穩定,且完整互動保持持久並可透過 fetchTurns 回填。

若回合在未提交回應的情況下結束,未解決的部分會留在已完成的回合 轉錄中,且 {@link response} 缺省。

欄位類型必要說明
kindResponsePartKind.InputRequest是判別欄位
requestChatInputRequest是請求,承載其 id、message、url、questions 與目前的草稿或 已提交 answers。
responseChatInputResponseKind否請求如何被解決。在用戶端以 chat/inputCompleted 提交 accept、 decline 或 cancel 之前為缺省。

SystemNotificationResponsePart ​

作為回應串流一部分呈現的系統通知。

系統通知是由代理程式框架撰寫的訊息,需要對代理程式(供情境感知) 與使用者(供轉錄連續性)皆可見。例如「背景子代理程式 X 已完成」 或「任務 Y 已取消」。

欄位類型必要說明
kindResponsePartKind.SystemNotification是判別欄位
contentStringOrMarkdown是系統通知的文字
_metaRecord<string, unknown>否此通知的額外提供者特定中介資料。

主機 MAY 附加觸發通知之項目的機器可讀描述子,讓用戶端可在不解析 content 的情況下對其分類、加圖示、分組、篩選或在地化。用戶端 MAY 在此尋找已知的索引鍵以提供增強 UI,且當 _meta 缺省或無法 辨識時,MUST 單獨從 content 一致地轉譯。

ToolCallStatus ​

工具呼叫在生命週期狀態機中的狀態。

成員值說明
Streaming'streaming'
PendingConfirmation'pending-confirmation'
Running'running'
AuthRequired'auth-required'執行暫停,因為支援此呼叫的 MCP 伺服器需要驗證(通常是範圍不足的 步進式驗證,於執行中浮現)。參見 {@link ToolCallAuthRequiredState}。
PendingResultConfirmation'pending-result-confirmation'
Completed'completed'
Cancelled'cancelled'

ToolCallConfirmationReason ​

工具呼叫如何被確認執行。

  • NotNeeded — 無需確認(自動核准)
  • UserAction — 使用者明確核准
  • Setting — 由持續性使用者設定核准
成員值
NotNeeded'not-needed'
UserAction'user-action'
Setting'setting'

ToolCallRiskAssessmentKind ​

將模型評審器識別為確認需求的來源。

成員值
Judge'judge'

ToolCallRiskAssessmentStatus ​

非同步模型評審器確認決定的生命週期狀態。

成員值
Loading'loading'
Complete'complete'

ToolCallRiskAssessmentLoadingState ​

模型評審器仍在評估工具呼叫。

欄位類型說明
statusToolCallRiskAssessmentStatus.Loading

ToolCallRiskAssessmentCompleteState ​

模型評審器已完成其評估。

欄位類型說明
statusToolCallRiskAssessmentStatus.Complete
reasonStringOrMarkdown
safetynumber評審器的正規化安全分數,其中 0 為不安全,1 為安全。

ToolCallRiskAssessment ​

ToolCallRiskAssessmentLoadingState | ToolCallRiskAssessmentCompleteState

ToolCallCancellationReason ​

工具呼叫為何被取消。

成員值
Denied'denied'
Skipped'skipped'
ResultDenied'result-denied'

ConfirmationOptionKind ​

確認選項是否代表核准或拒絕動作。

成員值
Approve'approve'
Deny'deny'

ConfirmationOption ​

伺服器為等待核准的工具呼叫所提供的確認選項。允許超出簡單 核准/拒絕的更豐富選擇 — 例如「在此工作階段中核准」或 「附帶原因拒絕」。

欄位類型必要說明
idstring是選項的唯一識別碼,於確認操作中傳回
labelstring是顯示給使用者的人類可讀標籤
kindConfirmationOptionKind是此選項是否代表核准或拒絕
groupnumber否用於視覺分類的邏輯群組編號。

用戶端 SHOULD 依選項定義的順序顯示選項,且 MAY 使用不同的群組 編號在選項的邏輯叢集之間插入分隔線。

ToolCallContributorKind ​

成員值
Client'client'
MCP'mcp'

ToolCallClientContributor ​

欄位類型說明
kindToolCallContributorKind.Client
clientIdstring若此工具由用戶端提供,為所屬用戶端的 clientId。伺服器端工具 為缺省。

設定時,所識別的用戶端負責執行工具並以結果分派 chat/toolCallComplete。

ToolCallMcpContributor ​

欄位類型說明
kindToolCallContributorKind.MCP
customizationIdstring在 {@link SessionState.customizations} 中對應 MCP 伺服器的自訂 ID。

ToolCallContributor ​

ToolCallClientContributor | ToolCallMcpContributor

ToolCallResult ​

工具執行結果細節,於執行完成後可用。

欄位類型必要說明
successboolean是工具是否成功
pastTenseMessageStringOrMarkdown是工具已執行之事的過去式描述
contentToolResultContent[]否非結構化結果內容區塊。

這鏡像 MCP CallToolResult 的 content 欄位。
structuredContentRecord<string, unknown>否選用的結構化結果物件。

這鏡像 MCP CallToolResult 的 structuredContent 欄位。
error
{
  message: string;
  code?: string
}
否當工具失敗時的錯誤細節

ToolCallStreamingState ​

LM 正在串流工具呼叫參數。

欄位類型必要說明
statusToolCallStatus.Streaming是
partialInputstring否目前為止累積的部分參數
invocationMessageStringOrMarkdown否參數串流時顯示的進度訊息

ToolCallPendingConfirmationState ​

參數已完整,或執行中的工具需要重新確認(例如執行中的權限檢查)。

欄位類型必要說明
statusToolCallStatus.PendingConfirmation是
confirmationTitleStringOrMarkdown否確認提示的簡短標題(例如 "Run in terminal"、"Write file")
riskAssessmentToolCallRiskAssessment否促成此確認需求的風險評估。
edits
{
  items: FileEdit[]
}
否此工具呼叫將執行的檔案編輯,供確認前預覽
editableboolean否代理主機是否允許用戶端在確認前編輯工具的輸入參數
optionsConfirmationOption[]否伺服器為此確認提供的選項。當存在時,用戶端 SHOULD 改為轉譯這些 選項,而非單純的核准/拒絕 UI。每個選項屬於一個 {@link ConfirmationOptionGroup},讓用戶端仍可分類這些選擇。

ToolCallRunningState ​

工具正在主動執行。

欄位類型必要說明
statusToolCallStatus.Running是
contentToolResultContent[]否工具仍在執行時產生的部分內容。

例如,終端機內容區塊讓用戶端可在工具完成前訂閱即時輸出。

ToolCallAuthRequiredState ​

執行中的工具呼叫暫停,因為支援它的 MCP 伺服器需要驗證 — 最常見為 由 tools/call 請求本身觸發的 {@link McpAuthRequirement.reason | insufficientScope} 步進式驗證。只能從 {@link ToolCallRunningState} 到達,且通常在驗證後返回該處:running → auth-required → running → …。用戶端也可改為不分派驗證,透過分派帶有 失敗 結果的 chat/toolCallComplete 來取消呼叫,且一律直接移至 {@link ToolCallCompletedState} — 此路徑上 requiresResultConfirmation 會被忽略,因此永遠不會進入 {@link ToolCallPendingResultConfirmationState}。 從此狀態分派的 成功 結果為無效,且 MUST 被化簡器作為 no-op 拒絕/忽略,因為挑戰後執行從未恢復。

這是 {@link McpServerAuthRequiredState} 的工具呼叫層級對應 — 該狀態 表示 MCP 伺服器 無法服務任何請求;此狀態表示 此特定呼叫 正在 等待相同種類的挑戰。兩者獨立分派,且 MAY 同時為真或不同時:例如, 由單一工具呼叫觸發的 insufficientScope 挑戰不必封鎖整個伺服器。

由於挑戰一律透過現有的 authenticate 指令推送權杖來解決,此狀態 只能源自 {@link ToolCallContributorKind.MCP | 由 MCP 伺服器貢獻} 的 工具呼叫 — contributor 因此被窄化(與其他工具呼叫狀態上選用、 多種類的 contributor 不同)。

欄位類型必要說明
statusToolCallStatus.AuthRequired是
contributorToolCallMcpContributor是貢獻此工具呼叫的 MCP 伺服器 — 一律為 MCP,絕非用戶端工具。
authMcpAuthRequirement是封鎖此呼叫的驗證挑戰。
contentToolResultContent[]否呼叫為驗證暫停前產生的部分內容。

ToolCallPendingResultConfirmationState ​

工具已完成執行,等待用戶端核准結果。

欄位類型說明
statusToolCallStatus.PendingResultConfirmation

ToolCallCompletedState ​

工具已成功完成或發生錯誤。

欄位類型說明
statusToolCallStatus.Completed

ToolCallCancelledState ​

工具呼叫在執行前被取消。

欄位類型必要說明
statusToolCallStatus.Cancelled是
reasonToolCallCancellationReason是工具為何被取消
reasonMessageStringOrMarkdown否解釋取消的選用訊息
userSuggestionMessage否使用者建議改為執行的動作
selectedOptionConfirmationOption否使用者所選的確認選項(若有提供確認選項)

ToolCallState ​

所有工具呼叫生命週期狀態的判別聯集。

完整狀態機圖請參見 狀態模型指南。

ToolCallStreamingState | ToolCallPendingConfirmationState | ToolCallRunningState | ToolCallAuthRequiredState | ToolCallPendingResultConfirmationState | ToolCallCompletedState | ToolCallCancelledState

ToolCallConfirmationState ​

會因用戶端確認而封鎖的兩個工具呼叫狀態:執行前的參數確認 ({@link ToolCallPendingConfirmationState})與執行後的結果確認 ({@link ToolCallPendingResultConfirmationState})。

{@link ToolCallAuthRequiredState} 刻意 不 屬於此聯集:它不因 chat/toolCallConfirmed 式的用戶端決定而封鎖,而是因用戶端完成 OAuth 流程並呼叫 authenticate 而封鎖。其工作階段層級呈現請參見 {@link SessionToolAuthenticationRequest}。

在工作階段層級由 {@link SessionToolConfirmationRequest} 呈現。

ToolCallPendingConfirmationState | ToolCallPendingResultConfirmationState

ToolResultContentType ​

工具結果內容類型的判別欄位。

成員值
Text'text'
EmbeddedResource'embeddedResource'
Resource'resource'
FileEdit'fileEdit'
Terminal'terminal'
Subagent'subagent'

ToolResultTextContent ​

工具結果中的文字內容。

鏡像 MCP TextContent。

欄位類型說明
typeToolResultContentType.Text
textstring文字內容

ToolResultEmbeddedResourceContent ​

內嵌於工具結果的 Base64 編碼二進位內容。

鏡像 MCP EmbeddedResource(用於內嵌二進位資料)。

欄位類型說明
typeToolResultContentType.EmbeddedResource
datastringBase64 編碼的資料
contentTypestring內容類型(例如 "image/png"、"application/pdf")

ToolResultResourceContent ​

對儲存於工具結果外之資源的參照。

包裝 {@link ContentRef} 以延遲載入大型結果。

欄位類型說明
typeToolResultContentType.Resource

ToolResultFileEditContent ​

描述工具執行的檔案修改。

欄位類型說明
typeToolResultContentType.FileEdit

ToolResultTerminalContent ​

對輸出與此工具結果相關之終端機的參照。

用戶端可訂閱終端機的 URI 以即時串流其輸出,在工具執行時提供即時 回饋。

當指令結束時,{@link result} 會填入完成的結果中,為未訂閱的用戶端 保留結果。這記錄的是指令的結束,而非終端機的結束 — 終端機之後 可能會繼續執行。

欄位類型必要說明
typeToolResultContentType.Terminal是
resourceURI是終端機 URI(可訂閱以取得完整終端機狀態)
titlestring是終端機內容的顯示標題
isPtyboolean否此終端機式資源是否由偽終端機支援。當 false 時,輸出為純文字, 且用戶端不需解析 VT 序列。
resultTerminalCommandResult否指令的結果,於其結束後存在。

TerminalCommandResult ​

在終端機式工具中執行之指令的結果,於指令結束時填入 {@link ToolResultTerminalContent.result}。

欄位類型必要說明
exitCodenumber否已完成指令的結束代碼(若執行階段有回報)
previewstring否指令輸出的預覽,供未訂閱終端機或在其處置後才抵達的用戶端使用。 當 isPty 為 true 時,預覽可能包含 VT 序列;當 false 時為 純文字。
truncatedboolean否preview 是否已知為不完整或已截斷

ToolResultSubagentContent ​

內嵌於工具結果中的參照,指向由工具呼叫產生的工作者聊天(子代理程式 委派),由聊天 URI(ahp-chat:/...)參照。

這是產生工具呼叫對工作者的正向檢視。工作者聊天透過其 {@link ChatOrigin}(kind: 'tool')反向記錄相同的邊,其 toolCallId 識別發出此內容的工具呼叫。

欄位類型必要說明
typeToolResultContentType.Subagent是
resourceURI是工作者聊天 URI(可訂閱以取得完整聊天狀態)
titlestring是子代理程式的顯示標題
agentNamestring否內部代理程式名稱
descriptionstring否子代理程式任務的人類可讀描述

ToolResultContent ​

工具結果中的內容區塊。

鏡像 MCP CallToolResult.content 中的內容區塊,加上用於延遲載入大型 結果的 ToolResultResourceContent、用於檔案編輯差異的 ToolResultFileEditContent、用於即時終端機輸出與指令完成中介資料的 ToolResultTerminalContent,以及用於工具產生工作者聊天的 ToolResultSubagentContent(AHP 擴充)。

ToolResultTextContent | ToolResultEmbeddedResourceContent | ToolResultResourceContent | ToolResultFileEditContent | ToolResultTerminalContent | ToolResultSubagentContent

操作 ​

變動 ChatState。透過外層的 ActionEnvelope.channel 限定於某個聊天 URI。

JSON Schema: actions.schema.json

chat/turnStarted ​

新訊息已傳送給代理程式,且新回合開始。

用戶端僅被允許傳送 {@link MessageKind.User} 訊息。

欄位類型必要說明
typeActionType.ChatTurnStarted是
turnIdstring是回合識別碼
startedAtstring是此回合開始時的 ISO 8601 時間戳記。
messageMessage是新訊息
queuedMessageIdstring否若此回合是從佇列訊息自動啟動,該訊息的 ID
_metaRecord<string, unknown>否此操作的額外提供者特定中繼資料。

用戶端 MAY 在此尋找已知鍵以提供增強的 UI,且代理主機 MAY 用它來承載不適合任何其他欄位的個別事件上下文 — 例如,將事件歸因於特定代理程式(例如在回合內運作的子代理程式)。沿用 MCP _meta 慣例。

chat/delta ​

來自助理的串流文字區塊,附加到特定回應部分。

伺服器 MUST 先發出 chat/responsePart 以建立目標部分(markdown 或推理),再使用此操作將文字附加到它。

欄位類型必要說明
typeActionType.ChatDelta是
turnIdstring是回合識別碼
partIdstring是要附加到的回應部分識別碼
contentstring是文字區塊
_metaRecord<string, unknown>否此操作的額外提供者特定中繼資料。

用戶端 MAY 在此尋找已知鍵以提供增強的 UI,且代理主機 MAY 用它來承載不適合任何其他欄位的個別事件上下文 — 例如,將事件歸因於特定代理程式(例如在回合內運作的子代理程式)。沿用 MCP _meta 慣例。

chat/responsePart ​

附加到回應的結構化內容。

欄位類型必要說明
typeActionType.ChatResponsePart是
turnIdstring是回合識別碼
partResponsePart是回應部分(markdown 或內容參照)
_metaRecord<string, unknown>否此操作的額外提供者特定中繼資料。

用戶端 MAY 在此尋找已知鍵以提供增強的 UI,且代理主機 MAY 用它來承載不適合任何其他欄位的個別事件上下文 — 例如,將事件歸因於特定代理程式(例如在回合內運作的子代理程式)。沿用 MCP _meta 慣例。

chat/toolCallStart ​

工具呼叫開始 — 參數正從 LM 串流傳入。

伺服器設定 {@link ToolCallContributor | contributor} 以識別工具的起源。對於用戶端提供的工具,具名用戶端負責在工具到達 running 狀態時執行它,並分派 chat/toolCallComplete。對於 MCP 伺服器提供的工具,伺服器會針對具名的 McpServerCustomization 執行呼叫。

欄位類型必要說明
typeActionType.ChatToolCallStart是
toolNamestring是內部工具名稱(用於除錯/日誌)
displayNamestring是人類可讀的工具名稱
intentionstring否工具呼叫意圖執行之動作的人類可讀描述
contributorToolCallContributor否所呼叫工具之貢獻者的參照。對於非由用戶端或 MCP 伺服器貢獻的伺服器端工具則不存在。

chat/toolCallDelta ​

工具呼叫的串流部分參數。

欄位類型必要說明
typeActionType.ChatToolCallDelta是
contentstring是要附加的部分參數內容
invocationMessageStringOrMarkdown否更新的進度訊息

chat/toolCallReady ​

工具呼叫參數已完成,或執行中的工具需要重新確認。

當針對 streaming 工具呼叫分派時,會轉換到 pending-confirmation,或若設定了 confirmed 則直接轉換到 running。

當針對 running 工具呼叫分派時(例如執行中途需要權限),會轉換回 pending-confirmation。invocationMessage 與 _meta SHOULD 被更新以描述所需的特定確認。用戶端使用標準 chat/toolCallConfirmed 流程來核准或拒絕。

對於用戶端提供的工具,伺服器通常會將 confirmed 設為 'not-needed',讓工具直接轉換到 running,讓擁有用戶端能立即開始執行。

欄位類型必要說明
typeActionType.ChatToolCallReady是
invocationMessageStringOrMarkdown是描述工具將執行之動作或所需確認的訊息
toolInputstring否原始工具輸入
confirmationTitleStringOrMarkdown否確認提示的簡短標題(例如 "Run in terminal"、"Write file")
riskAssessmentToolCallRiskAssessment否促成確認需求的風險評估。
edits
{
  items: FileEdit[]
}
否此工具呼叫將執行的檔案編輯,用於確認前的預覽
editableboolean否代理主機是否允許用戶端在確認前編輯工具的輸入參數
confirmedToolCallConfirmationReason否若設定,工具已自動確認並直接轉換到 running
optionsConfirmationOption[]否伺服器為此確認提供的選項。若存在,用戶端 SHOULD 改為渲染這些選項,而非單純的核准/拒絕 UI。每個選項屬於一個 {@link ConfirmationOptionGroup},讓用戶端仍能將選擇分類。

chat/toolCallConfirmed(已核准) ​

用戶端核准待處理的工具呼叫。工具轉換到 running。

欄位類型必要說明
typeActionType.ChatToolCallConfirmed是
approvedtrue是工具呼叫已核准
confirmedToolCallConfirmationReason是工具確認的方式
editedToolInputstring否已編輯的工具輸入參數,若用戶端在確認前修改了它們
selectedOptionIdstring否所選確認選項的 ID,若伺服器提供了選項

chat/toolCallConfirmed(已拒絕) ​

用戶端拒絕待處理的工具呼叫。工具轉換到 cancelled。

對於用戶端提供的工具,若擁有用戶端無法識別該工具或無法執行它,MUST 分派此操作。

欄位類型必要說明
typeActionType.ChatToolCallConfirmed是
approvedfalse是工具呼叫已被拒絕
reasonToolCallCancellationReason.Denied | ToolCallCancellationReason.Skipped是工具取消的原因
userSuggestionMessage否使用者建議改為執行的動作
reasonMessageStringOrMarkdown否拒絕的選用說明
selectedOptionIdstring否所選確認選項的 ID,若伺服器提供了選項

ChatToolCallConfirmedAction ​

用戶端確認或拒絕待處理的工具呼叫。

ChatToolCallApprovedAction | ChatToolCallDeniedAction

chat/toolCallComplete ​

工具執行完成。若 requiresResultConfirmation 為 true,轉換到 completed 或 pending-result-confirmation。

對於用戶端提供的工具(其工具呼叫狀態帶有含 clientId 的用戶端 ToolCallContributor),擁有用戶端會帶著執行結果分派此操作。若分派的用戶端與貢獻者的 clientId 不符,伺服器 SHOULD 拒絕此操作。

等待用戶端工具呼叫的伺服器 MAY 在實作用戶端中斷連線或變得無回應後,於合理持續時間後逾時,並帶著 result.success = false 與適當錯誤分派此操作。

用戶端 MAY 也針對目前處於 auth-required 狀態的工具呼叫,以 失敗 的結果(result.success: false)分派此操作,以在不完成待處理 MCP 驗證挑戰的情況下取消該呼叫。這永遠會將工具呼叫直接轉換到 completed,保留它在暫停以進行驗證前的欄位; requiresResultConfirmation 在此轉換會被忽略;取消永遠無法進入 pending-result-confirmation,因為沒有可檢閱的實際結果。

成功 的結果(result.success: true)對處於 auth-required 狀態的工具呼叫是無效的 — 執行在挑戰後從未恢復,因此沒有任何事物能產生它。reducer MUST 將其作為 no-op 拒絕/忽略,讓工具呼叫留在 auth-required。用戶端必須在成功完成前先解決驗證挑戰(chat/toolCallAuthResolved)。

欄位類型必要說明
typeActionType.ChatToolCallComplete是
resultToolCallResult是執行結果
requiresResultConfirmationboolean否若為 true,結果在完成前需要用戶端核准

chat/toolCallResultConfirmed ​

用戶端核准或拒絕工具的結果。

若 approved 為 false,工具會以原因 result-denied 轉換到 cancelled。

欄位類型說明
typeActionType.ChatToolCallResultConfirmed
approvedboolean結果是否已核准

chat/toolCallContentChanged ​

工具仍在執行時產生的部分內容。

取代執行中工具呼叫狀態上的 content 陣列。用戶端可使用它在工具完成前顯示即時回饋(例如終端機參照)。

對於用戶端提供的工具(其工具呼叫狀態帶有含 clientId 的用戶端 ToolCallContributor),擁有用戶端會在執行時分派此操作以串流傳入中繼內容。若分派的用戶端與貢獻者的 clientId 不符,伺服器 SHOULD 拒絕此操作。

欄位類型說明
typeActionType.ChatToolCallContentChanged
contentToolResultContent[]執行中工具呼叫的目前部分內容

chat/toolCallAuthRequired ​

執行中的工具呼叫已暫停,等待 MCP 驗證。將工具呼叫從 running 轉換到 auth-required。

伺服器在支援呼叫的 MCP 伺服器於執行中途以 401/403 挑戰回應時分派此操作(見 {@link McpAuthRequirement.reason | insufficientScope})。主機 SHOULD 將此與 session/inputNeededSet(kind toolAuthentication)配對,讓區塊在工作階段摘要層級可見,鏡像 {@link McpServerAuthRequiredState} 自身的 InputNeeded 指引。

僅對由 MCP 伺服器貢獻的工具呼叫有效 — 若工具呼叫的 contributor 不是 {@link ToolCallContributorKind.MCP | MCP-kind},reducer 為 no-op。

欄位類型說明
typeActionType.ChatToolCallAuthRequired
authMcpAuthRequirement阻擋此呼叫的驗證挑戰。

chat/toolCallAuthResolved ​

阻擋工具呼叫的驗證挑戰已解決(用戶端透過 authenticate 推送權杖且主機已驗證它)。將工具呼叫從 auth-required 轉換回 running,保留它在暫停前的欄位。

主機 SHOULD 在此分派後移除對應的 session/inputNeededSet 項目(kind toolAuthentication)。

欄位類型說明
typeActionType.ChatToolCallAuthResolved

chat/turnComplete ​

回合完成 — 助理已閒置。

欄位類型必要說明
typeActionType.ChatTurnComplete是
turnIdstring是回合識別碼
durationnumber是以毫秒為單位的回合經過持續時間,由產生者自身的時鐘測量。用戶端 MUST NOT 透過相減時間戳記來推導此值 — 跨用戶端時鐘可能不同 — 且 MUST 將它視為不透明的、產生者提供的資料。
_metaRecord<string, unknown>否此操作的額外提供者特定中繼資料。

用戶端 MAY 在此尋找已知鍵以提供增強的 UI,且代理主機 MAY 用它來承載不適合任何其他欄位的個別事件上下文 — 例如,將事件歸因於特定代理程式(例如在回合內運作的子代理程式)。沿用 MCP _meta 慣例。

chat/turnCancelled ​

回合已中止;伺服器停止處理。

欄位類型必要說明
typeActionType.ChatTurnCancelled是
turnIdstring是回合識別碼
durationnumber是以毫秒為單位的回合經過持續時間,由產生者自身的時鐘測量。用戶端 MUST NOT 透過相減時間戳記來推導此值 — 跨用戶端時鐘可能不同 — 且 MUST 將它視為不透明的、產生者提供的資料。
_metaRecord<string, unknown>否此操作的額外提供者特定中繼資料。

用戶端 MAY 在此尋找已知鍵以提供增強的 UI,且代理主機 MAY 用它來承載不適合任何其他欄位的個別事件上下文 — 例如,將事件歸因於特定代理程式(例如在回合內運作的子代理程式)。沿用 MCP _meta 慣例。

chat/error ​

回合處理期間發生錯誤。

欄位類型必要說明
typeActionType.ChatError是
turnIdstring是回合識別碼
durationnumber是以毫秒為單位的回合經過持續時間,由產生者自身的時鐘測量。用戶端 MUST NOT 透過相減時間戳記來推導此值 — 跨用戶端時鐘可能不同 — 且 MUST 將它視為不透明的、產生者提供的資料。
errorErrorInfo是錯誤詳細資料
_metaRecord<string, unknown>否此操作的額外提供者特定中繼資料。

用戶端 MAY 在此尋找已知鍵以提供增強的 UI,且代理主機 MAY 用它來承載不適合任何其他欄位的個別事件上下文 — 例如,將事件歸因於特定代理程式(例如在回合內運作的子代理程式)。沿用 MCP _meta 慣例。

chat/activityChanged ​

此聊天的活動描述已變更。

由伺服器分派以指出聊天目前正在做什麼(例如執行工具、思考)。透過省略它或將它設為 undefined 來清除活動。產生者 SHOULD 也以 session/chatUpdated 更新父工作階段的聊天目錄,讓 ChatSummary.activity 保持同步。

欄位類型必要說明
typeActionType.ChatActivityChanged是
activitystring否目前活動的人類可讀描述;省略或設為 undefined 以清除

chat/workingDirectorySet ​

工作目錄已新增到此聊天的 {@link ChatState.workingDirectories} 子集。

以目錄 URI 為鍵的成員資格語意:當聊天的子集尚未包含 directory 時,reducer 會附加它(若不存在則建立子集),且當它已存在時為 no-op。directory MUST 是所屬工作階段 {@link SessionState.workingDirectories} 之一;主機 MUST 拒絕非如此的目錄。僅在代理程式公告 {@link AgentCapabilities.multipleWorkingDirectories} 時有效。

欄位類型說明
typeActionType.ChatWorkingDirectorySet
directoryURI要新增到此聊天子集的工作目錄。

chat/workingDirectoryRemoved ​

工作目錄已從此聊天的 {@link ChatState.workingDirectories} 子集中移除。

從聊天的子集中移除 directory;當它不存在時為 no-op。具冪等性,鏡像 session/workingDirectoryRemoved。僅影響聊天的子集 — 目錄仍保留在工作階段的集合中。

欄位類型說明
typeActionType.ChatWorkingDirectoryRemoved
directoryURI要從此聊天子集中移除的工作目錄。

chat/usage ​

回合的權杖使用量報告。

欄位類型必要說明
typeActionType.ChatUsage是
turnIdstring是回合識別碼
usageUsageInfo是權杖使用量資料
_metaRecord<string, unknown>否此操作的額外提供者特定中繼資料。

用戶端 MAY 在此尋找已知鍵以提供增強的 UI,且代理主機 MAY 用它來承載不適合任何其他欄位的個別事件上下文 — 例如,將事件歸因於特定代理程式(例如在回合內運作的子代理程式)。沿用 MCP _meta 慣例。

chat/reasoning ​

來自模型的推理/思考文字,附加到特定推理回應部分。

伺服器 MUST 先發出 chat/responsePart 以建立目標推理部分,再使用此操作將文字附加到它。

欄位類型必要說明
typeActionType.ChatReasoning是
turnIdstring是回合識別碼
partIdstring是要附加到的推理回應部分識別碼
contentstring是推理文字區塊
_metaRecord<string, unknown>否此操作的額外提供者特定中繼資料。

用戶端 MAY 在此尋找已知鍵以提供增強的 UI,且代理主機 MAY 用它來承載不適合任何其他欄位的個別事件上下文 — 例如,將事件歸因於特定代理程式(例如在回合內運作的子代理程式)。沿用 MCP _meta 慣例。

chat/truncated ​

截斷工作階段的歷史。若提供 turnId,該回合之後的所有回合都會被移除,且保留指定的回合。若省略 turnId,所有回合都會被移除。

若有活動回合,它會被靜默捨棄,且聊天狀態回到 idle。

常見使用案例:截斷舊資料,然後以編輯過的訊息分派新的 chat/turnStarted。

欄位類型必要說明
typeActionType.ChatTruncated是
turnIdstring否保留到並包含此回合為止的回合。省略以清除所有回合。

chat/turnsLoaded ​

將較舊的已完成回合載入此聊天的狀態。

主機在回應 fetchTurns 之前,以及在套用任何參照比目前載入視窗更舊之回合的操作之前,分派此操作。turns 依最舊優先排序,並前置到目前的 turns 視窗。turnsNextCursor 取代狀態的游標;當所有保留回合現在都已載入時,省略它。

欄位類型必要說明
typeActionType.ChatTurnsLoaded是
turnsTurn[]是載入狀態的較舊已完成回合,依最舊優先排序。
turnsNextCursorstring否用於載入下一個較舊頁面的不透明游標,若還有剩餘。

chat/pendingMessageSet ​

待處理訊息已設定(upsert 語意:建立或取代)。

對於引導訊息,這永遠會取代單一引導訊息。對於佇列訊息,若具有給定 id 的訊息已存在,它會就地更新;否則會附加到佇列。若設定佇列訊息時聊天處於閒置狀態,伺服器 SHOULD 立即取用它並開始新回合。

用戶端僅被允許傳送 {@link MessageKind.User} 訊息。

欄位類型說明
typeActionType.ChatPendingMessageSet
kindPendingMessageKind這是引導訊息還是佇列訊息
idstring此待處理訊息的唯一識別碼
messageMessage訊息內容

chat/pendingMessageRemoved ​

待處理訊息已移除(引導或佇列)。

由用戶端分派以取消待處理訊息,或由伺服器在它取用訊息時分派(例如從佇列訊息開始回合,或將引導訊息注入目前回合)。

欄位類型說明
typeActionType.ChatPendingMessageRemoved
kindPendingMessageKind這是引導訊息還是佇列訊息
idstring要移除的待處理訊息識別碼

chat/queuedMessagesReordered ​

重新排序佇列訊息。

order 陣列包含佇列訊息的 ID,依其新的所需順序排列。不存在於目前佇列中的 ID 會被忽略。ID 不在 order 中的佇列訊息會以原始相對順序附加到結尾(讓具有過時佇列檢視的用戶端永遠不會靜默捨棄訊息)。

欄位類型說明
typeActionType.ChatQueuedMessagesReordered
orderstring[]依所需順序排列的佇列訊息 ID

chat/draftChanged ​

聊天的草稿輸入已變更。

用戶端 MAY 定期將其本地輸入狀態 — 使用者正在撰寫的訊息,包括其 {@link Message.model | 模型} / {@link Message.agent | 代理程式} 選擇與附件 — 同步到聊天的 {@link ChatState.draft | draft},讓它在重新載入後仍留存,且對檢視相同聊天的其他用戶端可見。積極同步 not 必要; 用戶端 SHOULD 去抖動,且 MAY 僅在方便的時刻同步。將 draft 設為 undefined 以清除它(例如訊息傳送後)。

用戶端僅被允許草擬 {@link MessageKind.User} 訊息。

欄位類型必要說明
typeActionType.ChatDraftChanged是
draftMessage否新的草稿訊息,或 undefined 以清除它

chat/inputRequested ​

工作階段向使用者請求輸入。

在活動回合中建立未解決的 {@link InputRequestResponsePart},或以具有相同請求 id 的未解決部分取代它。除非提供 request.answers,否則答案草稿會被保留。

欄位類型說明
typeActionType.ChatInputRequested
requestChatInputRequest要建立或取代的輸入請求

chat/inputAnswerChanged ​

用戶端已更新、提交、跳過或移除單一進行中的答案。

以 answer: undefined 分派會移除該問題的答案草稿。

欄位類型必要說明
typeActionType.ChatInputAnswerChanged是
requestIdstring是輸入請求識別碼
questionIdstring是輸入請求中的問題識別碼
answerChatInputAnswer否已更新的答案,或 undefined 以清除答案草稿

chat/inputCompleted ​

用戶端已提交對輸入請求的接受、拒絕或取消回應。

若接受,伺服器會使用 answers(若提供)加上請求的同步答案狀態來恢復受阻的操作。reducer 會在現有的 {@link InputRequestResponsePart} 上記錄回應與最終答案。

欄位類型必要說明
typeActionType.ChatInputCompleted是
requestIdstring是輸入請求識別碼
responseChatInputResponseKind是完成結果
answersRecord<string, ChatInputAnswer>否選用的最終答案取代,以問題 ID 為鍵

ChatAction ​

ChatTurnStartedAction | ChatDeltaAction | ChatResponsePartAction | ChatToolCallStartAction | ChatToolCallDeltaAction | ChatToolCallReadyAction | ChatToolCallConfirmedAction | ChatToolCallCompleteAction | ChatToolCallResultConfirmedAction | ChatToolCallContentChangedAction | ChatToolCallAuthRequiredAction | ChatToolCallAuthResolvedAction | ChatTurnCompleteAction | ChatTurnCancelledAction | ChatErrorAction | ChatActivityChangedAction | ChatWorkingDirectorySetAction | ChatWorkingDirectoryRemovedAction | ChatUsageAction | ChatReasoningAction | ChatTruncatedAction | ChatTurnsLoadedAction | ChatPendingMessageSetAction | ChatPendingMessageRemovedAction | ChatQueuedMessagesReorderedAction | ChatDraftChangedAction | ChatInputRequestedAction | ChatInputAnswerChangedAction | ChatInputCompletedAction

指令 ​

JSON Schema: commands.schema.json

createChat ​

在工作階段中建立新聊天。

屬性值
方向用戶端 → 伺服器
類型請求

參數:

欄位類型必要說明
channelURI是包含新聊天的工作階段 URI。
chatURI是聊天 URI(由用戶端選擇,例如 ahp-chat:/&lt;uuid&gt;)。
initialMessageMessage否新聊天的選用初始訊息。
sourceChatSource否選用的來源聊天與來源回合。

來源聊天 MUST 屬於此工作階段。用戶端 MUST 僅在所選代理程式公告 capabilities.multipleChats.fork 時請求 kind: "fork",並僅在所選代理程式公告 capabilities.multipleChats.sideChat 時請求 kind: "sideChat"。兩種來源形式都帶有穩定的頂層 turnId。分叉的目標為已完成回合。側邊聊天也帶有穩定的 turnId,由主機對照來源聊天目前的活動回合或保留的歷史來解析。若它解析為活動回合,主機在接受 createChat 時會對目前可用的部分回應進行快照。當 source.kind === "sideChat" 且 source.selection 存在時,主機也會在所建立聊天的起源中對該確切選取文字進行快照並保留;其中的任何 responsePartId 僅作為出處,並非即時範圍。
workingDirectoriesURI[]否此聊天的初始工作目錄子集。每個項目 MUST 存在於所屬工作階段的 workingDirectories 中;伺服器 MUST 拒絕任何不存在的項目。若省略,聊天會繼承完整的工作階段集合。分叉聊天(source.kind 為 "fork" 的聊天)會繼承來源聊天的 workingDirectories;此欄位對分叉會被忽略。

除非代理程式公告 {@link AgentCapabilities.multipleWorkingDirectories},否則用戶端 MUST NOT 提供此欄位。
primaryWorkingDirectoryURI否聊天的主工作目錄 — 此聊天所置中的顯著根目錄。設定時,它 MUST 是聊天的有效工作目錄之一({@link workingDirectories},或省略時的工作階段集合)。當代理程式公告 {@link MultipleWorkingDirectoriesCapability.requiresPrimary} 時,用戶端 SHOULD 提供此項;主機 MAY 拒絕省略它的建立,或退回聊天的第一個目錄。建立時固定,並在 {@link ChatState.primaryWorkingDirectory} 上回報(唯讀)。對分叉會被忽略(source.kind 為 "fork" 的聊天會繼承來源聊天的主工作目錄)。

結果: 成功時為 null。


disposeChat ​

處置聊天並清理伺服器端資源。

屬性值
方向用戶端 → 伺服器
類型請求

參數:

無參數。

結果: 成功時為 null。


以 MIT 授權發布。