Show live task progress while agents work (#3227)

* feat(agents): surface live task progress

Keep current task state above the composer and turn task snapshots into semantic timeline activity. Normalize provider task protocols while preserving genuine plan flows.

* fix(agents): admit tasks through stream sequencing

* test(agents): expect normalized task status
This commit is contained in:
Mohamed Boudra
2026-08-11 18:23:30 +02:00
committed by GitHub
parent b2ff359b60
commit db6520bf36
37 changed files with 1342 additions and 60 deletions
+8
View File
@@ -393,6 +393,14 @@ describe("translation resources", () => {
expect(en.message.question.otherPlaceholder).toBe("Other...");
expect(en.message.todo.title).toBe("Tasks");
expect(en.message.todo.empty).toBe("No tasks yet.");
expect(en.message.todo.tasksProgressCurrent).toBe("{{completed}}/{{total}} tasks · {{task}}");
expect(en.message.todo.activity).toEqual({
created: "Created {{count}} tasks",
added: "Added",
started: "Started",
completed: "Completed",
reopened: "Reopened",
});
});
it("includes workspace tab toast keys for the Batch 4J migration", () => {
+9
View File
@@ -333,6 +333,15 @@ export const ar: TranslationResources = {
todo: {
title: "المهام",
empty: "لا توجد مهام حتى الآن.",
tasksProgress: "{{completed}}/{{total}} مهام",
tasksProgressCurrent: "{{completed}}/{{total}} مهام · {{task}}",
activity: {
created: "تم إنشاء {{count}} مهام",
added: "أُضيفت",
started: "بدأت",
completed: "اكتملت",
reopened: "أُعيد فتحها",
},
},
compaction: {
loading: "الضغط...",
+9
View File
@@ -332,6 +332,15 @@ export const en = {
todo: {
title: "Tasks",
empty: "No tasks yet.",
tasksProgress: "{{completed}}/{{total}} tasks",
tasksProgressCurrent: "{{completed}}/{{total}} tasks · {{task}}",
activity: {
created: "Created {{count}} tasks",
added: "Added",
started: "Started",
completed: "Completed",
reopened: "Reopened",
},
},
compaction: {
loading: "Compacting...",
+9
View File
@@ -336,6 +336,15 @@ export const es: TranslationResources = {
todo: {
title: "Tareas",
empty: "Aún no hay tareas.",
tasksProgress: "{{completed}}/{{total}} tareas",
tasksProgressCurrent: "{{completed}}/{{total}} tareas · {{task}}",
activity: {
created: "Se crearon {{count}} tareas",
added: "Añadida",
started: "Iniciada",
completed: "Completada",
reopened: "Reabierta",
},
},
compaction: {
loading: "Compactando...",
+9
View File
@@ -337,6 +337,15 @@ export const fr: TranslationResources = {
todo: {
title: "Tâches",
empty: "Aucune tâche pour l'instant.",
tasksProgress: "{{completed}}/{{total}} tâches",
tasksProgressCurrent: "{{completed}}/{{total}} tâches · {{task}}",
activity: {
created: "{{count}} tâches créées",
added: "Ajoutée",
started: "Commencée",
completed: "Terminée",
reopened: "Rouverte",
},
},
compaction: {
loading: "Compactage...",
+9
View File
@@ -336,6 +336,15 @@ export const ja: TranslationResources = {
todo: {
title: "タスク",
empty: "タスクがまだありません。",
tasksProgress: "{{completed}}/{{total}}タスク",
tasksProgressCurrent: "{{completed}}/{{total}}タスク · {{task}}",
activity: {
created: "{{count}}件のタスクを作成",
added: "追加",
started: "開始",
completed: "完了",
reopened: "再開",
},
},
compaction: {
loading: "コンテキストを圧縮中...",
+9
View File
@@ -334,6 +334,15 @@ export const ko: TranslationResources = {
todo: {
title: "작업",
empty: "아직 작업이 없습니다.",
tasksProgress: "작업 {{completed}}/{{total}}개",
tasksProgressCurrent: "작업 {{completed}}/{{total}}개 · {{task}}",
activity: {
created: "작업 {{count}}개 생성",
added: "추가됨",
started: "시작됨",
completed: "완료됨",
reopened: "다시 열림",
},
},
compaction: {
loading: "압축하는 중...",
+9
View File
@@ -336,6 +336,15 @@ export const ptBR: TranslationResources = {
todo: {
title: "Tarefas",
empty: "Nenhuma tarefa ainda.",
tasksProgress: "{{completed}}/{{total}} tarefas",
tasksProgressCurrent: "{{completed}}/{{total}} tarefas · {{task}}",
activity: {
created: "{{count}} tarefas criadas",
added: "Adicionada",
started: "Iniciada",
completed: "Concluída",
reopened: "Reaberta",
},
},
compaction: {
loading: "Compactando...",
+9
View File
@@ -335,6 +335,15 @@ export const ru: TranslationResources = {
todo: {
title: "Задачи",
empty: "Заданий пока нет.",
tasksProgress: "{{completed}}/{{total}} задач",
tasksProgressCurrent: "{{completed}}/{{total}} задач · {{task}}",
activity: {
created: "Создано задач: {{count}}",
added: "Добавлена",
started: "Начата",
completed: "Завершена",
reopened: "Возобновлена",
},
},
compaction: {
loading: "Уплотнение...",
+9
View File
@@ -333,6 +333,15 @@ export const zhCN: TranslationResources = {
todo: {
title: "任务",
empty: "还没有任务。",
tasksProgress: "{{completed}}/{{total}} 项任务",
tasksProgressCurrent: "{{completed}}/{{total}} 项任务 · {{task}}",
activity: {
created: "已创建 {{count}} 项任务",
added: "已添加",
started: "已开始",
completed: "已完成",
reopened: "已重新打开",
},
},
compaction: {
loading: "正在压缩...",