@camstack/system 1.2.144 → 1.2.146

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 (62) hide show
  1. package/dist/addon-runner.js +2 -1
  2. package/dist/addon-runner.mjs +2 -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/backup-orchestrator/backup-orchestrator.addon.js +1 -1
  10. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
  11. package/dist/builtins/console-logging/index.js +1 -1
  12. package/dist/builtins/console-logging/index.mjs +1 -1
  13. package/dist/builtins/core-blocks/core-blocks.addon.js +1 -1
  14. package/dist/builtins/core-blocks/core-blocks.addon.mjs +1 -1
  15. package/dist/builtins/device-manager/device-manager.addon.js +157 -35
  16. package/dist/builtins/device-manager/device-manager.addon.mjs +157 -35
  17. package/dist/builtins/device-manager/device-queries.d.ts +22 -0
  18. package/dist/builtins/device-manager/device-row-store.d.ts +18 -0
  19. package/dist/builtins/doorbell/virtual-doorbell.addon.js +1 -1
  20. package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
  21. package/dist/builtins/hub-forwarder/index.js +1 -1
  22. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  23. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  24. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  25. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  26. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  27. package/dist/builtins/local-network/local-network.addon.js +1 -1
  28. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  29. package/dist/builtins/loki-logging/index.js +1 -1
  30. package/dist/builtins/loki-logging/index.mjs +1 -1
  31. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  32. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  33. package/dist/builtins/platform-probe/index.js +1 -1
  34. package/dist/builtins/platform-probe/index.mjs +1 -1
  35. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  36. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  37. package/dist/builtins/snapshot/index.js +1 -1
  38. package/dist/builtins/snapshot/index.mjs +1 -1
  39. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  40. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  41. package/dist/builtins/sqlite-storage/sqlite-settings-backend.d.ts +14 -1
  42. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
  43. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
  44. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +2 -1
  45. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +2 -1
  46. package/dist/builtins/system-config/system-config.addon.js +1 -1
  47. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  48. package/dist/builtins/winston-logging/index.js +1 -1
  49. package/dist/builtins/winston-logging/index.mjs +1 -1
  50. package/dist/{dist-D3lqzV40.js → dist-BVU5JADq.js} +401 -24
  51. package/dist/{dist-6rM7chzb.mjs → dist-CG7kwIZp.mjs} +401 -24
  52. package/dist/index.d.ts +2 -2
  53. package/dist/index.js +60 -11
  54. package/dist/index.mjs +52 -12
  55. package/dist/kernel/heap-watch.d.ts +209 -1
  56. package/dist/kernel/moleculer/children-batch-loader.d.ts +46 -0
  57. package/dist/kernel/moleculer/process-service.d.ts +15 -6
  58. package/dist/{manifest-python-deps-BuhBXCg0.mjs → manifest-python-deps-CVeckyXx.mjs} +390 -8
  59. package/dist/{manifest-python-deps-B_mCU6gz.js → manifest-python-deps-CktMcXzS.js} +443 -7
  60. package/dist/{retired-settings-keys-BtvClSPu.mjs → retired-settings-keys-Dm1z4mO4.mjs} +1 -1
  61. package/dist/{retired-settings-keys-OtUQtEbq.js → retired-settings-keys-_PLI9w0k.js} +1 -1
  62. package/package.json +1 -1
