canopycms 0.0.60 → 0.0.61-int.75
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/__test__/mock-client.d.ts +29 -0
- package/dist/api/__test__/mock-client.d.ts.map +1 -1
- package/dist/api/__test__/mock-client.js +51 -0
- package/dist/api/__test__/mock-client.js.map +1 -1
- package/dist/api/admin-branch-health.d.ts +65 -0
- package/dist/api/admin-branch-health.d.ts.map +1 -0
- package/dist/api/admin-branch-health.js +448 -0
- package/dist/api/admin-branch-health.js.map +1 -0
- package/dist/api/admin.d.ts +136 -0
- package/dist/api/admin.d.ts.map +1 -0
- package/dist/api/admin.js +338 -0
- package/dist/api/admin.js.map +1 -0
- package/dist/api/assets.d.ts.map +1 -1
- package/dist/api/assets.js +4 -0
- package/dist/api/assets.js.map +1 -1
- package/dist/api/branch-merge.d.ts +6 -0
- package/dist/api/branch-merge.d.ts.map +1 -1
- package/dist/api/branch-merge.js +13 -3
- package/dist/api/branch-merge.js.map +1 -1
- package/dist/api/branch-status.d.ts.map +1 -1
- package/dist/api/branch-status.js +15 -5
- package/dist/api/branch-status.js.map +1 -1
- package/dist/api/branch-withdraw.d.ts +6 -0
- package/dist/api/branch-withdraw.d.ts.map +1 -1
- package/dist/api/branch-withdraw.js +15 -3
- package/dist/api/branch-withdraw.js.map +1 -1
- package/dist/api/branch.d.ts +11 -1
- package/dist/api/branch.d.ts.map +1 -1
- package/dist/api/branch.js +70 -4
- package/dist/api/branch.js.map +1 -1
- package/dist/api/client.d.ts +34 -0
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +47 -0
- package/dist/api/client.js.map +1 -1
- package/dist/api/comments.d.ts.map +1 -1
- package/dist/api/comments.js +4 -0
- package/dist/api/comments.js.map +1 -1
- package/dist/api/content.d.ts.map +1 -1
- package/dist/api/content.js +4 -4
- package/dist/api/content.js.map +1 -1
- package/dist/api/entries.js +1 -1
- package/dist/api/entries.js.map +1 -1
- package/dist/api/github-sync.d.ts.map +1 -1
- package/dist/api/github-sync.js +14 -3
- package/dist/api/github-sync.js.map +1 -1
- package/dist/api/guards.d.ts +7 -1
- package/dist/api/guards.d.ts.map +1 -1
- package/dist/api/guards.js +54 -0
- package/dist/api/guards.js.map +1 -1
- package/dist/api/index.d.ts +1 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +0 -1
- package/dist/api/index.js.map +1 -1
- package/dist/api/schema.js +7 -7
- package/dist/api/schema.js.map +1 -1
- package/dist/authorization/branch.d.ts +14 -1
- package/dist/authorization/branch.d.ts.map +1 -1
- package/dist/authorization/branch.js +5 -3
- package/dist/authorization/branch.js.map +1 -1
- package/dist/authorization/index.d.ts +1 -0
- package/dist/authorization/index.d.ts.map +1 -1
- package/dist/authorization/index.js +2 -0
- package/dist/authorization/index.js.map +1 -1
- package/dist/authorization/protected-branch.d.ts +39 -0
- package/dist/authorization/protected-branch.d.ts.map +1 -0
- package/dist/authorization/protected-branch.js +43 -0
- package/dist/authorization/protected-branch.js.map +1 -0
- package/dist/branch-health.d.ts +78 -0
- package/dist/branch-health.d.ts.map +1 -0
- package/dist/branch-health.js +151 -0
- package/dist/branch-health.js.map +1 -0
- package/dist/branch-metadata.d.ts +20 -0
- package/dist/branch-metadata.d.ts.map +1 -1
- package/dist/branch-metadata.js +21 -1
- package/dist/branch-metadata.js.map +1 -1
- package/dist/branch-registry.d.ts.map +1 -1
- package/dist/branch-registry.js +13 -1
- package/dist/branch-registry.js.map +1 -1
- package/dist/cli/cli.js +154 -13
- package/dist/cli/generate-ai-content.js +54 -10
- package/dist/cli/init.js +72 -0
- package/dist/cli/sync.d.ts.map +1 -1
- package/dist/cli/sync.js +4 -1
- package/dist/cli/sync.js.map +1 -1
- package/dist/content-store.d.ts +16 -0
- package/dist/content-store.d.ts.map +1 -1
- package/dist/content-store.js +22 -6
- package/dist/content-store.js.map +1 -1
- package/dist/editor/BranchManager.d.ts +9 -1
- package/dist/editor/BranchManager.d.ts.map +1 -1
- package/dist/editor/BranchManager.js +20 -9
- package/dist/editor/BranchManager.js.map +1 -1
- package/dist/editor/CommentsPanel.d.ts.map +1 -1
- package/dist/editor/CommentsPanel.js +4 -12
- package/dist/editor/CommentsPanel.js.map +1 -1
- package/dist/editor/Editor.d.ts.map +1 -1
- package/dist/editor/Editor.js +46 -10
- package/dist/editor/Editor.js.map +1 -1
- package/dist/editor/EntryNavigator.d.ts +7 -0
- package/dist/editor/EntryNavigator.d.ts.map +1 -1
- package/dist/editor/EntryNavigator.js +17 -5
- package/dist/editor/EntryNavigator.js.map +1 -1
- package/dist/editor/FormRenderer.d.ts.map +1 -1
- package/dist/editor/FormRenderer.js +4 -0
- package/dist/editor/FormRenderer.js.map +1 -1
- package/dist/editor/admin/SystemHealthPanel.d.ts +6 -0
- package/dist/editor/admin/SystemHealthPanel.d.ts.map +1 -0
- package/dist/editor/admin/SystemHealthPanel.js +234 -0
- package/dist/editor/admin/SystemHealthPanel.js.map +1 -0
- package/dist/editor/admin/useSystemHealth.d.ts +40 -0
- package/dist/editor/admin/useSystemHealth.d.ts.map +1 -0
- package/dist/editor/admin/useSystemHealth.js +205 -0
- package/dist/editor/admin/useSystemHealth.js.map +1 -0
- package/dist/editor/comments/FieldWrapper.d.ts.map +1 -1
- package/dist/editor/comments/FieldWrapper.js +1 -1
- package/dist/editor/comments/FieldWrapper.js.map +1 -1
- package/dist/editor/comments/InlineCommentThread.d.ts.map +1 -1
- package/dist/editor/comments/InlineCommentThread.js +2 -21
- package/dist/editor/comments/InlineCommentThread.js.map +1 -1
- package/dist/editor/comments/ThreadCarousel.d.ts +2 -0
- package/dist/editor/comments/ThreadCarousel.d.ts.map +1 -1
- package/dist/editor/comments/ThreadCarousel.js +5 -2
- package/dist/editor/comments/ThreadCarousel.js.map +1 -1
- package/dist/editor/components/EditorHeader.d.ts +11 -0
- package/dist/editor/components/EditorHeader.d.ts.map +1 -1
- package/dist/editor/components/EditorHeader.js +75 -41
- package/dist/editor/components/EditorHeader.js.map +1 -1
- package/dist/editor/components/EditorSidebar.d.ts +7 -1
- package/dist/editor/components/EditorSidebar.d.ts.map +1 -1
- package/dist/editor/components/EditorSidebar.js +3 -3
- package/dist/editor/components/EditorSidebar.js.map +1 -1
- package/dist/editor/fields/ImageField.d.ts.map +1 -1
- package/dist/editor/fields/ImageField.js +4 -1
- package/dist/editor/fields/ImageField.js.map +1 -1
- package/dist/editor/fields/StringListField.d.ts +20 -0
- package/dist/editor/fields/StringListField.d.ts.map +1 -0
- package/dist/editor/fields/StringListField.js +25 -0
- package/dist/editor/fields/StringListField.js.map +1 -0
- package/dist/editor/hooks/useBranchActions.d.ts.map +1 -1
- package/dist/editor/hooks/useBranchActions.js +8 -2
- package/dist/editor/hooks/useBranchActions.js.map +1 -1
- package/dist/editor/hooks/useBranchManager.d.ts +12 -3
- package/dist/editor/hooks/useBranchManager.d.ts.map +1 -1
- package/dist/editor/hooks/useBranchManager.js +16 -1
- package/dist/editor/hooks/useBranchManager.js.map +1 -1
- package/dist/editor/hooks/useDraftManager.d.ts +7 -0
- package/dist/editor/hooks/useDraftManager.d.ts.map +1 -1
- package/dist/editor/hooks/useDraftManager.js +57 -3
- package/dist/editor/hooks/useDraftManager.js.map +1 -1
- package/dist/editor/hooks/useEntryManager.d.ts.map +1 -1
- package/dist/editor/hooks/useEntryManager.js +25 -7
- package/dist/editor/hooks/useEntryManager.js.map +1 -1
- package/dist/editor/media/AssetCard.d.ts.map +1 -1
- package/dist/editor/media/AssetCard.js +23 -2
- package/dist/editor/media/AssetCard.js.map +1 -1
- package/dist/editor/relative-time.d.ts +8 -0
- package/dist/editor/relative-time.d.ts.map +1 -0
- package/dist/editor/relative-time.js +26 -0
- package/dist/editor/relative-time.js.map +1 -0
- package/dist/git-manager.d.ts.map +1 -1
- package/dist/git-manager.js +10 -2
- package/dist/git-manager.js.map +1 -1
- package/dist/http/handler.d.ts.map +1 -1
- package/dist/http/handler.js +20 -9
- package/dist/http/handler.js.map +1 -1
- package/dist/http/router.d.ts.map +1 -1
- package/dist/http/router.js +2 -0
- package/dist/http/router.js.map +1 -1
- package/dist/paths/branch-name.d.ts +20 -0
- package/dist/paths/branch-name.d.ts.map +1 -0
- package/dist/paths/branch-name.js +24 -0
- package/dist/paths/branch-name.js.map +1 -0
- package/dist/paths/branch.d.ts +2 -8
- package/dist/paths/branch.d.ts.map +1 -1
- package/dist/paths/branch.js +6 -12
- package/dist/paths/branch.js.map +1 -1
- package/dist/paths/index.d.ts +2 -1
- package/dist/paths/index.d.ts.map +1 -1
- package/dist/paths/index.js +4 -1
- package/dist/paths/index.js.map +1 -1
- package/dist/services.js +9 -1
- package/dist/services.js.map +1 -1
- package/dist/task-queue/index.d.ts +2 -2
- package/dist/task-queue/index.d.ts.map +1 -1
- package/dist/task-queue/index.js +1 -1
- package/dist/task-queue/index.js.map +1 -1
- package/dist/task-queue/task-queue.d.ts +37 -1
- package/dist/task-queue/task-queue.d.ts.map +1 -1
- package/dist/task-queue/task-queue.js +104 -0
- package/dist/task-queue/task-queue.js.map +1 -1
- package/dist/task-queue/types.d.ts +11 -0
- package/dist/task-queue/types.d.ts.map +1 -1
- package/dist/types.d.ts +41 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/occ-json-write.d.ts.map +1 -1
- package/dist/utils/occ-json-write.js +7 -0
- package/dist/utils/occ-json-write.js.map +1 -1
- package/dist/utils/provisioning-lock.d.ts +19 -0
- package/dist/utils/provisioning-lock.d.ts.map +1 -1
- package/dist/utils/provisioning-lock.js +26 -0
- package/dist/utils/provisioning-lock.js.map +1 -1
- package/dist/validation/reference-validator.d.ts +17 -1
- package/dist/validation/reference-validator.d.ts.map +1 -1
- package/dist/validation/reference-validator.js +33 -10
- package/dist/validation/reference-validator.js.map +1 -1
- package/dist/worker/cms-worker.d.ts +38 -0
- package/dist/worker/cms-worker.d.ts.map +1 -1
- package/dist/worker/cms-worker.js +328 -25
- package/dist/worker/cms-worker.js.map +1 -1
- package/dist/worker/task-queue.d.ts +3 -3
- package/dist/worker/task-queue.d.ts.map +1 -1
- package/dist/worker/task-queue.js +2 -2
- package/dist/worker/task-queue.js.map +1 -1
- package/dist/worker/worker-status.d.ts +48 -0
- package/dist/worker/worker-status.d.ts.map +1 -0
- package/dist/worker/worker-status.js +53 -0
- package/dist/worker/worker-status.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormRenderer.js","sourceRoot":"","sources":["../../src/editor/FormRenderer.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FormRenderer.js","sourceRoot":"","sources":["../../src/editor/FormRenderer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SystemHealthPanel.d.ts","sourceRoot":"","sources":["../../../src/editor/admin/SystemHealthPanel.tsx"],"names":[],"mappings":"AAwKA,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,sBAAsB,2CAuB5E"}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* SystemHealthPanel - Admin-only modal surfacing the observability
|
|
5
|
+
* endpoints from PR-A1..A4: task-queue/worker liveness (Overview), task
|
|
6
|
+
* recovery (Tasks), and branch-directory recovery (Branches).
|
|
7
|
+
*
|
|
8
|
+
* Visibility is entirely the caller's responsibility -- Editor.tsx only
|
|
9
|
+
* renders/opens this for admins (see isAdmin(userContext?.groups) there).
|
|
10
|
+
* This component does not re-check that itself, same as GroupManager and
|
|
11
|
+
* PermissionManager rely on their callers for that gate.
|
|
12
|
+
*/
|
|
13
|
+
import { Alert, Badge, Button, Code, Group, Loader, Modal, Paper, SegmentedControl, SimpleGrid, Spoiler, Stack, Table, Tabs, Text, ThemeIcon, Tooltip, } from '@mantine/core';
|
|
14
|
+
import { IconAlertCircle, IconAlertTriangle } from '@tabler/icons-react';
|
|
15
|
+
import { modals } from '@mantine/modals';
|
|
16
|
+
import { useSystemHealth, } from './useSystemHealth.js';
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// Small pure helpers
|
|
19
|
+
// ============================================================================
|
|
20
|
+
const PROVISIONING_LOCK_FRESH_MS = 5 * 60_000;
|
|
21
|
+
const ORPHAN_YOUTH_THRESHOLD_MS = 15 * 60_000;
|
|
22
|
+
function truncate(value, max) {
|
|
23
|
+
return value.length > max ? `${value.slice(0, max)}…` : value;
|
|
24
|
+
}
|
|
25
|
+
/** Humanize a millisecond duration as e.g. "45s", "12m", "3h 5m", "2d 4h". */
|
|
26
|
+
function formatAgeMs(ms) {
|
|
27
|
+
const totalSeconds = Math.round(ms / 1000);
|
|
28
|
+
if (totalSeconds < 60)
|
|
29
|
+
return `${totalSeconds}s`;
|
|
30
|
+
const totalMinutes = Math.floor(totalSeconds / 60);
|
|
31
|
+
if (totalMinutes < 60)
|
|
32
|
+
return `${totalMinutes}m`;
|
|
33
|
+
const totalHours = Math.floor(totalMinutes / 60);
|
|
34
|
+
if (totalHours < 24)
|
|
35
|
+
return `${totalHours}h ${totalMinutes % 60}m`;
|
|
36
|
+
const totalDays = Math.floor(totalHours / 24);
|
|
37
|
+
return `${totalDays}d ${totalHours % 24}h`;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* [LOW-2] Whether the Purge button should be disabled for a corrupt-metadata
|
|
41
|
+
* or orphan row, and the tooltip explaining why.
|
|
42
|
+
* - Base branch: never purgeable -- the server already 400s
|
|
43
|
+
* ('The base branch directory can never be purged', see
|
|
44
|
+
* purgeBranchDirHandler in api/admin-branch-health.ts); this is UX
|
|
45
|
+
* honesty, not a new rail.
|
|
46
|
+
* - Fresh provisioning lock: provisioning may genuinely be in progress
|
|
47
|
+
* (mirrors the server's [H1] freshness rail) -- applies to BOTH kinds,
|
|
48
|
+
* not just orphans.
|
|
49
|
+
* - Orphan-only youth rail: a directory younger than
|
|
50
|
+
* ORPHAN_YOUTH_THRESHOLD_MS may still be a clone in progress that hasn't
|
|
51
|
+
* written branch.json yet. Corrupt-metadata dirs are exempt from this
|
|
52
|
+
* server-side (a parseable-then-corrupted file isn't a mid-clone
|
|
53
|
+
* signature), so they're exempt here too.
|
|
54
|
+
*/
|
|
55
|
+
function purgeGateFor(entry) {
|
|
56
|
+
if (entry.isBaseBranch) {
|
|
57
|
+
return { disabled: true, tooltip: 'The base branch can never be purged' };
|
|
58
|
+
}
|
|
59
|
+
const lockFresh = !!entry.provisioningLock && entry.provisioningLock.ageMs < PROVISIONING_LOCK_FRESH_MS;
|
|
60
|
+
if (entry.kind === 'orphan') {
|
|
61
|
+
const tooYoung = (entry.ageMs ?? 0) < ORPHAN_YOUTH_THRESHOLD_MS;
|
|
62
|
+
const disabled = lockFresh || tooYoung;
|
|
63
|
+
return { disabled, tooltip: disabled ? 'May be a clone in progress' : undefined };
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
disabled: lockFresh,
|
|
67
|
+
tooltip: lockFresh ? 'Provisioning may be in progress' : undefined,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
function workerLivenessBadge(worker, mode) {
|
|
71
|
+
if (mode === 'dev') {
|
|
72
|
+
return { color: 'gray', label: `Worker: ${worker.state}` };
|
|
73
|
+
}
|
|
74
|
+
switch (worker.state) {
|
|
75
|
+
case 'alive':
|
|
76
|
+
return { color: 'green', label: 'Worker: alive' };
|
|
77
|
+
case 'stale':
|
|
78
|
+
return { color: 'yellow', label: 'Worker: stale (possible crash)' };
|
|
79
|
+
case 'absent':
|
|
80
|
+
default:
|
|
81
|
+
return { color: 'red', label: 'Worker: absent' };
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Mirrors BranchManager.tsx's statusColorMap -- kept local (not exported
|
|
85
|
+
// there) rather than shared, same tiny lookup either way.
|
|
86
|
+
const branchStatusColorMap = {
|
|
87
|
+
editing: 'brand',
|
|
88
|
+
submitted: 'green',
|
|
89
|
+
approved: 'teal',
|
|
90
|
+
locked: 'yellow',
|
|
91
|
+
};
|
|
92
|
+
const TASK_STATUS_OPTIONS = [
|
|
93
|
+
{ label: 'Pending', value: 'pending' },
|
|
94
|
+
{ label: 'Processing', value: 'processing' },
|
|
95
|
+
{ label: 'Completed', value: 'completed' },
|
|
96
|
+
{ label: 'Failed', value: 'failed' },
|
|
97
|
+
{ label: 'Corrupt', value: 'corrupt' },
|
|
98
|
+
];
|
|
99
|
+
const TASK_STATUS_VALUES = TASK_STATUS_OPTIONS.map((o) => o.value);
|
|
100
|
+
function isAdminTaskStatus(value) {
|
|
101
|
+
return TASK_STATUS_VALUES.includes(value);
|
|
102
|
+
}
|
|
103
|
+
// ============================================================================
|
|
104
|
+
// Confirm-modal copy (races/limitations these actions accept -- see
|
|
105
|
+
// api/admin.ts and api/admin-branch-health.ts's handler docstrings)
|
|
106
|
+
// ============================================================================
|
|
107
|
+
const RETRY_CONFIRM_TEXT = 'Retrying may duplicate work if the task also runs another way; task actions are safe to run twice.';
|
|
108
|
+
function deleteConfirmText(status) {
|
|
109
|
+
if (status === 'pending') {
|
|
110
|
+
return 'The worker may already have picked this task up — deleting now does not guarantee it never runs, and in rare cases it can still run after the next worker restart.';
|
|
111
|
+
}
|
|
112
|
+
return 'This permanently deletes the task file. This cannot be undone.';
|
|
113
|
+
}
|
|
114
|
+
const MARK_MERGED_CONFIRM_TEXT = 'In production the server cannot verify the PR actually merged (no GitHub access from the API) — confirm the PR is merged on GitHub first.';
|
|
115
|
+
const REPAIR_CONFIRM_TEXT = "Recreates metadata with defaults: status becomes 'editing', you become the creator, branch ACLs are reset. The corrupt file is archived alongside for forensics.";
|
|
116
|
+
const PURGE_CONFIRM_TEXT = 'The directory is moved to a hidden trash name and kept for 30 days, then deleted. Any git work inside was never pushed and will be lost when the trash is swept.';
|
|
117
|
+
export function SystemHealthPanel({ opened, onClose }) {
|
|
118
|
+
const health = useSystemHealth({ isOpen: opened });
|
|
119
|
+
return (_jsx(Modal, { opened: opened, onClose: onClose, title: "System health", size: "xl", children: _jsxs(Tabs, { defaultValue: "overview", children: [_jsxs(Tabs.List, { children: [_jsx(Tabs.Tab, { value: "overview", children: "Overview" }), _jsx(Tabs.Tab, { value: "tasks", children: "Tasks" }), _jsx(Tabs.Tab, { value: "branches", children: "Branches" })] }), _jsx(Tabs.Panel, { value: "overview", pt: "md", children: _jsx(OverviewTab, { health: health }) }), _jsx(Tabs.Panel, { value: "tasks", pt: "md", children: _jsx(TasksTab, { health: health }) }), _jsx(Tabs.Panel, { value: "branches", pt: "md", children: _jsx(BranchesTab, { health: health }) })] }) }));
|
|
120
|
+
}
|
|
121
|
+
// ============================================================================
|
|
122
|
+
// Overview tab
|
|
123
|
+
// ============================================================================
|
|
124
|
+
function OverviewTab({ health }) {
|
|
125
|
+
const { status, statusLoading, isRecentFatalError, error, refresh } = health;
|
|
126
|
+
if (!status && statusLoading) {
|
|
127
|
+
return (_jsxs(Group, { justify: "center", py: "xl", children: [_jsx(Loader, { size: "md" }), _jsx(Text, { size: "sm", c: "dimmed", children: "Loading status..." })] }));
|
|
128
|
+
}
|
|
129
|
+
if (!status) {
|
|
130
|
+
return (_jsxs(Stack, { align: "center", py: "xl", gap: "sm", children: [_jsx(Text, { size: "sm", c: "dimmed", children: "No status available." }), _jsx(Button, { size: "xs", variant: "light", onClick: () => refresh(), children: "Refresh" })] }));
|
|
131
|
+
}
|
|
132
|
+
const liveness = workerLivenessBadge(status.worker, status.mode);
|
|
133
|
+
const lastFatalError = status.workerStatus?.lastFatalError;
|
|
134
|
+
const lastGitSync = status.workerStatus?.lastGitSync;
|
|
135
|
+
return (_jsxs(Stack, { gap: "md", children: [error && (_jsx(Alert, { color: "red", icon: _jsx(IconAlertCircle, { size: 16 }), variant: "light", children: error })), _jsxs(Group, { gap: "sm", children: [_jsx(Badge, { color: liveness.color, variant: "light", size: "lg", children: liveness.label }), status.mode === 'dev' && (_jsx(Text, { size: "xs", c: "dimmed", children: "No worker runs in dev mode" }))] }), isRecentFatalError && lastFatalError && (_jsxs(Alert, { color: "red", icon: _jsx(IconAlertCircle, { size: 16 }), title: "Worker crash detected", children: [_jsx(Text, { size: "sm", children: lastFatalError.message }), _jsxs(Text, { size: "xs", c: "dimmed", mt: 4, children: ["at ", lastFatalError.at, " (", lastFatalError.phase, ")"] })] })), status.statusReadError && (_jsxs(Text, { size: "xs", c: "orange", children: ["Warning: could not read worker status (", status.statusReadError, ")"] })), status.workerStatus?.lastGitSyncError && (_jsxs(Alert, { color: "orange", icon: _jsx(IconAlertCircle, { size: 16 }), title: "Last git sync failed", children: [_jsx(Text, { size: "sm", children: status.workerStatus.lastGitSyncError.message }), _jsxs(Text, { size: "xs", c: "dimmed", mt: 4, children: ["at ", status.workerStatus.lastGitSyncError.at] })] })), lastGitSync && (_jsxs(Paper, { withBorder: true, p: "sm", radius: "md", children: [_jsx(Text, { size: "sm", fw: 600, children: "Last git sync" }), _jsxs(Text, { size: "xs", c: "dimmed", children: [status.workerStatus?.lastGitSyncAt ?? 'unknown time', " \u00B7 ", lastGitSync.durationMs, "ms \u00B7", ' ', lastGitSync.rebased.length, " rebased \u00B7 ", lastGitSync.skippedDirty.length, " skipped (dirty)"] }), lastGitSync.failed.length > 0 && (_jsx(Spoiler, { maxHeight: 0, showLabel: `${lastGitSync.failed.length} failed — show details`, hideLabel: "Hide", children: _jsx(Stack, { gap: 4, mt: 4, children: lastGitSync.failed.map((f) => (_jsxs(Text, { size: "xs", c: "red", children: [f.branch, ": ", f.error] }, f.branch))) }) }))] })), _jsx(SimpleGrid, { cols: 5, spacing: "xs", children: ['pending', 'processing', 'completed', 'failed', 'corrupt'].map((key) => (_jsxs(Paper, { withBorder: true, p: "xs", radius: "md", ta: "center", children: [_jsx(Text, { size: "xs", c: "dimmed", tt: "capitalize", children: key }), _jsx(Text, { size: "lg", fw: 700, c: (key === 'failed' || key === 'corrupt') && status.queue[key] > 0 ? 'red' : undefined, children: status.queue[key] })] }, key))) }), status.queue.oldestPendingAgeMs !== undefined && (_jsxs(Text, { size: "xs", c: "dimmed", children: ["Oldest pending task: ", formatAgeMs(status.queue.oldestPendingAgeMs), " old"] })), _jsxs(Group, { justify: "space-between", align: "center", children: [_jsxs(Text, { size: "xs", c: "dimmed", children: ["Generated at ", status.generatedAt] }), _jsx(Button, { size: "xs", variant: "light", onClick: () => refresh(), loading: statusLoading, children: "Refresh" })] }), _jsx(Text, { size: "xs", c: "dimmed", children: "Data may lag up to ~60s (shared-filesystem caching)" })] }));
|
|
136
|
+
}
|
|
137
|
+
// ============================================================================
|
|
138
|
+
// Tasks tab
|
|
139
|
+
// ============================================================================
|
|
140
|
+
function TasksTab({ health }) {
|
|
141
|
+
const { taskStatus, setTaskStatus, tasks, tasksLoading } = health;
|
|
142
|
+
const isCorrupt = taskStatus === 'corrupt';
|
|
143
|
+
const taskRows = tasks?.tasks ?? [];
|
|
144
|
+
const corruptRows = tasks?.corruptFiles ?? [];
|
|
145
|
+
const isEmpty = isCorrupt ? corruptRows.length === 0 : taskRows.length === 0;
|
|
146
|
+
const canDelete = taskStatus === 'pending' || taskStatus === 'failed' || taskStatus === 'corrupt';
|
|
147
|
+
const handleRetryClick = (task) => {
|
|
148
|
+
modals.openConfirmModal({
|
|
149
|
+
title: 'Retry task',
|
|
150
|
+
children: _jsx(Text, { size: "sm", children: RETRY_CONFIRM_TEXT }),
|
|
151
|
+
labels: { confirm: 'Retry', cancel: 'Cancel' },
|
|
152
|
+
confirmProps: { color: 'brand' },
|
|
153
|
+
onConfirm: () => health.retryTask(task.id),
|
|
154
|
+
});
|
|
155
|
+
};
|
|
156
|
+
const handleDeleteClick = (status, fileName) => {
|
|
157
|
+
modals.openConfirmModal({
|
|
158
|
+
title: 'Delete task file',
|
|
159
|
+
children: _jsx(Text, { size: "sm", children: deleteConfirmText(status) }),
|
|
160
|
+
labels: { confirm: 'Delete', cancel: 'Cancel' },
|
|
161
|
+
confirmProps: { color: 'red' },
|
|
162
|
+
onConfirm: () => health.deleteTask(status, fileName),
|
|
163
|
+
});
|
|
164
|
+
};
|
|
165
|
+
return (_jsxs(Stack, { gap: "md", children: [_jsx(SegmentedControl, { data: TASK_STATUS_OPTIONS, value: taskStatus, onChange: (value) => {
|
|
166
|
+
if (isAdminTaskStatus(value))
|
|
167
|
+
setTaskStatus(value);
|
|
168
|
+
} }), tasksLoading && taskRows.length === 0 && corruptRows.length === 0 ? (_jsxs(Group, { justify: "center", py: "xl", children: [_jsx(Loader, { size: "sm" }), _jsx(Text, { size: "sm", c: "dimmed", children: "Loading tasks..." })] })) : isEmpty ? (_jsxs(Text, { size: "sm", c: "dimmed", py: "md", children: ["No ", taskStatus, " tasks."] })) : (_jsx(Table.ScrollContainer, { minWidth: 600, children: _jsxs(Table, { children: [_jsx(Table.Thead, { children: _jsx(Table.Tr, { children: isCorrupt ? (_jsxs(_Fragment, { children: [_jsx(Table.Th, { children: "File" }), _jsx(Table.Th, { children: "Size" }), _jsx(Table.Th, { children: "Modified" }), _jsx(Table.Th, { children: "Raw snippet" }), _jsx(Table.Th, { children: "Actions" })] })) : (_jsxs(_Fragment, { children: [_jsx(Table.Th, { children: "ID" }), _jsx(Table.Th, { children: "Action" }), _jsx(Table.Th, { children: "Created" }), _jsx(Table.Th, { children: "Retries" }), _jsx(Table.Th, { children: "Error" }), _jsx(Table.Th, { children: "Actions" })] })) }) }), _jsx(Table.Tbody, { children: isCorrupt
|
|
169
|
+
? corruptRows.map((file) => (_jsxs(Table.Tr, { children: [_jsx(Table.Td, { children: _jsx("span", { title: file.fileName, children: truncate(file.fileName, 30) }) }), _jsxs(Table.Td, { children: [file.size, " bytes"] }), _jsx(Table.Td, { children: file.mtime }), _jsx(Table.Td, { children: _jsx(Code, { block: true, style: { maxWidth: 320, whiteSpace: 'pre-wrap' }, children: file.rawSnippet }) }), _jsx(Table.Td, { children: _jsx(Button, { size: "xs", variant: "light", color: "red", "data-testid": `delete-task-${file.fileName}`, onClick: () => handleDeleteClick('corrupt', file.fileName), children: "Delete" }) })] }, file.fileName)))
|
|
170
|
+
: taskRows.map((task) => (_jsxs(Table.Tr, { children: [_jsx(Table.Td, { children: _jsx("span", { title: task.id, children: truncate(task.id, 12) }) }), _jsx(Table.Td, { children: task.action }), _jsx(Table.Td, { children: task.createdAt }), _jsx(Table.Td, { children: task.retryCount ?? 0 }), _jsx(Table.Td, { children: task.error ? (_jsx(Tooltip, { label: task.error, multiline: true, maw: 400, children: _jsx(Text, { size: "xs", style: { cursor: 'help' }, children: truncate(task.error, 50) }) })) : (_jsx(Text, { size: "xs", c: "dimmed", children: "\u2014" })) }), _jsx(Table.Td, { children: _jsxs(Group, { gap: "xs", children: [taskStatus === 'failed' && (_jsx(Button, { size: "xs", variant: "light", "data-testid": `retry-task-${task.id}`, onClick: () => handleRetryClick(task), children: "Retry" })), canDelete && (_jsx(Button, { size: "xs", variant: "light", color: "red", "data-testid": `delete-task-${task.id}`, onClick: () => handleDeleteClick(taskStatus, `${task.id}.json`), children: "Delete" }))] }) })] }, task.id))) })] }) }))] }));
|
|
171
|
+
}
|
|
172
|
+
// ============================================================================
|
|
173
|
+
// Branches tab
|
|
174
|
+
// ============================================================================
|
|
175
|
+
function BranchesTab({ health }) {
|
|
176
|
+
const { branchHealth, branchHealthLoading } = health;
|
|
177
|
+
const entries = branchHealth?.entries ?? [];
|
|
178
|
+
const handleMarkMergedClick = (branchName) => {
|
|
179
|
+
modals.openConfirmModal({
|
|
180
|
+
title: 'Mark branch as merged',
|
|
181
|
+
children: _jsx(Text, { size: "sm", children: MARK_MERGED_CONFIRM_TEXT }),
|
|
182
|
+
labels: { confirm: 'Mark merged', cancel: 'Cancel' },
|
|
183
|
+
confirmProps: { color: 'brand' },
|
|
184
|
+
onConfirm: () => health.markMerged(branchName),
|
|
185
|
+
});
|
|
186
|
+
};
|
|
187
|
+
const handleRepairClick = (dirName) => {
|
|
188
|
+
modals.openConfirmModal({
|
|
189
|
+
title: 'Repair metadata',
|
|
190
|
+
children: _jsx(Text, { size: "sm", children: REPAIR_CONFIRM_TEXT }),
|
|
191
|
+
labels: { confirm: 'Repair', cancel: 'Cancel' },
|
|
192
|
+
confirmProps: { color: 'brand' },
|
|
193
|
+
onConfirm: () => health.repairDir(dirName),
|
|
194
|
+
});
|
|
195
|
+
};
|
|
196
|
+
const handlePurgeClick = (dirName) => {
|
|
197
|
+
modals.openConfirmModal({
|
|
198
|
+
title: 'Purge directory',
|
|
199
|
+
children: _jsx(Text, { size: "sm", children: PURGE_CONFIRM_TEXT }),
|
|
200
|
+
labels: { confirm: 'Purge', cancel: 'Cancel' },
|
|
201
|
+
confirmProps: { color: 'red' },
|
|
202
|
+
onConfirm: () => health.purgeDir(dirName),
|
|
203
|
+
});
|
|
204
|
+
};
|
|
205
|
+
if (branchHealthLoading && entries.length === 0) {
|
|
206
|
+
return (_jsxs(Group, { justify: "center", py: "xl", children: [_jsx(Loader, { size: "sm" }), _jsx(Text, { size: "sm", c: "dimmed", children: "Loading branch health..." })] }));
|
|
207
|
+
}
|
|
208
|
+
if (entries.length === 0) {
|
|
209
|
+
return (_jsx(Text, { size: "sm", c: "dimmed", py: "md", children: "No branch directories found." }));
|
|
210
|
+
}
|
|
211
|
+
return (_jsx(Table.ScrollContainer, { minWidth: 700, children: _jsxs(Table, { children: [_jsx(Table.Thead, { children: _jsxs(Table.Tr, { children: [_jsx(Table.Th, { children: "Name" }), _jsx(Table.Th, { children: "Status" }), _jsx(Table.Th, { children: "PR" }), _jsx(Table.Th, { children: "Sync" }), _jsx(Table.Th, { children: "Warnings" }), _jsx(Table.Th, { children: "Updated" }), _jsx(Table.Th, { children: "Actions" })] }) }), _jsx(Table.Tbody, { children: entries.map((entry) => (_jsx(BranchHealthRow, { entry: entry, onMarkMerged: handleMarkMergedClick, onRepair: handleRepairClick, onPurge: handlePurgeClick }, entry.dirName))) })] }) }));
|
|
212
|
+
}
|
|
213
|
+
function BranchHealthRow({ entry, onMarkMerged, onRepair, onPurge, }) {
|
|
214
|
+
if (entry.kind === 'healthy' && entry.branch) {
|
|
215
|
+
const b = entry.branch;
|
|
216
|
+
// [LOW-3] The worker rebases every non-terminal branch, including
|
|
217
|
+
// 'locked' ones (only 'submitted'/'approved' -- under an active PR --
|
|
218
|
+
// and 'archived' -- already merged -- are excluded, see
|
|
219
|
+
// rebaseActiveBranches' skip logic in worker/cms-worker.ts). Gating on
|
|
220
|
+
// `status === 'editing'` hid rebase failures on locked branches even
|
|
221
|
+
// though the worker was still failing to rebase them every cycle.
|
|
222
|
+
const showRebaseFailure = !['submitted', 'approved', 'archived'].includes(b.status) && !!b.rebaseFailure;
|
|
223
|
+
const canMarkMerged = (b.status === 'submitted' || b.status === 'approved') && !!b.pullRequestNumber;
|
|
224
|
+
return (_jsxs(Table.Tr, { children: [_jsx(Table.Td, { children: _jsxs(Group, { gap: 4, wrap: "nowrap", children: [_jsx(Text, { size: "sm", children: entry.dirName }), entry.isBaseBranch && (_jsx(Badge, { size: "xs", color: "gray", variant: "outline", children: "base" }))] }) }), _jsx(Table.Td, { children: _jsx(Badge, { color: branchStatusColorMap[b.status] ?? 'neutral', variant: "light", children: b.status }) }), _jsx(Table.Td, { children: b.pullRequestNumber ? (_jsxs(Text, { size: "xs", c: "blue", component: "a", href: b.pullRequestUrl, target: "_blank", rel: "noopener noreferrer", style: { textDecoration: 'underline' }, children: ["PR #", b.pullRequestNumber, b.pullRequestState ? ` (${b.pullRequestState})` : ''] })) : (_jsx(Text, { size: "xs", c: "dimmed", children: "\u2014" })) }), _jsx(Table.Td, { children: b.syncStatus === 'sync-failed' ? (_jsx(Tooltip, { label: "GitHub sync failed \u2014 retry from the Tasks tab", children: _jsx(Badge, { color: "red", variant: "light", children: "sync-failed" }) })) : b.syncStatus === 'pending-sync' ? (_jsx(Badge, { color: "gray", variant: "light", children: "pending-sync" })) : null }), _jsx(Table.Td, { children: _jsxs(Group, { gap: 6, wrap: "nowrap", children: [!!b.conflictFiles?.length && (_jsxs(Badge, { color: "orange", variant: "light", children: [b.conflictFiles.length, " conflict", b.conflictFiles.length === 1 ? '' : 's'] })), showRebaseFailure && b.rebaseFailure && (_jsx(Tooltip, { label: `${b.rebaseFailure.message} (failing since ${b.rebaseFailure.firstAt})`, multiline: true, maw: 320, children: _jsx(ThemeIcon, { color: "yellow", variant: "light", size: "sm", radius: "xl", "data-testid": `rebase-failure-${entry.dirName}`, children: _jsx(IconAlertTriangle, { size: 12 }) }) }))] }) }), _jsx(Table.Td, { children: _jsx(Text, { size: "xs", c: "dimmed", children: b.updatedAt }) }), _jsx(Table.Td, { children: canMarkMerged && (_jsx(Button, { size: "xs", variant: "light", "data-testid": `mark-merged-${b.name}`, onClick: () => onMarkMerged(b.name), children: "Mark merged" })) })] }));
|
|
225
|
+
}
|
|
226
|
+
if (entry.kind === 'corrupt-metadata') {
|
|
227
|
+
const purgeGate = purgeGateFor(entry);
|
|
228
|
+
return (_jsxs(Table.Tr, { style: { backgroundColor: 'var(--mantine-color-red-light)' }, children: [_jsx(Table.Td, { children: entry.dirName }), _jsx(Table.Td, { children: _jsx(Badge, { color: "red", variant: "light", children: "corrupt metadata" }) }), _jsx(Table.Td, { colSpan: 3, children: _jsx(Tooltip, { label: entry.parseError, multiline: true, maw: 400, children: _jsx(Text, { size: "xs", c: "red", children: truncate(entry.parseError ?? 'Unknown parse error', 60) }) }) }), _jsx(Table.Td, { children: _jsx(Text, { size: "xs", c: "dimmed", children: entry.metaMtime ?? '—' }) }), _jsx(Table.Td, { children: _jsxs(Group, { gap: "xs", wrap: "nowrap", children: [_jsx(Button, { size: "xs", variant: "light", "data-testid": `repair-dir-${entry.dirName}`, onClick: () => onRepair(entry.dirName), children: "Repair" }), _jsx(Tooltip, { label: purgeGate.tooltip, disabled: !purgeGate.disabled, children: _jsx("span", { children: _jsx(Button, { size: "xs", variant: "light", color: "red", disabled: purgeGate.disabled, "data-testid": `purge-dir-${entry.dirName}`, onClick: () => onPurge(entry.dirName), children: "Purge" }) }) })] }) })] }));
|
|
229
|
+
}
|
|
230
|
+
// orphan
|
|
231
|
+
const purgeGate = purgeGateFor(entry);
|
|
232
|
+
return (_jsxs(Table.Tr, { style: { opacity: 0.65 }, children: [_jsx(Table.Td, { children: entry.dirName }), _jsx(Table.Td, { children: _jsx(Badge, { color: "gray", variant: "outline", children: "orphan" }) }), _jsx(Table.Td, { colSpan: 3, children: _jsxs(Text, { size: "xs", c: "dimmed", children: [entry.ageMs !== undefined ? `${formatAgeMs(entry.ageMs)} old` : 'unknown age', " \u00B7", ' ', entry.hasGitDir ? 'has .git' : 'no .git'] }) }), _jsx(Table.Td, { children: _jsx(Text, { size: "xs", c: "dimmed", children: entry.dirMtime ?? '—' }) }), _jsx(Table.Td, { children: _jsx(Tooltip, { label: purgeGate.tooltip, disabled: !purgeGate.disabled, children: _jsx("span", { children: _jsx(Button, { size: "xs", variant: "light", color: "red", disabled: purgeGate.disabled, "data-testid": `purge-dir-${entry.dirName}`, onClick: () => onPurge(entry.dirName), children: "Purge" }) }) }) })] }));
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=SystemHealthPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SystemHealthPanel.js","sourceRoot":"","sources":["../../../src/editor/admin/SystemHealthPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { AdminStatusData, AdminTasksData, ListAdminTasksParams, DeleteTaskParams } from '../../api/admin';
|
|
2
|
+
import type { BranchHealthData } from '../../api/admin-branch-health';
|
|
3
|
+
export type AdminTaskStatus = ListAdminTasksParams['status'];
|
|
4
|
+
export type DeletableTaskStatus = DeleteTaskParams['status'];
|
|
5
|
+
export interface UseSystemHealthOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Whether the System Health panel is currently open. Data loads (and
|
|
8
|
+
* polling starts) only while true -- mirrors useGroupManager's `isOpen`.
|
|
9
|
+
*/
|
|
10
|
+
isOpen: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface UseSystemHealthReturn {
|
|
13
|
+
status: AdminStatusData | null;
|
|
14
|
+
statusLoading: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* True when workerStatus.lastFatalError exists and is < 30 min old, as of
|
|
17
|
+
* the last fetch. Computed at fetch time (not in the component's render)
|
|
18
|
+
* so the panel never calls Date.now() during render -- see the
|
|
19
|
+
* react-hooks/purity rule this sidesteps.
|
|
20
|
+
*/
|
|
21
|
+
isRecentFatalError: boolean;
|
|
22
|
+
tasks: AdminTasksData | null;
|
|
23
|
+
tasksLoading: boolean;
|
|
24
|
+
taskStatus: AdminTaskStatus;
|
|
25
|
+
/** Updates the selected Tasks-tab status AND refetches tasks for it. */
|
|
26
|
+
setTaskStatus: (status: AdminTaskStatus) => void;
|
|
27
|
+
branchHealth: BranchHealthData | null;
|
|
28
|
+
branchHealthLoading: boolean;
|
|
29
|
+
/** Last fetch error across status/tasks/branchHealth, if any. */
|
|
30
|
+
error: string | null;
|
|
31
|
+
/** Refetches status, tasks (at the current taskStatus), and branchHealth. */
|
|
32
|
+
refresh: () => Promise<void>;
|
|
33
|
+
retryTask: (taskId: string) => Promise<void>;
|
|
34
|
+
deleteTask: (status: DeletableTaskStatus, fileName: string) => Promise<void>;
|
|
35
|
+
purgeDir: (dirName: string) => Promise<void>;
|
|
36
|
+
repairDir: (dirName: string) => Promise<void>;
|
|
37
|
+
markMerged: (branchName: string) => Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
export declare function useSystemHealth(options: UseSystemHealthOptions): UseSystemHealthReturn;
|
|
40
|
+
//# sourceMappingURL=useSystemHealth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSystemHealth.d.ts","sourceRoot":"","sources":["../../../src/editor/admin/useSystemHealth.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAYrE,MAAM,MAAM,eAAe,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAA;AAC5D,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAA;AAE5D,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAA;IAC9B,aAAa,EAAE,OAAO,CAAA;IACtB;;;;;OAKG;IACH,kBAAkB,EAAE,OAAO,CAAA;IAC3B,KAAK,EAAE,cAAc,GAAG,IAAI,CAAA;IAC5B,YAAY,EAAE,OAAO,CAAA;IACrB,UAAU,EAAE,eAAe,CAAA;IAC3B,wEAAwE;IACxE,aAAa,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAA;IAChD,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACrC,mBAAmB,EAAE,OAAO,CAAA;IAC5B,iEAAiE;IACjE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,6EAA6E;IAC7E,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5C,UAAU,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5E,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5C,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7C,UAAU,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAClD;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,qBAAqB,CAsMtF"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
/**
|
|
3
|
+
* useSystemHealth - Data + actions for the admin System Health panel (PR-U1).
|
|
4
|
+
*
|
|
5
|
+
* Mirrors useGroupManager's shape: loads on open, exposes typed action
|
|
6
|
+
* helpers that each notify then refresh(). Unlike useGroupManager, this also
|
|
7
|
+
* polls every 30s while the panel stays open (cleared on close/unmount) --
|
|
8
|
+
* queue depth and worker liveness go stale quickly, and the panel has no
|
|
9
|
+
* other way to catch a worker coming back up or a task finishing.
|
|
10
|
+
*/
|
|
11
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
12
|
+
import { notifications } from '@mantine/notifications';
|
|
13
|
+
import { useApiClient } from '../context/index.js';
|
|
14
|
+
const POLL_INTERVAL_MS = 30_000;
|
|
15
|
+
/**
|
|
16
|
+
* Crash-loop rider window: a worker that fatally exits and restarts
|
|
17
|
+
* repeatedly can flap between 'absent' and 'alive' liveness and never sit
|
|
18
|
+
* still long enough to read 'stale' -- surfacing a recent lastFatalError
|
|
19
|
+
* regardless of liveness state is the only way the panel catches that.
|
|
20
|
+
*/
|
|
21
|
+
const CRASH_LOOP_WINDOW_MS = 30 * 60_000;
|
|
22
|
+
export function useSystemHealth(options) {
|
|
23
|
+
const apiClient = useApiClient();
|
|
24
|
+
const [status, setStatus] = useState(null);
|
|
25
|
+
const [statusLoading, setStatusLoading] = useState(false);
|
|
26
|
+
const [isRecentFatalError, setIsRecentFatalError] = useState(false);
|
|
27
|
+
const [tasks, setTasks] = useState(null);
|
|
28
|
+
const [tasksLoading, setTasksLoading] = useState(false);
|
|
29
|
+
const [taskStatus, setTaskStatusState] = useState('failed');
|
|
30
|
+
const [branchHealth, setBranchHealth] = useState(null);
|
|
31
|
+
const [branchHealthLoading, setBranchHealthLoading] = useState(false);
|
|
32
|
+
const [error, setError] = useState(null);
|
|
33
|
+
// refresh() has no status argument, so it needs the CURRENT taskStatus
|
|
34
|
+
// without taking a dependency on it (that would tear down/rebuild the
|
|
35
|
+
// polling interval below every time the Tasks tab's segmented control
|
|
36
|
+
// changes). A ref sidesteps the stale-closure problem cleanly.
|
|
37
|
+
const taskStatusRef = useRef(taskStatus);
|
|
38
|
+
taskStatusRef.current = taskStatus;
|
|
39
|
+
const fetchStatus = useCallback(async () => {
|
|
40
|
+
setStatusLoading(true);
|
|
41
|
+
try {
|
|
42
|
+
const result = await apiClient.admin.status();
|
|
43
|
+
if (!result.ok)
|
|
44
|
+
throw new Error(result.error || 'Failed to load status');
|
|
45
|
+
const data = result.data ?? null;
|
|
46
|
+
setStatus(data);
|
|
47
|
+
// Date.now() belongs here (an async callback, evaluated at fetch time)
|
|
48
|
+
// rather than in the component's render body.
|
|
49
|
+
const fatalAt = data?.workerStatus?.lastFatalError?.at;
|
|
50
|
+
setIsRecentFatalError(!!fatalAt && Date.now() - new Date(fatalAt).getTime() < CRASH_LOOP_WINDOW_MS);
|
|
51
|
+
setError(null);
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
setError(err instanceof Error ? err.message : 'Failed to load status');
|
|
55
|
+
}
|
|
56
|
+
finally {
|
|
57
|
+
setStatusLoading(false);
|
|
58
|
+
}
|
|
59
|
+
}, [apiClient]);
|
|
60
|
+
const fetchTasks = useCallback(async (forStatus) => {
|
|
61
|
+
setTasksLoading(true);
|
|
62
|
+
try {
|
|
63
|
+
const result = await apiClient.admin.listTasks({ status: forStatus });
|
|
64
|
+
if (!result.ok)
|
|
65
|
+
throw new Error(result.error || 'Failed to load tasks');
|
|
66
|
+
setTasks(result.data ?? null);
|
|
67
|
+
setError(null);
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
setError(err instanceof Error ? err.message : 'Failed to load tasks');
|
|
71
|
+
}
|
|
72
|
+
finally {
|
|
73
|
+
setTasksLoading(false);
|
|
74
|
+
}
|
|
75
|
+
}, [apiClient]);
|
|
76
|
+
const fetchBranchHealth = useCallback(async () => {
|
|
77
|
+
setBranchHealthLoading(true);
|
|
78
|
+
try {
|
|
79
|
+
const result = await apiClient.admin.branchHealth();
|
|
80
|
+
if (!result.ok)
|
|
81
|
+
throw new Error(result.error || 'Failed to load branch health');
|
|
82
|
+
setBranchHealth(result.data ?? null);
|
|
83
|
+
setError(null);
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
setError(err instanceof Error ? err.message : 'Failed to load branch health');
|
|
87
|
+
}
|
|
88
|
+
finally {
|
|
89
|
+
setBranchHealthLoading(false);
|
|
90
|
+
}
|
|
91
|
+
}, [apiClient]);
|
|
92
|
+
const refresh = useCallback(async () => {
|
|
93
|
+
await Promise.all([fetchStatus(), fetchTasks(taskStatusRef.current), fetchBranchHealth()]);
|
|
94
|
+
}, [fetchStatus, fetchTasks, fetchBranchHealth]);
|
|
95
|
+
const setTaskStatus = useCallback((next) => {
|
|
96
|
+
setTaskStatusState(next);
|
|
97
|
+
void fetchTasks(next);
|
|
98
|
+
}, [fetchTasks]);
|
|
99
|
+
// Load on open, and poll every 30s while open. taskStatus deliberately
|
|
100
|
+
// excluded from deps -- refresh() reads it via taskStatusRef, so switching
|
|
101
|
+
// the Tasks tab's status doesn't tear down/restart the poll timer.
|
|
102
|
+
useEffect(() => {
|
|
103
|
+
if (!options.isOpen)
|
|
104
|
+
return;
|
|
105
|
+
refresh();
|
|
106
|
+
const interval = setInterval(() => {
|
|
107
|
+
refresh();
|
|
108
|
+
}, POLL_INTERVAL_MS);
|
|
109
|
+
return () => clearInterval(interval);
|
|
110
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps -- refresh is stable (useCallback); see comment above
|
|
111
|
+
}, [options.isOpen]);
|
|
112
|
+
const retryTask = useCallback(async (taskId) => {
|
|
113
|
+
try {
|
|
114
|
+
const result = await apiClient.admin.retryTask({ taskId });
|
|
115
|
+
if (!result.ok)
|
|
116
|
+
throw new Error(result.error || 'Failed to retry task');
|
|
117
|
+
notifications.show({
|
|
118
|
+
message: `Task requeued as ${result.data?.newTaskId ?? 'a new task'}`,
|
|
119
|
+
color: 'green',
|
|
120
|
+
});
|
|
121
|
+
await refresh();
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
const message = err instanceof Error ? err.message : 'Failed to retry task';
|
|
125
|
+
notifications.show({ message, color: 'red' });
|
|
126
|
+
}
|
|
127
|
+
}, [apiClient, refresh]);
|
|
128
|
+
const deleteTask = useCallback(async (status, fileName) => {
|
|
129
|
+
try {
|
|
130
|
+
const result = await apiClient.admin.deleteTask({ status, fileName });
|
|
131
|
+
if (!result.ok)
|
|
132
|
+
throw new Error(result.error || 'Failed to delete task');
|
|
133
|
+
notifications.show({ message: 'Task file deleted', color: 'green' });
|
|
134
|
+
await refresh();
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
const message = err instanceof Error ? err.message : 'Failed to delete task';
|
|
138
|
+
notifications.show({ message, color: 'red' });
|
|
139
|
+
}
|
|
140
|
+
}, [apiClient, refresh]);
|
|
141
|
+
const purgeDir = useCallback(async (dirName) => {
|
|
142
|
+
try {
|
|
143
|
+
const result = await apiClient.admin.purgeBranchDir({ dirName });
|
|
144
|
+
if (!result.ok)
|
|
145
|
+
throw new Error(result.error || 'Failed to purge directory');
|
|
146
|
+
notifications.show({
|
|
147
|
+
message: `Directory moved to trash as ${result.data?.trashedAs ?? 'trash'}`,
|
|
148
|
+
color: 'green',
|
|
149
|
+
});
|
|
150
|
+
await refresh();
|
|
151
|
+
}
|
|
152
|
+
catch (err) {
|
|
153
|
+
const message = err instanceof Error ? err.message : 'Failed to purge directory';
|
|
154
|
+
notifications.show({ message, color: 'red' });
|
|
155
|
+
}
|
|
156
|
+
}, [apiClient, refresh]);
|
|
157
|
+
const repairDir = useCallback(async (dirName) => {
|
|
158
|
+
try {
|
|
159
|
+
const result = await apiClient.admin.repairBranchDir({ dirName });
|
|
160
|
+
if (!result.ok)
|
|
161
|
+
throw new Error(result.error || 'Failed to repair metadata');
|
|
162
|
+
notifications.show({
|
|
163
|
+
message: `Metadata repaired (corrupt file archived as ${result.data?.archivedAs ?? 'archive'})`,
|
|
164
|
+
color: 'green',
|
|
165
|
+
});
|
|
166
|
+
await refresh();
|
|
167
|
+
}
|
|
168
|
+
catch (err) {
|
|
169
|
+
const message = err instanceof Error ? err.message : 'Failed to repair metadata';
|
|
170
|
+
notifications.show({ message, color: 'red' });
|
|
171
|
+
}
|
|
172
|
+
}, [apiClient, refresh]);
|
|
173
|
+
const markMerged = useCallback(async (branchName) => {
|
|
174
|
+
try {
|
|
175
|
+
const result = await apiClient.workflow.markMerged({ branch: branchName });
|
|
176
|
+
if (!result.ok)
|
|
177
|
+
throw new Error(result.error || 'Failed to mark branch as merged');
|
|
178
|
+
notifications.show({ message: `Branch "${branchName}" marked as merged`, color: 'green' });
|
|
179
|
+
await refresh();
|
|
180
|
+
}
|
|
181
|
+
catch (err) {
|
|
182
|
+
const message = err instanceof Error ? err.message : 'Failed to mark branch as merged';
|
|
183
|
+
notifications.show({ message, color: 'red' });
|
|
184
|
+
}
|
|
185
|
+
}, [apiClient, refresh]);
|
|
186
|
+
return {
|
|
187
|
+
status,
|
|
188
|
+
statusLoading,
|
|
189
|
+
isRecentFatalError,
|
|
190
|
+
tasks,
|
|
191
|
+
tasksLoading,
|
|
192
|
+
taskStatus,
|
|
193
|
+
setTaskStatus,
|
|
194
|
+
branchHealth,
|
|
195
|
+
branchHealthLoading,
|
|
196
|
+
error,
|
|
197
|
+
refresh,
|
|
198
|
+
retryTask,
|
|
199
|
+
deleteTask,
|
|
200
|
+
purgeDir,
|
|
201
|
+
repairDir,
|
|
202
|
+
markMerged,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=useSystemHealth.js.map
|