Spaces:
Sleeping
Sleeping
File size: 1,010 Bytes
0bcc252 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
import { EventEmitter } from 'events';
import { StepAction } from '../types';
interface ActionState {
thisStep: StepAction;
gaps: string[];
badAttempts: number;
totalStep: number;
}
export class ActionTracker extends EventEmitter {
private state: ActionState = {
thisStep: {action: 'answer', answer: '', references: [], think: ''},
gaps: [],
badAttempts: 0,
totalStep: 0
};
trackAction(newState: Partial<ActionState>) {
this.state = { ...this.state, ...newState };
this.emit('action', this.state.thisStep);
}
trackThink(think: string) {
// only update the think field of the current state
this.state = { ...this.state, thisStep: { ...this.state.thisStep, think } };
this.emit('action', this.state.thisStep);
}
getState(): ActionState {
return { ...this.state };
}
reset() {
this.state = {
thisStep: {action: 'answer', answer: '', references: [], think: ''},
gaps: [],
badAttempts: 0,
totalStep: 0
};
}
}
|