@camstack/system 1.2.434 → 1.2.436

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 (103) hide show
  1. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  2. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  3. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  4. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  5. package/dist/builtins/alerts/alerts.addon.js +1 -1
  6. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  7. package/dist/builtins/autotrack/index.js +1 -1
  8. package/dist/builtins/autotrack/index.mjs +1 -1
  9. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +2 -2
  10. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +2 -2
  11. package/dist/builtins/calendars/calendars.addon.js +1 -1
  12. package/dist/builtins/calendars/calendars.addon.mjs +1 -1
  13. package/dist/builtins/camera-grid/index.js +1 -1
  14. package/dist/builtins/camera-grid/index.mjs +1 -1
  15. package/dist/builtins/composer/composer.addon.js +2 -2
  16. package/dist/builtins/composer/composer.addon.mjs +2 -2
  17. package/dist/builtins/console-logging/index.js +1 -1
  18. package/dist/builtins/console-logging/index.mjs +1 -1
  19. package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
  20. package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
  21. package/dist/builtins/device-manager/device-manager.addon.js +2 -2
  22. package/dist/builtins/device-manager/device-manager.addon.mjs +2 -2
  23. package/dist/builtins/hub-forwarder/index.js +1 -1
  24. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  25. package/dist/builtins/keychain/index.js +6 -7
  26. package/dist/builtins/keychain/index.mjs +6 -7
  27. package/dist/builtins/keychain/keychain-service.d.ts +1 -2
  28. package/dist/builtins/keychain/system-held-secrets.d.ts +5 -5
  29. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  30. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  31. package/dist/builtins/local-auth/local-auth.addon.js +2 -2
  32. package/dist/builtins/local-auth/local-auth.addon.mjs +2 -2
  33. package/dist/builtins/local-network/local-network.addon.d.ts +4 -2
  34. package/dist/builtins/local-network/local-network.addon.js +23 -13
  35. package/dist/builtins/local-network/local-network.addon.mjs +23 -13
  36. package/dist/builtins/loki-logging/index.js +1 -1
  37. package/dist/builtins/loki-logging/index.mjs +1 -1
  38. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  39. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  40. package/dist/builtins/platform-probe/index.js +1 -1
  41. package/dist/builtins/platform-probe/index.mjs +1 -1
  42. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  43. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  44. package/dist/builtins/snapshot/index.js +1 -1
  45. package/dist/builtins/snapshot/index.mjs +1 -1
  46. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  47. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  48. package/dist/builtins/sqlite-storage/index.js +1 -1
  49. package/dist/builtins/sqlite-storage/index.mjs +1 -1
  50. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +3 -3
  51. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +3 -3
  52. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  53. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  54. package/dist/builtins/system-config/system-config.addon.d.ts +3 -24
  55. package/dist/builtins/system-config/system-config.addon.js +105 -1410
  56. package/dist/builtins/system-config/system-config.addon.mjs +108 -1402
  57. package/dist/builtins/winston-logging/index.js +1 -1
  58. package/dist/builtins/winston-logging/index.mjs +1 -1
  59. package/dist/{composition-sources-B7R1oQnY.js → composition-sources-BAOlCu4j.js} +1 -1
  60. package/dist/{composition-sources-CqrDyHM1.mjs → composition-sources-gN_BWUKp.mjs} +1 -1
  61. package/dist/constants-BFpowodq.mjs +20 -0
  62. package/dist/constants-GENKqk9k.js +66 -0
  63. package/dist/{device-ca-CDjGQQPd.mjs → device-ca-BNM5ai4t.mjs} +1 -1
  64. package/dist/{device-ca-D21ZP00q.js → device-ca-CuWuRW9N.js} +1 -1
  65. package/dist/{dist-CCH3XPqO.js → dist-DVe0Nsp8.js} +48 -16
  66. package/dist/{dist-CYcBqnXk.mjs → dist-DjD2M79P.mjs} +43 -5
  67. package/dist/file-host-worker.js +1 -1
  68. package/dist/file-host-worker.mjs +1 -1
  69. package/dist/index.js +132 -795
  70. package/dist/index.mjs +133 -753
  71. package/dist/kernel/index.d.ts +7 -21
  72. package/dist/kernel/moleculer/agent-ui-unlock.d.ts +7 -32
  73. package/dist/kernel/moleculer/broker-factory.d.ts +3 -9
  74. package/dist/kernel/moleculer/broker-transport-swap.d.ts +17 -0
  75. package/dist/kernel/moleculer/hub-service.d.ts +6 -16
  76. package/dist/kernel/moleculer/mesh-access-middleware.d.ts +7 -17
  77. package/dist/kernel/moleculer/mesh-identity.d.ts +57 -0
  78. package/dist/kernel/moleculer/mesh-mtls/constants.d.ts +1 -4
  79. package/dist/kernel/moleculer/mesh-mtls/index.d.ts +1 -4
  80. package/dist/kernel/moleculer/mesh-mtls/mesh-ca.d.ts +1 -1
  81. package/dist/kernel/moleculer/mesh-mtls/mesh-renewal.d.ts +1 -1
  82. package/dist/kernel/moleculer/node-registry.d.ts +0 -6
  83. package/dist/kernel/moleculer/register-node-client.d.ts +9 -7
  84. package/dist/{restore-archive-5ml7uYMf.mjs → restore-archive-BxmP1ChO.mjs} +1 -1
  85. package/dist/{restore-archive-Do0QwAik.js → restore-archive-D4h904rb.js} +1 -1
  86. package/dist/{retired-settings-keys-CyDdyjLP.mjs → retired-settings-keys-CQaknvx1.mjs} +1 -1
  87. package/dist/{retired-settings-keys-CEiCaI_j.js → retired-settings-keys-CYP5IZJ5.js} +1 -1
  88. package/dist/{wal-maintenance-LZYd8iT-.js → wal-maintenance-Br60onAQ.js} +0 -0
  89. package/dist/{wal-maintenance-DgLLPK14.mjs → wal-maintenance-CaDsrJM_.mjs} +0 -0
  90. package/package.json +1 -1
  91. package/dist/builtins/system-config/cluster-secret-keeper.d.ts +0 -63
  92. package/dist/constants-CrMPWOug.mjs +0 -102
  93. package/dist/constants-CuOfMdYe.js +0 -221
  94. package/dist/kernel/moleculer/agent-mesh-authenticator.d.ts +0 -91
  95. package/dist/kernel/moleculer/cluster-secret.d.ts +0 -46
  96. package/dist/kernel/moleculer/mesh-auth-mode.d.ts +0 -58
  97. package/dist/kernel/moleculer/mesh-authenticator.d.ts +0 -77
  98. package/dist/kernel/moleculer/mesh-auto-enforce.d.ts +0 -46
  99. package/dist/kernel/moleculer/mesh-join-client.d.ts +0 -73
  100. package/dist/kernel/moleculer/mesh-join-hold.d.ts +0 -85
  101. package/dist/kernel/moleculer/mesh-join-proof.d.ts +0 -39
  102. package/dist/kernel/moleculer/mesh-mtls/mesh-enroll.d.ts +0 -34
  103. package/dist/kernel/moleculer/mesh-mtls/mesh-join-token.d.ts +0 -56
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CCH3XPqO.js");
6
+ const require_dist = require("../../dist-DVe0Nsp8.js");
7
7
  const require_formatter = require("../../formatter-DqAKDlvN.js");
