@camstack/addon-provider-onvif 1.2.23 → 1.2.25

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
@@ -2,7 +2,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  //#region \0rolldown/runtime.js
3
3
  var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
4
4
  //#endregion
5
- //#region ../types/dist/event-category-XfKNtfCc.mjs
5
+ //#region ../types/dist/event-category-CIa_iT6b.mjs
6
6
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
7
7
  EventCategory["SystemBoot"] = "system.boot";
8
8
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -18,6 +18,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
18
18
  */
19
19
  EventCategory["SystemRestartCompleted"] = "system.restart-completed";
20
20
  /**
21
+ * The hub reissued its own TLS certificate at boot (`ensureTlsCert`).
22
+ * Emitted only when the material on disk actually changed, so an
23
+ * operator who trusted the old certificate by hand is told rather than
24
+ * discovering it as a browser error. Payload `TlsCertChangedPayload`.
25
+ *
26
+ * Rule: docs/decisions/adr-0227-*.md
27
+ */
28
+ EventCategory["SystemTlsCertChanged"] = "system.tls-cert-changed";
29
+ /**
21
30
  * A newer addon or server-root package version was found by the
22
31
  * authoritative registry check. Emitted once when any observed
23
32
  * `latestVersion` changes (or a package/node first appears behind);
@@ -18693,6 +18702,12 @@ var CameraStatusSchema = object({
18693
18702
  /** Unix timestamp (ms) when this snapshot was composed server-side. */
18694
18703
  fetchedAt: number()
18695
18704
  });
