@camstack/system 1.2.359 → 1.2.360

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 (65) hide show
  1. package/dist/addon-runner.js +1 -1
  2. package/dist/addon-runner.mjs +1 -1
  3. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  4. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  5. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  6. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  7. package/dist/builtins/alerts/alerts.addon.js +1 -1
  8. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  9. package/dist/builtins/autotrack/index.js +1 -1
  10. package/dist/builtins/autotrack/index.mjs +1 -1
  11. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
  12. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
  13. package/dist/builtins/calendars/calendars.addon.js +1 -1
  14. package/dist/builtins/calendars/calendars.addon.mjs +1 -1
  15. package/dist/builtins/camera-grid/index.js +1 -1
  16. package/dist/builtins/camera-grid/index.mjs +1 -1
  17. package/dist/builtins/composer/composer.addon.js +2 -2
  18. package/dist/builtins/composer/composer.addon.mjs +2 -2
  19. package/dist/builtins/console-logging/index.js +1 -1
  20. package/dist/builtins/console-logging/index.mjs +1 -1
  21. package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
  22. package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
  23. package/dist/builtins/device-manager/device-manager.addon.js +2 -2
  24. package/dist/builtins/device-manager/device-manager.addon.mjs +2 -2
  25. package/dist/builtins/hub-forwarder/index.js +1 -1
  26. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  27. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  28. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  29. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  30. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  31. package/dist/builtins/local-network/address-book.d.ts +17 -17
  32. package/dist/builtins/local-network/local-network.addon.d.ts +21 -18
  33. package/dist/builtins/local-network/local-network.addon.js +85 -83
  34. package/dist/builtins/local-network/local-network.addon.mjs +85 -83
  35. package/dist/builtins/loki-logging/index.js +1 -1
  36. package/dist/builtins/loki-logging/index.mjs +1 -1
  37. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  38. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  39. package/dist/builtins/platform-probe/index.js +1 -1
  40. package/dist/builtins/platform-probe/index.mjs +1 -1
  41. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  42. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  43. package/dist/builtins/snapshot/index.js +1 -1
  44. package/dist/builtins/snapshot/index.mjs +1 -1
  45. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  46. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  47. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
  48. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
  49. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  50. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  51. package/dist/builtins/system-config/system-config.addon.js +1 -1
  52. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  53. package/dist/builtins/winston-logging/index.js +1 -1
  54. package/dist/builtins/winston-logging/index.mjs +1 -1
  55. package/dist/{child-cap-dispatch-Dm1TRDCr.mjs → child-cap-dispatch-StBHObCA.mjs} +1 -1
  56. package/dist/{child-cap-dispatch-t61ohDpb.js → child-cap-dispatch-T3Kdhbb3.js} +1 -1
  57. package/dist/{composition-sources-CHlfWHl6.mjs → composition-sources-DASc7NBj.mjs} +1 -1
  58. package/dist/{composition-sources-CCU_KizO.js → composition-sources-DFgayxCc.js} +1 -1
  59. package/dist/{dist-pTfD_M-U.mjs → dist-C9Rk6KVv.mjs} +100 -84
  60. package/dist/{dist-W_X44h-s.js → dist-Cv1lnnQq.js} +109 -93
  61. package/dist/index.js +2 -2
  62. package/dist/index.mjs +2 -2
  63. package/dist/{retired-settings-keys-jglEzgWR.js → retired-settings-keys-BGNqRNhu.js} +1 -1
  64. package/dist/{retired-settings-keys-CK_ifret.mjs → retired-settings-keys-BjG8bQVI.mjs} +1 -1
  65. package/package.json +1 -1
@@ -17231,6 +17231,12 @@ function pickAppLinkHub(endpoints) {
17231
17231
  }];
17232
17232
  }).toSorted((a, b) => a.r - b.r || a.p - b.p)[0]?.origin ?? null;
17233
17233
  }
17234
+ var HUB_ADDRESS_ROLES = [
17235
+ "appConnections",
17236
+ "notificationTaps",
17237
+ "internal",
17238
+ "publicEndpoint"
17239
+ ];
17234
17240
  var IPV4_LITERAL = /^\d{1,3}(?:\.\d{1,3}){3}$/;
