@aiassesstech/mighty-mark 0.3.32 → 0.3.33

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 ADDED
@@ -0,0 +1,88 @@
1
+ # Changelog
2
+
3
+ All notable changes to `@aiassesstech/mighty-mark` will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.3.32] — 2026-03-03
9
+
10
+ **Fleet disaster recovery backup — bundled into the npm package.**
11
+
12
+ ### Added
13
+ - **Fleet backup scripts bundled** — `fleet-backup.sh`, `fleet-restore.sh`, `config.sh`, and 48 bash tests now ship inside the npm package (`src/watchdog/fleet-backup/`). No separate `git clone` needed on the VPS.
14
+ - **TypeScript backup orchestrator** (`src/checks/backup-orchestrator.ts`) — executes the backup script, validates the manifest, then runs both test suites (backup + restore). Returns `CheckResult[]` for integration into the morning report.
15
+ - **Auto-detection** — `CheckRunner.detectBackupConfig()` checks for `/opt/fleet-backup/fleet-backup.sh` at runtime. If found, the full orchestration runs; otherwise falls back to manifest-only freshness check.
16
+ - **Tiered backup strategy** — weekly full (~460 MB, split into <95 MB chunks) and daily light (~5-15 MB). Both push off-site to GitHub with 35-day retention.
17
+ - **`install.sh` updated** — copies fleet backup scripts from the bundled npm package (preferred) or standalone git clone (fallback). Removes the old standalone cron job.
18
+ - **17 unit tests** for `backup-orchestrator.ts` (execution, failure, manifest, tests, edge cases).
19
+ - **15 watchdog validation tests** for the bundled fleet backup scripts and updated installer.
20
+ - **4 scenario tests** for backup orchestration through `runDataChecks`.
21
+ - **3 data-integrity tests** for `backupConfig` parameter behavior.
22
+
23
+ ### Changed
24
+ - `morning-check.sh` no longer triggers `fleet-backup.sh` directly — backup is orchestrated by the TypeScript health engine.
25
+ - `runDataChecks()` accepts optional `backupConfig` parameter for full orchestration.
26
+ - `runAll()` and `runCategory()` in `CheckRunner` auto-detect backup infrastructure.
27
+ - Total test count: 499 across 26 files (28 new tests in this release).
28
+
29
+ ## [0.3.31] — 2026-03-02
30
+
31
+ **Docs site daily backup monitoring.**
32
+
33
+ ### Added
34
+ - **`checkDocsBackupFreshness()`** — monitors the `docs-backup` branch on GitHub for daily documentation site backup freshness. Warns if no backup in 36 hours.
35
+ - **`checkFleetBackupFreshness()`** — reads `latest-manifest.json` from fleet backup, validates structure and recency.
36
+ - Comprehensive freshness tests for both backup types.
37
+
38
+ ## [0.3.29] — 2026-03-01
39
+
40
+ **Fleet backup integration into morning check.**
41
+
42
+ ### Added
43
+ - **Morning check triggers fleet backup** — `morning-check.sh` now executes `/opt/fleet-backup/fleet-backup.sh` before running health checks. Sends Telegram alert on failure.
44
+ - Fleet backup result included in health report.
45
+
46
+ ## [0.3.26] — 2026-02-28
47
+
48
+ **Alerting health checks and path improvements.**
49
+
50
+ ### Added
51
+ - 6 security pipeline runtime checks.
52
+ - Fleet tool registration validation (Rule 155 compliance).
53
+ - Alerting health checks integrated into morning report.
54
+
55
+ ### Fixed
56
+ - Removed hardcoded VPS paths — all paths now resolved dynamically.
57
+
58
+ ### Changed
59
+ - Published to npm as `@aiassesstech/mighty-mark@0.3.26`.
60
+
61
+ ## [0.3.1] — 2026-02-23
62
+
63
+ **OpenClaw workspace path integration.**
64
+
65
+ ### Added
66
+ - Read workspace paths from `openclaw.json` configuration.
67
+ - Single-command `setup` for agent provisioning.
68
+
69
+ ## [0.2.6] — 2026-02-21
70
+
71
+ **Memory path fix — OpenClaw ignores symlinks.**
72
+
73
+ ### Fixed
74
+ - Write memory files directly to agent workspaces. OpenClaw's memory scanner does not follow symlinks (discovered in production). See rule `807-openclaw-memory-paths.mdc`.
75
+
76
+ ## [0.2.0] — 2026-02-19
77
+
78
+ **Fleet Memory Infrastructure — initial release.**
79
+
80
+ ### Added
81
+ - `MemoryWriter` for agent memory files with correct path resolution.
82
+ - `createAgentMemoryDirs()` for workspace directory setup.
83
+ - Memory backfill from central directory to agent workspaces.
84
+ - 26 health checks across 5 categories (API, Data, Infrastructure, Memory, Process).
85
+ - Two-layer architecture: Level 2 (OpenClaw plugin) + Level 1 (bash watchdog).
86
+ - Morning check protocol with Telegram reporting.
87
+ - Incident management with severity classification.
88
+ - Uptime tracking (7/14/30-day SLA).
package/agent/AGENTS.md CHANGED
@@ -37,6 +37,19 @@ If the gateway dies and I die with it, my Level 1 watchdog — pure bash, runnin
37
37
  via cron — will restart the gateway and bring me back. I trust it because it has
38
38
  no dependencies. It's the simplest possible script doing the most important job.
39
39
 
40
+ ## Rule 8: Fleet Backup Is My Duty
41
+ Every morning before health checks, I orchestrate the fleet backup. My TypeScript
42
+ engine executes fleet-backup.sh, validates the manifest, then runs both test suites
43
+ (48 bash tests) to verify the backup is restorable. The backup is tiered:
44
+ - **Full** (Sunday): Everything — extensions, memory, data stores, vector indexes,
45
+ sessions, fleet-bus, configs. ~460 MB, split into chunks for GitHub.
46
+ - **Light** (Mon–Sat): Agent .md files, sanitized configs, systemd/cron. ~5-15 MB.
47
+
48
+ Both tiers push off-site to GitHub. Both are retained for 35 days. If the backup
49
+ fails, I send an immediate Telegram alert. If tests fail, I report it in the
50
+ morning check. This is the last line of defense — if the VPS is compromised,
51
+ these backups are all we have.
52
+
40
53
  ## Communication Protocol
41
54
 
42
55
  When communicating with other agents via agent-to-agent messaging:
@@ -59,3 +72,18 @@ Store results in the `.mighty-mark-data/` directory:
59
72
  incidents/ # Incident records
60
73
  config/ # Fleet topology (BB-editable)
