fix(notifications): improve agent progress notifications and permission handling (#459)

* fix(notifications): dismiss cross-window permissions, retry countdown, subtask filter
This commit is contained in:
Nguyễn Ngô Thượng
2026-02-21 00:46:15 +02:00
committed by GitHub
parent 2e08501ea5
commit 62e5c3edfe
9 changed files with 125 additions and 75 deletions
+11
View File
@@ -14,6 +14,7 @@ interface PermissionState {
interface PermissionActions {
addPermission: (permission: PermissionRequest, contextData?: { currentAgentContext?: Map<string, string>, sessionAgentSelections?: Map<string, string>, getSessionAgentEditMode?: (sessionId: string, agentName: string | undefined) => string }) => void;
respondToPermission: (sessionId: string, requestId: string, response: PermissionResponse) => Promise<void>;
dismissPermission: (sessionId: string, requestId: string) => void;
}
type PermissionStore = PermissionState & PermissionActions;
@@ -123,6 +124,16 @@ export const usePermissionStore = create<PermissionStore>()(
return { permissions: newPermissions };
});
},
dismissPermission: (sessionId: string, requestId: string) => {
set((state) => {
const sessionPermissions = state.permissions.get(sessionId) || [];
const updatedPermissions = sessionPermissions.filter((p) => p.id !== requestId);
const newPermissions = new Map(state.permissions);
newPermissions.set(sessionId, updatedPermissions);
return { permissions: newPermissions };
});
},
}),
{
name: "permission-store",
@@ -234,6 +234,7 @@ export interface SessionStore {
updateSessionCompaction: (sessionId: string, compactingTimestamp?: number | null) => void;
addPermission: (permission: PermissionRequest) => void;
respondToPermission: (sessionId: string, requestId: string, response: PermissionResponse) => Promise<void>;
dismissPermission: (sessionId: string, requestId: string) => void;
addQuestion: (question: QuestionRequest) => void;
dismissQuestion: (sessionId: string, requestId: string) => void;
@@ -526,6 +526,7 @@ export const useSessionStore = create<SessionStore>()(
return usePermissionStore.getState().addPermission(permission, contextData);
},
respondToPermission: (sessionId: string, requestId: string, response: PermissionResponse) => usePermissionStore.getState().respondToPermission(sessionId, requestId, response),
dismissPermission: (sessionId: string, requestId: string) => usePermissionStore.getState().dismissPermission(sessionId, requestId),
addQuestion: (question: QuestionRequest) => useQuestionStore.getState().addQuestion(question),
dismissQuestion: (sessionId: string, requestId: string) => useQuestionStore.getState().dismissQuestion(sessionId, requestId),