Skip to content

feat: deep research demo with live terminal helix visualisation#19

Merged
jkbennitt merged 3 commits into
mainfrom
feat/deep-research-demo
Mar 20, 2026
Merged

feat: deep research demo with live terminal helix visualisation#19
jkbennitt merged 3 commits into
mainfrom
feat/deep-research-demo

Conversation

@jkbennitt
Copy link
Copy Markdown
Member

@jkbennitt jkbennitt commented Mar 20, 2026

Summary

  • Adds a live terminal demo (examples/05_deep_research_live/) — real-time ASCII helix visualiser showing agents spiral from exploration to synthesis
  • Zero new dependencies, runs offline with a phase-aware mock provider
  • Supports --provider anthropic/openai/local for real runs
  • Includes integration smoke tests and GIF recording instructions

Relates to #1

Test plan

  • ruff check and ruff format pass on all new files
  • Integration tests pass (pytest tests/integration/test_deep_research_demo.py -v)
  • Full test suite passes
  • Demo runs end-to-end with --fast on Windows
  • Manual run on macOS/Linux terminal to verify ANSI rendering
  • Record a GIF using one of the documented methods

🤖 Generated with Claude Code

jkbennitt and others added 2 commits March 20, 2026 00:32
Showcases the Felix SDK's helical agent orchestration with a real-time
ASCII visualiser — agents spiral from exploration to synthesis on screen.
Zero new dependencies, runs offline with a rich phase-aware mock provider.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix ruff lint warnings and format all files
- Extract _process_agent helper to reduce cognitive complexity
- Add rich structured synthesis response to mock provider
- Add 4 integration tests (mock provider, full workflow, synthesis, visualizer)
- Add GIF recording instructions (VHS, asciinema, ttygif) to README

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@jkbennitt jkbennitt requested a review from CalebisGross March 20, 2026 04:50
Copy link
Copy Markdown
Contributor

@CalebisGross CalebisGross left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work -- the mock provider with phase-aware rotating responses is a smart design, makes the demo instantly usable without keys.

A few things:

Should fix:

  • PR description could be trimmed down -- the "What's in the box" / "Demo highlights" sections read a bit like a press release. Just bullets on what's in the PR is fine.
  • Redundant condition in helix_visualizer.py around line 609:
    if canvas[explore_row][col].strip() == "" or canvas[explore_row][col] == " ":
    " ".strip() == "" is always true, so the second branch is dead code. Same thing on the analysis_row check below it.
  • No Closes #N in the PR body -- is there a tracking issue?

Worth discussing:

  • sys.path.insert(0, _example_dir) in both run.py and the test file is a bit fragile. For the test file, a conftest.py in tests/integration/ that handles the path setup would be cleaner than each test file managing it. For the example script it's more acceptable.

Minor / take it or leave it:

  • _resolve_provider silently falls back to mock on typos (--provider anthrpic -> mock with a print). Could be worth erroring out instead so users don't accidentally run with mock when they meant to use a real provider.
  • _USE_COLOUR is evaluated once at import time -- fine for the demo, just means tests always run in no-colour mode. Not a problem, just noting it.

The _RoundContext dataclass, NO_COLOR/FORCE_COLOR support, Windows UTF-8 handling, and the try/finally shutdown pattern are all solid.

Address review feedback from @CalebisGross:
- Remove dead-code branches in helix_visualizer phase dividers
- Extract sys.path setup into tests/integration/conftest.py
- Trim PR description, link to epic issue #1

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@jkbennitt
Copy link
Copy Markdown
Member Author

@CalebisGross — addressed all your review feedback:

  • PR description trimmed — removed the press-release sections, plain bullets now
  • Dead code fixed — removed redundant or canvas[...] == " " on both phase divider checks (L203, L205)
  • Issue linked — added Relates to #1
  • conftest.py — extracted sys.path setup into tests/integration/conftest.py, test file now uses clean imports

All 4 integration tests pass, ruff lint/format clean. Ready for re-review when you get a chance.

Copy link
Copy Markdown
Contributor

@CalebisGross CalebisGross left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixes look good -- dead code removed, conftest extraction is clean, PR description is tidy.

One thing: commits ea78c01 and e0a6717 have identical messages ("polish: lint fixes, smoke tests, improved synthesis, GIF instructions"). Probably a rebase artifact -- worth squashing before merge.

@jkbennitt jkbennitt merged commit 22af8b0 into main Mar 20, 2026
3 checks passed
@jkbennitt jkbennitt deleted the feat/deep-research-demo branch March 20, 2026 22:33
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.

2 participants