@upx-us/shield 0.7.11 → 0.7.12

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
@@ -4,6 +4,14 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  ---
6
6
 
7
+ ## [0.7.12] — 2026-03-16
8
+
9
+ ### Fixed
10
+
11
+ - **Plugin showing permanently "Disconnected" after gateway hot-reload** — when the OpenClaw gateway reloaded the plugin module, a race condition between teardown and startup caused new startup attempts to silently abort. The previous instance's timers kept running but were invisible to the status command, resulting in permanent "Disconnected" status and missed telemetry cycles. The teardown is now properly awaited before startup proceeds.
12
+
13
+ ---
14
+
7
15
  ## [0.7.11] — 2026-03-16
8
16
 
9
17
  ### Added
package/dist/index.js CHANGED
@@ -319,6 +319,7 @@ const state = {
319
319
  };
320
320
  let firstEventDelivered = false;
321
321
  let teardownPreviousRuntime = null;
322
+ let pendingTeardown = null;
322
323
  let serviceStartFn = null;
323
324
  const MAX_BACKOFF_MS = 5 * 60 * 1000;
324
325
  const TELEMETRY_INTERVAL_MS = 5 * 60 * 1000;
@@ -575,13 +576,17 @@ exports.default = {
575
576
  }
576
577
  };
577
578
  if (teardownPreviousRuntime) {
578
- void teardownPreviousRuntime()
579
+ pendingTeardown = teardownPreviousRuntime()
579
580
  .catch((err) => log.warn('shield', `Runtime cleanup before re-register failed: ${err instanceof Error ? err.message : String(err)}`));
580
581
  }
581
582
  teardownPreviousRuntime = () => cleanupRuntime({ markStopped: true, resetGuard: true, flushRedactor: false });
582
583
  const serviceDefinition = {
583
584
  id: 'shield-monitor',
584
585
  async start() {
586
+ if (pendingTeardown) {
587
+ await pendingTeardown.catch(() => { });
588
+ pendingTeardown = null;
589
+ }
585
590
  if (!startGuard.begin()) {
586
591
  log.debug('shield', 'Start requested while service is already started or in progress');
587
592
  return;
@@ -2,7 +2,7 @@
2
2
  "id": "shield",
3
3
  "name": "OpenClaw Shield",
4
4
  "description": "Real-time security monitoring — streams enriched, redacted security events to the Shield detection platform.",
5
- "version": "0.7.11",
5
+ "version": "0.7.12",
6
6
  "skills": [
7
7
  "./skills"
8
8
  ],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@upx-us/shield",
3
- "version": "0.7.11",
3
+ "version": "0.7.12",
4
4
  "description": "Security monitoring plugin for OpenClaw agents — streams enriched security events to the Shield detection platform",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",