Commit Graph
85 Commits
Author SHA1 Message Date
Tarun SureshandClaude Opus 4.6 c1e01b1e8b feat: add SkillManageTool for agent-authored procedural memory
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 17:56:11 +00:00
Tarun SureshandClaude Opus 4.6 153435edb6 feat: add pluggable context compaction strategies via CompressionRegistry
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 17:53:47 +00:00
Tarun SureshandClaude Opus 4.6 978749e9f8 feat: add SystemPromptBuilder with frozen prefix and char limits
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 17:50:36 +00:00
Tarun SureshandClaude Opus 4.6 7abd65da26 feat: add MemoryManageTool and UserProfileManageTool for persistent personalization
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 17:45:55 +00:00
Jon Saad-FalconandGitHub 4f87d3d07a Merge pull request #76 from xbsheng/fix/ssrf-check
fix: add SSRF check in WebSearchTool to prevent unsafe URL access
2026-03-15 21:25:23 -07:00
Jon Saad-Falcon 2a13505a1c fix: sort imports and mock SSRF check in web_search tests
Sort the check_ssrf import alphabetically to fix ruff I001. Mock the
SSRF check in URL-fetching tests since it requires the Rust backend
which isn't available in CI. Add a dedicated test verifying SSRF
rejection.
2026-03-15 21:18:46 -07:00
Jon Saad-FalconandGitHub 7be35021b7 Merge pull request #77 from open-jarvis/docs/roadmap-and-claude-md
docs: add project roadmap
2026-03-15 21:04:57 -07:00
Jon Saad-FalconandClaude Opus 4.6 1e9e8716cc docs: add project roadmap with five development workstreams
Public-facing roadmap organized into five independent workstreams:
1. Continuous Operators & Agents — hardening long-horizon autonomy
2. Mobile & Messaging Clients — iMessage, WhatsApp, Slack, SMS
3. Secure Cloud Collaboration — Minions-style hybrid inference, TEE
4. Tutorials & Documentation — filling gaps in continuous agents, tools, LM eval
5. Hardware Breadth — Intel Arc, Jetson Orin, Qualcomm, AMD Ryzen AI, RPi

Each item tagged with maturity level (Ready/Design Needed/Research-Stage)
and time horizon (near/mid/long-term) to guide contributors.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 21:02:44 -07:00
xbsheng 9c3803828b fix: add SSRF check in WebSearchTool to prevent unsafe URL access 2026-03-16 10:41:02 +08:00
Jon Saad-FalconandGitHub 56583e819b Merge pull request #75 from open-jarvis/fix/desktop-macos-dmg-bundling
fix: pin macOS desktop build to macos-14 to fix DMG bundling
2026-03-15 18:38:12 -07:00
Jon Saad-FalconandClaude Opus 4.6 54a99692ba fix: pin macOS desktop build to macos-14 to fix DMG bundling
macos-latest now resolves to macOS 15 (Sequoia), which removed the
SetFile command from Xcode Command Line Tools. Tauri's bundle_dmg.sh
relies on SetFile to set custom icon attributes on the DMG volume,
causing the Desktop Build & Release workflow to fail on the macOS
runner.

