@camstack/addon-provider-onvif 1.2.23 → 1.2.24

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
@@ -18693,6 +18693,12 @@ var CameraStatusSchema = object({
18693
18693
  /** Unix timestamp (ms) when this snapshot was composed server-side. */
18694
18694
  fetchedAt: number()
18695
18695
  });
18696
+ var InferenceDeviceExclusionReasonSchema = _enum([
18697
+ "disabled",
18698
+ "unavailable",
18699
+ "cannot-host-camera-root",
18700
+ "accelerator-preferred"
18701
+ ]);
18696
18702
  var NodeInferenceDeviceSchema = object({
18697
18703
  /** Stable per-node device key, e.g. `openvino:npu`, `edgetpu:usb`, `cpu`. */
18698
18704
  key: string(),
@@ -18723,7 +18729,17 @@ var NodeInferenceDeviceSchema = object({
18723
18729
  * available per format; this is the stored selection that becomes the
18724
18730
  * default for EVERY camera landing on this accelerator.
18725
18731
  */
18726
- steps: record(string(), DeviceStepConfigSchema).optional()
18732
+ steps: record(string(), DeviceStepConfigSchema).optional(),
18733
+ /**
18734
+ * `null` when the device IS a camera-root candidate on this node; otherwise
18735
+ * the reason the dispatcher drops it. Computed by the SAME
18736
+ * `resolveInferenceDeviceEligibility` the dispatcher runs, so this view can
18737
+ * never disagree with the election — deriving it in the UI from
18738
+ * `enabled`/`available` would silently miss `cannot-host-camera-root` (needs
18739
+ * the node's model catalog) and `accelerator-preferred` (needs the node-wide
18740
+ * "an accelerator is serving" predicate).
18741
+ */
18742
+ exclusion: InferenceDeviceExclusionReasonSchema.nullable()
18727
18743
  });
18728
18744
  var NodeInferenceDevicesSchema = object({
18729
18745
  nodeId: string(),
@@ -22585,7 +22601,12 @@ var ListResultSchema = object({
22585
22601
  probedAt: number()
22586
22602
  });
22587
22603
  var PreferredSchema = LocalInterfaceSchema.nullable();
22588
- var GetConnectionEndpointsResultSchema = object({ endpoints: array(object({
22604
+ /**
22605
+ * Candidate base URL for the SDK to race on connect. Order matters —
22606
+ * the SDK should attempt these top-to-bottom with a short per-candidate
22607
+ * timeout (e.g. 1500ms) and cache the winner for the session.
22608
+ */
22609
+ var ConnectionEndpointSchema = object({
22589
22610
  /** Operator-facing label (e.g. "LAN — en0", "Public tunnel"). */
22590
22611
  label: string(),
22591
22612
  /** Fully-formed base URL with scheme + host + port. */
@@ -22628,7 +22649,42 @@ var GetConnectionEndpointsResultSchema = object({ endpoints: array(object({
22628
22649
  * ordering between polls.
22629
22650
  */
22630
22651
  priority: number()
22631
- })).readonly() });
22652
+ });
22653
+ /**
22654
+ * Where the advertised local port came from. Ordered most → least
22655
+ * authoritative, and the whole point of returning it: a client must be able to
22656
+ * tell a FACT about the hub's socket from an echo of its own guess.
22657
+ */
22658
+ var LocalPortSourceEnum = _enum([
22659
+ "server-config",
22660
+ "server-env",
22661
+ "caller-hint",
22662
+ "default"
22663
+ ]);
22664
+ /** The port every LAN/loopback `baseUrl` in the same result was built with. */
22665
+ var AdvertisedLocalPortSchema = object({
22666
+ port: number().int().min(1).max(65535),
22667
+ source: LocalPortSourceEnum
22668
+ });
22669
+ var GetConnectionEndpointsResultSchema = object({
22670
+ endpoints: array(ConnectionEndpointSchema).readonly(),
22671
+ /**
22672
+ * The port the hub built the LAN/loopback URLs with, and where that number
22673
+ * came from.
22674
+ *
22675
+ * Returned rather than merely applied, because "the URL is right" and "the
22676
+ * client can KNOW the URL is right" are different properties. A client that
22677
+ * only sees a corrected URL cannot distinguish a hub that fixed the port from
22678
+ * a hub that echoed the port the client sent, so it cannot decide whether to
22679
+ * race the candidate or discard it. With `source` it can: anything but
22680
+ * `caller-hint` is the hub's own socket.
22681
+ *
22682
+ * Absent on hubs predating this field — a client that finds it missing is
22683
+ * talking to an echoing hub and must degrade exactly as it does for
22684
+ * `caller-hint`.
22685
+ */
22686
+ localPort: AdvertisedLocalPortSchema
22687
+ });
22632
22688
  /**
22633
22689
  * The chosen outbound endpoint for notification artifacts. `baseUrl: null` =
22634
22690
  * AUTO (resolved from the candidate ranking at send time); `resolved` reports
@@ -22649,8 +22705,13 @@ var AllowedAddressesSchema = object({
22649
22705
  */
22650
22706
  addresses: array(string()).readonly() });
22651
22707
  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),
22708
+ /**
22709
+ * LEGACY HINT — do not send from new code. Kept optional so clients
22710
+ * written against the echoing contract keep working; the hub uses it
22711
+ * only when it cannot read its own port, and says so via
22712
+ * `localPort.source === 'caller-hint'`.
22713
+ */
22714
+ port: number().int().min(1).max(65535).optional(),
22654
22715
  /** Include `http(s)://127.0.0.1:<port>` as the lowest-priority
22655
22716
  * candidate. Default `true`. */
22656
22717
  includeLoopback: boolean().optional(),
package/dist/addon.mjs CHANGED
@@ -18694,6 +18694,12 @@ var CameraStatusSchema = object({
18694
18694
  /** Unix timestamp (ms) when this snapshot was composed server-side. */
18695
18695
  fetchedAt: number()
18696
18696
  });
18697
+ var InferenceDeviceExclusionReasonSchema = _enum([
18698
+ "disabled",
18699
+ "unavailable",
18700
+ "cannot-host-camera-root",
18701
+ "accelerator-preferred"
18702
+ ]);
18697
18703
  var NodeInferenceDeviceSchema = object({
18698
18704
  /** Stable per-node device key, e.g. `openvino:npu`, `edgetpu:usb`, `cpu`. */
18699
18705
  key: string(),
@@ -18724,7 +18730,17 @@ var NodeInferenceDeviceSchema = object({
18724
18730
  * available per format; this is the stored selection that becomes the
18725
18731
  * default for EVERY camera landing on this accelerator.
18726
18732
  */
18727
- steps: record(string(), DeviceStepConfigSchema).optional()
18733
+ steps: record(string(), DeviceStepConfigSchema).optional(),
18734
+ /**
18735
+ * `null` when the device IS a camera-root candidate on this node; otherwise
18736
+ * the reason the dispatcher drops it. Computed by the SAME
18737
+ * `resolveInferenceDeviceEligibility` the dispatcher runs, so this view can
18738
+ * never disagree with the election — deriving it in the UI from
18739
+ * `enabled`/`available` would silently miss `cannot-host-camera-root` (needs
18740
+ * the node's model catalog) and `accelerator-preferred` (needs the node-wide
18741
+ * "an accelerator is serving" predicate).
18742
+ */
18743
+ exclusion: InferenceDeviceExclusionReasonSchema.nullable()
18728
18744
  });
18729
18745
  var NodeInferenceDevicesSchema = object({
18730
18746
  nodeId: string(),
@@ -22586,7 +22602,12 @@ var ListResultSchema = object({
22586
22602
  probedAt: number()
22587
22603
  });
22588
22604
  var PreferredSchema = LocalInterfaceSchema.nullable();
22589
- var GetConnectionEndpointsResultSchema = object({ endpoints: array(object({
22605
+ /**
22606
+ * Candidate base URL for the SDK to race on connect. Order matters —
22607
+ * the SDK should attempt these top-to-bottom with a short per-candidate
22608
+ * timeout (e.g. 1500ms) and cache the winner for the session.
22609
+ */
22610
+ var ConnectionEndpointSchema = object({
22590
22611
  /** Operator-facing label (e.g. "LAN — en0", "Public tunnel"). */
22591
22612
  label: string(),
22592
22613
  /** Fully-formed base URL with scheme + host + port. */
@@ -22629,7 +22650,42 @@ var GetConnectionEndpointsResultSchema = object({ endpoints: array(object({
22629
22650
  * ordering between polls.
22630
22651
  */
22631
22652
  priority: number()
22632
- })).readonly() });
22653
+ });
22654
+ /**
22655
+ * Where the advertised local port came from. Ordered most → least
22656
+ * authoritative, and the whole point of returning it: a client must be able to
22657
+ * tell a FACT about the hub's socket from an echo of its own guess.
22658
+ */
22659
+ var LocalPortSourceEnum = _enum([
22660
+ "server-config",
22661
+ "server-env",
22662
+ "caller-hint",
22663
+ "default"
22664
+ ]);
22665
+ /** The port every LAN/loopback `baseUrl` in the same result was built with. */
22666
+ var AdvertisedLocalPortSchema = object({
22667
+ port: number().int().min(1).max(65535),
22668
+ source: LocalPortSourceEnum
22669
+ });
22670
+ var GetConnectionEndpointsResultSchema = object({
22671
+ endpoints: array(ConnectionEndpointSchema).readonly(),
22672
+ /**
22673
+ * The port the hub built the LAN/loopback URLs with, and where that number
22674
+ * came from.
22675
+ *
22676
+ * Returned rather than merely applied, because "the URL is right" and "the
22677
+ * client can KNOW the URL is right" are different properties. A client that
22678
+ * only sees a corrected URL cannot distinguish a hub that fixed the port from
22679
+ * a hub that echoed the port the client sent, so it cannot decide whether to
22680
+ * race the candidate or discard it. With `source` it can: anything but
22681
+ * `caller-hint` is the hub's own socket.
22682
+ *
22683
+ * Absent on hubs predating this field — a client that finds it missing is
22684
+ * talking to an echoing hub and must degrade exactly as it does for
22685
+ * `caller-hint`.
22686
+ */
22687
+ localPort: AdvertisedLocalPortSchema
22688
+ });
22633
22689
  /**
22634
22690
  * The chosen outbound endpoint for notification artifacts. `baseUrl: null` =
22635
22691
  * AUTO (resolved from the candidate ranking at send time); `resolved` reports
@@ -22650,8 +22706,13 @@ var AllowedAddressesSchema = object({
22650
22706
  */
22651
22707
  addresses: array(string()).readonly() });
22652
22708
  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),
22709
+ /**
22710
+ * LEGACY HINT — do not send from new code. Kept optional so clients
22711
+ * written against the echoing contract keep working; the hub uses it
22712
+ * only when it cannot read its own port, and says so via
22713
+ * `localPort.source === 'caller-hint'`.
22714
+ */
22715
+ port: number().int().min(1).max(65535).optional(),
22655
22716
  /** Include `http(s)://127.0.0.1:<port>` as the lowest-priority
22656
22717
  * candidate. Default `true`. */
22657
22718
  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.24",
4
4
  "description": "ONVIF camera device provider addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",