Commit Graph
66 Commits
Author SHA1 Message Date
Jon Saad-FalconandGitHub ac1bc4ded1 Merge pull request #11 from HazyResearch/python-rust
Use Rust utils in Python SDK
2026-03-04 21:31:24 -08:00
krypticmouse 2cd131847c Add unified composition system 2026-03-04 19:35:33 -08:00
krypticmouse b03a0662bb Use Rust utils in Python SDK 2026-03-04 19:15:50 -08:00
Jon Saad-FalconandClaude Opus 4.6 3c39995476 feat(optimize): add trace-aware multi-objective optimization
Surface per-instance scores (SampleScore), structured feedback
(TrialFeedback), Pareto frontier tracking, pillar-targeted mutation,
and config merge strategies. Store migration adds new columns with
backward-compatible deserialization.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 01:04:30 +00:00
Jon Saad-FalconandClaude Opus 4.6 552ce4cba0 feat(optimize): add CLI commands, API routes, and config integration
- Add `jarvis optimize` CLI group (run, status, results, best, personal)
- Add `jarvis feedback` CLI group (score, thumbs, evaluate, stats)
- Add OptimizeConfig to JarvisConfig with TOML loading support
- Add optimization + feedback event types to EventType enum
- Add TraceStore.update_feedback() for recording trace scores
- Add /v1/feedback and /v1/optimize API routes
- Register optimize/feedback commands in cli/__init__.py
- Update optimize/__init__.py with all Phase 25 exports

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 00:01:52 +00:00
Jon Saad-FalconandClaude Opus 4.6 d234471c03 feat(optimize): add optimization engine, SQLite store, and config loader
Add the orchestration layer that ties together the LLM optimizer, trial
runner, and persistence into a propose-evaluate-analyze loop with early
stopping and recipe export. 36 new tests pass.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 23:56:30 +00:00
Jon Saad-FalconandClaude Opus 4.6 44dc78ff7a feat(optimize): add LLM optimizer for config tuning
Implement LLMOptimizer that uses a cloud LLM to propose and analyze
OpenJarvis configurations, inspired by DSPy's GEPA approach with
textual trace feedback rather than just scalar rewards. 46 tests pass.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 23:50:19 +00:00
Jon Saad-FalconandClaude Opus 4.6 9ef339f531 feat(optimize): add trial runner and feedback system
Add TrialRunner to bridge TrialConfig to the eval framework (EvalRunner),
TraceJudge for LLM-as-judge scoring of agent traces, and FeedbackCollector
for aggregating explicit, thumbs, and judge-driven feedback signals.
68 tests pass covering all three modules.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 23:49:23 +00:00
Jon Saad-FalconandClaude Opus 4.6 8437fccbb3 feat(optimize): add personal benchmark system for trace-driven eval
Synthesize reusable benchmarks from interaction traces with feedback
scores. Mines high-quality traces, groups by query class, picks the
best reference per class, and exposes results through DatasetProvider
and LLM-judge Scorer so EvalRunner can evaluate against personal
workflow patterns.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 23:46:53 +00:00
Jon Saad-FalconandClaude Opus 4.6 529cd77ccd feat(optimize): add foundation types and search space builder
Add the optimize module with core data types (SearchDimension, SearchSpace,
TrialConfig, TrialResult, OptimizationRun) and search space builder
(build_search_space, DEFAULT_SEARCH_SPACE) covering all 5 pillars. Includes
TrialConfig.to_recipe() mapping and SearchSpace.to_prompt_description()
for LLM-readable rendering. 66 tests pass.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 23:43:54 +00:00
Gabriel Bo 9ddebbfca9 removing unnecessary files 2026-03-03 19:12:37 -08:00
Gabriel Bo 75dc674e44 Merge origin/main into gabebo-ui
Integrate speech-to-text (Phase 24) and eval trackers features.
Resolve conflicts: add speech Tauri commands to lib.rs, merge
MicButton + useSpeech into InputArea, consolidate speech API
functions into lib/api.ts (removed old api/client.ts).

