@camstack/system 1.2.370 → 1.2.372

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 (70) hide show
  1. package/dist/addon-runner.js +2 -2
  2. package/dist/addon-runner.mjs +2 -2
  3. package/dist/addon-utils.js +1 -1
  4. package/dist/addon-utils.mjs +1 -1
  5. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  6. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  7. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  8. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  9. package/dist/builtins/alerts/alerts.addon.js +1 -1
  10. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  11. package/dist/builtins/autotrack/index.js +1 -1
  12. package/dist/builtins/autotrack/index.mjs +1 -1
  13. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
  14. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
  15. package/dist/builtins/calendars/calendars.addon.js +1 -1
  16. package/dist/builtins/calendars/calendars.addon.mjs +1 -1
  17. package/dist/builtins/camera-grid/index.js +1 -1
  18. package/dist/builtins/camera-grid/index.mjs +1 -1
  19. package/dist/builtins/composer/composer.addon.js +2 -2
  20. package/dist/builtins/composer/composer.addon.mjs +2 -2
  21. package/dist/builtins/console-logging/index.js +1 -1
  22. package/dist/builtins/console-logging/index.mjs +1 -1
  23. package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
  24. package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
  25. package/dist/builtins/device-manager/device-manager.addon.js +2 -2
  26. package/dist/builtins/device-manager/device-manager.addon.mjs +2 -2
  27. package/dist/builtins/hub-forwarder/index.js +1 -1
  28. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  29. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  30. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  31. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  32. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  33. package/dist/builtins/local-network/local-network.addon.js +1 -1
  34. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  35. package/dist/builtins/loki-logging/index.js +1 -1
  36. package/dist/builtins/loki-logging/index.mjs +1 -1
  37. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  38. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  39. package/dist/builtins/platform-probe/index.js +1 -1
  40. package/dist/builtins/platform-probe/index.mjs +1 -1
  41. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  42. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  43. package/dist/builtins/snapshot/index.js +1 -1
  44. package/dist/builtins/snapshot/index.mjs +1 -1
  45. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  46. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  47. package/dist/builtins/sqlite-storage/retired-settings-keys.d.ts +4 -2
  48. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
  49. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
  50. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  51. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  52. package/dist/builtins/system-config/system-config.addon.js +1 -1
  53. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  54. package/dist/builtins/winston-logging/index.js +1 -1
  55. package/dist/builtins/winston-logging/index.mjs +1 -1
  56. package/dist/{child-cap-dispatch-BX2qNzid.js → child-cap-dispatch-BsIlNNEq.js} +1 -1
  57. package/dist/{child-cap-dispatch-BN_zwf_k.mjs → child-cap-dispatch-Cws6pKzs.mjs} +1 -1
  58. package/dist/{composition-sources-DT6MCBGC.mjs → composition-sources-DsXsWxh1.mjs} +1 -1
  59. package/dist/{composition-sources-DVR7AckV.js → composition-sources-F86t9zKh.js} +1 -1
  60. package/dist/{dist-DUQvCQhx.mjs → dist-CHl7W5gy.mjs} +41 -481
  61. package/dist/{dist-BPFp08uY.js → dist-Kl1Ak_xZ.js} +41 -481
  62. package/dist/{event-loop-stall-monitor-Dbf6C7qt.mjs → event-loop-stall-monitor-Dl8pv3tr.mjs} +1 -1
  63. package/dist/{event-loop-stall-monitor-D4xK0sS_.js → event-loop-stall-monitor-Du3xnqMW.js} +1 -1
  64. package/dist/framework-resolver-hook.mjs +0 -1
  65. package/dist/index.js +3 -3
  66. package/dist/index.mjs +3 -3
  67. package/dist/kernel/moleculer/register-framework-resolver.d.ts +1 -1
  68. package/dist/{retired-settings-keys-Cip-mCEN.js → retired-settings-keys-TcutAdRS.js} +5 -3
  69. package/dist/{retired-settings-keys-0j5pPZBx.mjs → retired-settings-keys-WrMfpp0P.mjs} +5 -3
  70. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  let zod = require("zod");
2
2
  require("node:crypto");
3
- //#region ../types/dist/event-category-BGmz_oxW.mjs
3
+ //#region ../types/dist/event-category-B_0XEcLF.mjs
4
4
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
5
5
  EventCategory["SystemBoot"] = "system.boot";
6
6
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -501,15 +501,6 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
501
501
  EventCategory["AgentWsDisconnected"] = "agent.ws.disconnected";
502
502
  EventCategory["AgentBackupActivated"] = "agent.backup.activated";
503
503
  EventCategory["OrchestrationSettingsUpdated"] = "orchestration.settings-updated";
504
- /**
505
- * Per-agent hwaccel preference changed (user override set, cleared, or
506
- * re-probed). Observability event — decoders pull the current pref at
507
- * `createSession`, so running sessions keep their current backend until
508
- * they rotate naturally (camera add/remove, stream restart). Future
509
- * work can wire a listener in stream-broker that force-rotates live
510
- * sessions; for now this event powers logs + admin-UI toast feedback.
511
- */
512
- EventCategory["PipelineAgentHwaccelChanged"] = "pipeline.agent-hwaccel-changed";
513
504
  EventCategory["MotionAnalysis"] = "detection.motion-analysis";
514
505
  /** All raw motion zones from CCL before minArea filter — for UI debug overlay. */
515
506
  EventCategory["MotionZonesRaw"] = "detection.motion-zones-raw";
@@ -710,7 +701,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
710
701
  return EventCategory;
711
702
  }({});
712
703
  //#endregion
