feat: add application config overview and inline editing
Some checks failed
CI / cleanup-branch (push) Has been skipped
CI / build (push) Failing after 22s
CI / docker (push) Has been skipped
CI / deploy (push) Has been skipped
CI / deploy-feature (push) Has been skipped

Add admin page at /admin/appconfig with a DataTable showing all
application configurations. Inline dropdowns allow editing log level,
engine level, payload capture mode, and metrics toggle directly from
the table. Changes push to agents via SSE immediately.

Also adds a config bar on the AgentHealth page (/agents/:appId) for
per-application config management with the same 4 settings.

Backend: GET /api/v1/config list endpoint, findAll() on repository,
sensible defaults for logForwardingLevel/engineLevel/payloadCaptureMode.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
hsiegeln
2026-03-26 12:51:07 +01:00
parent 056a6f0ff5
commit b0484459a2
10 changed files with 409 additions and 2 deletions

View File

@@ -31,6 +31,68 @@
.routesWarning { color: var(--warning); }
.routesError { color: var(--error); }
/* Application config bar */
.configBar {
display: flex;
align-items: flex-end;
gap: 20px;
padding: 12px 16px;
margin-bottom: 16px;
background: var(--bg-surface);
border: 1px solid var(--border-subtle);
border-radius: var(--radius-lg);
box-shadow: var(--shadow-card);
}
.configField {
display: flex;
flex-direction: column;
gap: 4px;
}
.configLabel {
font-size: 10px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.5px;
color: var(--text-muted);
}
.configSelect {
padding: 5px 10px;
border: 1px solid var(--border-subtle);
border-radius: var(--radius-sm);
background: var(--bg-body);
color: var(--text-primary);
font-size: 12px;
font-family: var(--font-mono);
outline: none;
cursor: pointer;
}
.configSelect:focus {
border-color: var(--amber);
}
.configSelect:disabled {
opacity: 0.5;
cursor: not-allowed;
}
.configToggle {
display: flex;
align-items: center;
gap: 6px;
font-size: 12px;
font-family: var(--font-mono);
color: var(--text-secondary);
cursor: pointer;
}
.configToggle input {
accent-color: var(--amber);
cursor: pointer;
}
/* Section header */
.sectionTitle {