You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Make Analytics QualitativeOutput configurable via JSON (#82)
* refactor: rename QualitativeOutput to AIQualitativeOutput with configurable entries
- Create qualitative_entries.json resource file for configurable entry definitions
- Add QualitativeEntry and QualitativeEntryList models similar to rubric system
- Rename QualitativeOutput to AIQualitativeOutput with dynamic HashMap-based entries
- Update prompt generation to use configurable entries from resource file
- Add convenience methods for backward compatibility (insights(), good_patterns(), etc.)
- Update all references across codebase (formatters, TUI, database, tests)
- Update TypeScript types in ui-react to match new structure
Each qualitative entry now has: key, title, description, item_schema, min_items, max_items
This allows adding new analysis categories by modifying qualitative_entries.json
* refactor: simplify AIQualitativeOutput to use markdown strings with per-entry LLM requests
- Remove item_schema from qualitative entries - use simple markdown string output
- Split qualitative analysis into multiple LLM requests (one per entry type)
- Change AIQualitativeOutput.entries from HashMap<String, Vec<JsonValue>> to HashMap<String, Vec<String>>
- Each qualitative item is now a single markdown line for simplicity and quality
- Update formatters and TUI to work with new string-based output
- Remove unused typed structs (Insight, GoodPattern, etc.) from services
- Update TypeScript types to use string[] for entries
This follows the same pattern as rubric evaluation where each entry type
gets its own focused LLM request for better quality output.
* refactor: remove min_items and max_items from qualitative entries
Simplify the QualitativeEntry configuration by removing unnecessary
min_items and max_items fields. The LLM will determine appropriate
output length based on context without artificial constraints.
* fix
* fix ci
---------
Co-authored-by: Claude <noreply@anthropic.com>
0 commit comments