Skip to content

feat: parallel retriever, run history, interactive picker, rich rendering (#44) - #46

Merged
Mrbaeksang merged 1 commit into
mainfrom
feat/backlog-polish-44
Aug 22, 2026
Merged

Mrbaeksang merged 1 commit into
mainfrom
feat/backlog-polish-44

Conversation

@Mrbaeksang

Copy link
Copy Markdown
Owner

Implements #44 — all four polish items, each landed as its own green slice.

What

  • Parallel retriever — gather_hits() runs search-hit fetches through a thread pool; pool.map preserves input order so Evidence Records and documents keep a stable sequence regardless of completion order. Concurrency is proven by a barrier test (a sequential implementation deadlocks it), ordering by an uneven-speed test.
  • Run history (history.py) — every CLI run auto-saves to $DEEPCLOAK_RUNS_DIR (default ~/.local/share/deepcloak/runs): report.md + evidence.json + run.json metadata. deepcloak runs lists newest-first, deepcloak show <id> [--json] replays by exact id or unique prefix. Save failures warn but never fail the run.
  • Interactive picker (picker.py) — zero-dep numbered prompt, shown only when stdin+stdout are TTYs, more than one LLM credential is detected, and no provider/model was given via flag or config file: pick provider → live model listing → pick model. Falls back to manual id entry / provider default when the directory is unreachable. Scripts, pipes and MCP clients are never prompted.
  • rich rendering — new ProgressReporter in progress.py: with pip install deepcloak[rich] (new extra) research phases drive a live status line and Evidence lines print through the same console; without rich the output is byte-for-byte today's plain stderr lines.

Verification

  • pytest: 127 passed, 1 skipped, ruff check .: clean
  • Smoke: deepcloak runs on an empty/missing dir exits 0 quietly
  • Docs updated: README.md run-history + picker notes, CHANGELOG Unreleased

…ring (#44)

- feat(retriever): gather_hits() thread pool — concurrent fetches with
  Evidence Record order kept stable via pool.map
- feat(history): new deep module; CLI auto-saves every run under
  $DEEPCLOAK_RUNS_DIR (default ~/.local/share/deepcloak/runs);
  'deepcloak runs' lists, 'deepcloak show <id> [--json]' replays
- feat(picker): new deep module — TTY-only numbered prompt when more than
  one LLM credential is detected: provider -> live model list -> model,
  with manual-entry/default fallback when the directory is unavailable
- feat(progress): ProgressReporter renders research phases as a live
  status line via optional 'deepcloak[rich]'; identical plain-line
  fallback without it
@Mrbaeksang
Mrbaeksang merged commit 395a2af into main Aug 22, 2026
1 of 2 checks passed
@vercel

vercel Bot commented Aug 22, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
deepcloak Building Building Preview Aug 22, 2026 4:26am

Request Review

This branch was successfully deployed

1 active deployment
Preview — b70cb0f3 Deployed Aug 22, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant