Commit Graph
80 Commits
Author SHA1 Message Date
krypticmouse 05f3dca77f single call profiling 2026-03-03 11:25:25 -08:00
Herumb ShandilyaandGitHub f427899ffb Merge pull request #3 from HazyResearch/cli-update-cleanup
Config based setup, Host with backend, Cleanups
2026-03-02 19:36:38 -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 db114d839f fix: update docs for consolidated engine module and add missing pymessenger dep
The codebase simplification PR consolidated per-engine files into
openai_compat_engines.py but docs still referenced the old module paths,
breaking the mkdocs build. Also adds pymessenger to channel-messenger
optional dependency.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 00:31:03 +00:00
Jon Saad-FalconandGitHub 237407a0ca Merge pull request #2 from HazyResearch/feat/codebase-simplification
Simplify repository structure and clean up code
2026-03-02 15:55:00 -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 2ead10b13e fix: update Docker test paths after deploy/docker/ migration
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 23:10:19 +00:00
Jon Saad-FalconandClaude Opus 4.6 d3d9e701f2 docs: update CLAUDE.md to reflect simplified repository structure
- Update evals paths (evals/ -> src/openjarvis/evals/)
- Update python -m evals -> python -m openjarvis.evals
- Update eval config paths
- Update recipes, templates, skills, operators paths
- Update Docker file paths to deploy/docker/
- Remove references to deleted memory/ shims

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 22:50:45 +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-FalconandClaude Opus 4.6 828f28b72a refactor: move Docker files to deploy/docker/
Move all 6 Docker files (Dockerfile, Dockerfile.gpu, Dockerfile.gpu.rocm,
Dockerfile.sandbox, docker-compose.yml, docker-compose.gpu.rocm.yml) from
the project root into deploy/docker/ to reduce root-level clutter. Update
build context paths in both docker-compose files to point back to the
project root (../..) so Docker builds continue to work correctly.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 20:29:57 +00:00
Jon Saad-FalconandClaude Opus 4.6 f4b056870b chore: remove get-pip.py from repository (2.2MB regenerable artifact)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 20:26:11 +00:00
Jon Saad-FalconandClaude Opus 4.6 28a6c5e675 docs: add codebase simplification implementation plan
13 incremental tasks covering structure cleanup, data migration,
shim removal, engine consolidation, and init.py refactoring.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 20:21:12 +00:00
Jon Saad-FalconandClaude Opus 4.6 ad2c186b89 docs: add codebase simplification design plan
Outlines incremental restructuring to reduce root sprawl from 32 to 21
items, consolidate data dirs into src/ package, remove backward-compat
shims, and clean up repetitive code patterns.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 20:14:20 +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-FalconandGitHub c016d85256 Merge pull request #1 from HazyResearch/feat/experience-polish
Experience polish: eval display, first-run UX, dashboard improvements
2026-03-01 21:47:26 -08: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 a834a470ec Restyle PWA with Catppuccin Mocha dark theme and scoped CSS files
Split monolithic App.css into 5 scoped files:
- variables.css: Catppuccin Mocha palette + semantic tokens
- base.css: reset, layout, responsive breakpoints
- sidebar.css: sidebar, model selector, conversations, savings
- chat.css: messages, bubbles, tool calls, streaming
- input.css: textarea, buttons, pasted-pill attachments

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 18:06:27 +00:00
Jon Saad-FalconandClaude Opus 4.6 759efb9fa8 Add frontend CI workflow, error boundary, and VITE_API_URL support
- .github/workflows/frontend.yml: type-check + build on push/PR
- ErrorBoundary component wraps App with catch + retry UI
- API client reads VITE_API_URL env var for non-same-origin deploys
- vite-env.d.ts declares ImportMetaEnv type

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 18:02:09 +00:00
Jon Saad-FalconandClaude Opus 4.6 1c44f51ef5 Add system tray menu with Show/Hide, Health status, and Quit
Build tray programmatically via TrayIconBuilder with menu items.
Show/Hide toggles main window visibility. Remove declarative
trayIcon config to avoid conflict with programmatic setup.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 17:45:44 +00:00
Jon Saad-FalconandClaude Opus 4.6 00fc627e3e Regenerate Windows icon with multi-resolution .ico (16/32/48/256px)
Previous .ico only had 16x16. Windows needs multiple sizes for
taskbar, title bar, and explorer icon display.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 17:44:12 +00:00
Jon Saad-FalconandClaude Opus 4.6 21884ebd0e Add Settings tab to desktop app with localStorage persistence
New SettingsPanel component with API URL, refresh interval, and
theme toggle. Wired into App.tsx as sixth tab.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 17:43:10 +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 f6c02c13d8 feat(evals): add --compact and --trace-detail CLI flags
Wire new display flags through the run command to print_full_results.
--compact renders a single dense table; --trace-detail enables full
per-step trace listing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 17:18:11 +00:00
Jon Saad-FalconandClaude Opus 4.6 d82a324189 feat(evals): grouped display tables (accuracy, latency, energy, trace)
Add print_accuracy_panel, print_latency_table, print_energy_table,
print_trace_summary, print_compact_table, and print_full_results
orchestrator. Keep existing print_metrics_table for backward compat.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 17:13:04 +00:00
Jon Saad-FalconandClaude Opus 4.6 1b8882c7e2 Wire trace data and token totals into eval RunSummary (Task 6)
- Add total_input_tokens, total_output_tokens, avg_power_watts to
  _compute_summary() and include in RunSummary constructor
