towerops/priv
Graham McIntire fd235d05b7 feat(insights): AI surfaces its own observations from full network state
Adds a parallel LLM path that reviews the whole org snapshot — Preseem
APs, SNMP signals, backhaul, agents, and the insight types the rules
already covered — and emits novel observations as ai_observation
insights (source=ai). Existing rule-based insights and per-insight
enrichment continue unchanged.

- lib/towerops/llm/network_snapshot.ex builds the bounded snapshot
- lib/towerops/llm/network_insight_prompt.ex builds the prompt and
  parses the LLM's JSON observations array
- lib/towerops/workers/ai_network_insight_worker.ex runs nightly at
  03:30 UTC (after the rule pass + per-insight enrichment) and on
  the superuser regenerate button
- preseem/insight.ex extends @valid_types with "ai_observation" and
  @valid_sources with "ai"
- insights_live/index.ex includes the new worker in the regen list
  and adds an "AI" source badge style

Bumps the SnmpKit Manager timeout-options test threshold from 500ms
to 3000ms (was flaking on loaded dev machines), and scopes
list_unenriched_insights/1 assertion in insights_test:573 to the
test's org so cross-suite leaks don't fail the count.
2026-05-10 14:29:56 -05:00
..
antennas feat: 198 real vendor .msi antenna patterns + Leaflet auto-load 2026-05-06 15:09:29 -05:00
gettext fix: nav overflow on small screens and fix bad gettext translations 2026-03-11 14:00:31 -05:00
mibs mib update from librenms 2026-01-28 13:38:31 -06:00
profiles fix(snmp): auto-rescale implausible temperature readings 2026-05-10 12:21:24 -05:00
proto chore: migrate agent repo references from GitHub to Codeberg 2026-05-07 07:44:48 -05:00
repo refactor(llm): split token tracking into a dedicated llm_usage table 2026-05-10 13:13:52 -05:00
static feat(insights): AI surfaces its own observations from full network state 2026-05-10 14:29:56 -05:00