18705
+ var InferenceDeviceExclusionReasonSchema = _enum([
18706
+ "disabled",
18707
+ "unavailable",
18708
+ "cannot-host-camera-root",
18709
+ "accelerator-preferred"
18710
+ ]);
18696
18711
  var NodeInferenceDeviceSchema = object({
18697
18712
  /** Stable per-node device key, e.g. `openvino:npu`, `edgetpu:usb`, `cpu`. */
18698
18713
  key: string(),
@@ -18723,7 +18738,17 @@ var NodeInferenceDeviceSchema = object({
18723
18738
  * available per format; this is the stored selection that becomes the
18724
18739
  * default for EVERY camera landing on this accelerator.
18725
18740
  */
18726
- steps: record(string(), DeviceStepConfigSchema).optional()
18741
+ steps: record(string(), DeviceStepConfigSchema).optional(),
18742
+ /**
18743
+ * `null` when the device IS a camera-root candidate on this node; otherwise
18744
+ * the reason the dispatcher drops it. Computed by the SAME
18745
+ * `resolveInferenceDeviceEligibility` the dispatcher runs, so this view can
18746
+ * never disagree with the election — deriving it in the UI from
18747
+ * `enabled`/`available` would silently miss `cannot-host-camera-root` (needs
18748
+ * the node's model catalog) and `accelerator-preferred` (needs the node-wide
18749
+ * "an accelerator is serving" predicate).
18750
+ */
18751
+ exclusion: InferenceDeviceExclusionReasonSchema.nullable()
18727
18752
  });
18728
18753
  var NodeInferenceDevicesSchema = object({
18729
18754
  nodeId: string(),
@@ -22585,7 +22610,12 @@ var ListResultSchema = object({
22585
22610
  probedAt: number()
22586
22611
  });
22587
22612
  var PreferredSchema = LocalInterfaceSchema.nullable();
22588
- var GetConnectionEndpointsResultSchema = object({ endpoints: array(object({
22613
+ /**
22614
+ * Candidate base URL for the SDK to race on connect. Order matters —
22615
+ * the SDK should attempt these top-to-bottom with a short per-candidate
22616
+ * timeout (e.g. 1500ms) and cache the winner for the session.
22617
+ */
22618
+ var ConnectionEndpointSchema = object({
22589
22619
  /** Operator-facing label (e.g. "LAN — en0", "Public tunnel"). */
22590
22620
  label: string(),
22591
22621
  /** Fully-formed base URL with scheme + host + port. */
@@ -22628,7 +22658,42 @@ var GetConnectionEndpointsResultSchema = object({ endpoints: array(object({
22628
22658
  * ordering between polls.
22629
22659
  */
22630
22660
  priority: number()
22631
- })).readonly() });
22661
+ });
22662
+ /**
22663
+ * Where the advertised local port came from. Ordered most → least
22664
+ * authoritative, and the whole point of returning it: a client must be able to
22665
+ * tell a FACT about the hub's socket from an echo of its own guess.
22666
+ */
22667
+ var LocalPortSourceEnum = _enum([
22668
+ "server-config",
22669
+ "server-env",
22670
+ "caller-hint",
22671
+ "default"
22672
+ ]);
22673
+ /** The port every LAN/loopback `baseUrl` in the same result was built with. */
22674
+ var AdvertisedLocalPortSchema = object({
22675
+ port: number().int().min(1).max(65535),
22676
+ source: LocalPortSourceEnum
22677
+ });
22678
+ var GetConnectionEndpointsResultSchema = object({
22679
+ endpoints: array(ConnectionEndpointSchema).readonly(),
22680
+ /**
22681
+ * The port the hub built the LAN/loopback URLs with, and where that number
22682
+ * came from.
22683
+ *
22684
+ * Returned rather than merely applied, because "the URL is right" and "the
22685
+ * client can KNOW the URL is right" are different properties. A client that
22686
+ * only sees a corrected URL cannot distinguish a hub that fixed the port from
22687
+ * a hub that echoed the port the client sent, so it cannot decide whether to
22688
+ * race the candidate or discard it. With `source` it can: anything but
22689
+ * `caller-hint` is the hub's own socket.
22690
+ *
22691
+ * Absent on hubs predating this field — a client that finds it missing is
22692
+ * talking to an echoing hub and must degrade exactly as it does for
22693
+ * `caller-hint`.
22694
+ */
22695
+ localPort: AdvertisedLocalPortSchema
22696
+ });
22632
22697
  /**
22633
22698
  * The chosen outbound endpoint for notification artifacts. `baseUrl: null` =
22634
22699
  * AUTO (resolved from the candidate ranking at send time); `resolved` reports
@@ -22649,8 +22714,13 @@ var AllowedAddressesSchema = object({
22649
22714
  */
22650
22715
  addresses: array(string()).readonly() });
22651
22716
  method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(object({
22652
- /** Local hub HTTP port to use in base URLs. */
22653
- port: number().int().min(1).max(65535),
22717
+ /**
22718
+ * LEGACY HINT — do not send from new code. Kept optional so clients
22719
+ * written against the echoing contract keep working; the hub uses it
22720
+ * only when it cannot read its own port, and says so via
22721
+ * `localPort.source === 'caller-hint'`.
22722
+ */
22723
+ port: number().int().min(1).max(65535).optional(),
22654
22724
  /** Include `http(s)://127.0.0.1:<port>` as the lowest-priority
22655
22725
  * candidate. Default `true`. */
22656
22726
  includeLoopback: boolean().optional(),
package/dist/addon.mjs CHANGED
@@ -3,7 +3,7 @@ import { createRequire } from "node:module";
3
3
  var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
4
4
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
5
5
  //#endregion
6
- //#region ../types/dist/event-category-XfKNtfCc.mjs
6
+ //#region ../types/dist/event-category-CIa_iT6b.mjs
7
7
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
8
8
  EventCategory["SystemBoot"] = "system.boot";
9
9
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -19,6 +19,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
19
19
  */
20
20
  EventCategory["SystemRestartCompleted"] = "system.restart-completed";
21
21
  /**
22
+ * The hub reissued its own TLS certificate at boot (`ensureTlsCert`).
23
+ * Emitted only when the material on disk actually changed, so an
24
+ * operator who trusted the old certificate by hand is told rather than
25
+ * discovering it as a browser error. Payload `TlsCertChangedPayload`.
26
+ *
27
+ * Rule: docs/decisions/adr-0227-*.md
28
+ */
29
+ EventCategory["SystemTlsCertChanged"] = "system.tls-cert-changed";
30
+ /**
22
31
  * A newer addon or server-root package version was found by the
23
32
  * authoritative registry check. Emitted once when any observed
24
33
  * `latestVersion` changes (or a package/node first appears behind);
@@ -18694,6 +18703,12 @@ var CameraStatusSchema = object({
18694
18703
  /** Unix timestamp (ms) when this snapshot was composed server-side. */
18695
18704
  fetchedAt: number()
18696
18705
  });
18706
+ var InferenceDeviceExclusionReasonSchema = _enum([
18707
+ "disabled",
18708
+ "unavailable",
18709
+ "cannot-host-camera-root",
18710
+ "accelerator-preferred"
18711
+ ]);
18697
18712
  var NodeInferenceDeviceSchema = object({
18698
18713
  /** Stable per-node device key, e.g. `openvino:npu`, `edgetpu:usb`, `cpu`. */
18699
18714
  key: string(),
@@ -18724,7 +18739,17 @@ var NodeInferenceDeviceSchema = object({
18724
18739
  * available per format; this is the stored selection that becomes the
18725
18740
  * default for EVERY camera landing on this accelerator.
18726
18741
  */
18727
- steps: record(string(), DeviceStepConfigSchema).optional()
18742
+ steps: record(string(), DeviceStepConfigSchema).optional(),
18743
+ /**
18744
+ * `null` when the device IS a camera-root candidate on this node; otherwise
18745
+ * the reason the dispatcher drops it. Computed by the SAME
18746
+ * `resolveInferenceDeviceEligibility` the dispatcher runs, so this view can
18747
+ * never disagree with the election — deriving it in the UI from
18748
+ * `enabled`/`available` would silently miss `cannot-host-camera-root` (needs
18749
+ * the node's model catalog) and `accelerator-preferred` (needs the node-wide
18750
+ * "an accelerator is serving" predicate).
18751
+ */
18752
+ exclusion: InferenceDeviceExclusionReasonSchema.nullable()
18728
18753
  });
18729
18754
  var NodeInferenceDevicesSchema = object({
18730
18755
  nodeId: string(),
@@ -22586,7 +22611,12 @@ var ListResultSchema = object({
22586
22611
  probedAt: number()
22587
22612
  });
22588
22613
  var PreferredSchema = LocalInterfaceSchema.nullable();
22589
- var GetConnectionEndpointsResultSchema = object({ endpoints: array(object({
22614
+ /**
22615
+ * Candidate base URL for the SDK to race on connect. Order matters —
22616
+ * the SDK should attempt these top-to-bottom with a short per-candidate
22617
+ * timeout (e.g. 1500ms) and cache the winner for the session.
22618
+ */
22619
+ var ConnectionEndpointSchema = object({
22590
22620
  /** Operator-facing label (e.g. "LAN — en0", "Public tunnel"). */
22591
22621
  label: string(),
22592
22622
  /** Fully-formed base URL with scheme + host + port. */
@@ -22629,7 +22659,42 @@ var GetConnectionEndpointsResultSchema = object({ endpoints: array(object({
22629
22659
  * ordering between polls.
22630
22660
  */
22631
22661
  priority: number()
22632
- })).readonly() });
22662
+ });
22663
+ /**
22664
+ * Where the advertised local port came from. Ordered most → least
22665
+ * authoritative, and the whole point of returning it: a client must be able to
22666
+ * tell a FACT about the hub's socket from an echo of its own guess.
22667
+ */
22668
+ var LocalPortSourceEnum = _enum([
22669
+ "server-config",
22670
+ "server-env",
22671
+ "caller-hint",
22672
+ "default"
22673
+ ]);
22674
+ /** The port every LAN/loopback `baseUrl` in the same result was built with. */
22675
+ var AdvertisedLocalPortSchema = object({
22676
+ port: number().int().min(1).max(65535),
22677
+ source: LocalPortSourceEnum
22678
+ });
22679
+ var GetConnectionEndpointsResultSchema = object({
22680
+ endpoints: array(ConnectionEndpointSchema).readonly(),
22681
+ /**
22682
+ * The port the hub built the LAN/loopback URLs with, and where that number
22683
+ * came from.
22684
+ *
22685
+ * Returned rather than merely applied, because "the URL is right" and "the
22686
+ * client can KNOW the URL is right" are different properties. A client that
22687
+ * only sees a corrected URL cannot distinguish a hub that fixed the port from
22688
+ * a hub that echoed the port the client sent, so it cannot decide whether to
22689
+ * race the candidate or discard it. With `source` it can: anything but
22690
+ * `caller-hint` is the hub's own socket.
22691
+ *
22692
+ * Absent on hubs predating this field — a client that finds it missing is
22693
+ * talking to an echoing hub and must degrade exactly as it does for
22694
+ * `caller-hint`.
22695
+ */
22696
+ localPort: AdvertisedLocalPortSchema
22697
+ });
22633
22698
  /**
22634
22699
  * The chosen outbound endpoint for notification artifacts. `baseUrl: null` =
22635
22700
  * AUTO (resolved from the candidate ranking at send time); `resolved` reports
@@ -22650,8 +22715,13 @@ var AllowedAddressesSchema = object({
22650
22715
  */
22651
22716
  addresses: array(string()).readonly() });
22652
22717
  method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(object({
22653
- /** Local hub HTTP port to use in base URLs. */
22654
- port: number().int().min(1).max(65535),
22718
+ /**
22719
+ * LEGACY HINT — do not send from new code. Kept optional so clients
22720
+ * written against the echoing contract keep working; the hub uses it
22721
+ * only when it cannot read its own port, and says so via
22722
+ * `localPort.source === 'caller-hint'`.
22723
+ */
22724
+ port: number().int().min(1).max(65535).optional(),
22655
22725
  /** Include `http(s)://127.0.0.1:<port>` as the lowest-priority
22656
22726
  * candidate. Default `true`. */
22657
22727
  includeLoopback: boolean().optional(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-onvif",
3
- "version": "1.2.23",
3
+ "version": "1.2.25",
4
4
  "description": "ONVIF camera device provider addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",