@camstack/addon-osd-manager 0.1.175 → 0.1.177

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 (18) hide show
  1. package/dist/{MotionZonesSettings-CLHuPFP2.mjs → MotionZonesSettings-CcB84dlo.mjs} +2 -2
  2. package/dist/{PrivacyMaskSettings-msEoZGV4.mjs → PrivacyMaskSettings-DalwJE1H.mjs} +4 -4
  3. package/dist/{SceneMonitorEditor-CDMTyPOI.mjs → SceneMonitorEditor-ByYD2_B7.mjs} +3 -3
  4. package/dist/_stub.js +11 -11
  5. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-BOWRi4wx.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-rjMWCIzH.mjs} +3 -3
  6. package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CvTmBOOx.mjs +26 -0
  7. package/dist/{hostInit-B0oLGxE3.mjs → hostInit-CXLnB7Bk.mjs} +2 -2
  8. package/dist/index.js +197 -46
  9. package/dist/index.mjs +197 -46
  10. package/dist/{player-overlays-Ci5aBEqV.mjs → player-overlays-kkiTPmDD.mjs} +1 -1
  11. package/dist/remoteEntry.js +1 -1
  12. package/dist/{responsive-D83cn_B2.mjs → responsive-_WBtlHBe.mjs} +1 -1
  13. package/dist/{scene-monitor-copy-T37cA01e.mjs → scene-monitor-copy-DZvVtuAg.mjs} +1 -1
  14. package/dist/{square-BBks-LOA.mjs → square-BOhVTPei.mjs} +1 -1
  15. package/dist/{trash-2-B4ohh3xr.mjs → trash-2-36L1cR9Z.mjs} +1 -1
  16. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-C0g1t6Aa.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js--THkWh6A.mjs} +1 -1
  17. package/package.json +1 -1
  18. package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-C2RynBx0.mjs +0 -26
package/dist/index.js CHANGED
@@ -5382,7 +5382,7 @@ var ZodIssueCode = {
5382
5382
  var ZodFirstPartyTypeKind;
5383
5383
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5384
5384
  //#endregion
5385
- //#region ../types/dist/sleep-DXKLNFvA.mjs
5385
+ //#region ../types/dist/sleep-C16NCZR2.mjs
5386
5386
  /**
5387
5387
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5388
5388
  * window to float samples (D455).
@@ -18398,6 +18398,12 @@ var filesystemBrowseCapability = {
18398
18398
  })
18399
18399
  }
18400
18400
  };
18401
+ var HUB_ADDRESS_ROLES = [
18402
+ "appConnections",
18403
+ "notificationTaps",
18404
+ "internal",
18405
+ "publicEndpoint"
18406
+ ];
18401
18407
  /**
18402
18408
  * Transport bounds for AI capability methods.
18403
18409
  *
@@ -23449,7 +23455,13 @@ var NcAlarmModeDelaysListSchema = array(object({
23449
23455
  * Absent = false (logged, not sent). Even when true it is not sent when that same sensor
23450
23456
  * is the one that starts the entry delay — the entry-delay notification already names it.
23451
23457
  */
23452
- notifySensorRewatched: boolean().optional()
23458
+ notifySensorRewatched: boolean().optional(),
23459
+ /**
23460
+ * D735: notify "ignored" when a sensor this arm bypassed really MOVED while armed (its own
23461
+ * change time is after the arm) and set nothing off. Absent = false (logged, not sent). A
23462
+ * re-sync, a recovery from `unavailable` or a duplicate is never announced, switch or not.
23463
+ */
23464
+ notifySensorIgnored: boolean().optional()
23453
23465
  })).max(8).refine(uniqueModes, { message: "modeDelays: at most one entry per arm mode" });
