@checkstack/healthcheck-script-backend 0.3.6 → 0.3.8

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,62 @@
1
1
  # @checkstack/healthcheck-script-backend
2
2
 
3
+ ## 0.3.8
4
+
5
+ ### Patch Changes
6
+
7
+ - d1a2796: Enforce stricter code quality standards and eliminate AI slop anti-patterns.
8
+
9
+ **New utility**
10
+
11
+ - `extractErrorMessage(error, fallback?)` in `@checkstack/common` for consistent error extraction
12
+
13
+ **ESLint rules**
14
+
15
+ - `react-hooks/rules-of-hooks` and `exhaustive-deps` for hook correctness
16
+ - `no-console` in frontend packages — forces `toast` over silent `console.error`
17
+ - `no-restricted-syntax` banning `instanceof Error` — forces `extractErrorMessage`
18
+ - Custom `no-eslint-disable-any` rule preventing `@typescript-eslint/no-explicit-any` circumvention
19
+
20
+ **Refactoring**
21
+
22
+ - Replace 141 `instanceof Error` boilerplate patterns across the codebase
23
+ - Replace swallowed `console.error` with user-visible `toast.error()` feedback
24
+ - Remove 15 redundant `as` type casts in IntegrationsPage and ProviderConnectionsPage
25
+ - Consolidate 3 identical callback handlers into `handleDialogClose`
26
+ - Fix conditional React hook call in `FormField.tsx`
27
+ - Fix unstable useMemo deps in `Dashboard.tsx`
28
+ - Replace `useEffect`→`setState` with derived `useMemo` in `RegisterPage.tsx`
29
+ - Rewrite `keystore.test.ts` with typed `DrizzleMockChain` (eliminating 7 `any` suppressions)
30
+ - Delete obvious comments in `encryption.ts` and Teams `provider.ts`
31
+
32
+ - Updated dependencies [d1a2796]
33
+ - Updated dependencies [3c34b07]
34
+ - @checkstack/common@0.6.5
35
+ - @checkstack/backend-api@0.11.1
36
+ - @checkstack/healthcheck-common@0.10.1
37
+
38
+ ## 0.3.7
39
+
40
+ ### Patch Changes
41
+
42
+ - 54a5f80: ### Health Check Editor Redesign — IDE-Style Experience
43
+
44
+ Replaces the modal-based health check editor with a full-page, IDE-style experience:
45
+
46
+ - **Strategy Picker Page**: New `/config/create` page with categorized strategy discovery, search filtering, and grouped card grid layout
47
+ - **IDE Editor Page**: New `/config/:configId/edit` page with a split-view layout — explorer tree on the left, editor panel on the right
48
+ - **Strategy Categories**: Introduces `StrategyCategory` enum with 16 categories (Networking, Database, Infrastructure, etc.) — all 13 strategy plugins now declare their category
49
+ - **New RPC Endpoint**: Added `getConfiguration` (singular by ID) for efficient single-resource fetching on the edit page
50
+ - **Explorer Tree**: Left-hand navigation with General, Check Items (collectors), and Access Control sections, with real-time validation indicators
51
+ - **Validation Status Bar**: Bottom bar showing aggregated validation issues with clickable navigation
52
+ - **Unsaved Changes Guard**: Browser `beforeunload` protection when the form is dirty
53
+ - **Responsive Design**: Split-view on desktop, stacked layout on mobile
54
+ - **Deleted**: Legacy `HealthCheckEditor.tsx` modal component
55
+
56
+ - Updated dependencies [54a5f80]
57
+ - @checkstack/healthcheck-common@0.10.0
58
+ - @checkstack/backend-api@0.11.0
59
+
3
60
  ## 0.3.6
4
61
 
5
62
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@checkstack/healthcheck-script-backend",
3
- "version": "0.3.6",
3
+ "version": "0.3.8",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "checkstack": {
@@ -12,14 +12,14 @@
12
12
  "lint:code": "eslint . --max-warnings 0"
13
13
  },
14
14
  "dependencies": {
15
- "@checkstack/backend-api": "0.10.0",
15
+ "@checkstack/backend-api": "0.11.0",
16
16
  "@checkstack/common": "0.6.4",
17
- "@checkstack/healthcheck-common": "0.8.4"
17
+ "@checkstack/healthcheck-common": "0.10.0"
18
18
  },
19
19
  "devDependencies": {
20
20
  "@types/bun": "^1.0.0",
21
21
  "typescript": "^5.0.0",
22
- "@checkstack/tsconfig": "0.0.4",
22
+ "@checkstack/tsconfig": "0.0.5",
23
23
  "@checkstack/scripts": "0.1.2"
24
24
  }
25
25
  }
@@ -21,6 +21,7 @@ import {
21
21
  } from "@checkstack/healthcheck-common";
22
22
  import { pluginMetadata } from "./plugin-metadata";
23
23
  import type { ScriptTransportClient } from "./transport-client";
24
+ import { extractErrorMessage } from "@checkstack/common";
24
25
 
25
26
  // ============================================================================
26
27
  // SCRIPT EXECUTION UTILITIES (shared with integration-script-backend pattern)
@@ -164,7 +165,7 @@ async function executeInlineScript({
164
165
  timedOut: false,
165
166
  };
166
167
  } catch (error) {
167
- const message = error instanceof Error ? error.message : String(error);
168
+ const message = extractErrorMessage(error);
168
169
  if (message === "__TIMEOUT__") {
169
170
  return {
170
171
  result: undefined,
package/src/strategy.ts CHANGED
@@ -20,12 +20,14 @@ import {
20
20
  healthResultNumber,
21
21
  healthResultString,
22
22
  healthResultSchema,
23
+ StrategyCategory,
23
24
  } from "@checkstack/healthcheck-common";
24
25
  import type {
25
26
  ScriptTransportClient,
26
27
  ScriptRequest,
27
28
  ScriptResult as ScriptResultType,
28
29
  } from "./transport-client";
30
+ import { extractErrorMessage } from "@checkstack/common";
29
31
 
30
32
  // ============================================================================
31
33
  // SCHEMAS
@@ -214,6 +216,7 @@ export class ScriptHealthCheckStrategy implements HealthCheckStrategy<
214
216
  id = "script";
215
217
  displayName = "Script Health Check";
216
218
  description = "Execute local scripts or commands for health checking";
219
+ category = StrategyCategory.INFRASTRUCTURE;
217
220
 
218
221
  private executor: ScriptExecutor;
219
222
 
@@ -303,7 +306,7 @@ export class ScriptHealthCheckStrategy implements HealthCheckStrategy<
303
306
  stdout: "",
304
307
  stderr: "",
305
308
  timedOut: false,
306
- error: error instanceof Error ? error.message : String(error),
309
+ error: extractErrorMessage(error),
307
310
  };
308
311
  }
309
312
  },