19 Commits

Author SHA1 Message Date
5cf8b71915 docs(changelog): add B1/B2 debug fixes + Copilot token refresh
- B1 Media Library Sync: 7 iterazioni di fix (exec 345→360)
  Token Copilot: genericCredential→predefined + POST→GET
  GPT-4.1: method+headers+body mancanti
  Apostrofi SQL: Code node Prepara Detail
  ON CONFLICT partial index syntax (WHERE source_ref IS NOT NULL)
  SplitInBatches v3: output[1] per loop body
  Qdrant payload: Code node Prepara Qdrant
- B2 Watch History Sync: fix preventivi da pattern B1, exec 362 
- GitHub Copilot device flow token refresh (user_code 559F-1D14)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-21 20:33:33 +00:00
734a1a9440 feat(flows):allineamento filtri 2026-03-21 20:30:54 +00:00
8394861bb3 Merge branch 'main' of https://git.mt-home.uk/martin/Alpha 2026-03-21 20:52:03 +01:00
b47824c15f feat(alexa-skill): implementata aws-lambda e alexa-skill per invocazione webhook n8n 2026-03-21 20:50:02 +01:00
c5a8bec2c2 docs: CHANGELOG refactor - Media Agent entry espansa e deduplicata
- Entry Blocco A+B riscritta con flusso dettagliato, tabella bug fix,
  note infrastruttura Radarr/Sonarr/Jellyfin/Ollama
