@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.
Files changed (72) hide show
  1. package/dist/cli/guide-commands.d.ts.map +1 -1
  2. package/dist/cli/guide-commands.js +11 -0
  3. package/dist/cli/guide-commands.js.map +1 -1
  4. package/dist/cli/senpi-commands.d.ts.map +1 -1
  5. package/dist/cli/senpi-commands.js +70 -0
  6. package/dist/cli/senpi-commands.js.map +1 -1
  7. package/dist/index.d.ts +11 -0
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +61 -1
  10. package/dist/index.js.map +1 -1
  11. package/dist/runtime/auto-update/coordinator.d.ts +15 -1
  12. package/dist/runtime/auto-update/coordinator.d.ts.map +1 -1
  13. package/dist/runtime/auto-update/coordinator.js +53 -0
  14. package/dist/runtime/auto-update/coordinator.js.map +1 -1
  15. package/dist/runtime/auto-update/types.d.ts +14 -0
  16. package/dist/runtime/auto-update/types.d.ts.map +1 -1
  17. package/dist/runtime/auto-update/types.js.map +1 -1
  18. package/dist/runtime-api/intake/process-error-post.d.ts +6 -1
  19. package/dist/runtime-api/intake/process-error-post.d.ts.map +1 -1
  20. package/dist/runtime-api/intake/process-error-post.js +5 -1
  21. package/dist/runtime-api/intake/process-error-post.js.map +1 -1
  22. package/dist/runtime-api/intake/process-signal-post.d.ts +7 -1
  23. package/dist/runtime-api/intake/process-signal-post.d.ts.map +1 -1
  24. package/dist/runtime-api/intake/process-signal-post.js +5 -0
  25. package/dist/runtime-api/intake/process-signal-post.js.map +1 -1
  26. package/dist/runtime-api/intake/scaffold-tick-router.d.ts +39 -0
  27. package/dist/runtime-api/intake/scaffold-tick-router.d.ts.map +1 -0
  28. package/dist/runtime-api/intake/scaffold-tick-router.js +122 -0
  29. package/dist/runtime-api/intake/scaffold-tick-router.js.map +1 -0
  30. package/dist/runtime-api/intake/types.d.ts +49 -0
  31. package/dist/runtime-api/intake/types.d.ts.map +1 -1
  32. package/dist/runtime-api/routes/signals.d.ts +2 -0
  33. package/dist/runtime-api/routes/signals.d.ts.map +1 -1
  34. package/dist/runtime-api/routes/signals.js +3 -0
  35. package/dist/runtime-api/routes/signals.js.map +1 -1
  36. package/dist/runtime-api/routes/signals.schema.d.ts +42 -0
  37. package/dist/runtime-api/routes/signals.schema.d.ts.map +1 -1
  38. package/dist/runtime-api/routes/signals.schema.js +37 -0
  39. package/dist/runtime-api/routes/signals.schema.js.map +1 -1
  40. package/dist/runtime-api/server.d.ts +7 -1
  41. package/dist/runtime-api/server.d.ts.map +1 -1
  42. package/dist/runtime-api/server.js +1 -0
  43. package/dist/runtime-api/server.js.map +1 -1
  44. package/dist/scanners/external/scaffold/delivery.py +64 -17
  45. package/dist/scanners/external/scaffold/scaffold.py +128 -40
  46. package/dist/scanners/external/scaffold/senpi_mcp.py +88 -8
  47. package/dist/scanners/external/scaffold/tick_facts.py +130 -0
  48. package/dist/scanners/runtime-module.d.ts.map +1 -1
  49. package/dist/scanners/runtime-module.js +8 -1
  50. package/dist/scanners/runtime-module.js.map +1 -1
  51. package/dist/skills-manager/manifest.d.ts.map +1 -1
  52. package/dist/skills-manager/manifest.js +1 -0
  53. package/dist/skills-manager/manifest.js.map +1 -1
  54. package/dist/skills-manager/skills-manifest.json +1 -0
  55. package/dist/telemetry/live-telemetry.d.ts +54 -8
  56. package/dist/telemetry/live-telemetry.d.ts.map +1 -1
  57. package/dist/telemetry/live-telemetry.js +197 -20
  58. package/dist/telemetry/live-telemetry.js.map +1 -1
  59. package/dist/telemetry/scanner-tick-feed.d.ts +87 -0
  60. package/dist/telemetry/scanner-tick-feed.d.ts.map +1 -0
  61. package/dist/telemetry/scanner-tick-feed.js +48 -0
  62. package/dist/telemetry/scanner-tick-feed.js.map +1 -0
  63. package/dist/telemetry/tick-frame.d.ts +197 -0
  64. package/dist/telemetry/tick-frame.d.ts.map +1 -0
  65. package/dist/telemetry/tick-frame.js +347 -0
  66. package/dist/telemetry/tick-frame.js.map +1 -0
  67. package/dist/utils/telemetry-required-log.d.ts +13 -0
  68. package/dist/utils/telemetry-required-log.d.ts.map +1 -1
  69. package/dist/utils/telemetry-required-log.js +5 -1
  70. package/dist/utils/telemetry-required-log.js.map +1 -1
  71. package/openclaw.plugin.json +1 -1
  72. 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 three ways out — the timeline frame, the stats frame and the snapshot
