feat(ui): hybrid sidebar (sectioned + active pill + agent dots) + agent profile viewer in Settings

Sidebar: Spaces / Agents / Navigate sections, accent pill on active item, status
dots on agents. Settings Agents rows expand to show the agent's persona (soul) +
capabilities/scopes via GET /api/agents/:id/profile.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
root
2026-06-05 00:11:14 +10:00
parent 80363d3e68
commit bf58b624a3
5 changed files with 82 additions and 7 deletions

View File

@@ -19,6 +19,7 @@ function navItem(label, hash, opts = {}) {
},
opts.icon ? el('span', { class: 'caret' }, opts.icon) : null,
el('span', { style: { flex: 1 } }, label),
opts.dot ? el('span', { class: 'sb-dot ' + opts.dot }) : null,
opts.badge !== undefined && opts.badge !== null ? el('span', { class: 'badge' }, String(opts.badge)) : null
);
}
@@ -87,12 +88,14 @@ export function renderSidebar(root) {
el('div', { class: 'sb-title' }, 'Spaces'),
spacesContainer
),
el('hr'),
el('div', { class: 'sb-section' },
el('div', { class: 'sb-title' }, 'Agents'),
navItem('Sentinel', '/sentinel', { dot: 'ok' }),
navItem('Little Blue', '/little-blue', { dot: 'lb' })
),
el('div', { class: 'sb-section' },
el('div', { class: 'sb-title' }, 'Navigate'),
navItem('Sacred Valley', '/sacred-valley'),
navItem('Sentinel', '/sentinel'),
navItem('Little Blue', '/little-blue'),
navItem('Terminal', '/terminal'),
navItem('Search', '/search'),
inboxItem,