Foundation (phase 01, verified): - FastAPI app: /api/health, /api/suggestions, /api/chat (placeholder), static frontend served locally (no CDN) - Postgres 17 + pgvector via db/Containerfile + compose.yaml (podman compose up -d db), Alembic initial migration (documents, chunks with vector(768), query_log) - LLM client targeting https://aipi.reeseapps.com/v1 (turbo/embed); scripts/llm_probe.py verified models + 768-dim embeddings live - Conditional debugpy: imported only when DEBUGPY=1 (attach on demand, :5678); logging config for clean single-line logs - Frontend shell: mobile-first chat + Sources pages, tokens, a11y baselines - Tests: 24 unit+integration (99% coverage on app/), ruff + pyright clean, Playwright smoke E2E (3 tests) against a deterministic mock LLM - Planning: .agent/PLAN.md (architecture + LOCKED decisions), AGENTS.md, 6 user stories, 7 phase files (one story / one phase / one Playwright suite each)
88 lines
3.2 KiB
HTML
88 lines
3.2 KiB
HTML
<!doctype html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
|
||
<meta name="description" content="Documents indexed in Brain of Reese.">
|
||
<title>Sources · Brain of Reese</title>
|
||
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🧠</text></svg>">
|
||
<link rel="stylesheet" href="/assets/styles.css">
|
||
</head>
|
||
<body>
|
||
<a class="skip-link" href="#main">Skip to content</a>
|
||
|
||
<header class="app-header">
|
||
<div class="container header-inner">
|
||
<span class="brand">
|
||
<span class="brand-mark" aria-hidden="true">🧠</span>
|
||
<span class="brand-text">Brain of <strong>Reese</strong></span>
|
||
</span>
|
||
<nav class="app-nav" aria-label="Primary">
|
||
<a href="/" class="nav-link">Chat</a>
|
||
<a href="/sources.html" class="nav-link is-active" aria-current="page">Sources</a>
|
||
</nav>
|
||
</div>
|
||
</header>
|
||
|
||
<main id="main" class="app-main">
|
||
<div class="container sources-shell">
|
||
<div class="page-head">
|
||
<h1>Knowledge base</h1>
|
||
<p class="page-sub">
|
||
Every <code>*.md</code> file indexed from <code>~/Homelab</code> and
|
||
<code>~/Deployments</code>. Re-run the import to refresh.
|
||
</p>
|
||
</div>
|
||
|
||
<div class="stat-cards" id="stat-cards">
|
||
<div class="stat-card" role="group" aria-label="Document statistics">
|
||
<span class="stat-value" id="stat-docs">–</span>
|
||
<span class="stat-label">documents</span>
|
||
</div>
|
||
<div class="stat-card" role="group" aria-label="Chunk statistics">
|
||
<span class="stat-value" id="stat-chunks">–</span>
|
||
<span class="stat-label">chunks</span>
|
||
</div>
|
||
<div class="stat-card" role="group" aria-label="Last indexed">
|
||
<span class="stat-value stat-value-sm" id="stat-last">–</span>
|
||
<span class="stat-label">last indexed</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="table-wrap" role="region" aria-label="Indexed documents" tabindex="0">
|
||
<table class="docs-table" id="docs-table">
|
||
<caption class="visually-hidden">Indexed markdown documents</caption>
|
||
<thead>
|
||
<tr>
|
||
<th scope="col">Source</th>
|
||
<th scope="col">Path</th>
|
||
<th scope="col">Title</th>
|
||
<th scope="col">Chunks</th>
|
||
<th scope="col">Indexed</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody id="docs-tbody"></tbody>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="empty-state" id="sources-empty" hidden>
|
||
<div class="empty-state-emoji" aria-hidden="true">📂</div>
|
||
<h2 class="empty-state-title">Nothing indexed yet</h2>
|
||
<p class="empty-state-sub">
|
||
Run the import to pull in the markdown docs:
|
||
<code>uv run python -m scripts.import_docs</code>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</main>
|
||
|
||
<footer class="app-footer">
|
||
<div class="container footer-inner">
|
||
<span>Powered by Reese's self-hosted models</span>
|
||
</div>
|
||
</footer>
|
||
|
||
<script type="module" src="/assets/sources.js"></script>
|
||
</body>
|
||
</html>
|