8
8
  let node_path = require("node:path");
9
9
  node_path = require_chunk.__toESM(node_path);
@@ -1,4 +1,4 @@
1
- import { br as BaseAddon, cn as logDestinationCapability } from "../../dist-CYcBqnXk.mjs";
1
+ import { ln as logDestinationCapability, xr as BaseAddon } from "../../dist-DjD2M79P.mjs";
2
2
  import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
3
3
  import * as path$1 from "node:path";
4
4
  import path from "node:path";
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-CCH3XPqO.js");
1
+ const require_dist = require("./dist-DVe0Nsp8.js");
2
2
  //#region src/builtins/core-blocks/composition-sources.ts
3
3
  /**
4
4
  * Describe what a composition reads and writes for SAVE-time validation
@@ -1,4 +1,4 @@
1
- import { fr as compositionSourceKey, yr as errMsg } from "./dist-CYcBqnXk.mjs";
1
+ import { br as errMsg, pr as compositionSourceKey } from "./dist-DjD2M79P.mjs";
2
2
  //#region src/builtins/core-blocks/composition-sources.ts
3
3
  /**
4
4
  * Describe what a composition reads and writes for SAVE-time validation
@@ -0,0 +1,20 @@
1
+ import { Pr as buildSecretRef } from "./dist-DjD2M79P.mjs";
2
+ /** `secret://system/global/meshCaKey` — EC P-256 PKCS#8 PEM of the hub mesh CA. */
3
+ var MESH_CA_KEY_REF = buildSecretRef({
4
+ owner: "system",
5
+ scope: { kind: "global" },
6
+ fieldPath: "meshCaKey"
7
+ });
8
+ /** `system-settings` key holding the public CA certificate PEM. */
9
+ var MESH_CA_SETTINGS_KEY = "cluster.meshCa";
10
+ /** Field inside the `cluster` section. */
11
+ var MESH_CA_FIELD = "meshCa";
12
+ var MESH_CA_VALIDITY_DAYS = 3650;
13
+ var DEFAULT_HUB_TLS_TCP_PORT = 6443;
14
+ /** Subject of the mesh root. Distinct from the HTTPS local CA. */
15
+ var MESH_CA_COMMON_NAME = "CamStack Mesh CA";
16
+ /** Client + server auth EKU OIDs (mutual TLS). */
17
+ var SERVER_AUTH_OID = "1.3.6.1.5.5.7.3.1";
18
+ var CLIENT_AUTH_OID = "1.3.6.1.5.5.7.3.2";
19
+ //#endregion
20
+ export { MESH_CA_KEY_REF as a, SERVER_AUTH_OID as c, MESH_CA_FIELD as i, DEFAULT_HUB_TLS_TCP_PORT as n, MESH_CA_SETTINGS_KEY as o, MESH_CA_COMMON_NAME as r, MESH_CA_VALIDITY_DAYS as s, CLIENT_AUTH_OID as t };
@@ -0,0 +1,66 @@
1
+ /** `secret://system/global/meshCaKey` — EC P-256 PKCS#8 PEM of the hub mesh CA. */
2
+ var MESH_CA_KEY_REF = require("./dist-DVe0Nsp8.js").buildSecretRef({
3
+ owner: "system",
4
+ scope: { kind: "global" },
5
+ fieldPath: "meshCaKey"
6
+ });
7
+ /** `system-settings` key holding the public CA certificate PEM. */
8
+ var MESH_CA_SETTINGS_KEY = "cluster.meshCa";
9
+ /** Field inside the `cluster` section. */
10
+ var MESH_CA_FIELD = "meshCa";
11
+ var MESH_CA_VALIDITY_DAYS = 3650;
12
+ var DEFAULT_HUB_TLS_TCP_PORT = 6443;
13
+ /** Subject of the mesh root. Distinct from the HTTPS local CA. */
14
+ var MESH_CA_COMMON_NAME = "CamStack Mesh CA";
15
+ /** Client + server auth EKU OIDs (mutual TLS). */
16
+ var SERVER_AUTH_OID = "1.3.6.1.5.5.7.3.1";
17
+ var CLIENT_AUTH_OID = "1.3.6.1.5.5.7.3.2";
18
+ //#endregion
19
+ Object.defineProperty(exports, "CLIENT_AUTH_OID", {
20
+ enumerable: true,
21
+ get: function() {
22
+ return CLIENT_AUTH_OID;
23
+ }
24
+ });
25
+ Object.defineProperty(exports, "DEFAULT_HUB_TLS_TCP_PORT", {
26
+ enumerable: true,
27
+ get: function() {
28
+ return DEFAULT_HUB_TLS_TCP_PORT;
29
+ }
30
+ });
31
+ Object.defineProperty(exports, "MESH_CA_COMMON_NAME", {
32
+ enumerable: true,
33
+ get: function() {
34
+ return MESH_CA_COMMON_NAME;
35
+ }
36
+ });
37
+ Object.defineProperty(exports, "MESH_CA_FIELD", {
38
+ enumerable: true,
39
+ get: function() {
40
+ return MESH_CA_FIELD;
41
+ }
42
+ });
43
+ Object.defineProperty(exports, "MESH_CA_KEY_REF", {
44
+ enumerable: true,
45
+ get: function() {
46
+ return MESH_CA_KEY_REF;
47
+ }
48
+ });
49
+ Object.defineProperty(exports, "MESH_CA_SETTINGS_KEY", {
50
+ enumerable: true,
51
+ get: function() {
52
+ return MESH_CA_SETTINGS_KEY;
53
+ }
54
+ });
55
+ Object.defineProperty(exports, "MESH_CA_VALIDITY_DAYS", {
56
+ enumerable: true,
57
+ get: function() {
58
+ return MESH_CA_VALIDITY_DAYS;
59
+ }
60
+ });
61
+ Object.defineProperty(exports, "SERVER_AUTH_OID", {
62
+ enumerable: true,
63
+ get: function() {
64
+ return SERVER_AUTH_OID;
65
+ }
66
+ });
@@ -1,4 +1,4 @@
1
- import { E as DEVICE_SAN_USER_PREFIX, Nr as buildSecretRef, T as DEVICE_SAN_CREDENTIAL_PREFIX } from "./dist-CYcBqnXk.mjs";
1
+ import { E as DEVICE_SAN_USER_PREFIX, Pr as buildSecretRef, T as DEVICE_SAN_CREDENTIAL_PREFIX } from "./dist-DjD2M79P.mjs";
2
2
  import { a as KeyUsagesExtension, d as X509Certificate$1, f as X509CertificateGenerator, g as backdatedNotBefore, i as KeyUsageFlags, l as SubjectAlternativeNameExtension, n as BasicConstraintsExtension, o as PemConverter, p as cryptoProvider, r as ExtendedKeyUsageExtension, t as AuthorityKeyIdentifierExtension, u as SubjectKeyIdentifierExtension } from "./x509.es-CDvj67p1.mjs";
