fix: close five frontend invalidation gaps for changeset, preview, and dependency events

- Add changeset: SSE rule (Gap 1-A) to cover cross-agent changeset events
- Add getChangeSet to revertChangeSet INVALIDATION_MAP (Gap 1-B) for same-client path
- Add preview: SSE rule (Gap 2) covering listPreviews and getPreviewStatus
- Extend task:/phase: SSE rules with getPhaseDependencies and listPhaseTaskDependencies (Gap 4-A)
- Add listPhaseTaskDependencies to createPhaseDependency/removePhaseDependency (Gap 4-B)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lukas May
2026-03-05 20:51:16 +01:00
parent f3042abe04
commit fff4ce2bb7
2 changed files with 9 additions and 7 deletions

View File

@@ -56,8 +56,8 @@ const INVALIDATION_MAP: Partial<Record<MutationName, QueryName[]>> = {
updatePhase: ["listPhases", "getPhase"],
approvePhase: ["listPhases", "listInitiativeTasks"],
queuePhase: ["listPhases"],
createPhaseDependency: ["getPhaseDependencies", "listInitiativePhaseDependencies"],
removePhaseDependency: ["getPhaseDependencies", "listInitiativePhaseDependencies"],
createPhaseDependency: ["getPhaseDependencies", "listInitiativePhaseDependencies", "listPhaseTaskDependencies"],
removePhaseDependency: ["getPhaseDependencies", "listInitiativePhaseDependencies", "listPhaseTaskDependencies"],
// --- Tasks ---
createPhaseTask: ["listPhaseTasks", "listInitiativeTasks", "listTasks"],
@@ -66,7 +66,7 @@ const INVALIDATION_MAP: Partial<Record<MutationName, QueryName[]>> = {
queueTask: ["listTasks", "listInitiativeTasks", "listPhaseTasks"],
// --- Change Sets ---
revertChangeSet: ["listPhases", "listPhaseTasks", "listInitiativeTasks", "listPages", "getPage", "listChangeSets", "getRootPage"],
revertChangeSet: ["listPhases", "listPhaseTasks", "listInitiativeTasks", "listPages", "getPage", "listChangeSets", "getRootPage", "getChangeSet"],
// --- Pages ---
updatePage: ["listPages", "getPage", "getRootPage"],

View File

@@ -29,10 +29,12 @@ function InitiativeDetailPage() {
// Single SSE stream for all live updates
useLiveUpdates([
{ prefix: 'task:', invalidate: ['listPhases', 'listTasks', 'listInitiativeTasks'] },
{ prefix: 'phase:', invalidate: ['listPhases', 'listTasks', 'listInitiativePhaseDependencies'] },
{ prefix: 'agent:', invalidate: ['listAgents', 'getActiveRefineAgent'] },
{ prefix: 'page:', invalidate: ['listPages', 'getPage', 'getRootPage'] },
{ prefix: 'task:', invalidate: ['listPhases', 'listTasks', 'listInitiativeTasks', 'getPhaseDependencies', 'listPhaseTaskDependencies'] },
{ prefix: 'phase:', invalidate: ['listPhases', 'listTasks', 'listInitiativePhaseDependencies', 'getPhaseDependencies'] },
{ prefix: 'agent:', invalidate: ['listAgents', 'getActiveRefineAgent'] },
{ prefix: 'page:', invalidate: ['listPages', 'getPage', 'getRootPage'] },
{ prefix: 'changeset:', invalidate: ['getChangeSet', 'listChangeSets'] },
{ prefix: 'preview:', invalidate: ['listPreviews', 'getPreviewStatus'] },
]);
// tRPC queries