Made-with: Cursor
2026-03-03 18:44:09 -08:00
Jon Saad-FalconandClaude Opus 4.6 2606c283e9 feat(evals): add W&B and Google Sheets result trackers
Introduce ResultTracker ABC with pluggable experiment tracking for the
eval framework, enabling per-sample streaming to W&B and summary-row
appending to Google Sheets — critical for the NeurIPS paper sweep.

- ResultTracker ABC: on_run_start/on_result/on_summary/on_run_end
- WandbTracker: per-sample wandb.log with sample/ prefix, flattened
  MetricStats in run summary, reinit=True for suite mode
- SheetsTracker: summary-only (no per-sample API calls), 29-column
  canonical row, idempotent header, service account + ADC auth
- EvalRunner: trackers wired into lifecycle, all calls try/except
  wrapped so tracker failures never abort an eval run
- CLI: 7 new flags (--wandb-project/entity/tags/group,
  --sheets-id/worksheet/creds) on both jarvis eval run and
  python -m openjarvis.evals run
- Config: tracker fields parsed from TOML [run] section, propagated
  through expand_suite() for suite mode
- pyproject.toml: eval-wandb and eval-sheets optional dependency groups
- 9 new tests (lifecycle, crash resilience, mock W&B/Sheets)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 01:00:47 +00:00
Jon Saad-FalconandGitHub bb5f421b1b Merge pull request #5 from HazyResearch/feat/speech-to-text
feat: add speech-to-text subsystem with pluggable backends
2026-03-03 14:56:38 -08:00
Jon Saad-FalconandClaude Opus 4.6 694d7b00b9 fix: shorten SpeechConfig comment to pass line-length lint
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 22:13:08 +00:00
Gabriel Bo 917895a29f working doctor for cli 2026-03-03 11:59:33 -08:00
Gabriel Bo 4cdf32a21a setup for tauri frontend w/ rust implementation for desktop app 2026-03-03 11:45:51 -08:00
krypticmouse 9772497b60 Convert classes to context handlers 2026-03-03 11:33:17 -08:00
krypticmouse 05f3dca77f single call profiling 2026-03-03 11:25:25 -08:00
Jon Saad-FalconandClaude Opus 4.6 8e29f08832 feat(speech): add /v1/speech/transcribe and /health API endpoints
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 19:10:41 +00:00
Jon Saad-FalconandClaude Opus 4.6 3fffcc8cb4 feat(speech): wire speech backend into SystemBuilder and JarvisSystem
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 19:08:15 +00:00
Jon Saad-FalconandClaude Opus 4.6 6dc4ad1dbb feat(speech): add auto-discovery and wire speech package init
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 06:22:20 +00:00
Jon Saad-FalconandClaude Opus 4.6 16d793652b feat(speech): implement DeepgramSpeechBackend (cloud STT)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 06:19:00 +00:00
Jon Saad-FalconandClaude Opus 4.6 9bf5a4b466 feat(speech): implement OpenAIWhisperBackend (cloud STT)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 06:18:59 +00:00
Jon Saad-FalconandClaude Opus 4.6 cb28dd2ba9 feat(speech): implement FasterWhisperBackend (local STT)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 06:18:57 +00:00
Jon Saad-FalconandClaude Opus 4.6 002c63a205 feat(speech): add SpeechBackend ABC, TranscriptionResult, Segment
Define the abstract interface for the speech subsystem: SpeechBackend ABC
with transcribe/health/supported_formats methods, TranscriptionResult and
Segment dataclasses for structured transcription output.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 06:13:44 +00:00
Jon Saad-FalconandClaude Opus 4.6 8b2bf136f1 feat(speech): add SpeechConfig to configuration system
Add SpeechConfig dataclass with backend, model, language, device, and
compute_type fields. Wire it into JarvisConfig and load_config() so
[speech] TOML sections are loaded automatically.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 05:51:29 +00:00
Gabriel Bo dfecbb7047 working telemetry 2026-03-02 20:55:55 -08:00
Jon Saad-FalconandClaude Opus 4.6 4c76b93569 feat(speech): add SpeechRegistry to core registry module
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 04:33:15 +00:00
Gabriel Bo c1f722f7e1 working chat + dashboard design sidebar + cli/dmg setup 2026-03-02 20:20:02 -08:00
krypticmouse 1dd542e51c Config based setup, Host with backend, Cleanups 2026-03-02 19:06:19 -08:00
Jon Saad-FalconandClaude Opus 4.6 221d639453 refactor: replace repetitive try/except imports with loop-based auto-registration
channels/__init__.py: 26 try/except blocks -> single importlib loop (147 -> 55 lines)
engine/__init__.py: optional engine imports consolidated into loop

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 23:12:50 +00:00
Jon Saad-FalconandClaude Opus 4.6 7829e29392 refactor: consolidate 5 OpenAI-compat engine wrappers into single data-driven file
Replace vllm.py, sglang.py, llamacpp.py, mlx.py, lmstudio.py with
openai_compat_engines.py using dynamic class creation and registration.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 23:11:00 +00:00
Jon Saad-FalconandClaude Opus 4.6 1e7d0fe1de refactor: remove memory/ backward-compat shim package
Delete the entire src/openjarvis/memory/ directory (11 files) which
was a pure re-export shim pointing to openjarvis.tools.storage.*.
Update all imports across src/ and tests/ to use the canonical
openjarvis.tools.storage imports directly.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 22:33:57 +00:00
Jon Saad-FalconandClaude Opus 4.6 cf12b9b28c fix: patch stale evals imports missed during migration
- Fix mock.patch() target in test_config.py (evals.cli -> openjarvis.evals.cli)
- Remove stale sys.path manipulation in evals/tests/conftest.py

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 22:19:45 +00:00
Jon Saad-FalconandClaude Opus 4.6 a9518e1574 refactor: move evals/ into src/openjarvis/evals/ as proper subpackage
Move the standalone evals framework from the project root into the
openjarvis package. Rewrite all ~50+ import statements from 'from evals.'
to 'from openjarvis.evals.' across the package, CLI, and tests. Remove
the evals-specific pyproject.toml (no longer a standalone package).
Update ruff per-file-ignores paths and fix line-length violations
introduced by the longer import paths.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 21:06:08 +00:00
Jon Saad-FalconandClaude Opus 4.6 99d8f39613 refactor: move operators/ TOML data into src/openjarvis/operators/data/
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 20:57:52 +00:00
Jon Saad-FalconandClaude Opus 4.6 f236bf3012 refactor: move skills/builtin/ TOML data into src/openjarvis/skills/data/
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 20:53:59 +00:00
Jon Saad-FalconandClaude Opus 4.6 6376d9b0e4 refactor: move templates/agents/ TOML data into src/openjarvis/templates/data/
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 20:51:16 +00:00
Jon Saad-FalconandClaude Opus 4.6 d1be888af1 refactor: move recipes/ TOML data into src/openjarvis/recipes/data/
Co-locate recipe TOML files with the loader code that reads them,
eliminating the fragile parents[3] path traversal. Updates
_PROJECT_RECIPES_DIR to use a relative package data path instead.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 20:48:11 +00:00
Jon Saad-Falcon be0b12aa5d Merge branch 'feat/phase-23-differentiated-functionalities'
# Conflicts:
#	src/openjarvis/cli/__init__.py
2026-03-02 05:53:24 +00:00
Jon Saad-FalconandClaude Opus 4.6 2aebcd7d77 feat: Phase 23 — Differentiated functionalities
Trace-driven learning pipeline:
- TrainingDataMiner: extract SFT/routing/agent pairs from traces
- LoRATrainer: fine-tune local models from trace-derived data
- AgentConfigEvolver: rewrite agent configs from trace analysis
- LearningOrchestrator: coordinate mine→train→evolve cycle, wired into SystemBuilder