713
- //#region ../types/dist/sleep-DAJ9Er57.mjs
704
+ //#region ../types/dist/sleep-BNeXenvr.mjs
714
705
  /**
715
706
  * The audio chunk plane's byte format, and the ONE expansion from a coded
716
707
  * window to float samples (D455).
@@ -2100,32 +2091,12 @@ zod.z.object({
2100
2091
  audioCodec: zod.z.string().optional(),
2101
2092
  metadata: zod.z.record(zod.z.string(), zod.z.unknown()).readonly().optional()
2102
2093
  });
2103
- var EncodedPacketSchema = zod.z.object({
2104
- type: zod.z.enum(["video", "audio"]),
2105
- data: zod.z.instanceof(Uint8Array),
2106
- pts: zod.z.number(),
2107
- dts: zod.z.number(),
2108
- keyframe: zod.z.boolean(),
2109
- codec: zod.z.string()
2110
- });
2111
- var DecodedFrameSchema = zod.z.object({
2112
- data: zod.z.instanceof(Uint8Array),
2113
- width: zod.z.number(),
2114
- height: zod.z.number(),
2115
- format: zod.z.enum([
2116
- "jpeg",
2117
- "rgb",
2118
- "bgr",
2119
- "yuv420",
2120
- "gray"
2121
- ]),
2122
- timestamp: zod.z.number()
2123
- });
2124
2094
  /**
2125
2095
  * Wire schema for `FrameHandle` — a zero-pixel, serialisable reference to a
2126
2096
  * frame in a shared-memory ring (Phase 5 / D9). Mirrors the `FrameHandle` TS
2127
- * interface in `interfaces/frame-handle.ts` field-for-field so a decoder cap
2128
- * method (`pullHandles`) can carry handles over tRPC / Moleculer.
2097
+ * interface in `interfaces/frame-handle.ts` field-for-field so a cap method
2098
+ * (the runner's native-crop and pipeline-executor inputs) can carry handles
2099
+ * over tRPC / Moleculer.
2129
2100
  *
2130
2101
  * The `satisfies` assertion below pins this schema to the interface: if a
2131
2102
  * field is added to / removed from `FrameHandle` without a matching schema
@@ -2151,50 +2122,6 @@ var FrameHandleSchema = zod.z.object({
2151
2122
  slotCount: zod.z.number().int().positive()
2152
2123
  });
2153
2124
  /**
2154
- * Pixel format a frame-handle subscriber can request from the broker
2155
- * (Phase 5 / D9). The packed, raster subset of `FrameFormat` — the formats a
2156
- * `frameSink: 'shm'` decoder session can write into a `FrameRing` slot.
2157
- * `jpeg` is excluded: a variable-length stream is not a fixed-stride ring
2158
- * payload, and no decoded-frame consumer requests it over the shm plane.
2159
- */
2160
- var FrameHandleFormatSchema = zod.z.enum([
2161
- "rgb",
2162
- "bgr",
2163
- "yuv420",
2164
- "gray"
2165
- ]);
2166
- /**
2167
- * Input for `stream-broker.subscribeFrames` (Phase 5 / D9). A consumer asks the
2168
- * broker for a `FrameHandle` stream of one `format`; the broker maintains one
2169
- * shared-memory ring per `(brokerId, format)` actually requested, so a `gray`
2170
- * subscriber (motion) and an `rgb` subscriber (detection) each read the format
2171
- * they asked for with no broker-side conversion.
2172
- */
2173
- var SubscribeFramesInputSchema = zod.z.object({
2174
- brokerId: zod.z.string(),
2175
- format: FrameHandleFormatSchema,
2176
- /**
2177
- * Optional reader-side cadence hint in frames per second. The broker does
2178
- * NOT throttle — latest-wins ring reads drop frames implicitly for a slow
2179
- * consumer. The value is echoed back in `SubscribeFramesResult.maxFps` so
2180
- * the consumer can pace its own `pullFrameHandles` polling.
2181
- */
2182
- maxFps: zod.z.number().positive().optional(),
2183
- /** Short caller-identity tag (`motion`, `detection`, …) for diagnostics. */
2184
- tag: zod.z.string().optional()
2185
- });
2186
- /**
2187
- * Result of `stream-broker.subscribeFrames`. The consumer then polls
2188
- * `pullFrameHandles({ subscriptionId, maxCount })` and feeds each returned
2189
- * `FrameHandle` to a `FrameRingReader`.
2190
- */
2191
- var SubscribeFramesResultSchema = zod.z.object({
2192
- /** Opaque id the consumer passes to `pullFrameHandles` / `unsubscribeFrames`. */
2193
- subscriptionId: zod.z.string(),
2194
- /** Reader-side cadence hint (frames/s) — echoes `SubscribeFramesInput.maxFps`. */
2195
- maxFps: zod.z.number().nonnegative()
2196
- });
2197
- /**
2198
2125
  * Wire schema for a decoded audio chunk (Phase 5 / D9). Mirrors the
2199
2126
  * `DecodedAudioChunk` TS interface in `interfaces/stream-broker.ts`: PCM
2200
2127
  * sample bytes plus the track parameters a consumer needs to interpret them.
@@ -2202,8 +2129,8 @@ var SubscribeFramesResultSchema = zod.z.object({
2202
2129
  * Audio chunks are tiny (a ~500ms AudioCodecSession window is a few KB of
2203
2130
  * Float32 PCM), so unlike video frames they ship their bytes INLINE over
2204
2131
  * tRPC / Moleculer — no shared-memory plane. `data` is typed `Uint8Array`
2205
- * (the wire-serialisable supertype of `Buffer`) to match `DecodedFrameSchema`
2206
- * / `EncodedPacketSchema`'s precedent; a `Buffer` is assignable to it.
2132
+ * (the wire-serialisable supertype of `Buffer`); a `Buffer` is assignable to
2133
+ * it.
2207
2134
  */
2208
2135
  var AudioChunkFormatSchema = zod.z.enum(AUDIO_CHUNK_FORMATS);
2209
2136
  var DecodedAudioChunkSchema = zod.z.object({
@@ -2221,11 +2148,10 @@ var DecodedAudioChunkSchema = zod.z.object({
2221
2148
  format: AudioChunkFormatSchema.optional()
2222
2149
  });
2223
2150
  /**
2224
- * Input for `stream-broker.subscribeAudioChunks` (Phase 5 / D9). The
2225
- * handle-free, ship-bytes-inline analogue of `subscribeFrames`: a consumer
2226
- * asks the broker for the decoded audio-chunk stream of one broker; the
2227
- * broker keeps a per-subscription bounded FIFO queue the consumer drains via
2228
- * `pullAudioChunks`.
2151
+ * Input for `stream-broker.subscribeAudioChunks` (Phase 5 / D9). Audio ships
2152
+ * its bytes inline: a consumer asks the broker for the decoded audio-chunk
2153
+ * stream of one broker; the broker keeps a per-subscription bounded FIFO queue
2154
+ * the consumer drains via `pullAudioChunks`.
2229
2155
  */
2230
2156
  var SubscribeAudioChunksInputSchema = zod.z.object({
2231
2157
  brokerId: zod.z.string(),
@@ -2257,9 +2183,7 @@ var BrokerStatusSchema = zod.z.enum([
2257
2183
  var BrokerStatsSchema = zod.z.object({
2258
2184
  status: BrokerStatusSchema,
2259
2185
  inputFps: zod.z.number(),
2260
- decodeFps: zod.z.number(),
2261
2186
  encodedSubscribers: zod.z.number(),
2262
- decodedSubscribers: zod.z.number(),
2263
2187
  uptimeMs: zod.z.number(),
2264
2188
  bitrateKbps: zod.z.number(),
2265
2189
  idrIntervalMs: zod.z.number(),
@@ -2272,14 +2196,6 @@ var BrokerStatsSchema = zod.z.object({
2272
2196
  preBufferMs: zod.z.number(),
2273
2197
  preBufferPackets: zod.z.number(),
2274
2198
  /**
2275
- * Moleculer node id of the decoder provider currently servicing this
2276
- * stream's decoded subscribers. `null` until the deferred decoder is
2277
- * created (no decoded clients yet, or codec not detected). Surfaces the
2278
- * runtime decoder placement so the UI can show "Decoder: <agent>" without
2279
- * a separate cap call per broker.
2280
- */
2281
- decoderNodeId: zod.z.string().nullable(),
2282
- /**
2283
2199
  * Detected audio track parameters from the RTSP DESCRIBE / SDP. `null`
2284
2200
  * when the stream has no audio track or the broker is in cold start.
2285
2201
  * `supported = false` means the codec was detected but the local
@@ -7524,70 +7440,6 @@ var StorageLocationDeclarationSchema = zod.z.object({
7524
7440
  "backup"
7525
7441
  ]).optional()
7526
7442
  });
7527
- var DecoderStatsSchema = zod.z.object({
7528
- inputFps: zod.z.number(),
7529
- outputFps: zod.z.number(),
7530
- avgDecodeTimeMs: zod.z.number(),
7531
- droppedFrames: zod.z.number(),
7532
- /**
7533
- * Pull-mode adaptive-fps telemetry (optional — only pull sessions run the
7534
- * lag-driven controller; push sessions omit these). `lagMs` is the EWMA of
7535
- * the decoder's real-time drift (rising = falling behind live); `adaptiveFps`
7536
- * is the current lag-throttled emit rate (≤ `effectiveFps` ceiling).
7537
- */
7538
- lagMs: zod.z.number().optional(),
7539
- effectiveFps: zod.z.number().optional(),
7540
- adaptiveFps: zod.z.number().optional()
7541
- });
7542
- var DecoderSessionConfigSchema = zod.z.object({
7543
- codec: zod.z.string(),
7544
- maxFps: zod.z.number().default(0),
7545
- outputFormat: zod.z.enum([
7546
- "jpeg",
7547
- "rgb",
7548
- "bgr",
7549
- "yuv420",
7550
- "gray"
7551
- ]).default("jpeg"),
7552
- scale: zod.z.number().default(1),
7553
- width: zod.z.number().optional(),
7554
- height: zod.z.number().optional(),
7555
- /**
7556
- * Identifier of the camera this decoder session serves. Optional
7557
- * because the cap is generic (any caller could request decode), but
7558
- * stream-broker passes it so decoder logs include `deviceId` for
7559
- * per-camera filtering when diagnosing failures (e.g. node-av
7560
- * sendPacket errors on a single hung camera).
7561
- */
7562
- deviceId: zod.z.number().int().nonnegative().optional(),
7563
- /**
7564
- * Free-form tag for log scoping. Stream-broker uses
7565
- * `broker:<deviceId>/<profile>`. Decoder session logger surfaces it
7566
- * on every line so `grep tag=broker:5/high` filters one camera
7567
- * profile cleanly.
7568
- */
7569
- tag: zod.z.string().optional(),
7570
- /**
7571
- * Where the session delivers decoded frames (Phase 5 / D9):
7572
- *
7573
- * - `'callback'` (default) — the legacy pixel path: decoded frames are
7574
- * buffered as `DecodedFrame`s and drained via `pullFrames`.
7575
- * - `'shm'` — the shared-memory frame plane: decoded frames are written
7576
- * into an OS shared-memory ring and drained as zero-pixel
7577
- * `FrameHandle`s via `pullHandles`. A session is one mode or the
7578
- * other — `pullFrames` returns nothing for an `'shm'` session and
7579
- * `pullHandles` returns nothing for a `'callback'` session.
7580
- */
7581
- frameSink: zod.z.enum(["callback", "shm"]).default("callback"),
7582
- /**
7583
- * Per-camera decoder DEBUG facility. When `true`, a pull-mode session emits
7584
- * a throttled (~1Hz) structured `decoder debug` line (effective/adaptive fps,
7585
- * real-time lag, dropped-frame delta, avg decode time, hwaccel). Mirrors the
7586
- * stream-broker's `streamingDebug` gate — off by default so production logs
7587
- * stay quiet and the emit path pays zero per-frame cost when disabled.
7588
- */
7589
- debug: zod.z.boolean().optional()
7590
- });
7591
7443
  /**
7592
7444
  * Per-component log CHANNELS — the gate a hot path consults, and the registry
7593
7445
  * an addon declares its channels in.
@@ -10388,13 +10240,6 @@ var BrokerRtspClientSchema = zod.z.object({
10388
10240
  lastRtpAt: zod.z.number(),
10389
10241
  bytesSent: zod.z.number()
10390
10242
  });
10391
- var BrokerDecodedClientSchema = zod.z.object({
10392
- tag: zod.z.string(),
10393
- subscribedAt: zod.z.number(),
10394
- maxFps: zod.z.number(),
10395
- framesDelivered: zod.z.number(),
10396
- framesDropped: zod.z.number()
10397
- });
10398
10243
  var BrokerAudioClientSchema = zod.z.object({
10399
10244
  tag: zod.z.string(),
10400
10245
  subscribedAt: zod.z.number(),
@@ -10494,7 +10339,6 @@ var BrokerEncodedClientSchema = zod.z.object({
10494
10339
  });
10495
10340
  var BrokerClientsSchema = zod.z.object({
10496
10341
  rtsp: zod.z.array(BrokerRtspClientSchema).readonly(),
10497
- decoded: zod.z.array(BrokerDecodedClientSchema).readonly(),
10498
10342
  audio: zod.z.array(BrokerAudioClientSchema).readonly(),
10499
10343
  encoded: zod.z.array(BrokerEncodedClientSchema).readonly(),
10500
10344
  pipeClients: zod.z.number(),
@@ -10986,11 +10830,7 @@ var streamBrokerCapability = {
10986
10830
  listClients: method(zod.z.object({ brokerId: zod.z.string() }), BrokerClientsSchema),
10987
10831
  killClient: method(zod.z.object({
10988
10832
  brokerId: zod.z.string(),
10989
- channel: zod.z.enum([
10990
- "rtsp",
10991
- "decoded",
10992
- "audio"
10993
- ]),
10833
+ channel: zod.z.enum(["rtsp", "audio"]),
10994
10834
  handle: zod.z.string()
10995
10835
  }), zod.z.object({ killed: zod.z.boolean() }), {
10996
10836
  kind: "mutation",
@@ -11089,31 +10929,6 @@ var streamBrokerCapability = {
11089
10929
  maxCount: zod.z.number().int().positive().default(8)
11090
10930
  }), zod.z.array(DecodedAudioChunkSchema).readonly()),
11091
10931
  unsubscribeAudioChunks: method(zod.z.object({ subscriptionId: zod.z.string() }), zod.z.object({ released: zod.z.boolean() }), { kind: "mutation" }),
11092
- /**
11093
- * ── Shared-memory frame plane (Phase 5 / D9) ──────────────────────
11094
- *
11095
- * The handle-based replacement for the live-object `IStreamBroker.
11096
- * onDecodedFrame` callback path. A consumer:
11097
- *
11098
- * 1. `subscribeFrames({ brokerId, format })` — the broker spins up
11099
- * (or reuses) a `frameSink: 'shm'` decoder session producing that
11100
- * `format` and returns a `subscriptionId`.
11101
- * 2. polls `pullFrameHandles({ subscriptionId, maxCount })` — drains
11102
- * zero-pixel `FrameHandle[]`; each handle is fed to a
11103
- * `FrameRingReader` that opens the named shm segment and reads the
11104
- * pixels back zero-copy.
11105
- * 3. `unsubscribeFrames({ subscriptionId })` on teardown.
11106
- *
11107
- * The broker keeps one shm ring per `(brokerId, format)` actually
11108
- * requested — no broker-side `sharp` conversion. fps throttling is
11109
- * implicit (latest-wins ring reads drop frames for a slow consumer).
11110
- */
11111
- subscribeFrames: method(SubscribeFramesInputSchema, SubscribeFramesResultSchema, { kind: "mutation" }),
11112
- pullFrameHandles: method(zod.z.object({
11113
- subscriptionId: zod.z.string(),
11114
- maxCount: zod.z.number().int().positive().default(4)
11115
- }), zod.z.array(FrameHandleSchema).readonly()),
11116
- unsubscribeFrames: method(zod.z.object({ subscriptionId: zod.z.string() }), zod.z.object({ released: zod.z.boolean() }), { kind: "mutation" }),
11117
10932
  setPreBufferDuration: method(zod.z.object({
11118
10933
  brokerId: zod.z.string(),
11119
10934
  seconds: zod.z.number().min(0).max(30)
@@ -14147,72 +13962,18 @@ id: zod.z.union([zod.z.string(), zod.z.number()]) }), {
14147
13962
  })
14148
13963
  }
14149
13964
  };
14150
- /**
14151
- * shm ring usage stats for a `frameSink: 'shm'` decoder session —
14152
- * exposed via `decoder.getShmStats` so downstream consumers can
14153
- * observe ring pressure (slot count, byte budget, hit/miss ratio).
14154
- */
14155
- var ShmRingStatsSchema = zod.z.object({
14156
- sessionId: zod.z.string(),
14157
- slotCount: zod.z.number().int(),
14158
- slotByteLength: zod.z.number().int(),
14159
- segmentBytes: zod.z.number().int(),
14160
- budgetMb: zod.z.number().int(),
14161
- framesWritten: zod.z.number().int(),
14162
- getFrameHits: zod.z.number().int(),
14163
- getFrameMisses: zod.z.number().int()
14164
- });
14165
13965
  var decoderCapability = {
14166
13966
  name: "decoder",
14167
13967
  scope: "system",
14168
13968
  mode: "singleton",
14169
13969
  preferredProvider: "decoder-nodeav",
14170
13970
  methods: {
14171
- supportsCodec: method(zod.z.object({ codec: zod.z.string() }), zod.z.boolean()),
14172
13971
  getInfo: method(zod.z.void(), zod.z.object({
14173
13972
  id: zod.z.string(),
14174
13973
  name: zod.z.string(),
14175
- isPullMode: zod.z.boolean().optional(),
14176
- priority: zod.z.number().optional(),
14177
13974
  hwaccel: zod.z.string().optional(),
14178
13975
  probedBestHwaccel: zod.z.string().optional()
14179
13976
  })),
14180
- createSession: method(DecoderSessionConfigSchema, zod.z.object({
14181
- sessionId: zod.z.string(),
14182
- nodeId: zod.z.string()
14183
- })),
14184
- destroySession: method(zod.z.object({ sessionId: zod.z.string() }), zod.z.void()),
14185
- pushPacket: method(zod.z.object({
14186
- sessionId: zod.z.string(),
14187
- packet: EncodedPacketSchema
14188
- }), zod.z.void()),
14189
- openStream: method(zod.z.object({
14190
- sessionId: zod.z.string(),
14191
- url: zod.z.string()
14192
- }), zod.z.void()),
14193
- pullFrames: method(zod.z.object({
14194
- sessionId: zod.z.string(),
14195
- maxCount: zod.z.number().default(1),
14196
- waitMs: zod.z.number().optional()
14197
- }), zod.z.array(DecodedFrameSchema)),
14198
- pullHandles: method(zod.z.object({
14199
- sessionId: zod.z.string(),
14200
- maxCount: zod.z.number().default(1),
14201
- waitMs: zod.z.number().optional()
14202
- }), zod.z.array(FrameHandleSchema)),
14203
- getFrame: method(zod.z.object({ handle: FrameHandleSchema }), DecodedFrameSchema.nullable()),
14204
- getShmStats: method(zod.z.object({ sessionId: zod.z.string() }), ShmRingStatsSchema.nullable()),
14205
- updateConfig: method(zod.z.object({
14206
- sessionId: zod.z.string(),
14207
- config: DecoderSessionConfigSchema.partial()
14208
- }), zod.z.void()),
14209
- getStats: method(zod.z.object({ sessionId: zod.z.string() }), DecoderStatsSchema),
14210
- listActiveSessions: method(zod.z.void(), zod.z.array(zod.z.object({
14211
- sessionId: zod.z.string(),
14212
- codec: zod.z.string(),
14213
- outputFormat: zod.z.string(),
14214
- createdAtMs: zod.z.number()
14215
- })).readonly()),
14216
13977
  /**
14217
13978
  * Re-run the host platform-probe for the decoder's hwaccel backend
14218
13979
  * and write the detected value into the addon's own global
@@ -23339,8 +23100,8 @@ Object.freeze(Object.fromEntries([{
23339
23100
  var CLUSTER_STEP_SETTING_FIELDS = [{
23340
23101
  stepId: "face-embedding",
23341
23102
  key: "minLandmarkFaceSize",
23342
- label: "Min face size for recognition (detection px)",
23343
- description: "Refuse to embed a face smaller than this IN THE DETECTION FRAME. Applies to every node — the enrolled gallery is one index, and two admission floors would fill it from two policies. 0 disables the gate.",
23103
+ label: "Min face size to embed (detection-frame px)",
23104
+ description: "Faces smaller than this in the small frame the detector sees are not embedded, so they can never be recognised. Below it the face cannot be aligned reliably and a bad embedding matches everyone. Same value on every node. 0 = no limit.",
23344
23105
  type: "slider",
23345
23106
  min: 0,
23346
23107
  max: 64,
@@ -26061,21 +25822,6 @@ var PipelineDefaultStepSchema = zod.z.lazy(() => zod.z.object({
26061
25822
  group: zod.z.string().optional(),
26062
25823
  settings: zod.z.record(zod.z.string(), zod.z.unknown()).optional()
26063
25824
  }));
26064
- var PipelineTemplateStepSchema = zod.z.lazy(() => zod.z.object({
26065
- addonId: zod.z.string(),
26066
- enabled: zod.z.boolean(),
26067
- modelId: zod.z.string(),
26068
- children: zod.z.array(PipelineTemplateStepSchema).readonly(),
26069
- settings: zod.z.record(zod.z.string(), zod.z.unknown()).optional()
26070
- }));
26071
- var PipelineTemplateSchema$1 = zod.z.object({
26072
- id: zod.z.string(),
26073
- name: zod.z.string(),
26074
- createdAt: zod.z.string(),
26075
- updatedAt: zod.z.string(),
26076
- engine: PipelineEngineChoiceSchema,
26077
- steps: zod.z.array(PipelineTemplateStepSchema).readonly()
26078
- });
26079
25825
  var PipelineModelOptionSchema = zod.z.object({
26080
25826
  id: zod.z.string(),
26081
25827
  name: zod.z.string(),
@@ -26397,18 +26143,6 @@ var pipelineExecutorCapability = {
26397
26143
  steps: zod.z.array(PipelineStepInputSchema),
26398
26144
  deviceKey: zod.z.string().optional()
26399
26145
  }), PipelineValidationResultSchema),
26400
- listTemplates: method(zod.z.void(), zod.z.array(PipelineTemplateSchema$1).readonly()),
26401
- saveTemplate: method(zod.z.object({
26402
- name: zod.z.string(),
26403
- steps: zod.z.array(PipelineTemplateStepSchema).readonly(),
26404
- engine: PipelineEngineChoiceSchema
26405
- }), PipelineTemplateSchema$1, { kind: "mutation" }),
26406
- updateTemplate: method(zod.z.object({
26407
- id: zod.z.string(),
26408
- name: zod.z.string().optional(),
26409
- steps: zod.z.array(PipelineTemplateStepSchema).readonly().optional()
26410
- }), PipelineTemplateSchema$1, { kind: "mutation" }),
26411
- deleteTemplate: method(zod.z.object({ id: zod.z.string() }), zod.z.void(), { kind: "mutation" }),
26412
26146
  getCapabilities: method(zod.z.void(), InferenceCapabilitiesBridge),
26413
26147
  getAddonModels: method(zod.z.object({ addonId: zod.z.string() }), ModelAvailabilityListBridge),
26414
26148
  downloadModel: method(zod.z.object({
@@ -27951,14 +27685,15 @@ var RunnerLocalLoadSchema = zod.z.object({
27951
27685
  * Per-inference-device live load (multi-device C4). One entry per deviceKey
27952
27686
  * this runner currently has attached cameras on, so the orchestrator's second
27953
27687
  * `balance()` pass (over a node's devices) weights on real per-pool session
27954
- * counts. Empty on single-device / pre-multi-device runners. `queueDepthTotal`
27955
- * per device is 0 until the pool backlog gets a public accessor (follow-up).
27688
+ * counts. Empty on single-device / pre-multi-device runners. There is no
27689
+ * per-device queue depth: the inference pool's backlog has no accessor, and
27690
+ * a field that always read 0 was removed rather than shown as a measurement
27691
+ * (D762).
27956
27692
  */
27957
27693
  devices: zod.z.array(zod.z.object({
27958
27694
  deviceKey: zod.z.string(),
27959
27695
  backend: zod.z.string(),
27960
- attachedCameras: zod.z.number(),
27961
- queueDepthTotal: zod.z.number()
27696
+ attachedCameras: zod.z.number()
27962
27697
  })).default([]),
27963
27698
  /** Hardware capability flags reported by this node. */
27964
27699
  hardware: zod.z.object({
@@ -28364,14 +28099,6 @@ var CameraPipelineConfigSchema = zod.z.object({
28364
28099
  settings: zod.z.record(zod.z.string(), zod.z.unknown()).readonly().optional()
28365
28100
  }).nullable().optional()
28366
28101
  });
28367
- var PipelineTemplateSchema = zod.z.object({
28368
- id: zod.z.string(),
28369
- name: zod.z.string(),
28370
- description: zod.z.string().optional(),
28371
- config: CameraPipelineConfigSchema,
28372
- createdAt: zod.z.string(),
28373
- updatedAt: zod.z.string()
28374
- });
28375
28102
  var DeviceStepConfigSchema = zod.z.object({
28376
28103
  modelId: zod.z.string().optional(),
28377
28104
  settings: zod.z.record(zod.z.string(), zod.z.unknown()).optional(),
@@ -28481,7 +28208,10 @@ var PipelineAssignmentSchema = zod.z.object({
28481
28208
  });
28482
28209
  /**
28483
28210
  * Per-agent load summary surfaced to the load balancer + dashboards.
28484
- * Aggregated from each runner's `getLocalLoad` cap call.
28211
+ * Aggregated from each runner's `getLocalLoad` cap call. In the
28212
+ * `getAgentLoad` report, a single-device node's default-pool sessions (no
28213
+ * `deviceKey`) are credited to its one eligible device in `load.devices` —
28214
+ * the default pool IS that device (D745); the balancer's census stays raw.
28485
28215
  */
28486
28216
  var AgentLoadSummarySchema = zod.z.object({
28487
28217
  nodeId: zod.z.string(),
@@ -28571,8 +28301,14 @@ var CameraBrokerProfileSchema = zod.z.object({
28571
28301
  width: zod.z.number(),
28572
28302
  height: zod.z.number(),
28573
28303
  subscribers: zod.z.number(),
28574
- inFps: zod.z.number(),
28575
- outFps: zod.z.number()
28304
+ /**
28305
+ * Encoded packets/s the broker receives from the camera. null when the
28306
+ * broker's stats read failed — unknown, never 0 (a 0 here reads as a stall).
28307
+ * There is no output rate: decoding runs in the session decode workers, not
28308
+ * in the broker, so the broker's own decoded-frame rate is 0 on every live
28309
+ * camera and is not served (D758).
28310
+ */
28311
+ inFps: zod.z.number().nullable()
28576
28312
  });
28577
28313
  /** Broker block — null when the broker stage is unreachable or inactive. */
28578
28314
  var CameraBrokerStatusSchema = zod.z.object({
@@ -28580,20 +28316,15 @@ var CameraBrokerStatusSchema = zod.z.object({
28580
28316
  webrtcSessions: zod.z.number(),
28581
28317
  rtspRestream: zod.z.boolean()
28582
28318
  });
28583
- /** Shared-memory ring statistics within the decoder block. */
28584
- var CameraDecoderShmSchema = zod.z.object({
28585
- framesWritten: zod.z.number(),
28586
- getFrameHits: zod.z.number(),
28587
- getFrameMisses: zod.z.number(),
28588
- budgetMb: zod.z.number()
28589
- });
28590
- /** Decoder block — null when the decoder stage is unreachable or inactive. */
28591
- var CameraDecoderStatusSchema = zod.z.object({
28592
- nodeId: zod.z.string(),
28593
- formats: zod.z.array(zod.z.string()).readonly(),
28594
- sessionCount: zod.z.number(),
28595
- shm: CameraDecoderShmSchema
28596
- });
28319
+ /**
28320
+ * Decoder block — WHERE decode runs (co-located with the detection node by
28321
+ * construction); null when the camera has no detection node. It carries no
28322
+ * frame counter: the shared-memory plane whose counters it used to serve is
28323
+ * gone, and those fields read 0 forever. Whether frames actually flow is read
28324
+ * from `detection.actualFps` (frames delivered to and processed by the
28325
+ * detector), never from a counter nothing feeds.
28326
+ */
28327
+ var CameraDecoderStatusSchema = zod.z.object({ nodeId: zod.z.string() });
28597
28328
  /** Motion block — null when motion detection is not active for this device. */
28598
28329
  var CameraMotionStatusSchema = zod.z.object({
28599
28330
  enabled: zod.z.boolean(),
@@ -29473,33 +29204,7 @@ var pipelineOrchestratorCapability = {
29473
29204
  auth: "admin"
29474
29205
  }),
29475
29206
  /** Snapshot of the in-flight or last disk-wins fleet reconcile. */
29476
- getReconcileFromDiskStatus: method(zod.z.void(), DiskReconcileJobSchema, { auth: "admin" }),
29477
- /** List every template the operator has saved. */
29478
- listTemplates: method(zod.z.void(), zod.z.array(PipelineTemplateSchema).readonly()),
29479
- /** Create a new named preset from a given CameraPipelineConfig. */
29480
- saveTemplate: method(zod.z.object({
29481
- name: zod.z.string(),
29482
- description: zod.z.string().optional(),
29483
- config: CameraPipelineConfigSchema
29484
- }), PipelineTemplateSchema, {
29485
- kind: "mutation",
29486
- auth: "admin"
29487
- }),
29488
- /** Partial update of a template. Any omitted field is preserved. */
29489
- updateTemplate: method(zod.z.object({
29490
- id: zod.z.string(),
29491
- name: zod.z.string().optional(),
29492
- description: zod.z.string().optional(),
29493
- config: CameraPipelineConfigSchema.optional()
29494
- }), PipelineTemplateSchema, {
29495
- kind: "mutation",
29496
- auth: "admin"
29497
- }),
29498
- /** Remove a template. Camera configs that were seeded from it keep a copy. */
29499
- deleteTemplate: method(zod.z.object({ id: zod.z.string() }), zod.z.object({ success: zod.z.literal(true) }), {
29500
- kind: "mutation",
29501
- auth: "admin"
29502
- })
29207
+ getReconcileFromDiskStatus: method(zod.z.void(), DiskReconcileJobSchema, { auth: "admin" })
29503
29208
  }
29504
29209
  };
29505
29210
  /**
@@ -32511,8 +32216,6 @@ var WebrtcStreamChoiceSchema = zod.z.object({
32511
32216
  ]).nullable(),
32512
32217
  /** Input FPS from the camera (null for adaptive). */
32513
32218
  inputFps: zod.z.number().nullable(),
32514
- /** Decoded FPS (null for adaptive). */
32515
- decodeFps: zod.z.number().nullable(),
32516
32219
  /** Bitrate in kbps (null for adaptive). */
32517
32220
  bitrateKbps: zod.z.number().nullable()
32518
32221
  });
@@ -49127,90 +48830,18 @@ var METHOD_ACCESS_MAP = Object.freeze({
49127
48830
  addonId: null,
49128
48831
  access: "create"
49129
48832
  },
49130
- "decoder.createSession": {
49131
- capName: "decoder",
49132
- capScope: "system",
49133
- addonId: null,
49134
- access: "view"
49135
- },
49136
- "decoder.destroySession": {
49137
- capName: "decoder",
49138
- capScope: "system",
49139
- addonId: null,
49140
- access: "delete"
49141
- },
49142
- "decoder.getFrame": {
49143
- capName: "decoder",
49144
- capScope: "system",
49145
- addonId: null,
49146
- access: "view"
49147
- },
49148
48833
  "decoder.getInfo": {
49149
48834
  capName: "decoder",
49150
48835
  capScope: "system",
49151
48836
  addonId: null,
49152
48837
  access: "view"
49153
48838
  },
49154
- "decoder.getShmStats": {
49155
- capName: "decoder",
49156
- capScope: "system",
49157
- addonId: null,
49158
- access: "view"
49159
- },
49160
- "decoder.getStats": {
49161
- capName: "decoder",
49162
- capScope: "system",
49163
- addonId: null,
49164
- access: "view"
49165
- },
49166
- "decoder.listActiveSessions": {
49167
- capName: "decoder",
49168
- capScope: "system",
49169
- addonId: null,
49170
- access: "view"
49171
- },
49172
- "decoder.openStream": {
49173
- capName: "decoder",
49174
- capScope: "system",
49175
- addonId: null,
49176
- access: "view"
49177
- },
49178
- "decoder.pullFrames": {
49179
- capName: "decoder",
49180
- capScope: "system",
49181
- addonId: null,
49182
- access: "view"
49183
- },
49184
- "decoder.pullHandles": {
49185
- capName: "decoder",
49186
- capScope: "system",
49187
- addonId: null,
49188
- access: "view"
49189
- },
49190
- "decoder.pushPacket": {
49191
- capName: "decoder",
49192
- capScope: "system",
49193
- addonId: null,
49194
- access: "view"
49195
- },
49196
48839
  "decoder.reprobeHwaccel": {
49197
48840
  capName: "decoder",
49198
48841
  capScope: "system",
49199
48842
  addonId: null,
49200
48843
  access: "create"
49201
48844
  },
49202
- "decoder.supportsCodec": {
49203
- capName: "decoder",
49204
- capScope: "system",
49205
- addonId: null,
49206
- access: "view"
49207
- },
49208
- "decoder.updateConfig": {
49209
- capName: "decoder",
49210
- capScope: "system",
49211
- addonId: null,
49212
- access: "view"
49213
- },
49214
48845
  "detectionPipeline.applyDeviceSettingsPatch": {
49215
48846
  capName: "detection-pipeline",
49216
48847
  capScope: "device",
@@ -52301,12 +51932,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
52301
51932
  addonId: null,
52302
51933
  access: "delete"
52303
51934
  },
52304
- "pipelineExecutor.deleteTemplate": {
52305
- capName: "pipeline-executor",
52306
- capScope: "system",
52307
- addonId: null,
52308
- access: "delete"
52309
- },
52310
51935
  "pipelineExecutor.downloadModel": {
52311
51936
  capName: "pipeline-executor",
52312
51937
  capScope: "system",
@@ -52445,12 +52070,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
52445
52070
  addonId: null,
52446
52071
  access: "view"
52447
52072
  },
52448
- "pipelineExecutor.listTemplates": {
52449
- capName: "pipeline-executor",
52450
- capScope: "system",
52451
- addonId: null,
52452
- access: "view"
52453
- },
52454
52073
  "pipelineExecutor.rearmInferenceDevice": {
52455
52074
  capName: "pipeline-executor",
52456
52075
  capScope: "system",
@@ -52475,12 +52094,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
52475
52094
  addonId: null,
52476
52095
  access: "create"
52477
52096
  },
52478
- "pipelineExecutor.saveTemplate": {
52479
- capName: "pipeline-executor",
52480
- capScope: "system",
52481
- addonId: null,
52482
- access: "create"
52483
- },
52484
52097
  "pipelineExecutor.setVideoPipelineSteps": {
52485
52098
  capName: "pipeline-executor",
52486
52099
  capScope: "system",
@@ -52499,12 +52112,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
52499
52112
  addonId: null,
52500
52113
  access: "create"
52501
52114
  },
52502
- "pipelineExecutor.updateTemplate": {
52503
- capName: "pipeline-executor",
52504
- capScope: "system",
52505
- addonId: null,
52506
- access: "create"
52507
- },
52508
52115
  "pipelineExecutor.validatePipeline": {
52509
52116
  capName: "pipeline-executor",
52510
52117
  capScope: "system",
@@ -52535,12 +52142,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
52535
52142
  addonId: null,
52536
52143
  access: "create"
52537
52144
  },
52538
- "pipelineOrchestrator.deleteTemplate": {
52539
- capName: "pipeline-orchestrator",
52540
- capScope: "system",
52541
- addonId: null,
52542
- access: "delete"
52543
- },
52544
52145
  "pipelineOrchestrator.getAgentLoad": {
52545
52146
  capName: "pipeline-orchestrator",
52546
52147
  capScope: "system",
@@ -52691,12 +52292,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
52691
52292
  addonId: null,
52692
52293
  access: "view"
52693
52294
  },
52694
- "pipelineOrchestrator.listTemplates": {
52695
- capName: "pipeline-orchestrator",
52696
- capScope: "system",
52697
- addonId: null,
52698
- access: "view"
52699
- },
52700
52295
  "pipelineOrchestrator.pauseForStorageMigration": {
52701
52296
  capName: "pipeline-orchestrator",
52702
52297
  capScope: "system",
@@ -52751,12 +52346,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
52751
52346
  addonId: null,
52752
52347
  access: "create"
52753
52348
  },
52754
- "pipelineOrchestrator.saveTemplate": {
52755
- capName: "pipeline-orchestrator",
52756
- capScope: "system",
52757
- addonId: null,
52758
- access: "create"
52759
- },
52760
52349
  "pipelineOrchestrator.setAgentCapabilities": {
52761
52350
  capName: "pipeline-orchestrator",
52762
52351
  capScope: "system",
@@ -52865,12 +52454,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
52865
52454
  addonId: null,
52866
52455
  access: "create"
52867
52456
  },
52868
- "pipelineOrchestrator.updateTemplate": {
52869
- capName: "pipeline-orchestrator",
52870
- capScope: "system",
52871
- addonId: null,
52872
- access: "create"
52873
- },
52874
52457
  "pipelineRunner.attachCamera": {
52875
52458
  capName: "pipeline-runner",
52876
52459
  capScope: "system",
@@ -54305,12 +53888,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
54305
53888
  addonId: null,
54306
53889
  access: "view"
54307
53890
  },
54308
- "streamBroker.pullFrameHandles": {
54309
- capName: "stream-broker",
54310
- capScope: "system",
54311
- addonId: null,
54312
- access: "view"
54313
- },
54314
53891
  "streamBroker.regenerateRtspToken": {
54315
53892
  capName: "stream-broker",
54316
53893
  capScope: "system",
@@ -54377,12 +53954,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
54377
53954
  addonId: null,
54378
53955
  access: "create"
54379
53956
  },
54380
- "streamBroker.subscribeFrames": {
54381
- capName: "stream-broker",
54382
- capScope: "system",
54383
- addonId: null,
54384
- access: "create"
54385
- },
54386
53957
  "streamBroker.unassignProfile": {
54387
53958
  capName: "stream-broker",
54388
53959
  capScope: "system",
@@ -54395,12 +53966,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
54395
53966
  addonId: null,
54396
53967
  access: "create"
54397
53968
  },
54398
- "streamBroker.unsubscribeFrames": {
54399
- capName: "stream-broker",
54400
- capScope: "system",
54401
- addonId: null,
54402
- access: "create"
54403
- },
54404
53969
  "streamCatalog.getCatalog": {
54405
53970
  capName: "stream-catalog",
54406
53971
  capScope: "device",
@@ -57169,11 +56734,6 @@ Object.freeze({
57169
56734
  form: "single",
57170
56735
  optional: false
57171
56736
  }],
57172
- "decoder.createSession": [{
57173
- name: "deviceId",
57174
- form: "single",
57175
- optional: true
57176
- }],
57177
56737
  "detectionPipeline.applyDeviceSettingsPatch": [{
57178
56738
  name: "deviceId",
57179
56739
  form: "single",