feat(devices): multi-device task claiming — only the winning device executes a task
mo
c9ee91e
- #pollTasks checks the claim response: claimed:false (another device won
the race) skips execution instead of double-running the task
- pairs with the cloud-side device registry: agents get device_id, tasks
are filtered per device, runs trace the executing device
- 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)
docs: enterprise documentation suite — compliance mappings (CRA, ISO 27001, IEC 62443), threat model, data flow, audit & deployment guides, SBOM, use cases, security.txt
mo
5c5b617
- new docs/additional-documents/: COMPLIANCE, CRA-READINESS, ISO-27001-MAPPING, IEC-62443, THREAT-MODEL, DATA-FLOW, SECURITY-AUDIT, DEPLOYMENT-GUIDE, ENTERPRISE-FAQ, SBOM
- docs/USE-CASES.md, docs/.well-known/security.txt
- docs index + README link the additional documents section
- CHANGELOG v2.2.0 entry; versions: root 2.2.0, desktop 1.4.1
feat(agent): agentic execution loop — the agent that acts
mo
181b8c1
Tasks from the dashboard now flow through a cloud task queue; the
device claims them within seconds and runs the full loop: the
mona.expert brain plans (think), the device executes local tools
(act), results stream back (observe), and the answer lands in the
conversation (deliver). Up to 8 tool steps per task, live execution
trace in the dashboard feed, zero inbound ports.
- agent.js: task poller (2s) + agentic loop with tool-call parsing
- cloud.js: pollTasks / claimTask / taskResult / postActivity
- provider-agnostic tool protocol: plain text or one JSON tool call
- docs: execution loop in ARCHITECTURE + README, CHANGELOG 2.1.0
- version bump: 2.1.0
- 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