@senpi/runtime 3.0.111 → 3.0.113
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 -0
- 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 +70 -0
- package/dist/cli/senpi-commands.js.map +1 -1
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +61 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime/auto-update/coordinator.d.ts +15 -1
- package/dist/runtime/auto-update/coordinator.d.ts.map +1 -1
- package/dist/runtime/auto-update/coordinator.js +53 -0
- package/dist/runtime/auto-update/coordinator.js.map +1 -1
- package/dist/runtime/auto-update/types.d.ts +14 -0
- package/dist/runtime/auto-update/types.d.ts.map +1 -1
- package/dist/runtime/auto-update/types.js.map +1 -1
- package/dist/runtime-api/intake/process-error-post.d.ts +6 -1
- package/dist/runtime-api/intake/process-error-post.d.ts.map +1 -1
- package/dist/runtime-api/intake/process-error-post.js +5 -1
- package/dist/runtime-api/intake/process-error-post.js.map +1 -1
- package/dist/runtime-api/intake/process-signal-post.d.ts +7 -1
- package/dist/runtime-api/intake/process-signal-post.d.ts.map +1 -1
- package/dist/runtime-api/intake/process-signal-post.js +5 -0
- package/dist/runtime-api/intake/process-signal-post.js.map +1 -1
- package/dist/runtime-api/intake/scaffold-tick-router.d.ts +39 -0
- package/dist/runtime-api/intake/scaffold-tick-router.d.ts.map +1 -0
- package/dist/runtime-api/intake/scaffold-tick-router.js +122 -0
- package/dist/runtime-api/intake/scaffold-tick-router.js.map +1 -0
- package/dist/runtime-api/intake/types.d.ts +49 -0
- package/dist/runtime-api/intake/types.d.ts.map +1 -1
- package/dist/runtime-api/routes/signals.d.ts +2 -0
- package/dist/runtime-api/routes/signals.d.ts.map +1 -1
- package/dist/runtime-api/routes/signals.js +3 -0
- package/dist/runtime-api/routes/signals.js.map +1 -1
- package/dist/runtime-api/routes/signals.schema.d.ts +42 -0
- package/dist/runtime-api/routes/signals.schema.d.ts.map +1 -1
- package/dist/runtime-api/routes/signals.schema.js +37 -0
- package/dist/runtime-api/routes/signals.schema.js.map +1 -1
- package/dist/runtime-api/server.d.ts +7 -1
- 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/external/scaffold/delivery.py +64 -17
- package/dist/scanners/external/scaffold/scaffold.py +128 -40
- package/dist/scanners/external/scaffold/senpi_mcp.py +88 -8
- package/dist/scanners/external/scaffold/tick_facts.py +130 -0
- package/dist/scanners/runtime-module.d.ts.map +1 -1
- package/dist/scanners/runtime-module.js +8 -1
- package/dist/scanners/runtime-module.js.map +1 -1
- package/dist/skills-manager/manifest.d.ts.map +1 -1
- package/dist/skills-manager/manifest.js +1 -0
- package/dist/skills-manager/manifest.js.map +1 -1
- package/dist/skills-manager/skills-manifest.json +1 -0
- package/dist/telemetry/live-telemetry.d.ts +54 -8
- package/dist/telemetry/live-telemetry.d.ts.map +1 -1
- package/dist/telemetry/live-telemetry.js +197 -20
- package/dist/telemetry/live-telemetry.js.map +1 -1
- package/dist/telemetry/scanner-tick-feed.d.ts +87 -0
- package/dist/telemetry/scanner-tick-feed.d.ts.map +1 -0
- package/dist/telemetry/scanner-tick-feed.js +48 -0
- package/dist/telemetry/scanner-tick-feed.js.map +1 -0
- package/dist/telemetry/tick-frame.d.ts +197 -0
- package/dist/telemetry/tick-frame.d.ts.map +1 -0
- package/dist/telemetry/tick-frame.js +347 -0
- package/dist/telemetry/tick-frame.js.map +1 -0
- package/dist/utils/telemetry-required-log.d.ts +13 -0
- package/dist/utils/telemetry-required-log.d.ts.map +1 -1
- package/dist/utils/telemetry-required-log.js +5 -1
- package/dist/utils/telemetry-required-log.js.map +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
|
@@ -22,17 +22,25 @@
|
|
|
22
22
|
* The snapshot is what stops a client that joins mid-life from seeing an empty screen: it is read
|
|
23
23
|
* from the buffer's held window, which the flush drain never evicts.
|
|
24
24
|
*
|
|
25
|
+
* A fourth broadcast sits outside all of that. The tick frame is a LEVEL — the latest finished run of
|
|
26
|
+
* each scanner, most of which produce nothing and so leave no record anywhere — and it is published
|
|
27
|
+
* on a window of its own, driven by the runs themselves rather than by a timer that is always
|
|
28
|
+
* running. It carries no seq, is never buffered, is not in the snapshot and is not replayed, because
|
|
29
|
+
* a client that misses one is made whole by the next one. Keeping it off the buffer is the point: the
|
|
30
|
+
* buffer is where decision records live, and per-tick facts would evict them.
|
|
31
|
+
*
|
|
25
32
|
* Everything that leaves the box is scrubbed here. `logger.event` redacts its `redact` slot and not
|
|
26
33
|
* its `attributes`, which is sound for the disk ring — that never leaves — but not for a stream a
|
|
27
|
-
* browser reads. There are
|
|
28
|
-
* that carries one of
|
|
29
|
-
* places:
|
|
34
|
+
* browser reads. There are four ways out — the timeline frame, the stats frame, the tick frame and
|
|
35
|
+
* the snapshot that carries one of the first three — and two kinds of free text between them, so the
|
|
36
|
+
* scrub sits in two places:
|
|
30
37
|
* - {@link toWireRecord} for a timeline record's attributes. It is what makes the flush tick
|
|
31
38
|
* asynchronous and gives it an in-flight guard.
|
|
32
|
-
* - {@link
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
39
|
+
* - {@link scrubScannerText} for text a scanner process authored: the scanner state's three
|
|
40
|
+
* free-text fields, via {@link scrubStatsPayload}, which reach both the stats frame and the
|
|
41
|
+
* snapshot; and a tick's `outcome`. Their content is a stringified throwable or status from a
|
|
42
|
+
* scanner process, so they are the strings on the wire with no bound of their own and they are
|
|
43
|
+
* capped as well as scrubbed.
|
|
36
44
|
*
|
|
37
45
|
* The topology payload carries no captured text: its `name` and `scannerId` are operator-authored
|
|
38
46
|
* config keys the client joins on, and the scanner `config` that could hold a resolved secret is
|
|
@@ -44,6 +52,9 @@ import { getDefaultPiiRedactor } from "./spans/redact-pii.js";
|
|
|
44
52
|
import { ADMITTED_EVENT_NAMES, readAndResetTapCounters } from "./telemetry-publisher.js";
|
|
45
53
|
import { getTimelineBuffer, teardownTimelineBuffer, } from "./timeline-buffer.js";
|
|
46
54
|
import { capValue } from "./attributes.js";
|
|
55
|
+
import { setScannerTickSink } from "./scanner-tick-feed.js";
|
|
56
|
+
import { createTickFrameBuilder, resolveTickTelemetry, } from "./tick-frame.js";
|
|
57
|
+
import { normalizeStrategyAddress } from "./event-store.js";
|
|
47
58
|
import { buildScannerStats, } from "./scanner-stats.js";
|
|
48
59
|
import { buildStrategyTopology, } from "./strategy-topology.js";
|
|
49
60
|
const logger = createLogger("[senpi-core][live-telemetry]");
|
|
@@ -51,6 +62,7 @@ const logger = createLogger("[senpi-core][live-telemetry]");
|
|
|
51
62
|
export const EVENT_TIMELINE = "plugin.senpi.timeline";
|
|
52
63
|
export const EVENT_STATS = "plugin.senpi.scanner.stats";
|
|
53
64
|
export const EVENT_TOPOLOGY = "plugin.senpi.strategies";
|
|
65
|
+
export const EVENT_TICK = "plugin.senpi.tick";
|
|
54
66
|
/**
|
|
55
67
|
* Byte ceiling for one frame. A frame published here travels southbound — gateway to bridge — and
|
|
56
68
|
* meets the bridge's southbound read limit, 1 MiB unless a deployment sets its own; a frame past it
|
|
@@ -89,6 +101,19 @@ export const DEFAULT_FLUSH_INTERVAL_MS = 1_000;
|
|
|
89
101
|
* enough that the per-scanner store read behind the system state is not a poll loop.
|
|
90
102
|
*/
|
|
91
103
|
export const DEFAULT_SAMPLE_INTERVAL_MS = 5_000;
|
|
104
|
+
/**
|
|
105
|
+
* How long the first tick of a frame waits for the ticks that land beside it.
|
|
106
|
+
*
|
|
107
|
+
* Scanners on a box share cadences — a recipe gives several of them the same interval, and every
|
|
108
|
+
* runtime starts them within the same boot — so their terminal callbacks arrive in clumps. A frame per
|
|
109
|
+
* callback would put one websocket write per scanner per cadence on the wire for a payload of seven
|
|
110
|
+
* scalars; one window collapses a clump into a single write. It is short enough that the level a
|
|
111
|
+
* dashboard shows is still the current one, and it is not the timeline's flush tick because a tick
|
|
112
|
+
* frame must not wait behind a scrub of hundreds of records.
|
|
113
|
+
*/
|
|
114
|
+
export const TICK_COALESCE_MS = 250;
|
|
115
|
+
/** The comma JSON puts between two array entries. Counted, so the budget is the frame's real size. */
|
|
116
|
+
const SEPARATOR_BYTES = 1;
|
|
92
117
|
/**
|
|
93
118
|
* The PUBLICATION list: what leaves on the timeline event. A name being on this list AND on the
|
|
94
119
|
* admission list is the normal case, not a duplication — `signal.outcome` is the decision row the feed
|
|
@@ -246,7 +271,10 @@ function roundMs(ms) {
|
|
|
246
271
|
}
|
|
247
272
|
export function createLiveTelemetry(options) {
|
|
248
273
|
const ownsProcessBuffer = options.buffer === undefined;
|
|
249
|
-
|
|
274
|
+
// Resolved at every use, never captured. The event sink resolves it the same way on every
|
|
275
|
+
// append, and a plugin reload drops the process singleton — capturing it here once would leave
|
|
276
|
+
// the publisher draining a buffer nothing writes to any more, with no symptom but an empty feed.
|
|
277
|
+
const timelineBuffer = () => options.buffer ?? getTimelineBuffer();
|
|
250
278
|
const now = options.now ?? Date.now;
|
|
251
279
|
const monotonicMs = options.monotonicMs ?? (() => performance.now());
|
|
252
280
|
const flushIntervalMs = options.flushIntervalMs ?? DEFAULT_FLUSH_INTERVAL_MS;
|
|
@@ -268,6 +296,27 @@ export function createLiveTelemetry(options) {
|
|
|
268
296
|
let warnedNoRedactor = false;
|
|
269
297
|
let warnedScrubFailure = false;
|
|
270
298
|
let warnedFlushFailure = false;
|
|
299
|
+
let warnedTickFrameFull = false;
|
|
300
|
+
let warnedTickFlushFailure = false;
|
|
301
|
+
// The two detail dials, read once. `invalid` is warned about here rather than thrown, and once
|
|
302
|
+
// rather than per frame: the value is read at register time and does not change under us.
|
|
303
|
+
const { settings: tickSettings, invalid: invalidTickTelemetry } = resolveTickTelemetry(options.tickTelemetry);
|
|
304
|
+
if (invalidTickTelemetry !== undefined) {
|
|
305
|
+
logger.warn("live telemetry ignored an invalid tick telemetry setting and kept the default", {
|
|
306
|
+
"senpi.telemetry.tick_telemetry_invalid": invalidTickTelemetry,
|
|
307
|
+
"senpi.telemetry.tick_telemetry_mcp": tickSettings.mcp,
|
|
308
|
+
"senpi.telemetry.tick_telemetry_state": tickSettings.state,
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
// What a tick frame costs before it holds a single tick, used to admit into the OPEN window. The
|
|
312
|
+
// frame that goes out is measured again, on the scrubbed frame, by the builder — a redaction can
|
|
313
|
+
// be longer than the text it replaced, so this figure bounds memory and the builder bounds bytes.
|
|
314
|
+
const tickEnvelopeBytes = Buffer.byteLength(JSON.stringify({ v: 1, e: timelineBuffer().epoch, t0: 0, d: { a: [], s: [], m: [], o: [], x: [] }, k: [] }));
|
|
315
|
+
// The open coalescing window: the runs it holds, roughly what they would cost, and the timer that
|
|
316
|
+
// closes it. Nothing accumulates here on a box no client has ever reached.
|
|
317
|
+
let pendingTicks = [];
|
|
318
|
+
let pendingTickBytes = tickEnvelopeBytes;
|
|
319
|
+
let tickTimer;
|
|
271
320
|
// What the ticks cost over one report window. Bucket width and buffer retention are deliberately
|
|
272
321
|
// unfixed by the design, and these are the numbers they get sized from.
|
|
273
322
|
const timelineWindow = { ticks: 0, msMax: 0, records: 0, payloadBytes: 0 };
|
|
@@ -461,7 +510,7 @@ export function createLiveTelemetry(options) {
|
|
|
461
510
|
// records the snapshot replays.
|
|
462
511
|
records) {
|
|
463
512
|
return buildScannerStats({
|
|
464
|
-
epoch:
|
|
513
|
+
epoch: timelineBuffer().epoch,
|
|
465
514
|
records,
|
|
466
515
|
scannerState: facts.scannerState,
|
|
467
516
|
bufferStartedAt,
|
|
@@ -470,7 +519,7 @@ export function createLiveTelemetry(options) {
|
|
|
470
519
|
}
|
|
471
520
|
function buildTopology(facts) {
|
|
472
521
|
return buildStrategyTopology({
|
|
473
|
-
epoch:
|
|
522
|
+
epoch: timelineBuffer().epoch,
|
|
474
523
|
strategies: facts.strategies,
|
|
475
524
|
runningRuntimeIds: facts.runningRuntimeIds,
|
|
476
525
|
unwiredRuntimeIds: facts.unwiredRuntimeIds,
|
|
@@ -490,7 +539,7 @@ export function createLiveTelemetry(options) {
|
|
|
490
539
|
// The drain advances the publish cursor whether or not a handle exists, so a box nobody is
|
|
491
540
|
// watching does not build a backlog that lands as one flood on the first connect. The snapshot
|
|
492
541
|
// covers that client instead — `drain` evicts nothing.
|
|
493
|
-
const batch = published(
|
|
542
|
+
const batch = published(timelineBuffer().drain());
|
|
494
543
|
if (batch.length > 0) {
|
|
495
544
|
await withSpan("telemetry.publish", {}, async (span) => {
|
|
496
545
|
const { frames, redactMs } = await toFrames(batch);
|
|
@@ -500,7 +549,7 @@ export function createLiveTelemetry(options) {
|
|
|
500
549
|
for (const records of frames) {
|
|
501
550
|
const payload = {
|
|
502
551
|
v: 1,
|
|
503
|
-
epoch:
|
|
552
|
+
epoch: timelineBuffer().epoch,
|
|
504
553
|
batchSeq: ++batchSeq,
|
|
505
554
|
records,
|
|
506
555
|
};
|
|
@@ -540,6 +589,119 @@ export function createLiveTelemetry(options) {
|
|
|
540
589
|
reportTiming();
|
|
541
590
|
}
|
|
542
591
|
}
|
|
592
|
+
function noteTickFrameFull() {
|
|
593
|
+
if (warnedTickFrameFull)
|
|
594
|
+
return;
|
|
595
|
+
warnedTickFrameFull = true;
|
|
596
|
+
logger.warn("live telemetry dropped a scanner tick because the tick frame was full", {
|
|
597
|
+
"senpi.telemetry.event": EVENT_TICK,
|
|
598
|
+
"senpi.telemetry.frame_limit_bytes": MAX_FRAME_BYTES,
|
|
599
|
+
});
|
|
600
|
+
}
|
|
601
|
+
/**
|
|
602
|
+
* Take one finished run into the open window.
|
|
603
|
+
*
|
|
604
|
+
* The first line is what makes this free on an unwatched box: with no broadcast handle there is
|
|
605
|
+
* nothing to publish through, so nothing is built, nothing is held and no timer is armed. A tick
|
|
606
|
+
* that lands then is gone — it is a level, and the next one replaces it anyway.
|
|
607
|
+
*
|
|
608
|
+
* The window is capped by the frame budget rather than by a count, so the cap is the same number
|
|
609
|
+
* the timeline splits on and there is no second budget to keep in step. A tick that does not fit is
|
|
610
|
+
* dropped and the window stays publishable: an oversized frame does not cost one tick, it closes the
|
|
611
|
+
* client's socket and costs the stream.
|
|
612
|
+
*/
|
|
613
|
+
function recordTick(run, startedAt, finishedAt) {
|
|
614
|
+
try {
|
|
615
|
+
if (broadcast === undefined || !tickSettings.enabled)
|
|
616
|
+
return;
|
|
617
|
+
const scannedCount = run.scannedCount;
|
|
618
|
+
const extras = run.tick ?? {};
|
|
619
|
+
const tick = {
|
|
620
|
+
// Normalised here for the same reason the buffer and the stats builder normalise: a client
|
|
621
|
+
// joins a tick to a stats row on `(address, scannerId)`, and a runtime's configured wallet
|
|
622
|
+
// may be checksummed where the record's is not.
|
|
623
|
+
address: normalizeStrategyAddress(run.address),
|
|
624
|
+
scannerId: run.scannerId,
|
|
625
|
+
finishedAt,
|
|
626
|
+
outcome: run.status,
|
|
627
|
+
...(typeof scannedCount === "number" && Number.isFinite(scannedCount)
|
|
628
|
+
? { scannedCount }
|
|
629
|
+
: {}),
|
|
630
|
+
signalCount: run.signalCount ?? run.signals?.length ?? 0,
|
|
631
|
+
...(startedAt === undefined ? {} : { durationMs: Math.max(0, finishedAt - startedAt) }),
|
|
632
|
+
...extras,
|
|
633
|
+
};
|
|
634
|
+
// Bytes, not entry count: one non-ASCII character in a scanner-authored outcome costs up to
|
|
635
|
+
// three of them, and the read limit at the far end counts bytes. The separator is counted with
|
|
636
|
+
// the tick it precedes, so the running total is the window's own size and not a sum under it.
|
|
637
|
+
const size = Buffer.byteLength(JSON.stringify(tick)) + (pendingTicks.length > 0 ? SEPARATOR_BYTES : 0);
|
|
638
|
+
if (pendingTickBytes + size > MAX_FRAME_BYTES) {
|
|
639
|
+
noteTickFrameFull();
|
|
640
|
+
return;
|
|
641
|
+
}
|
|
642
|
+
pendingTicks.push(tick);
|
|
643
|
+
pendingTickBytes += size;
|
|
644
|
+
if (tickTimer !== undefined)
|
|
645
|
+
return;
|
|
646
|
+
tickTimer = setTimeout(() => {
|
|
647
|
+
tickTimer = undefined;
|
|
648
|
+
void flushTicks();
|
|
649
|
+
}, TICK_COALESCE_MS);
|
|
650
|
+
// Telemetry must never be the reason a process stays alive.
|
|
651
|
+
tickTimer.unref?.();
|
|
652
|
+
}
|
|
653
|
+
catch {
|
|
654
|
+
// This runs inside the scanner's terminal callback. Nothing here may reach it.
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
/**
|
|
658
|
+
* Close the window and publish it as one compact frame.
|
|
659
|
+
*
|
|
660
|
+
* Every scanner-authored string in the window — the run outcome, the author's own state values,
|
|
661
|
+
* the arguments a tool call carried — goes through the same scrub the stats payload's free text
|
|
662
|
+
* takes. The budget is met HERE and not when the run was admitted, because a redaction can be
|
|
663
|
+
* longer than the text it replaced and it is the scrubbed frame that goes out.
|
|
664
|
+
*
|
|
665
|
+
* `t0` is the first run's finish time, so every `t` in the frame is a small offset rather than a
|
|
666
|
+
* repeated 13-digit stamp.
|
|
667
|
+
*/
|
|
668
|
+
async function flushTicks() {
|
|
669
|
+
const batch = pendingTicks;
|
|
670
|
+
pendingTicks = [];
|
|
671
|
+
pendingTickBytes = tickEnvelopeBytes;
|
|
672
|
+
if (batch.length === 0 || broadcast === undefined)
|
|
673
|
+
return;
|
|
674
|
+
try {
|
|
675
|
+
const redactor = currentRedactor();
|
|
676
|
+
const scrub = (text) => scrubScannerText(text, redactor, noteScrubFailure);
|
|
677
|
+
const builder = createTickFrameBuilder({
|
|
678
|
+
epoch: timelineBuffer().epoch,
|
|
679
|
+
t0: batch[0].finishedAt,
|
|
680
|
+
settings: tickSettings,
|
|
681
|
+
maxBytes: MAX_FRAME_BYTES,
|
|
682
|
+
});
|
|
683
|
+
for (const tick of batch) {
|
|
684
|
+
// A run that does not fit is dropped on its own; the window stays publishable, because an
|
|
685
|
+
// oversized frame does not cost one tick — it closes the client's socket.
|
|
686
|
+
if (!(await builder.add(tick, scrub)))
|
|
687
|
+
noteTickFrameFull();
|
|
688
|
+
}
|
|
689
|
+
const frame = builder.build();
|
|
690
|
+
if (frame === null)
|
|
691
|
+
return;
|
|
692
|
+
publish(EVENT_TICK, frame);
|
|
693
|
+
}
|
|
694
|
+
catch (err) {
|
|
695
|
+
// A `setTimeout` callback has nowhere to put a rejection. Every step inside guards itself, so
|
|
696
|
+
// reaching here is a bug worth a line rather than an unhandled rejection.
|
|
697
|
+
if (!warnedTickFlushFailure) {
|
|
698
|
+
warnedTickFlushFailure = true;
|
|
699
|
+
logger.warn("live telemetry tick flush failed; this frame was lost", {
|
|
700
|
+
err: err instanceof Error ? err.message : String(err),
|
|
701
|
+
});
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
}
|
|
543
705
|
async function sample() {
|
|
544
706
|
// A gather slower than the tick would otherwise stack ticks on top of each other.
|
|
545
707
|
if (sampleInFlight)
|
|
@@ -554,7 +716,7 @@ export function createLiveTelemetry(options) {
|
|
|
554
716
|
// The tap counters are read here because this is the span that carries them: reading them on
|
|
555
717
|
// the faster tick would put a one-second window on a five-second measurement.
|
|
556
718
|
const tap = readAndResetTapCounters();
|
|
557
|
-
const records =
|
|
719
|
+
const records = timelineBuffer().read();
|
|
558
720
|
const built = buildStats(facts, now(), records);
|
|
559
721
|
const scrubStartedAt = monotonicMs();
|
|
560
722
|
const payload = await scrubStatsPayload(built, currentRedactor(), noteScrubFailure);
|
|
@@ -601,7 +763,11 @@ export function createLiveTelemetry(options) {
|
|
|
601
763
|
}
|
|
602
764
|
}
|
|
603
765
|
return {
|
|
604
|
-
|
|
766
|
+
// A getter for the same reason the drain resolves the buffer per append: a reload replaces
|
|
767
|
+
// the singleton, and a value frozen at construction would name an epoch whose seq run ended.
|
|
768
|
+
get epoch() {
|
|
769
|
+
return timelineBuffer().epoch;
|
|
770
|
+
},
|
|
605
771
|
captureBroadcast(ctx, methodName) {
|
|
606
772
|
if (broadcast !== undefined)
|
|
607
773
|
return;
|
|
@@ -620,13 +786,13 @@ export function createLiveTelemetry(options) {
|
|
|
620
786
|
// this one never had — most sharply after a restart, where the client's seq sits far above a
|
|
621
787
|
// counter that began again at 1 and "nothing after it" would hide the whole window. So unless
|
|
622
788
|
// the cursor names this epoch it is dropped entirely and everything held is served.
|
|
623
|
-
const afterSeq = params?.afterEpoch ===
|
|
624
|
-
const held =
|
|
789
|
+
const afterSeq = params?.afterEpoch === timelineBuffer().epoch ? normalizeAfterSeq(params?.afterSeq) : 0;
|
|
790
|
+
const held = timelineBuffer().read();
|
|
625
791
|
// A cursor below the eviction frontier lost a record. The oldest record still held cannot
|
|
626
792
|
// answer this: the rings are per address, so one strategy's untouched low seqs sit under
|
|
627
793
|
// another's evictions. `afterSeq: 0` is a fresh client asking for whatever is held, not a
|
|
628
794
|
// resume, so it is never a gap.
|
|
629
|
-
let truncated = afterSeq > 0 &&
|
|
795
|
+
let truncated = afterSeq > 0 && timelineBuffer().highestDroppedSeq() > afterSeq;
|
|
630
796
|
const owed = published(held.filter((record) => record.seq > afterSeq));
|
|
631
797
|
const { frames } = await toFrames(owed);
|
|
632
798
|
// A response is one frame, so an over-budget window sends the newest slice and says so.
|
|
@@ -638,16 +804,21 @@ export function createLiveTelemetry(options) {
|
|
|
638
804
|
const facts = (await readFacts()) ?? NO_FACTS;
|
|
639
805
|
const sampledAt = now();
|
|
640
806
|
return {
|
|
641
|
-
epoch:
|
|
807
|
+
epoch: timelineBuffer().epoch,
|
|
642
808
|
topology: buildTopology(facts),
|
|
643
809
|
stats: await scrubStatsPayload(buildStats(facts, sampledAt, held), currentRedactor(), noteScrubFailure),
|
|
644
|
-
recent: { v: 1, epoch:
|
|
810
|
+
recent: { v: 1, epoch: timelineBuffer().epoch, batchSeq: ++batchSeq, records },
|
|
645
811
|
truncated,
|
|
646
812
|
};
|
|
647
813
|
},
|
|
648
814
|
flushTimeline,
|
|
649
815
|
sample,
|
|
816
|
+
recordTick,
|
|
817
|
+
flushTicks,
|
|
650
818
|
start() {
|
|
819
|
+
// Armed here rather than at construction: the sink is process-global, so a publisher that was
|
|
820
|
+
// built but never started must not be the one the scanners feed.
|
|
821
|
+
setScannerTickSink(recordTick);
|
|
651
822
|
if (flushTimer !== undefined)
|
|
652
823
|
return;
|
|
653
824
|
flushTimer = setInterval(() => void flushTimeline(), flushIntervalMs);
|
|
@@ -657,15 +828,21 @@ export function createLiveTelemetry(options) {
|
|
|
657
828
|
sampleTimer.unref?.();
|
|
658
829
|
},
|
|
659
830
|
stop() {
|
|
831
|
+
setScannerTickSink(null);
|
|
660
832
|
if (flushTimer !== undefined)
|
|
661
833
|
clearInterval(flushTimer);
|
|
662
834
|
if (sampleTimer !== undefined)
|
|
663
835
|
clearInterval(sampleTimer);
|
|
836
|
+
if (tickTimer !== undefined)
|
|
837
|
+
clearTimeout(tickTimer);
|
|
664
838
|
flushTimer = undefined;
|
|
665
839
|
sampleTimer = undefined;
|
|
840
|
+
tickTimer = undefined;
|
|
841
|
+
pendingTicks = [];
|
|
842
|
+
pendingTickBytes = tickEnvelopeBytes;
|
|
666
843
|
broadcast = undefined;
|
|
667
844
|
lastTopologySignature = undefined;
|
|
668
|
-
|
|
845
|
+
timelineBuffer().teardown();
|
|
669
846
|
// The next reader mints a fresh epoch, so a restarted seq run cannot collide with the one a
|
|
670
847
|
// client already holds.
|
|
671
848
|
if (ownsProcessBuffer)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-telemetry.js","sourceRoot":"","sources":["../../src/telemetry/live-telemetry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"live-telemetry.js","sourceRoot":"","sources":["../../src/telemetry/live-telemetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The seam between a finished scanner run and the live-telemetry publisher.
|
|
3
|
+
*
|
|
4
|
+
* The scanner runtime module is built per strategy, deep inside a runtime, and the publisher is one
|
|
5
|
+
* object created once per plugin process. Neither holds a handle to the other, so the connection is a
|
|
6
|
+
* process-global sink — the same shape the timeline buffer and the domain-event sinks already use.
|
|
7
|
+
*
|
|
8
|
+
* What travels over it is a LEVEL, not a record: the most recent state of a scanner, published so a
|
|
9
|
+
* dashboard can show that a quiet box is alive. It is deliberately not routed through
|
|
10
|
+
* `logger.event` — see {@link ../utils/telemetry-required-log.js} — because every event also reaches
|
|
11
|
+
* `appendDomainEvent`, whose on-disk ring and bounded publisher buffer hold real decision records that
|
|
12
|
+
* a per-tick fact would evict. Nothing here writes to either.
|
|
13
|
+
*
|
|
14
|
+
* Two properties this module exists to guarantee:
|
|
15
|
+
* - With no sink registered the call is one comparison and a return. A box whose telemetry never
|
|
16
|
+
* started pays nothing per scan, and nothing is built at the call site either: the run object the
|
|
17
|
+
* terminal callback already holds is passed straight through.
|
|
18
|
+
* - A sink that throws is swallowed. This runs inside the scanner's terminal callback, and a failure
|
|
19
|
+
* in telemetry cannot be allowed to break a scan.
|
|
20
|
+
*/
|
|
21
|
+
import type { TickCall, TickCommitOutcome } from "./tick-frame.js";
|
|
22
|
+
/**
|
|
23
|
+
* What a producer outside this process reports about its own tick, on top of what the run itself
|
|
24
|
+
* says. An internal scanner supplies none of it; a supervised external scanner supplies what its
|
|
25
|
+
* scaffold measured, carried in over the intake POST that scanner already makes every tick.
|
|
26
|
+
*
|
|
27
|
+
* Every field is optional and ABSENT means UNKNOWN. None may be defaulted to zero anywhere on the
|
|
28
|
+
* way to the wire: "made no MCP calls" and "did not say" are different facts about a scanner.
|
|
29
|
+
*/
|
|
30
|
+
export interface ScannerTickExtras {
|
|
31
|
+
/** MCP failures the author's own `except` caught and did not re-raise. */
|
|
32
|
+
mcpFailures?: number;
|
|
33
|
+
/** Every MCP call the tick made, succeeded or failed, as the boundary timed it. */
|
|
34
|
+
mcpCalls?: readonly TickCall[];
|
|
35
|
+
/** Total time inside MCP this tick. */
|
|
36
|
+
mcpMs?: number;
|
|
37
|
+
/** Consecutive ticks, this one included, that produced no signal. */
|
|
38
|
+
quietTicks?: number;
|
|
39
|
+
/** Actual gap since the previous tick minus the configured interval. */
|
|
40
|
+
lagMs?: number;
|
|
41
|
+
/** Signals from earlier ticks still awaiting delivery in the producer's journal. */
|
|
42
|
+
journalPending?: number;
|
|
43
|
+
/** How the tick's state commit ended. `committed` is the normal case and is not published. */
|
|
44
|
+
commit?: TickCommitOutcome;
|
|
45
|
+
/** The last COMMITTED state row — stale by one tick whenever the current tick failed. */
|
|
46
|
+
state?: Readonly<Record<string, unknown>>;
|
|
47
|
+
/** Fields in that row before sanitising, so the drop stays countable. */
|
|
48
|
+
stateFieldCount?: number;
|
|
49
|
+
/** Fields in that row whose value moved since the previously reported row. */
|
|
50
|
+
stateChangedCount?: number;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* The subset of a finished run a tick carries. Structural on purpose, so the engine's own `ScanResult`
|
|
54
|
+
* satisfies it without conversion and this module needs no import from the scanner subsystem.
|
|
55
|
+
*/
|
|
56
|
+
export interface ScannerRunFacts {
|
|
57
|
+
address: string;
|
|
58
|
+
scannerId: string;
|
|
59
|
+
/** Run status as the terminal callback reports it — the same value the required log calls `outcome`. */
|
|
60
|
+
status: string;
|
|
61
|
+
/** The run's own signals. Absent for a producer that reports a count and holds no array. */
|
|
62
|
+
signals?: readonly unknown[];
|
|
63
|
+
/** Signals produced, when the producer counts them rather than handing them over. */
|
|
64
|
+
signalCount?: number;
|
|
65
|
+
/** Candidates evaluated. Absent on a run that never evaluated any; never zero as a stand-in. */
|
|
66
|
+
scannedCount?: number;
|
|
67
|
+
/** What the producer measured about the tick itself. Absent for an in-process scanner. */
|
|
68
|
+
tick?: ScannerTickExtras;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* `startedAt` is the run's own start and is absent for a run that never began, in which case no
|
|
72
|
+
* duration may be claimed for it. `finishedAt` is the module clock at the terminal callback.
|
|
73
|
+
*/
|
|
74
|
+
export type ScannerTickSink = (run: ScannerRunFacts, startedAt: number | undefined, finishedAt: number) => void;
|
|
75
|
+
/**
|
|
76
|
+
* Whether anything is listening.
|
|
77
|
+
*
|
|
78
|
+
* For a caller that has to BUILD the run before it can hand it over — the intake routes, which
|
|
79
|
+
* translate a producer's wire facts — so an unwatched box allocates nothing per tick instead of
|
|
80
|
+
* building an object for a sink that is null.
|
|
81
|
+
*/
|
|
82
|
+
export declare function hasScannerTickSink(): boolean;
|
|
83
|
+
/** Arm or release the process sink. The publisher arms it on start and releases it on stop. */
|
|
84
|
+
export declare function setScannerTickSink(next: ScannerTickSink | null): void;
|
|
85
|
+
/** Hand one finished run to the publisher, if one is listening. Never throws. */
|
|
86
|
+
export declare function recordScannerTick(run: ScannerRunFacts, startedAt: number | undefined, finishedAt: number): void;
|
|
87
|
+
//# sourceMappingURL=scanner-tick-feed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanner-tick-feed.d.ts","sourceRoot":"","sources":["../../src/telemetry/scanner-tick-feed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEnE;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,QAAQ,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC/B,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8FAA8F;IAC9F,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,yFAAyF;IACzF,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1C,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,wGAAwG;IACxG,MAAM,EAAE,MAAM,CAAC;IACf,4FAA4F;IAC5F,OAAO,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAC7B,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gGAAgG;IAChG,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0FAA0F;IAC1F,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,CAC5B,GAAG,EAAE,eAAe,EACpB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,UAAU,EAAE,MAAM,KACf,IAAI,CAAC;AAIV;;;;;;GAMG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED,+FAA+F;AAC/F,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,GAAG,IAAI,CAErE;AAED,iFAAiF;AACjF,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,eAAe,EACpB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,UAAU,EAAE,MAAM,GACjB,IAAI,CAQN"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The seam between a finished scanner run and the live-telemetry publisher.
|
|
3
|
+
*
|
|
4
|
+
* The scanner runtime module is built per strategy, deep inside a runtime, and the publisher is one
|
|
5
|
+
* object created once per plugin process. Neither holds a handle to the other, so the connection is a
|
|
6
|
+
* process-global sink — the same shape the timeline buffer and the domain-event sinks already use.
|
|
7
|
+
*
|
|
8
|
+
* What travels over it is a LEVEL, not a record: the most recent state of a scanner, published so a
|
|
9
|
+
* dashboard can show that a quiet box is alive. It is deliberately not routed through
|
|
10
|
+
* `logger.event` — see {@link ../utils/telemetry-required-log.js} — because every event also reaches
|
|
11
|
+
* `appendDomainEvent`, whose on-disk ring and bounded publisher buffer hold real decision records that
|
|
12
|
+
* a per-tick fact would evict. Nothing here writes to either.
|
|
13
|
+
*
|
|
14
|
+
* Two properties this module exists to guarantee:
|
|
15
|
+
* - With no sink registered the call is one comparison and a return. A box whose telemetry never
|
|
16
|
+
* started pays nothing per scan, and nothing is built at the call site either: the run object the
|
|
17
|
+
* terminal callback already holds is passed straight through.
|
|
18
|
+
* - A sink that throws is swallowed. This runs inside the scanner's terminal callback, and a failure
|
|
19
|
+
* in telemetry cannot be allowed to break a scan.
|
|
20
|
+
*/
|
|
21
|
+
let sink = null;
|
|
22
|
+
/**
|
|
23
|
+
* Whether anything is listening.
|
|
24
|
+
*
|
|
25
|
+
* For a caller that has to BUILD the run before it can hand it over — the intake routes, which
|
|
26
|
+
* translate a producer's wire facts — so an unwatched box allocates nothing per tick instead of
|
|
27
|
+
* building an object for a sink that is null.
|
|
28
|
+
*/
|
|
29
|
+
export function hasScannerTickSink() {
|
|
30
|
+
return sink !== null;
|
|
31
|
+
}
|
|
32
|
+
/** Arm or release the process sink. The publisher arms it on start and releases it on stop. */
|
|
33
|
+
export function setScannerTickSink(next) {
|
|
34
|
+
sink = next;
|
|
35
|
+
}
|
|
36
|
+
/** Hand one finished run to the publisher, if one is listening. Never throws. */
|
|
37
|
+
export function recordScannerTick(run, startedAt, finishedAt) {
|
|
38
|
+
const current = sink;
|
|
39
|
+
if (current === null)
|
|
40
|
+
return;
|
|
41
|
+
try {
|
|
42
|
+
current(run, startedAt, finishedAt);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// A telemetry-side failure must never disturb the scan that produced the tick.
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=scanner-tick-feed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanner-tick-feed.js","sourceRoot":"","sources":["../../src/telemetry/scanner-tick-feed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAgEH,IAAI,IAAI,GAA2B,IAAI,CAAC;AAExC;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,KAAK,IAAI,CAAC;AACvB,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,kBAAkB,CAAC,IAA4B;IAC7D,IAAI,GAAG,IAAI,CAAC;AACd,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,iBAAiB,CAC/B,GAAoB,EACpB,SAA6B,EAC7B,UAAkB;IAElB,MAAM,OAAO,GAAG,IAAI,CAAC;IACrB,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO;IAC7B,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,+EAA+E;IACjF,CAAC;AACH,CAAC"}
|