 afccc94998
			
		
	
	afccc94998
	
	
		
			
	
		
	
	- Added/updated .gitignore file - Fixed remote URL configuration - Updated project structure and files 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			279 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			279 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE html>
 | |
| <html lang="en">
 | |
| <head>
 | |
|     <meta charset="UTF-8">
 | |
|     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | |
|     <title>WHOOSH - Council Formation Engine [External UI]</title>
 | |
|     <link rel="preconnect" href="https://fonts.googleapis.com">
 | |
|     <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
 | |
|     <link href="https://fonts.googleapis.com/css2?family=Inter+Tight:wght@100;200;300;400;500;600;700;800;900&family=Exo:wght@100;200;300;400;500;600;700;800;900&family=Inconsolata:wght@200;300;400;500;600;700;800;900&display=swap" rel="stylesheet">
 | |
|     <link rel="stylesheet" href="/ui/styles.css">
 | |
| </head>
 | |
| <body>
 | |
|     <header class="header">
 | |
|         <div class="logo">
 | |
|             <strong>WHOOSH</strong>
 | |
|             <span class="tagline">Council Formation Engine</span>
 | |
|         </div>
 | |
|         <div class="status-info">
 | |
|             <div class="status-dot online"></div>
 | |
|             <span id="connection-status">Connected</span>
 | |
|         </div>
 | |
|     </header>
 | |
| 
 | |
|     <nav class="nav">
 | |
|         <button class="nav-tab active" data-tab="dashboard">Dashboard</button>
 | |
|         <button class="nav-tab" data-tab="tasks">Tasks</button>
 | |
|         <button class="nav-tab" data-tab="teams">Teams</button>
 | |
|         <button class="nav-tab" data-tab="agents">Agents</button>
 | |
|         <button class="nav-tab" data-tab="config">Configuration</button>
 | |
|         <button class="nav-tab" data-tab="repositories">Repositories</button>
 | |
|     </nav>
 | |
| 
 | |
|     <main class="content">
 | |
|         <!-- Dashboard Tab -->
 | |
|         <div id="dashboard" class="tab-content active">
 | |
|             <div class="dashboard-grid">
 | |
|                 <div class="card">
 | |
|                     <h3><img src="https://brand.chorus.services/icons/coolicons.v4.1/coolicons%20PNG/White/Interface/Chart_Bar_Vertical_01.png" alt="Chart" class="card-icon" style="display: inline; vertical-align: text-top;"> System Metrics</h3>
 | |
|                     <div class="metric">
 | |
|                         <span class="metric-label">Active Councils</span>
 | |
|                         <span class="metric-value">0</span>
 | |
|                     </div>
 | |
|                     <div class="metric">
 | |
|                         <span class="metric-label">Deployed Agents</span>
 | |
|                         <span class="metric-value">0</span>
 | |
|                     </div>
 | |
|                     <div class="metric">
 | |
|                         <span class="metric-label">Completed Tasks</span>
 | |
|                         <span class="metric-value">0</span>
 | |
|                     </div>
 | |
|                 </div>
 | |
| 
 | |
|                 <div class="card">
 | |
|                     <h3><img src="https://brand.chorus.services/icons/coolicons.v4.1/coolicons%20PNG/White/Arrow/Arrow_Reload_02.png" alt="Refresh" class="card-icon" style="display: inline; vertical-align: text-top;"> Recent Activity</h3>
 | |
|                     <div id="recent-activity">
 | |
|                         <div class="empty-state-icon"><img src="https://brand.chorus.services/icons/coolicons.v4.1/coolicons%20PNG/White/File/Folder_Document.png" alt="Empty" style="width: 3rem; height: 3rem; opacity: 0.5;"></div>
 | |
|                         <p>No recent activity</p>
 | |
|                     </div>
 | |
|                 </div>
 | |
| 
 | |
|                 <div class="card">
 | |
|                     <h3><img src="https://brand.chorus.services/icons/coolicons.v4.1/coolicons%20PNG/White/Warning/Circle_Check.png" alt="Status" class="card-icon" style="display: inline; vertical-align: text-top;"> System Status</h3>
 | |
|                     <div class="metric">
 | |
|                         <span class="metric-label">Database</span>
 | |
|                         <span class="metric-value success-indicator">✅ Healthy</span>
 | |
|                     </div>
 | |
|                     <div class="metric">
 | |
|                         <span class="metric-label">GITEA Integration</span>
 | |
|                         <span class="metric-value success-indicator">✅ Connected</span>
 | |
|                     </div>
 | |
|                     <div class="metric">
 | |
|                         <span class="metric-label">BACKBEAT</span>
 | |
|                         <span class="metric-value success-indicator">✅ Active</span>
 | |
|                     </div>
 | |
|                 </div>
 | |
|                 
 | |
|                 <div class="card">
 | |
|                     <div class="metric">
 | |
|                         <span class="metric-label">Tempo</span>
 | |
|                         <span class="metric-value" id="beat-tempo" style="color: var(--ocean-400);">--</span>
 | |
|                     </div>
 | |
|                     <div class="metric">
 | |
|                         <span class="metric-label">Volume</span>
 | |
|                         <span class="metric-value" id="beat-volume" style="color: var(--ocean-400);">--</span>
 | |
|                     </div>
 | |
|                     <div class="metric">
 | |
|                         <span class="metric-label">Phase</span>
 | |
|                         <span class="metric-value" id="beat-phase" style="color: var(--ocean-400);">--</span>
 | |
|                     </div>
 | |
|                     <div style="margin-top: 1rem; height: 60px; background: var(--carbon-800); border-radius: 0; position: relative; overflow: hidden; border: 1px solid var(--mulberry-800);">
 | |
|                         <canvas id="pulse-trace" width="100%" height="60" style="width: 100%; height: 60px;"></canvas>
 | |
|                     </div>
 | |
|                     <div class="backbeat-label">
 | |
|                         Live BACKBEAT Pulse
 | |
|                     </div>
 | |
|                 </div>
 | |
|             </div>
 | |
|         </div>
 | |
| 
 | |
|         <!-- Tasks Tab -->
 | |
|         <div id="tasks" class="tab-content">
 | |
|             <div class="card">
 | |
|                 <button class="btn btn-primary" onclick="refreshTasks()"><img src="https://brand.chorus.services/icons/coolicons.v4.1/coolicons%20PNG/White/Arrow/Arrow_Reload_02.png" alt="Refresh" style="width: 1rem; height: 1rem; margin-right: 0.5rem; vertical-align: text-top;"> Refresh Tasks</button>
 | |
|             </div>
 | |
|             
 | |
|             <div class="card">
 | |
|                 <div class="tabs">
 | |
|                     <h3><img src="https://brand.chorus.services/icons/coolicons.v4.1/coolicons%20PNG/White/Edit/List_Check.png" alt="Tasks" class="card-icon" style="display: inline; vertical-align: text-top;"> Active Tasks</h3>
 | |
|                     <div id="active-tasks">
 | |
|                         <div style="text-align: center; padding: 2rem 0; color: var(--mulberry-300);">
 | |
|                             <div class="empty-state-icon"><img src="https://brand.chorus.services/icons/coolicons.v4.1/coolicons%20PNG/White/Edit/List_Check.png" alt="No tasks" style="width: 3rem; height: 3rem; opacity: 0.5;"></div>
 | |
|                             <p>No active tasks found</p>
 | |
|                         </div>
 | |
|                     </div>
 | |
|                 </div>
 | |
|                 
 | |
|                 <div class="tabs">
 | |
|                     <h4>Scheduled Tasks</h4>
 | |
|                     <div id="scheduled-tasks">
 | |
|                         <div style="text-align: center; padding: 2rem 0; color: var(--mulberry-300);">
 | |
|                             <div class="empty-state-icon"><img src="https://brand.chorus.services/icons/coolicons.v4.1/coolicons%20PNG/White/Calendar/Calendar.png" alt="No scheduled tasks" style="width: 3rem; height: 3rem; opacity: 0.5;"></div>
 | |
|                             <p>No scheduled tasks found</p>
 | |
|                         </div>
 | |
|                     </div>
 | |
|                 </div>
 | |
|             </div>
 | |
|         </div>
 | |
| 
 | |
|         <!-- Teams Tab -->
 | |
|         <div id="teams" class="tab-content">
 | |
|             <div class="card">
 | |
|                 <h2><img src="https://brand.chorus.services/icons/coolicons.v4.1/coolicons%20PNG/White/User/Users_Group.png" alt="Team" style="width: 1.5rem; height: 1.5rem; margin-right: 0.5rem; vertical-align: text-bottom;"> Team Management</h2>
 | |
|                 <button class="btn btn-primary" onclick="loadTeams()"><img src="https://brand.chorus.services/icons/coolicons.v4.1/coolicons%20PNG/White/Arrow/Arrow_Reload_02.png" alt="Refresh" style="width: 1rem; height: 1rem; margin-right: 0.5rem; vertical-align: text-top;"> Refresh Teams</button>
 | |
|             </div>
 | |
|             
 | |
|             <div class="card" id="teams-list">
 | |
|                 <div style="text-align: center; padding: 3rem 0; color: var(--mulberry-300);">
 | |
|                     <div class="empty-state-icon"><img src="https://brand.chorus.services/icons/coolicons.v4.1/coolicons%20PNG/White/User/Users_Group.png" alt="No teams" style="width: 3rem; height: 3rem; opacity: 0.5;"></div>
 | |
|                     <p>No teams configured yet</p>
 | |
|                 </div>
 | |
|             </div>
 | |
|         </div>
 | |
| 
 | |
|         <!-- Agents Tab -->
 | |
|         <div id="agents" class="tab-content">
 | |
|             <div class="card">
 | |
|                 <h2><img src="https://brand.chorus.services/icons/coolicons.v4.1/coolicons%20PNG/White/System/Window_Check.png" alt="Agents" style="width: 1.5rem; height: 1.5rem; margin-right: 0.5rem; vertical-align: text-bottom;"> Agent Management</h2>
 | |
|                 <button class="btn btn-primary" onclick="loadAgents()"><img src="https://brand.chorus.services/icons/coolicons.v4.1/coolicons%20PNG/White/Arrow/Arrow_Reload_02.png" alt="Refresh" style="width: 1rem; height: 1rem; margin-right: 0.5rem; vertical-align: text-top;"> Refresh Agents</button>
 | |
|             </div>
 | |
|             
 | |
|             <div class="card" id="agents-list">
 | |
|                 <div style="text-align: center; padding: 3rem 0; color: var(--mulberry-300);">
 | |
|                     <div class="empty-state-icon"><img src="https://brand.chorus.services/icons/coolicons.v4.1/coolicons%20PNG/White/System/Window_Check.png" alt="No agents" style="width: 3rem; height: 3rem; opacity: 0.5;"></div>
 | |
|                     <p>No agents registered yet</p>
 | |
|                 </div>
 | |
|             </div>
 | |
|         </div>
 | |
| 
 | |
|         <!-- Configuration Tab -->
 | |
|         <div id="config" class="tab-content">
 | |
|             <h2><img src="https://brand.chorus.services/icons/coolicons.v4.1/coolicons%20PNG/White/Interface/Settings.png" alt="Settings" style="width: 1.5rem; height: 1.5rem; margin-right: 0.5rem; vertical-align: text-bottom;"> System Configuration</h2>
 | |
|             
 | |
|             <div class="dashboard-grid">
 | |
|                 <div class="card">
 | |
|                     <h3>GITEA Integration</h3>
 | |
|                     <div class="metric">
 | |
|                         <span class="metric-label">Base URL</span>
 | |
|                         <span class="metric-value">https://gitea.chorus.services</span>
 | |
|                     </div>
 | |
|                     <div class="metric">
 | |
|                         <span class="metric-label">Webhook Path</span>
 | |
|                         <span class="metric-value">/webhooks/gitea</span>
 | |
|                     </div>
 | |
|                     <div class="metric">
 | |
|                         <span class="metric-label">Token Status</span>
 | |
|                         <span class="metric-value" style="color: var(--eucalyptus-500);"><img src="https://brand.chorus.services/icons/coolicons.v4.1/coolicons%20PNG/White/Interface/Check.png" alt="Valid" style="width: 1rem; height: 1rem; margin-right: 0.25rem; vertical-align: text-top;"> Valid</span>
 | |
|                     </div>
 | |
|                 </div>
 | |
|                 
 | |
|                 <div class="card">
 | |
|                     <h3>Repository Management</h3>
 | |
|                     <button class="btn btn-primary" onclick="showAddRepositoryForm()">+ Add Repository</button>
 | |
|                     
 | |
|                     <div id="add-repository-form" style="display: none; margin-top: 1rem; background: var(--carbon-800); padding: 1rem; border: 1px solid var(--mulberry-700);">
 | |
|                         <h4>Add New Repository</h4>
 | |
|                         <form id="repository-form">
 | |
|                             <div style="margin-bottom: 1rem;">
 | |
|                                 <label>Repository Name:</label>
 | |
|                                 <input type="text" id="repo-name" required style="width: 100%; padding: 8px; border: 1px solid var(--carbon-300); border-radius: 0.375rem;" placeholder="e.g., WHOOSH">
 | |
|                             </div>
 | |
|                             <div style="margin-bottom: 1rem;">
 | |
|                                 <label>Owner:</label>
 | |
|                                 <input type="text" id="repo-owner" required style="width: 100%; padding: 8px; border: 1px solid var(--carbon-300); border-radius: 0.375rem;" placeholder="e.g., tony">
 | |
|                             </div>
 | |
|                             
 | |
|                             <div style="margin-bottom: 1rem;">
 | |
|                                 <label>Repository URL:</label>
 | |
|                                 <input type="url" id="repo-url" required style="width: 100%; padding: 8px; border: 1px solid var(--carbon-300); border-radius: 0.375rem;" placeholder="https://gitea.chorus.services/tony/WHOOSH">
 | |
