refactor: handle tracking in emitter

old-agentic-v1^2
Philipp Burckhardt 2023-06-28 13:45:33 -04:00
rodzic 89c2a2a81c
commit cf21ecb264
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: A2C3BCA4F31D1DDD
2 zmienionych plików z 17 dodań i 18 usunięć

Wyświetl plik

@ -1,6 +1,7 @@
import { EventEmitter } from 'eventemitter3'
import * as types from '@/types'
import type { Agentic } from '@/agentic'
import { BaseTask } from '@/task'
import { TaskEvent, TaskStatus } from './event'
@ -9,12 +10,14 @@ export class TaskEventEmitter<
TInput extends types.TaskInput = void,
TOutput extends types.TaskOutput = string
> extends EventEmitter {
protected _agentic: Agentic
protected _task: BaseTask<TInput, TOutput>
constructor(task: BaseTask<TInput, TOutput>) {
constructor(task: BaseTask<TInput, TOutput>, agentic: Agentic) {
super()
this._task = task
this._agentic = agentic
}
emit(taskStatus: string | symbol, payload: object = {}): boolean {
@ -30,6 +33,7 @@ export class TaskEventEmitter<
...payload
}
})
this._agentic.taskTracker.addEvent(event)
return super.emit(taskStatus, event)
}
}

Wyświetl plik

@ -6,7 +6,7 @@ import { ZodType } from 'zod'
import type { Agentic } from './agentic'
import { SKIP_HOOKS } from './constants'
import * as errors from './errors'
import { TaskEvent, TaskEventEmitter, TaskStatus } from './events'
import { TaskEventEmitter, TaskStatus } from './events'
import {
HumanFeedbackMechanismCLI,
HumanFeedbackOptions,
@ -75,7 +75,10 @@ export abstract class BaseTask<
this._id =
options.id ?? this._agentic?.idGeneratorFn() ?? defaultIDGeneratorFn()
this._eventEmitter = new TaskEventEmitter<TInput, TOutput>(this)
this._eventEmitter = new TaskEventEmitter<TInput, TOutput>(
this,
this._agentic
)
}
public get agentic(): Agentic {
@ -281,14 +284,10 @@ export abstract class BaseTask<
}
}
const taskEvent = new TaskEvent({
payload: {
taskStatus: TaskStatus.RUNNING,
taskInputs: input,
...ctx.metadata
}
this._eventEmitter.emit(TaskStatus.RUNNING, {
taskInputs: input,
...ctx.metadata
})
this._agentic.taskTracker.addEvent(taskEvent)
for (const { hook: preHook } of this._preHooks) {
const preHookResult = await preHook(ctx)
@ -398,15 +397,11 @@ export abstract class BaseTask<
// ctx.tracker.setOutput(stringifyForDebugging(result, { maxLength: 100 }))
const taskEvent2 = new TaskEvent({
payload: {
taskInputs: input,
taskStatus: TaskStatus.SUCCEEDED,
taskOutput: result,
...ctx.metadata
}
this._eventEmitter.emit(TaskStatus.SUCCEEDED, {
taskInputs: input,
taskOutput: result,
...ctx.metadata
})
this._agentic.taskTracker.addEvent(taskEvent2)
return {
result,