Comma Agents
@comma-agents/coreHooks

Hook Primitives

The two base hook types — SideEffectHook and TransformHook.

All domain-specific hooks (AgentHooks, FlowHooks) are built on two primitive types.

SideEffectHook

A hook that observes a value without modifying it. Multiple side-effect hooks run in order. Used for logging, metrics, state management, and similar read-only observations.

Prop

Type

import { hookIntoAgent } from "@comma-agents/core";

hookIntoAgent(agent, {
  beforeCall: [
    async (message) => console.log("Sending:", message),
    async (message) => metrics.recordCall(message),
  ],
});

TransformHook

A hook that receives a value and returns a (possibly modified) value. Multiple transform hooks are chained sequentially — the output of one becomes the input of the next.

Prop

Type

import { hookIntoAgent } from "@comma-agents/core";

hookIntoAgent(agent, {
  alterCallMessage: [
    async (message) => `[context] ${message}`,
    async (message) => message.trim(),
  ],
});

Which hooks are which?

Hooks with alter* in their name are transform hooks. All others are side-effect hooks.

Hook kindAgent examplesFlow examples
TransformalterCallMessage, alterResponse, alterFirstCallMessage, alterFirstResponsealterMessageBeforeFlow, alterMessageAfterFlow, alterMessageBeforeCycle, alterMessageAfterCycle
Side-effectbeforeCall, afterCallResult, beforeFirstCall, afterFirstCallResult, beforeToolCall, afterToolCallbeforeFlow, afterFlow, beforeStep, afterStep

On this page