From 0237fc3f84cc97ed4fc2118c85bf11bec81014a4 Mon Sep 17 00:00:00 2001 From: Archit Sharma Date: Fri, 9 Oct 2026 06:23:40 +0530 Subject: [PATCH] Open views on the window that has data; group duplicate issues; mark unchecked runs Found testing the deployed dashboard: a workspace whose last traffic was three weeks ago showed "No requests" on Home, Observe, Runs, Policies and every agent, because every view opened on the last 7 days. - GET /api/metrics/activity: the latest request and the smallest range (7d, 30d, 90d) that holds it. Views with no range in the URL redirect to it; Home and the Agents list use it directly and say which window. - Filter links keep the range explicit, so choosing 7d sticks. - Issues: identical issues are one row with a count (findings raised before fingerprints existed were never merged; ~30 duplicate rows in production). - Policies and Home: packs with no rules are not listed as "watching". - Runs: a run with no checks (telemetry only) reads "Not checked", not "Allowed"; the traces API returns `checks` per run. Co-Authored-By: Claude --- api/vendor/agentfox-0.3.1-py3-none-any.whl | Bin 1394804 -> 1395255 bytes .../app/(product)/app/agents/[slug]/page.tsx | 2 + dashboard/app/(product)/app/agents/page.tsx | 7 +++- dashboard/app/(product)/app/findings/page.tsx | 25 +++++++++++- dashboard/app/(product)/app/observe/page.tsx | 2 + dashboard/app/(product)/app/page.tsx | 19 +++++---- dashboard/app/(product)/app/policies/page.tsx | 5 ++- .../app/policies/rules/[ruleId]/page.tsx | 2 + dashboard/app/(product)/app/traces/page.tsx | 2 + dashboard/components/kit/FilterBar.tsx | 2 +- dashboard/components/kit/RunsTable.tsx | 8 +++- dashboard/lib/generated/reference/api.json | 37 +++++++++++++++++- dashboard/lib/product/observe.ts | 4 +- dashboard/lib/product/range.ts | 28 +++++++++++++ dashboard/lib/product/vocab.ts | 3 ++ .../vendor/agentfox-0.3.1-py3-none-any.whl | Bin 1394804 -> 1395255 bytes docs/architecture/api-spec.md | 3 +- src/agentfox/apps/gateway/routes/metrics.py | 32 ++++++++++++++- src/agentfox/platform/ledger/trace.py | 5 +++ tests/apps/gateway/test_metrics.py | 28 +++++++++++++ 20 files changed, 195 insertions(+), 19 deletions(-) create mode 100644 dashboard/lib/product/range.ts diff --git a/api/vendor/agentfox-0.3.1-py3-none-any.whl b/api/vendor/agentfox-0.3.1-py3-none-any.whl index 10582b0a527b317e93fca9c6fce6700c73071b11..db8814883be150eb15d44a267be3271028f96c2d 100644 GIT binary patch delta 33373 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 t.key === requested) ? requested! : "overview"; + if (["overview", "rules", "activity"].includes(tab)) await ensureRange(`/app/agents/${encodeURIComponent(slug)}`, sp, slug); const f: Filters = { range: rangeOf(sp.range), agent: slug }; let posture: any; diff --git a/dashboard/app/(product)/app/agents/page.tsx b/dashboard/app/(product)/app/agents/page.tsx index b7a3564b..5f289490 100644 --- a/dashboard/app/(product)/app/agents/page.tsx +++ b/dashboard/app/(product)/app/agents/page.tsx @@ -2,6 +2,8 @@ import type { Metadata } from "next"; import Link from "next/link"; import { appPageMetadata } from "@/lib/site"; import { api, apiErrorProps, safeApi } from "@/lib/product/api"; +import { activeRange } from "@/lib/product/range"; +import { RANGE_WORDS } from "@/lib/product/vocab"; import { ApiDown } from "@/components/ui"; import { Card, Dot, Empty, Header, Pill, StackBar, Tabs, ago, href, num, pctOf } from "@/components/kit"; import { Modal } from "@/components/product/Modal"; @@ -24,8 +26,9 @@ export default async function Agents({ searchParams }: { searchParams: Promise ); } + const { range } = await activeRange(); const [usage, findings] = await Promise.all([ - safeApi("/api/metrics/breakdown?dim=agent&range=7d", { rows: [] }), + safeApi(`/api/metrics/breakdown?dim=agent&range=${range}`, { rows: [] }), safeApi("/api/findings?status=open", { findings: [] }), ]); @@ -88,7 +91,7 @@ export default async function Agents({ searchParams }: { searchParams: PromiseAgent Owner Risk - Last 7 days + Last {RANGE_WORDS[range]} Requests Stopped Issues diff --git a/dashboard/app/(product)/app/findings/page.tsx b/dashboard/app/(product)/app/findings/page.tsx index d260b5e3..7f8b6d92 100644 --- a/dashboard/app/(product)/app/findings/page.tsx +++ b/dashboard/app/(product)/app/findings/page.tsx @@ -42,7 +42,7 @@ export default async function Issues({ searchParams }: { searchParams: Promise("/api/agents", { agents: [] }), Promise.all(STATUSES.map((s) => safeApi(`/api/findings?status=${s.key}&limit=500${sp.agent ? `&agent=${sp.agent}` : ""}`, { findings: [] }))), ]); - const rows = [...(data.findings || [])].sort( + const rows = group(data.findings || []).sort( (a, b) => severityRank(a.severity) - severityRank(b.severity) || String(b.last_seen_at).localeCompare(String(a.last_seen_at)), ); const keep = { agent: sp.agent, severity: sp.severity }; @@ -55,7 +55,7 @@ export default async function Issues({ searchParams }: { searchParams: Promise ({ key: s.key, label: s.label, - count: counts[i].findings?.length, + count: group(counts[i].findings || []).length, href: href("/app/findings", { ...keep, status: s.key === "open" ? undefined : s.key }), }))} /> @@ -107,3 +107,24 @@ export default async function Issues({ searchParams }: { searchParams: Promise ); } + +/** + * One row per problem. Issues raised before findings carried a fingerprint (Sept + * 2026) were never merged, so the same problem can appear as many rows; they are + * counted together here, linking to the most recent. + */ +function group(findings: any[]): any[] { + const byKey = new Map(); + for (const f of findings) { + const key = [f.type, f.title, f.agent_slug || "", f.subject_type || "", f.subject_id || "", f.status].join("|"); + const seen = byKey.get(key); + const at = String(f.last_seen_at || f.created_at || ""); + if (!seen) { + byKey.set(key, { ...f, occurrences: f.occurrences || 1 }); + continue; + } + seen.occurrences += f.occurrences || 1; + if (at > String(seen.last_seen_at || seen.created_at || "")) Object.assign(seen, { id: f.id, last_seen_at: at }); + } + return Array.from(byKey.values()); +} diff --git a/dashboard/app/(product)/app/observe/page.tsx b/dashboard/app/(product)/app/observe/page.tsx index 5b3d8734..f1608cee 100644 --- a/dashboard/app/(product)/app/observe/page.tsx +++ b/dashboard/app/(product)/app/observe/page.tsx @@ -21,6 +21,7 @@ import { } from "@/components/kit"; import { FilterBar } from "@/components/kit/FilterBar"; import { filtersFrom, metricsQs, observeTabs, runsHref, type Filters } from "@/lib/product/observe"; +import { ensureRange } from "@/lib/product/range"; import { CATEGORIES, categoryLabel, detectorName, dimLabel, ruleCategory, ruleTitle } from "@/lib/product/vocab"; export const metadata: Metadata = appPageMetadata("Observe"); @@ -30,6 +31,7 @@ type SP = Record; export default async function Observe({ searchParams }: { searchParams: Promise }) { const sp = await searchParams; + await ensureRange("/app/observe", sp); const f = filtersFrom(sp); const tab = ["breaks", "security", "review", "cost"].includes(sp.tab || "") ? sp.tab! : "overview"; diff --git a/dashboard/app/(product)/app/page.tsx b/dashboard/app/(product)/app/page.tsx index 787cc3b4..008c9f37 100644 --- a/dashboard/app/(product)/app/page.tsx +++ b/dashboard/app/(product)/app/page.tsx @@ -2,11 +2,12 @@ import type { Metadata } from "next"; import Link from "next/link"; import { appPageMetadata } from "@/lib/site"; import { safeApi } from "@/lib/product/api"; -import { Card, Dot, Empty, Grid, Header, Kpi, Pill, SeverityPill, StackBar, TimeChart, ago, num, pctOf } from "@/components/kit"; +import { Card, Dot, Empty, Grid, Header, Kpi, Pill, SeverityPill, StackBar, TimeChart, ago, href, num, pctOf } from "@/components/kit"; import { Countdown } from "@/components/product/Countdown"; import { SetupProgress } from "@/components/product/home/SetupProgress"; import { runsHref } from "@/lib/product/observe"; -import { severityRank } from "@/lib/product/vocab"; +import { activeRange } from "@/lib/product/range"; +import { RANGE_WORDS, severityRank } from "@/lib/product/vocab"; // `appPageMetadata`, not a literal: it also clears the canonical URL, so this page // does not declare itself a duplicate of the marketing home page. @@ -21,11 +22,13 @@ type SP = { review_notice?: string; review_error?: string }; */ export default async function Home({ searchParams }: { searchParams: Promise }) { const sp = await searchParams; - const f = { range: "7d" as const }; + // The week, or the smallest window that holds the latest traffic in a quiet workspace. + const { range, last } = await activeRange(); + const f = { range }; const [onboarding, summary, byAgent, agents, approvals, findings, policies] = await Promise.all([ safeApi("/api/onboarding", null), - safeApi("/api/metrics/summary?range=7d", null), - safeApi("/api/metrics/breakdown?dim=agent&range=7d", { rows: [] }), + safeApi(`/api/metrics/summary?range=${range}`, null), + safeApi(`/api/metrics/breakdown?dim=agent&range=${range}`, { rows: [] }), safeApi("/api/agents", { agents: [] }), safeApi("/api/approvals?status=pending", { approvals: [] }), safeApi("/api/findings?status=open&limit=200", { findings: [] }), @@ -41,11 +44,11 @@ export default async function Home({ searchParams }: { searchParams: Promise .sort((a: any, c: any) => severityRank(a.severity) - severityRank(c.severity)) .slice(0, 4); const agentName: Record = Object.fromEntries((agents.agents || []).map((a: any) => [a.id, a.name || a.slug])); - const watching = (policies.policies || []).filter((x: any) => x.mode === "observe"); + const watching = (policies.policies || []).filter((x: any) => x.mode === "observe" && x.rules > 0); const usage: Record = Object.fromEntries((byAgent.rows || []).map((r: any) => [r.key, r])); const live = (agents.agents || []).filter((a: any) => a.status !== "draft"); const max = Math.max(1, ...Object.values(usage).map((r: any) => r.requests)); - const noTraffic = !t.requests && !p.requests; + const noTraffic = !last; return ( <> @@ -114,7 +117,7 @@ export default async function Home({ searchParams }: { searchParams: Promise ) : ( <> - x.allowed + x.masked + x.held + x.blocked)} /> + x.allowed + x.masked + x.held + x.blocked)} /> x.blocked)} /> x.held)} /> diff --git a/dashboard/app/(product)/app/policies/page.tsx b/dashboard/app/(product)/app/policies/page.tsx index 8b12e168..64330f59 100644 --- a/dashboard/app/(product)/app/policies/page.tsx +++ b/dashboard/app/(product)/app/policies/page.tsx @@ -27,6 +27,7 @@ import { WorkspaceCode } from "@/components/product/policies/WorkspaceCode"; import { LegacyJudgmentTab, LegacyPacksTab, LegacyTuningTab } from "@/components/product/policies/legacy"; import { metricsQs, runsHref } from "@/lib/product/observe"; import { loadRules, ruleMode, type RuleInfo } from "@/lib/product/rules"; +import { ensureRange } from "@/lib/product/range"; import { CATEGORIES, categoryLabel, rangeOf, ruleCategory, ruleTitle } from "@/lib/product/vocab"; export const metadata: Metadata = appPageMetadata("Policies", "What your agents may do, and how well each rule is working."); @@ -59,6 +60,7 @@ export default async function Policies({ searchParams }: { searchParams: Promise const legacy = LEGACY[sp.tab || ""]; const tab = legacy?.tab || (TABS.some((t) => t.key === sp.tab) ? sp.tab! : "rules"); const sec = legacy?.sec || sp.sec; + if (tab === "rules" || tab === "performance") await ensureRange("/app/policies", sp); return ( <> @@ -110,7 +112,8 @@ async function RulesTab({ sp }: { sp: SP }) { - {packs.map((p) => ( + {/* A pack with no rules (a framework profile with nothing in it yet) decides nothing. */} + {packs.filter((p) => p.rules.length > 0).map((p) => (
{p.name} diff --git a/dashboard/app/(product)/app/policies/rules/[ruleId]/page.tsx b/dashboard/app/(product)/app/policies/rules/[ruleId]/page.tsx index a7f6d605..65375549 100644 --- a/dashboard/app/(product)/app/policies/rules/[ruleId]/page.tsx +++ b/dashboard/app/(product)/app/policies/rules/[ruleId]/page.tsx @@ -9,6 +9,7 @@ import { RuleTests } from "@/components/product/policies/RuleTests"; import { RuleTuner } from "@/components/product/policies/RuleTuner"; import { RANGE_DAYS, metricsQs, runsHref } from "@/lib/product/observe"; import { loadRules, ruleMode } from "@/lib/product/rules"; +import { ensureRange } from "@/lib/product/range"; import { categoryLabel, rangeOf, ruleCategory, ruleTitle } from "@/lib/product/vocab"; export const metadata: Metadata = appPageMetadata("Rule"); @@ -29,6 +30,7 @@ export default async function RulePage({ params, searchParams }: { params: Promi const ruleId = decodeURIComponent(raw); const sp = await searchParams; const tab = TABS.some((t) => t.key === sp.tab) ? sp.tab! : "overview"; + if (tab === "overview" || tab === "examples") await ensureRange(`/app/policies/rules/${encodeURIComponent(ruleId)}`, sp); const range = rangeOf(sp.range); const custom = ruleId.startsWith("custom."); diff --git a/dashboard/app/(product)/app/traces/page.tsx b/dashboard/app/(product)/app/traces/page.tsx index 6afa9440..f1dd707e 100644 --- a/dashboard/app/(product)/app/traces/page.tsx +++ b/dashboard/app/(product)/app/traces/page.tsx @@ -7,6 +7,7 @@ import { Card, Header, Tabs, href, when } from "@/components/kit"; import { FilterBar } from "@/components/kit/FilterBar"; import { RunsTable } from "@/components/kit/RunsTable"; import { RANGE_DAYS, filtersFrom, keep, metricsQs, observeTabs, verdictsFor } from "@/lib/product/observe"; +import { ensureRange } from "@/lib/product/range"; import { ruleTitle } from "@/lib/product/vocab"; export const metadata: Metadata = appPageMetadata("Runs"); @@ -24,6 +25,7 @@ const OUTCOME_CHIPS = [ export default async function Runs({ searchParams }: { searchParams: Promise }) { const sp = await searchParams; + await ensureRange("/app/traces", sp); const f = filtersFrom(sp); const errorsOnly = sp.errors === "1" || sp.outcome === "errors"; diff --git a/dashboard/components/kit/FilterBar.tsx b/dashboard/components/kit/FilterBar.tsx index 64a95f2c..7623102e 100644 --- a/dashboard/components/kit/FilterBar.tsx +++ b/dashboard/components/kit/FilterBar.tsx @@ -44,7 +44,7 @@ export function FilterBar({ type="button" className={current === r.key ? "active" : ""} aria-pressed={current === r.key} - onClick={() => set("range", r.key === defaultRange ? "" : r.key)} + onClick={() => set("range", r.key)} > {r.label} diff --git a/dashboard/components/kit/RunsTable.tsx b/dashboard/components/kit/RunsTable.tsx index 445cd2d8..aafbf939 100644 --- a/dashboard/components/kit/RunsTable.tsx +++ b/dashboard/components/kit/RunsTable.tsx @@ -45,7 +45,13 @@ export function RunsTable({ runs, showAgent = true }: { runs: any[]; showAgent?: - + {t.checks === 0 ? ( + + Not checked + + ) : ( + + )} {t.would_verdict && outcomeOf(t.verdict) === "allowed" && ( {WOULD[t.would_verdict]} diff --git a/dashboard/lib/generated/reference/api.json b/dashboard/lib/generated/reference/api.json index 6c5388ee..589bdc71 100644 --- a/dashboard/lib/generated/reference/api.json +++ b/dashboard/lib/generated/reference/api.json @@ -1,6 +1,6 @@ { "generated_by": "scripts/gen/docs_reference.py", - "count": 239, + "count": 240, "routes": [ { "method": "GET", @@ -5956,6 +5956,41 @@ ], "body": null }, + { + "method": "GET", + "path": "/api/metrics/activity", + "section": "metrics", + "audience": "operator", + "summary": "Activity", + "description": "", + "params": [ + { + "name": "agent", + "in": "query", + "required": false, + "type": null + }, + { + "name": "environment", + "in": "query", + "required": false, + "type": null + }, + { + "name": "authorization", + "in": "header", + "required": false, + "type": null + }, + { + "name": "x-agentfox-user", + "in": "header", + "required": false, + "type": null + } + ], + "body": null + }, { "method": "GET", "path": "/api/metrics/breakdown", diff --git a/dashboard/lib/product/observe.ts b/dashboard/lib/product/observe.ts index 8d19b089..4d2d19d7 100644 --- a/dashboard/lib/product/observe.ts +++ b/dashboard/lib/product/observe.ts @@ -17,7 +17,9 @@ export function metricsQs(f: Filters, extra: Record = {}): strin /** Filters carried from one view to the next, so switching tabs keeps them. */ export function keep(f: Filters): Record { - return { range: f.range === "7d" ? undefined : f.range, agent: f.agent, env: f.env }; + // Always explicit: a view with no range picks one from the data (`lib/product/range.ts`), + // so dropping "7d" here would send a reader who chose a week back to the data's window. + return { range: f.range, agent: f.agent, env: f.env }; } export const OBSERVE_TABS = [ diff --git a/dashboard/lib/product/range.ts b/dashboard/lib/product/range.ts new file mode 100644 index 00000000..76898a3c --- /dev/null +++ b/dashboard/lib/product/range.ts @@ -0,0 +1,28 @@ +import { redirect } from "next/navigation"; +import { href } from "@/components/kit"; +import { safeApi } from "@/lib/product/api"; +import type { RangeKey } from "@/lib/product/vocab"; + +type SP = Record; + +/** + * The range a view opens on when the URL names none: the smallest window that holds + * the latest traffic (a week at least), so a quiet workspace opens on its data + * rather than on an empty week. Asked of the gateway (`/api/metrics/activity`). + */ +export async function activeRange(agent?: string): Promise<{ range: RangeKey; last: string | null }> { + const q = agent ? `?agent=${encodeURIComponent(agent)}` : ""; + const a = await safeApi(`/api/metrics/activity${q}`, { range: "7d", last_request_at: null }); + return { range: (a.range || "7d") as RangeKey, last: a.last_request_at }; +} + +/** + * For a page whose numbers depend on the range: with no range in the URL, send the + * reader to the URL with the range that has data, so the filter bar, the links to + * other tabs and everything on the page agree on one window. + */ +export async function ensureRange(path: string, sp: SP, agent?: string): Promise { + if (sp.range) return; + const { range } = await activeRange(agent ?? sp.agent); + if (range !== "7d") redirect(href(path, { ...sp, range })); +} diff --git a/dashboard/lib/product/vocab.ts b/dashboard/lib/product/vocab.ts index d22697d8..60f87521 100644 --- a/dashboard/lib/product/vocab.ts +++ b/dashboard/lib/product/vocab.ts @@ -93,6 +93,9 @@ export const RANGES = [ export type RangeKey = (typeof RANGES)[number]["key"]; +/** A range in words, for labels: "Requests · 30 days". */ +export const RANGE_WORDS: Record = { "24h": "24 hours", "7d": "7 days", "30d": "30 days", "90d": "90 days" }; + export function rangeOf(value?: string | null): RangeKey { return (RANGES.find((r) => r.key === value)?.key || "7d") as RangeKey; } diff --git a/demo/redteam-live-lang/vendor/agentfox-0.3.1-py3-none-any.whl b/demo/redteam-live-lang/vendor/agentfox-0.3.1-py3-none-any.whl index 10582b0a527b317e93fca9c6fce6700c73071b11..db8814883be150eb15d44a267be3271028f96c2d 100644 GIT binary patch delta 33373 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 -239 operations, generated from the running app's OpenAPI document. Request and response schemas: `GET /openapi.json` or the interactive `/docs`. +240 operations, generated from the running app's OpenAPI document. Request and response schemas: `GET /openapi.json` or the interactive `/docs`. ### Inline enforcement (`/v1`) @@ -132,6 +132,7 @@ from the code. Regenerate after changing any route: | `GET` | `/api/memory` | List Entries | | `POST` | `/api/memory/{entry_id}/revoke` | Pull an entry immediately — the concrete fix for 'no way to find and | | `POST` | `/api/memory/{entry_id}/verify` | A human vouches for an entry — it stops decaying on the unverified TTL. | +| `GET` | `/api/metrics/activity` | Activity | | `GET` | `/api/metrics/breakdown` | Breakdown | | `GET` | `/api/metrics/errors` | Steps that failed — a tool that threw, a model call that errored — grouped. | | `GET` | `/api/metrics/rules` | How each rule behaved: fired, stopped something, or only watched. | diff --git a/src/agentfox/apps/gateway/routes/metrics.py b/src/agentfox/apps/gateway/routes/metrics.py index 75081375..1a2accff 100644 --- a/src/agentfox/apps/gateway/routes/metrics.py +++ b/src/agentfox/apps/gateway/routes/metrics.py @@ -11,6 +11,8 @@ * ``/breakdown`` — the same counts split by agent, environment, model, tool or surface * ``/rules`` — per rule: how often it fired, enforced vs only watching, trend * ``/errors`` — failed steps (tool and model errors), grouped +* ``/activity`` — when the last request was, and the smallest range that shows it, + so a view with no range chosen opens on data instead of an empty week Outcomes use the dashboard's four words, not the six verdicts: ``allowed``, ``masked`` (redact/mask/tokenize), ``held`` (escalate) and ``blocked``. @@ -23,7 +25,7 @@ from typing import Any from fastapi import APIRouter, Depends, HTTPException, Query -from sqlalchemy import select +from sqlalchemy import func, select from sqlalchemy.orm import Session from agentfox.apps.gateway.deps import current_user, db @@ -168,6 +170,34 @@ def _percentile(values: list[float], p: float) -> float: return round(values[k], 2) +@router.get("/activity") +def activity( + agent: str | None = None, + environment: str | None = None, + session: Session = Depends(db), + _user: User = Depends(current_user), +) -> dict[str, Any]: + q = select(func.max(Trace.started_at)) + if agent: + q = q.where(Trace.agent_slug == agent) + if environment: + q = q.where(Trace.environment == environment) + else: + q = q.where(Trace.environment != PLAYGROUND) + last = session.scalar(q) + if last is None: + return {"last_request_at": None, "range": "7d"} + age = dt.datetime.now(dt.UTC) - _aware(last) + # The smallest range from the default week up that contains it; past the + # longest, the longest. Never narrower than a week: recent traffic still + # reads better against its week than against one day. + fits = [k for k, (length, _step) in RANGES.items() if k != "24h" and age <= length] + return { + "last_request_at": _aware(last).isoformat(), + "range": fits[0] if fits else list(RANGES)[-1], + } + + @router.get("/summary") def summary( window: str = Query("7d", alias="range"), diff --git a/src/agentfox/platform/ledger/trace.py b/src/agentfox/platform/ledger/trace.py index 4fc46a64..ee5c01e4 100644 --- a/src/agentfox/platform/ledger/trace.py +++ b/src/agentfox/platform/ledger/trace.py @@ -371,6 +371,9 @@ def search_traces( fired: dict[str, list[str]] = {} tools: dict[str, list[str]] = {} surfaces: dict[str, list[str]] = {} + # How many checks ran. A run that reached us only as telemetry has none, and + # must not read as "allowed": nothing decided anything about it. + checks: dict[str, int] = {} # What a rule that is only watching would have done: the strongest effect among # fired rules in observe mode. A run that was allowed but would have been # blocked is the fact a team needs before switching a rule to enforce. @@ -380,6 +383,7 @@ def search_traces( for d in session.scalars( select(Decision).where(Decision.trace_id.in_({t.id for t in traces})) ): + checks[d.trace_id] = checks.get(d.trace_id, 0) + 1 for r in d.rules_fired_json or []: rid = r.get("rule_id") if isinstance(r, dict) else None if rid and rid not in fired.setdefault(d.trace_id, []): @@ -411,6 +415,7 @@ def search_traces( "tools": tools.get(t.id, []), "surfaces": surfaces.get(t.id, []), "would_verdict": would.get(t.id), + "checks": checks.get(t.id, 0), } for t in traces ] diff --git a/tests/apps/gateway/test_metrics.py b/tests/apps/gateway/test_metrics.py index 1df178ab..467aa06a 100644 --- a/tests/apps/gateway/test_metrics.py +++ b/tests/apps/gateway/test_metrics.py @@ -135,3 +135,31 @@ def test_playground_runs_are_excluded_unless_asked_for(client): "/api/traces?agent=metrics-bot&environment=playground", headers=ADMIN ).json()["traces"] assert len(played) == 1 + + +def test_activity_names_the_smallest_range_with_traffic(client): + from agentfox.core.db import session_scope + from agentfox.core.models import Trace + + old = dt.datetime.now(dt.UTC) - dt.timedelta(days=20) + with session_scope() as session: + session.add(Trace(agent_slug="old-bot", verdict="allow", started_at=old)) + session.add( + Trace(agent_slug="old-bot", verdict="allow", started_at=old, environment="playground") + ) + out = client.get("/api/metrics/activity?agent=old-bot", headers=ADMIN).json() + assert out["range"] == "30d" and out["last_request_at"].startswith(old.date().isoformat()) + assert client.get("/api/metrics/activity?agent=nobody", headers=ADMIN).json() == { + "last_request_at": None, + "range": "7d", + } + + +def test_a_run_with_no_checks_says_so(client): + from agentfox.core.db import session_scope + from agentfox.core.models import Trace + + with session_scope() as session: + session.add(Trace(agent_slug="otel-bot", verdict="allow")) + rows = client.get("/api/traces?agent=otel-bot", headers=ADMIN).json()["traces"] + assert rows and rows[0]["checks"] == 0