|                             </div>
 | |
|                             
 | |
|                             <div style="margin-bottom: 1rem;">
 | |
|                                 <label>Source Type:</label>
 | |
|                                 <select id="repo-source-type" style="width: 100%; padding: 8px; border: 1px solid var(--carbon-300); border-radius: 0.375rem;">
 | |
|                                     <option value="git">Git Repository</option>
 | |
|                                     <option value="gitea">GITEA</option>
 | |
|                                     <option value="github">GitHub</option>
 | |
|                                     <option value="gitlab">GitLab</option>
 | |
|                                 </select>
 | |
|                             </div>
 | |
|                             
 | |
|                             <div style="margin-bottom: 1rem;">
 | |
|                                 <label>Default Branch:</label>
 | |
|                                 <input type="text" id="repo-branch" value="main" style="width: 100%; padding: 8px; border: 1px solid var(--carbon-300); border-radius: 0.375rem;">
 | |
|                             </div>
 | |
|                             
 | |
|                             <div style="margin-bottom: 1rem;">
 | |
|                                 <label>Description:</label>
 | |
|                                 <textarea id="repo-description" rows="2" style="width: 100%; padding: 8px; border: 1px solid var(--carbon-300); border-radius: 0.375rem;" placeholder="Brief description of this repository..."></textarea>
 | |
|                             </div>
 | |
|                             
 | |
|                             <div style="margin-bottom: 1rem;">
 | |
|                                 <label style="display: flex; align-items: center; gap: 8px;">
 | |
|                                     <input type="checkbox" id="repo-monitor-issues" checked>
 | |
|                                     Monitor Issues (listen for chorus-entrypoint labels)
 | |
|                                 </label>
 | |
|                             </div>
 | |
|                             
 | |
|                             <div style="margin-bottom: 1rem;">
 | |
|                                 <label style="display: flex; align-items: center; gap: 8px;">
 | |
|                                     <input type="checkbox" id="repo-enable-chorus">
 | |
|                                     Enable CHORUS Integration
 | |
|                                 </label>
 | |
|                             </div>
 | |
|                             
 | |
|                             <div style="display: flex; gap: 10px;">
 | |
|                                 <button type="button" onclick="hideAddRepositoryForm()" style="background: var(--carbon-300); color: var(--carbon-600); border: none; padding: 8px 16px; border-radius: 0.375rem; cursor: pointer; margin-right: 10px;">Cancel</button>
 | |
|                                 <button type="submit" style="background: var(--eucalyptus-500); color: white; border: none; padding: 8px 16px; border-radius: 0.375rem; cursor: pointer; font-weight: 500;">Add Repository</button>
 | |
|                             </div>
 | |
|                         </form>
 | |
|                     </div>
 | |
|                 </div>
 | |
|                 
 | |
|                 <div class="card">
 | |
|                     <h3><img src="https://brand.chorus.services/icons/coolicons.v4.1/coolicons%20PNG/White/Interface/Chart_Bar_Vertical_01.png" alt="Chart" class="card-icon" style="display: inline; vertical-align: text-top;"> Repository Stats</h3>
 | |
|                     <div class="metric">
 | |
|                         <span class="metric-label">Total Repositories</span>
 | |
|                         <span class="metric-value" id="total-repos">--</span>
 | |
|                     </div>
 | |
|                     <div class="metric">
 | |
|                         <span class="metric-label">Active Monitoring</span>
 | |
|                         <span class="metric-value" id="active-repos">--</span>
 | |
|                     </div>
 | |
|                     <div class="metric">
 | |
|                         <span class="metric-label">Last Sync</span>
 | |
|                         <span class="metric-value" id="last-sync">--</span>
 | |
|                     </div>
 | |
|                 </div>
 | |
|             </div>
 | |
|         </div>
 | |
| 
 | |
|         <!-- Repositories Tab -->
 | |
|         <div id="repositories" class="tab-content">
 | |
|             <div class="card">
 | |
|                 <h2>Repository Management</h2>
 | |
|                 <button class="btn btn-primary" onclick="loadRepositories()">Refresh Repositories</button>
 | |
|             </div>
 | |
|             
 | |
|             <div class="card">
 | |
|                 <h3>Monitored Repositories</h3>
 | |
|                 <div id="repositories-list">
 | |
|                     <p style="text-align: center; color: var(--mulberry-300); padding: 20px;">Loading repositories...</p>
 | |
|                 </div>
 | |
|             </div>
 | |
|         </div>
 | |
|     </main>
 | |
| 
 | |
|     <script src="/ui/script.js"></script>
 | |
| </body>
 | |
| </html> |