Add WhatsApp emoji reaction support — receive, send, store, and search reactions.
This skill adds emoji reaction support to NanoPilot's WhatsApp channel: receive and store reactions, send reactions from the container agent via MCP tool, and query reaction history from SQLite.
Check if src/status-tracker.ts exists:
test -f src/status-tracker.ts && echo "Already applied" || echo "Not applied"
If already applied, skip to Phase 3 (Verify).
git remote -v
If whatsapp is missing, add it:
git remote add whatsapp https://github.com/ridermw/nanopilot-whatsapp.git
git fetch whatsapp skill/reactions
git merge whatsapp/skill/reactions || {
git checkout --theirs package-lock.json
git add package-lock.json
git merge --continue
}
This adds:
scripts/migrate-reactions.ts (database migration for reactions table with composite PK and indexes)src/status-tracker.ts (forward-only emoji state machine for message lifecycle signaling, with persistence and retry)src/status-tracker.test.ts (unit tests for StatusTracker)container/skills/reactions/SKILL.md (agent-facing documentation for the react_to_message MCP tool)src/db.ts, src/channels/whatsapp.ts, src/types.ts, src/ipc.ts, src/index.ts, src/group-queue.ts, and container/agent-runner/src/ipc-mcp-stdio.tsnpx tsx scripts/migrate-reactions.ts
npm test
npm run build
All tests must pass and build must be clean before proceeding.
npm run build
Linux:
systemctl --user restart nanopilot
macOS:
launchctl kickstart -k gui/$(id -u)/com.nanopilot
sqlite3 store/messages.db "SELECT * FROM reactions ORDER BY timestamp DESC LIMIT 5;"
Ask the agent to react to a message via the react_to_message MCP tool. Check your phone — the reaction should appear on the message.
Failed to process reaction errorsstore/messages.db exists and is accessibleUnauthorized IPC reaction attempt blocked — the agent can only react in its own group's chat