Stream apply_patch changes (#17862)

Adds new events for streaming apply_patch changes from responses api.
This is to enable clients to show progress during file writes.

Caveat: This does not work with apply_patch in function call mode, since
that required adding streaming json parsing.
This commit is contained in:
Akshay Nathan
2026-04-16 18:12:19 -07:00
committed by GitHub
parent 9effa0509f
commit 7995c66032
20 changed files with 729 additions and 29 deletions

View File

@@ -1546,6 +1546,9 @@ pub enum EventMsg {
/// `ExecCommandBegin` so frontends can show progress indicators.
PatchApplyBegin(PatchApplyBeginEvent),
/// Latest model-generated structured changes for an `apply_patch` call.
PatchApplyUpdated(PatchApplyUpdatedEvent),
/// Notification that a patch application has finished.
PatchApplyEnd(PatchApplyEndEvent),
@@ -3240,6 +3243,14 @@ pub struct PatchApplyBeginEvent {
pub changes: HashMap<PathBuf, FileChange>,
}
#[derive(Debug, Clone, Deserialize, Serialize, JsonSchema, TS)]
pub struct PatchApplyUpdatedEvent {
/// Identifier for the originating `apply_patch` tool call.
pub call_id: String,
/// Structured file changes parsed from the model-generated patch input so far.
pub changes: HashMap<PathBuf, FileChange>,
}
#[derive(Debug, Clone, Deserialize, Serialize, JsonSchema, TS)]
pub struct PatchApplyEndEvent {
/// Identifier for the PatchApplyBegin that finished.