Documentation
¶
Index ¶
- func ExtractClaudeProjectHints(path string) (cwd, gitBranch string)
- func ExtractCwdFromSession(path string) string
- func ExtractProjectFromCwd(cwd string) string
- func ExtractProjectFromCwdWithBranch(cwd, gitBranch string) string
- func ExtractTextContent(content gjson.Result) (string, bool, bool, []ParsedToolCall, []ParsedToolResult)
- func GeminiSessionID(data []byte) string
- func GetProjectName(dirName string) string
- func NeedsProjectReparse(project string) bool
- func NormalizeToolCategory(rawName string) string
- func ParseClaudeSession(path, project, machine string) (ParsedSession, []ParsedMessage, error)
- func ParseCodexSession(path, machine string, includeExec bool) (*ParsedSession, []ParsedMessage, error)
- func ParseCopilotSession(path, machine string) (*ParsedSession, []ParsedMessage, error)
- func ParseGeminiSession(path, project, machine string) (*ParsedSession, []ParsedMessage, error)
- func ParseOpenCodeSession(dbPath, sessionID, machine string) (*ParsedSession, []ParsedMessage, error)
- type AgentType
- type FileInfo
- type OpenCodeSession
- type OpenCodeSessionMeta
- type ParsedMessage
- type ParsedSession
- type ParsedToolCall
- type ParsedToolResult
- type RoleType
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ExtractClaudeProjectHints ¶ added in v0.4.0
ExtractClaudeProjectHints reads project-identifying metadata from a Claude Code JSONL session file.
func ExtractCwdFromSession ¶
ExtractCwdFromSession reads the first cwd field from a Claude Code JSONL session file.
func ExtractProjectFromCwd ¶
ExtractProjectFromCwd extracts a project name from a working directory path. If cwd is inside a git repository (including linked worktrees), this returns the repository root directory name. Otherwise it falls back to the last path component.
func ExtractProjectFromCwdWithBranch ¶ added in v0.4.0
ExtractProjectFromCwdWithBranch extracts a canonical project name from cwd and optionally git branch metadata. Branch is used as a fallback heuristic when the original worktree path no longer exists on disk.
func ExtractTextContent ¶
func ExtractTextContent( content gjson.Result, ) (string, bool, bool, []ParsedToolCall, []ParsedToolResult)
ExtractTextContent extracts readable text from message content. content can be a string or a JSON array of blocks. Returns the text, hasThinking, hasToolUse, tool calls, and tool results.
func GeminiSessionID ¶
GeminiSessionID extracts the sessionId field from raw Gemini session JSON data without fully parsing.
func GetProjectName ¶
GetProjectName converts an encoded Claude project directory name to a clean project name. Claude encodes paths like /Users/alice/code/my-app as -Users-alice-code-my-app.
func NeedsProjectReparse ¶
NeedsProjectReparse checks if a stored project name looks like an un-decoded encoded path that should be re-extracted.
func NormalizeToolCategory ¶
NormalizeToolCategory maps a raw tool name to a normalized category. Categories: Read, Edit, Write, Bash, Grep, Glob, Task, Tool, Other.
func ParseClaudeSession ¶
func ParseClaudeSession( path, project, machine string, ) (ParsedSession, []ParsedMessage, error)
ParseClaudeSession parses a Claude Code JSONL session file.
func ParseCodexSession ¶
func ParseCodexSession( path, machine string, includeExec bool, ) (*ParsedSession, []ParsedMessage, error)
ParseCodexSession parses a Codex JSONL session file. Returns nil session if the session is non-interactive and includeExec is false.
func ParseCopilotSession ¶ added in v0.5.0
func ParseCopilotSession( path, machine string, ) (*ParsedSession, []ParsedMessage, error)
ParseCopilotSession parses a Copilot JSONL session file. Returns (nil, nil, nil) if the file doesn't exist or contains no user/assistant messages.
func ParseGeminiSession ¶
func ParseGeminiSession( path, project, machine string, ) (*ParsedSession, []ParsedMessage, error)
ParseGeminiSession parses a Gemini CLI session JSON file. Unlike Claude/Codex JSONL, each Gemini file is a single JSON document containing all messages.
func ParseOpenCodeSession ¶ added in v0.5.0
func ParseOpenCodeSession( dbPath, sessionID, machine string, ) (*ParsedSession, []ParsedMessage, error)
ParseOpenCodeSession parses a single session by ID from the OpenCode database.
Types ¶
type OpenCodeSession ¶ added in v0.5.0
type OpenCodeSession struct {
Session ParsedSession
Messages []ParsedMessage
}
OpenCodeSession bundles a parsed session with its messages.
func ParseOpenCodeDB ¶ added in v0.5.0
func ParseOpenCodeDB( dbPath, machine string, ) ([]OpenCodeSession, error)
ParseOpenCodeDB opens the OpenCode SQLite database read-only and returns all sessions with messages.
type OpenCodeSessionMeta ¶ added in v0.5.0
OpenCodeSessionMeta is lightweight metadata for a session, used to detect changes without parsing messages or parts.
func ListOpenCodeSessionMeta ¶ added in v0.5.0
func ListOpenCodeSessionMeta( dbPath string, ) ([]OpenCodeSessionMeta, error)
ListOpenCodeSessionMeta returns lightweight metadata for all sessions without parsing messages or parts. Used by the sync engine to detect which sessions have changed.
type ParsedMessage ¶
type ParsedMessage struct {
Ordinal int
Role RoleType
Content string
Timestamp time.Time
HasThinking bool
HasToolUse bool
ContentLength int
ToolCalls []ParsedToolCall
ToolResults []ParsedToolResult
}
ParsedMessage holds a single extracted message.
type ParsedSession ¶
type ParsedSession struct {
ID string
Project string
Machine string
Agent AgentType
ParentSessionID string
FirstMessage string
StartedAt time.Time
EndedAt time.Time
MessageCount int
File FileInfo
}
ParsedSession holds session metadata extracted from a JSONL file.
type ParsedToolCall ¶
type ParsedToolCall struct {
ToolUseID string // tool_use block id from session data
ToolName string // raw name from session data
Category string // normalized: Read, Edit, Write, Bash, etc.
InputJSON string // raw JSON of the input object
SkillName string // skill name when ToolName is "Skill"
}
ParsedToolCall holds a single tool invocation extracted from a message.
type ParsedToolResult ¶ added in v0.4.0
ParsedToolResult holds metadata about a tool result block in a user message (the response to a prior tool_use).