Commit Graph

794 Commits

Author SHA1 Message Date
rcourtman 249df06149 Remove resource intelligence policy posture 2026-03-19 15:21:03 +00:00
rcourtman 8927ca7b78 Derive cloud summary routing from scope 2026-03-19 15:10:48 +00:00
rcourtman 33247d65c3 Normalize remaining graph residue 2026-03-19 14:41:52 +00:00
rcourtman 8e1f832364 Remove dead action plan topology field 2026-03-19 14:40:34 +00:00
rcourtman cc806171dc Trim dead resource graph surface 2026-03-19 14:26:30 +00:00
rcourtman 4eb78aec1e Remove dead capability and relationship endpoints 2026-03-19 11:30:01 +00:00
rcourtman 071da2c189 Centralize canonical resource metadata refresh 2026-03-19 05:33:25 +00:00
rcourtman 7c9eac5539 Centralize alert webhook mention metadata 2026-03-19 05:21:22 +00:00
rcourtman 98757dec63 Centralize alert webhook labels 2026-03-19 05:16:02 +00:00
rcourtman 5b538a005d Make agent lookup fallback fail closed 2026-03-19 04:46:02 +00:00
rcourtman c4c154efcf Route correlations through intelligence facade 2026-03-19 04:15:26 +00:00
rcourtman b8a77cf726 Route AI recent changes through canonical intelligence 2026-03-19 04:04:14 +00:00
rcourtman 6e10d9e1fc Centralize resource change filter parsing 2026-03-19 03:53:12 +00:00
rcourtman 7cf0fd24ea Expose resource correlations in intelligence drawer 2026-03-19 01:26:20 +00:00
rcourtman e55d57e630 Expose resource graph context 2026-03-19 01:19:46 +00:00
rcourtman 7e42773c2f Expose resource intelligence policy posture 2026-03-19 01:14:20 +00:00
rcourtman ad7388b591 Expose canonical policy posture summary 2026-03-19 01:08:48 +00:00
rcourtman 771f2a3e41 Add recent changes to intelligence summary 2026-03-19 00:18:28 +00:00
rcourtman 12e705df1e Expose recent changes in resource intelligence 2026-03-19 00:16:14 +00:00
rcourtman 261d4e8586 Expose adapter provenance counts in facet summaries 2026-03-18 23:40:59 +00:00
rcourtman 74e5301688 Expose provenance counts in facet summaries 2026-03-18 23:34:04 +00:00
rcourtman e1071d2ae0 Preserve related resources in all timeline changes 2026-03-18 23:21:48 +00:00
rcourtman 72fcfd01be Expose grouped timeline kind counts 2026-03-18 23:16:35 +00:00
rcourtman 6d45ce222a Classify incident anomalies 2026-03-18 23:08:04 +00:00
rcourtman 9e99193efd Classify canonical restart changes 2026-03-18 22:49:18 +00:00
rcourtman 7e6a85548f Preserve relationship endpoints in change timelines 2026-03-18 22:11:22 +00:00
rcourtman ac4d566d69 Cap unified audit list limits 2026-03-18 21:02:52 +00:00
rcourtman d07c567b46 Wire tenant resource provider at startup 2026-03-18 20:43:38 +00:00
rcourtman d6ad348dfa Validate source-adapter filters 2026-03-18 20:39:00 +00:00
rcourtman fc3cf0624b Index resource source-adapter filters 2026-03-18 20:36:32 +00:00
rcourtman 9c43a48ff0 Harden unified resource timeline filters 2026-03-18 20:29:30 +00:00
rcourtman 33b169334c Pin graph provenance in API proofs 2026-03-18 20:19:04 +00:00
rcourtman 181dba0548 Propagate unified facet counts 2026-03-18 18:36:49 +00:00
rcourtman dc63f86648 Add unified resource facet bundle endpoint 2026-03-18 18:28:57 +00:00
rcourtman 19a5aace70 Expose resource facets and timeline 2026-03-18 17:48:36 +00:00
rcourtman fae55976a5 Expose unified audit history 2026-03-18 17:44:21 +00:00
rcourtman f0520bc5e3 Persist unified resource timeline changes 2026-03-18 17:09:30 +00:00
rcourtman 778a2577b6 feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
rcourtman 8a43a964b6 fix(ai): wire patrol circuit breaker on first-time configure 2026-03-13 12:10:14 +00:00
rcourtman ae2edbde20 fix(ai): complete wiring on first-time configure; guard Ollama fallback
Three follow-up fixes:

