Phase 7: daily summary and read-only Hub API (AUD-73)

- internal/hub: project side of the frozen ask-contract. GET /capabilities,
  read-only POST /ask answerer (no LLM, <3s), and the outbound POST /notify
  client.
- internal/apprise: daily-summary delivery through the house Apprise API.
- internal/summary: deterministic plain-text daily summary builder.
- internal/store: CountByCategory, MessagesByCategory, and summary CRUD.
- internal/server: /capabilities and /ask (bearer-token protected), plus the
  Reports screen (/reports, build, send, delete).
- main.go: -summary, -summary-send, and -notify CLI entry points for n8n.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
2026-10-11 22:38:49 +11:00
parent c4213ebed1
commit a349b42b1f
24 changed files with 2454 additions and 1 deletions

View File

@@ -49,7 +49,19 @@ services:
OMNIROUTE_BASE_URL: ${OMNIROUTE_BASE_URL:-}
OMNIROUTE_API_KEY: ${OMNIROUTE_API_KEY:-}
OMNIROUTE_MODEL: ${OMNIROUTE_MODEL:-auto/best-chat}
# Phase 7 (FR-12): the Hub contract. HUB_TOKEN is the shared bearer token
# the Hub sends; /capabilities and /ask refuse an unsigned request.
HUB_TOKEN: ${HUB_TOKEN:-}
HUB_BASE_URL: ${HUB_BASE_URL:-http://192.168.20.13:8788}
HUB_NOTIFY_TIMEOUT: ${HUB_NOTIFY_TIMEOUT:-5s}
# Phase 7 (FR-10): daily summary delivery through the house Apprise API
# on .35. Set APPRISE_KEY (stored config) or APPRISE_URLS (stateless),
# and EMAIL_AGENT_SUMMARY_TO for the recipient.
APPRISE_URL: ${APPRISE_URL:-http://192.168.20.35:8210}
APPRISE_KEY: ${APPRISE_KEY:-}
APPRISE_URLS: ${APPRISE_URLS:-}
APPRISE_TOKEN: ${APPRISE_TOKEN:-}
EMAIL_AGENT_SUMMARY_TO: ${EMAIL_AGENT_SUMMARY_TO:-samuelrolfe@gmail.com}
volumes:
- email_agent_data:/data