fix(task-logs): invalidate sources before change events
This commit is contained in:
parent
b584fa0403
commit
511ea75c4f
2 changed files with 29 additions and 4 deletions
|
|
@ -482,10 +482,6 @@ export class TeamLogSourceTracker {
|
|||
}
|
||||
|
||||
private emitLogSourceChange(teamName: string): void {
|
||||
this.emitter?.({
|
||||
type: 'log-source-change',
|
||||
teamName,
|
||||
});
|
||||
for (const listener of this.changeListeners) {
|
||||
try {
|
||||
listener(teamName);
|
||||
|
|
@ -493,6 +489,10 @@ export class TeamLogSourceTracker {
|
|||
logger.warn(`Log-source listener failed for ${teamName}: ${String(error)}`);
|
||||
}
|
||||
}
|
||||
this.emitter?.({
|
||||
type: 'log-source-change',
|
||||
teamName,
|
||||
});
|
||||
}
|
||||
|
||||
private async computeSnapshot(context: {
|
||||
|
|
|
|||
|
|
@ -125,6 +125,31 @@ describe('TeamLogSourceTracker', () => {
|
|||
await tracker.disableTracking('demo', 'tool_activity');
|
||||
});
|
||||
|
||||
it('notifies log-source listeners before forwarding the external team change event', () => {
|
||||
const logsFinder = {
|
||||
getLogSourceWatchContext: vi.fn(async () => ({
|
||||
projectDir: '/tmp/demo',
|
||||
sessionIds: [],
|
||||
})),
|
||||
} as unknown as TeamMemberLogsFinder;
|
||||
const tracker = new TeamLogSourceTracker(logsFinder);
|
||||
const events: string[] = [];
|
||||
tracker.onLogSourceChange(() => {
|
||||
events.push('listener');
|
||||
});
|
||||
tracker.setEmitter(() => {
|
||||
events.push('emitter');
|
||||
});
|
||||
|
||||
(
|
||||
tracker as unknown as {
|
||||
emitLogSourceChange: (teamName: string) => void;
|
||||
}
|
||||
).emitLogSourceChange('demo');
|
||||
|
||||
expect(events).toEqual(['listener', 'emitter']);
|
||||
});
|
||||
|
||||
it('supports stall_monitor as an independent tracking consumer', async () => {
|
||||
tempDir = await mkdtemp(path.join(tmpdir(), 'team-log-source-tracker-stall-monitor-'));
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue