{% extends "base.html" %} {% block title %}agentbridge monitor{% endblock %} {% block head_scripts %} {% endblock %} {% block page_styles %} :root { --dim: #929b9b; --accent-soft: rgba(22, 133, 117, 0.08); --danger-soft: #fff1f0; --warn-soft: #fff7ed; --blue: #286bd1; --shadow: 0 14px 40px rgba(18, 27, 27, 0.06); --sidebar-width: 360px; --topbar-bg: rgba(255, 255, 255, 0.94); } .app { grid-template-rows: var(--header-height) 1fr 32px; } .refresh-button, .action-button { height: 36px; border: 1px solid var(--border); border-radius: 7px; background: var(--surface); color: var(--muted); display: inline-flex; align-items: center; justify-content: center; gap: 7px; padding: 0 11px; text-decoration: none; cursor: pointer; } .refresh-button:hover, .action-button:hover { color: var(--text); background: var(--surface-muted); } .dashboard { min-height: 0; display: grid; grid-template-columns: var(--sidebar-width) 1fr; overflow: hidden; border-bottom: 1px solid var(--border); } .sidebar { min-width: 0; background: var(--surface); border-right: 1px solid var(--border); display: flex; flex-direction: column; overflow: hidden; } .filter-wrap { padding: 18px 16px 14px; border-bottom: 1px solid var(--border); } .filter-field { height: 42px; border: 1px solid var(--border); border-radius: 7px; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 8px; padding: 0 10px; background: var(--surface); } .filter-field svg { color: var(--muted); } #request-filter { width: 100%; border: 0; outline: 0; color: var(--text); background: transparent; font-size: 14px; } #request-filter::placeholder { color: var(--muted); } .kbd { min-width: 32px; height: 22px; border: 1px solid var(--border); border-radius: 5px; background: var(--surface-muted); color: var(--muted); display: inline-flex; align-items: center; justify-content: center; font-family: var(--mono); font-size: 11px; } #request-list { flex: 1; min-height: 0; overflow-y: auto; padding: 14px 10px 18px; } .request-list-title { margin: 0 2px 10px; color: var(--text); font-size: 14px; font-weight: 700; } .request-group { margin-top: 16px; } .request-group:first-of-type { margin-top: 0; } .request-group-title { margin: 0 2px 8px; display: flex; align-items: center; gap: 7px; color: var(--text); font-size: 13px; font-weight: 650; } .request-group-title svg { width: 14px; height: 14px; color: var(--muted); } .request-row { width: 100%; min-height: 62px; display: grid; grid-template-columns: 1fr auto; gap: 10px; align-items: center; padding: 9px 10px; border: 1px solid transparent; border-left: 3px solid transparent; border-radius: 7px; color: var(--text); cursor: pointer; transition: background 0.12s ease, border-color 0.12s ease; } .request-row:hover { background: var(--surface-muted); } .request-row.active, .request-row-active { background: var(--accent-soft); border-color: rgba(22, 133, 117, 0.22); border-left-color: var(--accent); } .request-main { min-width: 0; } .request-title { min-width: 0; display: flex; align-items: center; gap: 8px; font-weight: 700; } .request-id { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-family: var(--mono); font-size: 13px; } .request-model { margin-top: 4px; color: var(--muted); font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .request-metrics { color: var(--muted); font-family: var(--mono); font-size: 12px; text-align: right; line-height: 1.55; white-space: nowrap; } .status-dot { flex: none; width: 8px; height: 8px; border-radius: 50%; background: var(--dim); } .status-dot.streaming { border: 2px solid #2186ff; border-top-color: transparent; background: transparent; animation: spin 1s linear infinite; } .status-dot.error { background: #df2f27; } .status-dot.idle { background: var(--ok); } .badge { flex: none; border-radius: 5px; padding: 3px 7px; font-size: 11px; font-weight: 700; line-height: 1; text-transform: uppercase; letter-spacing: 0; } .badge-ok { color: var(--accent-strong); background: rgba(22, 133, 117, 0.08); border: 1px solid rgba(22, 133, 117, 0.22); } .badge-err { color: var(--danger); background: rgba(180, 35, 24, 0.08); border: 1px solid rgba(180, 35, 24, 0.18); } .badge-active { color: #126bd8; background: rgba(33, 134, 255, 0.08); border: 1px solid rgba(33, 134, 255, 0.18); } .badge-model { color: var(--muted); background: var(--surface-muted); border: 1px solid var(--border); text-transform: none; font-weight: 550; } .detail-panel { min-width: 0; overflow-y: auto; padding: 22px 20px 20px; } .detail-empty { height: 100%; display: grid; place-items: center; color: var(--muted); text-align: center; } .detail-empty h3 { margin: 0 0 6px; color: var(--text); font-size: 18px; } .detail-shell { display: flex; flex-direction: column; gap: 18px; } .detail-header { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 14px; } .request-icon { width: 42px; height: 42px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface); display: grid; place-items: center; color: var(--text); } .detail-heading { min-width: 0; } .detail-heading h3 { margin: 0; display: flex; align-items: center; gap: 10px; color: var(--text); font-family: var(--mono); font-size: 18px; line-height: 1.3; overflow-wrap: anywhere; } .detail-subline { margin-top: 6px; color: var(--muted); display: flex; flex-wrap: wrap; gap: 12px; font-size: 13px; } .detail-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; } .meta-grid { display: grid; grid-template-columns: 1fr 1.45fr 1.45fr 0.9fr 1fr 1.05fr 0.95fr; gap: 0; border: 1px solid var(--border); border-radius: 8px; background: var(--surface); overflow: hidden; } .meta-item { min-width: 0; padding: 15px 16px; border-right: 1px solid var(--border); } .meta-item:last-child { border-right: 0; } .meta-label { color: var(--muted); font-size: 12px; margin-bottom: 7px; } .meta-value { color: var(--text); font-size: 14px; overflow-wrap: anywhere; } .detail-grid { display: grid; grid-template-columns: minmax(320px, 0.9fr) minmax(360px, 1.1fr); gap: 12px; align-items: start; } .panel { min-width: 0; border: 1px solid var(--border); border-radius: 8px; background: var(--surface); overflow: hidden; } .panel-header { min-height: 50px; display: flex; align-items: center; justify-content: space-between; gap: 12px; border-bottom: 1px solid var(--border); padding: 0 16px; } .panel-title { display: flex; align-items: center; gap: 8px; color: var(--text); font-weight: 700; } .count-pill { min-width: 22px; height: 22px; display: inline-flex; align-items: center; justify-content: center; border-radius: 6px; background: var(--surface-muted); color: var(--muted); font-size: 12px; font-weight: 650; } .panel-body { padding: 14px; } .message { border: 1px solid var(--border); border-radius: 8px; background: var(--surface); margin: 0 0 12px; overflow: hidden; } .message:last-child { margin-bottom: 0; } .message summary { cursor: pointer; list-style: none; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 14px; color: var(--accent-strong); font-size: 12px; font-weight: 750; text-transform: uppercase; } .message summary::-webkit-details-marker { display: none; } .message pre, .response-pre, #stream-output, .error-pre { margin: 0; white-space: pre-wrap; word-break: break-word; font-family: var(--mono); font-size: 12px; line-height: 1.55; color: #243030; background: #fbfbfb; border: 1px solid var(--border); border-radius: 7px; padding: 12px; max-height: 320px; overflow: auto; } .message pre { margin: 0 14px 14px; } .live-stream { margin-top: 14px; border-top: 1px solid var(--border); padding-top: 14px; } .live-stream-title { display: flex; align-items: center; gap: 8px; color: var(--text); font-weight: 700; margin-bottom: 8px; } .error-card { border: 1px solid #f04438; border-radius: 8px; background: var(--danger-soft); padding: 16px; min-height: 410px; } .error-card-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; margin-bottom: 14px; } .error-title { display: flex; gap: 10px; color: var(--danger); font-weight: 750; font-size: 16px; } .error-title small { display: block; margin-top: 4px; color: var(--text); font-weight: 500; } .error-actions { display: flex; gap: 8px; } .error-pre { border-color: var(--danger-border); background: rgba(255, 255, 255, 0.64); max-height: 430px; } .empty-state { margin: 0; color: var(--muted); font-size: 13px; } .json-key { color: var(--blue); } .json-string { color: var(--accent-strong); } .json-number { color: var(--warn); } .json-bool { color: #7c3aed; } .json-null { color: var(--dim); } .json-brace { color: var(--muted); } .json-colon { color: var(--dim); } .footer-status { height: 32px; display: flex; align-items: center; gap: 8px; padding: 0 20px; color: var(--muted); background: var(--surface); font-size: 13px; } .footer-status .status-dot { background: var(--ok); } .pool-status { height: 42px; display: inline-flex; align-items: center; gap: 12px; border: 1px solid var(--border); border-radius: 7px; background: var(--surface); padding: 0 12px; } .pool-health { height: 28px; display: inline-flex; align-items: center; gap: 8px; border: 1px solid rgba(22, 133, 117, 0.18); border-radius: 6px; background: rgba(22, 133, 117, 0.06); color: var(--accent-strong); padding: 0 9px; font-weight: 650; } .pool-health.error { border-color: var(--danger-border); background: var(--danger-soft); color: var(--danger); } .pool-dot { flex: none; width: 8px; height: 8px; border-radius: 50%; background: var(--border); } .pool-dot.available { background: var(--ok); } .pool-dot.empty { background: var(--border); } .pool-count { color: var(--text); white-space: nowrap; } ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: #ccd5d5; border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: #aebaba; } @keyframes spin { to { transform: rotate(360deg); } } @keyframes fadeIn { from { opacity: 0; transform: translateY(2px); } to { opacity: 1; transform: translateY(0); } } .detail-panel > * { animation: fadeIn 0.15s ease-out; } @media (max-width: 980px) { :root { --sidebar-width: 300px; } header { grid-template-columns: 1fr; height: auto; min-height: var(--header-height); padding: 12px 14px; } .app { grid-template-rows: auto 1fr 32px; } .main-nav, .header-actions { justify-self: stretch; } .header-actions { justify-content: space-between; } .meta-grid, .detail-grid { grid-template-columns: 1fr; } .meta-item { border-right: 0; border-bottom: 1px solid var(--border); } .meta-item:last-child { border-bottom: 0; } } @media (max-width: 760px) { html, body { overflow: auto; } .app { min-height: 100vh; height: auto; } .dashboard { grid-template-columns: 1fr; } .sidebar { max-height: 50vh; border-right: 0; border-bottom: 1px solid var(--border); } .detail-header { grid-template-columns: 1fr; } .detail-actions { justify-content: flex-start; } .nav-item { min-width: 0; flex: 1; } } {% endblock %} {% block header_actions %}
{% endblock %} {% block content %}

Request Detail

Click a request to view details

{% endblock %} {% block scripts %} {% endblock %}