1. RestartAIChat() now performs the full post-start wiring (MCP providers,
   patrol adapter, investigation orchestrator) when the service starts for
   the first time via Restart(). Previously these were only wired via
   StartAIChat(), leaving first-time configure with a partially wired service.

2. The Ollama→OpenAI-compatible fallback in createProviderForModel is now
   guarded by !strings.HasPrefix(modelStr, "ollama:") so explicit
   "ollama:llama3" models are never silently rerouted to a different provider.

3. Windows install script registration check now uses the $Hostname override
   (if set) instead of always looking up $env:COMPUTERNAME, so post-install
   verification works correctly when a custom hostname is specified.
2026-03-13 12:06:08 +00:00
rcourtman e137f3fbf7 fix(ai): start chat service on first-time configure without restart
When Pulse starts before AI is configured, legacyService is nil.
Saving AI settings called Restart() which bailed immediately on the
nil check, leaving the service unstarted (503 on /api/ai/sessions)
until a full process restart.

Merged the nil and !IsRunning checks so first-time configure now
starts the service inline, same as the already-handled stopped case.

Also: bare model names that ParseModelString routes to Ollama (e.g.
"qwen3-omni") now fall back to a configured custom OpenAI base URL
when Ollama is not explicitly configured — handles manually-typed
model names on self-hosted OpenAI-compatible endpoints.

Fixes #1339, #1296
2026-03-13 11:13:27 +00:00
rcourtman 1a582ccc35 fix(diagnostics): honor PVE fingerprint in diagnostics probe 2026-03-10 22:46:12 +00:00
rcourtman a4b0771974 Prevent removed host agents from resurrecting via in-flight reports (#1331)
Host agents removed from the UI would reappear on the next report cycle
because there was no rejection mechanism — unlike Docker agents which
already had resurrection prevention. Mirror the Docker agent pattern:

- Track removed host IDs in a `removedHosts` map with 24hr TTL
- Persist removal records in `State.RemovedHosts` for frontend display
- Reject reports from removed hosts in `ApplyHostReport()`
- Add `AllowHostReenroll()` + API route to clear the block
- Show removed host agents in the Settings UI with "Allow re-enroll"
- Sync removed-agent maps from state on startup for all agent types
- Fix mock integration snapshot missing `RemovedDockerHosts` field
2026-03-09 17:52:34 +00:00
rcourtman 9b531c547d Fix recovery notifications silently disabled by config PUT (#1332)
Two fixes for missing recovery/resolved notifications:

1. API config PUT handler now preserves notifyOnResolve when the client
   omits it from the request body. Go decodes a missing bool as false,
   which silently disabled recovery notifications on older clients.

2. CancelAlert now always cleans up the cooldown record even when the
   alert has already left the pending buffer, preventing stale cooldown
   entries from suppressing future alert cycles.
2026-03-09 11:28:28 +00:00
rcourtman 572520ebc6 Promote guest-agent /proc/meminfo fallback for accurate VM memory (#1270)
Move the guest-agent file-read of /proc/meminfo earlier in the memory
fallback chain so it runs before RRD, giving real-time MemAvailable that
correctly excludes reclaimable buff/cache on Linux VMs. Also add
VM.GuestAgent.FileRead permission for PVE 9 and fix install.sh to use
comma-separated privilege strings.
2026-03-09 10:04:28 +00:00
rcourtman 45b5c8a861 Restore previous license on persistence failure instead of clearing it
If license save fails, the in-memory license was being cleared, which
could drop a valid existing license. Now snapshots the current license
before activation and restores it if persistence fails.
2026-03-08 11:49:26 +00:00
rcourtman fe0706f614 Fix cluster double-registration invalidating Proxmox credentials (#1319)
Two nodes in the same PVE cluster generated identical Proxmox API token
names, so the second node's setup rotated the shared token and broke the
first node. Include the hostname in the token name so each node gets its
own token. Also refresh the stored cluster credential on the server when
a new endpoint merges into an existing cluster entry.
2026-03-07 22:36:01 +00:00
rcourtman 0dd3fc779b Fix alert disable notification suppression 2026-03-07 18:40:08 +00:00
rcourtman d6e8bffaeb pulse/license upgrade safety hardening 2026-03-07 15:13:09 +00:00
rcourtman a6f6f66078 Improve auto-register auth errors and setup token grace window (#1319)
The /api/auto-register endpoint returned a generic "Invalid or expired
setup code" for all auth failures, making cluster registration issues
impossible to diagnose. Now returns specific errors for expired tokens,
wrong scope, invalid API tokens, etc.

Also extend the setup token grace window to /api/auto-register so
multiple cluster nodes can register with the same token within the
1-minute grace period after first use.
2026-03-07 13:39:26 +00:00