Skip to content

Custom Hook

Objective: add behavior that records state after a model response.

import { ModelAfterEvent } from "@harness-kernel/core/agent/event";
import { HarnessHook } from "@harness-kernel/core/agent/hook";
class LastModelOutputHook extends HarnessHook.for(ModelAfterEvent) {
async onActive(session, event) {
session.state.update({
lastModel: event.payload.model,
lastAnswerLength: event.payload.content.length,
});
}
}

Register it:

export const agent = defineAgent({
key: "hook-guide",
label: "Hook Guide",
initialMode: chatMode,
modes: [chatMode],
hooks: [new LastModelOutputHook()],
});

Boundary note: the hook changes agent behavior. A host analytics listener would use session.onEvent(ModelAfterEvent, listener) instead.

API: Hooks and Events.