Pin to macos-14 (Apple Silicon M1, Sonoma) which still includes
SetFile and supports universal binary builds.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 17:19:40 -07:00
cc1e14f1c3 fix: engine discovery fallback, FTS5 case/scoring, init engine picker, Windows support (#74)
- Engine discovery (#73): get_engine() now falls back to any healthy
  engine when the explicitly-requested key fails, instead of returning
  None. Fixes LM Studio (and other non-default engines) not being found
  when deploying agents.

- FTS5 case sensitivity & scoring (#67): Add explicit unicode61 tokenizer
  to the FTS5 virtual table for case-insensitive search. Replace ambiguous
  `rank` column with explicit `bm25()` call with column weights (id=0,
  content=1, source=0.5) to produce correct positive scores. Includes
  auto-migration for existing databases.

- Interactive engine selection (#72): `jarvis init` now detects running
  engines and presents an interactive picker. Also accepts `--engine`
  flag to skip the prompt. Engine choice flows through to config
  generation.

- Windows desktop support (#68): Add RAM detection via wmic, Windows
  binary paths (LOCALAPPDATA, ProgramFiles, cargo), port cleanup via
  netstat+taskkill, and USERPROFILE fallback for HOME env var.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 16:23:39 -07:00
afa50b0ff7 fix: parse tool_call arguments as dicts for OpenAI-compatible engines (#69)
messages_to_dicts() serializes tool_call arguments as JSON strings,
but OpenAI-compatible servers (vLLM, SGLang, llama.cpp, etc.) expect
them as JSON objects. This caused 400 Bad Request errors on every
multi-turn tool-calling conversation, breaking GAIA, DeepPlanning,
and LifelongAgent benchmarks for all local models.

The fix adds _fix_tool_call_arguments() to _OpenAICompatibleEngine
which json.loads() any string-typed arguments back to dicts before
sending. Applied to both generate() and stream() methods. This is
the same fix as commit 45c0e44 (Ollama), now applied to all
OpenAI-compatible engines.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 12:12:20 -07:00
Jon Saad-FalconandGitHub 51a2b4cceb feat: operatives tab improvements — 9 UX/functionality fixes (#63) 2026-03-14 21:31:38 -07:00
Jon Saad-FalconandGitHub 61d523a270 Merge pull request #65 from PatrickFFung/main
Running `uv run jarvis start` failed
2026-03-14 21:25:05 -07:00
Jon Saad-FalconandClaude Opus 4.6 5dc64872fd chore: remove superpowers plan/spec artifacts from repo
These are working files that should not be tracked per CLAUDE.md.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 04:23:38 +00:00
Jon Saad-FalconandClaude Opus 4.6 9083e8c2a8 fix: wrap Info icon in span for title tooltip (TS2322)
lucide-react SVG components don't accept `title` prop directly.
Wrap in a <span> element instead.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 04:15:14 +00:00
Jon Saad-FalconandClaude Opus 4.6 bc2742d97b fix(agents): crash fix, UX polish for Agents tab
1. Fix "Run Now" crash: handle list-type tools config in
   SystemBuilder._resolve_tools (was calling .split on a list)
2. Recover button: add toast feedback on success/failure
3. Schedule help: add Info icon tooltip explaining Manual/Cron/Interval
4. Interval picker: replace raw text input with h/m/s numeric spinners
5. Budget: add helper text clarifying cloud-only spend
6. Learning technique: add memory extraction strategy dropdown
7. Error logs: show error messages in trace entries, catch Run Now errors
8. handleRun: catch initial API errors instead of silently swallowing

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 03:54:06 +00:00
Patrick Fung bb3053efca Add __main__.py entry point to enable CLI execution via python -m openjarvis.cli.
Previously, running `uv run jarvis start` would fail to start the process with error:
"No module named openjarvis.cli.__main__; 'openjarvis.cli' is a package and cannot be
directly executed" because the CLI package lacked an entry point.

Signed-off-by: Patrick Fung <patrick_fung@foxmail.com>
2026-03-15 10:31:13 +08:00
Jon Saad-FalconandGitHub 5f0a151be1 Merge pull request #62 from open-jarvis/fix/ui-dashboard-polish-2
fix(ui): center input, 2x3 energy grid, unify token counts
2026-03-14 18:05:07 -07:00
Jon Saad-FalconandClaude Opus 4.6 abd36af6b5 fix(ui): center input text, 2x3 energy grid, remove duplicate savings, unify token counts
- Center "Message OpenJarvis..." placeholder vertically in input area
- Restructure Energy Monitoring to 2x3 grid: promote thermal status and tokens processed to stat cards
- Add truncate to stat card values to prevent overflow
- Remove "Server-reported savings" section from Cost Comparison (redundant)
- Move asterisk disclaimer directly below divider
- Unify token counts: Energy Monitoring now uses savings store (same source as Cost Comparison)
- Round values to 1 decimal (except energy/token at 3 decimals and integer fields)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 00:59:39 +00:00
Jon Saad-FalconandGitHub 95281f9d0b Merge pull request #61 from open-jarvis/fix/ui-aesthetic-polish
fix(ui): polish chat and dashboard aesthetics
2026-03-14 17:23:48 -07:00
Jon Saad-FalconandClaude Opus 4.6 2cf67ac551 fix(ui): polish chat and dashboard aesthetics
- Change initial stream phase from "Connecting..." to "Generating..."
- Left-align "Loading model..." text in sidebar model badge
- Fix token count not updating by preferring client-side savings data
- Rename "Tokens" to "Output Tokens" in system panel
- Show input/output tokens in XRay footer with dash separators
- Fix EnergyDashboard to use shared API helpers (getBase) instead of raw env var

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 00:18:45 +00:00
Jon Saad-FalconandGitHub 4557fe2930 feat(security): wire guardrails into all entry points (#60) 2026-03-14 16:33:50 -07:00
Jon Saad-Falcon f458e19301 feat: instruction + model in agent wizard, error toasts, auto-run interval agents 2026-03-14 16:28:15 -07:00
Jon Saad-Falcon f54084e954 feat: wire AgentScheduler into server, register agents on create 2026-03-14 16:28:15 -07:00
Jon Saad-Falcon ba8b994ba8 feat: CLI version check against GitHub releases (daily, cached) 2026-03-14 16:28:15 -07:00
Jon Saad-Falcon 78ffebd5a3 feat: desktop auto-update — download in background, toast to restart 2026-03-14 16:28:15 -07:00
Jon Saad-Falcon cb3d571efe fix: write error to summary_memory on tick failure, inject standing instruction 2026-03-14 16:28:15 -07:00
Jon Saad-Falcon cbd59b1258 docs: add agent UX, auto-update, CLI version check spec and plan 2026-03-14 16:28:15 -07:00
Jon Saad-Falcon 4d1929779d docs: add agent UX, auto-update, and CLI version check spec 2026-03-14 16:28:15 -07:00
7df9dedfc9 docs: refresh landing page — clearer primitives, research section, citation (#59)
- Rewrite Five Primitives with plain-English descriptions
- Add 10+ engine backends with hyperlinks (Ollama, vLLM, SGLang, etc.)
- Add Automated Workflows and Energy & Cost Tracking feature cards
- Add Research section linking to Intelligence Per Watt and Stanford
- Add Citation section with BibTeX
- Fix hero-tagline max-width to span full title width

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 16:02:17 -07:00
Jon Saad-Falcon 3cf4bbae30 feat: display thinking tokens in X-Ray footer and stream usage data
- Ollama engine: capture eval_count and prompt_eval_count from the
  streaming final chunk (includes thinking/reasoning tokens).
- Routes: include usage data in the SSE finish chunk so the frontend
  gets accurate token counts even in streaming mode.
- X-Ray footer: show estimated thinking tokens when completion_tokens
  significantly exceeds visible output (e.g. "1695 generated · 11 prompt
  · ~1680 thinking").
2026-03-14 14:55:42 -07:00
34000aea01 fix(cli): support configured tool defaults and interactive confirmations (#56)
* feat: add interactive agent confirmation mode and fix tool loading

- Add `interactive` and `confirm_callback` params to ToolUsingAgent and
  NativeReActAgent so CLI sessions can prompt user before tool execution
- Fix tool resolution in `ask` and `chat` commands to fall back to
  config.tools.enabled when no --tools flag is provided
- Register shell_exec tool in tools/__init__.py auto-discovery
- Add dspy and gepa as optional learning extras (learning-dspy, learning-gepa)
- Fix openjarvis-rust lock version (1.0.0 → 0.1.0)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(cli): support configured tool defaults and confirmations

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-14 14:42:58 -07:00
Jon Saad-Falcon 1a148debe2 feat: seamless cloud API key flow — save once, works automatically
- Tauri commands: save_cloud_key writes keys to ~/.openjarvis/cloud-keys.env
  (chmod 600), get_cloud_key_status reports which providers are configured.
- Server spawn: reads cloud-keys.env and injects keys as env vars into
  the jarvis serve process, so CloudEngine picks them up automatically.
- Frontend: Cloud Models tab saves keys through Tauri invoke (desktop)
  in addition to localStorage (web), so keys persist across restarts.
- Flow: user enters key in Cloud tab → saved to disk → next server
  start picks it up → cloud models appear in the model list.
2026-03-14 14:32:46 -07:00
Gabriel Bo 93344a787f adding asterisk to focus on local models 2026-03-14 14:32:29 -07:00
Jon Saad-Falcon 7a1584aac3 feat: Cloud Models tab, prevent duplicate empty chats, rename to Installed Models
1. Cloud Models tab: third tab in Cmd+K palette with API key management
   for OpenAI, Anthropic, Google, and OpenRouter. Keys stored in
   localStorage (never sent externally). Top-3 models per provider
   shown when key is configured. Connected status indicator.

2. New chat button: skip creating a new chat if the current one is
   empty (no messages). Prevents stacking empty conversations.

3. Tab label: "Installed" renamed to "Installed Models (N)" for clarity.
2026-03-14 14:18:56 -07:00
Jon Saad-Falcon 7b0fcfa607 fix: rounded icons, setup text overflow, new chat on model switch, token counts
1. Desktop icon: bake rounded corners into the PNG/ICNS/ICO so the icon
   looks consistent on Desktop and in Applications.
2. SetupScreen: truncate long status text with ellipsis, word-break
   error messages so they don't overflow the block.
3. Model switching: create a new chat session when changing models,
   preventing stale context errors with the new model.
4. X-Ray footer: show input/output token counts in the collapsed
   summary (e.g. "42 in · 128 out") alongside engine, model, latency.
2026-03-14 14:05:49 -07:00
e240fde74a feat(ui): Raycast-inspired visual refresh with System Pulse and X-Ray footers (#57)
* feat(ui): update design tokens — system-ui font, warmer palette, accent triad

- Remove Merriweather serif font, switch to system-ui font stack
- Warmer dark mode neutrals (#161618 bg instead of #09090b)
- Add amber/purple accent tokens for signature color triad
- Update borders to rgba for softer feel
- Tighter line-height (1.5) and letter-spacing (-0.01em)
- Update PWA theme_color to match new palette

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(ui): frosted glass sidebar with backdrop-blur

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(ui): initialize shadcn/ui with button, dialog, input, select, tooltip, sonner

Set up shadcn/ui (v4) for Tailwind CSS v4 with CSS-first config. Added
path aliases (@/) to tsconfig.json and vite.config.ts. Installed six
components (button, dialog, input, select, tooltip, sonner) and wired
Sonner's <Toaster> into App.tsx for toast notifications. Removed the
next-themes dependency since this is a Vite/React project, not Next.js.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(ui): disable create agent when unavailable, replace errors with toasts

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(ui): add System Pulse bar and health check banner

- 3px gradient bar at top reflecting system state (idle/inferencing/agent)
- Health check banner when backend is unreachable
- Pulse colors: blue (inference), purple (agents), dim blue (idle)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(ui): add X-Ray message footers with collapsible telemetry

- MessageTelemetry type on ChatMessage (engine, model, speed, TTFT, timing)
- Capture timing data during SSE streaming in InputArea
- XRayFooter component: collapsed one-liner + expandable trace grid
- Integrated into MessageBubble, replacing old token count display

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(ui): resolve shadcn/ui CSS token conflicts with design system

- Namespace shadcn @theme inline variables (--color-cn-*) to avoid
  overriding project's --color-border, --color-accent, --radius-* tokens
- Remove @apply border-border, bg-background, text-foreground, font-sans
  that conflicted with our explicit CSS custom properties
- Remove dead Geist font import (we use system-ui)
- Remove ---break--- comment artifacts from shadcn CLI

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 13:38:07 -07:00
Jon Saad-Falcon 0dac51c649 feat: cloud model support — OpenAI, Anthropic, Google, OpenRouter in dropdown
- MultiEngine: wraps multiple engines and routes by model name, so local
  Ollama models and cloud models appear together in the model selector.
- CloudEngine: added OpenRouter support (openrouter/ prefix) with popular
  models from OpenAI, Anthropic, Google, Meta, Mistral, DeepSeek, Qwen.
- Server auto-detects API keys at startup and enables cloud alongside
  local models when keys are present. No config changes needed.
- Streaming works for all cloud providers.

Set env vars to enable: OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY,
OPENROUTER_API_KEY. Models appear automatically in the Cmd+K dropdown.
2026-03-14 13:09:03 -07:00
Jon Saad-Falcon dc54555158 feat: emit log entries from chat streaming and model operations 2026-03-14 12:54:59 -07:00
Jon Saad-Falcon df91835165 feat: add Logs route and nav item 2026-03-14 12:52:35 -07:00
Jon Saad-Falcon ae4556bbd1 feat: create LogsPage component 2026-03-14 12:50:05 -07:00
Jon Saad-Falcon fb993fc6a1 feat: model switching shows loading spinner, disables input until ready 2026-03-14 12:48:41 -07:00
Jon Saad-Falcon bc7ef2dd51 feat: add theme toggle icon in sidebar header 2026-03-14 12:46:52 -07:00
Jon Saad-Falcon 60c0374f9f fix: update streaming labels to Connecting/Calling 2026-03-14 12:46:49 -07:00
Jon Saad-Falcon d37b75fbf6 feat: replace Energy section with Device (temps, power, energy), remove server-reported 2026-03-14 12:46:46 -07:00
Jon Saad-Falcon 20eca893b0 feat: add preloadModel API function for model warm-up 2026-03-14 12:45:21 -07:00
Jon Saad-Falcon 8622373af8 feat: add LogEntry type, log store, and modelLoading state 2026-03-14 12:45:17 -07:00
Jon Saad-Falcon 3d48d3fc01 feat: include cpu/gpu temp fields in telemetry energy endpoint 2026-03-14 12:45:00 -07:00