Commit Graph
16 Commits
Author SHA1 Message Date
Jon Saad-FalconandClaude Opus 4.6 cbabcd4a8f feat: rewrite agent wizard — 2-step flow with smart defaults
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 12:36:07 -07:00
Jon Saad-FalconandClaude Opus 4.6 c1e02a236a feat: show model in agent overview, split tokens, editable model
Overview tab:
- Show Intelligence (model name) with click-to-change dropdown
- Split "Total Tokens" into "Input Tokens" and "Output Tokens"
- Model can be switched for existing agents via dropdown

Backend:
- Add input_tokens/output_tokens columns to managed_agents
- Track prompt_tokens and completion_tokens separately in executor
- Disable Ollama thinking by default (think:false) to prevent
  empty responses from token exhaustion

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 18:32:25 -07:00
Jon Saad-FalconandClaude Opus 4.6 11d1643261 feat: live agent progress visibility in Interact tab
Add current_activity field to managed agents that the executor updates
at each phase of a tick (loading model, delivering messages, generating
response, retrying, finalizing). The frontend polls this every 2s and
displays the live status instead of static "Agent is thinking...".

Backend:
- Add current_activity column to managed_agents (migration)
- Add _set_activity helper to AgentExecutor
- Update activity at: start_tick, model load, message delivery,
  generation, retry, finalize
- Clear activity on end_tick

Frontend:
- InteractTab polls both messages and agent status in parallel
- Shows current_activity text with pulsing indicator
- Falls back to "Agent is thinking..." if activity is empty

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 17:54:08 -07:00
Jon Saad-Falcon 3777086d3a fix: count full prompt tokens without KV-cache assumption
Ollama's prompt_eval_count may exclude KV-cached tokens (system
prompt, prior conversation turns), under-counting the prompt size
used for cost/FLOPs/energy calculations and leaderboard submissions.

Engine changes:
- Add estimate_prompt_tokens() helper in engine/_base.py that
  computes cache-agnostic token count from message content
- Ollama + OpenAI-compat engines now use max(reported, estimated)
  to ensure system prompt and full context are always counted

Savings/leaderboard changes:
- Add TOKEN_COUNTING_VERSION=2 to savings.py so frontends can
  tag Supabase submissions (old=v1, corrected=v2)
- Desktop + web frontends forward version in leaderboard submissions
- Add POST /v1/telemetry/reset endpoint to clear stale telemetry

Active users auto-correct via upsert on next session; no manual
Supabase migration required.
2026-03-24 16:55:26 -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-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
Jon Saad-FalconandGitHub 4557fe2930 feat(security): wire guardrails into all entry points (#60) 2026-03-14 16:33:50 -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 f5c0d412fc fix: pull all fitting Qwen3.5 models before app opens, fix download button
- Boot sequence: Phase 2 now pulls ALL Qwen3.5 models that fit in RAM
  before the server starts. SetupScreen blocks until every model is
  downloaded, showing per-model progress. No more background Phase 4.

- Default model: third-largest fitting model (qwen3.5:9b on 64GB).

- Download button: added pull_ollama_model and delete_ollama_model Tauri
  commands. Frontend uses Tauri invoke in desktop mode, fixing the
  "Load failed!" CORS/timeout issue with fetch().
2026-03-13 22:24:21 -07:00
Jon Saad-FalconandGitHub 5fdd7d0e75 feat: model catalogue with download/delete and Qwen3.5 auto-pull (#54)
* feat: model catalogue with download/delete and auto-pull Qwen3.5

- Desktop boot: start server immediately with fallback model (qwen3:0.6b),
  then pull preferred model (qwen3.5:4b) and remaining Qwen3.5 variants
  that fit in RAM in the background. No more broken "Select model" state.
- Backend: add POST /v1/models/pull and DELETE /v1/models/{name} endpoints
  so the frontend can trigger model downloads and deletions via Ollama.
- Frontend: redesign CommandPalette (Cmd+K) with two tabs — "Installed"
  shows pulled models with select/delete, "Download Models" shows a
  catalogue of popular models plus a custom model input field.
- Fix ollama_has_model() to use exact tag matching instead of prefix
  matching, preventing false positives.

* fix: streaming, model switching, second-largest default, and tests

- Streaming: use direct engine streaming for non-tool requests so tokens
  arrive in real-time instead of being batched by the agent bridge.
  Add error handling to _handle_stream so engine errors surface as
  content chunks instead of silent failures.

- Model selection: pick the second-largest Qwen3.5 model that fits
  (leaves headroom for OS/apps) instead of the absolute largest.

- Model switching: abort in-flight stream when the user changes models
  mid-generation, preventing stale-model errors. Improve error messages
  in catch blocks.

- Tests: add tests/server/test_model_management.py with 11 tests
  covering model pull/delete endpoints, streaming error resilience,
  direct-engine streaming bypass, and model listing. All 100 server
  tests pass.
2026-03-13 21:42:26 -07:00
Jon Saad-FalconandGitHub bca60b5706 fix: clean stale desktop release artifacts and fix frontend port mismatch (#52)
Three issues fixed:

1. The desktop-latest release accumulated stale artifacts across builds
   because tauri-action adds new files without removing old ones. Users
   could download an outdated DMG. Added a clean-release job that wipes
   all existing assets before the build matrix runs.

2. The frontend hardcoded DESKTOP_API to port 8000 but the Tauri backend
   starts the server on port 8222. Added a get_api_base Tauri command so
   the frontend fetches the port from the Rust backend at startup,
   keeping JARVIS_PORT as the single source of truth.

3. frontend/package.json version was 1.0.0 while desktop and pyproject
   are 0.1.0, causing duplicate artifact names in the release.
2026-03-13 19:11:39 -07:00
Gabriel Bo f077adc11f feat: add required email field to leaderboard opt-in 2026-03-13 15:17:13 -07:00
Gabriel Bo 90ea7c90b0 Revert "adding email requirement for opt in"
This reverts commit 898099e771.
2026-03-13 15:11:34 -07:00
Gabriel Bo 898099e771 adding email requirement for opt in 2026-03-13 14:23:41 -07:00
07ec747c8f fix: frontend now uses settings API URL for all backend requests (#49)
getBase() reads settings.apiUrl from localStorage so the API URL
configured in the Settings page is actually used by api.ts and sse.ts.
Previously hardcoded to localhost:8000, causing "Failed to get response"
when the backend ran on a different port.

Co-authored-by: robbym-dev <robbym-dev@users.noreply.github.com>
2026-03-13 13:51:56 -07:00
Jon Saad-Falconandkrypticmouse 8798e2ee4f init commit 2026-03-12 17:29:39 +00:00