@senpi/runtime 3.0.48 → 3.0.52
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/dist/cli/guide-commands.d.ts.map +1 -1
- package/dist/cli/guide-commands.js +11 -3
- package/dist/cli/guide-commands.js.map +1 -1
- package/dist/cli/senpi-commands.d.ts.map +1 -1
- package/dist/cli/senpi-commands.js +25 -3
- package/dist/cli/senpi-commands.js.map +1 -1
- package/dist/health/types.d.ts +16 -0
- package/dist/health/types.d.ts.map +1 -1
- package/dist/health/types.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +131 -37
- package/dist/index.js.map +1 -1
- package/dist/runtime/run.d.ts +20 -0
- package/dist/runtime/run.d.ts.map +1 -1
- package/dist/runtime/run.js +6 -0
- package/dist/runtime/run.js.map +1 -1
- package/dist/runtime/runtime.d.ts +18 -0
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +19 -0
- package/dist/runtime/runtime.js.map +1 -1
- package/dist/runtime/supervisor/long-running-supervisor.d.ts.map +1 -1
- package/dist/runtime/supervisor/long-running-supervisor.js +4 -1
- package/dist/runtime/supervisor/long-running-supervisor.js.map +1 -1
- package/dist/runtime-api/intake/intake-events.d.ts.map +1 -1
- package/dist/runtime-api/intake/intake-events.js +6 -2
- package/dist/runtime-api/intake/intake-events.js.map +1 -1
- package/dist/runtime-api/intake/intake-mount.d.ts +2 -1
- package/dist/runtime-api/intake/intake-mount.d.ts.map +1 -1
- package/dist/runtime-api/intake/intake-mount.js +22 -2
- package/dist/runtime-api/intake/intake-mount.js.map +1 -1
- package/dist/runtime-api/intake/scanner-launcher.d.ts +14 -1
- package/dist/runtime-api/intake/scanner-launcher.d.ts.map +1 -1
- package/dist/runtime-api/intake/scanner-launcher.js +51 -1
- package/dist/runtime-api/intake/scanner-launcher.js.map +1 -1
- package/dist/runtime-api/intake/supervisor-events.d.ts.map +1 -1
- package/dist/runtime-api/intake/supervisor-events.js +3 -1
- package/dist/runtime-api/intake/supervisor-events.js.map +1 -1
- package/dist/runtime-api/routes/signals.d.ts.map +1 -1
- package/dist/runtime-api/routes/signals.js +4 -2
- package/dist/runtime-api/routes/signals.js.map +1 -1
- package/dist/runtime-api/server.d.ts +7 -0
- package/dist/runtime-api/server.d.ts.map +1 -1
- package/dist/runtime-api/server.js +1 -0
- package/dist/runtime-api/server.js.map +1 -1
- package/dist/scanners/engine/engine.d.ts +23 -0
- package/dist/scanners/engine/engine.d.ts.map +1 -1
- package/dist/scanners/engine/engine.js +39 -0
- package/dist/scanners/engine/engine.js.map +1 -1
- package/dist/scanners/index.d.ts +1 -1
- package/dist/scanners/index.d.ts.map +1 -1
- package/dist/scanners/index.js +1 -1
- package/dist/scanners/index.js.map +1 -1
- package/dist/scanners/runtime-module.d.ts +53 -1
- package/dist/scanners/runtime-module.d.ts.map +1 -1
- package/dist/scanners/runtime-module.js +188 -47
- package/dist/scanners/runtime-module.js.map +1 -1
- package/dist/scanners/supervision.d.ts +38 -0
- package/dist/scanners/supervision.d.ts.map +1 -0
- package/dist/scanners/supervision.js +2 -0
- package/dist/scanners/supervision.js.map +1 -0
- package/dist/skills-manager/bootstrap.d.ts.map +1 -1
- package/dist/skills-manager/bootstrap.js +6 -0
- package/dist/skills-manager/bootstrap.js.map +1 -1
- package/dist/skills-manager/writer.d.ts +5 -3
- package/dist/skills-manager/writer.d.ts.map +1 -1
- package/dist/skills-manager/writer.js +12 -3
- package/dist/skills-manager/writer.js.map +1 -1
- package/dist/utils/event-catalog.d.ts +37 -0
- package/dist/utils/event-catalog.d.ts.map +1 -1
- package/dist/utils/event-catalog.js +31 -0
- package/dist/utils/event-catalog.js.map +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import type { ScannerComponentHealthStatus, ScannerSystemState } from "../health/types.js";
|
|
1
|
+
import type { ComponentHealth, ScannerComponentHealthStatus, ScannerSystemState } from "../health/types.js";
|
|
2
2
|
import type { ScannerDataProviders } from "./engine/data-providers.js";
|
|
3
3
|
import { type ScannerRegistrationSummary } from "./engine/engine.js";
|
|
4
4
|
import type { ScannerComposition } from "../runtime/scanner-composition.js";
|
|
5
5
|
import type { IdentityEnvelope } from "../telemetry/identity.js";
|
|
6
6
|
import type { ExternalScannerIngestRequest, ExternalScannerIngestResult } from "./external-scanner-receiver.js";
|
|
7
|
+
import type { ScannerSupervisionRow, ScannerSupervisionSource } from "./supervision.js";
|
|
7
8
|
import { type ScannerRuntimeEventMap, type ScannerRuntimeEventName } from "./events.js";
|
|
8
9
|
import type { ScannerLogger } from "./protocol/context.js";
|
|
10
|
+
import type { ScannerScheduleMode } from "./scanner-definition.js";
|
|
9
11
|
import { type ScannerFactory } from "./prepare-scanner-inputs.js";
|
|
10
12
|
import type { ReadSignalsFilter, ScanResult, ScannerId, Signal, StrategyRegistration } from "./types.js";
|
|
11
13
|
/** Factory that creates one scanner instance for one strategy registration. */
|
|
@@ -59,6 +61,27 @@ export interface ScannerRuntimeModule {
|
|
|
59
61
|
* the same event and context semantics as built-in scanners.
|
|
60
62
|
*/
|
|
61
63
|
ingestExternalScannerData(address: string, request: ExternalScannerIngestRequest): Promise<ExternalScannerIngestResult>;
|
|
64
|
+
/**
|
|
65
|
+
* Records a scaffold-reported tick failure (a scan() that threw, timed out, or
|
|
66
|
+
* failed to persist state) for a push-driven external scanner into run
|
|
67
|
+
* telemetry, without an ingest. Resolves by (address, scanner NAME); returns
|
|
68
|
+
* false for an unknown/ineligible scanner. The failure feeds the same
|
|
69
|
+
* error-counting path as an interval scanner's thrown run, so
|
|
70
|
+
* consecutiveErrorCount/lastRunStatus reflect it and push-driven health
|
|
71
|
+
* derivation can no longer fall open to "healthy" while every tick is failing.
|
|
72
|
+
*/
|
|
73
|
+
recordExternalScannerError(address: string, scannerName: ScannerId, error: {
|
|
74
|
+
type: string;
|
|
75
|
+
error_type?: string;
|
|
76
|
+
message?: string;
|
|
77
|
+
}): boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Attaches the supervision fact source produced outside the module (intake
|
|
80
|
+
* liveness clock + process supervisor). The module is the single consumer:
|
|
81
|
+
* health/state calls read it lazily to join per-external-scanner liveness and
|
|
82
|
+
* supervisor verdicts onto their rows. Replaces any previously attached source.
|
|
83
|
+
*/
|
|
84
|
+
attachSupervisionSource(source: ScannerSupervisionSource): void;
|
|
62
85
|
/** Queries persisted latest signals. */
|
|
63
86
|
querySignals(filter?: ReadSignalsFilter): Promise<Signal[]>;
|
|
64
87
|
/** Subscribes one event listener to runtime lifecycle events. */
|
|
@@ -75,6 +98,35 @@ export interface ScannerRuntimeModule {
|
|
|
75
98
|
* Registered scanners are supplied as factories so the module never reuses mutable scanner objects.
|
|
76
99
|
*/
|
|
77
100
|
export declare function createScannerRuntimeModule(options: ScannerRuntimeModuleOptions): ScannerRuntimeModule;
|
|
101
|
+
/** Health-derivation inputs for one scanner, snapshotted at query time. */
|
|
102
|
+
export interface ScannerHealthFacts {
|
|
103
|
+
enabled: boolean;
|
|
104
|
+
scheduleMode: ScannerScheduleMode;
|
|
105
|
+
/** Configured interval; 0 for external (push-driven) scanners. */
|
|
106
|
+
intervalSeconds: number;
|
|
107
|
+
/** Next scheduled interval run (interval scanners only); null otherwise. */
|
|
108
|
+
nextRunAt: number | null;
|
|
109
|
+
/** Wall clock at derivation. */
|
|
110
|
+
now: number;
|
|
111
|
+
telemetry: {
|
|
112
|
+
inFlight: boolean;
|
|
113
|
+
lastRunStartedAt: number | null;
|
|
114
|
+
lastRunFinishedAt: number | null;
|
|
115
|
+
lastRunStatus: string | null;
|
|
116
|
+
consecutiveErrorCount: number;
|
|
117
|
+
};
|
|
118
|
+
/** Supervision row for this scanner (external scanners with a source attached). */
|
|
119
|
+
supervision?: ScannerSupervisionRow;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Derives one scanner's health, fail-closed for push-driven (external) scanners:
|
|
123
|
+
* a state that cannot be proven by a successful read or a recent clean tick never
|
|
124
|
+
* renders "healthy" — "unknown" is the honest answer, "healthy" is a claim.
|
|
125
|
+
*
|
|
126
|
+
* Pure and total: identical facts always yield the same verdict. Exported so the
|
|
127
|
+
* rules table can be pinned directly rather than through module setup.
|
|
128
|
+
*/
|
|
129
|
+
export declare function deriveScannerHealthFromFacts(facts: ScannerHealthFacts): ComponentHealth;
|
|
78
130
|
/**
|
|
79
131
|
* Builds a scanner composition from scanner factories.
|
|
80
132
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-module.d.ts","sourceRoot":"","sources":["../../src/scanners/runtime-module.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"runtime-module.d.ts","sourceRoot":"","sources":["../../src/scanners/runtime-module.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,8 @@ class DefaultScannerRuntimeModule {
|
|
|
25
25
|
events = new EventEmitter();
|
|
26
26
|
now;
|
|
27
27
|
telemetry = new Map();
|
|
28
|
+
/** Supervision facts produced outside the module, attached post-construction; null until wired. */
|
|
29
|
+
supervisionSource = null;
|
|
28
30
|
constructor(options) {
|
|
29
31
|
const now = options.now ?? Date.now;
|
|
30
32
|
this.now = now;
|
|
@@ -97,12 +99,20 @@ class DefaultScannerRuntimeModule {
|
|
|
97
99
|
async ingestExternalScannerData(address, request) {
|
|
98
100
|
return this.engine.ingestExternalScannerData(address, request);
|
|
99
101
|
}
|
|
102
|
+
recordExternalScannerError(address, scannerName, error) {
|
|
103
|
+
return this.engine.recordExternalScannerError(address, scannerName, error);
|
|
104
|
+
}
|
|
105
|
+
attachSupervisionSource(source) {
|
|
106
|
+
this.supervisionSource = source;
|
|
107
|
+
}
|
|
100
108
|
async querySignals(filter) {
|
|
101
109
|
return this.signalStore.readSignals(filter);
|
|
102
110
|
}
|
|
103
111
|
async getHealthStatus() {
|
|
104
112
|
const registrations = this.engine.describeRegistrations();
|
|
105
|
-
|
|
113
|
+
// Snapshot supervision once per invocation (not per row); see readSupervision().
|
|
114
|
+
const supervision = this.readSupervision();
|
|
115
|
+
const scannerStates = this.buildScannerHealthRows(registrations, supervision);
|
|
106
116
|
const enabled = registrations.filter((registration) => registration.enabled);
|
|
107
117
|
const counts = countScannerHealthRows(scannerStates);
|
|
108
118
|
const componentHealth = deriveWorstHealth(scannerStates
|
|
@@ -121,14 +131,22 @@ class DefaultScannerRuntimeModule {
|
|
|
121
131
|
unhealthy: counts.unhealthy,
|
|
122
132
|
},
|
|
123
133
|
scanners: scannerStates.map(({ enabled: _enabled, inFlight: _inFlight, ...scanner }) => scanner),
|
|
134
|
+
// Carry the runtime-level unwired verdict through the health payload so the CLI can render
|
|
135
|
+
// "NO ENTRY SCANNERS" without a second data channel; absent when scanners wired normally.
|
|
136
|
+
...(supervision?.unwired
|
|
137
|
+
? { unwired: true, unwiredPhase: supervision.unwiredPhase }
|
|
138
|
+
: {}),
|
|
124
139
|
};
|
|
125
140
|
}
|
|
126
141
|
async getSystemState() {
|
|
127
142
|
const registrations = this.engine.describeRegistrations();
|
|
143
|
+
// Snapshot supervision once per invocation (not per row): the concurrent async map below
|
|
144
|
+
// must observe a single consistent set of facts, and the source may be non-trivial.
|
|
145
|
+
const supervision = this.readSupervision();
|
|
128
146
|
const scanners = await Promise.all(registrations.map(async (registration) => {
|
|
129
147
|
const telemetry = this.ensureTelemetry(registration.address, registration.scannerId);
|
|
130
148
|
const runtime = await this.runtimeStore.read(registration.address, registration.scannerId);
|
|
131
|
-
const health = this.deriveScannerHealth(registration, telemetry);
|
|
149
|
+
const health = this.deriveScannerHealth(registration, telemetry, supervision);
|
|
132
150
|
return {
|
|
133
151
|
address: registration.address,
|
|
134
152
|
scannerId: registration.scannerId,
|
|
@@ -149,8 +167,10 @@ class DefaultScannerRuntimeModule {
|
|
|
149
167
|
errorCount: telemetry.errorCount,
|
|
150
168
|
consecutiveErrorCount: telemetry.consecutiveErrorCount,
|
|
151
169
|
signalsProduced: telemetry.signalsProduced,
|
|
152
|
-
// External-scanner liveness is joined
|
|
153
|
-
|
|
170
|
+
// External-scanner liveness is joined here from the attached supervision source (keyed by
|
|
171
|
+
// scanner name = the external registration's scannerId); null for interval/internal scanners
|
|
172
|
+
// and whenever no source is attached.
|
|
173
|
+
lastAliveAt: this.supervisionFor(registration.scannerId, supervision)?.lastAliveAt ?? null,
|
|
154
174
|
configVersion: runtime?.configVersion ?? null,
|
|
155
175
|
runtimeUpdatedAt: runtime?.updatedAt ?? null,
|
|
156
176
|
config: runtime?.config ?? null,
|
|
@@ -174,6 +194,18 @@ class DefaultScannerRuntimeModule {
|
|
|
174
194
|
off(eventName, listener) {
|
|
175
195
|
this.events.off(eventName, listener);
|
|
176
196
|
}
|
|
197
|
+
/**
|
|
198
|
+
* Snapshots the attached supervision source exactly once. Callers take this at the
|
|
199
|
+
* top of a health/state call and pass it to {@link supervisionFor} for per-row lookups,
|
|
200
|
+
* so the source runs once per invocation rather than once per scanner row.
|
|
201
|
+
*/
|
|
202
|
+
readSupervision() {
|
|
203
|
+
return this.supervisionSource ? this.supervisionSource() : null;
|
|
204
|
+
}
|
|
205
|
+
/** Finds the supervision row for one scanner name within a snapshot; keyed by scanner name. */
|
|
206
|
+
supervisionFor(name, supervision) {
|
|
207
|
+
return supervision?.rows.find((row) => row.scannerName === name);
|
|
208
|
+
}
|
|
177
209
|
ensureTelemetry(address, scannerId) {
|
|
178
210
|
const key = telemetryKey(address, scannerId);
|
|
179
211
|
let telemetry = this.telemetry.get(key);
|
|
@@ -253,6 +285,22 @@ class DefaultScannerRuntimeModule {
|
|
|
253
285
|
telemetry.runCount += 1;
|
|
254
286
|
telemetry.errorCount += 1;
|
|
255
287
|
telemetry.consecutiveErrorCount += 1;
|
|
288
|
+
// The terminal-error disable breaker is for INTERVAL scanners only: their tool
|
|
289
|
+
// call repeats on a timer nothing else stops, so a deterministic failure must
|
|
290
|
+
// trip the breaker. Push-driven (external) scanners are exempt — their ticks run
|
|
291
|
+
// in a supervised child that already owns retry-at-cap, and the scaffold propagates
|
|
292
|
+
// MCP error text verbatim into author exceptions (e.g. "... NOT_FOUND ..."), which
|
|
293
|
+
// isTerminalToolError classifies by substring. Running the breaker here would
|
|
294
|
+
// disable the intake after 3 such ticks while the child keeps running — a live
|
|
295
|
+
// child ticking into a dead intake with no re-enable path, the exact silent
|
|
296
|
+
// half-stoppage this branch exists to kill. Exit before touching the breaker so
|
|
297
|
+
// external errors count toward health (degraded/unhealthy) but never disable.
|
|
298
|
+
const scheduleMode = this.engine
|
|
299
|
+
.describeRegistrations(event.address)
|
|
300
|
+
.find((registration) => registration.scannerId === event.scannerId)?.scheduleMode;
|
|
301
|
+
if (scheduleMode === "external") {
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
256
304
|
// Repeated-deterministic-failure breaker: a scanner failing on a terminal
|
|
257
305
|
// error (bad args, auth, not-found) will fail identically every interval
|
|
258
306
|
// forever — the 2026-07 storms ran for days because nothing stopped the
|
|
@@ -283,68 +331,161 @@ class DefaultScannerRuntimeModule {
|
|
|
283
331
|
}
|
|
284
332
|
}
|
|
285
333
|
}
|
|
286
|
-
buildScannerHealthRows(registrations) {
|
|
334
|
+
buildScannerHealthRows(registrations, supervision) {
|
|
287
335
|
return registrations.map((registration) => {
|
|
288
336
|
const telemetry = this.ensureTelemetry(registration.address, registration.scannerId);
|
|
289
|
-
|
|
337
|
+
// Keyed by scanner NAME = external registration's scannerId (Task 1 seam).
|
|
338
|
+
const supervisionRow = this.supervisionFor(registration.scannerId, supervision);
|
|
339
|
+
const row = {
|
|
290
340
|
address: registration.address,
|
|
291
341
|
scannerId: registration.scannerId,
|
|
292
342
|
enabled: registration.enabled,
|
|
293
343
|
inFlight: registration.inFlight || telemetry.inFlight,
|
|
294
|
-
health: this.deriveScannerHealth(registration, telemetry),
|
|
344
|
+
health: this.deriveScannerHealth(registration, telemetry, supervision),
|
|
295
345
|
};
|
|
346
|
+
// Supervision facts ride the row only for scanners the supervisor tracks (external);
|
|
347
|
+
// interval/internal scanners have no supervision source, so the fields stay absent.
|
|
348
|
+
if (supervisionRow) {
|
|
349
|
+
row.restartCount = supervisionRow.restartCount;
|
|
350
|
+
if (supervisionRow.degradedReason) {
|
|
351
|
+
row.degradedReason = supervisionRow.degradedReason;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
return row;
|
|
296
355
|
});
|
|
297
356
|
}
|
|
298
|
-
deriveScannerHealth(registration, telemetry) {
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
357
|
+
deriveScannerHealth(registration, telemetry, supervision) {
|
|
358
|
+
return deriveScannerHealthFromFacts({
|
|
359
|
+
enabled: registration.enabled,
|
|
360
|
+
scheduleMode: registration.scheduleMode,
|
|
361
|
+
intervalSeconds: registration.intervalSeconds,
|
|
362
|
+
nextRunAt: registration.nextRunAt,
|
|
363
|
+
now: this.now(),
|
|
364
|
+
telemetry,
|
|
365
|
+
// Keyed by scanner NAME = external registration's scannerId (Task 1 seam).
|
|
366
|
+
supervision: this.supervisionFor(registration.scannerId, supervision),
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Derives one scanner's health, fail-closed for push-driven (external) scanners:
|
|
372
|
+
* a state that cannot be proven by a successful read or a recent clean tick never
|
|
373
|
+
* renders "healthy" — "unknown" is the honest answer, "healthy" is a claim.
|
|
374
|
+
*
|
|
375
|
+
* Pure and total: identical facts always yield the same verdict. Exported so the
|
|
376
|
+
* rules table can be pinned directly rather than through module setup.
|
|
377
|
+
*/
|
|
378
|
+
export function deriveScannerHealthFromFacts(facts) {
|
|
379
|
+
if (!facts.enabled) {
|
|
380
|
+
return "disabled";
|
|
381
|
+
}
|
|
382
|
+
return facts.scheduleMode === "external"
|
|
383
|
+
? derivePushDrivenScannerHealth(facts)
|
|
384
|
+
: deriveIntervalScannerHealth(facts);
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Fail-closed health for push-driven (external) scanners. Liveness is proven only
|
|
388
|
+
* by a recent scaffold POST (supervision.lastAliveAt); a scanner whose current child
|
|
389
|
+
* has never POSTed is honestly "unknown" until its first POST — even if a stale
|
|
390
|
+
* lastRunStatus:"ok" survives from a previous (pre-remint) child. No synthetic
|
|
391
|
+
* boot-grace window that would render an unproven scanner "healthy". A recent POST
|
|
392
|
+
* is necessary but not sufficient: a run that started and never finished degrades on
|
|
393
|
+
* elapsed run time regardless of how fresh the POSTs are.
|
|
394
|
+
*/
|
|
395
|
+
function derivePushDrivenScannerHealth(facts) {
|
|
396
|
+
const { telemetry, supervision } = facts;
|
|
397
|
+
// In flight but nothing recorded yet: nothing is proven — was fail-open "healthy".
|
|
398
|
+
if (telemetry.inFlight && telemetry.lastRunStartedAt == null) {
|
|
399
|
+
return "unknown";
|
|
400
|
+
}
|
|
401
|
+
// Supervisor crash-loop verdict is a proven failure.
|
|
402
|
+
if (supervision?.supervisorStatus === "degraded") {
|
|
403
|
+
return "unhealthy";
|
|
404
|
+
}
|
|
405
|
+
// A recorded run error outranks any recent liveness POST.
|
|
406
|
+
if (telemetry.lastRunStatus === "error") {
|
|
407
|
+
return telemetry.consecutiveErrorCount >= 2 ? "unhealthy" : "degraded";
|
|
408
|
+
}
|
|
409
|
+
// The liveness/staleness window scales with the scanner's REAL configured cadence
|
|
410
|
+
// (carried on the supervision row); the registration reports 0 for external scanners,
|
|
411
|
+
// so fall back to it only when no row cadence is set.
|
|
412
|
+
const configuredIntervalSeconds = supervision?.intervalSeconds ?? facts.intervalSeconds;
|
|
413
|
+
const livenessWindowMs = Math.max(configuredIntervalSeconds, 30) * 1000;
|
|
414
|
+
// A run that STARTED and never finished is its own proof of failure, and it outranks
|
|
415
|
+
// any recent liveness POST. Intake refreshes lastAliveAt on EVERY /signals POST, before
|
|
416
|
+
// the fire-and-forget ingest dispatch — so a wedged ingest keeps collecting fresh POSTs
|
|
417
|
+
// from the still-running child while its run never completes (telemetry stays inFlight
|
|
418
|
+
// with a stale lastRunStatus:"ok"). Without this check liveness alone would certify that
|
|
419
|
+
// "healthy" indefinitely. The ingest body is bounded store I/O — it does not await the
|
|
420
|
+
// trade, which is queued off the synchronous run-result emit — so exceeding 2×/4× the
|
|
421
|
+
// scanner's cadence is abnormal, not slow-but-fine.
|
|
422
|
+
if (telemetry.inFlight && telemetry.lastRunStartedAt != null) {
|
|
423
|
+
const runningMs = facts.now - telemetry.lastRunStartedAt;
|
|
424
|
+
if (runningMs > livenessWindowMs * 4) {
|
|
425
|
+
return "unhealthy";
|
|
318
426
|
}
|
|
319
|
-
if (
|
|
320
|
-
|
|
321
|
-
return "unhealthy";
|
|
322
|
-
}
|
|
323
|
-
if (telemetry.lastRunStatus === "error") {
|
|
324
|
-
return "degraded";
|
|
325
|
-
}
|
|
326
|
-
return "healthy";
|
|
427
|
+
if (runningMs > livenessWindowMs * 2) {
|
|
428
|
+
return "degraded";
|
|
327
429
|
}
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
430
|
+
}
|
|
431
|
+
const lastAliveAt = supervision?.lastAliveAt ?? null;
|
|
432
|
+
// Liveness for a push-driven scanner is proven ONLY by a recent POST (lastAliveAt).
|
|
433
|
+
// When the current child has never been heard from (lastAliveAt == null) we cannot
|
|
434
|
+
// prove it is alive, so we render "unknown" — even if telemetry still carries a stale
|
|
435
|
+
// lastRunStatus:"ok" from a PREVIOUS child. This is the post-remint hole: a supervisor
|
|
436
|
+
// restart re-mints the scanner id, resetting lastAliveAt to null while the name-keyed
|
|
437
|
+
// run telemetry survives; a fail-open "healthy" here would mask a wedged replacement
|
|
438
|
+
// child indefinitely. Fail-closed doctrine: never render "healthy" we cannot prove with
|
|
439
|
+
// a recent read. A benign restart is honestly "unknown" until the child's first POST.
|
|
440
|
+
if (lastAliveAt == null) {
|
|
441
|
+
return "unknown";
|
|
442
|
+
}
|
|
443
|
+
// Heard once, but now silent past the liveness thresholds.
|
|
444
|
+
const silentMs = facts.now - lastAliveAt;
|
|
445
|
+
if (silentMs > livenessWindowMs * 4) {
|
|
446
|
+
return "unhealthy";
|
|
447
|
+
}
|
|
448
|
+
if (silentMs > livenessWindowMs * 2) {
|
|
449
|
+
return "degraded";
|
|
450
|
+
}
|
|
451
|
+
// Proven by a recent POST within the liveness window.
|
|
452
|
+
return "healthy";
|
|
453
|
+
}
|
|
454
|
+
/** Health for interval (schedule-driven) scanners — behavior unchanged from the pre-B1 module. */
|
|
455
|
+
function deriveIntervalScannerHealth(facts) {
|
|
456
|
+
const { telemetry } = facts;
|
|
457
|
+
const intervalMs = Math.max(facts.intervalSeconds, 1) * 1000;
|
|
458
|
+
if (telemetry.inFlight) {
|
|
459
|
+
if (telemetry.lastRunStartedAt == null) {
|
|
334
460
|
return "unknown";
|
|
335
461
|
}
|
|
336
|
-
const
|
|
337
|
-
if (
|
|
338
|
-
return "unhealthy";
|
|
339
|
-
}
|
|
340
|
-
if (overdueMs > intervalMs * 4) {
|
|
462
|
+
const runningMs = facts.now - telemetry.lastRunStartedAt;
|
|
463
|
+
if (runningMs > intervalMs * 4) {
|
|
341
464
|
return "unhealthy";
|
|
342
465
|
}
|
|
343
|
-
if (
|
|
466
|
+
if (runningMs > intervalMs * 2) {
|
|
344
467
|
return "degraded";
|
|
345
468
|
}
|
|
346
469
|
return "healthy";
|
|
347
470
|
}
|
|
471
|
+
const baseline = facts.nextRunAt ??
|
|
472
|
+
(telemetry.lastRunStartedAt != null
|
|
473
|
+
? telemetry.lastRunStartedAt + intervalMs
|
|
474
|
+
: telemetry.lastRunFinishedAt);
|
|
475
|
+
if (baseline == null) {
|
|
476
|
+
return "unknown";
|
|
477
|
+
}
|
|
478
|
+
const overdueMs = facts.now - baseline;
|
|
479
|
+
if (telemetry.lastRunStatus === "error" && telemetry.consecutiveErrorCount >= 2) {
|
|
480
|
+
return "unhealthy";
|
|
481
|
+
}
|
|
482
|
+
if (overdueMs > intervalMs * 4) {
|
|
483
|
+
return "unhealthy";
|
|
484
|
+
}
|
|
485
|
+
if (telemetry.lastRunStatus === "error" || overdueMs > intervalMs * 2) {
|
|
486
|
+
return "degraded";
|
|
487
|
+
}
|
|
488
|
+
return "healthy";
|
|
348
489
|
}
|
|
349
490
|
function countScannerHealthRows(rows) {
|
|
350
491
|
let inFlight = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-module.js","sourceRoot":"","sources":["../../src/scanners/runtime-module.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtime-module.js","sourceRoot":"","sources":["../../src/scanners/runtime-module.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-external-scanner supervision facts, produced OUTSIDE the scanners module
|
|
3
|
+
* (intake liveness clock + process supervisor) and attached via
|
|
4
|
+
* ScannersRuntimeModule.attachSupervisionSource(). The module is the single
|
|
5
|
+
* consumer: all health derivation happens there. Keyed by configured scanner
|
|
6
|
+
* NAME (stable across relaunch; scanner ids are re-minted on restart).
|
|
7
|
+
*/
|
|
8
|
+
export interface ScannerSupervisionRow {
|
|
9
|
+
scannerName: string;
|
|
10
|
+
/** Supervisor's crash-loop verdict ("degraded" = rapid-failure guard tripped). */
|
|
11
|
+
supervisorStatus: "healthy" | "degraded";
|
|
12
|
+
/** Cumulative child restarts since runtime start. */
|
|
13
|
+
restartCount: number;
|
|
14
|
+
/**
|
|
15
|
+
* Configured POST cadence in seconds (recipe `interval_seconds`), carried from the
|
|
16
|
+
* launcher spec. The engine registration reports `intervalSeconds: 0` for external
|
|
17
|
+
* scanners (they never run on a timer), so the silence-window derivation reads THIS
|
|
18
|
+
* real cadence — absent it would floor at 30s and falsely flap slow scanners.
|
|
19
|
+
* Optional: derivation falls back to the registration `intervalSeconds` when unset.
|
|
20
|
+
*/
|
|
21
|
+
intervalSeconds?: number;
|
|
22
|
+
/** Last POST heard from the scaffold child (epoch ms), null = never heard. */
|
|
23
|
+
lastAliveAt: number | null;
|
|
24
|
+
/** Human cause for a degraded supervisor (last exit summary), if known. */
|
|
25
|
+
degradedReason?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface ScannerSupervision {
|
|
28
|
+
/**
|
|
29
|
+
* True when the runtime's external scanners never wired (mount/launch threw):
|
|
30
|
+
* the runtime is running with NO live entry scanners. rows may be empty.
|
|
31
|
+
*/
|
|
32
|
+
unwired: boolean;
|
|
33
|
+
/** Phase that failed when unwired ("mount" | "launch" | "install_launch" | "install_wire"). */
|
|
34
|
+
unwiredPhase?: string;
|
|
35
|
+
rows: ScannerSupervisionRow[];
|
|
36
|
+
}
|
|
37
|
+
export type ScannerSupervisionSource = () => ScannerSupervision;
|
|
38
|
+
//# sourceMappingURL=supervision.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supervision.d.ts","sourceRoot":"","sources":["../../src/scanners/supervision.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,kFAAkF;IAClF,gBAAgB,EAAE,SAAS,GAAG,UAAU,CAAC;IACzC,qDAAqD;IACrD,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8EAA8E;IAC9E,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,2EAA2E;IAC3E,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB,+FAA+F;IAC/F,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,qBAAqB,EAAE,CAAC;CAC/B;AAED,MAAM,MAAM,wBAAwB,GAAG,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supervision.js","sourceRoot":"","sources":["../../src/scanners/supervision.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/skills-manager/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGlE,KAAK,kBAAkB,GAAG,OAAO,eAAe,CAAC;AACjD,KAAK,eAAe,GAAG,OAAO,YAAY,CAAC;AAE3C,MAAM,WAAW,aAAa;IAC5B,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;CACpC;AAED;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,UAAU,EAClB,IAAI,GAAE,aAAkB,GACvB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/skills-manager/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGlE,KAAK,kBAAkB,GAAG,OAAO,eAAe,CAAC;AACjD,KAAK,eAAe,GAAG,OAAO,YAAY,CAAC;AAE3C,MAAM,WAAW,aAAa;IAC5B,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;CACpC;AAED;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,UAAU,EAClB,IAAI,GAAE,aAAkB,GACvB,OAAO,CAAC,IAAI,CAAC,CAoEf"}
|
|
@@ -49,6 +49,12 @@ export async function bootstrapSkillsIfNeeded(config, logger, deps = {}) {
|
|
|
49
49
|
await install(cloneDir, source.name, primaryDir, logger, {
|
|
50
50
|
sourcePath: source.path,
|
|
51
51
|
allowedSkills: missing,
|
|
52
|
+
// Bootstrap is the *first* thing that runs after a restart, so it
|
|
53
|
+
// is the path that reinstalls a skill whose dir vanished mid-swap
|
|
54
|
+
// in a crashed install. It must carry the preserve-list too, or
|
|
55
|
+
// the salvage step never fires and the user data stays stranded
|
|
56
|
+
// in the leftover .bak-* dir.
|
|
57
|
+
preservePaths: source.preserve,
|
|
52
58
|
});
|
|
53
59
|
logger.info(`[senpi-skills-manager] bootstrap: installed "${source.name}" into ${primaryDir}`);
|
|
54
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/skills-manager/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAevC;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAA2B,EAC3B,MAAkB,EAClB,OAAsB,EAAE;IAExB,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,IAAI,eAAe,CAAC;IAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,IAAI,YAAY,CAAC;IACrD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAC7B,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,iBAAiB,IAAI,qBAAqB,CAAC,EAAE,CAAC;IACnE,2EAA2E;IAC3E,4EAA4E;IAC5E,oEAAoE;IACpE,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAEhC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;QACvF,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAE3D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CACT,yCAAyC,MAAM,CAAC,MAAM,oCAAoC,CAC3F,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,CAAC,IAAI,CACT,gDAAgD,OAAO,CAAC,MAAM,0BAA0B,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC5H,CAAC;IAEF,0EAA0E;IAC1E,0EAA0E;IAC1E,8EAA8E;IAC9E,+EAA+E;IAC/E,0DAA0D;IAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACjG,MAAM,gBAAgB,CACpB,OAAO,EACP,SAAS,EACT,MAAM,EACN,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE;QAC/B,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE;oBACvD,UAAU,EAAE,MAAM,CAAC,IAAI;oBACvB,aAAa,EAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/skills-manager/bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,9 +24,11 @@ import type { LoggerLike } from "./types.js";
|
|
|
24
24
|
* This avoids destroying the previous skill copy before the new one is ready.
|
|
25
25
|
* There is still a brief window where `targetPath` may be absent, but the old
|
|
26
26
|
* content remains recoverable from the backup path until install succeeds —
|
|
27
|
-
* and a crash inside that window self-heals: the next
|
|
28
|
-
*
|
|
29
|
-
* leftover backup.
|
|
27
|
+
* and a crash inside that window self-heals: the next reinstall (bootstrap on
|
|
28
|
+
* the following start, which sees the skill dir missing; or a later update
|
|
29
|
+
* tick) runs step 3 and salvages the preserved data from the leftover backup.
|
|
30
|
+
* Both paths must pass `preservePaths` for that to hold — salvage only runs
|
|
31
|
+
* when the list is non-empty.
|
|
30
32
|
*
|
|
31
33
|
* The `.tmp-` prefix hides the staging directory from skill discovery, which
|
|
32
34
|
* only reads immediate subdirectories of `skillsDir`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/skills-manager/writer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAsI7C
|
|
1
|
+
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/skills-manager/writer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAsI7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,UAAU,EACnB,OAAO,GAAE;IACP,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B,GACL,OAAO,CAAC,IAAI,CAAC,CAmLf"}
|
|
@@ -142,9 +142,11 @@ async function listOrphanedBackups(skillsDir, skillName) {
|
|
|
142
142
|
* This avoids destroying the previous skill copy before the new one is ready.
|
|
143
143
|
* There is still a brief window where `targetPath` may be absent, but the old
|
|
144
144
|
* content remains recoverable from the backup path until install succeeds —
|
|
145
|
-
* and a crash inside that window self-heals: the next
|
|
146
|
-
*
|
|
147
|
-
* leftover backup.
|
|
145
|
+
* and a crash inside that window self-heals: the next reinstall (bootstrap on
|
|
146
|
+
* the following start, which sees the skill dir missing; or a later update
|
|
147
|
+
* tick) runs step 3 and salvages the preserved data from the leftover backup.
|
|
148
|
+
* Both paths must pass `preservePaths` for that to hold — salvage only runs
|
|
149
|
+
* when the list is non-empty.
|
|
148
150
|
*
|
|
149
151
|
* The `.tmp-` prefix hides the staging directory from skill discovery, which
|
|
150
152
|
* only reads immediate subdirectories of `skillsDir`.
|
|
@@ -201,6 +203,13 @@ export async function installSkill(cloneDir, skillName, skillsDir, logger, optio
|
|
|
201
203
|
// records a failure and retries next tick. (A persistently unreadable entry
|
|
202
204
|
// therefore pins the skill at its old version, loudly, by design: blocked
|
|
203
205
|
// updates over destroyed user data.)
|
|
206
|
+
//
|
|
207
|
+
// The merge adds and overwrites but never propagates deletions: an orphaned
|
|
208
|
+
// backup can re-add an entry the user deleted from the live dir after the
|
|
209
|
+
// backup was made. Accepted tradeoff — fail toward preservation. It happens
|
|
210
|
+
// at most once per backup (salvaged backups are removed after a successful
|
|
211
|
+
// install), and a resurrected package is inert: the runtime runs what
|
|
212
|
+
// installed_runtimes.json registers, not what sits on disk.
|
|
204
213
|
let salvagedBackups = [];
|
|
205
214
|
if (preservePaths.length > 0) {
|
|
206
215
|
try {
|