@checkstack/healthcheck-frontend 0.13.5 → 0.14.0
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/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,41 @@
|
|
|
1
1
|
# @checkstack/healthcheck-frontend
|
|
2
2
|
|
|
3
|
+
## 0.14.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 6c40b5b: ### GitOps Ecosystem: Healthcheck Kind Registration (Phase 5)
|
|
8
|
+
|
|
9
|
+
**gitops-common**: Added required `resolveEntityRef` to `ReconcileContext`, enabling extension reconcilers to resolve cross-kind entity references (e.g., healthcheck refs in System extensions).
|
|
10
|
+
|
|
11
|
+
**gitops-backend**: Updated reconciler to populate `resolveEntityRef` by querying local provenance — no RPC round-trip needed.
|
|
12
|
+
|
|
13
|
+
**healthcheck-backend**: Registered `kind: Healthcheck` and `System → healthchecks` extension with the EntityKindRegistry:
|
|
14
|
+
|
|
15
|
+
- Validates strategy configs against registered strategy schemas at reconcile time
|
|
16
|
+
- Validates collector configs against registered collector schemas at reconcile time
|
|
17
|
+
- Manages system ↔ healthcheck associations with automatic stale removal
|
|
18
|
+
|
|
19
|
+
**healthcheck-frontend**: Added GitOps provenance locking to the HealthCheck IDE editor — GitOps-managed health checks show a lock banner and disable editing.
|
|
20
|
+
|
|
21
|
+
**catalog-backend**: Updated test fixtures for new required `resolveEntityRef` context field.
|
|
22
|
+
|
|
23
|
+
### Patch Changes
|
|
24
|
+
|
|
25
|
+
- Updated dependencies [6c40b5b]
|
|
26
|
+
- Updated dependencies [6c40b5b]
|
|
27
|
+
- Updated dependencies [4b0934d]
|
|
28
|
+
- @checkstack/gitops-frontend@0.2.0
|
|
29
|
+
- @checkstack/ui@1.3.6
|
|
30
|
+
- @checkstack/dashboard-frontend@0.3.33
|
|
31
|
+
- @checkstack/auth-frontend@0.5.25
|
|
32
|
+
|
|
33
|
+
## 0.13.6
|
|
34
|
+
|
|
35
|
+
### Patch Changes
|
|
36
|
+
|
|
37
|
+
- aa2b3aa: fix: remove arbitrary hardcoded assertions in jenkins collectors (queue-info, node-health, job-status) to prevent silent fallback assertion failures, instead properly threading transport execution errors directly to the SingleRunChartGrid UI display widget via a new `_collectorError` result payload property.
|
|
38
|
+
|
|
3
39
|
## 0.13.5
|
|
4
40
|
|
|
5
41
|
### Patch Changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@checkstack/healthcheck-frontend",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "src/index.tsx",
|
|
6
6
|
"checkstack": {
|
|
@@ -12,14 +12,15 @@
|
|
|
12
12
|
"lint:code": "eslint . --max-warnings 0"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@checkstack/auth-frontend": "0.5.
|
|
15
|
+
"@checkstack/auth-frontend": "0.5.24",
|
|
16
16
|
"@checkstack/catalog-common": "1.3.1",
|
|
17
17
|
"@checkstack/common": "0.6.5",
|
|
18
|
-
"@checkstack/dashboard-frontend": "0.3.
|
|
18
|
+
"@checkstack/dashboard-frontend": "0.3.32",
|
|
19
19
|
"@checkstack/frontend-api": "0.3.9",
|
|
20
|
-
"@checkstack/
|
|
20
|
+
"@checkstack/gitops-frontend": "0.1.0",
|
|
21
|
+
"@checkstack/healthcheck-common": "0.11.0",
|
|
21
22
|
"@checkstack/signal-frontend": "0.0.15",
|
|
22
|
-
"@checkstack/ui": "1.
|
|
23
|
+
"@checkstack/ui": "1.3.5",
|
|
23
24
|
"ajv": "^8.18.0",
|
|
24
25
|
"ajv-formats": "^3.0.1",
|
|
25
26
|
"date-fns": "^4.1.0",
|
|
@@ -29,7 +30,7 @@
|
|
|
29
30
|
"recharts": "^3.6.0",
|
|
30
31
|
"uuid": "^13.0.0",
|
|
31
32
|
"zod": "^4.2.1",
|
|
32
|
-
"@checkstack/satellite-common": "0.
|
|
33
|
+
"@checkstack/satellite-common": "0.2.0"
|
|
33
34
|
},
|
|
34
35
|
"devDependencies": {
|
|
35
36
|
"@checkstack/scripts": "0.1.2",
|
|
@@ -120,6 +120,7 @@ function CollectorSection({
|
|
|
120
120
|
}: CollectorSectionProps) {
|
|
121
121
|
const displayName = collectorId.split(".").pop() || collectorId;
|
|
122
122
|
const assertionFailed = data._assertionFailed as string | undefined;
|
|
123
|
+
const collectorError = data._collectorError as string | undefined;
|
|
123
124
|
|
|
124
125
|
return (
|
|
125
126
|
<div className="space-y-4">
|
|
@@ -148,6 +149,22 @@ function CollectorSection({
|
|
|
148
149
|
</Card>
|
|
149
150
|
)}
|
|
150
151
|
|
|
152
|
+
{/* Collector execution error if present */}
|
|
153
|
+
{collectorError && (
|
|
154
|
+
<Card className="border-red-200 dark:border-red-900 border-dashed">
|
|
155
|
+
<CardHeader className="pb-2">
|
|
156
|
+
<CardTitle className="text-sm font-medium text-red-600">
|
|
157
|
+
Collector Execution Failed
|
|
158
|
+
</CardTitle>
|
|
159
|
+
</CardHeader>
|
|
160
|
+
<CardContent>
|
|
161
|
+
<div className="text-sm text-red-600 bg-red-50 dark:bg-red-950 px-2 py-1 rounded">
|
|
162
|
+
{collectorError}
|
|
163
|
+
</div>
|
|
164
|
+
</CardContent>
|
|
165
|
+
</Card>
|
|
166
|
+
)}
|
|
167
|
+
|
|
151
168
|
<div className="grid gap-4 md:grid-cols-2 lg:grid-cols-3">
|
|
152
169
|
{fields.map((field) => (
|
|
153
170
|
<SingleValueCard
|
|
@@ -15,6 +15,8 @@ import { resolveRoute, extractErrorMessage} from "@checkstack/common";
|
|
|
15
15
|
import { useCollectors } from "../hooks/useCollectors";
|
|
16
16
|
import { EditorTree, type TreeNodeId } from "../components/editor/EditorTree";
|
|
17
17
|
import { EditorPanel } from "../components/editor/EditorPanel";
|
|
18
|
+
import { useProvenanceLock, GitOpsLockBanner } from "@checkstack/gitops-frontend";
|
|
19
|
+
|
|
18
20
|
|
|
19
21
|
// =============================================================================
|
|
20
22
|
// TYPES
|
|
@@ -38,10 +40,15 @@ const HealthCheckIDEPageContent = () => {
|
|
|
38
40
|
const toast = useToast();
|
|
39
41
|
const healthCheckClient = usePluginClient(HealthCheckApi);
|
|
40
42
|
|
|
41
|
-
// "new" is a sentinel value used by the create flow
|
|
42
43
|
const isEditMode = !!configId && configId !== "new";
|
|
43
44
|
const strategyIdFromUrl = searchParams.get("strategy") ?? undefined;
|
|
44
45
|
|
|
46
|
+
// --- GitOps Provenance Lock ---
|
|
47
|
+
const { isLocked, provenance } = useProvenanceLock({
|
|
48
|
+
kind: "Healthcheck",
|
|
49
|
+
entityId: isEditMode ? configId : undefined,
|
|
50
|
+
});
|
|
51
|
+
|
|
45
52
|
// --- Data Fetching ---
|
|
46
53
|
|
|
47
54
|
// Fetch all strategies (needed for both modes)
|
|
@@ -320,13 +327,18 @@ const HealthCheckIDEPageContent = () => {
|
|
|
320
327
|
actions={
|
|
321
328
|
<Button
|
|
322
329
|
onClick={handleSave}
|
|
323
|
-
|
|
330
|
+
disabled={!isValid || isSaving || isLocked}
|
|
324
331
|
>
|
|
325
332
|
<Save className="mr-2 h-4 w-4" />
|
|
326
333
|
{isSaving ? "Saving..." : "Save"}
|
|
327
334
|
</Button>
|
|
328
335
|
}
|
|
329
336
|
>
|
|
337
|
+
{isLocked && provenance && (
|
|
338
|
+
<div className="mb-4">
|
|
339
|
+
<GitOpsLockBanner provenance={provenance} />
|
|
340
|
+
</div>
|
|
341
|
+
)}
|
|
330
342
|
<IDELayout
|
|
331
343
|
tree={
|
|
332
344
|
<EditorTree
|