Session parsing, timeline generation, and HTML/video rendering
Find a file
Snider 18ead8ce6e
Some checks failed
Security Scan / security (push) Has been cancelled
Test / test (push) Has been cancelled
feat(go): add service.go — Core service registration (Mantis #1336)
Wires the session package's free-function surface (list, fetch, parse,
prune, search, analyse, render-html, render-mp4) into Core's
service-registration plumbing behind a *core.ServiceRuntime[
SessionConfig]. SessionConfig.ProjectsDir is the default base directory;
each action also accepts opts.projects_dir for per-call override.

Action handlers exposed via OnStartup:
  session.list         — list every transcript under projects_dir
  session.fetch        — opts.id → *Session
  session.parse        — opts.path → *ParsedSession
  session.prune        — opts.max_age_seconds → deleted count
  session.search       — opts.query → []SearchResult
  session.analyse      — opts.id → *SessionAnalytics
  session.render_html  — opts.id + opts.output_path → HTML on disk
  session.render_mp4   — opts.id + opts.output_path → MP4 via vhs

Triplets + examples included; audit verdict COMPLIANT.

Co-authored-by: Hephaestus <hephaestus@lthn.ai>
2026-05-01 16:15:22 +01:00
.core chore: add .core/ build and release configs 2026-03-06 18:52:37 +00:00
.forgejo/workflows ci: add Forgejo Actions test and security scan workflows 2026-02-23 03:28:08 +00:00
docs fix(session): address all CodeRabbit findings on PR #5 2026-04-27 18:17:50 +01:00
external refactor(go): restructure to /go/ subtree + audit COMPLIANT (Mantis #1249) 2026-05-01 01:43:32 +01:00
go feat(go): add service.go — Core service registration (Mantis #1336) 2026-05-01 16:15:22 +01:00
kb fix(session): r2 — platform-split no-follow + recursive convention scan + doc fixes on PR #5 2026-04-27 18:48:40 +01:00
specs fix(coderabbit): address markdown linting findings 2026-03-17 13:55:52 +00:00
.editorconfig chore: add Go repo norms (badges, contributing, lint, taskfile, editorconfig) 2026-02-23 06:45:48 +00:00
.gitignore refactor(module): migrate module paths from forge.lthn.ai to dappco.re 2026-03-22 01:37:11 +00:00
.golangci.yml fix(session): address all CodeRabbit findings on PR #5 2026-04-27 18:17:50 +01:00
.woodpecker.yml ci: woodpecker pipeline (Go) — golangci-lint/eslint/phpstan + sonar.lthn.sh 2026-04-29 00:03:20 +01:00
AGENTS.md refactor(go): restructure to /go/ subtree + audit COMPLIANT (Mantis #1249) 2026-05-01 01:43:32 +01:00
CLAUDE.md fix(session): address all CodeRabbit findings on PR #5 2026-04-27 18:17:50 +01:00
CODEX.md fix(session): address all CodeRabbit findings on PR #5 2026-04-27 18:17:50 +01:00
CONTEXT.md fix(session): address all CodeRabbit findings on PR #5 2026-04-27 18:17:50 +01:00
CONTRIBUTING.md chore: add Go repo norms (badges, contributing, lint, taskfile, editorconfig) 2026-02-23 06:45:48 +00:00
GEMINI.md refactor(error-handling): replace fmt.Errorf and errors.New with coreerr.E() 2026-03-16 20:38:07 +00:00
go.work chore(repo): refresh submodules + go.work hygiene (Phase 2 cascade unblock) 2026-05-01 09:41:20 +01:00
LICENCE chore: add EUPL-1.2 LICENCE file (UK English canonical) 2026-05-01 08:35:03 +01:00
PROMPT.md refactor(module): migrate module paths from forge.lthn.ai to dappco.re 2026-03-22 01:37:11 +00:00
README.md fix(session): r2 — platform-split no-follow + recursive convention scan + doc fixes on PR #5 2026-04-27 18:48:40 +01:00
RECENT.md refactor(module): migrate module paths from forge.lthn.ai to dappco.re 2026-03-22 01:37:11 +00:00
sonar-project.properties ci: woodpecker pipeline (Go) — golangci-lint/eslint/phpstan + sonar.lthn.sh 2026-04-28 23:33:35 +01:00
threats.md docs(session): confirm ParseStats matches RFC §3 (#669, audit NOTABUG) 2026-04-25 07:28:26 +01:00
TODO.md fix(session): address all CodeRabbit findings on PR #5 2026-04-27 18:17:50 +01:00

Go Reference License: EUPL-1.2 Go Version

go-session

Claude Code JSONL transcript parser, analytics engine, and HTML timeline renderer. Parses Claude Code session files into structured event arrays (tool calls with round-trip durations, user and assistant messages), computes per-tool analytics (call counts, error rates, average and peak latency, estimated token usage), renders self-contained HTML timelines with collapsible panels and client-side search, and generates VHS tape scripts for MP4 video output. No external runtime dependencies — stdlib only.

Module: dappco.re/go/session Licence: EUPL-1.2 Language: Go 1.26

Quick Start

import (
	"fmt"

	"dappco.re/go/session"
)

sess, _, err := session.ParseTranscript("/path/to/session.jsonl")
analytics := session.Analyse(sess)
fmt.Println(session.FormatAnalytics(analytics))

// Render interactive HTML timeline
err = session.RenderHTML(sess, "timeline.html")

// Search across all sessions in a directory
results, err := session.Search("~/.claude/projects/my-project", "git commit")

Documentation

  • Architecture — JSONL format, parsing pipeline, event types, analytics, HTML rendering, XSS protection
  • Development Guide — prerequisites, build, test patterns, coding standards
  • Project History — completed phases, known limitations, future considerations

Build & Test

go test ./...
go vet ./...
go build ./...

Licence

European Union Public Licence 1.2 — see LICENCE for details.