• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

dcdpr / jp / 27683215228 / 1
67%
main: 67%

Build:
DEFAULT BRANCH: main
Ran 17 Jun 2026 10:45AM UTC
Files 416
Run time 21s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

17 Jun 2026 10:41AM UTC coverage: 66.574% (+0.03%) from 66.541%
27683215228.1

push

github

web-flow
feat(cli, config, conversation): Implement conversation compaction (#544)

Add `jp conversation compact` command and `--compact` / `-k` flag across
`query`, `fork`, and `compact` commands, implementing RFD 064
(non-destructive conversation compaction).

The core idea is that compaction is additive: a `Compaction` overlay
event is appended to the conversation stream rather than modifying or
deleting any existing events. The projection layer applies overlays at
request-build time (`Thread::into_parts()`), so the LLM sees a reduced
view while the full raw history is preserved on disk.

**What users can do now:**

```sh
# Compact with workspace defaults (strip reasoning + tools)
jp conversation compact

# Strip reasoning, keep last 5 turns
jp conversation compact --reasoning --keep-last 5

# Preview without applying
jp conversation compact --dry-run

# Remove all compaction events (undo)
jp conversation compact --reset

# Compact before querying (inline DSL, summarize all but last 3 turns)
jp query -k s:..-3 -- "Continue the task"

# Fork and compact in one step
jp conversation fork --compact
```

**DSL (`--compact=SPEC`)** supports `r` (reasoning), `t` (tools), `s`
(summarize) as policy letters, combined with `+`, and an optional range
after `:`. Examples: `s:..-3`, `r+t`, `s:5..-3`. Bare `--compact`
applies config rules; `--compact=SPEC` applies inline rules; both forms
compose.

**Summarization** calls the configured LLM and stores the result in the
`Compaction` event as a `SummaryPolicy`. At projection time the covered
turns are replaced with a synthetic request/response pair containing the
summary text. Summary range auto-extension prevents partial overlaps
with existing summary compactions.

**Configuration** is under `conversation.compaction.rules` — a
`MergedVec<CompactionRuleConfig>` where each rule produces one
compaction event. The built-in default (strip reasoning + tools) uses
`discard_when_merged: true` so it is replaced the moment any user ... (continued)

35454 of 53255 relevant lines covered (66.57%)

403.17 hits per line

Source Files on job 27683215228.1
  • Tree
  • List 416
  • Changed 17
  • Source Changed 14
  • Coverage Changed 17
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Build 27683215228
  • 79432b14 on github
  • Prev Job for on main (#27565777572.1)
  • Next Job for on main (#27685679491.1)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc