Documentation
¶
Index ¶
Constants ¶
const MaxJSONLLineSize = 10 * 1024 * 1024 // 10MB
MaxJSONLLineSize is the maximum size for a single JSONL line Default bufio.Scanner buffer is 64KB, but transcript lines with thinking blocks and tool results can exceed 1MB
Variables ¶
This section is empty.
Functions ¶
Types ¶
type HookInput ¶
type HookInput struct {
SessionID string `json:"session_id"`
TranscriptPath string `json:"transcript_path"`
CWD string `json:"cwd"`
PermissionMode string `json:"permission_mode"`
HookEventName string `json:"hook_event_name"`
Reason string `json:"reason"`
ParentPID int `json:"parent_pid,omitempty"` // Claude Code process ID (set by confab, not Claude Code)
// UserPromptSubmit-specific fields
Prompt string `json:"prompt,omitempty"`
// PreToolUse/PostToolUse-specific fields
ToolName string `json:"tool_name,omitempty"`
ToolInput map[string]any `json:"tool_input,omitempty"`
ToolUseID string `json:"tool_use_id,omitempty"`
ToolResponse map[string]any `json:"tool_response,omitempty"` // PostToolUse only
}
HookInput represents hook data from Claude Code.
This is a union type containing fields from all hook types (SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, etc.). JSON unmarshaling handles missing fields gracefully. This approach is pragmatic for a small number of hooks with mostly orthogonal fields. Consider splitting into separate types if hooks start having conflicting field semantics or the number of hook types grows significantly.
type HookResponse ¶
type HookResponse struct {
Continue bool `json:"continue"`
StopReason string `json:"stopReason"`
SuppressOutput bool `json:"suppressOutput"`
}
HookResponse is the JSON response sent back to Claude Code
type InboxEvent ¶
type InboxEvent struct {
Type string `json:"type"` // Event type: "session_end"
Timestamp time.Time `json:"timestamp"` // When the event was written
HookInput *HookInput `json:"hook_input,omitempty"` // Full hook payload for session events
}
InboxEvent represents an event written to the daemon's inbox file. The inbox is a JSONL file where each line is an event.
type PreToolUseOutput ¶
type PreToolUseOutput struct {
HookEventName string `json:"hookEventName"`
PermissionDecision string `json:"permissionDecision,omitempty"` // "allow", "deny", or "ask"
PermissionDecisionReason string `json:"permissionDecisionReason,omitempty"`
UpdatedInput map[string]any `json:"updatedInput,omitempty"`
}
PreToolUseOutput contains PreToolUse-specific decision fields
type PreToolUseResponse ¶
type PreToolUseResponse struct {
HookSpecificOutput *PreToolUseOutput `json:"hookSpecificOutput,omitempty"`
}
PreToolUseResponse is the JSON response for PreToolUse hooks
type Session ¶
type Session struct {
SessionID string
TranscriptPath string
CWD string
Reason string
Timestamp time.Time
FileCount int
TotalSizeBytes int64
}
Session represents a captured session in the database
type SessionFile ¶
SessionFile represents a file discovered for a session