Metric Correlations
CI / test (push) Successful in 1m3s
Release rolling / release (push) Has been cancelled

This commit is contained in:
Raven Scott
2026-07-18 22:43:42 -04:00
parent 5396d9d499
commit 93a239e8ef
11 changed files with 1258 additions and 31 deletions
+21 -7
View File
@@ -14,6 +14,7 @@ import {
import { getStore } from '../services/store.js'
import { getCollector } from '../services/collector.js'
import { getAnomalyEngine } from '../services/anomaly.js'
import { computeWeights } from '../services/weights.js'
import { listAlerts, getAlert } from '../services/alerts.js'
import { getServerPublicKeyHex } from '../core/auth-keys.js'
import { formatAllMetrics } from './formatters.js'
@@ -156,14 +157,27 @@ export async function handleRest(pathname, query) {
return json(result)
}
// ── weights / q (stubs with useful MVP behavior) ─────────
// ── weights / metric correlations scoring ────────────────
if (path === '/api/v3/weights' || path === '/api/v2/weights' || path === '/api/v1/weights') {
return json(
getAnomalyEngine().getWeights({
chart: query.get('chart') || query.get('context') || undefined,
limit: Number(query.get('limit') || query.get('points') || 100) || 100,
})
)
const result = await computeWeights({
method: query.get('method') || undefined,
chart: query.get('chart') || query.get('context') || undefined,
charts: query.get('charts') || undefined,
contexts: query.get('contexts') || undefined,
dimensions: query.get('dimensions') || undefined,
after: query.get('after') ?? query.get('highlight_after') ?? undefined,
before: query.get('before') ?? query.get('highlight_before') ?? undefined,
baseline_after: query.get('baseline_after') || undefined,
baseline_before: query.get('baseline_before') || undefined,
points: query.get('points') || undefined,
limit: query.get('limit') || undefined,
timeout: query.get('timeout') || undefined,
time_group: query.get('time_group') || query.get('group') || undefined,
})
if (result.error) {
return { status: 400, contentType: 'application/json', body: JSON.stringify(result) }
}
return json(result)
}
if (path === '/api/v3/q' || path === '/api/v2/q') {
const q = (query.get('q') || query.get('query') || '').toLowerCase()