<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="Content-Security-Policy"
content="default-src 'none';
script-src 'unsafe-inline';
style-src 'unsafe-inline';
img-src data: blob:;">
<title>{{TITLE}}</title>
<style>
{{CSS}}
/* Briefing-specific styles */
.briefing-header {
margin-bottom: var(--daemon-space-lg);
}
.briefing-header__title {
display: flex;
align-items: center;
gap: var(--daemon-space-md);
margin-bottom: var(--daemon-space-sm);
}
.briefing-header__status {
display: flex;
align-items: center;
gap: var(--daemon-space-sm);
color: var(--daemon-text-muted);
font-size: 0.875rem;
}
.briefing-header__status--ready {
color: var(--daemon-success);
}
.briefing-message {
background-color: var(--daemon-bg-alt);
border-left: 3px solid var(--daemon-accent);
padding: var(--daemon-space-md);
margin-bottom: var(--daemon-space-lg);
font-size: 0.875rem;
line-height: 1.6;
white-space: pre-wrap;
}
.decision-item {
display: flex;
flex-direction: column;
gap: var(--daemon-space-xs);
padding: var(--daemon-space-sm) 0;
border-bottom: var(--daemon-border);
}
.decision-item:last-child {
border-bottom: none;
}
.decision-item__header {
display: flex;
align-items: center;
gap: var(--daemon-space-sm);
}
.decision-item__content {
color: var(--daemon-text);
font-size: 0.875rem;
line-height: 1.5;
}
.decision-item__meta {
font-size: 0.75rem;
color: var(--daemon-text-muted);
}
.warning-item {
padding: var(--daemon-space-sm);
margin-bottom: var(--daemon-space-sm);
border-radius: var(--daemon-radius);
}
.warning-item--high {
background-color: rgba(239, 68, 68, 0.1);
border-left: 3px solid var(--daemon-error);
}
.warning-item--medium {
background-color: rgba(245, 158, 11, 0.1);
border-left: 3px solid var(--daemon-warning);
}
.warning-item--low {
background-color: rgba(34, 197, 94, 0.1);
border-left: 3px solid var(--daemon-success);
}
.warning-item__content {
font-size: 0.875rem;
line-height: 1.5;
}
.git-change {
font-family: var(--daemon-font-mono);
font-size: 0.8rem;
padding: var(--daemon-space-xs) 0;
}
.git-change--added {
color: var(--daemon-success);
}
.git-change--modified {
color: var(--daemon-warning);
}
.git-change--deleted {
color: var(--daemon-error);
}
.focus-area-btn {
margin-right: var(--daemon-space-sm);
margin-bottom: var(--daemon-space-sm);
}
</style>
</head>
<body>
<!-- Real-time update notification badge -->
<div id="update-indicator" class="daemon-update-badge" role="status" aria-live="polite">
<span class="daemon-update-badge__dot"></span>
<span>New data available</span>
<button id="refresh-btn" class="daemon-btn daemon-btn--small">Refresh</button>
</div>
<div id="app">
<div class="daemon-container" style="padding: var(--daemon-space-lg);">
<!-- Header Section -->
<header class="briefing-header">
<div class="briefing-header__title">
<h1>Session Briefing</h1>
<span class="briefing-header__status briefing-header__status--ready">
{{STATUS}}
</span>
</div>
</header>
<!-- Statistics Panel -->
{{STATS}}
<!-- Briefing Message -->
{{MESSAGE}}
<!-- Accordion Sections -->
<div class="daemon-accordion">
{{CONTENT}}
</div>
</div>
</div>
<script>
{{SCRIPT}}
// Focus area button handler
(function() {
document.querySelectorAll('[data-action="focus-area"]').forEach(function(btn) {
btn.addEventListener('click', function(e) {
var topic = e.target.dataset.topic;
if (window.SecureMessenger) {
SecureMessenger.send('tool_request', {
tool: 'recall',
args: { topic: topic }
});
}
});
});
})();
// Context check button handler
(function() {
var btn = document.querySelector('[data-action="context-check"]');
if (btn) {
btn.addEventListener('click', function() {
if (window.SecureMessenger) {
SecureMessenger.send('tool_request', {
tool: 'context_check',
args: {}
});
}
});
}
})();
// Real-time update notification receiver
(function() {
var updateTimeout = null;
var DEBOUNCE_MS = 300;
var indicator = document.getElementById('update-indicator');
var refreshBtn = document.getElementById('refresh-btn');
if (window.SecureMessenger) {
SecureMessenger.on('data_updated', function(data) {
clearTimeout(updateTimeout);
updateTimeout = setTimeout(function() {
if (indicator) {
indicator.classList.add('daemon-update-badge--visible');
indicator.setAttribute('data-last-update', data.last_update || '');
}
}, DEBOUNCE_MS);
});
}
if (refreshBtn) {
refreshBtn.addEventListener('click', function() {
if (indicator) {
indicator.classList.remove('daemon-update-badge--visible');
}
if (window.SecureMessenger) {
SecureMessenger.send('tool_request', { tool: 'refresh_ui' });
}
});
}
})();
</script>
</body>
</html>