61
74
  ```
75
+
76
+ ## Backup Infrastructure
77
+
78
+ Fleet backup scripts ship with my npm package and are deployed to `/opt/fleet-backup/`:
79
+ ```
80
+ /opt/fleet-backup/
81
+ fleet-backup.sh # Tiered backup (auto-detects full/light)
82
+ fleet-restore.sh # Restore from local or GitHub
83
+ config.sh # Paths, retention, GitHub settings
84
+ config.local.sh # VPS-specific overrides (not in git)
85
+ latest-manifest.json # Last backup manifest (read by health checks)
86
+ backups/ # Local archive storage (35-day retention)
87
+ logs/ # Backup logs
88
+ test/ # 48 bash tests (backup + restore)
89
+ ```
@@ -1 +1 @@
1
- {"version":3,"file":"gateway-health.d.ts","sourceRoot":"","sources":["../../src/checks/gateway-health.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAiD,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEtG,uCAAuC;AACvC,wBAAsB,mBAAmB,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAuBlF;AAED,iEAAiE;AACjE,wBAAsB,kBAAkB,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA6CjF;AAED,uEAAuE;AACvE,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,GAAG,CAAC,EAAE,YAAY,GACjB,OAAO,CAAC,WAAW,CAAC,CAgEtB;AAmBD,0CAA0C;AAC1C,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,GAAG,CAAC,EAAE,YAAY,GACjB,OAAO,CAAC,WAAW,CAAC,CA2EtB;AAED,qCAAqC;AACrC,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,aAAa,EACvB,iBAAiB,EAAE,MAAM,EACzB,GAAG,CAAC,EAAE,YAAY,GACjB,OAAO,CAAC,WAAW,EAAE,CAAC,CAaxB"}
1
+ {"version":3,"file":"gateway-health.d.ts","sourceRoot":"","sources":["../../src/checks/gateway-health.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAiD,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGtG,uCAAuC;AACvC,wBAAsB,mBAAmB,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAuBlF;AAED,iEAAiE;AACjE,wBAAsB,kBAAkB,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA6CjF;AAED,uEAAuE;AACvE,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,GAAG,CAAC,EAAE,YAAY,GACjB,OAAO,CAAC,WAAW,CAAC,CAgEtB;AAmBD,0CAA0C;AAC1C,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,GAAG,CAAC,EAAE,YAAY,GACjB,OAAO,CAAC,WAAW,CAAC,CA2EtB;AAED,qCAAqC;AACrC,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,aAAa,EACvB,iBAAiB,EAAE,MAAM,EACzB,GAAG,CAAC,EAAE,YAAY,GACjB,OAAO,CAAC,WAAW,EAAE,CAAC,CAexB"}
@@ -4,6 +4,7 @@
4
4
  import fs from 'node:fs';
5
5
  import path from 'node:path';
6
6
  import { exec, getConfigPath, now, resolveOpenClawHome } from './check-context.js';
7
+ import { checkOpenClawVersion, checkOpenClawConfigIntegrity } from './openclaw-version.js';
7
8
  /** Check #1: Gateway process alive. */
8
9
  export async function checkGatewayProcess(ctx) {
9
10
  const start = Date.now();
@@ -235,6 +236,8 @@ export async function runGatewayChecks(topology, expectedToolCount, ctx) {
235
236
  results.push(await checkPluginLoaded(plugin, name, ctx));
236
237
  }
237
238
  results.push(await checkToolCount(expectedToolCount, ctx));
239
+ results.push(await checkOpenClawVersion(ctx));
240
+ results.push(await checkOpenClawConfigIntegrity(ctx));
238
241
  return results;
239
242
  }
240
243
  //# sourceMappingURL=gateway-health.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gateway-health.js","sourceRoot":"","sources":["../../src/checks/gateway-health.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gateway-health.js","sourceRoot":"","sources":["../../src/checks/gateway-health.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * OpenClaw version and config integrity checks.
3
+ *
4
+ * - Version check: compares installed OpenClaw version against npm registry latest,
5
+ * surfacing upgrade recommendations in the morning report.
6
+ * - Config integrity: validates that critical config keys (controlUi.allowedOrigins,
7
+ * plugins.allow) are present — a permanent check, not just post-upgrade.
8
+ *
9
+ * These checks are additive to the existing gateway checks and do not replace them.
10
+ * The upgrade itself is human-initiated (scripts/ops/upgrade-openclaw.sh);
11
+ * Mighty Mark only monitors and reports.
12
+ */
13
+ import type { CheckResult } from '../types/health.js';
14
+ import { type CheckContext } from './check-context.js';
15
+ /**
16
+ * Check: OpenClaw version currency.
17
+ *
18
+ * Compares installed `openclaw --version` against `npm view openclaw version`.
19
+ * Reports pass when current, warn when behind, and degrades gracefully when
20
+ * either command fails (registry unreachable, openclaw not installed, etc.).
21
+ */
22
+ export declare function checkOpenClawVersion(ctx?: CheckContext): Promise<CheckResult>;
23
+ /**
24
+ * Check: OpenClaw config integrity.
25
+ *
26
+ * Validates that critical configuration keys are present in openclaw.json.
27
+ * This catches config regressions regardless of whether an upgrade just happened.
28
+ *
29
+ * Checked keys:
30
+ * - gateway.controlUi.allowedOrigins (required since 2026.2.23)
31
+ * - plugins.allow (allowlist for plugin loading)
32
+ */
33
+ export declare function checkOpenClawConfigIntegrity(ctx?: CheckContext): Promise<CheckResult>;
34
+ //# sourceMappingURL=openclaw-version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openclaw-version.d.ts","sourceRoot":"","sources":["../../src/checks/openclaw-version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAsC,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE3F;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAoDnF;AAED;;;;;;;;;GASG;AACH,wBAAsB,4BAA4B,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA2D3F"}
@@ -0,0 +1,165 @@
1
+ /**
2
+ * OpenClaw version and config integrity checks.
3
+ *
4
+ * - Version check: compares installed OpenClaw version against npm registry latest,
5
+ * surfacing upgrade recommendations in the morning report.
6
+ * - Config integrity: validates that critical config keys (controlUi.allowedOrigins,
7
+ * plugins.allow) are present — a permanent check, not just post-upgrade.
8
+ *
9
+ * These checks are additive to the existing gateway checks and do not replace them.
10
+ * The upgrade itself is human-initiated (scripts/ops/upgrade-openclaw.sh);
11
+ * Mighty Mark only monitors and reports.
12
+ */
13
+ import fs from 'node:fs';
14
+ import { exec, fetchUrl, getConfigPath, now } from './check-context.js';
15
+ /**
16
+ * Check: OpenClaw version currency.
17
+ *
18
+ * Compares installed `openclaw --version` against `npm view openclaw version`.
19
+ * Reports pass when current, warn when behind, and degrades gracefully when
20
+ * either command fails (registry unreachable, openclaw not installed, etc.).
21
+ */
22
+ export async function checkOpenClawVersion(ctx) {
23
+ const start = Date.now();
24
+ let installed = 'unknown';
25
+ try {
26
+ const raw = exec('openclaw --version', ctx);
27
+ installed = extractSemver(raw) ?? raw.trim();
28
+ }
29
+ catch {
30
+ return {
31
+ name: 'OpenClaw version',
32
+ category: 'gateway',
33
+ status: 'warn',
34
+ message: 'Could not determine installed OpenClaw version',
35
+ timestamp: now(),
36
+ durationMs: Date.now() - start,
37
+ };
38
+ }
39
+ let latest = 'unknown';
40
+ try {
41
+ const raw = await fetchNpmVersion('openclaw', ctx);
42
+ latest = raw;
43
+ }
44
+ catch {
45
+ return {
46
+ name: 'OpenClaw version',
47
+ category: 'gateway',
48
+ status: 'pass',
49
+ message: `${installed} (registry unreachable — skipped update check)`,
50
+ timestamp: now(),
51
+ durationMs: Date.now() - start,
52
+ };
53
+ }
54
+ if (installed === latest) {
55
+ return {
56
+ name: 'OpenClaw version',
57
+ category: 'gateway',
58
+ status: 'pass',
59
+ message: `${installed} (latest)`,
60
+ timestamp: now(),
61
+ durationMs: Date.now() - start,
62
+ };
63
+ }
64
+ return {
65
+ name: 'OpenClaw version',
66
+ category: 'gateway',
67
+ status: 'warn',
68
+ message: `${installed} installed, ${latest} available — upgrade recommended`,
69
+ timestamp: now(),
70
+ durationMs: Date.now() - start,
71
+ };
72
+ }
73
+ /**
74
+ * Check: OpenClaw config integrity.
75
+ *
76
+ * Validates that critical configuration keys are present in openclaw.json.
77
+ * This catches config regressions regardless of whether an upgrade just happened.
78
+ *
79
+ * Checked keys:
80
+ * - gateway.controlUi.allowedOrigins (required since 2026.2.23)
81
+ * - plugins.allow (allowlist for plugin loading)
82
+ */
83
+ export async function checkOpenClawConfigIntegrity(ctx) {
84
+ const start = Date.now();
85
+ const configPath = getConfigPath(ctx);
86
+ if (!fs.existsSync(configPath)) {
87
+ return {
88
+ name: 'OpenClaw config integrity',
89
+ category: 'gateway',
90
+ status: 'warn',
91
+ message: `Config not found: ${configPath}`,
92
+ timestamp: now(),
93
+ durationMs: Date.now() - start,
94
+ };
95
+ }
96
+ try {
97
+ const raw = fs.readFileSync(configPath, 'utf-8');
98
+ const config = JSON.parse(raw);
99
+ const issues = [];
100
+ const allowedOrigins = config?.gateway?.controlUi?.allowedOrigins;
101
+ if (!allowedOrigins || (Array.isArray(allowedOrigins) && allowedOrigins.length === 0)) {
102
+ issues.push('gateway.controlUi.allowedOrigins missing');
103
+ }
104
+ const pluginsAllow = config?.plugins?.allow;
105
+ if (!pluginsAllow || (Array.isArray(pluginsAllow) && pluginsAllow.length === 0)) {
106
+ issues.push('plugins.allow missing or empty');
107
+ }
108
+ if (issues.length > 0) {
109
+ return {
110
+ name: 'OpenClaw config integrity',
111
+ category: 'gateway',
112
+ status: 'warn',
113
+ message: issues.join('; '),
114
+ timestamp: now(),
115
+ durationMs: Date.now() - start,
116
+ };
117
+ }
118
+ return {
119
+ name: 'OpenClaw config integrity',
120
+ category: 'gateway',
121
+ status: 'pass',
122
+ message: 'controlUi.allowedOrigins ✓, plugins.allow ✓',
123
+ timestamp: now(),
124
+ durationMs: Date.now() - start,
125
+ };
126
+ }
127
+ catch (err) {
128
+ return {
129
+ name: 'OpenClaw config integrity',
130
+ category: 'gateway',
131
+ status: 'fail',
132
+ message: `Config parse error: ${err instanceof Error ? err.message : String(err)}`,
133
+ timestamp: now(),
134
+ durationMs: Date.now() - start,
135
+ };
136
+ }
137
+ }
138
+ /**
139
+ * Fetch the latest published version of an npm package.
140
+ *
141
+ * Uses the npm registry JSON API with a short timeout so the morning check
142
+ * doesn't hang if the registry is down. Falls back to `npm view` via exec
143
+ * when the HTTP approach fails.
144
+ */
145
+ async function fetchNpmVersion(packageName, ctx) {
146
+ try {
147
+ const res = await fetchUrl(`https://registry.npmjs.org/${packageName}/latest`, { signal: AbortSignal.timeout(10_000) }, ctx);
148
+ if (res.ok) {
149
+ const data = await res.json();
150
+ if (data.version)
151
+ return data.version;
152
+ }
153
+ }
154
+ catch {
155
+ // fall through to exec
156
+ }
157
+ const raw = exec(`npm view ${packageName} version`, ctx);
158
+ return raw.trim();
159
+ }
160
+ /** Extract a semver string (x.y.z) from version output that may include extra text. */
161
+ function extractSemver(raw) {
162
+ const match = raw.match(/(\d+\.\d+\.\d+)/);
163
+ return match ? match[1] : null;
164
+ }
165
+ //# sourceMappingURL=openclaw-version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openclaw-version.js","sourceRoot":"","sources":["../../src/checks/openclaw-version.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiassesstech/mighty-mark",
3
- "version": "0.3.32",
3
+ "version": "0.3.33",
4
4
  "description": "System Health Sentinel for AI Assess Tech Fleet — autonomous monitoring, watchdog recovery, and fleet infrastructure oversight.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",