@@ -5,6 +5,28 @@ export declare function listPersistedByAddon(pctx: ProviderContext, input: Param
5
5
  export declare function listAll(pctx: ProviderContext, input: Parameters<IDeviceManagerProvider['listAll']>[0]): ReturnType<IDeviceManagerProvider['listAll']>;
6
6
  export declare function getDevice(pctx: ProviderContext, input: Parameters<IDeviceManagerProvider['getDevice']>[0]): ReturnType<IDeviceManagerProvider['getDevice']>;
7
7
  export declare function getChildren(pctx: ProviderContext, input: Parameters<IDeviceManagerProvider['getChildren']>[0]): ReturnType<IDeviceManagerProvider['getChildren']>;
8
+ /**
9
+ * `getChildren` for a set of parents — TWO store reads for the whole set, not
10
+ * two per parent.
11
+ *
12
+ * The single-parent path costs one `resolvePersistedById` (a primary-key read)
13
+ * plus one `listByParent` (an indexed scan) EACH. Asked once per device at
14
+ * boot that was 1 024 of each, measured on the live hub 2026-08-27 — see the
15
+ * cap method's note. Here the ownership lookup for every parent the live
16
+ * registry does not hold is ONE `getMany`, and the children of every parent
17
+ * are ONE `listByParentMany`.
18
+ *
19
+ * The live half is indexed once too: `registry.getChildren` is
20
+ * `getAll().filter(…)`, so calling it per parent would trade an RPC N+1 for an
21
+ * in-memory one — 256 full sweeps of the registry per batch. One pass over
22
+ * `getAll()` buckets every live device by its parent instead.
23
+ *
24
+ * A parent with no children at all is ABSENT from the record; so is a parent
25
+ * the fleet does not know. Same contract as `DeviceRowStore.getMany` — the
26
+ * caller asked about it and gets no row, rather than an invented empty one it
27
+ * cannot tell apart from a real childless parent.
28
+ */
29
+ export declare function getChildrenBatch(pctx: ProviderContext, input: Parameters<IDeviceManagerProvider['getChildrenBatch']>[0]): ReturnType<IDeviceManagerProvider['getChildrenBatch']>;
8
30
  export declare function getStreamSources(pctx: ProviderContext, input: Parameters<IDeviceManagerProvider['getStreamSources']>[0]): ReturnType<IDeviceManagerProvider['getStreamSources']>;
9
31
  export declare function getConfigSchema(pctx: ProviderContext, input: Parameters<IDeviceManagerProvider['getConfigSchema']>[0]): ReturnType<IDeviceManagerProvider['getConfigSchema']>;
10
32
  export declare function getSettingsSchema(pctx: ProviderContext, input: Parameters<IDeviceManagerProvider['getSettingsSchema']>[0]): ReturnType<IDeviceManagerProvider['getSettingsSchema']>;
@@ -296,6 +296,24 @@ export declare class DeviceRowStore {
296
296
  listByIntegration(integrationId: string): Promise<readonly DeviceRow[]>;
297
297
  /** Direct children of one device, ordered by numeric id. */
298
298
  listByParent(parentDeviceId: number): Promise<readonly DeviceRow[]>;
299
+ /**
300
+ * Direct children of MANY devices, in ONE query.
301
+ *
302
+ * `listByParent` called once per parent is the same shape `get` was before
303
+ * {@link getMany}: an indexed lookup this store makes cheap, repeated until
304
+ * it isn't. Measured on the live hub 2026-08-27, 120-second boot window:
305
+ * `DeviceRowStore.list < DeviceRowStore.listByParent < getChildren` at
306
+ * **1 024 calls** — one per device — for 919 rows in total. The BFS in
307
+ * `device-meta-actions.ts#collectDescendants` walked a container tree the
308
+ * same way, one query per node.
309
+ *
310
+ * `whereIn` on the indexed `parentDeviceId` column collapses a level of that
311
+ * walk into a single statement. Contract, verbatim from {@link getMany}: an
312
+ * EMPTY `parentDeviceIds` reads nothing at all rather than degrading to
313
+ * "everything", and a parent with no children — or one the fleet does not
314
+ * know — is simply ABSENT from the map, never an invented empty row.
315
+ */
316
+ listByParentMany(parentDeviceIds: readonly number[]): Promise<ReadonlyMap<number, readonly DeviceRow[]>>;
299
317
  /** How many devices the fleet holds. Used to tell "empty store" from "gone device". */
300
318
  count(): Promise<number>;
301
319
  private list;
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-D3lqzV40.js");
6
+ const require_dist = require("../../dist-BVU5JADq.js");
7
7
  //#region src/builtins/doorbell/trigger-engine.ts
8
8
  /**
9
9
  * Pure trigger logic for the virtual-doorbell builtin — edge detection over
@@ -1,4 +1,4 @@
1
- import { B as doorbellCapability, Et as BaseAddon, Mt as DeviceType, O as bareAddonId, Qt as EventCategory, Tt as errMsg, W as evaluateSensorEdge, X as isSameAddonId, Z as isSourceCap, g as SOURCE_DEVICE_TYPES, h as SOURCE_CAPS, zt as createEvent } from "../../dist-6rM7chzb.mjs";
1
+ import { B as doorbellCapability, Et as BaseAddon, Mt as DeviceType, O as bareAddonId, Qt as EventCategory, Tt as errMsg, W as evaluateSensorEdge, X as isSameAddonId, Z as isSourceCap, g as SOURCE_DEVICE_TYPES, h as SOURCE_CAPS, zt as createEvent } from "../../dist-CG7kwIZp.mjs";
2
2
  //#region src/builtins/doorbell/trigger-engine.ts
3
3
  /**
4
4
  * Pure trigger logic for the virtual-doorbell builtin — edge detection over
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-D3lqzV40.js");
6
+ const require_dist = require("../../dist-BVU5JADq.js");
7
7
  const require_formatter = require("../../formatter-DqAKDlvN.js");
8
8
  //#region src/builtins/hub-forwarder/hub-forwarder-destination.ts
9
9
  var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
@@ -1,4 +1,4 @@
1
- import { Et as BaseAddon, nt as logDestinationCapability } from "../../dist-6rM7chzb.mjs";
1
+ import { Et as BaseAddon, nt as logDestinationCapability } from "../../dist-CG7kwIZp.mjs";
2
2
  import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
3
3
  //#region src/builtins/hub-forwarder/hub-forwarder-destination.ts
4
4
  var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  require("../../chunk-Cek0wNdY.js");
3
- const require_dist = require("../../dist-D3lqzV40.js");
3
+ const require_dist = require("../../dist-BVU5JADq.js");
4
4
  //#region src/builtins/liveness-monitor/liveness-checks.ts
5
5
  var NO_DEVICES = "liveness:no-devices";
6
6
  var ALL_OFFLINE = "liveness:all-devices-offline";
@@ -1,4 +1,4 @@
1
- import { Et as BaseAddon, Qt as EventCategory, Tt as errMsg, zt as createEvent } from "../../dist-6rM7chzb.mjs";
1
+ import { Et as BaseAddon, Qt as EventCategory, Tt as errMsg, zt as createEvent } from "../../dist-CG7kwIZp.mjs";
2
2
  //#region src/builtins/liveness-monitor/liveness-checks.ts
3
3
  var NO_DEVICES = "liveness:no-devices";
4
4
  var ALL_OFFLINE = "liveness:all-devices-offline";
@@ -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-D3lqzV40.js");
6
+ const require_dist = require("../../dist-BVU5JADq.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  node_crypto = require_chunk.__toESM(node_crypto);
9
9
  let crypto$1 = require("crypto");
@@ -1,5 +1,5 @@
1
1
  import { i as __require, o as __toESM, t as __commonJSMin } from "../../chunk-CNf5ZN-e.mjs";
2
- import { E as authProviderCapability, Et as BaseAddon, St as userManagementCapability, r as ApiKeyRecordSchema, v as ScopedTokenSchema, x as UserRecordSchema } from "../../dist-6rM7chzb.mjs";
2
+ import { E as authProviderCapability, Et as BaseAddon, St as userManagementCapability, r as ApiKeyRecordSchema, v as ScopedTokenSchema, x as UserRecordSchema } from "../../dist-CG7kwIZp.mjs";
3
3
  import * as crypto$2 from "node:crypto";
4
4
  import { createHash, randomUUID, timingSafeEqual } from "node:crypto";
5
5
  import nodeCrypto from "crypto";
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("../../chunk-Cek0wNdY.js");
3
- const require_dist = require("../../dist-D3lqzV40.js");
3
+ const require_dist = require("../../dist-BVU5JADq.js");
4
4
  const require_tls = require("../../tls-u8QCJCFE.js");
5
5
  let node_fs_promises = require("node:fs/promises");
6
6
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { Et as BaseAddon, Qt as EventCategory, tt as localNetworkCapability } from "../../dist-6rM7chzb.mjs";
1
+ import { Et as BaseAddon, Qt as EventCategory, tt as localNetworkCapability } from "../../dist-CG7kwIZp.mjs";
2
2
  import { S as readLanHttpState, _ as DEFAULT_LAN_HTTP_PORT, a as writeTlsMode, i as writeExtraSans, l as reissueTlsLeaf, n as readTlsAccessStatus, o as validateUploadedTls, r as readTlsMode, s as ensureTlsCert, t as readExtraSans, y as applyLanHttp } from "../../tls-CQhPGSJm.mjs";
3
3
  import { mkdir, writeFile } from "node:fs/promises";
4
4
  import { join } from "node:path";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-D3lqzV40.js");
6
+ const require_dist = require("../../dist-BVU5JADq.js");
7
7
  //#region src/builtins/loki-logging/loki-payload.ts
8
8
  /**
9
9
  * Loki rejects a label name that is not a valid Prometheus label
@@ -1,4 +1,4 @@
1
- import { Et as BaseAddon, nt as logDestinationCapability } from "../../dist-6rM7chzb.mjs";
1
+ import { Et as BaseAddon, nt as logDestinationCapability } from "../../dist-CG7kwIZp.mjs";
2
2
  //#region src/builtins/loki-logging/loki-payload.ts
3
3
  /**
4
4
  * Loki rejects a label name that is not a valid Prometheus label
@@ -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-D3lqzV40.js");
6
+ const require_dist = require("../../dist-BVU5JADq.js");
7
7
  let node_child_process = require("node:child_process");
8
8
  let node_util = require("node:util");
9
9
  let node_os = require("node:os");
@@ -1,4 +1,4 @@
1
- import { Et as BaseAddon, Qt as EventCategory, at as metricsProviderCapability, zt as createEvent } from "../../dist-6rM7chzb.mjs";
1
+ import { Et as BaseAddon, Qt as EventCategory, at as metricsProviderCapability, zt as createEvent } from "../../dist-CG7kwIZp.mjs";
2
2
  import { execFile, execFileSync } from "node:child_process";
3
3
  import { promisify } from "node:util";
4
4
  import * as os from "node:os";
@@ -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-D3lqzV40.js");
6
+ const require_dist = require("../../dist-BVU5JADq.js");
7
7
  let node_child_process = require("node:child_process");
8
8
  let node_util = require("node:util");
9
9
  let node_os = require("node:os");
@@ -1,5 +1,5 @@
1
1
  import { o as __toESM } from "../../chunk-CNf5ZN-e.mjs";
2
- import { Et as BaseAddon, Qt as EventCategory, Tt as errMsg, V as enumerateInferenceDevices, Vt as emitReadiness, ht as scoreRuntimes, lt as platformProbeCapability } from "../../dist-6rM7chzb.mjs";
2
+ import { Et as BaseAddon, Qt as EventCategory, Tt as errMsg, V as enumerateInferenceDevices, Vt as emitReadiness, ht as scoreRuntimes, lt as platformProbeCapability } from "../../dist-CG7kwIZp.mjs";
3
3
  import { execFile } from "node:child_process";
4
4
  import { promisify } from "node:util";
5
5
  import * as os from "node:os";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-D3lqzV40.js");
6
+ const require_dist = require("../../dist-BVU5JADq.js");
7
7
  //#region src/builtins/remote-access-orchestrator/enabled-providers-reconcile.ts
8
8
  /**
9
9
  * Reconcile the durable `enabledProviders` set against authoritative
@@ -1,4 +1,4 @@
1
- import { Et as BaseAddon, Qt as EventCategory } from "../../dist-6rM7chzb.mjs";
1
+ import { Et as BaseAddon, Qt as EventCategory } from "../../dist-CG7kwIZp.mjs";
2
2
  //#region src/builtins/remote-access-orchestrator/enabled-providers-reconcile.ts
3
3
  /**
4
4
  * Reconcile the durable `enabledProviders` set against authoritative
@@ -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-D3lqzV40.js");
6
+ const require_dist = require("../../dist-BVU5JADq.js");
7
7
  let zod = require("zod");
8
8
  let node_crypto = require("node:crypto");
9
9
  let _camstack_types_node = require("@camstack/types/node");
@@ -1,4 +1,4 @@
1
- import { At as DeviceFeature, Et as BaseAddon, Gt as nodePin, I as deriveBatteryPresence, Mt as DeviceType, O as bareAddonId, Qt as EventCategory, Tt as errMsg, _t as snapshotCapability, i as BatteryStatusSchema, k as batteryCapability, xt as streamQualityLabel } from "../../dist-6rM7chzb.mjs";
1
+ import { At as DeviceFeature, Et as BaseAddon, Gt as nodePin, I as deriveBatteryPresence, Mt as DeviceType, O as bareAddonId, Qt as EventCategory, Tt as errMsg, _t as snapshotCapability, i as BatteryStatusSchema, k as batteryCapability, xt as streamQualityLabel } from "../../dist-CG7kwIZp.mjs";
2
2
  import { z } from "zod";
3
3
  import { randomUUID } from "node:crypto";
4
4
  import { signExpiringUrl, verifyExpiringUrl } from "@camstack/types/node";
@@ -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-D3lqzV40.js");
6
+ const require_dist = require("../../dist-BVU5JADq.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  let node_fs_promises = require("node:fs/promises");
9
9
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { Et as BaseAddon, K as filesystemBrowseCapability, bt as storageProviderCapability } from "../../dist-6rM7chzb.mjs";
1
+ import { Et as BaseAddon, K as filesystemBrowseCapability, bt as storageProviderCapability } from "../../dist-CG7kwIZp.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import { mkdir, readdir, realpath, statfs } from "node:fs/promises";
4
4
  import * as path$1 from "node:path";
@@ -1,4 +1,4 @@
1
- import { CollectionColumn, CollectionIndex, DataStoreEngineInfo, HistogramBucket, IScopedLogger, ISettingsBackend, QueryFilter, SettingsCountInput, SettingsDeleteInput, SettingsGetInput, SettingsHistogramInput, SettingsInsertInput, SettingsIsEmptyInput, SettingsQueryInput, SettingsRecord, SettingsSetInput, SettingsUpdateInput } from '@camstack/types';
1
+ import { CollectionColumn, CollectionIndex, DataStoreEngineInfo, HistogramBucket, IScopedLogger, ISettingsBackend, QueryFilter, SettingsCountInput, SettingsDeleteInput, SettingsGetInput, SettingsAggregateInput, SettingsAggregateResult, SettingsHistogramInput, SettingsInsertInput, SettingsIsEmptyInput, SettingsQueryInput, SettingsRecord, SettingsSetInput, SettingsUpdateInput } from '@camstack/types';
2
2
  import { default as Database } from 'better-sqlite3';
3
3
  import { MutationFilterInput } from './filter-compiler.js';
4
4
  import { SqliteOpProfiler } from './query-profiler.js';
@@ -190,6 +190,19 @@ export declare class SqliteSettingsBackend implements ISettingsBackend {
190
190
  * `query` is, or the two disagree again for a new reason.
191
191
  */
192
192
  count({ namespace, collection, filter }: SettingsCountInput): Promise<number>;
193
+ /**
194
+ * `COUNT(*)` and one SUM/MIN/MAX per requested field, in ONE statement.
195
+ *
196
+ * Result slots are aliased POSITIONALLY (`a0`, `a1`, …) and mapped back by
197
+ * index: `as` is caller text and must never reach SQL as an identifier, and
198
+ * the column name is validated through {@link fieldExprFor} exactly like a
199
+ * projection — an unresolvable field THROWS rather than being dropped, because
200
+ * a missing aggregate comes back as a number that looks real.
201
+ *
202
+ * `select` mode on the filter, so this agrees with `query` and `count` about
203
+ * which rows it is talking about.
204
+ */
205
+ aggregate({ namespace, collection, fields, filter, }: SettingsAggregateInput): Promise<SettingsAggregateResult>;
193
206
  histogram({ namespace, collection, field, bucketSize, origin, filter, }: SettingsHistogramInput): Promise<readonly HistogramBucket[]>;
194
207
  isEmpty({ namespace, collection }: SettingsIsEmptyInput): Promise<boolean>;
195
208
  private queryDeclared;
@@ -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-D3lqzV40.js");
6
+ const require_dist = require("../../dist-BVU5JADq.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  let node_fs_promises = require("node:fs/promises");
9
9
  node_fs_promises = require_chunk.__toESM(node_fs_promises);
@@ -668,6 +668,7 @@ function createDataStoreDispatch(getEngines) {
668
668
  deleteWhere: async (input) => (await engine()).deleteWhere(input),
669
669
  updateWhere: async (input) => (await engine()).updateWhere(input),
670
670
  count: async (input) => (await engine()).count(input),
671
+ aggregate: async (input) => (await engine()).aggregate(input),
671
672
  histogram: async (input) => (await engine()).histogram(input),
672
673
  isEmpty: async (input) => (await engine()).isEmpty(input),
673
674
  declareCollection: async (input) => (await engine()).declareCollection(input)
@@ -1,4 +1,4 @@
1
- import { Et as BaseAddon, Kt as parseJsonObject, b as StorageMigrationJobSchema, gt as settingsStoreCapability, vt as storageCapability, y as StorageLocationTypeSchema, yt as storageMigrationCapability } from "../../dist-6rM7chzb.mjs";
1
+ import { Et as BaseAddon, Kt as parseJsonObject, b as StorageMigrationJobSchema, gt as settingsStoreCapability, vt as storageCapability, y as StorageLocationTypeSchema, yt as storageMigrationCapability } from "../../dist-CG7kwIZp.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import * as fs from "node:fs/promises";
4
4
  import * as path$1 from "node:path";
@@ -661,6 +661,7 @@ function createDataStoreDispatch(getEngines) {
661
661
  deleteWhere: async (input) => (await engine()).deleteWhere(input),
662
662
  updateWhere: async (input) => (await engine()).updateWhere(input),
663
663
  count: async (input) => (await engine()).count(input),
664
+ aggregate: async (input) => (await engine()).aggregate(input),
664
665
  histogram: async (input) => (await engine()).histogram(input),
665
666
  isEmpty: async (input) => (await engine()).isEmpty(input),
666
667
  declareCollection: async (input) => (await engine()).declareCollection(input)
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-D3lqzV40.js");
6
+ const require_dist = require("../../dist-BVU5JADq.js");
7
7
  //#region src/builtins/system-config/system-config.addon.ts
8
8
  /**
9
9
  * Built-in `system-config` addon — Phase 4 of the settings redesign.
@@ -1,4 +1,4 @@
1
- import { Et as BaseAddon, Tt as errMsg, Ut as hydrateSchema } from "../../dist-6rM7chzb.mjs";
1
+ import { Et as BaseAddon, Tt as errMsg, Ut as hydrateSchema } from "../../dist-CG7kwIZp.mjs";
2
2
  //#region src/builtins/system-config/system-config.addon.ts
3
3
  /**
4
4
  * Built-in `system-config` addon — Phase 4 of the settings redesign.
@@ -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-D3lqzV40.js");
6
+ const require_dist = require("../../dist-BVU5JADq.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 { Et as BaseAddon, nt as logDestinationCapability } from "../../dist-6rM7chzb.mjs";
1
+ import { Et as BaseAddon, nt as logDestinationCapability } from "../../dist-CG7kwIZp.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";