- Rimossa sezione duplicata 'Jellyfin Playback Agent Blocco A'
  (assorbita nell'entry principale)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-21 19:03:56 +00:00
afc182292a feat: Media Agent Blocco A+B + Calendar Agent fix
Blocco A — Jellyfin Playback Agent (AyrKWvboPldzZPsM):
- Webhook PlaybackStart/Stop → behavioral_context + agent_messages
- Fix: JSON.parse Jellyfin body, SSL Patroni, Postgres queryParams inline

Blocco B1 — Media Library Sync (o3uM1xDLTAKw4D6E):
- Weekly cron: Radarr+Sonarr → GPT-4.1 → memory_facts + Qdrant
- Qdrant collection media_preferences creata (768-dim nomic-embed-text)

Blocco B2 — Jellyfin Watch History Sync (K07e4PPANXDkmQsr):
- Daily cron: Jellyfin history (90d) → GPT-4.1 → memory_facts
- Jellyfin API token Pompeo creato via admin auth

Calendar Agent fix (4ZIEGck9n4l5qaDt):
- Cleanup: filter(i=>i.json.uid) per evitare undefined non quotato in SQL
- Salva Evento: rimosso updated_at=NOW() (colonna non esistente)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-21 18:51:11 +00:00
a145c0126c feat(paperless): add memory persistence — Ollama embed + Qdrant + Postgres
- Parallel branch from Paperless Patch Metadati
- nomic-embed-text (768 dim) via Ollama for OCR text embedding
- Qdrant knowledge collection upsert with full doc metadata payload
- memory_facts upsert with source=paperless, dedup by paperless-{doc_id}
- Qdrant collections recreated at 768 dim (were 1536 legacy, 0 points)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-21 18:37:52 +00:00
aa4a2e8ae7 feat(digest): add memory persistence step to Daily Digest
- Parallel branch: Estrai Fatti (GPT) → Upsert Memoria (Postgres)
- Extracts structured facts from non-trash emails with pompeo_note + entity_refs
- Upserts into memory_facts with thread dedup via memory_facts_dedup_idx
- Fix: added newer_than:1d filter to Gmail fetch nodes

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-21 17:29:52 +00:00
95ac871a71 feat(media): Jellyfin Playback Agent Blocco A + fix SSL/webhook/queryParams
- Workflow AyrKWvboPldzZPsM: PlaybackStart/Stop → behavioral_context + agent_messages
- Fix: webhookId top-level nel nodo per path statico in n8n queue mode
- Fix: NODE_TLS_REJECT_UNAUTHORIZED=0 su n8n-app/worker per Patroni self-signed cert
- Fix: inline SQL expressions invece di additionalFields.queryParams (n8n v2.5.2 bug)
- Fix: Calendar Agent stesso set di fix (SSL + queryParams)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-21 17:11:20 +00:00
70b668954e feat(db): schema v2 — contacts, memory_facts_archive, entity_refs, pompeo_note
- New table: contacts (multi-tenant person graph with aliases, details, GIN indexes)
- New table: memory_facts_archive (expired facts cleanup destination)
- memory_facts: added pompeo_note TEXT and entity_refs JSONB columns
- Applied live to Patroni primary (postgres-1, namespace persistence, DB pompeo)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-21 15:43:46 +00:00
668210694f docs: add Actual Budget CSV import workflow to CHANGELOG
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-21 14:33:58 +00:00
7e86d6cb04 fix: Calendar Agent - upsert, cleanup cancellati, schedule 30min
- ON CONFLICT DO UPDATE: aggiorna subject/category/detail/expires_at se evento cambia
- Cleanup step: DELETE eventi non più in HA nella finestra 7gg (eventi cancellati)
- Schedule: */30 * * * * (ogni 30 min, prima era 06:30 daily)
- Flusso: Parse GPT → Cleanup → Riemetti → Postgres Upsert → Aggrega → Telegram

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-21 13:53:10 +00:00
90d9faacca feat: Calendar Agent + IoT Agent design + DB migration
- Deployed Calendar Agent (n8n ID: 4ZIEGck9n4l5qaDt)
  - 12 Google Calendars via HA proxy, cron 06:30
  - GPT-4.1 batch classification -> memory_facts
  - Telegram daily briefing
- DB: added source_ref column + dedup index on memory_facts
- DB: created ha_sensor_config table (IoT Agent sensor allowlist)
  - 9 seed entries (Pixel 10, Pixel Watch, EY HP, Spotify, GPS)
- README: full IoT Agent design documentation
  - Sensor allowlist (regex), LLM-based activity inference
  - Three-layer data flow, confidence-gated clarification
- README: Calendar Agent design + workflow diagram
- README: updated infra table, ADR broker, credentials
- CHANGELOG: Calendar Agent milestone

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-21 13:45:12 +00:00
841d3a93f6 Add Actual Budget import + reminder workflows to README
- 💰 Actual — Import Estratto Conto [Telegram] (qtvB3r0cgejyCxUp)
-  Actual — Reminder Estratto Conto [Schedule] (w0oJ1i6sESvaB5W1)
- 📄 Paperless — Upload Documento [Multi] (GBPFFq8rmbdFrNn9)
- Retired Upload Bolletta [Email] and Upload Documento [Telegram]
- Added Google Calendar credential to table (ZIVFNgI3esCKuYXc)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-21 12:22:39 +00:00
a6e286c9cb docs: ADR message broker — PostgreSQL + webhook n8n, no NATS/Redis Streams
Documenta la decisione architetturale di non deployare un broker dedicato.
agent_messages su Postgres copre il flow normale; webhook n8n diretto
gestisce il bypass high-priority.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-21 11:03:18 +00:00
adb36c0c48 feat: Phase 0 bootstrap — Qdrant deploy e schema PostgreSQL
- README.md: contesto ALPHA_PROJECT, architettura multi-agent, stack infrastrutturale
- CHANGELOG.md: documenta deploy Qdrant v1.17.0 e creazione database pompeo
- db/postgres.sql: schema DDL database pompeo (user_profile, memory_facts,
  finance_documents, behavioral_context, agent_messages) con multi-tenancy user_id
- db/qdrant.sh: script per creazione/ripristino collections Qdrant
  (episodes, knowledge, preferences) con payload indexes

Design decisions:
- Multi-tenancy via user_id su Qdrant e PostgreSQL (estendibile a nuovi utenti
  senza modifiche infrastrutturali)
- agent_messages come blackboard persistente per il Proactive Arbiter

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-21 10:55:39 +00:00
266d04f06d flows: ingest paperless 2026-03-21 10:49:19 +00:00
e4d523fce6 flows: credenziali e flusso di gmail digest 2026-03-21 10:43:15 +00:00
e257a6795f docs: add ALPHA_PROJECT system context 2026-03-21 00:10:52 +01:00