@upx-us/shield 0.7.12 → 0.8.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 +63 -221
- package/README.md +3 -3
- package/dist/index.d.ts +64 -1
- package/dist/index.js +370 -102
- package/dist/src/config.js +1 -1
- package/dist/src/sender.d.ts +4 -0
- package/dist/src/sender.js +17 -12
- package/dist/src/updater.d.ts +7 -0
- package/dist/src/updater.js +77 -14
- package/openclaw.plugin.json +3 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,261 +4,103 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
## [0.
|
|
7
|
+
## [0.8.0] — 2026-03-17
|
|
8
8
|
|
|
9
9
|
### Fixed
|
|
10
10
|
|
|
11
|
-
- **Plugin
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
## [0.7.11] — 2026-03-16
|
|
16
|
-
|
|
17
|
-
### Added
|
|
18
|
-
|
|
19
|
-
- **Debug logging mode** (`debugLog: true`) — writes timestamped logs to `~/.openclaw/shield/logs/shield-debug.log`. Captures the full startup sequence with numbered checkpoints (1–11 + SIGTERM) so disconnection issues can be pinpointed exactly. Off by default — safe on all existing installs.
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## [0.7.10] — 2026-03-16
|
|
24
|
-
|
|
25
|
-
### Added
|
|
26
|
-
|
|
27
|
-
- **`openclaw shield restart` command** — restarts Shield monitoring without a full gateway restart. Checks credentials, clears any stale update state, resets the session, and cycles the runtime. Use `--verbose` for step-by-step diagnostic output.
|
|
28
|
-
|
|
29
|
-
### Fixed
|
|
30
|
-
|
|
31
|
-
- **Plugin no longer silently stalls when telemetry consistently fails** — after 10 consecutive failed `reportInstance` calls, the plugin deactivates with a clear log message instead of running indefinitely with no output.
|
|
32
|
-
- **Update cycle cleanup after successful auto-update** — the periodic update check now properly stops all activity after calling a successful gateway restart, preventing a window where both the old and new instance could be active simultaneously.
|
|
33
|
-
|
|
34
|
-
### Changed
|
|
35
|
-
|
|
36
|
-
- **Standalone `shield-bridge` binary removed** — the plugin now runs exclusively as an OpenClaw gateway plugin. Running `npx @upx-us/shield` directly shows a clear message with installation instructions. This eliminates a source of divergent behavior that caused the v0.7.7 incident.
|
|
37
|
-
- `bridge` terminology removed from all customer-visible log output and internal comments.
|
|
38
|
-
|
|
39
|
-
---
|
|
40
|
-
|
|
41
|
-
## [0.7.9] — 2026-03-16
|
|
42
|
-
|
|
43
|
-
### Fixed
|
|
44
|
-
|
|
45
|
-
- **Bug causing the plugin to repeatedly reinstall itself to the same version** — After a self-update, the plugin could enter a loop installing the already-installed version (e.g. 0.7.8 → 0.7.8) because the cached update state was not cleared correctly. The updater now verifies that the candidate version is strictly newer than the running version before proceeding with any install.
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
## [0.7.8] — 2026-03-16
|
|
50
|
-
|
|
51
|
-
### Fixed
|
|
52
|
-
|
|
53
|
-
- **Bug causing the plugin to be repeatedly terminated by the gateway after updating** — The same boot-loop fix from v0.7.7 was missing from the gateway plugin entrypoint. When running as an OpenClaw plugin (the normal mode), the gateway would spawn the plugin, the plugin would trigger a new update check, send itself a restart signal, and get killed — silently repeating on every boot.
|
|
54
|
-
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
## [0.7.7] — 2026-03-16
|
|
58
|
-
|
|
59
|
-
### Fixed
|
|
60
|
-
|
|
61
|
-
- **Bug preventing the plugin from starting after an auto-update** (#177): In certain conditions following an auto-update, the plugin would crash on every boot before processing any events. A gateway restart is sufficient to recover affected instances.
|
|
62
|
-
- **Bug causing incorrect plugin version to be reported in the dashboard** (#175): Some instances were reporting a stale version number in the platform dashboard instead of the currently installed version.
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
## [0.7.6] — 2026-03-13
|
|
67
|
-
|
|
68
|
-
### Security
|
|
69
|
-
- **URL enforcement switched to allowlist** — plugin traffic is restricted to the Shield ingest endpoint. Any other URL is rejected and replaced with the default. No infrastructure details are disclosed in source.
|
|
70
|
-
|
|
71
|
-
---
|
|
72
|
-
|
|
73
|
-
## [0.7.5] — 2026-03-13
|
|
74
|
-
|
|
75
|
-
### Security
|
|
76
|
-
- **Block direct platform backend calls** — `loadCredentials()` now detects and overrides any `SHIELD_API_URL` pointing to a platform backend (legacy Replit URLs, `uss.upx.com`). Plugin traffic is enforced to only reach the Shield ingest proxy. A second-layer check in the RPC client rejects blocked URLs even if config loading is bypassed.
|
|
77
|
-
- **Fix RPC `apiUrl` resolution** — RPC handlers now use the validated `apiUrl` from credentials instead of a non-existent config field (which silently fell through to `null`).
|
|
78
|
-
|
|
79
|
-
---
|
|
80
|
-
## [0.7.4] — 2026-03-13
|
|
11
|
+
- **Plugin could stay partially active after losing platform authorization** — when the platform revoked an instance's registration, Shield now fully shuts down all background activity immediately instead of only stopping event delivery. Prevents a state where the plugin appeared stopped but was still running internally.
|
|
12
|
+
- **Diagnostic state could be lost on unexpected crashes** — Shield now saves error details to disk immediately when a poll cycle fails, so the information is preserved even if the process exits right after.
|
|
13
|
+
- **Silent crash after first successful sync on certain Linux environments** — fixed an issue where Shield would start correctly, deliver the first batch of events, then crash silently without any log output. Affected VPS and containerized deployments.
|
|
81
14
|
|
|
82
15
|
### Changed
|
|
83
|
-
- Cases are now instance-scoped by default — the platform API filters cases so each instance only sees its own cases. This eliminates cross-instance notification flooding when multiple instances share an org.
|
|
84
|
-
- Removed `--mine` flag from `shield cases` and `shield cases list` — no longer needed since all returned cases belong to this instance.
|
|
85
|
-
- Removed `[mine]` / `[sibling]` per-case tags from list output.
|
|
86
|
-
- Removed sibling instance notice from `shield cases show`.
|
|
87
|
-
- Removed mixed-ownership attribution summary from case list output.
|
|
88
16
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
## [0.7.3] — 2026-03-13
|
|
92
|
-
|
|
93
|
-
### Fixed
|
|
94
|
-
- Trigger attribution (`trigger_type`, `author_name`, `trigger_type` fields) now works correctly in OpenClaw plugin mode — the plugin entry point was calling `transformEntries` without forwarding `sessionDirs`, so attribution was silently skipped on every event for all plugin-mode installations
|
|
95
|
-
- Session directory discovery is now robust when the plugin process is spawned with a different `HOME` environment variable than the main OpenClaw process (common on VPS and Docker deployments) — discovery now walks up from the plugin install path to find the `agents/` directory rather than relying solely on `homedir()`
|
|
96
|
-
- `trigger.type` is now always written to `tool_metadata` (as `"unknown"`) even when session directory lookup fails entirely, ensuring the field is never silently absent from SIEM events
|
|
17
|
+
- **`shield restart` is more reliable** — the restart sequence now uses a consistent reset path, reducing the chance of leftover state from a previous session affecting the new one.
|
|
18
|
+
- **Failed batch retries no longer skip already-delivered events** — when a sync cycle partially succeeds, Shield retries only what failed. Events already accepted by the platform are not re-sent.
|
|
97
19
|
|
|
98
20
|
---
|
|
99
21
|
|
|
100
|
-
## [0.7
|
|
22
|
+
## [0.7 series] — 2026-03-13 to 2026-03-16
|
|
101
23
|
|
|
102
|
-
|
|
103
|
-
- Events now always include a meaningful `trigger.type` field — previously, unresolved sessions silently omitted the field; they now report `unknown` for full visibility
|
|
104
|
-
- Attribution correctly handles sessions where the first user message contains non-text content blocks (images, structured context)
|
|
105
|
-
- Auto-updater no longer prunes the previous version backup during the install window — the safety net is preserved until the new version is confirmed running
|
|
106
|
-
- Gateway restart is now blocked if critical plugin files are missing or empty after install, preventing boot loops from incomplete updates
|
|
24
|
+
> Versions 0.7.0–0.7.13. Individual patch notes consolidated below.
|
|
107
25
|
|
|
108
|
-
###
|
|
109
|
-
-
|
|
110
|
-
-
|
|
111
|
-
-
|
|
26
|
+
### Added across 0.7 series
|
|
27
|
+
- **Event authorship & source attribution** (0.7.0) — every monitored event is now tagged with its source: a user via a messaging channel, a scheduled job, a health check, a sub-agent, or an autonomous agent action. Enables "who caused this?" forensics on any alert or case.
|
|
28
|
+
- **Sender identity captured when available** (0.7.0) — when triggered by a user via a messaging channel, the user's display name and channel are captured for human-readable alerting.
|
|
29
|
+
- **`openclaw shield restart` command** (0.7.10) — restarts Shield monitoring without a full gateway restart. Use `--verbose` for step-by-step output.
|
|
30
|
+
- **Debug logging mode** (0.7.11) — opt-in detailed startup and runtime logs written to `~/.openclaw/shield/logs/shield-debug.log`. Off by default.
|
|
31
|
+
- **Instance-scoped cases** (0.7.4) — each instance only sees its own security cases; no cross-instance notification flooding in multi-instance orgs.
|
|
32
|
+
- **`shield logs` now includes event details and trigger context** (0.7.2) — each log entry shows the file path, command, or URL involved and what triggered the session.
|
|
112
33
|
|
|
113
|
-
|
|
34
|
+
### Fixed across 0.7 series
|
|
35
|
+
- **Plugin commands disappearing after auto-update** (0.7.13) — `openclaw shield status` and all shield commands returned "unknown command" after an update. Fixed.
|
|
36
|
+
- **Permanent "Disconnected" status after gateway reload** (0.7.12) — a race condition between shutdown and startup left the plugin in a broken state. Fixed.
|
|
37
|
+
- **Plugin silently stalling on repeated telemetry failures** (0.7.10) — after 10 consecutive failures, the plugin now deactivates cleanly with a clear log message.
|
|
38
|
+
- **Update loop installing the same version repeatedly** (0.7.9) — the updater now verifies the candidate version is strictly newer before proceeding.
|
|
39
|
+
- **Boot loop after auto-update in plugin mode** (0.7.7, 0.7.8) — fixed a crash-on-boot cycle affecting gateway-loaded plugin mode.
|
|
40
|
+
- **Trigger attribution silently skipped in plugin mode** (0.7.3) — attribution fields were missing from all events on plugin-mode installations. Fixed.
|
|
41
|
+
- **Session directory discovery failing on VPS and Docker** (0.7.3) — discovery now works regardless of how `HOME` is set when the plugin process starts.
|
|
114
42
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
- Case ownership awareness: `shield cases` now shows which cases belong to this instance vs other instances in the org
|
|
119
|
-
- `--mine` flag for `shield cases` and `shield cases list` to filter to locally-owned cases
|
|
120
|
-
- Sibling case detail view: `shield cases show <ID>` notes when a case belongs to another org instance and clarifies that remote investigation requires direct platform access
|
|
121
|
-
- Attribution summary line when listing mixed-ownership cases
|
|
43
|
+
### Changed across 0.7 series
|
|
44
|
+
- **Standalone `shield-bridge` binary removed** (0.7.10) — the plugin now runs exclusively as an OpenClaw gateway plugin. Running it directly shows installation instructions.
|
|
45
|
+
- **`--mine` flag removed from `shield cases`** (0.7.4) — no longer needed; all returned cases already belong to this instance.
|
|
122
46
|
|
|
123
47
|
---
|
|
124
48
|
|
|
125
|
-
## [0.
|
|
126
|
-
|
|
127
|
-
### Added
|
|
128
|
-
- **Event authorship & source attribution** — Shield now captures the source of every monitored agent action: who or what triggered it. Each event is tagged with an authorship category — a user via a messaging channel (Telegram, Discord, WhatsApp, etc.), a scheduled job, a periodic health check, a spawned sub-agent, or an autonomous agent action. This context appears alongside every event in your security dashboard, enabling "who caused this?" forensics on any alert or case.
|
|
129
|
-
- **Sender identity captured when available** — when an action is triggered by a user via a messaging channel, the user's display name and channel are captured in plain text for human-readable alerting. The raw user identifier is stored as a reversible token (recoverable locally via `openclaw shield vault show`).
|
|
130
|
-
|
|
131
|
-
### Changed
|
|
132
|
-
- **README updated** — new "Authorship & Event Source" section documents the authorship categories available in the dashboard.
|
|
133
|
-
|
|
134
|
-
### Notes
|
|
135
|
-
- Fully backward compatible. Existing deployments continue to work without any configuration changes. Authorship context is captured automatically on upgrade.
|
|
136
|
-
|
|
137
|
-
---
|
|
138
|
-
|
|
139
|
-
## [0.6.10] — 2026-03-12
|
|
140
|
-
|
|
141
|
-
### Fixed
|
|
142
|
-
- **Local event buffer not populated in plugin mode** — `appendEvents` and `initEventStore` were implemented in the standalone bridge (`src/index.ts`) but never wired into the plugin-mode poll loop (`index.ts`). As a result, `openclaw shield logs` always returned "No events found" even when events were being sent successfully to the platform. Fixed by wiring the event store into the plugin-mode startup and poll cycle (#148).
|
|
143
|
-
|
|
144
|
-
### Changed
|
|
145
|
-
- **Local event buffer default increased to 250** — was 123. Provides better forensic coverage (~24h of normal activity) without significant storage impact. `SHIELD_LOCAL_EVENT_LIMIT` env var still overrides this. README and config updated (#148).
|
|
146
|
-
- **Version corrected from 1.3.0 → 0.6.10** — the 1.3.0 version in `package.json` was premature; this release re-anchors versioning at the correct next increment after 0.6.8.
|
|
147
|
-
|
|
148
|
-
### Added
|
|
149
|
-
- **`openclaw.message_length_bytes` enrichment field** — message events now include the byte length of the message body as `openclaw.message_length_bytes`. Enables detection rules based on message size thresholds (#152).
|
|
150
|
-
- **Event buffer diagnostics in `shield.status`** — `shield.status` RPC now includes an `eventBuffer` section showing: `enabled`, `path`, `total` events buffered, `oldest`/`newest` timestamps, and `redactedCount`. Makes it immediately diagnosable if the local log is empty or disabled (#148).
|
|
151
|
-
|
|
152
|
-
### Docs
|
|
153
|
-
- **Case investigation workflow in SKILL.md** — documents the standard 4-step forensic procedure: cases + logs + vault correlation for complete incident context. Covers correlating case timestamps, log event windows, and redaction vault lookups (#148, #151).
|
|
154
|
-
- **Expanded uninstall documentation in README** — step-by-step uninstall guide covering plugin removal, local data cleanup (with file-by-file breakdown), and platform instance deactivation. Includes redaction vault retention warning (#151).
|
|
155
|
-
|
|
156
|
-
---
|
|
157
|
-
|
|
158
|
-
## [0.6 series summary] — 2026-03-06 to 2026-03-10
|
|
159
|
-
|
|
160
|
-
> Versions 0.6.0–0.6.8 are superseded by 0.6.10. Individual release notes consolidated below.
|
|
49
|
+
## [0.6 series] — 2026-03-06 to 2026-03-12
|
|
161
50
|
|
|
162
51
|
### Added across 0.6 series
|
|
163
|
-
-
|
|
164
|
-
- **
|
|
165
|
-
-
|
|
166
|
-
-
|
|
167
|
-
- **
|
|
168
|
-
- **
|
|
169
|
-
- **
|
|
52
|
+
- **`openclaw shield logs`** — view recent events captured by Shield directly from the command line, with filtering by type, time window, and JSON output
|
|
53
|
+
- **Event context in logs** — each log entry now shows the file, command, or URL involved alongside what triggered the session
|
|
54
|
+
- **`openclaw shield vault show`** — inspect the local agent and workspace inventory with redaction token summary
|
|
55
|
+
- **Status diagnostics** — `shield status` now shows event buffer health, redaction counts by category, and clearer degradation signals
|
|
56
|
+
- **Plugin lifecycle signals** — Shield reports startup, update failures, and integrity changes to the platform for visibility in the dashboard
|
|
57
|
+
- **Message size tracking** — message events include the byte size of the message body, enabling size-based detection rules
|
|
58
|
+
- **Redaction coverage expanded** — credentials in `curl` commands (`-u`, `--user`, `Authorization: Basic`) are now redacted; npm package references no longer trigger false positives
|
|
170
59
|
|
|
171
60
|
### Fixed across 0.6 series
|
|
172
|
-
-
|
|
173
|
-
- **
|
|
174
|
-
- **
|
|
175
|
-
-
|
|
176
|
-
- **
|
|
177
|
-
- **npm redaction false positive** (0.6.7) — `@scope/package@version` no longer matched by SSH `user@host` regex
|
|
178
|
-
- **curl credential redaction** (0.6.8) — `curl -u`, `--user`, and `Authorization: Basic` all redacted as `secret:HASH`
|
|
179
|
-
- **`SHIELD_AUTO_UPDATE=false` ignored** (0.6.6) — env var now correctly parsed as boolean
|
|
180
|
-
|
|
181
|
-
---
|
|
182
|
-
|
|
183
|
-
## [0.5.38] — 2026-03-06
|
|
184
|
-
|
|
185
|
-
### Added
|
|
186
|
-
- `_skill_hint` field in all RPC responses (agent-facing, invisible to users)
|
|
61
|
+
- **`openclaw shield logs` always showing empty** — event capture was never connected to the local log store in plugin mode. Fixed.
|
|
62
|
+
- **Auto-update sometimes failing to recover after a bad restart** — the update state is now tracked persistently and retried before falling back to the previous version
|
|
63
|
+
- **Plugin reporting wrong version in the dashboard** — version detection is now reliable across macOS, Linux, and containerized environments
|
|
64
|
+
- **`SHIELD_AUTO_UPDATE=false` being ignored** — the environment variable is now parsed correctly
|
|
65
|
+
- **False-positive DEGRADED status in `shield status`** — a three-condition check now prevents transient failures from incorrectly marking the plugin as degraded
|
|
187
66
|
|
|
188
67
|
---
|
|
189
68
|
|
|
190
|
-
## [0.5
|
|
69
|
+
## [0.5 series] — 2026-03-06
|
|
191
70
|
|
|
192
|
-
### Added
|
|
193
|
-
- **
|
|
194
|
-
- **False positive exclusions** — mark a case as false positive and Shield
|
|
195
|
-
- `openclaw shield exclusions` — list active exclusions.
|
|
196
|
-
- `openclaw shield exclusions remove <ID>` — re-enable alerts by removing an exclusion.
|
|
197
|
-
- RPCs: `shield.exclusions_list`, `shield.exclusion_add`, `shield.exclusion_remove`.
|
|
198
|
-
- Pattern normalization: IPs, UUIDs, timestamps, and hashes are generalized so the same type of event matches regardless of specific values.
|
|
199
|
-
|
|
200
|
-
### Fixed
|
|
201
|
-
- Campaign URLs updated to English (`/en/` instead of `/pt/`).
|
|
71
|
+
### Added across 0.5 series
|
|
72
|
+
- **Plain language case notifications** — alerts now lead with a human-readable summary; technical rule details are available as a footnote
|
|
73
|
+
- **False positive exclusions** — mark a case as a false positive and Shield suppresses identical future alerts automatically. Manage via `openclaw shield exclusions`
|
|
202
74
|
|
|
203
75
|
---
|
|
204
76
|
|
|
205
|
-
## [0.4
|
|
206
|
-
|
|
207
|
-
Consolidated from 0.4.0–0.4.12.
|
|
77
|
+
## [0.4 series] — 2026-03-05
|
|
208
78
|
|
|
209
|
-
### Added
|
|
210
|
-
- **Case management** — `openclaw shield cases`
|
|
211
|
-
- **Case
|
|
212
|
-
-
|
|
213
|
-
- **
|
|
214
|
-
- **
|
|
215
|
-
- **
|
|
216
|
-
- **Chained command detection** — exec events parse shell chains (`&&`, `||`, `;`) to detect destructive commands regardless of position.
|
|
217
|
-
- **Atomic file writes** (`writeJsonSafe`) for status, stats, vault, updater state, and IP cache — prevents corruption on crash or disk-full.
|
|
218
|
-
- **Corrupt JSON recovery** (`readJsonSafe`) — auto-recovers from corrupted state files instead of crash-looping.
|
|
219
|
-
- Skill validation tests (26 tests) to prevent infrastructure leaks in ClawHub-published content.
|
|
220
|
-
- ClawHub frontmatter metadata, gating via `requires.config`, cross-references between npm/ClawHub/dashboard.
|
|
221
|
-
- `callPlatformApi` now supports GET and POST methods.
|
|
222
|
-
- Platform attribution in case detail responses.
|
|
223
|
-
- Tarball shasum preserved in `openclaw.json` after self-update.
|
|
224
|
-
- Plugin metadata sync prevents OpenClaw core updates from removing the plugin.
|
|
225
|
-
|
|
226
|
-
### Fixed
|
|
227
|
-
- Auto-update no longer kills bridge when gateway restart fails — continues running with old version in memory.
|
|
228
|
-
- Stale PID detection in `shield status` — warns when daemon PID is no longer running.
|
|
229
|
-
- OpenClaw version detection: replaced hardcoded macOS paths with platform-independent `require.resolve` + `execSync` fallback.
|
|
230
|
-
- HMAC signing in RPC client aligned with sender format (`fingerprint:nonce`).
|
|
79
|
+
### Added across 0.4 series
|
|
80
|
+
- **Case management** — `openclaw shield cases` to list open security cases; `cases show <ID>` for full detail including events and remediation playbook; `cases resolve <ID>` to close a case with resolution notes
|
|
81
|
+
- **Case notifications** — Shield polls for new cases and notifies you automatically
|
|
82
|
+
- **`openclaw shield logs`** — local rolling store of recent events for offline inspection and debugging, with filtering options
|
|
83
|
+
- **Agent and workspace inventory** — Shield discovers all agents running on the machine and surfaces cross-workspace activity in the dashboard
|
|
84
|
+
- **Auto-update** — Shield keeps itself up to date automatically. Patch and minor versions install with a rollback safety net; major versions notify only
|
|
85
|
+
- **Resilient local storage** — local state files recover automatically from corruption instead of causing crashes
|
|
231
86
|
|
|
232
|
-
###
|
|
233
|
-
-
|
|
234
|
-
-
|
|
87
|
+
### Fixed across 0.4 series
|
|
88
|
+
- **Auto-update continuing to run after a failed gateway restart** — Shield now holds at the previous version until the restart succeeds
|
|
89
|
+
- **Stale process warnings in `shield status`** — the status command now detects when a previously recorded process is no longer running and reports it clearly
|
|
235
90
|
|
|
236
91
|
---
|
|
237
92
|
|
|
238
|
-
## [0.3
|
|
239
|
-
|
|
240
|
-
Consolidated from 0.3.0–0.3.28.
|
|
93
|
+
## [0.3 series] — 2026-02-26 to 2026-03-03
|
|
241
94
|
|
|
242
|
-
### Added
|
|
243
|
-
- **Auto-update** — Shield checks for newer versions and installs them automatically
|
|
244
|
-
- **Chained command detection** —
|
|
245
|
-
-
|
|
246
|
-
-
|
|
247
|
-
- Commands reference table in README.
|
|
248
|
-
- Quick Install section for terminal-based setup (no agent needed).
|
|
95
|
+
### Added across 0.3 series
|
|
96
|
+
- **Auto-update** — Shield checks for newer versions on startup and installs them automatically with backup and rollback safety
|
|
97
|
+
- **Chained command detection** — Shell chains (`&&`, `||`, `;`) are parsed so detection rules can match commands regardless of their position in a sequence
|
|
98
|
+
- **Quick Install** — terminal-based setup flow that doesn't require agent involvement
|
|
99
|
+
- Location and identity data included in telemetry for geo-correlation in the dashboard
|
|
249
100
|
|
|
250
|
-
### Fixed
|
|
251
|
-
- Plugin no longer
|
|
252
|
-
- Auto-update now
|
|
253
|
-
- Auto-update now syncs `plugins.installs.shield` metadata in `openclaw.json` after self-updating — prevents OpenClaw core updates from removing the plugin.
|
|
254
|
-
- Auto-update now computes and preserves tarball shasum in `openclaw.json` metadata after self-update.
|
|
255
|
-
- Detection rules can now match destructive commands embedded after chain operators.
|
|
256
|
-
|
|
257
|
-
### Changed
|
|
258
|
-
- README installation section fully rewritten: three clear options (Quick Install, Agent Configure, Agent Full), command reference table, concern table, manual steps.
|
|
259
|
-
- Agent refusal guidance added with explicit trust confirmation prompt and concern-by-concern explanation table.
|
|
260
|
-
- Quick Start prompt rewritten to address agent security concerns (redaction model, npm scope trust, installation key purpose).
|
|
261
|
-
- CHANGELOG.md now bundled with the npm package.
|
|
101
|
+
### Fixed across 0.3 series
|
|
102
|
+
- Plugin no longer stops monitoring on transient registration failures at startup — retries before giving up
|
|
103
|
+
- Auto-update now correctly preserves plugin registration in OpenClaw after installing a new version
|
|
262
104
|
|
|
263
105
|
---
|
|
264
106
|
|
package/README.md
CHANGED
|
@@ -473,7 +473,7 @@ When `autoUpdate` is `true`, Shield backs up the current version before installi
|
|
|
473
473
|
→ Increase poll interval: `"pollIntervalMs": 60000` in plugin config (default: 30000ms)
|
|
474
474
|
|
|
475
475
|
**Cursor file issues**
|
|
476
|
-
→ To reset: `rm ~/.openclaw/shield/data/
|
|
476
|
+
→ To reset: `rm ~/.openclaw/shield/data/cursor.json` — Shield reinitializes on next poll
|
|
477
477
|
|
|
478
478
|
**Dry-run mode (no events sent)**
|
|
479
479
|
→ Add `"dryRun": true` to plugin config — events are processed and logged but never transmitted
|
|
@@ -507,10 +507,10 @@ See CHANGELOG.md included with the plugin.
|
|
|
507
507
|
When a subscription lapses or the monthly event quota is exhausted, Shield detects this on the next ingest call and will:
|
|
508
508
|
|
|
509
509
|
1. Log a clear warning
|
|
510
|
-
2.
|
|
510
|
+
2. Pause delivery and retain cursor position so events can be retried after service is restored
|
|
511
511
|
3. Show elevated consecutive failures in `openclaw shield status`
|
|
512
512
|
|
|
513
|
-
|
|
513
|
+
Renew your subscription at [uss.upx.com](https://uss.upx.com) and restart the gateway to resume delivery.
|
|
514
514
|
|
|
515
515
|
---
|
|
516
516
|
|
package/dist/index.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ interface StatusWarningInput {
|
|
|
21
21
|
}
|
|
22
22
|
export declare function getStatusWarnings(input: StatusWarningInput): string[];
|
|
23
23
|
interface OpenClawPluginAPI {
|
|
24
|
-
config?:
|
|
24
|
+
config?: OpenClawConfig;
|
|
25
25
|
pluginConfig?: Record<string, unknown>;
|
|
26
26
|
logger: {
|
|
27
27
|
info(msg: string): void;
|
|
@@ -42,7 +42,70 @@ interface OpenClawPluginAPI {
|
|
|
42
42
|
}) => void, opts?: {
|
|
43
43
|
commands: string[];
|
|
44
44
|
}): void;
|
|
45
|
+
runtime?: OpenClawRuntime;
|
|
46
|
+
registerCommand?: (definition: {
|
|
47
|
+
name: string;
|
|
48
|
+
description: string;
|
|
49
|
+
requireAuth?: boolean;
|
|
50
|
+
handler: () => {
|
|
51
|
+
text: string;
|
|
52
|
+
} | Promise<{
|
|
53
|
+
text: string;
|
|
54
|
+
}>;
|
|
55
|
+
}) => void;
|
|
45
56
|
}
|
|
57
|
+
interface OpenClawSystemRuntime {
|
|
58
|
+
enqueueSystemEvent?: (text: string, options: {
|
|
59
|
+
sessionKey: string;
|
|
60
|
+
contextKey?: string | null;
|
|
61
|
+
}) => boolean;
|
|
62
|
+
requestHeartbeatNow?: (opts?: {
|
|
63
|
+
reason?: string;
|
|
64
|
+
agentId?: string;
|
|
65
|
+
sessionKey?: string;
|
|
66
|
+
}) => void;
|
|
67
|
+
}
|
|
68
|
+
interface OpenClawChannelRuntime {
|
|
69
|
+
telegram?: {
|
|
70
|
+
sendMessageTelegram?: (to: string, text: string, opts?: Record<string, unknown>) => Promise<unknown>;
|
|
71
|
+
};
|
|
72
|
+
discord?: {
|
|
73
|
+
sendMessageDiscord?: (to: string, text: string, opts?: Record<string, unknown>) => Promise<unknown>;
|
|
74
|
+
};
|
|
75
|
+
whatsapp?: {
|
|
76
|
+
sendMessageWhatsApp?: (to: string, text: string, opts?: Record<string, unknown>) => Promise<unknown>;
|
|
77
|
+
};
|
|
78
|
+
slack?: {
|
|
79
|
+
sendMessageSlack?: (to: string, text: string, opts?: Record<string, unknown>) => Promise<unknown>;
|
|
80
|
+
};
|
|
81
|
+
signal?: {
|
|
82
|
+
sendMessageSignal?: (to: string, text: string, opts?: Record<string, unknown>) => Promise<unknown>;
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
interface OpenClawRuntime {
|
|
86
|
+
system?: OpenClawSystemRuntime;
|
|
87
|
+
channel?: OpenClawChannelRuntime;
|
|
88
|
+
}
|
|
89
|
+
interface OpenClawAgentConfig {
|
|
90
|
+
default?: string;
|
|
91
|
+
}
|
|
92
|
+
interface OpenClawChannelAccountConfig {
|
|
93
|
+
enabled?: boolean;
|
|
94
|
+
allowFrom?: string[];
|
|
95
|
+
defaultTo?: string;
|
|
96
|
+
}
|
|
97
|
+
interface OpenClawChannelsConfig {
|
|
98
|
+
telegram?: OpenClawChannelAccountConfig;
|
|
99
|
+
discord?: OpenClawChannelAccountConfig;
|
|
100
|
+
whatsapp?: OpenClawChannelAccountConfig;
|
|
101
|
+
slack?: OpenClawChannelAccountConfig;
|
|
102
|
+
signal?: OpenClawChannelAccountConfig;
|
|
103
|
+
}
|
|
104
|
+
interface OpenClawConfig {
|
|
105
|
+
agents?: OpenClawAgentConfig;
|
|
106
|
+
channels?: OpenClawChannelsConfig;
|
|
107
|
+
}
|
|
108
|
+
export declare function _resetForTesting(): void;
|
|
46
109
|
declare const _default: {
|
|
47
110
|
id: string;
|
|
48
111
|
name: string;
|