aether-core-memory/mission-control/src/apps/Wiki.jsx

105 lines
3.2 KiB
JavaScript

import { useState } from 'react'
import { FileText, Folder, Search, ExternalLink } from 'lucide-react'
const WIKI_PAGES = [
{
id: 'overview',
title: 'System Overview',
content: `Aether System Overview
Identity
Name: Aether
Role: Autonomous Orchestrator
Initialized: 2026-02-23
Core Directive
Transform high-level visions into production-ready software.
Infrastructure
- Gitea: http://192.168.5.35:3000
- Vaultwarden: http://localhost:8080
- AetherOS: http://localhost:3001
The Collective
- Architect: Project scoping
- Researcher: Documentation
- Engineer: Implementation
- QA Auditor: Testing
- Publisher: GitHub releases`
},
{
id: 'architecture',
title: 'Architecture',
content: `Aether Architecture
Component Flow
User Input -> Aether Orchestrator -> Sub-agents -> Output
Data Flow
1. Planning: Architect scopes project
2. Implementation: Engineer writes code
3. Release: Publisher promotes to GitHub
Memory Architecture
- Short-term: Session context
- Long-term: /aether_core/memory/`
},
{
id: 'security',
title: 'Security Policy',
content: `Security Policy
Credential Management
All credentials stored in Vaultwarden:
- SSH private keys
- API tokens
- Service passwords
Access Control
- SSH key authentication only
- No password authentication
Key Rotation
- SSH Keys: 90 days
- API Tokens: 60 days`
}
]
function Wiki() {
const [activePage, setActivePage] = useState('overview')
const activeContent = WIKI_PAGES.find(p => p.id === activePage)?.content || ''
return (
<div style={{ height: '100%', display: 'flex', gap: '20px' }}>
<div style={{ width: '240px', minWidth: '240px', borderRight: '1px solid rgba(99, 102, 241, 0.2)', paddingRight: '20px' }}>
<div style={{ marginBottom: '20px' }}>
<div style={{ display: 'flex', alignItems: 'center', gap: '8px', padding: '10px 12px', background: 'rgba(255,255,255,0.05)', borderRadius: '8px' }}>
<Search size={16} color="#a0a0c0" />
<input type="text" placeholder="Search wiki..." style={{ background: 'transparent', border: 'none', color: 'inherit', fontSize: '14px', outline: 'none', width: '100%' }} />
</div>
</div>
<div style={{ display: 'flex', flexDirection: 'column', gap: '4px' }}>
{WIKI_PAGES.map(page => (
<button key={page.id} onClick={() => setActivePage(page.id)} style={{ display: 'flex', alignItems: 'center', gap: '10px', padding: '10px 12px', background: activePage === page.id ? 'rgba(99, 102, 241, 0.2)' : 'transparent', border: 'none', borderRadius: '8px', color: activePage === page.id ? '#6366f1' : 'inherit', fontSize: '14px', cursor: 'pointer', textAlign: 'left' }}>
<FileText size={16} />
{page.title}
</button>
))}
</div>
</div>
<div style={{ flex: 1, overflow: 'auto', whiteSpace: 'pre-wrap', lineHeight: 1.7 }}>
{activeContent}
<div style={{ marginTop: '40px', paddingTop: '20px', borderTop: '1px solid rgba(99, 102, 241, 0.2)', display: 'flex', alignItems: 'center', gap: '8px', fontSize: '13px', color: '#a0a0c0' }}>
<ExternalLink size={14} />
<span>Last updated: 2026-02-23 by Aether</span>
</div>
</div>
</div>
)
}
export default Wiki