feat(tracker): Phase 1 plugin — Matrix + SQLite, rules-only
Sibling to journal/, implements the Community Organizer spec (docs/community-organizer-spec.md) over maubot: !add <text> freeform inbox capture; rules classify !task <text> [#tag…] explicit task !sidequest [#tag…] optional / passion-project item !remind in <N>(s|m|h|d) <text> chat-side timed reminder !done <id> close task or sidequest !list [type] query open items !setup add/remove per-room shortcut config One @command.passive dispatcher routes universal verbs to handlers and unknown verbs through the per-room shortcut table. Avoids the multi-line @command.new footgun (per ~/dev/CLAUDE.md) and lets shortcuts coexist with universal verbs without decorator priority games. Rules classifier (classify.py) is intentionally conservative — only buckets on clear shapes (buy keywords, past-tense markers, todo intent, remind prefixes); ambiguous capture lands in `!list inbox`. LLM fallback is Phase 2b on a dedicated inference node. Reminders (scheduler.py) replay from DB on bot start so restarts don't lose pending timers; missed-while-down stay open for query. `nostr_event_id` column reserved for Phase 2a — Matrix-local only for now. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
774cb44a4a
commit
b7a096a77a
6 changed files with 693 additions and 0 deletions
9
tracker/maubot.yaml
Normal file
9
tracker/maubot.yaml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
maubot: 0.1.0
|
||||
id: dev.aiolabs.tracker
|
||||
version: 0.1.0
|
||||
license: AGPL-3.0-or-later
|
||||
modules:
|
||||
- tracker
|
||||
main_class: TrackerBot
|
||||
database: true
|
||||
database_type: asyncpg
|
||||
Loading…
Add table
Add a link
Reference in a new issue