- Add _output_path and _traces_dir as proper slots on RunSummary (fixes
  pre-existing bug: slots=True prevented dynamic attribute setting)
- Update _summary_to_dict to serialize new fields
- Fix pre-existing test_metric_stats_to_dict to check p90/p95/p99 keys
- Add 2 new tests: total token counts and avg power in summary

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 17:03:15 +00:00
Jon Saad-FalconandClaude Opus 4.6 b9a89f1ac7 Add trace and power fields to EvalResult and RunSummary (Task 5)
- Add trace_steps and trace_energy_joules to EvalResult
- Add avg_power_watts, total_input_tokens, total_output_tokens, and
  trace_step_type_stats to RunSummary
- Add 3 tests covering new field defaults and setters

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 07:20:21 +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
Jon Saad-FalconandClaude Opus 4.6 ac8d6b01c7 feat(telemetry): add tokens_per_joule field to TelemetryRecord
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 06:42:54 +00:00
Jon Saad-FalconandClaude Opus 4.6 598d3473ee chore: add .worktrees/ to .gitignore
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 06:33:07 +00:00
Jon Saad-FalconandClaude Opus 4.6 a841b4abb4 Add experience polish implementation plan (18 TDD tasks)
Detailed TDD implementation plan for Phases 23a/23b/23c covering eval
display, telemetry, trace aggregation, quickstart CLI, logging, bench
stats, and dashboard polish. Phase 23a fully specified with test code.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 06:08:46 +00:00
Jon Saad-FalconandClaude Opus 4.6 a000a7dbb2 Add experience polish design doc (Phases 23a/23b/23c)
Design for eval output quality, CLI polish, installation flow, and
dashboard aesthetics across three independently shippable mini-phases.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 02:36:29 +00:00
Jon Saad-FalconandClaude Opus 4.6 2849f39cbc Update Cargo.lock and tsconfig.tsbuildinfo after desktop pipeline changes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 02:35:54 +00:00
Jon Saad-FalconandClaude Opus 4.6 791d5e9bef Enable updater artifacts and update signing key
- Add createUpdaterArtifacts: true to bundle config, which tells
  cargo tauri build to produce .sig files alongside installers
- Update pubkey to match regenerated key (now with password)
- Without createUpdaterArtifacts, no .sig or .tar.gz updater bundles
  are produced, so latest.json was never generated

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 01:50:28 +00:00
Jon Saad-FalconandClaude Opus 4.6 7b5cbf9d12 Add Operators: persistent, scheduled autonomous agents (Phase 22)
Introduces the Operator subsystem — persistent agents that run on a schedule
with automatic state management. Built on a new OperativeAgent (extends
ToolUsingAgent) with built-in session persistence, memory state recall, and
tick-aware lifecycle. Includes OperatorManager for lifecycle management,
TOML manifest format, 4 bundled operators, 9 CLI commands, and 39 tests.

New: OperativeAgent, operators package (types/loader/manager),
operators CLI, OperatorsConfig, OPERATOR_TICK_START/END events.
Modified: system.py (system_prompt/operator_id passthrough),
scheduler.py (operator metadata forwarding), config.py, events.py.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 01:17:04 +00:00
Jon Saad-FalconandClaude Opus 4.6 5016269533 Configure updater signing key and fix endpoint URL
- Set updater pubkey from generated signing keypair
- Fix endpoint URL to use HazyResearch/OpenJarvis (not jonsf)
- TAURI_SIGNING_PRIVATE_KEY configured as GitHub Secret

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 00:28:27 +00:00
Jon Saad-FalconandClaude Opus 4.6 3cd55ba20d Fix macOS CI: only set Apple signing env vars when certificate is configured
The tauri action attempts certificate import when APPLE_CERTIFICATE is
present in the environment (even as empty string). Move Apple signing
env vars to a conditional step that only writes to GITHUB_ENV when the
secret is actually non-empty.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 22:40:25 +00:00
Jon Saad-FalconandClaude Opus 4.6 75aeedde9e Fix desktop CI: add icon.ico for Windows, skip macOS codesign, drop macos-13
- Add icons/icon.ico generated from 256x256.png (required for Windows resource file)
- Add icon.ico to bundle.icon list in tauri.conf.json
- Set APPLE_SIGNING_IDENTITY to '-' when APPLE_CERTIFICATE is not configured,
  skipping codesign instead of failing with keychain import error
- Remove macos-13 matrix entry (Intel runners sunset by GitHub)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 20:55:03 +00:00