Spaces:
Runtime error
Runtime error
| title: "Monitoring & Costs β Navigation Structure" | |
| version: 3.8.6 | |
| lastUpdated: 2026-05-28 | |
| # Monitoring & Costs β Navigation Structure | |
| > Implemented in Group B (plan 16). See `src/shared/constants/sidebarVisibility.ts`. | |
| --- | |
| ## High-Level Navigation | |
| The dashboard sidebar (after Group B) has these top-level sections in order: | |
| ``` | |
| Home | |
| Providers | |
| Combos | |
| API Keys | |
| Settings | |
| Analytics | |
| Costs β NEW (Group B, plan 16) | |
| Monitoring β REORGANIZED (Group B, plan 16) | |
| ... | |
| ``` | |
| --- | |
| ## Costs section (new, level 1) | |
| Path prefix: `/dashboard/costs/` | |
| | Item | URL | Description | | |
| |------|-----|-------------| | |
| | Overview | `/dashboard/costs` | Aggregated cost dashboard (moved from Analytics) | | |
| | Pricing | `/dashboard/costs/pricing` | Per-model pricing table | | |
| | Budget | `/dashboard/costs/budget` | Budget thresholds + alerts | | |
| | Quota Sharing | `/dashboard/costs/quota-share` | Quota Share pools + usage | | |
| | Plan Config | `/dashboard/costs/quota-share/plans` | Per-provider plan overrides | | |
| **Rationale**: Pricing, Budget, and Quota Sharing were previously under | |
| `Monitoring > Costs Parameters`. Moving them to a dedicated top-level section | |
| makes them discoverable without navigating through observability tooling. | |
| --- | |
| ## Monitoring section (reorganized) | |
| The Monitoring section now has **Activity at the top** followed by **3 subgroups**: | |
| ``` | |
| Monitoring | |
| βββ Activity β Timeline feed (top-level item) | |
| βββ Logs group | |
| β βββ Logs (all) | |
| β βββ Proxy Logs | |
| β βββ Console Logs | |
| βββ Audit group | |
| β βββ Audit Log | |
| β βββ MCP Audit | |
| β βββ A2A Audit | |
| βββ System group | |
| βββ Health | |
| βββ Runtime | |
| ``` | |
| ### What changed from the old structure | |
| | Before | After | | |
| |--------|-------| | |
| | Activity = tab inside Logs that rendered the Audit Log | Activity = dedicated feed (`/dashboard/activity`) | | |
| | Costs Parameters group in Monitoring | Moved to Costs section | | |
| | Flat list: Logs, Activity (logs), Audit, Health, Runtime, Pricing, Budget, Quota | Structured 3-group + dedicated Costs section | | |
| --- | |
| ## Activity vs Audit Log | |
| These two are now distinct: | |
| | Dimension | Activity (`/dashboard/activity`) | Audit Log (`/dashboard/audit`) | | |
| |-----------|----------------------------------|-------------------------------| | |
| | **Purpose** | User-facing event feed ("what happened recently") | Compliance / security log | | |
| | **Data source** | `GET /api/compliance/audit-log?level=high` | `GET /api/compliance/audit-log?level=all` | | |
| | **Format** | Timeline, grouped by day, human-readable verbs + icons | Dense paginaged table, 50/page | | |
| | **Filters** | Event type category | Action, severity, actor, date range | | |
| | **Export** | Not available | JSON export | | |
| | **Actor filter** | Not applicable | Filterable by actor | | |
| | **Events shown** | High-level actions only (allowlist) | All audit events | | |
| ### High-Level Actions allowlist | |
| Defined in `src/lib/audit/highLevelActions.ts`. Controls which events appear in | |
| the Activity feed. The allowlist includes: | |
| - Provider add/remove/test events | |
| - Combo create/update/delete | |
| - API key lifecycle (create, revoke, rotate) | |
| - Budget threshold reached | |
| - Auth login/logout | |
| - Cloud agent session creation | |
| - MCP tool registration | |
| - Webhook create/delete | |
| - Quota pool/plan changes (`quota.*` actions, Group B) | |
| - Platform events (update, deploy) | |
| - Skill install/remove | |
| Events not in this list appear only in the Audit Log. | |
| ### Adding a new high-level action | |
| Edit `src/lib/audit/highLevelActions.ts` and add the action string to | |
| `HIGH_LEVEL_ACTIONS`. This requires a PR (the list is code, not DB-configurable). | |
| The corresponding icon can be added to `src/lib/audit/activityIcons.ts`. | |
| --- | |
| ## Redirect: `/dashboard/logs/activity` | |
| The old path `/dashboard/logs/activity` is permanently redirected (HTTP 308) to | |
| `/dashboard/activity` via `permanentRedirect()` in | |
| `src/app/(dashboard)/dashboard/logs/activity/page.tsx`. | |
| The legacy sidebar ID `logs-activity` is preserved in `HIDEABLE_SIDEBAR_ITEM_IDS` | |
| (but removed from `SIDEBAR_DEFINITIONS`) to avoid breaking user presets that | |
| reference the old ID. | |
| --- | |
| ## i18n | |
| Namespaces added by Group B: | |
| | Namespace key | Covers | | |
| |---------------|--------| | |
| | `sidebar.costsSection` | Costs section label | | |
| | `sidebar.activity` | Activity sidebar item | | |
| | `sidebar.logsGroup` | Logs subgroup label | | |
| | `sidebar.systemGroup` | System subgroup label | | |
| | `sidebar.costsOverview` | Costs overview item | | |
| | `activity.*` | All Activity page strings (title, verbs, filters, empty state) | | |
| Source-of-truth locales: `pt-BR` and `en`. All other 39 locales fall back to | |
| English via the `next-intl` fallback mechanism (configured in `src/i18n/config.ts`). | |