Commit Graph
116 Commits
Author SHA1 Message Date
62eaa70736 feat: add MiniMax as cloud inference provider with M2.7 default (#85)
* feat: add MiniMax as cloud inference provider

Add MiniMax M2.5 and M2.5-highspeed as a 5th cloud provider alongside
OpenAI, Anthropic, Google, and OpenRouter. Uses the OpenAI-compatible
API at api.minimax.io/v1 via the existing openai SDK dependency.

Changes:
- Add MiniMax client init, generate, and streaming in CloudEngine
- Add MiniMax models to model catalog with correct pricing
- Add MINIMAX_API_KEY environment variable support
- Add temperature clamping (0.01-1.0) per MiniMax API constraints
- Add 19 unit tests and 3 integration tests
- Update docs and README with MiniMax provider info

* feat: upgrade MiniMax default model to M2.7

- Add MiniMax-M2.7 and MiniMax-M2.7-highspeed to model list
- Set MiniMax-M2.7 as default model (first in list)
- Keep all previous models (M2.5, M2.5-highspeed) as alternatives
- Update pricing table with M2.7 entries
- Update model catalog with M2.7 specs
- Update docs to list all available MiniMax models
- Update unit tests (23 passing) and integration tests (3 passing)

---------

Co-authored-by: Octopus <octo-patch@users.noreply.github.com>
2026-03-20 04:16:33 -07:00
Jon Saad-FalconandGitHub cbdb720e06 Merge pull request #83 from TeemuSailynoja/fix/duckduckgo-fallback
feat: add DuckDuckGo fallback to web_search tool
2026-03-20 04:02:18 -07:00
Teemu Säilynoja 806067a002 fix: simplify web search error handling and improve test mocks
- Catch any Exception from Tavily (not just specific error types)
- Fall back to DuckDuckGo for any error, making the tool more robust
- Fix test mocks to use builtins.__import__ for proper local import mocking
- Simplify test_execute_tavily_error to test generic exception handling
2026-03-17 10:34:45 +02:00
Teemu Säilynoja b10b19b1eb feat: add DuckDuckGo fallback to web_search tool
When Tavily API is unavailable (no API key, import error, or API error),
the web_search tool now falls back to DuckDuckGo search instead of
failing. This ensures the tool always works for users without a
Tavily API key.

- Add DuckDuckGo search as fallback using ddgs package
- Catch specific Tavily exceptions (MissingAPIKeyError, InvalidAPIKeyError,
  ForbiddenError, UsageLimitExceededError, TimeoutError, BadRequestError)
- Add logger.debug calls to log when falling back to DuckDuckGo
- Use ddgs instead of deprecated duckduckgo-search package name
- Add test for DuckDuckGo fallback result formatting
- Simplify test mocking to use consistent monkeypatch patterns

Closes #81
2026-03-17 10:34:45 +02:00
Gabriel Bo 256ff54476 long single line dict literal error fixes 2026-03-16 22:07:26 -07:00
Gabriel Bo 3ca1b63962 cleaning up scripts 2026-03-16 21:52:17 -07:00
Gabriel Bo 9c6bdc09cb token counting fixes 2026-03-16 21:51:05 -07:00
Jon Saad-FalconandGitHub 11c37bf54d Merge pull request #90 from open-jarvis/fix/roadmap-reorder-and-nav-cleanup
fix: reorder roadmap sections, remove contributing from nav
2026-03-16 21:43:06 -07:00
Jon Saad-FalconandClaude Opus 4.6 b8bbbdbf55 fix: move focus areas and get-involved to top of roadmap, remove contributing from nav
- Move "Current Focus Areas" and "How to Get Involved" to top of roadmap
- Remove Version History section entirely
- Fix "take" workflow: clarify that claiming happens on GitHub issues,
  with link to create new issues if none exists
- Remove Contributing Guide from MkDocs nav (linked from roadmap instead)
- Link to CONTRIBUTING.md on GitHub from "How to Get Involved" section

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 04:17:21 +00:00
Jon Saad-FalconandGitHub f504475960 Merge pull request #88 from open-jarvis/fix/roadmap-and-docs-cleanup
fix: rewrite roadmap around 5 workstreams, fix broken links
2026-03-16 21:05:19 -07:00
Jon Saad-FalconandClaude Opus 4.6 f52ed33e43 fix: rewrite roadmap around 5 workstreams, fix broken links and cleanup
- Reorganize roadmap around the 5 workstreams: Continuous Operators,
  Mobile & Messaging, Secure Cloud Collaboration, Tutorials, Hardware
- Add concrete "Where you can help" tables with maturity tags and
  good-first-issue markers under each workstream
- Change "GRPO training from trace data" to "Post-training data"
- Fix 404 link: CONTRIBUTING.md link now points to GitHub, not docs site
- Remove !!! tip admonition from docs/development/contributing.md
- Preserve version history in collapsible section

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 03:58:57 +00:00
Jon Saad-FalconandGitHub ebe35582e3 Merge pull request #87 from open-jarvis/fix/mkdocs-roadmap-nav
fix: make Roadmap a nav section with Roadmap + Contributing Guide
2026-03-16 20:44:12 -07:00
Jon Saad-FalconandClaude Opus 4.6 856d27621d fix: rename Development tab to Roadmap with Roadmap + Contributing Guide sub-pages
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 03:38:13 +00:00
Jon Saad-FalconandGitHub 6d8e3da6e6 Merge pull request #86 from open-jarvis/docs/contributor-community-infra
docs: contributor docs, community infra, and roadmap rewrite
2026-03-16 20:30:32 -07:00
Jon Saad-FalconandClaude Opus 4.6 29beeed32d docs: add contributor docs, community infrastructure, and roadmap rewrite
- Add root CONTRIBUTING.md with incentives (paper acknowledgment, Mac Mini
  giveaway), contribution tiers, PR process, and maintainership path
- Add CODE_OF_CONDUCT.md (Contributor Covenant v2.1)
- Add .pre-commit-config.yaml with ruff lint + format hooks
- Add GitHub issue templates (bug report, feature request, new eval dataset)
- Add PR template with test/lint/format checklist
- Rewrite docs roadmap with GitHub Projects structure, current focus areas,
  and collapsible version history
- Remove Development section from MkDocs nav; replace with top-level Roadmap tab
- Delete changelog, extending docs (consolidated into CONTRIBUTING.md)
- Delete root ROADMAP.md (content now lives in docs site)
- Add pre-commit to dev extras in pyproject.toml
- Add Roadmap link to README

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 03:24:26 +00:00
Jon Saad-FalconandGitHub 8d22ae953d Merge pull request #84 from open-jarvis/feature/personal-ai-parity
feat: personal AI parity — memory files, prompt caching, gateway daemon, and more
2026-03-16 17:46:43 -07:00
Tarun SureshandClaude Opus 4.6 181d9ac0eb fix: resolve ruff I001 import sorting and E501 line length in tests
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 00:13:49 +00:00
Jon Saad-FalconandGitHub f228b0f24f Merge pull request #79 from 70Midnite07/fix/memory-retrieval-and-agent-manager
Reviewed and tested: zero new test failures vs main, Rust tests all pass (7/7 including 2 new). Added debug logging for memory injection errors and cleaned up .gitignore.
2026-03-16 16:58:08 -07:00
Jon Saad-FalconandClaude Opus 4.6 c36730320c chore: remove contributor-specific gitignore entry and log memory injection errors
- Remove openjarvis-bugfix-spec-v2.md from .gitignore (not a general pattern)
- Replace bare `except: pass` with debug logging in routes.py memory injection

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 16:57:55 -07:00
Gabriel Bo 14733433b0 adding pagination and limiting to 50 per sign up on leaderboard 2026-03-16 15:58:39 -07:00
Tarun SureshandClaude Opus 4.6 130dd99387 feat: create default SOUL.md, MEMORY.md, USER.md on jarvis init
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 18:44:03 +00:00
Tarun SureshandClaude Opus 4.6 981f665913 feat: add Anthropic prompt cache breakpoint annotation
Add _annotate_anthropic_cache helper that annotates system messages
with cache_control for Anthropic prompt caching.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 18:42:54 +00:00
Tarun SureshandClaude Opus 4.6 c6cca77c12 feat: add jarvis gateway start/stop/status/logs CLI commands
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 18:41:43 +00:00
Tarun SureshandClaude Opus 4.6 5df8688627 feat: add GatewayDaemon, SessionExpiryHook, and service file generation
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 18:40:07 +00:00
Tarun SureshandClaude Opus 4.6 1359c223ec feat: wire SystemPromptBuilder into BaseAgent._build_messages()
Add optional prompt_builder parameter to BaseAgent. When provided,
_build_messages() uses builder.build() output instead of raw system_prompt.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 18:37:41 +00:00
Tarun SureshandClaude Opus 4.6 0d5be075f6 feat: add AgentExecutor.run_ephemeral() for one-shot agent turns
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 18:02:28 +00:00
Tarun SureshandClaude Opus 4.6 6371e7521d feat: add warn-before-block escalation to LoopGuard
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 18:01:13 +00:00
Tarun SureshandClaude Opus 4.6 4cc16972ec feat: add credential stripping, tool output wrapping, and severity policy
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 17:57:47 +00:00
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
Jon Saad-FalconandGitHub 59b5295b20 Update ROADMAP.md 2026-03-16 10:51:36 -07: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
Micah 47a37fcca3 fix: wire memory backend into server and agent executor
The web UI chat endpoint and managed agent executor both skipped
  memory context injection entirely:

  - serve.py never created a memory backend
  - app.py received config but never stored it on app.state
  - executor.py never queried the FTS5 document store

  Now all three entry points (CLI, server, agents) inject retrieved
  context from the indexed knowledge base.
2026-03-16 00:42:32 -07:00
Micah 3ab601c717 Fix additional memory retrieval issues beyond PR #74
- Add porter stemming to FTS5 tokenizer (tokenize='porter unicode61')
  so plurals like 'medications' match 'Medication'
- Strip punctuation from FTS5 queries so question marks don't break MATCH
- Expand tilde (~) in db_path before opening SQLite connection
- Remove 'id' from FTS5 columns (UUIDs shouldn't be full-text indexed)
- Add memory context injection to server chat_completions route
  (routes.py had no memory integration - UI chat was never grounded)
- Fix agent name-to-ID resolution in agent_cmd.py (foreign key error)
- Align Python SQLiteMemory schema with Rust backend
2026-03-15 22:58:38 -07: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