Skip to content

v0.4.0 — CLI Ergonomics

Choose a tag to compare

@louzt louzt released this 11 Jun 04:18
· 2 commits to main since this release
c2decd4

CLI ergonomics (F4)

The CLI is feature-complete. cargo install loust-llm-mempipe and
loust-llm-mempipe --help give you a working pipeline in one
command.

loust-llm-mempipe \
  --input conversations.json \
  --output ./claude-memory/ \
  --format both \
  --stats

Stderr transcript on a real run

$ loust-llm-mempipe --input tests/fixtures/chatgpt-tiny.json \
                     --output /tmp/lmp-smoke --format both --stats
detected adapter: chatgpt
parsed 7 messages
stats: in=7 out=6 scrubbed=0 redactions=0 dedup_exact=0 dedup_fuzzy=0 age_drop=0 signal_drop=1
wrote: /tmp/lmp-smoke/memory.jsonl
wrote: /tmp/lmp-smoke/multi-turn-with-system-message/multi-turn-with-system-message.md
wrote: /tmp/lmp-smoke/rust-fnv-1a-hashing/rust-fnv-1a-hashing.md
done: 3 files written

In this run, the system message from conv-003 got dropped by the
signal_min filter (assistant=1.0 > user=0.8 > tool=0.5 > system=0.3,
and the message was a year old).

Flags

Flag Default Notes
-i, --input required path to the raw export file
-o, --output required output dir, created if missing
-f, --format jsonl jsonl, markdown/md, or both
--adapter auto-detect chatgpt, claude_web, gemini, claude_code
--dedup-threshold 0.85 Jaccard sim, range [0.0, 1.0]
--signal-min 0.2 drop signal_score < min, range [0.0, 1.0]
--max-age-days 1095 drop messages older than N days
--stats off print one-line stats to stderr
--dry-run off compute but don't write
--info off print build metadata and exit

Library additions

  • loust_llm_mempipe::adapter::registry() — ordered list of all
    known adapters for auto-detection.
  • loust_llm_mempipe::adapter::pick_adapter(kind, header) — explicit
    override or first-detect.
  • OutputFormat::from_cli(s) and AdapterKind::from_cli(s)
    kebab-case parsers used by clap's value_parser.

Validation

  • cargo fmt --check — clean
  • cargo clippy --all-targets -- -D warnings — clean
  • cargo test61/61 pass (44 lib + 4 main clap + 9 cli_e2e + 4 e2e)
  • cargo build --release — 12s
  • Smoke test against real fixture produces memory.jsonl + 2 Markdown
    files as expected.

What's next

  • F5: CI workflow (.github/workflows/ci.yml with fmt/clippy/test)
  • F7: Reddit post cancelled