hooks

package
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 25, 2026 License: MIT Imports: 11 Imported by: 0

Documentation

Overview

Package hooks implements auto-capture hooks for lifecycle events. Hooks are invoked at key lifecycle events and automatically capture observations into the Yaad memory graph.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ScoreRelevance

func ScoreRelevance(toolName, input, output, toolError string) float64

ScoreRelevance determines if a tool observation is worth storing. Returns a score 0.0-1.0 where higher = more worth remembering. No LLM needed — heuristic-based on content signals.

func ShouldCapture

func ShouldCapture(toolName, input, output, toolError string) bool

ShouldCapture returns true if the observation passes the relevance threshold.

Types

type ConversationCapture

type ConversationCapture struct {
	// contains filtered or unexported fields
}

ConversationCapture extracts memories from conversation messages. Unlike PostToolUse (which captures tool observations), ConversationCapture analyzes the semantic content of messages to identify decisions, conventions, learnings, and action items worth remembering.

func NewConversationCapture

func NewConversationCapture(eng *engine.Engine, project string) *ConversationCapture

NewConversationCapture creates a conversation capture hook.

func (*ConversationCapture) CaptureMessages

func (cc *ConversationCapture) CaptureMessages(ctx context.Context, messages []ConversationMessage, sessionID, agent string) int

CaptureMessages analyzes a slice of conversation messages and stores significant observations as memories. Returns the number of memories created.

func (*ConversationCapture) CaptureWithSummary

func (cc *ConversationCapture) CaptureWithSummary(ctx context.Context, messages []ConversationMessage, sessionID, agent string) ConversationCaptureSummary

CaptureWithSummary is like CaptureMessages but returns a detailed summary.

type ConversationCaptureSummary

type ConversationCaptureSummary struct {
	TotalMessages  int
	MemoriesStored int
	ByType         map[string]int
}

ConversationCaptureSummary reports how many memories were captured.

func (ConversationCaptureSummary) FormatSummary

func (s ConversationCaptureSummary) FormatSummary() string

FormatSummary returns a human-readable capture summary.

type ConversationMessage

type ConversationMessage struct {
	Role    string // "user", "assistant", "system"
	Content string
}

ConversationMessage represents a single message in a conversation for auto-capture processing.

type HookInput

type HookInput struct {
	// Common
	SessionID string `json:"session_id"`
	Project   string `json:"project"`
	Agent     string `json:"agent"`

	// PostToolUse
	ToolName   string `json:"tool_name"`
	ToolInput  string `json:"tool_input"`
	ToolOutput string `json:"tool_output"`
	ToolError  string `json:"tool_error"`

	// UserPromptSubmit
	Prompt string `json:"prompt"`

	// SessionEnd
	Summary string `json:"summary"`
}

HookInput is the JSON payload passed to hooks via stdin.

func ReadInput

func ReadInput(r io.Reader) (*HookInput, error)

ReadInput reads HookInput from stdin (agents pipe JSON to hooks). Returns an empty HookInput if the reader is empty or contains no JSON.

type Runner

type Runner struct {
	// contains filtered or unexported fields
}

Runner executes hook logic.

func New

func New(eng *engine.Engine, project string) *Runner

New creates a hook runner.

func (*Runner) PostToolUse

func (r *Runner) PostToolUse(ctx context.Context, in *HookInput) error

PostToolUse is called after each tool use. Captures the observation.

func (*Runner) SessionEnd

func (r *Runner) SessionEnd(ctx context.Context, in *HookInput) error

SessionEnd is called when a session ends. Compresses and stores summary.

func (*Runner) SessionStart

func (r *Runner) SessionStart(ctx context.Context, in *HookInput) error

SessionStart is called when an agent session begins. Outputs hot-tier context to stdout for injection into the session.

func (*Runner) StoreToolEvent

func (r *Runner) StoreToolEvent(ctx context.Context, in *HookInput, store storage.Storage) error

StoreToolEvent stores a raw tool event for session replay.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL