@camstack/addon-terminal 0.1.120 → 0.1.121

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/addon.js CHANGED
@@ -7882,13 +7882,37 @@ var CameraSwitchGroupSchema = object({
7882
7882
  fetchedAt: number()
7883
7883
  });
7884
7884
  /**
7885
- * The wrapper capability each wrapper-backed switch controls. Named constants
7886
- * because the same strings appear in `legacy-migrations.ts`, in
7887
- * `isCapActiveForDevice` call sites and in the fake harness — a typo in any of
7888
- * them is a switch that silently writes a binding nobody reads.
7885
+ * Every analyser a camera CamStack BUILDS is created with switched off.
7886
+ *
7887
+ * A grid and a Terminal camera are `DeviceType.Camera`, so every wrapper that
7888
+ * declares `defaultActive: true` for a camera binds to them the instant they
7889
+ * exist — the whole analysis family included. There is nothing there to
7890
+ * analyse: a grid's subjects are already counted on the cameras it composes (a
7891
+ * person in the bottom-right cell is a person on THAT camera, not on the grid),
7892
+ * and a Terminal camera shows a shell.
7893
+ *
7894
+ * ONE list, in the package both already depend on, because there were two and
7895
+ * they had already drifted: the Terminal's and the grid's each named three caps
7896
+ * and neither named `pipeline-analytics` — which has no gate of its own except
7897
+ * this binding, so a grid that forwards its sources' motion (so the viewer can
7898
+ * light its tile) would open a motion EPISODE per forwarded event, duplicating
7899
+ * the rows those sources already write.
7900
+ *
7901
+ * `motion-detection` sits first deliberately: it is the one that holds the
7902
+ * decode session open, so its absence is the difference between a derived
7903
+ * camera costing a composition and costing a full decode pipeline.
7904
+ *
7905
+ * Applied ONLY at creation. An operator who deliberately turns analysis back on
7906
+ * for a grid must win, and a reconcile that re-asserted this every pass would
7907
+ * silently overrule them once a minute.
7889
7908
  */
7890
- var DETECTION_PIPELINE_CAP_NAME = "detection-pipeline";
7891
- var AUDIO_ANALYSIS_CAP_NAME = "audio-analysis";
7909
+ var DERIVED_CAMERA_SILENCED_CAP_NAMES = [
7910
+ "motion-detection",
7911
+ "detection-pipeline",
7912
+ "audio-analysis",
7913
+ "pipeline-analytics",
7914
+ "scene-monitor"
7915
+ ];
7892
7916
  /**
7893
7917
  * What the gate decided about a birth, from the CALLER's point of view.
7894
7918
  *
@@ -31437,6 +31461,25 @@ var ptzAutotrackCapability = {
31437
31461
  scope: "device",
31438
31462
  deviceNative: true,
31439
31463
  mode: "singleton",
31464
+ /**
31465
+ * Two kinds of provider behind one name, the same shape `snapshot` and
31466
+ * `doorbell` use:
31467
+ *
31468
+ * - **Native**: the camera's own firmware autotrack, registered per device by
31469
+ * the driver when the probe says it exists (Reolink: yes; Hikvision:
31470
+ * model-dependent).
31471
+ * - **Wrapper**: the emulated implementation (`@camstack/system`'s `autotrack` builtin),
31472
+ * which follows a subject with `ptz.move` pulses driven by the detection
31473
+ * pipeline. `defaultActive: false` — the operator binds it per camera in
31474
+ * the bindings UI, exactly as `virtual-doorbell` is bound.
31475
+ *
31476
+ * The binding chooses WHICH implementation answers; `setEnabled` stays the
31477
+ * one switch for the function either way. A camera never has both driving its
31478
+ * head, which is the whole reason this is not a second cap with a second
31479
+ * toggle (D62, D520).
31480
+ */
31481
+ kind: "wrapper",
31482
+ defaultActive: false,
31440
31483
  deviceTypes: [DeviceType.Camera],
31441
31484
  deviceConfig: { ui: {
31442
31485
  kind: "widget",
@@ -44834,17 +44877,13 @@ async function warmNodePty() {
44834
44877
  //#endregion
44835
44878
  //#region src/silence-analysis.ts
44836
44879
  /**
44837
- * Every analyzer a Terminal camera is created with switched OFF.
44880
+ * Every analyser a Terminal camera is created with switched OFF.
44838
44881
  *
44839
- * `motion-detection` sits first deliberately: it is the one that holds the
44840
- * decode session open, so it is the one whose absence is the difference between
44841
- * a terminal costing a screen scrape and costing a decode pipeline.
44882
+ * An alias, not a copy. This list and the grid's were separate and had drifted
44883
+ * — neither named `pipeline-analytics` — so both now read the one in
44884
+ * `@camstack/types`, which is the package they already share.
44842
44885
  */
44843
- var TERMINAL_SILENCED_CAP_NAMES = [
44844
- "motion-detection",
44845
- DETECTION_PIPELINE_CAP_NAME,
44846
- AUDIO_ANALYSIS_CAP_NAME
44847
- ];
44886
+ var TERMINAL_SILENCED_CAP_NAMES = DERIVED_CAMERA_SILENCED_CAP_NAMES;
44848
44887
  /**
44849
44888
  * Resolve the addon currently providing `capName` for this device.
44850
44889
  *
package/dist/addon.mjs CHANGED
@@ -7859,13 +7859,37 @@ var CameraSwitchGroupSchema = object({
7859
7859
  fetchedAt: number()
7860
7860
  });
7861
7861
  /**
7862
- * The wrapper capability each wrapper-backed switch controls. Named constants
7863
- * because the same strings appear in `legacy-migrations.ts`, in
7864
- * `isCapActiveForDevice` call sites and in the fake harness — a typo in any of
7865
- * them is a switch that silently writes a binding nobody reads.
7862
+ * Every analyser a camera CamStack BUILDS is created with switched off.
7863
+ *
7864
+ * A grid and a Terminal camera are `DeviceType.Camera`, so every wrapper that
7865
+ * declares `defaultActive: true` for a camera binds to them the instant they
7866
+ * exist — the whole analysis family included. There is nothing there to
7867
+ * analyse: a grid's subjects are already counted on the cameras it composes (a
7868
+ * person in the bottom-right cell is a person on THAT camera, not on the grid),
7869
+ * and a Terminal camera shows a shell.
7870
+ *
7871
+ * ONE list, in the package both already depend on, because there were two and
7872
+ * they had already drifted: the Terminal's and the grid's each named three caps
7873
+ * and neither named `pipeline-analytics` — which has no gate of its own except
7874
+ * this binding, so a grid that forwards its sources' motion (so the viewer can
7875
+ * light its tile) would open a motion EPISODE per forwarded event, duplicating
7876
+ * the rows those sources already write.
7877
+ *
7878
+ * `motion-detection` sits first deliberately: it is the one that holds the
7879
+ * decode session open, so its absence is the difference between a derived
7880
+ * camera costing a composition and costing a full decode pipeline.
7881
+ *
7882
+ * Applied ONLY at creation. An operator who deliberately turns analysis back on
7883
+ * for a grid must win, and a reconcile that re-asserted this every pass would
7884
+ * silently overrule them once a minute.
7866
7885
  */
7867
- var DETECTION_PIPELINE_CAP_NAME = "detection-pipeline";
7868
- var AUDIO_ANALYSIS_CAP_NAME = "audio-analysis";
7886
+ var DERIVED_CAMERA_SILENCED_CAP_NAMES = [
7887
+ "motion-detection",
7888
+ "detection-pipeline",
7889
+ "audio-analysis",
7890
+ "pipeline-analytics",
7891
+ "scene-monitor"
7892
+ ];
7869
7893
  /**
7870
7894
  * What the gate decided about a birth, from the CALLER's point of view.
7871
7895
  *
@@ -31414,6 +31438,25 @@ var ptzAutotrackCapability = {
31414
31438
  scope: "device",
31415
31439
  deviceNative: true,
31416
31440
  mode: "singleton",
31441
+ /**
31442
+ * Two kinds of provider behind one name, the same shape `snapshot` and
31443
+ * `doorbell` use:
31444
+ *
31445
+ * - **Native**: the camera's own firmware autotrack, registered per device by
31446
+ * the driver when the probe says it exists (Reolink: yes; Hikvision:
31447
+ * model-dependent).
31448
+ * - **Wrapper**: the emulated implementation (`@camstack/system`'s `autotrack` builtin),
31449
+ * which follows a subject with `ptz.move` pulses driven by the detection
31450
+ * pipeline. `defaultActive: false` — the operator binds it per camera in
31451
+ * the bindings UI, exactly as `virtual-doorbell` is bound.
31452
+ *
31453
+ * The binding chooses WHICH implementation answers; `setEnabled` stays the
31454
+ * one switch for the function either way. A camera never has both driving its
31455
+ * head, which is the whole reason this is not a second cap with a second
31456
+ * toggle (D62, D520).
31457
+ */
31458
+ kind: "wrapper",
31459
+ defaultActive: false,
31417
31460
  deviceTypes: [DeviceType.Camera],
31418
31461
  deviceConfig: { ui: {
31419
31462
  kind: "widget",
@@ -44811,17 +44854,13 @@ async function warmNodePty() {
44811
44854
  //#endregion
44812
44855
  //#region src/silence-analysis.ts
44813
44856
  /**
44814
- * Every analyzer a Terminal camera is created with switched OFF.
44857
+ * Every analyser a Terminal camera is created with switched OFF.
44815
44858
  *
44816
- * `motion-detection` sits first deliberately: it is the one that holds the
44817
- * decode session open, so it is the one whose absence is the difference between
44818
- * a terminal costing a screen scrape and costing a decode pipeline.
44859
+ * An alias, not a copy. This list and the grid's were separate and had drifted
44860
+ * — neither named `pipeline-analytics` — so both now read the one in
44861
+ * `@camstack/types`, which is the package they already share.
44819
44862
  */
44820
- var TERMINAL_SILENCED_CAP_NAMES = [
44821
- "motion-detection",
44822
- DETECTION_PIPELINE_CAP_NAME,
44823
- AUDIO_ANALYSIS_CAP_NAME
44824
- ];
44863
+ var TERMINAL_SILENCED_CAP_NAMES = DERIVED_CAMERA_SILENCED_CAP_NAMES;
44825
44864
  /**
44826
44865
  * Resolve the addon currently providing `capName` for this device.
44827
44866
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-terminal",
3
- "version": "0.1.120",
3
+ "version": "0.1.121",
4
4
  "description": "Interactive terminal sessions (pty + xterm) as a CamStack addon",
5
5
  "keywords": [
6
6
  "camstack",