Documentation
¶
Overview ¶
Package claudecode implements the TermmuxDriverAdapter for Claude Code CLI.
Index ¶
- func FormatSessionLogPath(configDir, cwd, sessionID string) string
- func MakeOtelConfig(endpoint string) map[string]string
- func ParseSessionLog(reader io.Reader) ([]driver.ConversationEntry, error)
- func WriteSessionLog(entries []driver.ConversationEntry, w io.Writer) error
- type Driver
- func (d *Driver) BuildCommandArgs(prependArgs, extraArgs []string) []string
- func (d *Driver) BuildCommandEnvVars(runtimeDir string) map[string]string
- func (d *Driver) Command() string
- func (d *Driver) DiscoveredSessionID() string
- func (d *Driver) Errors() []error
- func (d *Driver) EventHandler() *EventHandler
- func (d *Driver) HandleHookEvent(eventName string, payload json.RawMessage) bool
- func (d *Driver) HandleInterrupt() bool
- func (d *Driver) Name() string
- func (d *Driver) NativeSessionLogPath(configDir, cwd, sessionID string) string
- func (d *Driver) OtelCallbacksForMonitor(mon *monitor.AgentMonitor) (onLogs, onMetrics, onTraces func(json.RawMessage))
- func (d *Driver) ParseSessionLog(reader io.Reader) ([]driver.ConversationEntry, error)
- func (d *Driver) PrepareForLaunch(dryRun bool) (driver.LaunchConfig, error)
- func (d *Driver) SessionLogCallbackForMonitor(mon *monitor.AgentMonitor) func([]byte)
- func (d *Driver) SetConfigDir(dir string)
- func (d *Driver) Start(ctx context.Context, events chan<- monitor.AgentEvent) error
- func (d *Driver) Stop()
- func (d *Driver) SupportsHooks() bool
- func (d *Driver) SupportsResume() bool
- func (d *Driver) WriteSessionLog(entries []driver.ConversationEntry, writer io.Writer) error
- type EventHandler
- func (eh *EventHandler) HandleHookEvent(eventName string, payload json.RawMessage) []monitor.AgentEvent
- func (eh *EventHandler) HandleOtelLogs(payload json.RawMessage) []monitor.AgentEvent
- func (eh *EventHandler) HandleOtelMetrics(_ json.RawMessage) []monitor.AgentEvent
- func (eh *EventHandler) HandleOtelTraces(_ json.RawMessage) []monitor.AgentEvent
- func (eh *EventHandler) HandleSessionLogLine(line []byte) []monitor.AgentEvent
- func (eh *EventHandler) SessionID() string
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func FormatSessionLogPath ¶
FormatSessionLogPath returns the session log path for given parameters.
func MakeOtelConfig ¶
MakeOtelConfig creates an OTEL endpoint-aware config for the child process env.
func ParseSessionLog ¶
func ParseSessionLog(reader io.Reader) ([]driver.ConversationEntry, error)
ParseSessionLog reads Claude Code's session.jsonl format and returns canonical conversation entries.
func WriteSessionLog ¶
func WriteSessionLog(entries []driver.ConversationEntry, w io.Writer) error
WriteSessionLog writes canonical conversation entries back into Claude Code's session.jsonl format.
Types ¶
type Driver ¶
type Driver struct {
// contains filtered or unexported fields
}
Driver implements TermmuxDriverAdapter for Claude Code CLI.
func (*Driver) BuildCommandArgs ¶
BuildCommandArgs builds the CLI arguments for launching Claude Code.
func (*Driver) BuildCommandEnvVars ¶
BuildCommandEnvVars returns environment variables to set for the child process.
func (*Driver) DiscoveredSessionID ¶
DiscoveredSessionID returns the session ID discovered from OTEL events.
func (*Driver) EventHandler ¶
func (d *Driver) EventHandler() *EventHandler
EventHandler returns the underlying event handler for testing.
func (*Driver) HandleHookEvent ¶
func (d *Driver) HandleHookEvent(eventName string, payload json.RawMessage) bool
HandleHookEvent processes a hook event from Claude Code.
func (*Driver) HandleInterrupt ¶
HandleInterrupt handles an interrupt signal.
func (*Driver) NativeSessionLogPath ¶
NativeSessionLogPath returns the path to Claude Code's native session.jsonl.
func (*Driver) OtelCallbacksForMonitor ¶
func (d *Driver) OtelCallbacksForMonitor(mon *monitor.AgentMonitor) (onLogs, onMetrics, onTraces func(json.RawMessage))
OtelCallbacksForMonitor returns OTEL callbacks that route through the event handler and submit to the monitor.
func (*Driver) ParseSessionLog ¶
ParseSessionLog reads Claude Code's session.jsonl format.
func (*Driver) PrepareForLaunch ¶
func (d *Driver) PrepareForLaunch(dryRun bool) (driver.LaunchConfig, error)
PrepareForLaunch prepares the driver for launch, including config directory setup.
func (*Driver) SessionLogCallbackForMonitor ¶
func (d *Driver) SessionLogCallbackForMonitor(mon *monitor.AgentMonitor) func([]byte)
SessionLogCallbackForMonitor returns a callback that processes session log lines and submits events to the monitor.
func (*Driver) SetConfigDir ¶
SetConfigDir sets the config directory for this driver instance. Called by the session manager before launch.
func (*Driver) Start ¶
Start begins event processing. The events channel receives normalized events.
func (*Driver) SupportsHooks ¶
func (*Driver) SupportsResume ¶
func (*Driver) WriteSessionLog ¶
WriteSessionLog writes to Claude Code's session.jsonl format.
type EventHandler ¶
type EventHandler struct {
// contains filtered or unexported fields
}
EventHandler processes three event sources (OTEL, hooks, session log) and normalizes them into AgentEvents for Claude Code sessions.
func NewEventHandler ¶
func NewEventHandler() *EventHandler
NewEventHandler creates a new Claude Code event handler.
func (*EventHandler) HandleHookEvent ¶
func (eh *EventHandler) HandleHookEvent(eventName string, payload json.RawMessage) []monitor.AgentEvent
HandleHookEvent processes hook events from Claude Code. Returns normalized events for the hook type.
func (*EventHandler) HandleOtelLogs ¶
func (eh *EventHandler) HandleOtelLogs(payload json.RawMessage) []monitor.AgentEvent
HandleOtelLogs processes OTEL log records from Claude Code. Claude Code emits logs for: api_request, api_error, tool_result.
func (*EventHandler) HandleOtelMetrics ¶
func (eh *EventHandler) HandleOtelMetrics(_ json.RawMessage) []monitor.AgentEvent
HandleOtelMetrics processes OTEL metrics — currently a no-op for Claude Code.
func (*EventHandler) HandleOtelTraces ¶
func (eh *EventHandler) HandleOtelTraces(_ json.RawMessage) []monitor.AgentEvent
HandleOtelTraces processes OTEL traces — currently a no-op for Claude Code.
func (*EventHandler) HandleSessionLogLine ¶
func (eh *EventHandler) HandleSessionLogLine(line []byte) []monitor.AgentEvent
HandleSessionLogLine processes a JSONL line from Claude Code's session.jsonl. Extracts assistant message content for the AgentMessage event.
func (*EventHandler) SessionID ¶
func (eh *EventHandler) SessionID() string
SessionID returns the discovered session ID, or empty if not yet known.