5fe8f228c1
Add a read-only /ecosystem page that consumes the sibling services' JSON APIs (Nexus entities, Praxis attention, Hexis capabilities), fetched concurrently with honest per-panel error states. Siblings stay headless — mavweb is their human surface (arch §16). Wired via mavweb -nexus/-praxis/-hexis flags; mavweb joins the ecosystem compose network. Fix mobile horizontal overflow across all pages: .content is a flex child with default min-width:auto, so it refused to shrink below the tables' intrinsic width. min-width:0 lets wide tables pan inside .scroll instead of dragging the page sideways. Verified via CDP geometry check (scrollWidth === clientWidth at 430px). Also includes in-progress Ethos UI redesign, ecosystem deploy compose, and planning docs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2.3 KiB
2.3 KiB
Plan: Background Pattern Detection & Proactive Proposal
Goal: Maven continuously monitors facts written to the store, detects recurring patterns (behavioral, operational, temporal), and proposes new routines, reminders, or config changes back to the user via the existing ProposedRoutine / tool-proposal mechanism.
Done when:
- Background analyzer reads
RecentFactsandEventson a slow cadence (every 10min, not every tick) - New patterns beyond the existing action-lexicon
internal/pattern/extractor.go— e.g. time-of-day correlations, service-down + user-awake sequences, repeated tool invocations - Proposals land as
ProposedRoutinerows in the store (reusingstore.CreateProposedRoutine) orProposeToolcalls - User confirms via voice or mavweb — existing
pendingRoutineConfirm/resolveConfirmpath re-used - False-positive rate measured and acceptable (proposals are parked, never auto-enabled)
Scope:
- New
internal/analyzer/package — runs on a separate ticker (10-30min), reads fromipc.CoreAPI(or directstore.Storefor performance) - Extends
internal/pattern/detector with multi-signal patterns (not just action+object interval) - Reuses existing
store.Events,store.ProposedRoutine,store.Toolstables - Daemon wiring: new
analyzergoroutine incmd/mavend/main.goalongside tick loop
Steps:
- Create
internal/analyzer/with periodic scan —Analyzer.Run(ctx)goroutine - Implement new detectors:
- Time-of-day behavioral patterns ("you always water plants at 9pm" → remind at 8:45pm)
- Service-down + user-present correlation ("service X died while you were away, you fixed it when you sat down" → propose auto-remediation tool)
- Repeated tool use patterns ("you restart plex every Tuesday" → propose a routine)
- Register proposals via existing
store.CreateProposedRoutine(reusesinternal/voice/reactiveHandler:detectPatternpattern) andipc.ProposeTool - Wire analyzer goroutine in
cmd/mavend/main.go— starts after unlock alongsidetl.run(ctx) - Add
analyzer_intervaltoconfig.Config(default 10min) - Add voice confirm path — proposals detected in background trigger a nudge with a yes/no prompt, reusing
pendingRoutineConfirmfromcmd/mavend/voice.go:resolveConfirm - Test with seeded events in
internal/store/events_test.gopattern