17235
17241
  function hostnameOf(baseUrl) {
17236
17242
  try {
@@ -17261,7 +17267,7 @@ function isLanIpv4Literal(endpoint) {
17261
17267
  function autoRankFor(role, endpoint) {
17262
17268
  if (endpoint.kind === "loopback" || endpoint.kind === "app-link" || endpoint.kind === "custom") return null;
17263
17269
  if (hostnameOf(endpoint.baseUrl) === null) return null;
17264
- if (role === "agents") {
17270
+ if (role === "internal") {
17265
17271
  if (isLanIpv4Literal(endpoint)) return 0;
17266
17272
  if (isPlausibleLan(endpoint)) return 1;
17267
17273
  if (isMesh(endpoint)) return 2;
@@ -17331,28 +17337,28 @@ function validateCustomAddress(raw) {
17331
17337
  baseUrl: parsed.origin
17332
17338
  };
17333
17339
  }
17334
- /** The reason a plain-http sign-in address is refused unless accepted. */
17335
- var SIGN_IN_HTTP_REASON = "Sign-in needs an https:// address: passkeys and most identity providers refuse a plain-http origin. Accept http only for a sign-in that never leaves your own network.";
17340
+ /** The reason a plain-http public endpoint is refused unless accepted. */
17341
+ var PUBLIC_ENDPOINT_HTTP_REASON = "The public endpoint needs an https:// address: passkeys and most identity providers refuse a plain-http origin. Accept http only when sign-in and notification links never leave your own network.";
17336
17342
  /**
17337
17343
  * May `baseUrl` carry `role`? The address check above, plus two role rules:
17338
- * the app link carries `notifications` only (it is not a hub address), and a
17339
- * plain-http address carries `signIn` only when the operator explicitly
17340
- * accepted it (`acceptInsecureHttp`) — a LAN-only password or magic-link
17341
- * sign-in works over http, a passkey or an OIDC callback does not.
17344
+ * the app link carries `notificationTaps` only (it is not a hub address), and
17345
+ * a plain-http address carries `publicEndpoint` only when the operator
17346
+ * explicitly accepted it (`acceptInsecureHttp`) — a LAN-only password or
17347
+ * magic-link sign-in works over http, a passkey or an OIDC callback does not.
17342
17348
  */
17343
17349
  function checkRoleAddress(role, baseUrl, options = {}) {
17344
- if (isAppLinkBase(baseUrl)) return role === "notifications" ? {
17350
+ if (isAppLinkBase(baseUrl)) return role === "notificationTaps" ? {
17345
17351
  ok: true,
17346
17352
  baseUrl: CAMSTACK_APP_LINK_ORIGIN
17347
17353
  } : {
17348
17354
  ok: false,
17349
- reason: "The CamStack app link is not a hub address — only notifications can use it."
17355
+ reason: "The CamStack app link is not a hub address — only notification taps can use it."
17350
17356
  };
17351
17357
  const check = validateCustomAddress(baseUrl);
17352
17358
  if (!check.ok) return check;
17353
- if (role === "signIn" && check.baseUrl.startsWith("http:") && options.acceptInsecureHttp !== true) return {
17359
+ if (role === "publicEndpoint" && check.baseUrl.startsWith("http:") && options.acceptInsecureHttp !== true) return {
17354
17360
  ok: false,
17355
- reason: SIGN_IN_HTTP_REASON
17361
+ reason: PUBLIC_ENDPOINT_HTTP_REASON
17356
17362
  };
17357
17363
  return check;
17358
17364
  }
@@ -17387,17 +17393,21 @@ function resolveHubRole(endpoints, role, flag) {
17387
17393
  source: auto === null ? "none" : "auto"
17388
17394
  };
17389
17395
  }
17390
- /** `agents`: what agents and LAN devices pull from. */
17391
- function resolveAgentsAddress(endpoints, flags) {
17392
- return resolveHubRole(endpoints, "agents", flags.agents);
17396
+ /** `internal`: what agents and LAN devices download from. */
17397
+ function resolveInternalAddress(endpoints, flags) {
17398
+ return resolveHubRole(endpoints, "internal", flags.internal);
17393
17399
  }
17394
- /** `signIn`: sign-in links, OIDC callbacks, the relying party, OAuth2. */
17395
- function resolveSignInAddress(endpoints, flags) {
17396
- return resolveHubRole(endpoints, "signIn", flags.signIn);
17400
+ /**
17401
+ * `publicEndpoint`: every URL that must work off the LAN — sign-in links, OIDC
17402
+ * / OAuth2 callbacks, the relying party, and notification buttons,
17403
+ * attachments, media and admin links.
17404
+ */
17405
+ function resolvePublicEndpoint(endpoints, flags) {
17406
+ return resolveHubRole(endpoints, "publicEndpoint", flags.publicEndpoint);
17397
17407
  }
17398
- /** `notifications`: the flagged address, else the CamStack app link (D709). */
17399
- function resolveNotificationsAddress(flags) {
17400
- const flagged = validFlag("notifications", flags.notifications);
17408
+ /** `notificationTaps`: the flagged address, else the CamStack app link (D709). */
17409
+ function resolveNotificationTapAddress(flags) {
17410
+ const flagged = validFlag("notificationTaps", flags.notificationTaps);
17401
17411
  if (flagged !== null && !isAppLinkBase(flagged)) return {
17402
17412
  flagged,
17403
17413
  resolved: flagged,
@@ -17409,46 +17419,47 @@ function resolveNotificationsAddress(flags) {
17409
17419
  source: "auto"
17410
17420
  };
17411
17421
  }
17412
- /** AUTO viewer race: LAN IPv4 + the public tunnel. Never IPv6, mesh, loopback or custom. */
17413
- function isDefaultViewerEndpoint(endpoint) {
17422
+ /** AUTO app connections: LAN IPv4 + the public tunnel. Never IPv6, mesh, loopback or custom. */
17423
+ function isDefaultAppConnectionEndpoint(endpoint) {
17414
17424
  if (endpoint.kind === "lan-ipv4") return true;
17415
17425
  return endpoint.kind === "public" && endpoint.interfaceKind === "public";
17416
17426
  }
17417
17427
  /**
17418
17428
  * The endpoints the apps race: the flagged ones that are in `endpoints`
17419
- * (which carries the custom addresses flagged `viewer`), else AUTO. A flagged
17429
+ * (which carries the custom addresses flagged `appConnections`), else AUTO. A flagged
17420
17430
  * set none of which is currently up falls back to AUTO rather than racing
17421
17431
  * nothing.
17422
17432
  */
17423
- function selectViewerEndpoints(endpoints, flags) {
17424
- const auto = endpoints.filter(isDefaultViewerEndpoint);
17425
- if (flags.viewer.length === 0) return auto;
17426
- const wanted = new Set(flags.viewer);
17433
+ function selectAppConnectionEndpoints(endpoints, flags) {
17434
+ const auto = endpoints.filter(isDefaultAppConnectionEndpoint);
17435
+ if (flags.appConnections.length === 0) return auto;
17436
+ const wanted = new Set(flags.appConnections);
17427
17437
  const explicit = endpoints.filter((e) => wanted.has(e.baseUrl));
17428
17438
  return explicit.length > 0 ? explicit : auto;
17429
17439
  }
17430
- /** `viewer`: what the apps race and connect to. */
17431
- function resolveViewerAddresses(endpoints, flags) {
17432
- const wanted = new Set(flags.viewer);
17433
- const selected = selectViewerEndpoints(endpoints, flags);
17440
+ /** `appConnections`: what the apps try when connecting. */
17441
+ function resolveAppConnections(endpoints, flags) {
17442
+ const wanted = new Set(flags.appConnections);
17443
+ const selected = selectAppConnectionEndpoints(endpoints, flags);
17434
17444
  const usedFlags = selected.some((e) => wanted.has(e.baseUrl));
17435
17445
  return {
17436
- flagged: flags.viewer,
17446
+ flagged: flags.appConnections,
17437
17447
  resolved: selected.map((e) => e.baseUrl),
17438
17448
  source: selected.length === 0 ? "none" : usedFlags ? "flagged" : "auto"
17439
17449
  };
17440
17450
  }
17441
17451
  /**
17442
- * Every role at once, each through its own resolver. `viewerPalette` is what
17443
- * the apps race (it carries the custom addresses flagged `viewer`);
17444
- * `hubPalette` is the detected HTTPS palette agents and sign-in resolve over.
17452
+ * Every role at once, each through its own resolver. `appPalette` is what
17453
+ * the apps race (it carries the custom addresses flagged `appConnections`);
17454
+ * `hubPalette` is the detected HTTPS palette `internal` and `publicEndpoint`
17455
+ * resolve over.
17445
17456
  */
17446
- function resolveHubAddressRoles(viewerPalette, hubPalette, flags) {
17457
+ function resolveHubAddressRoles(appPalette, hubPalette, flags) {
17447
17458
  return {
17448
- viewer: resolveViewerAddresses(viewerPalette, flags),
17449
- notifications: resolveNotificationsAddress(flags),
17450
- agents: resolveAgentsAddress(hubPalette, flags),
17451
- signIn: resolveSignInAddress(hubPalette, flags)
17459
+ appConnections: resolveAppConnections(appPalette, flags),
17460
+ notificationTaps: resolveNotificationTapAddress(flags),
17461
+ internal: resolveInternalAddress(hubPalette, flags),
17462
+ publicEndpoint: resolvePublicEndpoint(hubPalette, flags)
17452
17463
  };
17453
17464
  }
17454
17465
  /**
@@ -22008,7 +22019,13 @@ var NcAlarmModeDelaysSchema = z.object({
22008
22019
  * Absent = false (logged, not sent). Even when true it is not sent when that same sensor
22009
22020
  * is the one that starts the entry delay — the entry-delay notification already names it.
22010
22021
  */
22011
- notifySensorRewatched: z.boolean().optional()
22022
+ notifySensorRewatched: z.boolean().optional(),
22023
+ /**
22024
+ * D735: notify "ignored" when a sensor this arm bypassed really MOVED while armed (its own
22025
+ * change time is after the arm) and set nothing off. Absent = false (logged, not sent). A
22026
+ * re-sync, a recovery from `unavailable` or a duplicate is never announced, switch or not.
22027
+ */
22028
+ notifySensorIgnored: z.boolean().optional()
22012
22029
  });
22013
22030
  var NcAlarmModeDelaysListSchema = z.array(NcAlarmModeDelaysSchema).max(8).refine(uniqueModes, { message: "modeDelays: at most one entry per arm mode" });
22014
22031
  /**
@@ -22027,7 +22044,9 @@ var NcAlarmModeDelaysEditSchema = z.object({
22027
22044
  /** D706: set the switch, or `null` to clear it (back to the default, false). */
22028
22045
  notifyDuringEntryDelay: z.boolean().nullable().optional(),
22029
22046
  /** D706: set the switch, or `null` to clear it (back to the default, false). */
22030
- notifySensorRewatched: z.boolean().nullable().optional()
22047
+ notifySensorRewatched: z.boolean().nullable().optional(),
22048
+ /** D735: set the switch, or `null` to clear it (back to the default, false). */
22049
+ notifySensorIgnored: z.boolean().nullable().optional()
22031
22050
  });
22032
22051
  var NcAlarmModeDelaysEditListSchema = z.array(NcAlarmModeDelaysEditSchema).max(8).refine(uniqueModes, { message: "modeDelays: at most one edit per arm mode" });
22033
22052
  /** One switch of the alarm table: put ONE device on, or take it off, ONE mode's list. */
@@ -36720,7 +36739,7 @@ var GetConnectionEndpointsResultSchema = z.object({
36720
36739
  localPort: AdvertisedLocalPortSchema
36721
36740
  });
36722
36741
  /**
36723
- * The address flagged for notification links. `baseUrl: null` = AUTO, which
36742
+ * The address flagged for notification taps (`notificationTaps`). `baseUrl: null` = AUTO, which
36724
36743
  * since D709 is the CamStack app link; `resolved` reports the effective value,
36725
36744
  * so the UI can show it either way.
36726
36745
  */
@@ -36755,8 +36774,8 @@ var ViewerEndpointsSchema = z.object({
36755
36774
  });
36756
36775
  /**
36757
36776
  * DEPRECATED compatibility shape of `getHubAddresses` (D729 amendment, kept
36758
- * one release for addons built against it): `cluster` is the `agents` role,
36759
- * `browser` the `signIn` role; `override` is the flagged address.
36777
+ * for addons built against it): `cluster` is the `internal` role, `browser`
36778
+ * the `publicEndpoint` role; `override` is the flagged address.
36760
36779
  */
36761
36780
  var HubAddressSnapshotSchema = z.object({
36762
36781
  override: z.string().nullable(),
@@ -36772,15 +36791,11 @@ var HubAddressesSchema = z.object({
36772
36791
  browser: HubAddressSnapshotSchema
36773
36792
  });
36774
36793
  /**
36775
- * What an address is used for (`hub-address.ts`). `viewer` is many-valued;
36776
- * `notifications`, `agents` and `signIn` are carried by at most one address.
36794
+ * What an address is used for (`hub-address.ts`, D734). `appConnections` is
36795
+ * many-valued; `notificationTaps`, `publicEndpoint` and `internal` are carried
36796
+ * by at most one address.
36777
36797
  */
36778
- var HubAddressRoleSchema = z.enum([
36779
- "viewer",
36780
- "notifications",
36781
- "agents",
36782
- "signIn"
36783
- ]);
36798
+ var HubAddressRoleSchema = z.enum(HUB_ADDRESS_ROLES);
36784
36799
  var RoleSourceSchema = z.enum([
36785
36800
  "flagged",
36786
36801
  "auto",
@@ -36794,8 +36809,8 @@ var HubAddressRoleResolutionSchema = z.object({
36794
36809
  resolved: z.string().nullable(),
36795
36810
  source: RoleSourceSchema
36796
36811
  });
36797
- var HubViewerResolutionSchema = z.object({
36798
- /** The addresses flagged `viewer`, or empty = automatic. */
36812
+ var HubAppConnectionsResolutionSchema = z.object({
36813
+ /** The addresses flagged `appConnections`, or empty = automatic. */
36799
36814
  flagged: z.array(z.string()).readonly(),
36800
36815
  /** What the apps race right now. */
36801
36816
  resolved: z.array(z.string()).readonly(),
@@ -36821,10 +36836,10 @@ var HubAddressRowSchema = ConnectionEndpointSchema.extend({
36821
36836
  var HubAddressBookSchema = z.object({
36822
36837
  rows: z.array(HubAddressRowSchema).readonly(),
36823
36838
  roles: z.object({
36824
- viewer: HubViewerResolutionSchema,
36825
- notifications: HubAddressRoleResolutionSchema,
36826
- agents: HubAddressRoleResolutionSchema,
36827
- signIn: HubAddressRoleResolutionSchema
36839
+ appConnections: HubAppConnectionsResolutionSchema,
36840
+ notificationTaps: HubAddressRoleResolutionSchema,
36841
+ internal: HubAddressRoleResolutionSchema,
36842
+ publicEndpoint: HubAddressRoleResolutionSchema
36828
36843
  }),
36829
36844
  /** The `hub=` an app link carries (D709), or null. */
36830
36845
  appLinkHub: z.string().nullable()
@@ -36919,19 +36934,18 @@ var localNetworkCapability = {
36919
36934
  * tunnel always emits `https://` regardless. */
36920
36935
  scheme: z.enum(["http", "https"]).optional(),
36921
36936
  /** Append the CamStack app link entry (`kind: 'app-link'`, D709) —
36922
- * an address notification links can be flagged with, not a hub
36937
+ * an address notification taps can be flagged with, not a hub
36923
36938
  * route. Default `false`: racers and rankers never see it. */
36924
36939
  includeAppLink: z.boolean().optional()
36925
36940
  }), GetConnectionEndpointsResultSchema),
36926
36941
  /**
36927
- * The address notification links are flagged with. `baseUrl: null` means
36928
- * AUTO, which is the CamStack app link (D709): viewer taps go through
36929
- * `https://camstack.zentik.app/…?hub=<appLinkHub>` and open the app. Any
36930
- * hub address the palette lists can be flagged instead; then viewer taps,
36931
- * attachment links and action buttons all use it. Signed media and
36932
- * buttons never use the app link — with it flagged (or AUTO) they keep
36933
- * the ranked hub ladder (a configured origin, a connected tunnel, then
36934
- * the LAN), never loopback.
36942
+ * The `notificationTaps` role (D734): where TAPPING a notification opens.
36943
+ * `baseUrl: null` means AUTO, which is the CamStack app link (D709): taps
36944
+ * go through `https://camstack.zentik.app/…?hub=<appLinkHub>` and open the
36945
+ * app. Any hub address the palette lists can be flagged instead; then a
36946
+ * tap opens that address. Only the tap: action buttons, attachment /
36947
+ * media links and admin links follow the `publicEndpoint` role
36948
+ * (`getAddresses().roles.publicEndpoint`), never this one.
36935
36949
  *
36936
36950
  * Why an explicit marker: the automatic ranking cannot know which of
36937
36951
  * several reachable addresses the RECIPIENT can actually open. A link is
@@ -36941,14 +36955,13 @@ var localNetworkCapability = {
36941
36955
  */
36942
36956
  getNotificationEndpoint: method(z.void(), NotificationEndpointSchema),
36943
36957
  /**
36944
- * @deprecated Use `setAddressRole({ role: 'notifications', … })`. Kept so
36945
- * an older admin UI keeps working: it writes the same `notifications`
36946
- * flag, with the same validation. `baseUrl: null` restores automatic; an
36958
+ * @deprecated Use `setAddressRole({ role: 'notificationTaps', … })`. It
36959
+ * writes the same `notificationTaps` flag, with the same validation. `baseUrl: null` restores automatic; an
36947
36960
  * address that is not detected becomes a custom address.
36948
36961
  */
36949
36962
  setNotificationEndpoint: method(z.object({ baseUrl: z.string().nullable() }), NotificationEndpointSchema, { kind: "mutation" }),
36950
36963
  /**
36951
- * The `viewer` role as shipped apps read it: the flagged addresses
36964
+ * The `appConnections` role as shipped apps read it: the flagged addresses
36952
36965
  * (detected or custom), or empty for AUTO — every LAN IPv4 address plus
36953
36966
  * the public tunnel, never IPv6, mesh, loopback or a custom address.
36954
36967
  * `resolved` is the set as it stands right now; the custom ones in it are
@@ -36956,8 +36969,8 @@ var localNetworkCapability = {
36956
36969
  */
36957
36970
  getViewerEndpoints: method(z.void(), ViewerEndpointsSchema),
36958
36971
  /**
36959
- * @deprecated Use `setAddressRole({ role: 'viewer', … })`. Kept so an
36960
- * older admin UI keeps working: it replaces the same `viewer` flags.
36972
+ * @deprecated Use `setAddressRole({ role: 'appConnections', … })`. It
36973
+ * replaces the same `appConnections` flags.
36961
36974
  * Empty `baseUrls` restores automatic.
36962
36975
  */
36963
36976
  setViewerEndpoints: method(z.object({ baseUrls: z.array(z.string()).readonly() }), ViewerEndpointsSchema, { kind: "mutation" }),
@@ -36966,10 +36979,12 @@ var localNetworkCapability = {
36966
36979
  * reading of "which address is this hub reached at, for what": detected
36967
36980
  * endpoints and custom addresses with their role flags, and per role the
36968
36981
  * flagged address, the one in use and whether it is automatic. Agent
36969
- * deliveries, sign-in and LAN devices read `roles.agents` / `roles.signIn`
36970
- * here; nothing ranks the palette itself. `scheme` is the one the caller
36971
- * shows LAN rows in (as `getConnectionEndpoints`); agents and sign-in are
36972
- * always resolved over the HTTPS palette.
36982
+ * deliveries and LAN devices read `roles.internal`; sign-in, OAuth2 and
36983
+ * the notification centre's buttons / media / admin links read
36984
+ * `roles.publicEndpoint`; nothing ranks the palette itself. `scheme` is
36985
+ * the one the caller shows LAN rows in (as `getConnectionEndpoints`);
36986
+ * `internal` and `publicEndpoint` are always resolved over the HTTPS
36987
+ * palette.
36973
36988
  */
36974
36989
  getAddresses: method(z.object({ scheme: z.enum(["http", "https"]).optional() }).optional(), HubAddressBookSchema),
36975
36990
  /**
@@ -36994,8 +37009,9 @@ var localNetworkCapability = {
36994
37009
  * Flag (`enabled: true`) or unflag an address for a role. For a
36995
37010
  * single-valued role, flagging moves the flag off every other address.
36996
37011
  * `baseUrl: null` returns the role to automatic. The address must be a row
36997
- * of the table (detected, custom, or the app link for notifications);
36998
- * `signIn` on a plain-http address is refused unless `acceptInsecureHttp`.
37012
+ * of the table (detected, custom, or the app link for `notificationTaps`);
37013
+ * `publicEndpoint` on a plain-http address is refused unless
37014
+ * `acceptInsecureHttp`, and never takes the app link.
36999
37015
  */
37000
37016
  setAddressRole: method(z.object({
37001
37017
  role: HubAddressRoleSchema,
@@ -37007,9 +37023,9 @@ var localNetworkCapability = {
37007
37023
  auth: "admin"
37008
37024
  }),
37009
37025
  /**
37010
- * @deprecated Read `getAddresses().roles.agents` / `.signIn`. Kept one
37011
- * release so an addon built against the D729 amendment keeps resolving:
37012
- * `cluster` = the `agents` role, `browser` = the `signIn` role.
37026
+ * @deprecated Read `getAddresses().roles.internal` / `.publicEndpoint`.
37027
+ * Kept so an addon built against the D729 amendment keeps resolving:
37028
+ * `cluster` = the `internal` role, `browser` = the `publicEndpoint` role.
37013
37029
  */
37014
37030
  getHubAddresses: method(z.void(), HubAddressesSchema),
37015
37031
  /**
@@ -60248,4 +60264,4 @@ function enumerateInferenceDevices(hw) {
60248
60264
  return out;
60249
60265
  }
60250
60266
  //#endregion
60251
- export { calendarsCapability as $, disarmRoseMemory as $n, memoizePinnedFfmpeg as $t, MOTION_CLOSE_AFTER_MS as A, storageCapability as An, EventCategory as Ar, extractNestedAddonId as At, StorageLocationTypeSchema as B, vectorIndexDimConflictError as Bn, isObjectInput as Bt, FieldClaimModeSchema as C, runtimeStatePolicyFor as Cn, parseJsonObject as Cr, enumerateInferenceDevices as Ct, LocationIconIdSchema as D, settingsStoreCapability as Dn, scopeKey as Dr, evictionPolicyOfLocation as Dt, LegacyStorageLocationDefaultSchema as E, scoreRuntimes as En, resolveCapMount as Er, evaluateCompositionField as Et, STORAGE_ACCESS_FALLBACK as F, streamQualityLabel as Fn, isAppLinkBase as Ft, addonWidgetsCapability as G, cloneStatefulExpressionMemory as Gn, lifecycleJobSchema as Gt, UserRecordSchema as H, withLocationMode as Hn, kebabToCamel as Ht, STREAM_PROFILE_META as I, userManagementCapability as In, isArrayOutputSchema as It, backupCapability as J, compositionFeatureEnabled as Jn, logDestinationCapability as Jt, alertsCapability as K, composedDeviceRef as Kn, localNetworkCapability as Kt, ScopedTokenSchema as L, validateComposition as Ln, isCollectionArrayMethod as Lt, REDACTED_SECRET as M, storageOccupancyCapability as Mn, foldSnapshotByFunction as Mt, RUNTIME_DEFAULTS as N, storageProviderCapability as Nn, formatMinutes as Nt, METHOD_ACCESS_MAP as O, siteZoneKey as On, sleep as Or, expandContainer as Ot, RecordingStatusSchema as P, streamCatalogCapability as Pn, gbToBytes as Pt, buildStreamParamsConfigSchema as Q, createStatefulExpressionMemory as Qn, mayWriteToLocation as Qt, StorageCleanupJobSchema as R, validateCustomAddress as Rn, isDefaultViewerEndpoint as Rt, FIRST_LEVEL_MACRO_CLASSES as S, resolveViewerAddresses as Sn, nodePin as Sr, deviceStatusCapability as St, LOG_LEVEL_RANK as T, scopesAllowDeviceCap as Tn, readinessKey as Tr, enumerateSchemaFields as Tt, addonPagesCapability as U, COMPOSER_ADDON_ID as Un, legacyAutoLinkIds as Ut, StorageMigrationJobSchema as V, vectorStoreCapability as Vn, isVoidInput as Vt, addonSettingsCapability as W, buildFfmpegArgs as Wn, legacyModeOf as Wt, batteryCapability as X, compositionSliceKey as Xn, looseSchema as Xt, bareAddonId as Y, compositionItemFieldPath as Yn, logLevelAtMost as Yt, buildCapabilityLookup as Z, compositionSourceKey as Zn, mayReadLocation as Zt, DATABASE_SNAPSHOT_TIMEOUT_MS as _, resolveCoreBlockFiles as _n, emitReadiness as _r, deriveBatteryPresence as _t, BatteryStatusSchema as a, objectInputDeclaresAddonId as an, BaseAddon as ar, compositionSourceRefs as at, DeclaredDevices as b, resolveMethodAuth as bn, isDeviceConfigCap as br, deviceManagerCapability as bt, CAP_NAMES_WITH_STATUS as c, pickAppLinkHub as cn, DEVICE_STATUS_METHOD as cr, coreBlockIdFromAddonId as ct, CORE_BLOCKS_ADDON_ID as d, procedureAuthKey as dn, WELL_KNOWN_TAB_MAP as dr, createDeviceExtensionProvider as dt, metricsProviderCapability as en, toExpressionValue as er, cameraGridLayoutCapability as et, CORE_BLOCK_ADDON_PREFIX as f, ptzAutotrackCapability as fn, asJsonObject as fr, dataStoreProviderCapability as ft, DATABASE_SNAPSHOT_SUFFIX as g, resolveCoreBlockEntry as gn, emitDownForOwnedCaps as gr, defineExtensionSlotProvider as gt, DATABASE_SNAPSHOT_PARTIAL_SUFFIX as h, resolveBucketMs as hn, createEvent as hr, decodeVectorBase64 as ht, BaseDevice as i, normalizeUnit as in, errMsg as ir, compositionFieldKey as it, RECORDING_SOURCE_CAMSTACK_ADDON as j, storageMigrationCapability as jn, filesystemBrowseCapability as jt, MINUTES_PER_DAY as k, snapshotCapability as kn, toNodeId as kr, expressionContainsBuiltinCall as kt, COMPOSED_ITEM_FIXED_FIELDS as l, planComposition as ln, ReadinessRegistry as lr, coreBlockSourceKind as lt, CoreBlockSchema as m, replacedFieldKeys as mn, asString$1 as mr, declarationOwnerNodeId as mt, AlertSchema as n, motionCapability as nn, DeviceRole as nr, collectSecretConfigKeys as nt, CAMERA_SWITCH_ORDER as o, objectInputDeclaresRequiredDeviceId as on, DATAPLANE_SECRET_HEADER as or, coreBlockAddonId as ot, CalendarPreferencesSchema as p, reducePoints as pn, asNumber as pr, databaseSnapshotCapability as pt, authProviderCapability as q, composedDeviceStableId as qn, locationIconKey as qt, ApiKeyRecordSchema as r, normalizeCoreBlockWrite as rn, DeviceType as rr, composerCapability as rt, CAMSTACK_APP_LINK_ORIGIN as s, parseStreamParamsFormPatch as sn, DEVICE_SETTINGS_CONTRIBUTION_METHODS as sr, coreBlockComposition as st, ALL_CAPABILITY_DEFINITIONS as t, modeMayWrite as tn, DeviceFeature as tr, checkRoleAddress as tt, COMPOSER_RUNNER_ID as u, platformProbeCapability as un, ReadinessTimeoutError as ur, coreBlocksCapability as ut, DAY_NAMES as v, resolveHubAddressRoles as vn, expandCapMethods as vr, describeComposableCaps as vt, FieldClaimSchema as w, scopesAllowAddon as wn, parseJsonUnknown as wr, enumerateItemArrayFields as wt, DeviceStatusSchema as x, resolveNotificationsAddress as xn, isEvent as xr, deviceStateCapability as xt, DERIVED_CAMERA_SILENCED_CAP_NAMES as y, resolveLocationMode as yn, hydrateSchema as yr, deviceExtensionCapability as yt, StorageLocationModeSchema as z, vectorDimFromBase64 as zn, isLocationEnabled as zt };
60267
+ export { calendarsCapability as $, disarmRoseMemory as $n, memoizePinnedFfmpeg as $t, MOTION_CLOSE_AFTER_MS as A, storageCapability as An, EventCategory as Ar, extractNestedAddonId as At, StorageLocationTypeSchema as B, vectorIndexDimConflictError as Bn, isObjectInput as Bt, FieldClaimModeSchema as C, runtimeStatePolicyFor as Cn, parseJsonObject as Cr, enumerateInferenceDevices as Ct, LocationIconIdSchema as D, settingsStoreCapability as Dn, scopeKey as Dr, evictionPolicyOfLocation as Dt, LegacyStorageLocationDefaultSchema as E, scoreRuntimes as En, resolveCapMount as Er, evaluateCompositionField as Et, STORAGE_ACCESS_FALLBACK as F, streamQualityLabel as Fn, isAppLinkBase as Ft, addonWidgetsCapability as G, cloneStatefulExpressionMemory as Gn, lifecycleJobSchema as Gt, UserRecordSchema as H, withLocationMode as Hn, kebabToCamel as Ht, STREAM_PROFILE_META as I, userManagementCapability as In, isArrayOutputSchema as It, backupCapability as J, compositionFeatureEnabled as Jn, logDestinationCapability as Jt, alertsCapability as K, composedDeviceRef as Kn, localNetworkCapability as Kt, ScopedTokenSchema as L, validateComposition as Ln, isCollectionArrayMethod as Lt, REDACTED_SECRET as M, storageOccupancyCapability as Mn, foldSnapshotByFunction as Mt, RUNTIME_DEFAULTS as N, storageProviderCapability as Nn, formatMinutes as Nt, METHOD_ACCESS_MAP as O, siteZoneKey as On, sleep as Or, expandContainer as Ot, RecordingStatusSchema as P, streamCatalogCapability as Pn, gbToBytes as Pt, buildStreamParamsConfigSchema as Q, createStatefulExpressionMemory as Qn, mayWriteToLocation as Qt, StorageCleanupJobSchema as R, validateCustomAddress as Rn, isDefaultAppConnectionEndpoint as Rt, FIRST_LEVEL_MACRO_CLASSES as S, resolveNotificationTapAddress as Sn, nodePin as Sr, deviceStatusCapability as St, LOG_LEVEL_RANK as T, scopesAllowDeviceCap as Tn, readinessKey as Tr, enumerateSchemaFields as Tt, addonPagesCapability as U, COMPOSER_ADDON_ID as Un, legacyAutoLinkIds as Ut, StorageMigrationJobSchema as V, vectorStoreCapability as Vn, isVoidInput as Vt, addonSettingsCapability as W, buildFfmpegArgs as Wn, legacyModeOf as Wt, batteryCapability as X, compositionSliceKey as Xn, looseSchema as Xt, bareAddonId as Y, compositionItemFieldPath as Yn, logLevelAtMost as Yt, buildCapabilityLookup as Z, compositionSourceKey as Zn, mayReadLocation as Zt, DATABASE_SNAPSHOT_TIMEOUT_MS as _, resolveCoreBlockEntry as _n, emitReadiness as _r, deriveBatteryPresence as _t, BatteryStatusSchema as a, objectInputDeclaresAddonId as an, BaseAddon as ar, compositionSourceRefs as at, DeclaredDevices as b, resolveLocationMode as bn, isDeviceConfigCap as br, deviceManagerCapability as bt, CAP_NAMES_WITH_STATUS as c, pickAppLinkHub as cn, DEVICE_STATUS_METHOD as cr, coreBlockIdFromAddonId as ct, CORE_BLOCKS_ADDON_ID as d, procedureAuthKey as dn, WELL_KNOWN_TAB_MAP as dr, createDeviceExtensionProvider as dt, metricsProviderCapability as en, toExpressionValue as er, cameraGridLayoutCapability as et, CORE_BLOCK_ADDON_PREFIX as f, ptzAutotrackCapability as fn, asJsonObject as fr, dataStoreProviderCapability as ft, DATABASE_SNAPSHOT_SUFFIX as g, resolveBucketMs as gn, emitDownForOwnedCaps as gr, defineExtensionSlotProvider as gt, DATABASE_SNAPSHOT_PARTIAL_SUFFIX as h, resolveAppConnections as hn, createEvent as hr, decodeVectorBase64 as ht, BaseDevice as i, normalizeUnit as in, errMsg as ir, compositionFieldKey as it, RECORDING_SOURCE_CAMSTACK_ADDON as j, storageMigrationCapability as jn, filesystemBrowseCapability as jt, MINUTES_PER_DAY as k, snapshotCapability as kn, toNodeId as kr, expressionContainsBuiltinCall as kt, COMPOSED_ITEM_FIXED_FIELDS as l, planComposition as ln, ReadinessRegistry as lr, coreBlockSourceKind as lt, CoreBlockSchema as m, replacedFieldKeys as mn, asString$1 as mr, declarationOwnerNodeId as mt, AlertSchema as n, motionCapability as nn, DeviceRole as nr, collectSecretConfigKeys as nt, CAMERA_SWITCH_ORDER as o, objectInputDeclaresRequiredDeviceId as on, DATAPLANE_SECRET_HEADER as or, coreBlockAddonId as ot, CalendarPreferencesSchema as p, reducePoints as pn, asNumber as pr, databaseSnapshotCapability as pt, authProviderCapability as q, composedDeviceStableId as qn, locationIconKey as qt, ApiKeyRecordSchema as r, normalizeCoreBlockWrite as rn, DeviceType as rr, composerCapability as rt, CAMSTACK_APP_LINK_ORIGIN as s, parseStreamParamsFormPatch as sn, DEVICE_SETTINGS_CONTRIBUTION_METHODS as sr, coreBlockComposition as st, ALL_CAPABILITY_DEFINITIONS as t, modeMayWrite as tn, DeviceFeature as tr, checkRoleAddress as tt, COMPOSER_RUNNER_ID as u, platformProbeCapability as un, ReadinessTimeoutError as ur, coreBlocksCapability as ut, DAY_NAMES as v, resolveCoreBlockFiles as vn, expandCapMethods as vr, describeComposableCaps as vt, FieldClaimSchema as w, scopesAllowAddon as wn, parseJsonUnknown as wr, enumerateItemArrayFields as wt, DeviceStatusSchema as x, resolveMethodAuth as xn, isEvent as xr, deviceStateCapability as xt, DERIVED_CAMERA_SILENCED_CAP_NAMES as y, resolveHubAddressRoles as yn, hydrateSchema as yr, deviceExtensionCapability as yt, StorageLocationModeSchema as z, vectorDimFromBase64 as zn, isLocationEnabled as zt };