@camstack/addon-pipeline 1.2.326 → 1.2.327

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 (33) hide show
  1. package/THIRD_PARTY_MODELS.md +25 -27
  2. package/dist/audio-analyzer/index.js +2 -2
  3. package/dist/audio-analyzer/index.mjs +2 -2
  4. package/dist/{default-detection-model-WnGDQAQh.js → default-detection-model-CBIYdAJ5.js} +3 -3
  5. package/dist/{default-detection-model-Bu4So71h.mjs → default-detection-model-hql6BX9-.mjs} +3 -3
  6. package/dist/detection-pipeline/index.js +5 -5
  7. package/dist/detection-pipeline/index.mjs +5 -5
  8. package/dist/{dist-BuU8Y4o1.mjs → dist-B9LnBPz9.mjs} +91 -27
  9. package/dist/{dist-BTBbIGSC.js → dist-BBZwYfSN.js} +91 -27
  10. package/dist/motion-wasm/index.js +1 -1
  11. package/dist/motion-wasm/index.mjs +1 -1
  12. package/dist/{node-inZFYgkm.mjs → node-Ci0E-0VP.mjs} +1 -1
  13. package/dist/{node-UK2v2ZSw.js → node-mJQBUiEc.js} +1 -1
  14. package/dist/pipeline-runner/index.js +41 -12
  15. package/dist/pipeline-runner/index.mjs +41 -13
  16. package/dist/{process-memory-DbSOL63T.mjs → process-memory-B63Jlpev.mjs} +1 -1
  17. package/dist/{process-memory-BfDlwJc4.js → process-memory-DgEfKdtC.js} +1 -1
  18. package/dist/recorder/index.js +9 -8
  19. package/dist/recorder/index.mjs +9 -8
  20. package/dist/{segment-demux-js-C1GXgxZ0.js → segment-demux-js-C2ufKMu0.js} +1 -1
  21. package/dist/{segment-demux-js-CMj020zz.mjs → segment-demux-js-DzwHW4Ey.mjs} +1 -1
  22. package/dist/stream-broker/_stub.js +1 -1
  23. package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-qHD9Dl1z.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-B4fPzS-8.mjs} +3 -3
  24. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BDGzcgLP.mjs +26 -0
  25. package/dist/stream-broker/demux-worker-child.js +1 -1
  26. package/dist/stream-broker/demux-worker-child.mjs +1 -1
  27. package/dist/stream-broker/{hostInit-BgWrKrQn.mjs → hostInit-Cg4IdtE5.mjs} +3 -3
  28. package/dist/stream-broker/index.js +5 -5
  29. package/dist/stream-broker/index.mjs +5 -5
  30. package/dist/stream-broker/remoteEntry.js +1 -1
  31. package/package.json +1 -1
  32. package/python/postprocessors/scrfd.py +2 -0
  33. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-NkeMtp-v.mjs +0 -26
@@ -16744,7 +16744,7 @@ var detectionPipelineCapability = {
16744
16744
  * This matters here more than anywhere else in the repo, because every provider
16745
16745
  * that knows a device's host knows its PASSWORD too: `{ host, port, username,
16746
16746
  * password }` sit in one object on Hikvision, Amcrest, Reolink and ONVIF alike,
16747
- * and `http://admin:hunter2@192.168.x.x/` is a URL a browser accepts. The
16747
+ * and `http://admin:hunter2@192.168.60.139/` is a URL a browser accepts. The
16748
16748
  * camera's own page will ask for its own login. That is correct, and pre-
16749
16749
  * filling it is the operator's business, not ours.
16750
16750
  *
@@ -22591,8 +22591,9 @@ var NcRuleSchema = NcRuleInputSchema.extend({
22591
22591
  disabledTargetIds: array(string()).default([])
22592
22592
  });
22593
22593
  /**
22594
- * The state-summary SECTIONS (D647 / D698): the D637 kind groups that report a
22595
- * still-true state. `backups-exports` and `alarm` are not sections — a completed
22594
+ * The state-summary SECTIONS (D647 / D698 / D708): the D637 kind groups that
22595
+ * report a still-true state. `addons` is the crash-looped addons only and
22596
+ * `addon-updates` the addons that are behind (D708 split them). `backups-exports` and `alarm` are not sections — a completed
22596
22597
  * job is not an open state, and the alarm stays instant.
22597
22598
  */
22598
22599
  var NcStateSummarySectionIdSchema = _enum([
@@ -22604,6 +22605,7 @@ var NcStateSummarySectionIdSchema = _enum([
22604
22605
  "detection-blind",
22605
22606
  "nodes",
22606
22607
  "addons",
22608
+ "addon-updates",
22607
22609
  "updates"
22608
22610
  ]);
22609
22611
  /** One section of a previewed state summary. `unavailable` = its state could not be read. */
@@ -23084,7 +23086,19 @@ var NcAlarmModeDelaysListSchema = array(object({
23084
23086
  * When this mode may be armed. Absent / null = always allowed (same as a
23085
23087
  * rule with no `schedule`). Evaluated with {@link isScheduleActive}.
23086
23088
  */
23087
- schedule: NcScheduleSchema.optional()
23089
+ schedule: NcScheduleSchema.optional(),
23090
+ /**
23091
+ * D706: while this mode's ENTRY DELAY runs, do the alarm rules' own pushes go out (as an
23092
+ * intrusion naming the locations)? Absent = false — the entry-delay notification is the
23093
+ * only one, and the matches ride the triggered notification's mosaic (D705).
23094
+ */
23095
+ notifyDuringEntryDelay: boolean().optional(),
23096
+ /**
23097
+ * D706: notify "watched again" when a sensor this arm bypassed closes and opens again.
23098
+ * Absent = false (logged, not sent). Even when true it is not sent when that same sensor
23099
+ * is the one that starts the entry delay — the entry-delay notification already names it.
23100
+ */
23101
+ notifySensorRewatched: boolean().optional()
23088
23102
  })).max(8).refine(uniqueModes, { message: "modeDelays: at most one entry per arm mode" });
23089
23103
  var NcAlarmModeDelaysEditListSchema = array(object({
23090
23104
  mode: AlarmArmModeSchema,
@@ -23093,7 +23107,11 @@ var NcAlarmModeDelaysEditListSchema = array(object({
23093
23107
  triggeredDurationSec: NcAlarmTriggeredSecSchema.nullable().optional(),
23094
23108
  postTriggeredAction: NcAlarmPostTriggeredActionSchema.nullable().optional(),
23095
23109
  /** Set a schedule, or `null` to clear (mode always allowed again). */
23096
- schedule: NcScheduleSchema.nullable().optional()
23110
+ schedule: NcScheduleSchema.nullable().optional(),
23111
+ /** D706: set the switch, or `null` to clear it (back to the default, false). */
23112
+ notifyDuringEntryDelay: boolean().nullable().optional(),
23113
+ /** D706: set the switch, or `null` to clear it (back to the default, false). */
23114
+ notifySensorRewatched: boolean().nullable().optional()
23097
23115
  })).max(8).refine(uniqueModes, { message: "modeDelays: at most one edit per arm mode" });
23098
23116
  /** One switch of the alarm table: put ONE device on, or take it off, ONE mode's list. */
23099
23117
  var NcAlarmNonBlockingEditSchema = object({
@@ -27157,6 +27175,22 @@ var MotionSourceEnum = _enum([
27157
27175
  "device-activity"
27158
27176
  ]);
27159
27177
  /**
27178
+ * What opened an on-motion detection SESSION: the motion source that passed the
27179
+ * camera's `motionSources` gate, and what raised it (the camera itself, or a
27180
+ * sensor the operator attached — D672). `sensorName` is the attached sensor's
27181
+ * device name as the orchestrator's camera-sensors resolution last read it;
27182
+ * absent when unknown or when the camera itself triggered.
27183
+ *
27184
+ * Carried on the session attach ONLY so the runner's `DetectionPhaseTransition`
27185
+ * can say what started the session (D672 rule 11, amended 2026-10-06). The
27186
+ * runner never decides anything on it.
27187
+ */
27188
+ var SessionTriggerSchema = object({
27189
+ source: MotionSourceEnum,
27190
+ triggeredBy: MotionTriggeredBySchema,
27191
+ sensorName: string().optional()
27192
+ });
27193
+ /**
27160
27194
  * List of motion sources active on a camera. Empty array is valid:
27161
27195
  * "no source" — happens for battery cams without firmware motion when
27162
27196
  * the operator hasn't opted into the SW analyzer (would hold the
@@ -27408,6 +27442,14 @@ var RunnerCameraConfigSchema = object({
27408
27442
  */
27409
27443
  motionSources: MotionSourcesSchema.default(["analyzer"]),
27410
27444
  /**
27445
+ * What opened this attach, on a SESSION attach only (see
27446
+ * {@link SessionTriggerSchema}). OPTIONAL with no default: absent on a
27447
+ * standing attach, an occupancy burst, a re-dispatch with no motion event
27448
+ * behind it, and every attach from an orchestrator older than the field — the
27449
+ * runner then names no source on the phase event.
27450
+ */
27451
+ sessionTrigger: SessionTriggerSchema.optional(),
27452
+ /**
27411
27453
  * WHICH root detector runs for this camera. The detection counterpart of
27412
27454
  * {@link motionSources}, same shape and same discipline: a per-camera list
27413
27455
  * of sources the system understands, vendor-agnostic, owned here.
@@ -34298,7 +34340,7 @@ var LocalInterfaceSchema = object({
34298
34340
  name: string(),
34299
34341
  family: _enum(["IPv4", "IPv6"]),
34300
34342
  address: string(),
34301
- /** CIDR shorthand (e.g. `192.168.x.x/24`). Empty when OS doesn't expose. */
34343
+ /** CIDR shorthand (e.g. `192.168.10.10/24`). Empty when OS doesn't expose. */
34302
34344
  cidr: string(),
34303
34345
  /** OS netmask. Stable across calls so the SDK can hash on it. */
34304
34346
  netmask: string(),
@@ -34352,7 +34394,8 @@ var ConnectionEndpointSchema = object({
34352
34394
  "lan-ipv4",
34353
34395
  "lan-ipv6",
34354
34396
  "public",
34355
- "loopback"
34397
+ "loopback",
34398
+ "app-link"
34356
34399
  ]),
34357
34400
  /**
34358
34401
  * Originating-interface kind — `lan`/`wifi`/`docker`/`vpn`/`other`/
@@ -34421,15 +34464,27 @@ var GetConnectionEndpointsResultSchema = object({
34421
34464
  localPort: AdvertisedLocalPortSchema
34422
34465
  });
34423
34466
  /**
34424
- * The chosen outbound endpoint for notification artifacts. `baseUrl: null` =
34425
- * AUTO (resolved from the candidate ranking at send time); `resolved` reports
34426
- * what AUTO currently picks, so the UI can show the effective value either way.
34467
+ * The address flagged for notification links. `baseUrl: null` = AUTO, which
34468
+ * since D709 is the CamStack app link; `resolved` reports the effective value,
34469
+ * so the UI can show it either way.
34427
34470
  */
34428
34471
  var NotificationEndpointSchema = object({
34429
34472
  /** The operator's explicit choice, or null for AUTO. */
34430
34473
  baseUrl: string().nullable(),
34431
- /** What the ranking currently resolves to (null when nothing is reachable). */
34432
- resolved: string().nullable()
34474
+ /**
34475
+ * The effective flagged address: the explicit choice, else (AUTO) the
34476
+ * CamStack app link `https://camstack.zentik.app` (D709). A pre-D709 hub
34477
+ * answered the public tunnel / mesh here, or null.
34478
+ */
34479
+ resolved: string().nullable(),
34480
+ /**
34481
+ * The hub origin an app link carries as `hub=` (D709): the hub's best
34482
+ * public HTTPS address — the tunnel, then the mesh (Tailscale MagicDNS) —
34483
+ * picked from this cap's own palette by `pickAppLinkHub`. `null` when the
34484
+ * hub advertises neither; the app link is then minted without `hub=`.
34485
+ * Absent on a pre-D709 hub.
34486
+ */
34487
+ appLinkHub: string().nullable()
34433
34488
  });
34434
34489
  /**
34435
34490
  * The URLs the SDK / viewer should race for API access. `baseUrls` empty =
@@ -34483,7 +34538,11 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
34483
34538
  * Pass `'https'` when the caller is itself loaded over HTTPS
34484
34539
  * to avoid mixed-content blocks in the browser. The public
34485
34540
  * tunnel always emits `https://` regardless. */
34486
- scheme: _enum(["http", "https"]).optional()
34541
+ scheme: _enum(["http", "https"]).optional(),
34542
+ /** Append the CamStack app link entry (`kind: 'app-link'`, D709) —
34543
+ * an address notification links can be flagged with, not a hub
34544
+ * route. Default `false`: racers and rankers never see it. */
34545
+ includeAppLink: boolean().optional()
34487
34546
  }), GetConnectionEndpointsResultSchema), method(_void(), NotificationEndpointSchema), method(object({ baseUrl: string().nullable() }), NotificationEndpointSchema, { kind: "mutation" }), method(_void(), ViewerEndpointsSchema), method(object({ baseUrls: array(string()).readonly() }), ViewerEndpointsSchema, { kind: "mutation" }), method(_void(), AllowedAddressesSchema), method(AllowedAddressesSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), AllowedAddressesSchema, { kind: "mutation" }), method(_void(), TlsStatusSchema), method(object({ reason: string().optional() }), TlsStatusSchema, {
34488
34547
  kind: "mutation",
34489
34548
  auth: "admin"
@@ -34744,7 +34803,7 @@ var MeshPeerSchema = object({
34744
34803
  tags: array(string()).readonly(),
34745
34804
  /** True when the peer advertises itself as an exit-node candidate. */
34746
34805
  exitNodeOption: boolean(),
34747
- /** Subnet routes the peer advertises (e.g. `["192.168.x.x/24"]`). */
34806
+ /** Subnet routes the peer advertises (e.g. `["192.168.10.0/24"]`). */
34748
34807
  advertisedRoutes: array(string()).readonly(),
34749
34808
  /** Owner account login (e.g. `foo@example.com`). Null for tagged peers. */
34750
34809
  userLogin: string().nullable(),
@@ -52076,12 +52135,14 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
52076
52135
  {
52077
52136
  id: "addons",
52078
52137
  family: "system",
52079
- label: "Addons",
52080
- kinds: [
52081
- "addon-crash-loop",
52082
- "addon-update-available",
52083
- "addon-updated"
52084
- ]
52138
+ label: "Addons stopped",
52139
+ kinds: ["addon-crash-loop"]
52140
+ },
52141
+ {
52142
+ id: "addon-updates",
52143
+ family: "system",
52144
+ label: "Addon updates",
52145
+ kinds: ["addon-update-available", "addon-updated"]
52085
52146
  },
52086
52147
  {
52087
52148
  id: "updates",
@@ -52241,13 +52302,15 @@ var STATE_SUMMARY_SECTION_VARS = [
52241
52302
  },
52242
52303
  {
52243
52304
  name: "summaryAddons",
52244
- label: "Summary: addons",
52245
- example: "@camstack/addon-recorder 1.2.3 → 1.2.4",
52246
- kinds: [
52247
- "addon-crash-loop",
52248
- "addon-update-available",
52249
- "addon-updated"
52250
- ]
52305
+ label: "Summary: addons stopped",
52306
+ example: "hub — recorder stopped after repeated crashes",
52307
+ kinds: ["addon-crash-loop"]
52308
+ },
52309
+ {
52310
+ name: "summaryAddonUpdates",
52311
+ label: "Summary: addon updates",
52312
+ example: "hub:\n• @camstack/addon-recorder 1.2.3 → 1.2.4",
52313
+ kinds: ["addon-update-available", "addon-updated"]
52251
52314
  },
52252
52315
  {
52253
52316
  name: "summaryUpdates",
@@ -52331,6 +52394,7 @@ var STATE_SUMMARY_VARS = [
52331
52394
  [...RULE_BODY_ONLY],
52332
52395
  [...RULE_TEXT],
52333
52396
  ([...RULE_TEXT], [...DEVICE_EVENTS]),
52397
+ ([...RULE_TEXT], [...COMBINED_ALARM]),
52334
52398
  ([...RULE_TEXT], [...DEVICE_EVENTS]),
52335
52399
  ([...RULE_TEXT], [...BATTERY, ...CONSUMABLE]),
52336
52400
  ([...RULE_TEXT], [...CONSUMABLE]),
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_dist = require("../dist-BTBbIGSC.js");
5
+ const require_dist = require("../dist-BBZwYfSN.js");
6
6
  const require_lazy_sharp = require("../lazy-sharp-BuwKlQLR.js");
7
7
  let node_fs = require("node:fs");
8
8
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { Sn as hydrateSchema, ct as evaluateZoneRules, dn as DeviceType, kt as motionDetectionCapability, mn as BaseAddon } from "../dist-BuU8Y4o1.mjs";
1
+ import { Sn as hydrateSchema, ct as evaluateZoneRules, dn as DeviceType, kt as motionDetectionCapability, mn as BaseAddon } from "../dist-B9LnBPz9.mjs";
2
2
  import { t as getSharp } from "../lazy-sharp-DXsqwpph.mjs";
3
3
  import { readFileSync } from "node:fs";
4
4
  import { join } from "node:path";
@@ -1,4 +1,4 @@
1
- import { an as Fmp4BoxSplitter, fn as errMsg, ln as isSoftwareDecode, on as buildFfmpegArgs } from "./dist-BuU8Y4o1.mjs";
1
+ import { an as Fmp4BoxSplitter, fn as errMsg, ln as isSoftwareDecode, on as buildFfmpegArgs } from "./dist-B9LnBPz9.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import { realpathSync } from "node:fs";
4
4
  import path from "node:path";
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-emK7D4bc.js");
2
- const require_dist = require("./dist-BTBbIGSC.js");
2
+ const require_dist = require("./dist-BBZwYfSN.js");
3
3
  let node_crypto = require("node:crypto");
4
4
  let node_fs = require("node:fs");
5
5
  node_fs = require_chunk.__toESM(node_fs, 1);
@@ -3,9 +3,9 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../chunk-emK7D4bc.js");
6
- const require_dist = require("../dist-BTBbIGSC.js");
7
- const require_node = require("../node-UK2v2ZSw.js");
8
- const require_default_detection_model = require("../default-detection-model-WnGDQAQh.js");
6
+ const require_dist = require("../dist-BBZwYfSN.js");
7
+ const require_node = require("../node-mJQBUiEc.js");
8
+ const require_default_detection_model = require("../default-detection-model-CBIYdAJ5.js");
9
9
  const require_hub_hostname = require("../hub-hostname-DAJXlOgV.js");
10
10
  const require_lazy_sharp = require("../lazy-sharp-BuwKlQLR.js");
11
11
  const require_restream_intent = require("../restream-intent-7uDNqMKs.js");
@@ -5933,12 +5933,10 @@ var PipelineRunner = class {
5933
5933
  }, (registration.occupancyRecheckSec ?? 0) * 1e3);
5934
5934
  if (initialPhase === "active") {
5935
5935
  this.detectionStreamHandler?.(deviceId, "subscribe");
5936
- const cooldownMs = registration.motionCooldownMs ?? DEFAULT_MOTION_COOLDOWN_MS;
5937
5936
  this.config.onPhaseChanged?.(deviceId, "active", {
5938
- source: "analyzer",
5939
- regions: void 0,
5937
+ cause: "attach",
5940
5938
  timestamp: Date.now(),
5941
- cooldownMs
5939
+ ...registration.sessionTrigger !== void 0 ? { trigger: registration.sessionTrigger } : {}
5942
5940
  });
5943
5941
  }
5944
5942
  }
@@ -5953,7 +5951,13 @@ var PipelineRunner = class {
5953
5951
  clearInterval(state.occupancyTimer);
5954
5952
  state.occupancyTimer = null;
5955
5953
  }
5956
- if (state.phase === "active") this.detectionStreamHandler?.(deviceId, "unsubscribe");
5954
+ if (state.phase === "active") {
5955
+ this.detectionStreamHandler?.(deviceId, "unsubscribe");
5956
+ this.config.onPhaseChanged?.(deviceId, "watching", {
5957
+ cause: "detach",
5958
+ timestamp: Date.now()
5959
+ });
5960
+ }
5957
5961
  state.motionQueue.clear();
5958
5962
  this.discardQueuedDetectionFrames(deviceId, state, "detach");
5959
5963
  this.timingSampler.clearDroppedFramesSource(deviceId);
@@ -6324,6 +6328,7 @@ var PipelineRunner = class {
6324
6328
  });
6325
6329
  this.detectionStreamHandler?.(deviceId, "subscribe");
6326
6330
  this.config.onPhaseChanged?.(deviceId, "active", {
6331
+ cause: "motion",
6327
6332
  source,
6328
6333
  regions,
6329
6334
  timestamp: Date.now(),
@@ -6345,6 +6350,7 @@ var PipelineRunner = class {
6345
6350
  this.detectionStreamHandler?.(deviceId, "unsubscribe");
6346
6351
  const source = state.lastArmedSource ?? "analyzer";
6347
6352
  this.config.onPhaseChanged?.(deviceId, "watching", {
6353
+ cause: "motion",
6348
6354
  source,
6349
6355
  regions: void 0,
6350
6356
  timestamp: Date.now(),
@@ -7159,6 +7165,25 @@ var DETECTION_REDIAL_GIVEUP_WINDOW_MS = 6e4;
7159
7165
  * NOTHING — see D453 for what that costs and why it was not taken either.
7160
7166
  */
7161
7167
  /**
7168
+ * The source fields a `DetectionPhaseTransition` carries, per cause. A motion
7169
+ * transition: its source and cooldown. A session attach: the motion that opened
7170
+ * it, as the orchestrator dispatched it — absent when it sent none. A detach:
7171
+ * nothing.
7172
+ */
7173
+ function phaseTransitionSourceFields(meta) {
7174
+ if (meta.cause === "motion") return {
7175
+ source: meta.source,
7176
+ cooldownMs: meta.cooldownMs
7177
+ };
7178
+ if (meta.cause === "detach" || meta.trigger === void 0) return {};
7179
+ const { source, triggeredBy, sensorName } = meta.trigger;
7180
+ return {
7181
+ source,
7182
+ triggeredBy,
7183
+ ...sensorName !== void 0 ? { sensorName } : {}
7184
+ };
7185
+ }
7186
+ /**
7162
7187
  * Pure decision helper: returns `true` when a dynamic frame-diff analyzer
7163
7188
  * subscription should be opened for an onboard-motion camera.
7164
7189
  *
@@ -8714,6 +8739,7 @@ var PipelineRunnerAddon = class PipelineRunnerAddon extends require_dist.BaseAdd
8714
8739
  runner.registerCamera(config.deviceId, {
8715
8740
  detectionMode: config.detectionMode,
8716
8741
  ...config.detectionSources !== void 0 ? { detectionSources: config.detectionSources } : {},
8742
+ ...config.sessionTrigger !== void 0 ? { sessionTrigger: config.sessionTrigger } : {},
8717
8743
  ...require_default_detection_model.rootObjectGate(config.steps) !== void 0 ? { objectGate: require_default_detection_model.rootObjectGate(config.steps) } : {},
8718
8744
  fps: config.detectionFps,
8719
8745
  motionCooldownMs: config.motionCooldownMs,
@@ -10601,9 +10627,11 @@ var PipelineRunnerAddon = class PipelineRunnerAddon extends require_dist.BaseAdd
10601
10627
  * The phase is NOT the camera's motion and writes no `motion` runtime slice
10602
10628
  * (D696). Every on-motion detection session attaches `always-on`, so the
10603
10629
  * phase reads `active` for a whole session, and an always-on camera is
10604
- * `active` for as long as it is attached; a detach writes nothing at all.
10630
+ * `active` for as long as it is attached (`cause: 'attach'`), and returns to
10631
+ * `watching` on detach (`cause: 'detach'`) — neither names a motion source.
10605
10632
  * The slice it used to write was therefore "a session is attached", and was
10606
- * left `detected: true` after every session. The orchestrator is the only
10633
+ * left `detected: true` after every session (the detach close of the EVENT
10634
+ * did not exist either until 2026-10-06). The orchestrator is the only
10607
10635
  * writer of that slice, with the EFFECTIVE motion, and this runner says so
10608
10636
  * on `getLocalLoad().motionSliceWriter` so that it never writes the slice
10609
10637
  * while a runner older than D696 still does.
@@ -10617,8 +10645,8 @@ var PipelineRunnerAddon = class PipelineRunnerAddon extends require_dist.BaseAdd
10617
10645
  from: detected ? "watching" : "active",
10618
10646
  to: detected ? "active" : "watching",
10619
10647
  reason: detected ? "motion_detected" : "cooldown_expired",
10620
- source: meta.source,
10621
- cooldownMs: meta.cooldownMs,
10648
+ cause: meta.cause,
10649
+ ...phaseTransitionSourceFields(meta),
10622
10650
  timestamp: meta.timestamp
10623
10651
  };
10624
10652
  this.ctx.eventBus.emit(require_dist.createEvent(require_dist.EventCategory.DetectionPhaseTransition, {
@@ -11638,6 +11666,7 @@ exports.cameraOwnsMotionViaSensor = require_dist.cameraOwnsMotionViaSensor;
11638
11666
  exports.customActions = pipelineRunnerBenchActions;
11639
11667
  exports.default = PipelineRunnerAddon;
11640
11668
  exports.deriveDetailSteps = deriveDetailSteps;
11669
+ exports.phaseTransitionSourceFields = phaseTransitionSourceFields;
11641
11670
  exports.resolveMotionFrameSource = resolveMotionFrameSource;
11642
11671
  exports.resolveSessionDecodeHostname = resolveSessionDecodeHostname;
11643
11672
  exports.resolveSessionDecodeOwnerNodeId = resolveSessionDecodeOwnerNodeId;
@@ -1,6 +1,6 @@
1
- import { D as NativeLeaseAdmissionSchema, En as nodePin, Fn as lazy, In as literal, It as pipelineRunnerCapability, Ln as number, Mn as array, Nn as boolean, Nt as pickDetailCropConvention, O as NativeLeaseSettingsSchema, Pt as pickNativeLeaseOverride, Rn as object, Un as EventCategory, Vn as string, a as BackgroundRunRegistry, bn as defineCustomActions, bt as loadContributionCapability, fn as errMsg, ft as failureContributionCapability, g as DEFAULT_DETAIL_CROP_CONVENTION, jn as _enum, mn as BaseAddon, nt as deriveDetailCropRect, q as cameraOwnsMotionViaSensor, v as DEFAULT_NATIVE_LEASE_SETTINGS, vn as createEvent, w as FailureCounters, yn as customAction } from "../dist-BuU8Y4o1.mjs";
2
- import { i as NO_COST_CLAIM, t as ChildCostRegistry } from "../node-inZFYgkm.mjs";
3
- import { c as macroGateVerdict, d as isSessionDecodeReadGone, f as createSessionDecodeCoordinator, l as rootObjectGate, o as placeDetailStep, p as resolveFrameViewGeometry, r as CustomModelCatalog, s as stepsForElectedPool, u as localFrameRegistry, v as getStepDefinition } from "../default-detection-model-Bu4So71h.mjs";
1
+ import { D as NativeLeaseAdmissionSchema, En as nodePin, Fn as lazy, In as literal, It as pipelineRunnerCapability, Ln as number, Mn as array, Nn as boolean, Nt as pickDetailCropConvention, O as NativeLeaseSettingsSchema, Pt as pickNativeLeaseOverride, Rn as object, Un as EventCategory, Vn as string, a as BackgroundRunRegistry, bn as defineCustomActions, bt as loadContributionCapability, fn as errMsg, ft as failureContributionCapability, g as DEFAULT_DETAIL_CROP_CONVENTION, jn as _enum, mn as BaseAddon, nt as deriveDetailCropRect, q as cameraOwnsMotionViaSensor, v as DEFAULT_NATIVE_LEASE_SETTINGS, vn as createEvent, w as FailureCounters, yn as customAction } from "../dist-B9LnBPz9.mjs";
2
+ import { i as NO_COST_CLAIM, t as ChildCostRegistry } from "../node-Ci0E-0VP.mjs";
3
+ import { c as macroGateVerdict, d as isSessionDecodeReadGone, f as createSessionDecodeCoordinator, l as rootObjectGate, o as placeDetailStep, p as resolveFrameViewGeometry, r as CustomModelCatalog, s as stepsForElectedPool, u as localFrameRegistry, v as getStepDefinition } from "../default-detection-model-hql6BX9-.mjs";
4
4
  import { t as resolveHubHostname } from "../hub-hostname-cCknRYKj.mjs";
5
5
  import { t as getSharp } from "../lazy-sharp-DXsqwpph.mjs";
6
6
  import { c as withDetectionIntent, o as preRollRequestOf, t as DETECTION_PRE_ROLL_REQUEST_MS } from "../restream-intent-DyGmLAU9.mjs";
@@ -5925,12 +5925,10 @@ var PipelineRunner = class {
5925
5925
  }, (registration.occupancyRecheckSec ?? 0) * 1e3);
5926
5926
  if (initialPhase === "active") {
5927
5927
  this.detectionStreamHandler?.(deviceId, "subscribe");
5928
- const cooldownMs = registration.motionCooldownMs ?? DEFAULT_MOTION_COOLDOWN_MS;
5929
5928
  this.config.onPhaseChanged?.(deviceId, "active", {
5930
- source: "analyzer",
5931
- regions: void 0,
5929
+ cause: "attach",
5932
5930
  timestamp: Date.now(),
5933
- cooldownMs
5931
+ ...registration.sessionTrigger !== void 0 ? { trigger: registration.sessionTrigger } : {}
5934
5932
  });
5935
5933
  }
5936
5934
  }
@@ -5945,7 +5943,13 @@ var PipelineRunner = class {
5945
5943
  clearInterval(state.occupancyTimer);
5946
5944
  state.occupancyTimer = null;
5947
5945
  }
5948
- if (state.phase === "active") this.detectionStreamHandler?.(deviceId, "unsubscribe");
5946
+ if (state.phase === "active") {
5947
+ this.detectionStreamHandler?.(deviceId, "unsubscribe");
5948
+ this.config.onPhaseChanged?.(deviceId, "watching", {
5949
+ cause: "detach",
5950
+ timestamp: Date.now()
5951
+ });
5952
+ }
5949
5953
  state.motionQueue.clear();
5950
5954
  this.discardQueuedDetectionFrames(deviceId, state, "detach");
5951
5955
  this.timingSampler.clearDroppedFramesSource(deviceId);
@@ -6316,6 +6320,7 @@ var PipelineRunner = class {
6316
6320
  });
6317
6321
  this.detectionStreamHandler?.(deviceId, "subscribe");
6318
6322
  this.config.onPhaseChanged?.(deviceId, "active", {
6323
+ cause: "motion",
6319
6324
  source,
6320
6325
  regions,
6321
6326
  timestamp: Date.now(),
@@ -6337,6 +6342,7 @@ var PipelineRunner = class {
6337
6342
  this.detectionStreamHandler?.(deviceId, "unsubscribe");
6338
6343
  const source = state.lastArmedSource ?? "analyzer";
6339
6344
  this.config.onPhaseChanged?.(deviceId, "watching", {
6345
+ cause: "motion",
6340
6346
  source,
6341
6347
  regions: void 0,
6342
6348
  timestamp: Date.now(),
@@ -7151,6 +7157,25 @@ var DETECTION_REDIAL_GIVEUP_WINDOW_MS = 6e4;
7151
7157
  * NOTHING — see D453 for what that costs and why it was not taken either.
7152
7158
  */
7153
7159
  /**
7160
+ * The source fields a `DetectionPhaseTransition` carries, per cause. A motion
7161
+ * transition: its source and cooldown. A session attach: the motion that opened
7162
+ * it, as the orchestrator dispatched it — absent when it sent none. A detach:
7163
+ * nothing.
7164
+ */
7165
+ function phaseTransitionSourceFields(meta) {
7166
+ if (meta.cause === "motion") return {
7167
+ source: meta.source,
7168
+ cooldownMs: meta.cooldownMs
7169
+ };
7170
+ if (meta.cause === "detach" || meta.trigger === void 0) return {};
7171
+ const { source, triggeredBy, sensorName } = meta.trigger;
7172
+ return {
7173
+ source,
7174
+ triggeredBy,
7175
+ ...sensorName !== void 0 ? { sensorName } : {}
7176
+ };
7177
+ }
7178
+ /**
7154
7179
  * Pure decision helper: returns `true` when a dynamic frame-diff analyzer
7155
7180
  * subscription should be opened for an onboard-motion camera.
7156
7181
  *
@@ -8706,6 +8731,7 @@ var PipelineRunnerAddon = class PipelineRunnerAddon extends BaseAddon {
8706
8731
  runner.registerCamera(config.deviceId, {
8707
8732
  detectionMode: config.detectionMode,
8708
8733
  ...config.detectionSources !== void 0 ? { detectionSources: config.detectionSources } : {},
8734
+ ...config.sessionTrigger !== void 0 ? { sessionTrigger: config.sessionTrigger } : {},
8709
8735
  ...rootObjectGate(config.steps) !== void 0 ? { objectGate: rootObjectGate(config.steps) } : {},
8710
8736
  fps: config.detectionFps,
8711
8737
  motionCooldownMs: config.motionCooldownMs,
@@ -10593,9 +10619,11 @@ var PipelineRunnerAddon = class PipelineRunnerAddon extends BaseAddon {
10593
10619
  * The phase is NOT the camera's motion and writes no `motion` runtime slice
10594
10620
  * (D696). Every on-motion detection session attaches `always-on`, so the
10595
10621
  * phase reads `active` for a whole session, and an always-on camera is
10596
- * `active` for as long as it is attached; a detach writes nothing at all.
10622
+ * `active` for as long as it is attached (`cause: 'attach'`), and returns to
10623
+ * `watching` on detach (`cause: 'detach'`) — neither names a motion source.
10597
10624
  * The slice it used to write was therefore "a session is attached", and was
10598
- * left `detected: true` after every session. The orchestrator is the only
10625
+ * left `detected: true` after every session (the detach close of the EVENT
10626
+ * did not exist either until 2026-10-06). The orchestrator is the only
10599
10627
  * writer of that slice, with the EFFECTIVE motion, and this runner says so
10600
10628
  * on `getLocalLoad().motionSliceWriter` so that it never writes the slice
10601
10629
  * while a runner older than D696 still does.
@@ -10609,8 +10637,8 @@ var PipelineRunnerAddon = class PipelineRunnerAddon extends BaseAddon {
10609
10637
  from: detected ? "watching" : "active",
10610
10638
  to: detected ? "active" : "watching",
10611
10639
  reason: detected ? "motion_detected" : "cooldown_expired",
10612
- source: meta.source,
10613
- cooldownMs: meta.cooldownMs,
10640
+ cause: meta.cause,
10641
+ ...phaseTransitionSourceFields(meta),
10614
10642
  timestamp: meta.timestamp
10615
10643
  };
10616
10644
  this.ctx.eventBus.emit(createEvent(EventCategory.DetectionPhaseTransition, {
@@ -11620,4 +11648,4 @@ var PipelineRunnerAddon = class PipelineRunnerAddon extends BaseAddon {
11620
11648
  }
11621
11649
  };
11622
11650
  //#endregion
11623
- export { DEFAULT_CONFIG, FrameQueue, PipelineRunner, PipelineTimingSampler, Semaphore, acquireSessionDecodeRestreamFrom, cameraOwnsMotionViaSensor, pipelineRunnerBenchActions as customActions, PipelineRunnerAddon as default, deriveDetailSteps, resolveMotionFrameSource, resolveSessionDecodeHostname, resolveSessionDecodeOwnerNodeId, rgbFrameToGrayFrame, shouldStartOnboardAnalyzer };
11651
+ export { DEFAULT_CONFIG, FrameQueue, PipelineRunner, PipelineTimingSampler, Semaphore, acquireSessionDecodeRestreamFrom, cameraOwnsMotionViaSensor, pipelineRunnerBenchActions as customActions, PipelineRunnerAddon as default, deriveDetailSteps, phaseTransitionSourceFields, resolveMotionFrameSource, resolveSessionDecodeHostname, resolveSessionDecodeOwnerNodeId, rgbFrameToGrayFrame, shouldStartOnboardAnalyzer };
@@ -1,4 +1,4 @@
1
- import { jt as parseProcStatus } from "./dist-BuU8Y4o1.mjs";
1
+ import { jt as parseProcStatus } from "./dist-B9LnBPz9.mjs";
2
2
  import * as fs from "node:fs";
3
3
  import { execFile } from "node:child_process";
4
4
  //#region src/shared/node-topology-platform.ts
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-emK7D4bc.js");
2
- const require_dist = require("./dist-BTBbIGSC.js");
2
+ const require_dist = require("./dist-BBZwYfSN.js");
3
3
  let node_fs = require("node:fs");
4
4
  node_fs = require_chunk.__toESM(node_fs);
5
5
  let node_child_process = require("node:child_process");
@@ -3,8 +3,8 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../chunk-emK7D4bc.js");
6
- const require_dist = require("../dist-BTBbIGSC.js");
7
- const require_node = require("../node-UK2v2ZSw.js");
6
+ const require_dist = require("../dist-BBZwYfSN.js");
7
+ const require_node = require("../node-mJQBUiEc.js");
8
8
  const require_hub_hostname = require("../hub-hostname-DAJXlOgV.js");
9
9
  const require_restream_intent = require("../restream-intent-7uDNqMKs.js");
10
10
  const require_retire_root_keys = require("../retire-root-keys-Csb8z2f3.js");
@@ -8066,15 +8066,16 @@ function runShrinkFfmpeg(spawn, ffmpegPath, args) {
8066
8066
  return new Promise((resolve, reject) => {
8067
8067
  const proc = spawn(ffmpegPath, args);
8068
8068
  let stderr = "";
8069
- proc.stderr?.on("data", (chunk) => {
8070
- stderr += chunk.toString("utf8");
8069
+ proc.stderr?.on("data", (...emitted) => {
8070
+ const chunk = emitted[0];
8071
+ stderr += Buffer.isBuffer(chunk) ? chunk.toString("utf8") : String(chunk);
8071
8072
  });
8072
- proc.on("error", (...args) => {
8073
- const err = args[0];
8073
+ proc.on("error", (...emitted) => {
8074
+ const err = emitted[0];
8074
8075
  reject(err instanceof Error ? err : new Error(String(err)));
8075
8076
  });
8076
- proc.on("close", (...args) => {
8077
- const code = args[0];
8077
+ proc.on("close", (...emitted) => {
8078
+ const code = emitted[0];
8078
8079
  if (code === 0) {
8079
8080
  resolve();
8080
8081
  return;
@@ -1,5 +1,5 @@
1
- import { $t as stripRetiredBandPreBufferSec, An as sleep$1, B as VISIT_MERGE_GAP_MS, Bn as record, Bt as recordingExportCapability, C as ExportRecordSchema, Dt as migrateLegacyDeviceSignalConfig, En as nodePin, Et as memoizePinnedFfmpeg, F as RECORDING_SOURCE_CAMSTACK_ADDON, Gt as resolveLocationMode, I as RecordingConfigSchema, K as batteryCapability, L as RecordingSignalStatusSchema, Ln as number, Mn as array, N as RECORDING_EXPORT_MAX_READ_BYTES, Nn as boolean, Ot as modeMayWrite, P as RECORDING_SOURCE_CAMSTACK, Rn as object, Rt as recordingArchiveCapability, Sn as hydrateSchema, Tt as mayWriteToLocation, Un as EventCategory, Ut as resolveCreateExportSubject, Vn as string, Vt as recordingSignalCapability, X as clipExportFailureOf, Xt as storageEvictableCapability, Y as clipExportFailure, Zt as storageOccupancyCapability, _ as DEFAULT_EVENTS_BAND_BUFFER_SEC, b as EVENT_OWNER_TYPES, bn as defineCustomActions, bt as loadContributionCapability, dn as DeviceType, dt as exportSubjectOf, fn as errMsg$1, jn as _enum, k as OpsLogEntrySchema, kn as selectAssignedProfileSlots, lt as evictionPolicyForMode, mn as BaseAddon, mt as gbToBytes, o as BatteryStatusSchema, qt as resolveRecordingProfiles, rt as deriveRecordingMode, s as CLIP_BROKER_PACED_RATES, sn as evaluateSensorEdge, tn as videoclipsCapability, tt as deriveBatteryPresence, un as DeviceFeature, ut as evictionPolicyOfLocation, wt as mayReadLocation, x as EVENT_PAD_MS, yn as customAction, yt as isFirstLevelMacroClass, z as VIDEOCLIPS_MAX_OFFER_BYTES, zn as preprocess, zt as recordingCapability } from "../dist-BuU8Y4o1.mjs";
2
- import { a as physicalRootOf, i as NO_COST_CLAIM, t as ChildCostRegistry } from "../node-inZFYgkm.mjs";
1
+ import { $t as stripRetiredBandPreBufferSec, An as sleep$1, B as VISIT_MERGE_GAP_MS, Bn as record, Bt as recordingExportCapability, C as ExportRecordSchema, Dt as migrateLegacyDeviceSignalConfig, En as nodePin, Et as memoizePinnedFfmpeg, F as RECORDING_SOURCE_CAMSTACK_ADDON, Gt as resolveLocationMode, I as RecordingConfigSchema, K as batteryCapability, L as RecordingSignalStatusSchema, Ln as number, Mn as array, N as RECORDING_EXPORT_MAX_READ_BYTES, Nn as boolean, Ot as modeMayWrite, P as RECORDING_SOURCE_CAMSTACK, Rn as object, Rt as recordingArchiveCapability, Sn as hydrateSchema, Tt as mayWriteToLocation, Un as EventCategory, Ut as resolveCreateExportSubject, Vn as string, Vt as recordingSignalCapability, X as clipExportFailureOf, Xt as storageEvictableCapability, Y as clipExportFailure, Zt as storageOccupancyCapability, _ as DEFAULT_EVENTS_BAND_BUFFER_SEC, b as EVENT_OWNER_TYPES, bn as defineCustomActions, bt as loadContributionCapability, dn as DeviceType, dt as exportSubjectOf, fn as errMsg$1, jn as _enum, k as OpsLogEntrySchema, kn as selectAssignedProfileSlots, lt as evictionPolicyForMode, mn as BaseAddon, mt as gbToBytes, o as BatteryStatusSchema, qt as resolveRecordingProfiles, rt as deriveRecordingMode, s as CLIP_BROKER_PACED_RATES, sn as evaluateSensorEdge, tn as videoclipsCapability, tt as deriveBatteryPresence, un as DeviceFeature, ut as evictionPolicyOfLocation, wt as mayReadLocation, x as EVENT_PAD_MS, yn as customAction, yt as isFirstLevelMacroClass, z as VIDEOCLIPS_MAX_OFFER_BYTES, zn as preprocess, zt as recordingCapability } from "../dist-B9LnBPz9.mjs";
2
+ import { a as physicalRootOf, i as NO_COST_CLAIM, t as ChildCostRegistry } from "../node-Ci0E-0VP.mjs";
3
3
  import { t as resolveHubHostname } from "../hub-hostname-cCknRYKj.mjs";
4
4
  import { d as PREBUFFER_MAX_MS, l as withRecordingIntent, r as RECORDING_PRE_ROLL_REQUEST_MS } from "../restream-intent-DyGmLAU9.mjs";
5
5
  import { n as RowMapStore, t as retireRootKeys } from "../retire-root-keys-DZvlso2l.mjs";
@@ -8058,15 +8058,16 @@ function runShrinkFfmpeg(spawn, ffmpegPath, args) {
8058
8058
  return new Promise((resolve, reject) => {
8059
8059
  const proc = spawn(ffmpegPath, args);
8060
8060
  let stderr = "";
8061
- proc.stderr?.on("data", (chunk) => {
8062
- stderr += chunk.toString("utf8");
8061
+ proc.stderr?.on("data", (...emitted) => {
8062
+ const chunk = emitted[0];
8063
+ stderr += Buffer.isBuffer(chunk) ? chunk.toString("utf8") : String(chunk);
8063
8064
  });
8064
- proc.on("error", (...args) => {
8065
- const err = args[0];
8065
+ proc.on("error", (...emitted) => {
8066
+ const err = emitted[0];
8066
8067
  reject(err instanceof Error ? err : new Error(String(err)));
8067
8068
  });
8068
- proc.on("close", (...args) => {
8069
- const code = args[0];
8069
+ proc.on("close", (...emitted) => {
8070
+ const code = emitted[0];
8070
8071
  if (code === 0) {
8071
8072
  resolve();
8072
8073
  return;
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-emK7D4bc.js");
2
- const require_dist = require("./dist-BTBbIGSC.js");
2
+ const require_dist = require("./dist-BBZwYfSN.js");
3
3
  let node_child_process = require("node:child_process");
4
4
  //#region src/stream-broker/recorded/avcc-annexb.ts
5
5
  /**
@@ -1,5 +1,5 @@
1
1
  import { r as __toESM, t as __commonJSMin } from "./chunk-DnnnRqeS.mjs";
2
- import { fn as errMsg } from "./dist-BuU8Y4o1.mjs";
2
+ import { fn as errMsg } from "./dist-B9LnBPz9.mjs";
3
3
  import { spawn } from "node:child_process";
4
4
  //#region src/stream-broker/recorded/avcc-annexb.ts
5
5
  /**
@@ -1,7 +1,7 @@
1
1
  import { a as e, c as t, d as n, f as r, i, l as a, n as o, o as s, p as c, r as l, s as u, t as d, u as f } from "./_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-BpXPNINd.mjs";
2
2
  import { a as p, i as m, n as h, o as g, r as _, t as v } from "./_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare__react__loadShare__.js-C9j-2lBe.mjs";
3
3
  import { n as y, r as b, t as x } from "./_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-XO0-Pyu6.mjs";
4
- import { t as S } from "./_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-NkeMtp-v.mjs";
4
+ import { t as S } from "./_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BDGzcgLP.mjs";
5
5
  import { n as C, t as w } from "./_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-BO7TIbJV.mjs";
6
6
  //#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
7
7
  var T = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), E = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), D = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), O = (e) => {
@@ -3,7 +3,7 @@ import "./dist-CYZr2fwk.mjs";
3
3
  var e = {
4
4
  "@camstack/sdk": {
5
5
  name: "@camstack/sdk",
6
- version: "1.2.120",
6
+ version: "1.2.121",
7
7
  scope: ["default"],
8
8
  loaded: !1,
9
9
  from: "addon_stream_broker_widgets",
@@ -18,7 +18,7 @@ var e = {
18
18
  },
19
19
  "@camstack/types": {
20
20
  name: "@camstack/types",
21
- version: "1.2.304",
21
+ version: "1.2.305",
22
22
  scope: ["default"],
23
23
  loaded: !1,
24
24
  from: "addon_stream_broker_widgets",
@@ -33,7 +33,7 @@ var e = {
33
33
  },
34
34
  "@camstack/ui-library": {
35
35
  name: "@camstack/ui-library",
36
- version: "1.2.231",
36
+ version: "1.2.232",
37
37
  scope: ["default"],
38
38
  loaded: !1,
39
39
  from: "addon_stream_broker_widgets",