@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 +88 -0
- package/agent/AGENTS.md +28 -0
- package/dist/checks/gateway-health.d.ts.map +1 -1
- package/dist/checks/gateway-health.js +3 -0
- package/dist/checks/gateway-health.js.map +1 -1
- package/dist/checks/openclaw-version.d.ts +34 -0
- package/dist/checks/openclaw-version.d.ts.map +1 -0
- package/dist/checks/openclaw-version.js +165 -0
- package/dist/checks/openclaw-version.js.map +1 -0
- package/package.json +1 -1
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;
|
|
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":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,mBAAmB,EAAqB,MAAM,oBAAoB,CAAC;
|
|
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.
|
|
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",
|