@camstack/addon-pipeline 1.2.77 → 1.2.78

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 (29) hide show
  1. package/dist/{addon-utils-bZcwLaVW.js → addon-utils-C-XbUkiG.js} +1 -1
  2. package/dist/audio-analyzer/index.js +2 -2
  3. package/dist/audio-analyzer/index.mjs +1 -1
  4. package/dist/detection-pipeline/index.js +4 -4
  5. package/dist/detection-pipeline/index.mjs +2 -2
  6. package/dist/{dist-DQZzL0Ri.js → dist-BdVCXl5n.js} +74 -5
  7. package/dist/{dist-HhcoV-Ky.mjs → dist-CsP_DikG.mjs} +74 -5
  8. package/dist/{event-loop-stall-monitor-CBOo1oh_.js → event-loop-stall-monitor-BOu8lGee.js} +1 -1
  9. package/dist/{event-loop-stall-monitor-CqBEWGSZ.mjs → event-loop-stall-monitor-C3cvE_Xk.mjs} +1 -1
  10. package/dist/{lazy-sharp-DIC1rpea.js → lazy-sharp-1LkmyWqV.js} +1 -1
  11. package/dist/motion-wasm/index.js +2 -2
  12. package/dist/motion-wasm/index.mjs +1 -1
  13. package/dist/pipeline-runner/index.js +4 -4
  14. package/dist/pipeline-runner/index.mjs +3 -3
  15. package/dist/recorder/index.js +293 -34
  16. package/dist/recorder/index.mjs +292 -33
  17. package/dist/session-decode/decode-worker-child.js +2 -2
  18. package/dist/session-decode/decode-worker-child.mjs +1 -1
  19. package/dist/stream-broker/_stub.js +1 -1
  20. package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-De_xzvjU.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-DUi-lR4R.mjs} +1 -1
  21. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-1QMyGZMB.mjs +26 -0
  22. package/dist/stream-broker/{hostInit-CDS5frmk.mjs → hostInit-DEtsjgBO.mjs} +1 -1
  23. package/dist/stream-broker/index.js +106 -23
  24. package/dist/stream-broker/index.mjs +106 -23
  25. package/dist/stream-broker/remoteEntry.js +1 -1
  26. package/dist/{worker-protocol-DZVGVAPU.js → worker-protocol-B4fPjmXk.js} +1 -1
  27. package/dist/{worker-protocol-BNlLGLBV.mjs → worker-protocol-BRwzX3f_.mjs} +1 -1
  28. package/package.json +1 -1
  29. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DHJSxHH1.mjs +0 -26
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-DQZzL0Ri.js");
1
+ const require_dist = require("./dist-BdVCXl5n.js");
2
2
  require("node:crypto");
3
3
  let node_path = require("node:path");
4
4
  node_path = require_dist.__toESM(node_path, 1);
@@ -2,9 +2,9 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_dist = require("../dist-DQZzL0Ri.js");
5
+ const require_dist = require("../dist-BdVCXl5n.js");
6
6
  const require_node_topology_platform = require("../node-topology-platform-CFZ7F4xW.js");
7
- const require_addon_utils = require("../addon-utils-bZcwLaVW.js");
7
+ const require_addon_utils = require("../addon-utils-C-XbUkiG.js");
8
8
  let node_path = require("node:path");
9
9
  node_path = require_dist.__toESM(node_path);
10
10
  let node_fs = require("node:fs");
@@ -1,5 +1,5 @@
1
1
  import { n as __require } from "../chunk-DnnnRqeS.mjs";
2
- import { B as mapAudioLabelToMacro, E as audioAnalyzerCapability, T as audioAnalysisCapability, ft as hydrateSchema, m as HF_BASE_URL, n as AUDIO_BACKEND_CHOICES, o as DEFAULT_AUDIO_ANALYZER_CONFIG, st as BaseAddon, tt as errMsg } from "../dist-HhcoV-Ky.mjs";
2
+ import { B as mapAudioLabelToMacro, E as audioAnalyzerCapability, T as audioAnalysisCapability, ft as hydrateSchema, m as HF_BASE_URL, n as AUDIO_BACKEND_CHOICES, o as DEFAULT_AUDIO_ANALYZER_CONFIG, st as BaseAddon, tt as errMsg } from "../dist-CsP_DikG.mjs";
3
3
  import { t as pickNodePlatformArch } from "../node-topology-platform-BkR_k6WT.mjs";
4
4
  import { i as downloadFile } from "../addon-utils-A2S9D7pu.mjs";
5
5
  import * as path$1 from "node:path";
@@ -2,11 +2,11 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_dist = require("../dist-DQZzL0Ri.js");
6
- const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-CBOo1oh_.js");
7
- const require_lazy_sharp = require("../lazy-sharp-DIC1rpea.js");
5
+ const require_dist = require("../dist-BdVCXl5n.js");
6
+ const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-BOu8lGee.js");
7
+ const require_lazy_sharp = require("../lazy-sharp-1LkmyWqV.js");
8
8
  const require_node_topology_platform = require("../node-topology-platform-CFZ7F4xW.js");
9
- const require_addon_utils = require("../addon-utils-bZcwLaVW.js");
9
+ const require_addon_utils = require("../addon-utils-C-XbUkiG.js");
10
10
  let sharp = require("sharp");
11
11
  sharp = require_dist.__toESM(sharp);
12
12
  let node_child_process = require("node:child_process");
@@ -1,6 +1,6 @@
1
1
  import { n as __require } from "../chunk-DnnnRqeS.mjs";
2
- import { $ as supportedRuntimes$1, A as defaultDeviceFor$1, At as string, C as YAMNET_TO_MACRO, G as pipelineExecutorCapability, L as enumerateInferenceDevices, Mt as EventCategory, Ot as object, P as detectionPipelineCapability, R as evaluateZoneRules, St as array, X as runtimeDevices$1, _t as parseJsonUnknown, bt as sleep, dt as createEvent, ft as hydrateSchema, gt as nodePin, jt as union, st as BaseAddon, t as APPLE_SA_TO_MACRO, tt as errMsg, u as DEVICE_BACKEND_TO_FORMAT } from "../dist-HhcoV-Ky.mjs";
3
- import { a as getDefaultModelForFormat, c as getStepDefinition, i as ALL_STEPS, l as resolveModelForFormat, n as startEventLoopStallMonitor, o as getDefaultModelForFormatFromDef, r as ALL_PIPELINE_STEPS, s as getStep } from "../event-loop-stall-monitor-CqBEWGSZ.mjs";
2
+ import { $ as supportedRuntimes$1, A as defaultDeviceFor$1, At as string, C as YAMNET_TO_MACRO, G as pipelineExecutorCapability, L as enumerateInferenceDevices, Mt as EventCategory, Ot as object, P as detectionPipelineCapability, R as evaluateZoneRules, St as array, X as runtimeDevices$1, _t as parseJsonUnknown, bt as sleep, dt as createEvent, ft as hydrateSchema, gt as nodePin, jt as union, st as BaseAddon, t as APPLE_SA_TO_MACRO, tt as errMsg, u as DEVICE_BACKEND_TO_FORMAT } from "../dist-CsP_DikG.mjs";
3
+ import { a as getDefaultModelForFormat, c as getStepDefinition, i as ALL_STEPS, l as resolveModelForFormat, n as startEventLoopStallMonitor, o as getDefaultModelForFormatFromDef, r as ALL_PIPELINE_STEPS, s as getStep } from "../event-loop-stall-monitor-C3cvE_Xk.mjs";
4
4
  import { t as getSharp } from "../lazy-sharp-6oymT_yf.mjs";
5
5
  import { t as pickNodePlatformArch } from "../node-topology-platform-BkR_k6WT.mjs";
6
6
  import { a as ensureModel, o as isModelDownloaded, r as deleteModelFromDisk } from "../addon-utils-A2S9D7pu.mjs";
@@ -16245,13 +16245,81 @@ var NcRuleActionsSchema = object({
16245
16245
  */
16246
16246
  buttons: array(NcRuleNotificationButtonSchema).max(8).optional()
16247
16247
  });
16248
+ /**
16249
+ * "This rule applies only while `deviceId` is in one of `states`."
16250
+ *
16251
+ * The states are the DEVICE's own vocabulary — `AlarmState` for a panel,
16252
+ * `on`/`off` for a switch — not a normalised set, because normalising would
16253
+ * make the condition lie about devices whose states have no equivalent.
16254
+ *
16255
+ * An unreadable state does NOT match: see the engine's fail-closed gate. A
16256
+ * condition that fired on "I could not read it" would be worse than no gate.
16257
+ */
16258
+ var NcDeviceStateConditionSchema = object({
16259
+ deviceId: number().int(),
16260
+ /** Any of these matches. */
16261
+ states: array(string().min(1)).min(1)
16262
+ });
16263
+ /**
16264
+ * "This rule applies only while scene `sceneId` is `matched` / `diverged`."
16265
+ *
16266
+ * A GATE, not a trigger. `occupancy` and `audio` each DISCRIMINATE their rule —
16267
+ * carrying one makes the rule fire on that subject and nothing else. Scene is
16268
+ * the other shape entirely, the `deviceState` shape: it narrows a rule that
16269
+ * already has a trigger ("tell me about a person at the front door, but only
16270
+ * while the bin is still out"). That is why it composes with every delivery
16271
+ * instead of owning one, and why no new `NcDelivery` member and no new subject
16272
+ * kind exist for it — see D159.
16273
+ *
16274
+ * ── Identity ───────────────────────────────────────────────────────────────
16275
+ * `sceneId` is `SceneMonitor.id`, a `randomUUID()` minted by `createScene` —
16276
+ * globally unique, so it needs no device to disambiguate it. `deviceId` is
16277
+ * carried as a HINT for the editor and for the log line, never as part of the
16278
+ * lookup key: a rule whose hint drifted must still gate correctly.
16279
+ *
16280
+ * ── Which boolean ──────────────────────────────────────────────────────────
16281
+ * `latched` ABSENT means "whatever the scene itself says" — `SceneMonitor.emit`
16282
+ * already declares which boolean drives notification rules, and a second knob
16283
+ * that could disagree with it is exactly the D62 failure. Set it only to
16284
+ * override one rule against the scene's own default.
16285
+ *
16286
+ * - LIVE reading (`emit`/`latched` resolve to live): passes iff
16287
+ * `verdict === requiredState`. `unknown` — no reference for this light, view
16288
+ * shifted, no snapshot — passes NEITHER. A scene that cannot judge is not
16289
+ * evidence, in either direction.
16290
+ * - LATCHED reading: passes iff `latched === (requiredState === 'diverged')`.
16291
+ * The latch is a durable fact about the past ("it has diverged since I armed
16292
+ * it"), so a camera that has gone dark does not clear it — that is the whole
16293
+ * reason the operator asked for a latch.
16294
+ *
16295
+ * The gate reads an in-memory mirror (`NcSceneStateCache`) refreshed OFF the
16296
+ * event path, never the cap: D49. A mirror that has never loaded, or a scene it
16297
+ * does not carry, reads absent and the rule does NOT fire — fail closed, and
16298
+ * said out loud in the log rather than dropped in silence.
16299
+ */
16300
+ var NcSceneConditionSchema = object({
16301
+ /** `SceneMonitor.id` — the uuid the cap mints. The whole lookup key. */
16302
+ sceneId: string().min(1),
16303
+ /** The camera the scene lives on. A hint for the editor and the log line. */
16304
+ deviceId: number().int().optional(),
16305
+ /** The state the scene must be in for the rule to fire. */
16306
+ requiredState: _enum(["matched", "diverged"]),
16307
+ /**
16308
+ * Read the LATCH (`true`) or the LIVE verdict (`false`). Absent = follow the
16309
+ * scene's own `emit` field, which is the only place that decision belongs.
16310
+ */
16311
+ latched: boolean().optional()
16312
+ });
16248
16313
  var NcConditionsSchema = object({
16249
16314
  /** Gate on ANOTHER device's current state (the alarm armed, a switch on). */
16250
- deviceState: object({
16251
- deviceId: number().int(),
16252
- /** Any of these matches. */
16253
- states: array(string().min(1)).min(1)
16254
- }).optional(),
16315
+ deviceState: NcDeviceStateConditionSchema.optional(),
16316
+ /**
16317
+ * Gate on a SCENE's state — "only while the bin is still out". Composes with
16318
+ * every trigger (detection, occupancy, audio, sensor, package, track-end);
16319
+ * unlike `occupancy`/`audio` it discriminates nothing. See
16320
+ * {@link NcSceneCondition} and D159.
16321
+ */
16322
+ scene: NcSceneConditionSchema.optional(),
16255
16323
  /** Device scope — absent = all devices. */
16256
16324
  devices: array(number()).optional(),
16257
16325
  /** Detector class names (any overlap with the record's class set). */
@@ -16889,6 +16957,7 @@ var NcConditionDescriptorSchema = object({
16889
16957
  "occupancy",
16890
16958
  "audio",
16891
16959
  "deviceState",
16960
+ "scene",
16892
16961
  "systemEvent"
16893
16962
  ]),
16894
16963
  operator: _enum([
@@ -16222,13 +16222,81 @@ var NcRuleActionsSchema = object({
16222
16222
  */
16223
16223
  buttons: array(NcRuleNotificationButtonSchema).max(8).optional()
16224
16224
  });
16225
+ /**
16226
+ * "This rule applies only while `deviceId` is in one of `states`."
16227
+ *
16228
+ * The states are the DEVICE's own vocabulary — `AlarmState` for a panel,
16229
+ * `on`/`off` for a switch — not a normalised set, because normalising would
16230
+ * make the condition lie about devices whose states have no equivalent.
16231
+ *
16232
+ * An unreadable state does NOT match: see the engine's fail-closed gate. A
16233
+ * condition that fired on "I could not read it" would be worse than no gate.
16234
+ */
16235
+ var NcDeviceStateConditionSchema = object({
16236
+ deviceId: number().int(),
16237
+ /** Any of these matches. */
16238
+ states: array(string().min(1)).min(1)
16239
+ });
16240
+ /**
16241
+ * "This rule applies only while scene `sceneId` is `matched` / `diverged`."
16242
+ *
16243
+ * A GATE, not a trigger. `occupancy` and `audio` each DISCRIMINATE their rule —
16244
+ * carrying one makes the rule fire on that subject and nothing else. Scene is
16245
+ * the other shape entirely, the `deviceState` shape: it narrows a rule that
16246
+ * already has a trigger ("tell me about a person at the front door, but only
16247
+ * while the bin is still out"). That is why it composes with every delivery
16248
+ * instead of owning one, and why no new `NcDelivery` member and no new subject
16249
+ * kind exist for it — see D159.
16250
+ *
16251
+ * ── Identity ───────────────────────────────────────────────────────────────
16252
+ * `sceneId` is `SceneMonitor.id`, a `randomUUID()` minted by `createScene` —
16253
+ * globally unique, so it needs no device to disambiguate it. `deviceId` is
16254
+ * carried as a HINT for the editor and for the log line, never as part of the
16255
+ * lookup key: a rule whose hint drifted must still gate correctly.
16256
+ *
16257
+ * ── Which boolean ──────────────────────────────────────────────────────────
16258
+ * `latched` ABSENT means "whatever the scene itself says" — `SceneMonitor.emit`
16259
+ * already declares which boolean drives notification rules, and a second knob
16260
+ * that could disagree with it is exactly the D62 failure. Set it only to
16261
+ * override one rule against the scene's own default.
16262
+ *
16263
+ * - LIVE reading (`emit`/`latched` resolve to live): passes iff
16264
+ * `verdict === requiredState`. `unknown` — no reference for this light, view
16265
+ * shifted, no snapshot — passes NEITHER. A scene that cannot judge is not
16266
+ * evidence, in either direction.
16267
+ * - LATCHED reading: passes iff `latched === (requiredState === 'diverged')`.
16268
+ * The latch is a durable fact about the past ("it has diverged since I armed
16269
+ * it"), so a camera that has gone dark does not clear it — that is the whole
16270
+ * reason the operator asked for a latch.
16271
+ *
16272
+ * The gate reads an in-memory mirror (`NcSceneStateCache`) refreshed OFF the
16273
+ * event path, never the cap: D49. A mirror that has never loaded, or a scene it
16274
+ * does not carry, reads absent and the rule does NOT fire — fail closed, and
16275
+ * said out loud in the log rather than dropped in silence.
16276
+ */
16277
+ var NcSceneConditionSchema = object({
16278
+ /** `SceneMonitor.id` — the uuid the cap mints. The whole lookup key. */
16279
+ sceneId: string().min(1),
16280
+ /** The camera the scene lives on. A hint for the editor and the log line. */
16281
+ deviceId: number().int().optional(),
16282
+ /** The state the scene must be in for the rule to fire. */
16283
+ requiredState: _enum(["matched", "diverged"]),
16284
+ /**
16285
+ * Read the LATCH (`true`) or the LIVE verdict (`false`). Absent = follow the
16286
+ * scene's own `emit` field, which is the only place that decision belongs.
16287
+ */
16288
+ latched: boolean().optional()
16289
+ });
16225
16290
  var NcConditionsSchema = object({
16226
16291
  /** Gate on ANOTHER device's current state (the alarm armed, a switch on). */
16227
- deviceState: object({
16228
- deviceId: number().int(),
16229
- /** Any of these matches. */
16230
- states: array(string().min(1)).min(1)
16231
- }).optional(),
16292
+ deviceState: NcDeviceStateConditionSchema.optional(),
16293
+ /**
16294
+ * Gate on a SCENE's state — "only while the bin is still out". Composes with
16295
+ * every trigger (detection, occupancy, audio, sensor, package, track-end);
16296
+ * unlike `occupancy`/`audio` it discriminates nothing. See
16297
+ * {@link NcSceneCondition} and D159.
16298
+ */
16299
+ scene: NcSceneConditionSchema.optional(),
16232
16300
  /** Device scope — absent = all devices. */
16233
16301
  devices: array(number()).optional(),
16234
16302
  /** Detector class names (any overlap with the record's class set). */
@@ -16866,6 +16934,7 @@ var NcConditionDescriptorSchema = object({
16866
16934
  "occupancy",
16867
16935
  "audio",
16868
16936
  "deviceState",
16937
+ "scene",
16869
16938
  "systemEvent"
16870
16939
  ]),
16871
16940
  operator: _enum([
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-DQZzL0Ri.js");
1
+ const require_dist = require("./dist-BdVCXl5n.js");
2
2
  let node_perf_hooks = require("node:perf_hooks");
3
3
  //#region src/detection-pipeline/registry/model-catalogs.ts
4
4
  var HF_REPO = "camstack/camstack-models";
@@ -1,4 +1,4 @@
1
- import { a as COCO_TO_MACRO, i as COCO_80_LABELS, r as AUDIO_MACRO_LABELS, z as hfModelUrl } from "./dist-HhcoV-Ky.mjs";
1
+ import { a as COCO_TO_MACRO, i as COCO_80_LABELS, r as AUDIO_MACRO_LABELS, z as hfModelUrl } from "./dist-CsP_DikG.mjs";
2
2
  import { PerformanceObserver } from "node:perf_hooks";
3
3
  //#region src/detection-pipeline/registry/model-catalogs.ts
4
4
  var HF_REPO = "camstack/camstack-models";
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-DQZzL0Ri.js");
1
+ const require_dist = require("./dist-BdVCXl5n.js");
2
2
  let node_url = require("node:url");
3
3
  let node_module = require("node:module");
4
4
  let node_path = require("node:path");
@@ -2,8 +2,8 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_dist = require("../dist-DQZzL0Ri.js");
6
- const require_lazy_sharp = require("../lazy-sharp-DIC1rpea.js");
5
+ const require_dist = require("../dist-BdVCXl5n.js");
6
+ const require_lazy_sharp = require("../lazy-sharp-1LkmyWqV.js");
7
7
  let node_path = require("node:path");
8
8
  let node_fs = require("node:fs");
9
9
  //#region src/motion-wasm/wasm-motion-detector.ts
@@ -1,4 +1,4 @@
1
- import { H as motionDetectionCapability, R as evaluateZoneRules, ft as hydrateSchema, st as BaseAddon, ut as DeviceType } from "../dist-HhcoV-Ky.mjs";
1
+ import { H as motionDetectionCapability, R as evaluateZoneRules, ft as hydrateSchema, st as BaseAddon, ut as DeviceType } from "../dist-CsP_DikG.mjs";
2
2
  import { t as getSharp } from "../lazy-sharp-6oymT_yf.mjs";
3
3
  import { join } from "node:path";
4
4
  import { readFileSync } from "node:fs";
@@ -2,11 +2,11 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_dist = require("../dist-DQZzL0Ri.js");
6
- const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-CBOo1oh_.js");
7
- const require_worker_protocol = require("../worker-protocol-DZVGVAPU.js");
5
+ const require_dist = require("../dist-BdVCXl5n.js");
6
+ const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-BOu8lGee.js");
7
+ const require_worker_protocol = require("../worker-protocol-B4fPjmXk.js");
8
8
  const require_hub_hostname = require("../hub-hostname-DAJXlOgV.js");
9
- const require_lazy_sharp = require("../lazy-sharp-DIC1rpea.js");
9
+ const require_lazy_sharp = require("../lazy-sharp-1LkmyWqV.js");
10
10
  const require_remote_restream = require("../remote-restream-BYbAsgUf.js");
11
11
  let sharp = require("sharp");
12
12
  sharp = require_dist.__toESM(sharp);
@@ -1,6 +1,6 @@
1
- import { At as string, Ct as boolean, Dt as number, Et as literal, K as pipelineRunnerCapability, M as deriveDetailCropRect, Mt as EventCategory, Ot as object, St as array, Tt as lazy, U as pickDetailCropConvention, W as pickNativeLeaseOverride, dt as createEvent, gt as nodePin, j as defineCustomActions, k as customAction, s as DEFAULT_DETAIL_CROP_CONVENTION, st as BaseAddon, tt as errMsg, u as DEVICE_BACKEND_TO_FORMAT, xt as _enum } from "../dist-HhcoV-Ky.mjs";
2
- import { c as getStepDefinition, t as attributeStall } from "../event-loop-stall-monitor-CqBEWGSZ.mjs";
3
- import { a as nativeLeaseSettingEnv, t as isWorkerReply } from "../worker-protocol-BNlLGLBV.mjs";
1
+ import { At as string, Ct as boolean, Dt as number, Et as literal, K as pipelineRunnerCapability, M as deriveDetailCropRect, Mt as EventCategory, Ot as object, St as array, Tt as lazy, U as pickDetailCropConvention, W as pickNativeLeaseOverride, dt as createEvent, gt as nodePin, j as defineCustomActions, k as customAction, s as DEFAULT_DETAIL_CROP_CONVENTION, st as BaseAddon, tt as errMsg, u as DEVICE_BACKEND_TO_FORMAT, xt as _enum } from "../dist-CsP_DikG.mjs";
2
+ import { c as getStepDefinition, t as attributeStall } from "../event-loop-stall-monitor-C3cvE_Xk.mjs";
3
+ import { a as nativeLeaseSettingEnv, t as isWorkerReply } from "../worker-protocol-BRwzX3f_.mjs";
4
4
  import { t as resolveHubHostname } from "../hub-hostname-cCknRYKj.mjs";
5
5
  import { t as getSharp } from "../lazy-sharp-6oymT_yf.mjs";
6
6
  import { i as withDetectionIntent, n as profileForStreamId, t as isRemoteRestream } from "../remote-restream-Ci7RXNGb.mjs";