feat(cli): surface progression intermédiaire, activité MCP, flux agent↔agent — #157 (QA verte)

This commit is contained in:
2026-08-06 13:13:24 +02:00
parent 918116664c
commit 309c10e5e9
5 changed files with 307 additions and 7 deletions

View File

@ -1650,15 +1650,34 @@ export interface TicketChat {
/**
* One streamed chunk of an assistant turn (mirror of the backend `ReplyChunk`,
* tagged on `kind`). `textDelta` is an incremental text fragment; `toolActivity`
* a best-effort activity badge; `final` the deterministic end-of-turn chunk
* carrying the aggregated content — after it the turn is frozen. `error` is a
* visible terminal fallback (ticket #60): the model produced no usable answer,
* so the turn ends with a human-readable explanation instead of a silent hang.
* tagged on `kind`). `textDelta` is an incremental text fragment; `progress`
* is the canonical best-effort stream of non-terminal provider/IdeA activity;
* `toolActivity` is kept as a legacy/simple activity badge; `final` is the
* deterministic end-of-turn chunk carrying the aggregated content — after it
* the turn is frozen. `error` is a visible terminal fallback (ticket #60): the
* model produced no usable answer, so the turn ends with a human-readable
* explanation instead of a silent hang.
*/
export type ReplyProgressSource = "providerNative" | "ideaLocal";
export type ReplyProgressKind = "turn" | "message" | "tool" | "mcp" | "other";
export type ReplyProgressStage = "started" | "delta" | "completed" | "info";
export interface ReplyProgress {
source: ReplyProgressSource;
kind: ReplyProgressKind;
stage: ReplyProgressStage;
label: string;
text?: string;
provider?: string;
nativeEvent?: string;
toolName?: string;
}
export type ReplyChunk =
| { kind: "userPrompt"; text: string }
| { kind: "textDelta"; text: string }
| { kind: "toolActivity"; label: string }
| { kind: "progress"; progress: ReplyProgress }
| { kind: "final"; content: string }
| { kind: "error"; message: string };