Skip to content

feat(assistant): voice streaming, finance, construction, comms, file sandbox#508

Open
rposull wants to merge 3 commits into
open-jarvis:mainfrom
rposull:feat/personal-assistant-expansion
Open

feat(assistant): voice streaming, finance, construction, comms, file sandbox#508
rposull wants to merge 3 commits into
open-jarvis:mainfrom
rposull:feat/personal-assistant-expansion

Conversation

@rposull

@rposull rposull commented Jun 7, 2026

Copy link
Copy Markdown

Summary

Expands OpenJarvis into a full personal assistant across five workstreams. Every new module ships with tests (215 passing) and prefers free, key-free data sources; heavier dependencies are opt-in extras.

  • Speech (streaming TTS): base synthesize_stream() with buffered default; EdgeTTSBackend streams MP3 incrementally; /v1/speech/synthesize returns StreamingResponse gated by speech.tts_stream; frontend plays via MediaSource with blob fallback. Includes Edge mic-capture and silence/hallucination filtering fixes. edge-tts added as optional speech-tts extra.
  • File safety: opt-in sandbox + write confirmation resolved from arg → OPENJARVIS_WORKSPACE[tools] config (file_allowed_dirs, file_write_confirm). Defaults unchanged so autonomous operators keep working; sensitive files remain blocked regardless.
  • Info tools: weather (Open-Meteo) and news (Google News RSS, optional NewsAPI) — no API key required.
  • Comms: GmailConnector.send_message and GCalendarConnector.create_event; email_send / calendar_create_event (both requires_confirmation) plus read-only email_list / calendar_list_events.
  • Finance: CoinGecko crypto + Yahoo stock prices, pure-Python SMA/EMA/RSI/MACD with trend bias, SQLite portfolio + paper-trading store, and 8 agent tools.
  • Construction: SQLite cost catalog + projects + document records, print-ready HTML quotes/contracts (native PDF via optional construction reportlab extra), and 7 agent tools.

Test plan

  • pytest on all touched modules — 215 passing (~3s)
  • Live smoke tests: weather (Open-Meteo), news (Google RSS), crypto (CoinGecko), stock (Yahoo), TA, Edge TTS streaming
  • Tool registry loads all 23 new/updated tools
  • File sandbox enforcement + write-confirmation gating verified
  • Email/calendar confirmation gating + graceful unauthenticated handling
  • Reviewer: confirm optional extras (speech-tts, construction) and uv.lock regeneration in canonical/CI environment

Notes

  • uv.lock intentionally left unchanged; declaring the new optional extras in pyproject.toml is the source of truth. Regenerate the lock in the canonical multi-platform/CI environment to avoid pruning GPU/platform-specific deps.
  • Strict file mode is opt-in by design to avoid breaking unattended operators (morning_brief, daily_digest, news_briefing).

…sandbox

Expand OpenJarvis into a full personal assistant across five workstreams.
All new modules ship with tests (215 passing) and free, key-free data
sources where possible; heavier deps are opt-in extras.

- speech: streaming TTS end-to-end. Base synthesize_stream() with buffered
  default; EdgeTTSBackend streams MP3 incrementally; /v1/speech/synthesize
  returns StreamingResponse gated by speech.tts_stream; frontend plays via
  MediaSource with blob fallback. Edge mic capture + silence/hallucination
  filtering fixes. edge-tts added as optional `speech-tts` extra.

- tools(file): opt-in sandbox + write confirmation resolved from arg ->
  OPENJARVIS_WORKSPACE -> [tools] config (file_allowed_dirs,
  file_write_confirm). Defaults unchanged so autonomous operators keep
  working; sensitive files remain blocked regardless.

- tools(info): weather (Open-Meteo) and news (Google News RSS, optional
  NewsAPI) tools, no API key required.

- connectors+tools(comms): GmailConnector.send_message and
  GCalendarConnector.create_event; email_send / calendar_create_event
  (requires_confirmation) plus read-only email_list / calendar_list_events.

- finance: CoinGecko crypto + Yahoo stock prices, pure-Python SMA/EMA/RSI/
  MACD indicators with trend bias, SQLite portfolio + paper-trading store,
  and 8 agent tools (crypto_price, stock_quote, technical_analysis,
  portfolio_*, paper_trade, paper_account).

- construction: SQLite cost catalog + projects + document records,
  print-ready HTML quotes/contracts (native PDF via optional `construction`
  reportlab extra), and 7 agent tools (cost_*, project_*, quote_create,
  contract_create).

- chore: graceful lifespan shutdown, helper PowerShell scripts, example
  jarvis-assistant.toml, and AGENTS.md specialist personas.
rposull added 2 commits June 6, 2026 21:25
Pin the new optional extras (edge-tts, reportlab) in the universal lock and
realign it with pyproject. The previous lock was stale (pinned the package at
1.0.2 vs the current 0.1.1) and carried duplicate version forks.

Verified the regenerated lock is universal and retains all GPU/platform deps:
vllm, torch, transformers, faiss-cpu, nvidia-ml-py, pynvml, mlx-lm, playwright
remain present with linux/darwin/win32 markers intact. `ray` drops out because
the resolution collapses to vllm 0.19.1, which no longer depends on it (nothing
else references ray). `uv lock --check` and `uv sync --locked` both pass; full
touched-module test suite green (215 passed).
Add a dependency-light outbound alert subsystem distinct from the two-way
channel adapters, plus agent tools so Jarvis can act on "text/email/notify me"
requests.

- notifications/alerts.py: send_email_alert (stdlib SMTP, STARTTLS/SSL),
  send_sms_alert (Twilio REST via httpx, no twilio SDK), send_push_alert
  (ntfy preferred, Pushover fallback), send_alert dispatcher, and a stdlib
  .env loader. Every call has a timeout, catches all errors and returns a
  NotificationResult instead of raising, and never logs/returns secrets.
- tools/notification_tools.py: notify_email / notify_sms / notify_push /
  notify (unified), all gated by the channel:send capability.
- .env.example: all required env vars with placeholders (git-ignored .env).
- test_notifications.py: runnable smoke test (one email + SMS + push), masks
  secrets and reports SKIP for unconfigured channels.
- Tests: 20 mocked unit tests (no network/secrets) covering success, provider
  errors, unconfigured failures, secret non-leakage, and tool registration.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant