@camstack/addon-provider-hikvision 1.2.140 → 1.2.141

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
@@ -10871,11 +10871,11 @@ var ModelVariantGroupSchema = object({
10871
10871
  /** Quantization axis. Omit ⇒ the fp32 base build. */
10872
10872
  precision: _enum(["fp32", "int8"]).optional(),
10873
10873
  /**
10874
- * Speed-optimization axis. Omit ⇒ the standard build. `fast` marks a
10875
- * latency-optimized export (e.g. ReLU-activation variant) — the slot the
10876
- * future performance variants plug into.
10874
+ * Training / latency-variant axis. Omit ⇒ the standard build. `test` marks
10875
+ * an alternate training of the same family (Scrypted `relu_test`); chip
10876
+ * label is "Test".
10877
10877
  */
10878
- optimization: _enum(["standard", "fast"]).optional(),
10878
+ optimization: _enum(["standard", "test"]).optional(),
10879
10879
  /**
10880
10880
  * Input-resolution axis (square input side, px). Omit ⇒ the family's native
10881
10881
  * resolution (640 for yolo26). Reduced-input builds (320 / 256) are a big,
@@ -10898,9 +10898,10 @@ var ModelProviderIdSchema = _enum([
10898
10898
  * are per upstream. A persisted custom-model row written when this field was a
10899
10899
  * string still parses — the string is lifted into `{ weights }`.
10900
10900
  *
10901
- * Every licence surface (the admin "Models and licenses" page,
10902
- * `THIRD_PARTY_MODELS.md`, the Hugging Face model table) is GENERATED from
10903
- * these records by `scripts/gen-model-licenses.ts` (D661).
10901
+ * Every machine licence surface (`THIRD_PARTY_MODELS.md`, the Hugging Face
10902
+ * model table) is GENERATED from these records by
10903
+ * `scripts/gen-model-licenses.ts` (D661). Operator-facing docs live in
10904
+ * `camstack/docs` → `/docs/detection/models`.
10904
10905
  */
10905
10906
  var ModelLicenseSchema = preprocess((value) => typeof value === "string" ? { weights: value } : value, object({
10906
10907
  /** SPDX id of the WEIGHTS' terms, a `LicenseRef-*` for non-SPDX terms, or `UNKNOWN`. */
@@ -17835,7 +17836,7 @@ method(object({
17835
17836
  timeoutMs: 6e5
17836
17837
  });
17837
17838
  method(object({
17838
- nodeId: string(),
17839
+ targetNodeId: string(),
17839
17840
  modelId: string(),
17840
17841
  format: _enum(MODEL_FORMATS),
17841
17842
  entry: ModelCatalogEntrySchema
@@ -21802,39 +21803,19 @@ Object.freeze(Object.fromEntries([{
21802
21803
  label: "Face recognition model",
21803
21804
  defaultModelId: "auraface-r100",
21804
21805
  indexName: "the enrolled face gallery",
21805
- options: [
21806
- {
21807
- id: "auraface-r100",
21808
- label: "AuraFace R100"
21809
- },
21810
- {
21811
- id: "arcface-r100",
21812
- label: "ArcFace (ResNet34)"
21813
- },
21814
- {
21815
- id: "inception-resnet-v1",
21816
- label: "Inception ResNet V1"
21817
- }
21818
- ]
21806
+ options: [{
21807
+ id: "auraface-r100",
21808
+ label: "AuraFace R100"
21809
+ }]
21819
21810
  }, {
21820
21811
  stepId: "clip-embedding",
21821
21812
  label: "Semantic search model",
21822
- defaultModelId: "mobileclip-s1",
21813
+ defaultModelId: "siglip2-b16-224",
21823
21814
  indexName: "the object semantic-search index",
21824
- options: [
21825
- {
21826
- id: "mobileclip-s1",
21827
- label: "MobileCLIP S1"
21828
- },
21829
- {
21830
- id: "mobileclip-s2",
21831
- label: "MobileCLIP S2"
21832
- },
21833
- {
21834
- id: "siglip2-b16-224",
21835
- label: "SigLIP2 B/16 (Apache-2.0)"
21836
- }
21837
- ]
21815
+ options: [{
21816
+ id: "siglip2-b16-224",
21817
+ label: "SigLIP2 B/16 (Apache-2.0)"
21818
+ }]
21838
21819
  }].map((s) => [s.stepId, s.defaultModelId])));
21839
21820
  var CLUSTER_STEP_SETTING_FIELDS = [{
21840
21821
  stepId: "face-embedding",
@@ -34725,7 +34706,13 @@ var OsdStatusSchema = object({ overlays: array(object({
34725
34706
  */
34726
34707
  availablePositions: array(OsdPositionEnum).readonly(),
34727
34708
  /** Firmware does not allow editing the `text` field (e.g. timestamp). */
34728
- readOnly: boolean().optional()
34709
+ readOnly: boolean().optional(),
34710
+ /**
34711
+ * Firmware text ceiling for this overlay. Absent = no known limit.
34712
+ * The OSD manager truncates here on every write — never stores its own
34713
+ * copy on the binding.
34714
+ */
34715
+ maxCharacters: number().int().positive().optional()
34729
34716
  })).readonly() });
34730
34717
  var OsdOverlayPatchSchema = object({
34731
34718
  enabled: boolean().optional(),
@@ -34822,7 +34809,9 @@ var OsdTemplateBindingSchema = object({
34822
34809
  valuePath: string().min(1).max(64),
34823
34810
  /** Convert TO this unit at render (`tryConvertUnit`). Absent = source unit. */
34824
34811
  displayUnit: string().max(16).optional(),
34825
- maxDecimals: number().int().min(0).max(4).default(1)
34812
+ maxDecimals: number().int().min(0).max(4).default(1),
34813
+ /** Raw value → display text (same shape as slot binding). Empty string hides. */
34814
+ valueMap: record(string(), string()).optional()
34826
34815
  });
34827
34816
  /**
34828
34817
  * A named template: bindings (alias → leaf field) + a parser that
@@ -34872,18 +34861,11 @@ var OsdSlotBindingSchema = object({
34872
34861
  source: OsdSourceSchema,
34873
34862
  /** `${value}` and `${unit}` are substituted; every occurrence. */
34874
34863
  template: string().max(96).default("${value}"),
34875
- /** Truncate with an ellipsis past this length. Absent = no limit. */
34876
- maxCharacters: number().int().min(4).max(64).optional(),
34877
34864
  /**
34878
34865
  * Decimal places for a numeric value. `0` yields an integer — the
34879
34866
  * documented workaround for firmwares that reject `.` in overlay text.
34880
34867
  */
34881
34868
  maxDecimals: number().int().min(0).max(4).default(1),
34882
- /**
34883
- * Appended via `${unit}` when no unit conversion produces a label.
34884
- * Prefer `source.displayUnit` for converted device-state values.
34885
- */
34886
- unitLabel: string().max(8).optional(),
34887
34869
  /** Raw value → display text, e.g. `{"true":"MOTION","false":""}`. */
34888
34870
  valueMap: record(string(), string()).optional(),
34889
34871
  /** Time windows in which the slot is shown. Absent = always. */
@@ -34892,9 +34874,7 @@ var OsdSlotBindingSchema = object({
34892
34874
  * Display gate, in the notification centre's condition vocabulary.
34893
34875
  * Only the keys reported by `getConditionSupport` are accepted.
34894
34876
  */
34895
- conditions: NcConditionsSchema.optional(),
34896
- /** Rendered when the gate is closed or the value unreadable. Empty = hide. */
34897
- fallbackText: string().max(64).default("")
34877
+ conditions: NcConditionsSchema.optional()
34898
34878
  });
34899
34879
  /** One camera slot, as the operator sees it: firmware truth + our binding. */
34900
34880
  var OsdSlotViewSchema = object({
@@ -54170,6 +54150,8 @@ var STATE_SUMMARY_VARS = [
54170
54150
  [...RULE_TEXT],
54171
54151
  [...RULE_TEXT],
54172
54152
  [...RULE_TEXT],
54153
+ [...RULE_TEXT],
54154
+ [...RULE_TEXT],
54173
54155
  ...STATE_SUMMARY_VARS
54174
54156
  ];
54175
54157
  new Set([
@@ -64780,7 +64762,8 @@ var HikvisionCamera = class HikvisionCamera extends BaseDevice {
64780
64762
  kind: "text",
64781
64763
  enabled: t.enabled,
64782
64764
  text: t.text ?? "",
64783
- availablePositions: []
64765
+ availablePositions: [],
64766
+ maxCharacters: 44
64784
64767
  });
64785
64768
  return { overlays };
64786
64769
  },
package/dist/addon.mjs CHANGED
@@ -10850,11 +10850,11 @@ var ModelVariantGroupSchema = object({
10850
10850
  /** Quantization axis. Omit ⇒ the fp32 base build. */
10851
10851
  precision: _enum(["fp32", "int8"]).optional(),
10852
10852
  /**
10853
- * Speed-optimization axis. Omit ⇒ the standard build. `fast` marks a
10854
- * latency-optimized export (e.g. ReLU-activation variant) — the slot the
10855
- * future performance variants plug into.
10853
+ * Training / latency-variant axis. Omit ⇒ the standard build. `test` marks
10854
+ * an alternate training of the same family (Scrypted `relu_test`); chip
10855
+ * label is "Test".
10856
10856
  */
10857
- optimization: _enum(["standard", "fast"]).optional(),
10857
+ optimization: _enum(["standard", "test"]).optional(),
10858
10858
  /**
10859
10859
  * Input-resolution axis (square input side, px). Omit ⇒ the family's native
10860
10860
  * resolution (640 for yolo26). Reduced-input builds (320 / 256) are a big,
@@ -10877,9 +10877,10 @@ var ModelProviderIdSchema = _enum([
10877
10877
  * are per upstream. A persisted custom-model row written when this field was a
10878
10878
  * string still parses — the string is lifted into `{ weights }`.
10879
10879
  *
10880
- * Every licence surface (the admin "Models and licenses" page,
10881
- * `THIRD_PARTY_MODELS.md`, the Hugging Face model table) is GENERATED from
10882
- * these records by `scripts/gen-model-licenses.ts` (D661).
10880
+ * Every machine licence surface (`THIRD_PARTY_MODELS.md`, the Hugging Face
10881
+ * model table) is GENERATED from these records by
10882
+ * `scripts/gen-model-licenses.ts` (D661). Operator-facing docs live in
10883
+ * `camstack/docs` → `/docs/detection/models`.
10883
10884
  */
10884
10885
  var ModelLicenseSchema = preprocess((value) => typeof value === "string" ? { weights: value } : value, object({
10885
10886
  /** SPDX id of the WEIGHTS' terms, a `LicenseRef-*` for non-SPDX terms, or `UNKNOWN`. */
@@ -17814,7 +17815,7 @@ method(object({
17814
17815
  timeoutMs: 6e5
17815
17816
  });
17816
17817
  method(object({
17817
- nodeId: string(),
17818
+ targetNodeId: string(),
17818
17819
  modelId: string(),
17819
17820
  format: _enum(MODEL_FORMATS),
17820
17821
  entry: ModelCatalogEntrySchema
@@ -21781,39 +21782,19 @@ Object.freeze(Object.fromEntries([{
21781
21782
  label: "Face recognition model",
21782
21783
  defaultModelId: "auraface-r100",
21783
21784
  indexName: "the enrolled face gallery",
21784
- options: [
21785
- {
21786
- id: "auraface-r100",
21787
- label: "AuraFace R100"
21788
- },
21789
- {
21790
- id: "arcface-r100",
21791
- label: "ArcFace (ResNet34)"
21792
- },
21793
- {
21794
- id: "inception-resnet-v1",
21795
- label: "Inception ResNet V1"
21796
- }
21797
- ]
21785
+ options: [{
21786
+ id: "auraface-r100",
21787
+ label: "AuraFace R100"
21788
+ }]
21798
21789
  }, {
21799
21790
  stepId: "clip-embedding",
21800
21791
  label: "Semantic search model",
21801
- defaultModelId: "mobileclip-s1",
21792
+ defaultModelId: "siglip2-b16-224",
21802
21793
  indexName: "the object semantic-search index",
21803
- options: [
21804
- {
21805
- id: "mobileclip-s1",
21806
- label: "MobileCLIP S1"
21807
- },
21808
- {
21809
- id: "mobileclip-s2",
21810
- label: "MobileCLIP S2"
21811
- },
21812
- {
21813
- id: "siglip2-b16-224",
21814
- label: "SigLIP2 B/16 (Apache-2.0)"
21815
- }
21816
- ]
21794
+ options: [{
21795
+ id: "siglip2-b16-224",
21796
+ label: "SigLIP2 B/16 (Apache-2.0)"
21797
+ }]
21817
21798
  }].map((s) => [s.stepId, s.defaultModelId])));
21818
21799
  var CLUSTER_STEP_SETTING_FIELDS = [{
21819
21800
  stepId: "face-embedding",
@@ -34704,7 +34685,13 @@ var OsdStatusSchema = object({ overlays: array(object({
34704
34685
  */
34705
34686
  availablePositions: array(OsdPositionEnum).readonly(),
34706
34687
  /** Firmware does not allow editing the `text` field (e.g. timestamp). */
34707
- readOnly: boolean().optional()
34688
+ readOnly: boolean().optional(),
34689
+ /**
34690
+ * Firmware text ceiling for this overlay. Absent = no known limit.
34691
+ * The OSD manager truncates here on every write — never stores its own
34692
+ * copy on the binding.
34693
+ */
34694
+ maxCharacters: number().int().positive().optional()
34708
34695
  })).readonly() });
34709
34696
  var OsdOverlayPatchSchema = object({
34710
34697
  enabled: boolean().optional(),
@@ -34801,7 +34788,9 @@ var OsdTemplateBindingSchema = object({
34801
34788
  valuePath: string().min(1).max(64),
34802
34789
  /** Convert TO this unit at render (`tryConvertUnit`). Absent = source unit. */
34803
34790
  displayUnit: string().max(16).optional(),
34804
- maxDecimals: number().int().min(0).max(4).default(1)
34791
+ maxDecimals: number().int().min(0).max(4).default(1),
34792
+ /** Raw value → display text (same shape as slot binding). Empty string hides. */
34793
+ valueMap: record(string(), string()).optional()
34805
34794
  });
34806
34795
  /**
34807
34796
  * A named template: bindings (alias → leaf field) + a parser that
@@ -34851,18 +34840,11 @@ var OsdSlotBindingSchema = object({
34851
34840
  source: OsdSourceSchema,
34852
34841
  /** `${value}` and `${unit}` are substituted; every occurrence. */
34853
34842
  template: string().max(96).default("${value}"),
34854
- /** Truncate with an ellipsis past this length. Absent = no limit. */
34855
- maxCharacters: number().int().min(4).max(64).optional(),
34856
34843
  /**
34857
34844
  * Decimal places for a numeric value. `0` yields an integer — the
34858
34845
  * documented workaround for firmwares that reject `.` in overlay text.
34859
34846
  */
34860
34847
  maxDecimals: number().int().min(0).max(4).default(1),
34861
- /**
34862
- * Appended via `${unit}` when no unit conversion produces a label.
34863
- * Prefer `source.displayUnit` for converted device-state values.
34864
- */
34865
- unitLabel: string().max(8).optional(),
34866
34848
  /** Raw value → display text, e.g. `{"true":"MOTION","false":""}`. */
34867
34849
  valueMap: record(string(), string()).optional(),
34868
34850
  /** Time windows in which the slot is shown. Absent = always. */
@@ -34871,9 +34853,7 @@ var OsdSlotBindingSchema = object({
34871
34853
  * Display gate, in the notification centre's condition vocabulary.
34872
34854
  * Only the keys reported by `getConditionSupport` are accepted.
34873
34855
  */
34874
- conditions: NcConditionsSchema.optional(),
34875
- /** Rendered when the gate is closed or the value unreadable. Empty = hide. */
34876
- fallbackText: string().max(64).default("")
34856
+ conditions: NcConditionsSchema.optional()
34877
34857
  });
34878
34858
  /** One camera slot, as the operator sees it: firmware truth + our binding. */
34879
34859
  var OsdSlotViewSchema = object({
@@ -54149,6 +54129,8 @@ var STATE_SUMMARY_VARS = [
54149
54129
  [...RULE_TEXT],
54150
54130
  [...RULE_TEXT],
54151
54131
  [...RULE_TEXT],
54132
+ [...RULE_TEXT],
54133
+ [...RULE_TEXT],
54152
54134
  ...STATE_SUMMARY_VARS
54153
54135
  ];
54154
54136
  new Set([
@@ -64759,7 +64741,8 @@ var HikvisionCamera = class HikvisionCamera extends BaseDevice {
64759
64741
  kind: "text",
64760
64742
  enabled: t.enabled,
64761
64743
  text: t.text ?? "",
64762
- availablePositions: []
64744
+ availablePositions: [],
64745
+ maxCharacters: 44
64763
64746
  });
64764
64747
  return { overlays };
64765
64748
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-hikvision",
3
- "version": "1.2.140",
3
+ "version": "1.2.141",
4
4
  "description": "Hikvision camera device provider addon for CamStack — ISAPI over HTTP(S) with digest auth (snapshot, alarm stream, RTSP discovery)",
5
5
  "keywords": [
6
6
  "camstack",