- loadMemoryContext(): inject ~/.mona-agent/memory notes into the system
prompt at task start (capped at 3KB, per-file 800 chars)
- Few-shot protocol examples in #toolsPrompt β two perfect exemplars of the
reasonβtool/answer JSON protocol
- Verification pass now routes to the strongest available model
(profile 'complex') regardless of the worker model β critic vs actor
- Uncertainty rule: 'If you cannot verify a fact with a tool, say so plainly
instead of guessing'
- 2 new tests for the parser upgrade paths (28/28 passing)
fix(parser): lenient answer salvage β no raw JSON leaks when the brain breaks JSON with unescaped quotes (e.g. German β..." quotes); 3 new tests
mo
d0f0aa1
feat(reasoning): deep reasoning engine β plan, act, reflect, verifyβ
mo
9b04a00
- reasoning protocol: brain replies with explicit reasoning JSON
({reasoning, tool, args} | {reasoning, answer} | plain text)
- parseBrainReply parser: tolerant to prose/fences/arrays, malformed JSON
triggers the corrective nudge instead of leaking raw JSON to users
- reflect phase: after every tool result the brain must decide whether the
goal is satisfied before acting again
- self-verification pass: the final answer is re-checked against the tool
evidence before it reaches the user (caught 'Hi RULESOK' = two words live)
- owner-tunable brain config from the cloud: maxSteps, temperature,
extraRules, verify toggle β delivered with the task queue
- agent system prompt now injected into device tasks
- temperature is forwarded to the LLM call (all 5 providers)
- 9 new parser tests (43/43 passing)
New capabilities, so every real-world request works end to end:
- tools/apps: launch and quit desktop applications, multi-OS
(macOS open/osascript, Linux gtk-launch/pkill, Windows start/taskkill)
- tools/browser: open URLs and run searches (YouTube, Google, web) in the
default browser, multi-OS; watch mode attempts autoplay via Safari
automation with a graceful fallback
- tools/shell: background mode β GUI apps, servers and tkinter windows
detach instead of dying with the 15s timeout
- agent prompt: explicit guidance for background execution and tkinter
windows, plus the never-give-up rule
- tests: 34 passing (8 new cases for URL building and validation)
Polish:
- professional tone across all text: emojis removed from docs, CLI,
installer and logs
- dashboard template: emoji-free labels, text action buttons
(Start / Stop / Delete instead of glyphs)
- Restructure daemon into apps/desktop/ (bin, src, test, install.sh, package.json)
- New packages: engine (remote brain client), protocol (typed messages)
- New apps/gateway/ β local control-plane gateway for Docker platform
- Replace platform/ dir and packages/providers with monorepo layout
- Database: new initial schema migration + seeds, drop legacy mysql schema.sql
- scripts: keygen/setup updates + check-invariants
- .env.example template (no secrets); sqlite as default DB driver
- control.js: #httpStats() β POST metrics to /api/v1/agent/stats every 10s,
metrics start in connect() independent of WS; skip WS reconnect loop when
server can't upgrade (Sngine/Hostinger), keep HTTPS metrics running
- Tests: 26/26 pass