28
- * that carries one of each — and two kinds of free text between them, so the scrub sits in two
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 scrubStatsPayload} for the scanner state's three free-text fields, which reach both the
33
- * stats frame and the snapshot. Their content is a stringified throwable from a scanner process,
34
- * so it is the one string on the wire with no bound of its own and it is capped as well as
35
- * scrubbed.
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
- const buffer = options.buffer ?? getTimelineBuffer();
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: buffer.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: buffer.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(buffer.drain());
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: buffer.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 = buffer.read();
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
- epoch: buffer.epoch,
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 === buffer.epoch ? normalizeAfterSeq(params?.afterSeq) : 0;
624
- const held = buffer.read();
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 && buffer.highestDroppedSeq() > afterSeq;
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: buffer.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: buffer.epoch, batchSeq: ++batchSeq, records },
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
- buffer.teardown();
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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAoB,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACzF,OAAO,EACL,iBAAiB,EACjB,sBAAsB,GAGvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EACL,iBAAiB,GAIlB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,qBAAqB,GAKtB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,GAAG,YAAY,CAAC,8BAA8B,CAAC,CAAC;AAE5D,4FAA4F;AAC5F,MAAM,CAAC,MAAM,cAAc,GAAG,uBAAuB,CAAC;AACtD,MAAM,CAAC,MAAM,WAAW,GAAG,4BAA4B,CAAC;AACxD,MAAM,CAAC,MAAM,cAAc,GAAG,yBAAyB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,GAAG,IAAI,CAAC;AAE1C;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,0BAA0B,CAAC;AAEhE,uEAAuE;AACvE,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,CAAC;AAE/C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAEhD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAA2B,IAAI,GAAG,CAClE,oBAAoB,CACrB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEvC;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAsFhD,kGAAkG;AAClG,MAAM,QAAQ,GAAmB;IAC/B,UAAU,EAAE,EAAE;IACd,iBAAiB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE;IACvC,iBAAiB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE;IACvC,YAAY,EAAE,EAAE;CACjB,CAAC;AAEF;;;;;;;GAOG;AACH,KAAK,UAAU,UAAU,CACvB,KAAgC,EAChC,QAA4B,EAC5B,cAAsC;IAEtC,IAAI,GAA0C,CAAC;IAC/C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,mFAAmF;QACnF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE;YAAE,SAAS;QACxD,GAAG,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC;QACrB,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;YAChB,SAAS;QACX,CAAC;QACD,IAAI,CAAC;YACH,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;YAChB,cAAc,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,IAAI,KAAK,CAAC;AACtB,CAAC;AAED;;;;;;;;;GASG;AACH,KAAK,UAAU,YAAY,CACzB,MAAsB,EACtB,QAA4B,EAC5B,cAAsC;IAEtC,OAAO;QACL,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,EAAE,MAAM,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,CAAC;KAChE,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,gBAAgB,CAC7B,KAAoB,EACpB,QAA4B,EAC5B,cAAsC;IAEtC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IACjD,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,qBAAqB,CAAC;IACpD,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,sBAAsB,CAAC,CAAC;IACxE,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,cAAc,CAAC,GAAG,CAAC,CAAC;QACpB,OAAO,qBAAqB,CAAC;IAC/B,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,iBAAiB,CAC9B,OAA4B,EAC5B,QAA4B,EAC5B,cAAsC;IAEtC,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,MAAM,QAAQ,GAAwB,EAAE,CAAC;IACzC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrC,IACE,KAAK,CAAC,cAAc,KAAK,IAAI;YAC7B,KAAK,CAAC,aAAa,KAAK,IAAI;YAC5B,KAAK,CAAC,aAAa,KAAK,IAAI,EAC5B,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,SAAS;QACX,CAAC;QACD,WAAW,GAAG,IAAI,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC;YACZ,GAAG,KAAK;YACR,cAAc,EAAE,MAAM,gBAAgB,CAAC,KAAK,CAAC,cAAc,EAAE,QAAQ,EAAE,cAAc,CAAC;YACtF,aAAa,EAAE,MAAM,gBAAgB,CAAC,KAAK,CAAC,aAAa,EAAE,QAAQ,EAAE,cAAc,CAAC;YACpF,aAAa,EAAE,MAAM,gBAAgB,CAAC,KAAK,CAAC,aAAa,EAAE,QAAQ,EAAE,cAAc,CAAC;SACrF,CAAC,CAAC;IACL,CAAC;IACD,OAAO,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AAC1D,CAAC;AAED,8GAA8G;AAC9G,SAAS,iBAAiB,CAAC,GAAY;IACrC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1E,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,0GAA0G;AAC1G,SAAS,iBAAiB,CAAC,OAAgC;IACzD,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;AAC1E,CAAC;AAKD,oGAAoG;AACpG,SAAS,OAAO,CAAC,EAAU;IACzB,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAA6B;IAC/D,MAAM,iBAAiB,GAAG,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC;IACvD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,iBAAiB,EAAE,CAAC;IACrD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACpC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;IACrE,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,yBAAyB,CAAC;IAC7E,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,0BAA0B,CAAC;IAChF,iGAAiG;IACjG,oFAAoF;IACpF,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC;IAE9B,IAAI,SAAyC,CAAC;IAC9C,IAAI,UAAsD,CAAC;IAC3D,IAAI,WAAuD,CAAC;IAC5D,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,qBAAyC,CAAC;IAC9C,uFAAuF;IACvF,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,IAAI,sBAAsB,GAAG,KAAK,CAAC;IACnC,IAAI,qBAAqB,GAAG,KAAK,CAAC;IAClC,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAC/B,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAE/B,iGAAiG;IACjG,wEAAwE;IACxE,MAAM,cAAc,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;IAC3E,MAAM,WAAW,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC;IAClF,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IACrD,IAAI,YAAY,GAAG,eAAe,CAAC;IACnC,MAAM,cAAc,GAA6B,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAE3E,gGAAgG;IAChG,SAAS,OAAO,CAAC,KAAa,EAAE,OAAgB;QAC9C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvB,iBAAiB,GAAG,IAAI,CAAC;gBACzB,MAAM,CAAC,IAAI,CACT,wHAAwH,EACxH,EAAE,uBAAuB,EAAE,KAAK,EAAE,CACnC,CAAC;YACJ,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC;YACH,8FAA8F;YAC9F,6DAA6D;YAC7D,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YAChD,sBAAsB,GAAG,KAAK,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAC5B,sBAAsB,GAAG,IAAI,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,wDAAwD,EAAE;oBACpE,uBAAuB,EAAE,KAAK;oBAC9B,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBACtD,CAAC,CAAC;YACL,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,SAAS,QAAQ,CAAC,IAAc,EAAE,SAAiB,EAAE,UAAkB;QACrE,MAAM,MAAM,GAAG,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC;QAClE,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;QAClB,IAAI,SAAS,GAAG,MAAM,CAAC,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;QAEvD,MAAM,WAAW,GAAG,UAAU,GAAG,kBAAkB,CAAC;QACpD,IAAI,SAAS,IAAI,WAAW;YAAE,OAAO;QACrC,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;QACjB,oFAAoF;QACpF,IAAI,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,yBAAyB;YAAE,OAAO;QAClE,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,0DAA0D,EAAE;YACtE,sBAAsB,EAAE,IAAI;YAC5B,yBAAyB,EAAE,OAAO,CAAC,SAAS,CAAC;YAC7C,mCAAmC,EAAE,WAAW;YAChD,kCAAkC,EAAE,UAAU;SAC/C,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,SAAS,YAAY;QACnB,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;QACjB,MAAM,QAAQ,GAAG,EAAE,GAAG,YAAY,CAAC;QACnC,IAAI,QAAQ,GAAG,yBAAyB;YAAE,OAAO;QACjD,YAAY,GAAG,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE;YACxC,2BAA2B,EAAE,QAAQ;YACrC,gCAAgC,EAAE,cAAc,CAAC,KAAK;YACtD,iCAAiC,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC;YAChE,iCAAiC,EAAE,cAAc,CAAC,OAAO;YACzD,wCAAwC,EAAE,cAAc,CAAC,YAAY;YACrE,6BAA6B,EAAE,WAAW,CAAC,KAAK;YAChD,8BAA8B,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC;YAC1D,iCAAiC,EAAE,WAAW,CAAC,cAAc;YAC7D,yCAAyC,EAAE,WAAW,CAAC,eAAe;YACtE,2BAA2B,EAAE,SAAS,CAAC,KAAK;YAC5C,8BAA8B,EAAE,SAAS,CAAC,OAAO;YACjD,iFAAiF;YACjF,4BAA4B,EAC1B,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC;YAC7E,8BAA8B,EAAE,SAAS,CAAC,KAAK;SAChD,CAAC,CAAC;QACH,cAAc,CAAC,KAAK,GAAG,CAAC,CAAC;QACzB,cAAc,CAAC,KAAK,GAAG,CAAC,CAAC;QACzB,cAAc,CAAC,OAAO,GAAG,CAAC,CAAC;QAC3B,cAAc,CAAC,YAAY,GAAG,CAAC,CAAC;QAChC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC;QACtB,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC;QACtB,WAAW,CAAC,cAAc,GAAG,CAAC,CAAC;QAC/B,WAAW,CAAC,eAAe,GAAG,CAAC,CAAC;QAChC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;QACpB,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC;QACtB,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,SAAS,mBAAmB,CAAC,MAA0B,EAAE,KAAa;QACpE,IAAI,qBAAqB;YAAE,OAAO;QAClC,qBAAqB,GAAG,IAAI,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,yDAAyD,EAAE;YACrE,kBAAkB,EAAE,MAAM,CAAC,IAAI;YAC/B,8BAA8B,EAAE,KAAK;YACrC,mCAAmC,EAAE,eAAe;SACrD,CAAC,CAAC;IACL,CAAC;IAED,SAAS,gBAAgB,CAAC,GAAY;QACpC,IAAI,kBAAkB;YAAE,OAAO;QAC/B,kBAAkB,GAAG,IAAI,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,6EAA6E,EAAE;YACzF,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACtD,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,SAAS,eAAe;QACtB,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAC;QACzC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,gBAAgB,GAAG,KAAK,CAAC;YACzB,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,gBAAgB,GAAG,IAAI,CAAC;YACxB,MAAM,CAAC,IAAI,CACT,+GAA+G,CAChH,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,UAAU,QAAQ,CACrB,OAAkC;QAElC,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;QACnC,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,IAAI,OAAO,GAAyB,EAAE,CAAC;QACvC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,cAAc,GAAG,WAAW,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YACpE,QAAQ,IAAI,WAAW,EAAE,GAAG,cAAc,CAAC;YAC3C,qFAAqF;YACrF,uCAAuC;YACvC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YACrD,IAAI,IAAI,GAAG,eAAe,EAAE,CAAC;gBAC3B,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAChC,SAAS;YACX,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,GAAG,eAAe,EAAE,CAAC;gBACzD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACrB,OAAO,GAAG,EAAE,CAAC;gBACb,KAAK,GAAG,CAAC,CAAC;YACZ,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,KAAK,IAAI,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAED,SAAS,SAAS,CAAC,OAAkC;QACnD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAiB,CAAC,CAAC,CAAC;IACzF,CAAC;IAED,oGAAoG;IACpG,KAAK,UAAU,SAAS;QACtB,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC;QACtC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,0FAA0F;YAC1F,uEAAuE;YACvE,MAAM,CAAC,IAAI,CAAC,6CAA6C,EAAE;gBACzD,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACtD,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,SAAS,UAAU,CACjB,KAAqB,EACrB,SAAiB;IACjB,6FAA6F;IAC7F,gCAAgC;IAChC,OAAkC;QAElC,OAAO,iBAAiB,CAAC;YACvB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,OAAO;YACP,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,eAAe;YACf,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAED,SAAS,aAAa,CAAC,KAAqB;QAC1C,OAAO,qBAAqB,CAAC;YAC3B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;YAC1C,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;YAC1C,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,aAAa;QAC1B,kGAAkG;QAClG,4FAA4F;QAC5F,6FAA6F;QAC7F,IAAI,aAAa;YAAE,OAAO;QAC1B,aAAa,GAAG,IAAI,CAAC;QACrB,MAAM,SAAS,GAAG,WAAW,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,2FAA2F;YAC3F,+FAA+F;YAC/F,uDAAuD;YACvD,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACxC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,QAAQ,CAAC,mBAAmB,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;oBACrD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;oBACnD,MAAM,aAAa,GAAG,WAAW,EAAE,CAAC;oBACpC,IAAI,YAAY,GAAG,CAAC,CAAC;oBACrB,IAAI,cAAc,GAAG,CAAC,CAAC;oBACvB,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;wBAC7B,MAAM,OAAO,GAAG;4BACd,CAAC,EAAE,CAAC;4BACJ,KAAK,EAAE,MAAM,CAAC,KAAK;4BACnB,QAAQ,EAAE,EAAE,QAAQ;4BACpB,OAAO;yBACkB,CAAC;wBAC5B,sFAAsF;wBACtF,wFAAwF;wBACxF,SAAS;wBACT,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;wBACzD,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC;4BAAE,SAAS;wBAChD,YAAY,IAAI,KAAK,CAAC;wBACtB,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;oBACnC,CAAC;oBACD,IAAI,CAAC,aAAa,CAAC;wBACjB,eAAe,EAAE,cAAc;wBAC/B,aAAa,EAAE,YAAY;wBAC3B,YAAY,EAAE,WAAW,EAAE,GAAG,aAAa;wBAC3C,SAAS,EAAE,QAAQ;qBACpB,CAAC,CAAC;oBACH,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC;oBACzC,cAAc,CAAC,YAAY,IAAI,YAAY,CAAC;gBAC9C,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,gGAAgG;YAChG,iGAAiG;YACjG,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACxB,kBAAkB,GAAG,IAAI,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC,uDAAuD,EAAE;oBACnE,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBACtD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,aAAa,GAAG,KAAK,CAAC;YACtB,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,eAAe,CAAC,CAAC;YACjE,YAAY,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAED,KAAK,UAAU,MAAM;QACnB,kFAAkF;QAClF,IAAI,cAAc;YAAE,OAAO;QAC3B,cAAc,GAAG,IAAI,CAAC;QACtB,MAAM,SAAS,GAAG,WAAW,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;YAChC,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO;YAE3B,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,yBAAyB,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACzE,6FAA6F;gBAC7F,8EAA8E;gBAC9E,MAAM,GAAG,GAAG,uBAAuB,EAAE,CAAC;gBACtC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC9B,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;gBAChD,MAAM,cAAc,GAAG,WAAW,EAAE,CAAC;gBACrC,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,gBAAgB,CAAC,CAAC;gBACpF,MAAM,QAAQ,GAAG,WAAW,EAAE,GAAG,cAAc,CAAC;gBAChD,4FAA4F;gBAC5F,6DAA6D;gBAC7D,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;gBAChE,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC1F,IAAI,CAAC,aAAa,CAAC;oBACjB,eAAe,EAAE,OAAO,CAAC,MAAM;oBAC/B,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM;oBACjC,eAAe,EAAE,cAAc;oBAC/B,aAAa,EAAE,YAAY;oBAC3B,YAAY,EAAE,GAAG,CAAC,OAAO;oBACzB,SAAS,EAAE,GAAG,CAAC,KAAK;oBACpB,YAAY,EAAE,GAAG,CAAC,KAAK;oBACvB,SAAS,EAAE,QAAQ;iBACpB,CAAC,CAAC;gBACH,WAAW,CAAC,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;gBAC7C,IAAI,YAAY,GAAG,WAAW,CAAC,eAAe;oBAAE,WAAW,CAAC,eAAe,GAAG,YAAY,CAAC;gBAC3F,SAAS,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC;gBAC7B,SAAS,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC;gBACjC,IAAI,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK;oBAAE,SAAS,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;gBAC7D,OAAO,OAAO,CAAC;YACjB,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YAE5B,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YACtC,MAAM,SAAS,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC9C,IAAI,SAAS,KAAK,qBAAqB;gBAAE,OAAO;YAChD,+FAA+F;YAC/F,8FAA8F;YAC9F,kFAAkF;YAClF,IAAI,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC;gBAAE,qBAAqB,GAAG,SAAS,CAAC;QAC3E,CAAC;gBAAS,CAAC;YACT,cAAc,GAAG,KAAK,CAAC;YACvB,8FAA8F;YAC9F,wCAAwC;YACxC,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,gBAAgB,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK;QAEnB,gBAAgB,CAAC,GAAY,EAAE,UAAkB;YAC/C,IAAI,SAAS,KAAK,SAAS;gBAAE,OAAO;YACpC,MAAM,SAAS,GAAI,GAAyD,EAAE,OAAO;gBACnF,EAAE,SAAS,CAAC;YACd,IAAI,OAAO,SAAS,KAAK,UAAU;gBAAE,OAAO;YAC5C,SAAS,GAAG,SAA+B,CAAC;YAC5C,iBAAiB,GAAG,KAAK,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,sDAAsD,EAAE;gBAClE,sBAAsB,EAAE,UAAU;aACnC,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,MAAqD;YAClE,+FAA+F;YAC/F,6FAA6F;YAC7F,8FAA8F;YAC9F,oFAAoF;YACpF,MAAM,QAAQ,GAAG,MAAM,EAAE,UAAU,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/F,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;YAC3B,0FAA0F;YAC1F,yFAAyF;YACzF,0FAA0F;YAC1F,gCAAgC;YAChC,IAAI,SAAS,GAAG,QAAQ,GAAG,CAAC,IAAI,MAAM,CAAC,iBAAiB,EAAE,GAAG,QAAQ,CAAC;YAEtE,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC;YACvE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YACxC,wFAAwF;YACxF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACrE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;gBAAE,SAAS,GAAG,IAAI,CAAC;YAExC,0FAA0F;YAC1F,yEAAyE;YACzE,MAAM,KAAK,GAAG,CAAC,MAAM,SAAS,EAAE,CAAC,IAAI,QAAQ,CAAC;YAC9C,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC;YACxB,OAAO;gBACL,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,QAAQ,EAAE,aAAa,CAAC,KAAK,CAAC;gBAC9B,KAAK,EAAE,MAAM,iBAAiB,CAC5B,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,EAClC,eAAe,EAAE,EACjB,gBAAgB,CACjB;gBACD,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;gBACpE,SAAS;aACV,CAAC;QACJ,CAAC;QAED,aAAa;QAEb,MAAM;QAEN,KAAK;YACH,IAAI,UAAU,KAAK,SAAS;gBAAE,OAAO;YACrC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,aAAa,EAAE,EAAE,eAAe,CAAC,CAAC;YACtE,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC;YACjE,4DAA4D;YAC3D,UAAqC,CAAC,KAAK,EAAE,EAAE,CAAC;YAChD,WAAsC,CAAC,KAAK,EAAE,EAAE,CAAC;QACpD,CAAC;QAED,IAAI;YACF,IAAI,UAAU,KAAK,SAAS;gBAAE,aAAa,CAAC,UAAU,CAAC,CAAC;YACxD,IAAI,WAAW,KAAK,SAAS;gBAAE,aAAa,CAAC,WAAW,CAAC,CAAC;YAC1D,UAAU,GAAG,SAAS,CAAC;YACvB,WAAW,GAAG,SAAS,CAAC;YACxB,SAAS,GAAG,SAAS,CAAC;YACtB,qBAAqB,GAAG,SAAS,CAAC;YAClC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClB,4FAA4F;YAC5F,wBAAwB;YACxB,IAAI,iBAAiB;gBAAE,sBAAsB,EAAE,CAAC;QAClD,CAAC;KACF,CAAC;AACJ,CAAC"}
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"}