Repository navigation
V1 - #24
V1#24
Conversation
… condition, TASK_COMPLETED description - Issue 1: Fix lambda late-binding in executor.py by capturing ticker as default arg - Issue 2: Add per-key asyncio.Lock to in-memory cache, hold lock across entire fetch cycle - Issue 5: Add missing 'description' key to TASK_COMPLETED log event payload - Add regression tests for all three fixes
…x sources, remove dead code, fix dual-Console - Issue 3: Untrack dist/ artifacts, add to .gitignore (no history rewrite) - Issue 4: Single-source __version__ via importlib.metadata in __init__.py - Issue 14: Replace 'SEC EDGAR' fallback with 'Alpha Vantage', 'yfinance' - Issue 16: Delete dead render_mission_board(), update tests to use build_persistent_board - Issue 17: Remove module-level Console from render.py, pass as parameter
…undary preview, non-streaming fallback signal Quick path (Issues 6+7+8+9+10): - Issue 6: Lower 300-char gate to 60 for faster preview visibility - Issue 7: Reduce debounce 200ms→80ms, Live 2fps→10fps for smooth rendering - Issue 8: Replace tier-2 print dots with actual word output at sentence breaks - Issue 9: Signal 'non-streaming mode' to UI before blocking ainvoke fallback - Issue 10: Replace raw tail-slice preview with sentence-boundary extraction
…t, quarterly reports, CI cleanup - Issue 11: Rename validator->Validator, validationresult->ValidationResult across all files - Issue 12: AlphaVantageClient uses persistent httpx.AsyncClient (not per-request) - Issue 13: AV returns quarterlyReports alongside annualReports for all 3 statement types - Issue 15: Strip CI lint step of debug echos and fallback gymnastics
…ful exit - Issue 18: Fix remaining LSP errors across the codebase - Issue 19: Strip extraneous whitespace from TASK_COMPLETED streaming output - Issue 20: Filter repeated markdown headings from board preview - Issue 21: Add try/except for clean KeyboardInterrupt exit path - Issue 22: Centralize ~/.jasper into JASPER_HOME in core/config.py
…heck, call tracking - Issue 24: Add aiosqlite L2 disk cache that survives process restarts - Issue 25: Create FMP provider (250 calls/day free) with persistent httpx client - Issue 26: Add check_provider_health() and get_call_counts() to FinancialDataRouter - Issue 27: Track per-provider API call counts for rate-limit awareness - Add aiosqlite>=0.19.0 to pyproject.toml dependencies
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (6)
📒 Files selected for processing (27)
📝 WalkthroughWalkthroughSwitches LLM backend from OpenRouter to Groq, adds ChangesJasper: Groq LLM, FMP provider, async caching, Validator rename, CLI overhaul
Sequence Diagram(s)sequenceDiagram
participant User as User (CLI ask)
participant Main as cli/main.py (execute_research)
participant Controller as JasperController.run()
participant Executor as Executor.execute_task()
participant Router as FinancialDataRouter._fetch_with_fallback()
participant Cache as SQLite / in-memory cache
participant Provider as AlphaVantage / FMP / yfinance
participant Validator as Validator.validate()
participant Synthesizer as Synthesizer.synthesize()
participant Groq as Groq API
User->>Main: ask(query)
Main->>Controller: run(query)
Controller->>Controller: log PLAN_CREATED
loop parallel tasks
Controller->>Executor: execute_task(task)
Controller->>Controller: log TASK_STARTED
Executor->>Router: _fetch_with_fallback(method, ticker)
Router->>Cache: check L1 in-memory
alt cache miss
Router->>Cache: check L2 SQLite (TTL)
alt disk miss
Router->>Provider: income_statement / balance_sheet / cash_flow
Provider-->>Router: data
Router->>Cache: write L1 + L2
end
end
Router-->>Executor: result
Executor-->>Controller: completed task
Controller->>Controller: log TASK_COMPLETED (task_id, description)
end
Controller->>Validator: validate(state)
Validator-->>Controller: ValidationResult
Controller->>Synthesizer: synthesize(state, token_callback)
Synthesizer->>Groq: chain.astream / chain.ainvoke
Groq-->>Synthesizer: tokens
Synthesizer-->>Controller: report text
Controller->>Main: Jasperstate with FinalReport
Main->>Main: _save_report_to_disk(report)
Main-->>User: rendered report
Estimated code review effort🎯 5 (Critical) | ⏱️ ~120 minutes Poem
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary by CodeRabbit
Release Notes
New Features
Bug Fixes
Chores
aiosqlitedependency for persistent caching.