Documentation
¶
Index ¶
- Constants
- Variables
- func CollapsePreview(path string, commitPointUUID string) (int, error)
- func CountSeparatorTokens(entries []jsonl.Entry) int
- func ExportBranchesPreview(entries []jsonl.Entry, branches []analyzer.Branch, selectedIndices []int) (int, float64)
- func IsIdle(path string, threshold time.Duration) (bool, time.Time, error)
- func MarkerPath(sessionPath string) string
- func SaveMarkers(sessionPath string, mf *MarkerFile) error
- type CleanAllResult
- type CleanLiveOpts
- type CleanLiveResult
- type CollapseResult
- type CommitPoint
- type DedupResult
- type DeleteResult
- type ExportResult
- type MarkerFile
- func (mf *MarkerFile) AddCommitPoint(cp CommitPoint)
- func (mf *MarkerFile) Clear(uuid string)
- func (mf *MarkerFile) ClearPhase(uuid string)
- func (mf *MarkerFile) Get(uuid string) MarkerType
- func (mf *MarkerFile) GetCommitPoint(uuid string) *CommitPoint
- func (mf *MarkerFile) GetPhase(uuid string) PhaseType
- func (mf *MarkerFile) HasCommitPoint(uuid string) bool
- func (mf *MarkerFile) IsKeep(uuid string) bool
- func (mf *MarkerFile) IsNoise(uuid string) bool
- func (mf *MarkerFile) RemoveCommitPoint(uuid string)
- func (mf *MarkerFile) Set(uuid string, marker MarkerType)
- func (mf *MarkerFile) SetPhase(uuid string, phase PhaseType)
- func (mf *MarkerFile) Toggle(uuid string, marker MarkerType)
- func (mf *MarkerFile) TogglePhase(uuid string, phase PhaseType)
- type MarkerType
- type PhaseType
- type RepairResult
- type ReplaceImagesResult
- type RetryCleanResult
- type SplitResult
- type StripResult
- type TruncateResult
Constants ¶
const DefaultIdleThreshold = 2 * time.Second
DefaultIdleThreshold is the minimum time since last modification before a live edit is considered safe.
Variables ¶
var ErrRaceDetected = errors.New("race detected: file modified during live edit")
ErrRaceDetected is returned when the JSONL file changes during a live edit, indicating Claude Code wrote between operations.
var ErrSessionNotIdle = errors.New("session not idle: mtime too recent")
ErrSessionNotIdle is returned when the session mtime is too recent to safely edit.
Functions ¶
func CollapsePreview ¶ added in v0.4.6
CollapsePreview returns the count of CANDIDATE entries above a commit point without modifying anything (dry-run).
func CountSeparatorTokens ¶ added in v0.3.0
CountSeparatorTokens estimates the token cost of separators in entries.
func ExportBranchesPreview ¶ added in v0.4.7
func ExportBranchesPreview(entries []jsonl.Entry, branches []analyzer.Branch, selectedIndices []int) (int, float64)
ExportBranchesPreview returns token and cost totals without writing a file.
func IsIdle ¶ added in v0.3.0
IsIdle returns true if the file's mtime is older than threshold. Also returns the current mtime for subsequent race detection.
func MarkerPath ¶ added in v0.4.5
MarkerPath returns the sidecar file path for a given session JSONL path.
func SaveMarkers ¶ added in v0.4.5
func SaveMarkers(sessionPath string, mf *MarkerFile) error
SaveMarkers writes the marker file to disk.
Types ¶
type CleanAllResult ¶ added in v0.3.0
type CleanAllResult struct {
ProgressRemoved int
SnapshotsRemoved int
SidechainsRemoved int
TangentsRemoved int
FailedRetries int
StaleReadsRemoved int
ImagesReplaced int
SeparatorsStripped int
OutputsTruncated int
TotalTokensSaved int
KeepSkipped int
BytesBefore int64
BytesAfter int64
}
CleanAllResult holds the combined results of all cleanup operations.
func CleanAll ¶ added in v0.3.0
func CleanAll(path string) (*CleanAllResult, error)
CleanAll runs all cleanup operations in optimal order with a single backup. Order: entry deletions first, then content surgery.
type CleanLiveOpts ¶ added in v0.3.0
type CleanLiveOpts struct {
Aggressive bool // include Tier 4-5 (images, separators, truncation)
Threshold time.Duration // idle threshold (default: DefaultIdleThreshold)
}
CleanLiveOpts configures a live cleanup pass.
type CleanLiveResult ¶ added in v0.3.0
type CleanLiveResult struct {
ProgressRemoved int
SnapshotsRemoved int
ImagesReplaced int // Tier 4, only with Aggressive
SeparatorsStripped int // Tier 4, only with Aggressive
OutputsTruncated int // Tier 5, only with Aggressive
TotalTokensSaved int
BytesBefore int64
BytesAfter int64
}
CleanLiveResult holds the combined results of live cleanup operations.
func CleanLive ¶ added in v0.3.0
func CleanLive(path string, opts CleanLiveOpts) (*CleanLiveResult, error)
CleanLive runs safe cleanup operations on a potentially active session.
Tier 1: progress removal Tier 2: snapshot removal With Aggressive: Tier 4: image replacement, separator stripping Tier 5: bash output truncation
Between each sub-operation, the file mtime is checked. If it changed (meaning Claude Code wrote to it), the operation aborts and restores from the original backup.
Tier 6-7 operations (sidechains, tangents, retries, dedup) are NEVER available in live mode regardless of flags.
type CollapseResult ¶ added in v0.4.6
type CollapseResult struct {
EntriesRemoved int
ChainRepairs int
BytesBefore int64
BytesAfter int64
}
CollapseResult holds the result of a collapse operation.
type CommitPoint ¶ added in v0.4.6
type CommitPoint struct {
UUID string `json:"uuid"`
Timestamp time.Time `json:"timestamp"`
Goal string `json:"goal"`
Decisions []string `json:"decisions"`
Constraints []string `json:"constraints,omitempty"`
Questions []string `json:"questions,omitempty"`
Files []string `json:"files,omitempty"`
}
CommitPoint represents a user-marked decision boundary in a session.
func ExtractCanonicalState ¶ added in v0.4.6
func ExtractCanonicalState(entries []jsonl.Entry, cursorIdx int) CommitPoint
ExtractCanonicalState scans entries[0..cursorIdx] and builds a CommitPoint with extracted decisions, constraints, questions, and file references.
type DedupResult ¶ added in v0.3.0
type DedupResult struct {
StaleReadsRemoved int
EntriesRemoved int
BlocksRemoved int
ChainRepairs int
BytesBefore int64
BytesAfter int64
}
DedupResult holds the result of a duplicate read deduplication operation.
func DeduplicateReads ¶ added in v0.3.0
func DeduplicateReads(path string, dupResult *analyzer.DuplicateReadResult) (*DedupResult, error)
DeduplicateReads removes stale file read tool_use/tool_result pairs. For each stale read:
- If assistant message has only that tool_use → delete entire entry
- If assistant message has other blocks → remove just that tool_use block
- Remove the corresponding tool_result block from user message
- If user message only has that tool_result → delete entire entry
Always creates a backup before modifying.
type DeleteResult ¶
type DeleteResult struct {
EntriesRemoved int
ChainRepairs int
KeepSkipped int
BytesBefore int64
BytesAfter int64
}
DeleteResult holds the result of a delete operation.
func Delete ¶
func Delete(path string, toDelete map[int]bool) (*DeleteResult, error)
Delete removes selected entries from a JSONL file, repairing parentUuid chains. Always creates a backup before modifying.
func DeleteWithMarkers ¶ added in v0.4.5
func DeleteWithMarkers(path string, toDelete map[int]bool, markers *MarkerFile) (*DeleteResult, error)
DeleteWithMarkers removes selected entries, skipping any marked as KEEP.
func RemoveProgress ¶
func RemoveProgress(path string) (*DeleteResult, error)
RemoveProgress removes all progress messages from a JSONL file. Always creates a backup before modifying.
type ExportResult ¶ added in v0.4.7
type ExportResult struct {
BranchesExported int
EntriesExtracted int
TokenCost int
DollarCost float64
OutputPath string
}
ExportResult holds the result of a branch export operation.
func ExportBranches ¶ added in v0.4.7
func ExportBranches(entries []jsonl.Entry, branches []analyzer.Branch, selectedIndices []int, sessionID, outputPath string) (*ExportResult, error)
ExportBranches writes selected branches to a markdown file. selectedIndices are branch indices (0-based) into the branches slice. If selectedIndices is empty, all branches are exported.
type MarkerFile ¶ added in v0.4.5
type MarkerFile struct {
Version int `json:"version"`
Markers map[string]MarkerType `json:"markers"`
Phases map[string]PhaseType `json:"phases,omitempty"`
CommitPoints []CommitPoint `json:"commit_points,omitempty"`
}
MarkerFile holds persisted markers in a sidecar file alongside a session JSONL.
func LoadMarkers ¶ added in v0.4.5
func LoadMarkers(sessionPath string) (*MarkerFile, error)
LoadMarkers reads the sidecar marker file. Returns an empty MarkerFile if missing.
func (*MarkerFile) AddCommitPoint ¶ added in v0.4.6
func (mf *MarkerFile) AddCommitPoint(cp CommitPoint)
AddCommitPoint appends a commit point.
func (*MarkerFile) Clear ¶ added in v0.4.5
func (mf *MarkerFile) Clear(uuid string)
Clear removes a marker from a UUID.
func (*MarkerFile) ClearPhase ¶ added in v0.4.7
func (mf *MarkerFile) ClearPhase(uuid string)
ClearPhase removes a phase from a UUID.
func (*MarkerFile) Get ¶ added in v0.4.5
func (mf *MarkerFile) Get(uuid string) MarkerType
Get returns the marker for a UUID, or "" if unset.
func (*MarkerFile) GetCommitPoint ¶ added in v0.4.6
func (mf *MarkerFile) GetCommitPoint(uuid string) *CommitPoint
GetCommitPoint returns the commit point for a UUID, or nil if not found.
func (*MarkerFile) GetPhase ¶ added in v0.4.7
func (mf *MarkerFile) GetPhase(uuid string) PhaseType
GetPhase returns the phase for a UUID, or "" if unset.
func (*MarkerFile) HasCommitPoint ¶ added in v0.4.6
func (mf *MarkerFile) HasCommitPoint(uuid string) bool
HasCommitPoint returns true if a commit point exists at the given UUID.
func (*MarkerFile) IsKeep ¶ added in v0.4.5
func (mf *MarkerFile) IsKeep(uuid string) bool
IsKeep returns true if the UUID is marked as KEEP.
func (*MarkerFile) IsNoise ¶ added in v0.4.5
func (mf *MarkerFile) IsNoise(uuid string) bool
IsNoise returns true if the UUID is marked as NOISE.
func (*MarkerFile) RemoveCommitPoint ¶ added in v0.4.6
func (mf *MarkerFile) RemoveCommitPoint(uuid string)
RemoveCommitPoint removes a commit point by UUID.
func (*MarkerFile) Set ¶ added in v0.4.5
func (mf *MarkerFile) Set(uuid string, marker MarkerType)
Set assigns a marker to a UUID.
func (*MarkerFile) SetPhase ¶ added in v0.4.7
func (mf *MarkerFile) SetPhase(uuid string, phase PhaseType)
SetPhase assigns a phase to a UUID.
func (*MarkerFile) Toggle ¶ added in v0.4.5
func (mf *MarkerFile) Toggle(uuid string, marker MarkerType)
Toggle sets the marker if unset or different, clears it if same.
func (*MarkerFile) TogglePhase ¶ added in v0.4.7
func (mf *MarkerFile) TogglePhase(uuid string, phase PhaseType)
TogglePhase sets the phase if unset or different, clears it if same.
type MarkerType ¶ added in v0.4.5
type MarkerType string
MarkerType represents an explicit user intent label for a session entry.
const ( MarkerKeep MarkerType = "keep" MarkerCandidate MarkerType = "candidate" MarkerNoise MarkerType = "noise" )
type PhaseType ¶ added in v0.4.7
type PhaseType string
PhaseType represents a reasoning phase label for a session entry.
type RepairResult ¶ added in v0.3.0
RepairResult holds the outcome of a repair operation.
type ReplaceImagesResult ¶
ReplaceImagesResult holds the result of an image replacement operation.
func ReplaceImages ¶
func ReplaceImages(path string) (*ReplaceImagesResult, error)
ReplaceImages replaces all base64 image blocks with text placeholders. Always creates a backup before modifying.
type RetryCleanResult ¶ added in v0.3.0
type RetryCleanResult struct {
FailedRemoved int
EntriesRemoved int
BlocksRemoved int
ChainRepairs int
BytesBefore int64
BytesAfter int64
}
RetryCleanResult holds the result of a failed retry cleanup operation.
func RemoveFailedRetries ¶ added in v0.3.0
func RemoveFailedRetries(path string, retryResult *analyzer.RetryResult) (*RetryCleanResult, error)
RemoveFailedRetries removes failed tool attempts that were superseded by retries. For each failed sequence:
- Remove the tool_use block from the assistant message (or whole entry if only block)
- Remove the error tool_result block from the user message (or whole entry)
Always creates a backup before modifying.
type SplitResult ¶ added in v0.4.3
type SplitResult struct {
EntriesExtracted int
TokenCost int
DollarCost float64
TargetRepo string
ReExplFiles []string
OutputPath string
}
SplitResult holds the result of a split-to-markdown operation.
func SplitToMarkdown ¶ added in v0.4.3
func SplitToMarkdown(entries []jsonl.Entry, from, to int, meta *analyzer.RangeMetadata, sessionID, outputPath string) (*SplitResult, error)
SplitToMarkdown extracts entries[from:to+1] into a markdown file.
type StripResult ¶ added in v0.3.0
StripResult holds the outcome of separator stripping.
func StripSeparators ¶ added in v0.3.0
func StripSeparators(path string) (*StripResult, error)
StripSeparators removes decorative separator lines from assistant messages. Only modifies assistant entries. Creates a backup before writing.
type TruncateResult ¶ added in v0.3.0
type TruncateResult struct {
OutputsTruncated int
TokensSaved int
BytesBefore int64
BytesAfter int64
}
TruncateResult holds the result of an output truncation operation.
func TruncateOutputs ¶ added in v0.3.0
func TruncateOutputs(path string, threshold, keepLines int) (*TruncateResult, error)
TruncateOutputs truncates large Bash tool_result content to first+last keepLines lines. threshold is the minimum byte size to trigger truncation. keepLines is the number of lines to keep at the start and end.