Eval framework (15 real IPW benchmarks):
- Datasets: SuperGPQA, GPQA, MMLU-Pro, MATH-500, Natural Reasoning, HLE,
  SimpleQA, WildChat, IPW, GAIA, FRAMES, SWE-bench, SWEfficiency,
  TerminalBench, TerminalBench Native
- Scorers: MCQ extraction, LLM-judge, exact match, structural validation
- CLI: jarvis eval list|run|compare|report

Composable abstractions:
- Recipe system: TOML composition of all 5 pillars (3 built-in recipes)
- Agent templates: 15 pre-configured TOML manifests with system prompts
- Bundled skills: 20 ready-to-use TOML skill manifests
- Operator recipes: researcher (4h), correspondent (5min), sentinel (2h)

102 files changed, ~11,500 lines added. 3241 tests pass (44 skipped).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 05:34:46 +00:00
Jon Saad-FalconandClaude Opus 4.6 565282352f feat(bench): full stats tables in bench CLI
Add std_latency to LatencyBenchmark metrics. New _render_stats_table
in bench_cmd.py detects stats-pattern keys (mean_X, p50_X, min_X,
max_X, std_X, p95_X) and renders Avg/Median/Min/Max/Std/P95 columns.
Falls back to simple key-value for non-stats metrics.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 17:37:02 +00:00
Jon Saad-FalconandClaude Opus 4.6 1358dc9813 feat(cli): add progress indicators for generation and indexing
Wrap engine.generate() in ask.py with console.status() spinner.
Wrap memory indexing loop in memory_cmd.py with rich.progress.track().

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 17:34:45 +00:00
Jon Saad-FalconandClaude Opus 4.6 390deeefd0 feat(cli): add global verbose/quiet logging flags
New log_config.py with setup_logging() configuring the openjarvis
logger (WARNING default, DEBUG on --verbose, ERROR on --quiet).
RotatingFileHandler (5MB, 3 backups) enabled in verbose mode.
Flags added to root CLI group and forwarded via click context.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 17:31:49 +00:00
Jon Saad-FalconandClaude Opus 4.6 d1d113c1b1 feat(cli): add error hints system
New hints.py with hint_no_config(), hint_no_engine(), hint_no_model().
Wire hint_no_engine into ask.py EngineConnectionError handlers to
show actionable suggestions when engine is unreachable.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 17:27:10 +00:00
Jon Saad-FalconandClaude Opus 4.6 30a6aa585d feat(cli): add jarvis quickstart command
5-step guided setup: detect hardware, write config, check engine,
verify model, run test query. Skips config step if already present
unless --force is used. Exits with helpful message on engine failure.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 17:23:37 +00:00
Jon Saad-FalconandClaude Opus 4.6 392218735d Add energy aggregation and step-type stats to TraceAnalyzer (Task 4)
- Add StepTypeStats dataclass with full descriptive statistics per step
  type (count, avg/median/min/max/std duration, total energy, and
  avg/median/min/max/std input/output tokens)
- Add total_energy_joules, total_generate_energy_joules, and
  step_type_stats fields to TraceSummary
- Compute per-step-type aggregations in summary() method
- Add 3 tests covering energy totals, step-type stats, and dataclass fields

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 07:19:39 +00:00
Jon Saad-FalconandClaude Opus 4.6 45892539bc Add tokens_per_joule to telemetry store and aggregator (Task 3)
- Add tokens_per_joule column to TelemetryStore schema, INSERT, and migration
- Add avg_tokens_per_joule field to ModelStats and EngineStats
- Add AVG(tokens_per_joule) to per_model_stats() and per_engine_stats() SQL
  queries using _safe_col() pattern for backward compatibility
- Add 3 tests for store/retrieve, multi-record aggregation, and engine stats

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 06:53:23 +00:00
Jon Saad-FalconandClaude Opus 4.6 4e5709d478 feat(telemetry): compute tokens_per_joule in InstrumentedEngine
Computes completion_tokens / energy_joules in both generate() and
stream() methods. Zero when energy or tokens are zero.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 06:47:55 +00:00