close
Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

pkg/

Internal packages for the Confab CLI. Each package has its own README with extension guides, invariants, and design decisions.

Package Index

Package Purpose Change this when...
config Confab config + Claude Code hook management Adding config fields, new hook types
daemon Background sync daemon lifecycle Changing sync behavior, shutdown logic
discovery Session scanning, metadata extraction, agent IDs Adding metadata fields, new ID formats
git Git repo info extraction Adding new git fields to sync
http HTTP client with compression + retries Adding error types, changing retry logic
logger Singleton file logger with rotation Changing log format, adding levels
redactor JSON-aware sensitive data redaction Adding pattern types (patterns themselves live in config)
sync Sync engine, API client, file tracking Adding API endpoints, changing chunking
types Shared type definitions Adding cross-package types
utils Small shared utilities and constants Rarely — prefer package-local helpers

Dependency Map

cmd/  (uses all packages)
 │
 ├── daemon ──── sync ──┬── http ──── config, logger
 │                      ├── redactor ── config
 │                      ├── discovery ── config, logger
 │                      ├── git
 │                      └── config
 │
 ├── config
 ├── discovery
 ├── sync
 ├── http
 ├── redactor
 ├── git
 └── logger

Leaf packages (no confab dependencies):
  types, utils, logger, git

Data Flow

Claude Code writes transcript
        │
        ▼
  ~/.claude/projects/<path>/<session-id>.jsonl
        │
        ▼
  daemon (pkg/daemon) watches file
        │
        ▼
  tracker (pkg/sync) reads new lines, seeks by byte offset
        │
        ▼
  discovery (pkg/discovery) extracts agent IDs + metadata
        │
        ▼
  redactor (pkg/redactor) redacts sensitive data
        │
        ▼
  client (pkg/sync) uploads chunk via HTTP
        │
        ▼
  http (pkg/http) compresses with zstd, sends to backend

Layering Rules

  • types, utils, logger, git are leaf packages — no confab imports. Any package can depend on them.
  • logger is accessed as a singleton — no need to pass it around.
  • Mid-level packages (config, http, redactor, discovery) depend on leaves and each other but not on daemon or sync.
  • sync depends on mid-level packages. daemon depends on sync.
  • cmd/ depends on everything. It's the only package that imports daemon.
  • Dependencies flow downward only. If you need to add an upward dependency, you have a design problem — use an interface or move the shared type to types.