23454
23466
  var NcAlarmModeDelaysEditListSchema = array(object({
23455
23467
  mode: AlarmArmModeSchema,
@@ -23462,7 +23474,9 @@ var NcAlarmModeDelaysEditListSchema = array(object({
23462
23474
  /** D706: set the switch, or `null` to clear it (back to the default, false). */
23463
23475
  notifyDuringEntryDelay: boolean().nullable().optional(),
23464
23476
  /** D706: set the switch, or `null` to clear it (back to the default, false). */
23465
- notifySensorRewatched: boolean().nullable().optional()
23477
+ notifySensorRewatched: boolean().nullable().optional(),
23478
+ /** D735: set the switch, or `null` to clear it (back to the default, false). */
23479
+ notifySensorIgnored: boolean().nullable().optional()
23466
23480
  })).max(8).refine(uniqueModes, { message: "modeDelays: at most one edit per arm mode" });
23467
23481
  /** One switch of the alarm table: put ONE device on, or take it off, ONE mode's list. */
23468
23482
  var NcAlarmNonBlockingEditSchema = object({
@@ -33650,6 +33664,35 @@ var webrtcSessionCapability = {
33650
33664
  alive: boolean()
33651
33665
  })),
33652
33666
  /**
33667
+ * The viewer's downlink probe, for ONE live session (D733).
33668
+ *
33669
+ * The player measures `/adaptive-probe` after the session's first decoded
33670
+ * frame (D635). It used to act on the reading itself, by opening a SECOND
33671
+ * session with `hints.downlinkMbps` — every adaptive live open became two
33672
+ * sessions, two ICE + DTLS handshakes and two server pipelines. It now
33673
+ * hands the measurement to the session it already has; the provider picks
33674
+ * the rung exactly as it would from an offer's hints (same viewport
33675
+ * ceiling) and moves the session there — in place when the negotiated
33676
+ * codec carries the new rendition, by the existing re-offer
33677
+ * (`getSessionState.pendingRenegotiation`) when it cannot.
33678
+ *
33679
+ * A MEASUREMENT, never a tier: the client does not choose. A probe only
33680
+ * raises the rung; lowering it stays the ladder's call on delivery.
33681
+ * `held` answers why nothing moved (`not-adaptive`, `pinned`,
33682
+ * `already-there`, `recorded`, …) — a client that gets ANY answer must not
33683
+ * fall back to a reconnect; only a provider that does not know the method
33684
+ * (an older hub) leaves the client its legacy second session.
33685
+ */
33686
+ applyDownlinkProbe: method(object({
33687
+ deviceId: number().int().nonnegative(),
33688
+ sessionId: string(),
33689
+ downlinkMbps: number().nonnegative()
33690
+ }), object({
33691
+ outcome: _enum(["switching", "held"]),
33692
+ tier: CamProfileSchema.nullable(),
33693
+ reason: string()
33694
+ }), { kind: "mutation" }),
33695
+ /**
33653
33696
  * The SERVER's half of the stream-debug overlay, for one live session.
33654
33697
  *
33655
33698
  * The client can measure its own transport (`getStats()`); it cannot see
@@ -37878,7 +37921,8 @@ var ConnectionEndpointSchema = object({
37878
37921
  "lan-ipv6",
37879
37922
  "public",
37880
37923
  "loopback",
37881
- "app-link"
37924
+ "app-link",
37925
+ "custom"
37882
37926
  ]),
37883
37927
  /**
37884
37928
  * Originating-interface kind — `lan`/`wifi`/`docker`/`vpn`/`other`/
@@ -37947,7 +37991,7 @@ var GetConnectionEndpointsResultSchema = object({
37947
37991
  localPort: AdvertisedLocalPortSchema
37948
37992
  });
37949
37993
  /**
37950
- * The address flagged for notification links. `baseUrl: null` = AUTO, which
37994
+ * The address flagged for notification taps (`notificationTaps`). `baseUrl: null` = AUTO, which
37951
37995
  * since D709 is the CamStack app link; `resolved` reports the effective value,
37952
37996
  * so the UI can show it either way.
37953
37997
  */
@@ -37981,13 +38025,12 @@ var ViewerEndpointsSchema = object({
37981
38025
  resolved: array(string()).readonly()
37982
38026
  });
37983
38027
  /**
37984
- * One audience's hub address (see `hub-address.ts`): the operator's stored
37985
- * override, the address in use, and where it came from.
38028
+ * DEPRECATED compatibility shape of `getHubAddresses` (D729 amendment, kept
38029
+ * for addons built against it): `cluster` is the `internal` role, `browser`
38030
+ * the `publicEndpoint` role; `override` is the flagged address.
37986
38031
  */
37987
38032
  var HubAddressSnapshotSchema = object({
37988
- /** The operator's override, or null for automatic. */
37989
38033
  override: string().nullable(),
37990
- /** The address in use, or null when nothing qualifies (never loopback). */
37991
38034
  resolved: string().nullable(),
37992
38035
  source: _enum([
37993
38036
  "override",
@@ -37996,11 +38039,57 @@ var HubAddressSnapshotSchema = object({
37996
38039
  ])
37997
38040
  });
37998
38041
  var HubAddressesSchema = object({
37999
- /** "Hub address for agents" — agents' bundle/model pulls, LAN devices. */
38000
38042
  cluster: HubAddressSnapshotSchema,
38001
- /** "Public address for sign-in links" — e-mail links, OIDC, WebAuthn, OAuth2. */
38002
38043
  browser: HubAddressSnapshotSchema
38003
38044
  });
38045
+ /**
38046
+ * What an address is used for (`hub-address.ts`, D734). `appConnections` is
38047
+ * many-valued; `notificationTaps`, `publicEndpoint` and `internal` are carried
38048
+ * by at most one address.
38049
+ */
38050
+ var HubAddressRoleSchema = _enum(HUB_ADDRESS_ROLES);
38051
+ var RoleSourceSchema = _enum([
38052
+ "flagged",
38053
+ "auto",
38054
+ "none"
38055
+ ]);
38056
+ /** One single-valued role: the flagged address, the one in use, and why. */
38057
+ var HubAddressRoleResolutionSchema = object({
38058
+ /** The address carrying the flag, or null = automatic. */
38059
+ flagged: string().nullable(),
38060
+ /** The address in use, or null when nothing qualifies (never loopback). */
38061
+ resolved: string().nullable(),
38062
+ source: RoleSourceSchema
38063
+ });
38064
+ var HubAppConnectionsResolutionSchema = object({
38065
+ /** The addresses flagged `appConnections`, or empty = automatic. */
38066
+ flagged: array(string()).readonly(),
38067
+ /** What the apps race right now. */
38068
+ resolved: array(string()).readonly(),
38069
+ source: RoleSourceSchema
38070
+ });
38071
+ var HubAddressBookSchema = object({
38072
+ rows: array(ConnectionEndpointSchema.extend({
38073
+ /** In the hub's detected palette right now. */
38074
+ detected: boolean(),
38075
+ /** Entered by the operator (removable). */
38076
+ custom: boolean(),
38077
+ /** The roles explicitly flagged on this address. */
38078
+ flags: array(HubAddressRoleSchema).readonly(),
38079
+ /** The roles this address serves right now — flagged or automatic. */
38080
+ inUse: array(HubAddressRoleSchema).readonly(),
38081
+ /** The roles this address may be flagged with. */
38082
+ eligible: array(HubAddressRoleSchema).readonly()
38083
+ })).readonly(),
38084
+ roles: object({
38085
+ appConnections: HubAppConnectionsResolutionSchema,
38086
+ notificationTaps: HubAddressRoleResolutionSchema,
38087
+ internal: HubAddressRoleResolutionSchema,
38088
+ publicEndpoint: HubAddressRoleResolutionSchema
38089
+ }),
38090
+ /** The `hub=` an app link carries (D709), or null. */
38091
+ appLinkHub: string().nullable()
38092
+ });
38004
38093
  var AllowedAddressesSchema = object({
38005
38094
  /**
38006
38095
  * Allowlist of interface addresses operators have explicitly opted
@@ -38091,19 +38180,18 @@ var localNetworkCapability = {
38091
38180
  * tunnel always emits `https://` regardless. */
38092
38181
  scheme: _enum(["http", "https"]).optional(),
38093
38182
  /** Append the CamStack app link entry (`kind: 'app-link'`, D709) —
38094
- * an address notification links can be flagged with, not a hub
38183
+ * an address notification taps can be flagged with, not a hub
38095
38184
  * route. Default `false`: racers and rankers never see it. */
38096
38185
  includeAppLink: boolean().optional()
38097
38186
  }), GetConnectionEndpointsResultSchema),
38098
38187
  /**
38099
- * The address notification links are flagged with. `baseUrl: null` means
38100
- * AUTO, which is the CamStack app link (D709): viewer taps go through
38101
- * `https://camstack.zentik.app/…?hub=<appLinkHub>` and open the app. Any
38102
- * hub address the palette lists can be flagged instead; then viewer taps,
38103
- * attachment links and action buttons all use it. Signed media and
38104
- * buttons never use the app link — with it flagged (or AUTO) they keep
38105
- * the ranked hub ladder (a configured origin, a connected tunnel, then
38106
- * the LAN), never loopback.
38188
+ * The `notificationTaps` role (D734): where TAPPING a notification opens.
38189
+ * `baseUrl: null` means AUTO, which is the CamStack app link (D709): taps
38190
+ * go through `https://camstack.zentik.app/…?hub=<appLinkHub>` and open the
38191
+ * app. Any hub address the palette lists can be flagged instead; then a
38192
+ * tap opens that address. Only the tap: action buttons, attachment /
38193
+ * media links and admin links follow the `publicEndpoint` role
38194
+ * (`getAddresses().roles.publicEndpoint`), never this one.
38107
38195
  *
38108
38196
  * Why an explicit marker: the automatic ranking cannot know which of
38109
38197
  * several reachable addresses the RECIPIENT can actually open. A link is
@@ -38113,46 +38201,80 @@ var localNetworkCapability = {
38113
38201
  */
38114
38202
  getNotificationEndpoint: method(_void(), NotificationEndpointSchema),
38115
38203
  /**
38116
- * Mark which endpoint notification artifacts use. `baseUrl: null` restores
38117
- * AUTO. The value is stored verbatim (not an index into the candidate
38118
- * list): interfaces come and go, and an index would silently re-point at a
38119
- * different address after a reboot.
38204
+ * @deprecated Use `setAddressRole({ role: 'notificationTaps', … })`. It
38205
+ * writes the same `notificationTaps` flag, with the same validation. `baseUrl: null` restores automatic; an
38206
+ * address that is not detected becomes a custom address.
38120
38207
  */
38121
38208
  setNotificationEndpoint: method(object({ baseUrl: string().nullable() }), NotificationEndpointSchema, { kind: "mutation" }),
38122
38209
  /**
38123
- * The endpoints the SDK / viewer races for API access. Empty `baseUrls`
38124
- * means AUTO: every LAN IPv4 address plus the public tunnel, never IPv6,
38125
- * never mesh, never loopback. `resolved` is that set (or the operator's
38126
- * explicit subset) as it stands right now.
38210
+ * The `appConnections` role as shipped apps read it: the flagged addresses
38211
+ * (detected or custom), or empty for AUTO — every LAN IPv4 address plus
38212
+ * the public tunnel, never IPv6, mesh, loopback or a custom address.
38213
+ * `resolved` is the set as it stands right now; the custom ones in it are
38214
+ * also in `getConnectionEndpoints`, which the apps filter by it.
38127
38215
  */
38128
38216
  getViewerEndpoints: method(_void(), ViewerEndpointsSchema),
38129
38217
  /**
38130
- * Replace the viewer race set. Empty `baseUrls` restores AUTO. Stored
38131
- * verbatim (not indices) so a temporarily-down tunnel is not silently
38132
- * dropped from the operator's choice.
38218
+ * @deprecated Use `setAddressRole({ role: 'appConnections', … })`. It
38219
+ * replaces the same `appConnections` flags.
38220
+ * Empty `baseUrls` restores automatic.
38133
38221
  */
38134
38222
  setViewerEndpoints: method(object({ baseUrls: array(string()).readonly() }), ViewerEndpointsSchema, { kind: "mutation" }),
38135
38223
  /**
38136
- * The hub's address for each audience — agents (`cluster`) and sign-in
38137
- * links (`browser`) — as every consumer must read it: the operator's
38138
- * override when set, else the automatic pick from this cap's palette,
38139
- * never loopback. The ONE answer to "at which address is this hub
38140
- * reached?"; there is no environment variable for it.
38224
+ * The Network page's Addresses table and every role's answer — the ONE
38225
+ * reading of "which address is this hub reached at, for what": detected
38226
+ * endpoints and custom addresses with their role flags, and per role the
38227
+ * flagged address, the one in use and whether it is automatic. Agent
38228
+ * deliveries and LAN devices read `roles.internal`; sign-in, OAuth2 and
38229
+ * the notification centre's buttons / media / admin links read
38230
+ * `roles.publicEndpoint`; nothing ranks the palette itself. `scheme` is
38231
+ * the one the caller shows LAN rows in (as `getConnectionEndpoints`);
38232
+ * `internal` and `publicEndpoint` are always resolved over the HTTPS
38233
+ * palette.
38141
38234
  */
38142
- getHubAddresses: method(_void(), HubAddressesSchema),
38235
+ getAddresses: method(object({ scheme: _enum(["http", "https"]).optional() }).optional(), HubAddressBookSchema),
38236
+ /**
38237
+ * Add a custom address. Validated: an http(s) origin with a host, no
38238
+ * credentials, no path, never loopback — an invalid one is refused with
38239
+ * the reason and nothing is stored. Adding an address that already exists
38240
+ * only updates its label.
38241
+ */
38242
+ addCustomAddress: method(object({
38243
+ baseUrl: string(),
38244
+ label: string().max(80)
38245
+ }), HubAddressBookSchema, {
38246
+ kind: "mutation",
38247
+ auth: "admin"
38248
+ }),
38249
+ /** Remove a custom address. Its role flags go with it (those roles turn automatic). */
38250
+ removeCustomAddress: method(object({ baseUrl: string() }), HubAddressBookSchema, {
38251
+ kind: "mutation",
38252
+ auth: "admin"
38253
+ }),
38143
38254
  /**
38144
- * Set or clear (`baseUrl: null`) one audience's override. Validated: an
38145
- * http(s) origin with a host, no credentials, no path, never loopback —
38146
- * an invalid value is refused with the reason, nothing is stored.
38255
+ * Flag (`enabled: true`) or unflag an address for a role. For a
38256
+ * single-valued role, flagging moves the flag off every other address.
38257
+ * `baseUrl: null` returns the role to automatic. The address must be a row
38258
+ * of the table (detected, custom, or the app link for `notificationTaps`);
38259
+ * `publicEndpoint` on a plain-http address is refused unless
38260
+ * `acceptInsecureHttp`, and never takes the app link.
38147
38261
  */
38148
- setHubAddress: method(object({
38149
- audience: _enum(["cluster", "browser"]),
38150
- baseUrl: string().nullable()
38151
- }), HubAddressesSchema, {
38262
+ setAddressRole: method(object({
38263
+ role: HubAddressRoleSchema,
38264
+ baseUrl: string().nullable(),
38265
+ enabled: boolean(),
38266
+ acceptInsecureHttp: boolean().optional()
38267
+ }), HubAddressBookSchema, {
38152
38268
  kind: "mutation",
38153
38269
  auth: "admin"
38154
38270
  }),
38155
38271
  /**
38272
+ * @deprecated Read `getAddresses().roles.internal` / `.publicEndpoint`.
38273
+ * Kept so an addon built against the D729 amendment keeps resolving:
38274
+ * `cluster` = the `internal` role, `browser` = the `publicEndpoint` role.
38275
+ */
38276
+ getHubAddresses: method(_void(), HubAddressesSchema),
38277
+ /**
38156
38278
  * Read the operator's allowlist. Empty = "auto" (no filter). Used
38157
38279
  * by the admin UI's address selector to seed its checkbox state.
38158
38280
  */
@@ -49285,12 +49407,24 @@ Object.freeze({
49285
49407
  addonId: null,
49286
49408
  access: "view"
49287
49409
  },
49410
+ "localNetwork.addCustomAddress": {
49411
+ capName: "local-network",
49412
+ capScope: "system",
49413
+ addonId: null,
49414
+ access: "create"
49415
+ },
49288
49416
  "localNetwork.downloadCa": {
49289
49417
  capName: "local-network",
49290
49418
  capScope: "system",
49291
49419
  addonId: null,
49292
49420
  access: "view"
49293
49421
  },
49422
+ "localNetwork.getAddresses": {
49423
+ capName: "local-network",
49424
+ capScope: "system",
49425
+ addonId: null,
49426
+ access: "view"
49427
+ },
49294
49428
  "localNetwork.getAllowedAddresses": {
49295
49429
  capName: "local-network",
49296
49430
  capScope: "system",
@@ -49345,6 +49479,12 @@ Object.freeze({
49345
49479
  addonId: null,
49346
49480
  access: "create"
49347
49481
  },
49482
+ "localNetwork.removeCustomAddress": {
49483
+ capName: "local-network",
49484
+ capScope: "system",
49485
+ addonId: null,
49486
+ access: "delete"
49487
+ },
49348
49488
  "localNetwork.resetAllowlistToBestMatch": {
49349
49489
  capName: "local-network",
49350
49490
  capScope: "system",
@@ -49357,13 +49497,13 @@ Object.freeze({
49357
49497
  addonId: null,
49358
49498
  access: "create"
49359
49499
  },
49360
- "localNetwork.setAllowedAddresses": {
49500
+ "localNetwork.setAddressRole": {
49361
49501
  capName: "local-network",
49362
49502
  capScope: "system",
49363
49503
  addonId: null,
49364
49504
  access: "create"
49365
49505
  },
49366
- "localNetwork.setHubAddress": {
49506
+ "localNetwork.setAllowedAddresses": {
49367
49507
  capName: "local-network",
49368
49508
  capScope: "system",
49369
49509
  addonId: null,
@@ -53617,6 +53757,12 @@ Object.freeze({
53617
53757
  addonId: null,
53618
53758
  access: "create"
53619
53759
  },
53760
+ "webrtcSession.applyDownlinkProbe": {
53761
+ capName: "webrtc-session",
53762
+ capScope: "device",
53763
+ addonId: null,
53764
+ access: "create"
53765
+ },
53620
53766
  "webrtcSession.closeSession": {
53621
53767
  capName: "webrtc-session",
53622
53768
  capScope: "device",
@@ -57715,6 +57861,11 @@ Object.freeze({
57715
57861
  form: "single",
57716
57862
  optional: false
57717
57863
  }],
57864
+ "webrtcSession.applyDownlinkProbe": [{
57865
+ name: "deviceId",
57866
+ form: "single",
57867
+ optional: false
57868
+ }],
57718
57869
  "webrtcSession.closeSession": [{
57719
57870
  name: "deviceId",
57720
57871
  form: "single",