3
3
  import { X509Certificate, createPublicKey, randomBytes, verify, webcrypto } from "node:crypto";
4
4
  //#region src/auth/jwt-signing-key.ts
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-CCH3XPqO.js");
1
+ const require_dist = require("./dist-DVe0Nsp8.js");
2
2
  const require_x509_es = require("./x509.es-r7Ht1thA.js");
3
3
  let node_crypto = require("node:crypto");
4
4
  //#region src/auth/jwt-signing-key.ts
@@ -39976,10 +39976,14 @@ function isLanIpv4Literal(endpoint) {
39976
39976
  const host = hostnameOf(endpoint.baseUrl);
39977
39977
  return host !== null && IPV4_LITERAL.test(host);
39978
39978
  }
39979
+ function isUnstable(endpoint) {
39980
+ return endpoint.stable === false;
39981
+ }
39979
39982
  /** Lower = better; `null` = never this role's AUTOMATIC answer. */
39980
39983
  function autoRankFor(role, endpoint) {
39981
39984
  if (endpoint.kind === "loopback" || endpoint.kind === "app-link" || endpoint.kind === "custom") return null;
39982
39985
  if (hostnameOf(endpoint.baseUrl) === null) return null;
39986
+ if (isUnstable(endpoint)) return null;
39983
39987
  if (role === "internal") {
39984
39988
  if (isLanIpv4Literal(endpoint)) return 0;
39985
39989
  if (isPlausibleLan(endpoint)) return 1;
@@ -40134,6 +40138,7 @@ function resolveNotificationTapAddress(flags) {
40134
40138
  }
40135
40139
  /** AUTO app connections: LAN IPv4 + the public tunnel. Never IPv6, mesh, loopback or custom. */
40136
40140
  function isDefaultAppConnectionEndpoint(endpoint) {
40141
+ if (isUnstable(endpoint)) return false;
40137
40142
  if (endpoint.kind === "lan-ipv4") return true;
40138
40143
  return endpoint.kind === "public" && endpoint.interfaceKind === "public";
40139
40144
  }
@@ -41860,7 +41865,25 @@ var NetworkEndpointSchema = zod.z.object({
41860
41865
  url: zod.z.string(),
41861
41866
  hostname: zod.z.string(),
41862
41867
  port: zod.z.number(),
41863
- protocol: zod.z.enum(["http", "https"])
41868
+ protocol: zod.z.enum(["http", "https"]),
41869
+ /**
41870
+ * Whether this address survives a restart of its provider. `false` = it is
41871
+ * re-issued every time (a Quick tunnel's random `*.trycloudflare.com`); the
41872
+ * hub never selects such an address AUTOMATICALLY for a role (D860), though
41873
+ * it stays visible and an operator may still flag it. Absent = stable: every
41874
+ * provider except a Quick tunnel owns a name that does not change.
41875
+ */
41876
+ stable: zod.z.boolean().optional()
41877
+ });
41878
+ /**
41879
+ * `data` of a `network.tunnel.started` event — what `local-network` (which
41880
+ * tails the bus and cannot import a provider) learns about the new address.
41881
+ */
41882
+ var NetworkTunnelStartedDataSchema = zod.z.object({
41883
+ url: zod.z.string(),
41884
+ /** Mirrors {@link NetworkEndpointSchema} `stable`; absent = stable. */
41885
+ stable: zod.z.boolean().optional(),
41886
+ updated: zod.z.boolean().optional()
41864
41887
  });
41865
41888
  var NetworkAccessStatusSchema = zod.z.object({
41866
41889
  connected: zod.z.boolean(),
@@ -57156,7 +57179,12 @@ var SearchResultSchema = zod.z.object({
57156
57179
  publishedAt: zod.z.string(),
57157
57180
  author: zod.z.string(),
57158
57181
  installed: zod.z.boolean(),
57159
- installedVersion: zod.z.string().optional()
57182
+ installedVersion: zod.z.string().optional(),
57183
+ /**
57184
+ * Capability names the package's addons declare (from its published
57185
+ * manifest). `null` = the registry lookup failed — unknown, never `[]` (D393).
57186
+ */
57187
+ capabilities: zod.z.array(zod.z.string()).readonly().nullable()
57160
57188
  });
57161
57189
  var AutoUpdateSettingsSchema = zod.z.object({
57162
57190
  channel: ChannelSchema,
@@ -57375,7 +57403,11 @@ var addonsCapability = {
57375
57403
  kind: "mutation",
57376
57404
  auth: "admin"
57377
57405
  }),
57378
- searchAvailable: method(zod.z.object({ query: zod.z.string().optional() }), zod.z.array(SearchResultSchema)),
57406
+ searchAvailable: method(zod.z.object({
57407
+ query: zod.z.string().optional(),
57408
+ /** Only packages whose addons declare this capability (unknown ones excluded). */
57409
+ capability: zod.z.string().optional()
57410
+ }), zod.z.array(SearchResultSchema)),
57379
57411
  /**
57380
57412
  * Available package updates for a node. `nodeId` omitted (or
57381
57413
  * `'hub'`) checks the hub's own installed packages; an agent
@@ -61482,7 +61514,13 @@ var ConnectionEndpointSchema = zod.z.object({
61482
61514
  * calls so the client can sort even if the cap returns a new
61483
61515
  * ordering between polls.
61484
61516
  */
61485
- priority: zod.z.number()
61517
+ priority: zod.z.number(),
61518
+ /**
61519
+ * `false` = the address changes on its own (a Quick tunnel, re-issued on
61520
+ * every respawn). Automatic role resolution skips it (D860); an explicit
61521
+ * operator flag still honours it. Absent = stable.
61522
+ */
61523
+ stable: zod.z.boolean().optional()
61486
61524
  });
61487
61525
  /**
61488
61526
  * Where the advertised local port came from. Ordered most → least
@@ -85833,6 +85871,12 @@ Object.defineProperty(exports, "MOTION_CLOSE_AFTER_MS", {
85833
85871
  return MOTION_CLOSE_AFTER_MS;
85834
85872
  }
85835
85873
  });
85874
+ Object.defineProperty(exports, "NetworkTunnelStartedDataSchema", {
85875
+ enumerable: true,
85876
+ get: function() {
85877
+ return NetworkTunnelStartedDataSchema;
85878
+ }
85879
+ });
85836
85880
  Object.defineProperty(exports, "RECORDING_SOURCE_CAMSTACK_ADDON", {
85837
85881
  enumerable: true,
85838
85882
  get: function() {
@@ -86529,12 +86573,6 @@ Object.defineProperty(exports, "looseSchema", {
86529
86573
  return looseSchema;
86530
86574
  }
86531
86575
  });
86532
- Object.defineProperty(exports, "makeSecretMarker", {
86533
- enumerable: true,
86534
- get: function() {
86535
- return makeSecretMarker;
86536
- }
86537
- });
86538
86576
  Object.defineProperty(exports, "mayReadLocation", {
86539
86577
  enumerable: true,
86540
86578
  get: function() {
@@ -86775,12 +86813,6 @@ Object.defineProperty(exports, "secretTreeFromPaths", {
86775
86813
  return secretTreeFromPaths;
86776
86814
  }
86777
86815
  });
86778
- Object.defineProperty(exports, "secretTreeFromSchema", {
86779
- enumerable: true,
86780
- get: function() {
86781
- return secretTreeFromSchema;
86782
- }
86783
- });
86784
86816
  Object.defineProperty(exports, "settingsStoreCapability", {
86785
86817
  enumerable: true,
86786
86818
  get: function() {
@@ -39976,10 +39976,14 @@ function isLanIpv4Literal(endpoint) {
39976
39976
  const host = hostnameOf(endpoint.baseUrl);
39977
39977
  return host !== null && IPV4_LITERAL.test(host);
39978
39978
  }
39979
+ function isUnstable(endpoint) {
39980
+ return endpoint.stable === false;
39981
+ }
39979
39982
  /** Lower = better; `null` = never this role's AUTOMATIC answer. */
39980
39983
  function autoRankFor(role, endpoint) {
39981
39984
  if (endpoint.kind === "loopback" || endpoint.kind === "app-link" || endpoint.kind === "custom") return null;
39982
39985
  if (hostnameOf(endpoint.baseUrl) === null) return null;
39986
+ if (isUnstable(endpoint)) return null;
39983
39987
  if (role === "internal") {
39984
39988
  if (isLanIpv4Literal(endpoint)) return 0;
39985
39989
  if (isPlausibleLan(endpoint)) return 1;
@@ -40134,6 +40138,7 @@ function resolveNotificationTapAddress(flags) {
40134
40138
  }
40135
40139
  /** AUTO app connections: LAN IPv4 + the public tunnel. Never IPv6, mesh, loopback or custom. */
40136
40140
  function isDefaultAppConnectionEndpoint(endpoint) {
40141
+ if (isUnstable(endpoint)) return false;
40137
40142
  if (endpoint.kind === "lan-ipv4") return true;
40138
40143
  return endpoint.kind === "public" && endpoint.interfaceKind === "public";
40139
40144
  }
@@ -41860,7 +41865,25 @@ var NetworkEndpointSchema = z.object({
41860
41865
  url: z.string(),
41861
41866
  hostname: z.string(),
41862
41867
  port: z.number(),
41863
- protocol: z.enum(["http", "https"])
41868
+ protocol: z.enum(["http", "https"]),
41869
+ /**
41870
+ * Whether this address survives a restart of its provider. `false` = it is
41871
+ * re-issued every time (a Quick tunnel's random `*.trycloudflare.com`); the
41872
+ * hub never selects such an address AUTOMATICALLY for a role (D860), though
41873
+ * it stays visible and an operator may still flag it. Absent = stable: every
41874
+ * provider except a Quick tunnel owns a name that does not change.
41875
+ */
41876
+ stable: z.boolean().optional()
41877
+ });
41878
+ /**
41879
+ * `data` of a `network.tunnel.started` event — what `local-network` (which
41880
+ * tails the bus and cannot import a provider) learns about the new address.
41881
+ */
41882
+ var NetworkTunnelStartedDataSchema = z.object({
41883
+ url: z.string(),
41884
+ /** Mirrors {@link NetworkEndpointSchema} `stable`; absent = stable. */
41885
+ stable: z.boolean().optional(),
41886
+ updated: z.boolean().optional()
41864
41887
  });
41865
41888
  var NetworkAccessStatusSchema = z.object({
41866
41889
  connected: z.boolean(),
@@ -57156,7 +57179,12 @@ var SearchResultSchema = z.object({
57156
57179
  publishedAt: z.string(),
57157
57180
  author: z.string(),
57158
57181
  installed: z.boolean(),
57159
- installedVersion: z.string().optional()
57182
+ installedVersion: z.string().optional(),
57183
+ /**
57184
+ * Capability names the package's addons declare (from its published
57185
+ * manifest). `null` = the registry lookup failed — unknown, never `[]` (D393).
57186
+ */
57187
+ capabilities: z.array(z.string()).readonly().nullable()
57160
57188
  });
57161
57189
  var AutoUpdateSettingsSchema = z.object({
57162
57190
  channel: ChannelSchema,
@@ -57375,7 +57403,11 @@ var addonsCapability = {
57375
57403
  kind: "mutation",
57376
57404
  auth: "admin"
57377
57405
  }),
57378
- searchAvailable: method(z.object({ query: z.string().optional() }), z.array(SearchResultSchema)),
57406
+ searchAvailable: method(z.object({
57407
+ query: z.string().optional(),
57408
+ /** Only packages whose addons declare this capability (unknown ones excluded). */
57409
+ capability: z.string().optional()
57410
+ }), z.array(SearchResultSchema)),
57379
57411
  /**
57380
57412
  * Available package updates for a node. `nodeId` omitted (or
57381
57413
  * `'hub'`) checks the hub's own installed packages; an agent
@@ -61482,7 +61514,13 @@ var ConnectionEndpointSchema = z.object({
61482
61514
  * calls so the client can sort even if the cap returns a new
61483
61515
  * ordering between polls.
61484
61516
  */
61485
- priority: z.number()
61517
+ priority: z.number(),
61518
+ /**
61519
+ * `false` = the address changes on its own (a Quick tunnel, re-issued on
61520
+ * every respawn). Automatic role resolution skips it (D860); an explicit
61521
+ * operator flag still honours it. Absent = stable.
61522
+ */
61523
+ stable: z.boolean().optional()
61486
61524
  });
61487
61525
  /**
61488
61526
  * Where the advertised local port came from. Ordered most → least
@@ -85545,4 +85583,4 @@ function enumerateInferenceDevices(hw) {
85545
85583
  return out;
85546
85584
  }
85547
85585
  //#endregion
85548
- export { addonWidgetsCapability as $, validateCustomAddress as $n, parseJsonObject as $r, isVoidInput as $t, FieldClaimModeSchema as A, resolveBucketMs as An, asJsonObject as Ar, deviceExtensionCapability as At, RECORDING_SOURCE_CAMSTACK_ADDON as B, scoreRuntimes as Bn, emitReadiness as Br, expressionContainsBuiltinCall as Bt, DEVICE_ENROLLMENT_TTL_MS as C, planComposition as Cn, DEVICE_STATUS_METHOD as Cr, databaseSnapshotCapability as Ct, DeclaredDevices as D, reducePoints as Dn, ReadinessTimeoutError as Dr, deriveBatteryPresence as Dt, DEVICE_SAN_USER_PREFIX as E, ptzAutotrackCapability as En, ReadinessRegistry as Er, defineExtensionSlotProvider as Et, LOG_LEVEL_RANK as F, resolveMethodAuth as Fn, collectZodSecretPaths as Fr, enumerateItemArrayFields as Ft, SsoBridgeClaimsSchema as G, storageMigrationCapability as Gn, isEvent as Gr, formatMinutes as Gt, STORAGE_ACCESS_FALLBACK as H, siteZoneKey as Hn, formatSecretScope as Hr, filesystemBrowseCapability as Ht, LegacyStorageLocationDefaultSchema as I, resolveNotificationTapAddress as In, createEvent as Ir, enumerateSchemaFields as It, StorageLocationTypeSchema as J, streamCatalogCapability as Jn, isSecretMarker as Jr, isArrayOutputSchema as Jt, StorageCleanupJobSchema as K, storageOccupancyCapability as Kn, isKeychainStoredField as Kr, gbToBytes as Kt, METHOD_ACCESS_MAP as L, runtimeStatePolicyFor as Ln, customAction as Lr, evaluateCompositionField as Lt, HUB_MDNS_SERVICE_TYPE as M, resolveCoreBlockFiles as Mn, asString$1 as Mr, deviceStateCapability as Mt, HUB_MDNS_TXT_KEYS as N, resolveHubAddressRoles as Nn, buildSecretRef as Nr, deviceStatusCapability as Nt, DeviceStatusSchema as O, replacedFieldKeys as On, SECRET_CLEAR as Or, describeComposableCaps as Ot, KEYCHAIN_RESET_TRIGGER_ACTOR as P, resolveLocationMode as Pn, collectSecretConfigKeys as Pr, enumerateInferenceDevices as Pt, addonSettingsCapability as Q, validateComposition as Qn, normalizeSecretOwner as Qr, isObjectInput as Qt, MINUTES_PER_DAY as R, scopesAllowAddon as Rn, defineCustomActions as Rr, evictionPolicyOfLocation as Rt, DERIVED_CAMERA_SILENCED_CAP_NAMES as S, pickAppLinkHub as Sn, DEVICE_SETTINGS_CONTRIBUTION_METHODS as Sr, dataStoreProviderCapability as St, DEVICE_SAN_CREDENTIAL_PREFIX as T, procedureAuthKey as Tn, RUNTIME_DEFAULTS as Tr, decodeVectorBase64 as Tt, STREAM_PROFILE_META as U, snapshotCapability as Un, hydrateSchema as Ur, foldSnapshotByFunction as Ut, RecordingStatusSchema as V, settingsStoreCapability as Vn, expandCapMethods as Vr, extractNestedAddonId as Vt, ScopedTokenSchema as W, storageCapability as Wn, isDeviceConfigCap as Wr, formatDeviceRevoker as Wt, UserRecordSchema as X, supportedRuntimes as Xn, makeSecretMarker as Xr, isDefaultAppConnectionEndpoint as Xt, StorageMigrationJobSchema as Y, streamQualityLabel as Yn, isSecretMarkerLike as Yr, isCollectionArrayMethod as Yt, addonPagesCapability as Z, userManagementCapability as Zn, nodePin as Zr, isLocationEnabled as Zt, DATABASE_SNAPSHOT_PARTIAL_SUFFIX as _, normalizeCoreBlockWrite as _n, DeviceRole as _r, coreBlockComposition as _t, ApiKeyRecordSchema as a, scopeKey as ai, lifecycleJobSchema as an, buildFfmpegArgs as ar, buildCapabilityLookup as at, DATA_STORE_DATABASES as b, objectInputDeclaresRequiredDeviceId as bn, BaseAddon as br, coreBlocksCapability as bt, CAMERA_SWITCH_ORDER as c, sleep as ci, logDestinationCapability as cn, composedDeviceStableId as cr, buildStreamParamsConfigSchema as ct, COMPOSED_ITEM_FIXED_FIELDS as d, transformSecretWrite as di, mayReadLocation as dn, compositionSliceKey as dr, canonicalIconKey as dt, parseJsonUnknown as ei, kebabToCamel as en, vectorDimFromBase64 as er, alertsCapability as et, COMPOSER_RUNNER_ID as f, EventCategory as fi, mayWriteToLocation as fn, compositionSourceKey as fr, checkRoleAddress as ft, CoreBlockSchema as g, motionCapability as gn, DeviceFeature as gr, coreBlockAddonId as gt, CalendarPreferencesSchema as h, modeMayWrite as hn, toExpressionValue as hr, compositionSourceRefs as ht, AlertSchema as i, resolveSecretMarkers as ii, legacyModeOf as in, COMPOSER_ADDON_ID as ir, batteryCapability as it, FieldClaimSchema as j, resolveCoreBlockEntry as jn, asNumber as jr, deviceManagerCapability as jt, FIRST_LEVEL_MACRO_CLASSES as k, resolveAppConnections as kn, WELL_KNOWN_TAB_MAP as kr, deviceCredentialsCapability as kt, CAMSTACK_APP_LINK_ORIGIN as l, toNodeId as li, logLevelAtMost as ln, compositionFeatureEnabled as lr, calendarsCapability as lt, CORE_BLOCK_ADDON_PREFIX as m, metricsProviderCapability as mn, disarmRoseMemory as mr, compositionFieldKey as mt, AGENT_MDNS_TXT_KEYS as n, readinessKey as ni, keychainCapability as nn, vectorStoreCapability as nr, backupCapability as nt, BaseDevice as o, secretTreeFromPaths as oi, localNetworkCapability as on, cloneStatefulExpressionMemory as or, buildDeviceEnrollmentLink as ot, CORE_BLOCKS_ADDON_ID as p, memoizePinnedFfmpeg as pn, createStatefulExpressionMemory as pr, composerCapability as pt, StorageLocationModeSchema as q, storageProviderCapability as qn, isSecretClear as qr, isAppLinkBase as qt, ALL_CAPABILITY_DEFINITIONS as r, resolveCapMount as ri, legacyAutoLinkIds as rn, withLocationMode as rr, bareAddonId as rt, BatteryStatusSchema as s, secretTreeFromSchema as si, locationIconKey as sn, composedDeviceRef as sr, buildDeviceSignatureMessage as st, AGENT_MDNS_SERVICE_TYPE as t, parseSecretRef as ti, keychainAdminCapability as tn, vectorIndexDimConflictError as tr, authProviderCapability as tt, CAP_NAMES_WITH_STATUS as u, toSecretFieldView as ui, looseSchema as un, compositionItemFieldPath as ur, cameraGridLayoutCapability as ut, DATABASE_SNAPSHOT_SUFFIX as v, normalizeUnit as vn, DeviceType as vr, coreBlockIdFromAddonId as vt, DEVICE_NONCE_TTL_MS as w, platformProbeCapability as wn, REDACTED_SECRET as wr, declarationOwnerNodeId as wt, DAY_NAMES as x, parseStreamParamsFormPatch as xn, DATAPLANE_SECRET_HEADER as xr, createDeviceExtensionProvider as xt, DATABASE_SNAPSHOT_TIMEOUT_MS as y, objectInputDeclaresAddonId as yn, errMsg as yr, coreBlockSourceKind as yt, MOTION_CLOSE_AFTER_MS as z, scopesAllowDeviceCap as zn, emitDownForOwnedCaps as zr, expandContainer as zt };
85586
+ export { addonSettingsCapability as $, validateComposition as $n, parseJsonObject as $r, isObjectInput as $t, FieldClaimModeSchema as A, resolveAppConnections as An, WELL_KNOWN_TAB_MAP as Ar, deviceCredentialsCapability as At, NetworkTunnelStartedDataSchema as B, scopesAllowDeviceCap as Bn, emitDownForOwnedCaps as Br, expandContainer as Bt, DEVICE_ENROLLMENT_TTL_MS as C, pickAppLinkHub as Cn, DEVICE_SETTINGS_CONTRIBUTION_METHODS as Cr, dataStoreProviderCapability as Ct, DeclaredDevices as D, ptzAutotrackCapability as Dn, ReadinessRegistry as Dr, defineExtensionSlotProvider as Dt, DEVICE_SAN_USER_PREFIX as E, procedureAuthKey as En, RUNTIME_DEFAULTS as Er, decodeVectorBase64 as Et, LOG_LEVEL_RANK as F, resolveLocationMode as Fn, collectSecretConfigKeys as Fr, enumerateInferenceDevices as Ft, ScopedTokenSchema as G, storageCapability as Gn, isDeviceConfigCap as Gr, formatDeviceRevoker as Gt, RecordingStatusSchema as H, settingsStoreCapability as Hn, expandCapMethods as Hr, extractNestedAddonId as Ht, LegacyStorageLocationDefaultSchema as I, resolveMethodAuth as In, collectZodSecretPaths as Ir, enumerateItemArrayFields as It, StorageLocationModeSchema as J, storageProviderCapability as Jn, isSecretClear as Jr, isAppLinkBase as Jt, SsoBridgeClaimsSchema as K, storageMigrationCapability as Kn, isEvent as Kr, formatMinutes as Kt, METHOD_ACCESS_MAP as L, resolveNotificationTapAddress as Ln, createEvent as Lr, enumerateSchemaFields as Lt, HUB_MDNS_SERVICE_TYPE as M, resolveCoreBlockEntry as Mn, asNumber as Mr, deviceManagerCapability as Mt, HUB_MDNS_TXT_KEYS as N, resolveCoreBlockFiles as Nn, asString$1 as Nr, deviceStateCapability as Nt, DeviceStatusSchema as O, reducePoints as On, ReadinessTimeoutError as Or, deriveBatteryPresence as Ot, KEYCHAIN_RESET_TRIGGER_ACTOR as P, resolveHubAddressRoles as Pn, buildSecretRef as Pr, deviceStatusCapability as Pt, addonPagesCapability as Q, userManagementCapability as Qn, normalizeSecretOwner as Qr, isLocationEnabled as Qt, MINUTES_PER_DAY as R, runtimeStatePolicyFor as Rn, customAction as Rr, evaluateCompositionField as Rt, DERIVED_CAMERA_SILENCED_CAP_NAMES as S, parseStreamParamsFormPatch as Sn, DATAPLANE_SECRET_HEADER as Sr, createDeviceExtensionProvider as St, DEVICE_SAN_CREDENTIAL_PREFIX as T, platformProbeCapability as Tn, REDACTED_SECRET as Tr, declarationOwnerNodeId as Tt, STORAGE_ACCESS_FALLBACK as U, siteZoneKey as Un, formatSecretScope as Ur, filesystemBrowseCapability as Ut, RECORDING_SOURCE_CAMSTACK_ADDON as V, scoreRuntimes as Vn, emitReadiness as Vr, expressionContainsBuiltinCall as Vt, STREAM_PROFILE_META as W, snapshotCapability as Wn, hydrateSchema as Wr, foldSnapshotByFunction as Wt, StorageMigrationJobSchema as X, streamQualityLabel as Xn, isSecretMarkerLike as Xr, isCollectionArrayMethod as Xt, StorageLocationTypeSchema as Y, streamCatalogCapability as Yn, isSecretMarker as Yr, isArrayOutputSchema as Yt, UserRecordSchema as Z, supportedRuntimes as Zn, nodePin as Zr, isDefaultAppConnectionEndpoint as Zt, DATABASE_SNAPSHOT_PARTIAL_SUFFIX as _, motionCapability as _n, DeviceFeature as _r, coreBlockAddonId as _t, ApiKeyRecordSchema as a, scopeKey as ai, legacyModeOf as an, COMPOSER_ADDON_ID as ar, batteryCapability as at, DATA_STORE_DATABASES as b, objectInputDeclaresAddonId as bn, errMsg as br, coreBlockSourceKind as bt, CAMERA_SWITCH_ORDER as c, toNodeId as ci, locationIconKey as cn, composedDeviceRef as cr, buildDeviceSignatureMessage as ct, COMPOSED_ITEM_FIXED_FIELDS as d, EventCategory as di, looseSchema as dn, compositionItemFieldPath as dr, cameraGridLayoutCapability as dt, parseJsonUnknown as ei, isVoidInput as en, validateCustomAddress as er, addonWidgetsCapability as et, COMPOSER_RUNNER_ID as f, mayReadLocation as fn, compositionSliceKey as fr, canonicalIconKey as ft, CoreBlockSchema as g, modeMayWrite as gn, toExpressionValue as gr, compositionSourceRefs as gt, CalendarPreferencesSchema as h, metricsProviderCapability as hn, disarmRoseMemory as hr, compositionFieldKey as ht, AlertSchema as i, resolveSecretMarkers as ii, legacyAutoLinkIds as in, withLocationMode as ir, bareAddonId as it, FieldClaimSchema as j, resolveBucketMs as jn, asJsonObject as jr, deviceExtensionCapability as jt, FIRST_LEVEL_MACRO_CLASSES as k, replacedFieldKeys as kn, SECRET_CLEAR as kr, describeComposableCaps as kt, CAMSTACK_APP_LINK_ORIGIN as l, toSecretFieldView as li, logDestinationCapability as ln, composedDeviceStableId as lr, buildStreamParamsConfigSchema as lt, CORE_BLOCK_ADDON_PREFIX as m, memoizePinnedFfmpeg as mn, createStatefulExpressionMemory as mr, composerCapability as mt, AGENT_MDNS_TXT_KEYS as n, readinessKey as ni, keychainAdminCapability as nn, vectorIndexDimConflictError as nr, authProviderCapability as nt, BaseDevice as o, secretTreeFromPaths as oi, lifecycleJobSchema as on, buildFfmpegArgs as or, buildCapabilityLookup as ot, CORE_BLOCKS_ADDON_ID as p, mayWriteToLocation as pn, compositionSourceKey as pr, checkRoleAddress as pt, StorageCleanupJobSchema as q, storageOccupancyCapability as qn, isKeychainStoredField as qr, gbToBytes as qt, ALL_CAPABILITY_DEFINITIONS as r, resolveCapMount as ri, keychainCapability as rn, vectorStoreCapability as rr, backupCapability as rt, BatteryStatusSchema as s, sleep as si, localNetworkCapability as sn, cloneStatefulExpressionMemory as sr, buildDeviceEnrollmentLink as st, AGENT_MDNS_SERVICE_TYPE as t, parseSecretRef as ti, kebabToCamel as tn, vectorDimFromBase64 as tr, alertsCapability as tt, CAP_NAMES_WITH_STATUS as u, transformSecretWrite as ui, logLevelAtMost as un, compositionFeatureEnabled as ur, calendarsCapability as ut, DATABASE_SNAPSHOT_SUFFIX as v, normalizeCoreBlockWrite as vn, DeviceRole as vr, coreBlockComposition as vt, DEVICE_NONCE_TTL_MS as w, planComposition as wn, DEVICE_STATUS_METHOD as wr, databaseSnapshotCapability as wt, DAY_NAMES as x, objectInputDeclaresRequiredDeviceId as xn, BaseAddon as xr, coreBlocksCapability as xt, DATABASE_SNAPSHOT_TIMEOUT_MS as y, normalizeUnit as yn, DeviceType as yr, coreBlockIdFromAddonId as yt, MOTION_CLOSE_AFTER_MS as z, scopesAllowAddon as zn, defineCustomActions as zr, evictionPolicyOfLocation as zt };
@@ -1,5 +1,5 @@
1
1
  require("./chunk-Cek0wNdY.js");
2
- const require_wal_maintenance = require("./wal-maintenance-LZYd8iT-.js");
2
+ const require_wal_maintenance = require("./wal-maintenance-Br60onAQ.js");
3
3
  let node_worker_threads = require("node:worker_threads");
4
4
  //#region src/builtins/sqlite-storage/file-host-worker.ts
5
5
  /**
@@ -1,4 +1,4 @@
1
- import { C as callControl, E as controlTargetOf, T as callVector, _ as collectTransferables, a as WalMaintenance, b as isFileHostWorkerData, c as SqliteSettingsBackend, h as serializeError, o as createVectorIndex, s as vectorProviderOf, w as callData, x as trustInput, y as isFileHostRequest } from "./wal-maintenance-DgLLPK14.mjs";
1
+ import { C as callControl, E as controlTargetOf, T as callVector, _ as collectTransferables, a as WalMaintenance, b as isFileHostWorkerData, c as SqliteSettingsBackend, h as serializeError, o as createVectorIndex, s as vectorProviderOf, w as callData, x as trustInput, y as isFileHostRequest } from "./wal-maintenance-CaDsrJM_.mjs";
2
2
  import { parentPort, threadId, workerData } from "node:worker_threads";
3
3
  //#region src/builtins/sqlite-storage/file-host-worker.ts
4
4
  /**