Skip to content

Commit f8886f3

Browse files
alari76claude
andauthored
feat(ui): Deployments tab in Automations — registry, probe status, discovery (#610)
The fleet gets a face: everything from the deployment monitor is now visible and manageable in the UI instead of API-only. - New Deployments tab in the Automations view - Deployment cards: per-probe status dot, metric summary (http status/ latency/cert, pm2 status/memory/restarts, disk free, host mem/load/ updates/reboot), breach text, sample age; pause/resume, edit, delete - Discovery suggestions: unconfigured pm2 processes and a 'Monitor this machine' quick action (host + root disk probes) — confirm-to-monitor, never auto-enrolled - Structured editor: name, linked repo, enabled, auto-diagnose (with the diagnose-not-operate explanation), add/remove probes per type - deploymentsApi client + useDeployments hook (60s poll; samples refresh server-side every 5 min, no push channel) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
1 parent cb6929d commit f8886f3

4 files changed

Lines changed: 600 additions & 2 deletions

File tree

src/components/AutomationsView.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,16 @@
1919
*/
2020

2121
import { useState, useEffect, useCallback } from 'react'
22-
import { IconSparkles, IconRefresh, IconAlertTriangle, IconListDetails, IconExternalLink, IconRobotFace } from '@tabler/icons-react'
22+
import { IconSparkles, IconRefresh, IconAlertTriangle, IconListDetails, IconExternalLink, IconRobotFace, IconServer } from '@tabler/icons-react'
2323
import { WorkflowsView } from './WorkflowsView'
2424
import { LoopRunsView } from './LoopRunsView'
25+
import { DeploymentsView } from './DeploymentsView'
2526
import { listGoalRuns, type GoalRun } from '../lib/goalRunApi'
2627
import { listUnifiedRuns, type UnifiedRun, type UnifiedRunStatus } from '../lib/runsApi'
2728
import { subscribeWorkflowEvents } from '../lib/workflowEvents'
2829
import { formatTime } from '../lib/workflowHelpers'
2930

30-
export type AutomationsTab = 'all' | 'workflows' | 'loops'
31+
export type AutomationsTab = 'all' | 'workflows' | 'loops' | 'deployments'
3132

3233
interface Props {
3334
/** Auth token for REST API calls. */
@@ -42,6 +43,7 @@ const TABS: { id: AutomationsTab; label: string; icon: typeof IconSparkles }[] =
4243
{ id: 'all', label: 'All runs', icon: IconListDetails },
4344
{ id: 'workflows', label: 'Workflows', icon: IconSparkles },
4445
{ id: 'loops', label: 'Loops', icon: IconRefresh },
46+
{ id: 'deployments', label: 'Deployments', icon: IconServer },
4547
]
4648

4749
/** Badge classes for the unified status vocabulary. */
@@ -238,6 +240,8 @@ export function AutomationsView({ token, initialTab, onNavigateToSession }: Prop
238240
</div>
239241
) : tab === 'workflows' ? (
240242
<WorkflowsView token={token} onNavigateToSession={onNavigateToSession} />
243+
) : tab === 'deployments' ? (
244+
<DeploymentsView token={token} />
241245
) : (
242246
<LoopRunsView
243247
key={focusRunId ?? 'loops'}

0 commit comments

Comments
 (0)