@camstack/system 1.2.431 → 1.2.433

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 (97) hide show
  1. package/dist/{tls-C5IYg3V5.js → agent-https-CHZTxK-q.js} +123 -759
  2. package/dist/{tls-CpcGkeJV.mjs → agent-https-DtRU9A7I.mjs} +89 -611
  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 +2 -2
  12. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +2 -2
  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/keychain/index.js +3 -3
  28. package/dist/builtins/keychain/index.mjs +3 -3
  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/agent-mdns.d.ts +51 -0
  34. package/dist/builtins/local-network/local-network.addon.js +20 -45
  35. package/dist/builtins/local-network/local-network.addon.mjs +2 -28
  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.js +1370 -28
  55. package/dist/builtins/system-config/system-config.addon.mjs +1344 -25
  56. package/dist/builtins/winston-logging/index.js +1 -1
  57. package/dist/builtins/winston-logging/index.mjs +1 -1
  58. package/dist/{composition-sources-Cw_TXEq9.mjs → composition-sources-8-cpAt1c.mjs} +1 -1
  59. package/dist/{composition-sources-o5MPSlk6.js → composition-sources-BgJWQMjr.js} +1 -1
  60. package/dist/{constants-BcNaVkvI.js → constants-Ah3T_KAW.js} +2 -2
  61. package/dist/{constants-CttE77VF.mjs → constants-Cg9ve13y.mjs} +2 -2
  62. package/dist/{device-ca-B-BTxeCj.mjs → device-ca-DUrcTW5h.mjs} +1 -1
  63. package/dist/{device-ca-CKiqh2Iu.js → device-ca-NNP4Jz0P.js} +1 -1
  64. package/dist/{dist-DxJdci75.js → dist-C6Yvfhpq.js} +360 -1
  65. package/dist/{dist-CXG6muCR.mjs → dist-DJnlnL7P.mjs} +349 -2
  66. package/dist/file-host-worker.js +1 -1
  67. package/dist/file-host-worker.mjs +1 -1
  68. package/dist/hub-mdns-ciao-8_Ed1Za5.mjs +648 -0
  69. package/dist/hub-mdns-ciao-B50jAU5C.js +821 -0
  70. package/dist/index.d.ts +3 -0
  71. package/dist/index.js +176 -67
  72. package/dist/index.mjs +96 -13
  73. package/dist/kernel/index.d.ts +5 -4
  74. package/dist/kernel/moleculer/agent-mesh-authenticator.d.ts +12 -1
  75. package/dist/kernel/moleculer/agent-ui-unlock.d.ts +40 -0
  76. package/dist/kernel/moleculer/mesh-authenticator.d.ts +6 -0
  77. package/dist/kernel/moleculer/mesh-mtls/constants.d.ts +1 -1
  78. package/dist/kernel/moleculer/mesh-mtls/index.d.ts +3 -2
  79. package/dist/kernel/moleculer/mesh-mtls/mesh-ca.d.ts +4 -0
  80. package/dist/kernel/moleculer/mesh-mtls/mesh-certificate-registry.d.ts +2 -2
  81. package/dist/kernel/moleculer/mesh-mtls/mesh-join-token.d.ts +3 -2
  82. package/dist/kernel/moleculer/mesh-mtls/mesh-peer-transport.d.ts +7 -0
  83. package/dist/kernel/moleculer/mesh-mtls/pairing/agent-pairing.d.ts +204 -0
  84. package/dist/kernel/moleculer/mesh-mtls/pairing/hub-pairing.d.ts +115 -0
  85. package/dist/kernel/moleculer/mesh-mtls/pairing/index.d.ts +3 -0
  86. package/dist/kernel/moleculer/mesh-mtls/pairing/pairing-protocol.d.ts +107 -0
  87. package/dist/kernel/moleculer/mesh-mtls/tls-tcp-transporter.d.ts +18 -0
  88. package/dist/{restore-archive-D_wBL1OO.mjs → restore-archive-C3_rzOCx.mjs} +1 -1
  89. package/dist/{restore-archive-CQJNoqRK.js → restore-archive-DqPaRjjY.js} +1 -1
  90. package/dist/{retired-settings-keys-EmDe11cP.mjs → retired-settings-keys-CAWHWDwy.mjs} +1 -1
  91. package/dist/{retired-settings-keys-g1oifXxR.js → retired-settings-keys-DJBQkZok.js} +1 -1
  92. package/dist/tls/agent-https-names.d.ts +2 -0
  93. package/dist/{wal-maintenance-vhPZLYuA.mjs → wal-maintenance-Bc38yI3r.mjs} +0 -0
  94. package/dist/{wal-maintenance-BW1LIHi0.js → wal-maintenance-CPLvZbzA.js} +0 -0
  95. package/package.json +1 -1
  96. package/dist/agent-https-names-CpUSuP4w.js +0 -120
  97. package/dist/agent-https-names-uetr4OQl.mjs +0 -91
@@ -718,7 +718,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
718
718
  return EventCategory;
719
719
  }({});
720
720
  //#endregion
721
- //#region ../types/dist/sleep-DxJdzHni.mjs
721
+ //#region ../types/dist/sleep--g-h2_c_.mjs
722
722
  /**
723
723
  * The audio chunk plane's byte format, and the ONE expansion from a coded
724
724
  * window to float samples (D455).
@@ -16213,6 +16213,241 @@ var keychainCapability = {
16213
16213
  getState: method(z.object({}), KeychainStateSchema, { auth: "admin" })
16214
16214
  }
16215
16215
  };
16216
+ /**
16217
+ * device-history — the ONE mechanism for numeric history (D850).
16218
+ *
16219
+ * A device value is recorded because its capability says so (the `history`
16220
+ * block of a `*.cap.ts`, captured hub-side from `DeviceStateChanged`); any
16221
+ * other series is DECLARED by the addon that produces it and fed with points
16222
+ * (`record`) or closed five-minute buckets (`recordBuckets`). Rollups 5m / 1h /
16223
+ * 1d are computed here and nowhere else. Storage is `history.db` (D851).
16224
+ *
16225
+ * Who the PRODUCER is: `declareSeries`, `record` and `recordBuckets` are owner
16226
+ * checked against the `callerAddonId` the transport stamps into a call that
16227
+ * crossed a process (never in an input schema, so a session cannot supply it).
16228
+ * A call with no stamp is refused `not-owner`. The methods are `admin` so a
16229
+ * non-admin session never reaches them; an addon's `ctx.api` call bypasses the
16230
+ * tier by design.
16231
+ */
16232
+ /** Whose history: a real device, or a cluster node (load, memory). */
16233
+ var DeviceHistorySubjectSchema = z.discriminatedUnion("kind", [z.object({
16234
+ kind: z.literal("device"),
16235
+ deviceId: z.number().int()
16236
+ }), z.object({
16237
+ kind: z.literal("node"),
16238
+ nodeId: z.string().min(1)
16239
+ })]);
16240
+ var DeviceHistoryKindSchema = z.enum([
16241
+ "gauge",
16242
+ "counter",
16243
+ "boolean"
16244
+ ]);
16245
+ var DeviceHistoryResolutionSchema = z.enum([
16246
+ "raw",
16247
+ "5m",
16248
+ "1h",
16249
+ "1d"
16250
+ ]);
16251
+ /** Why a producer's point or bucket was not stored. Counted, never silent (D391). */
16252
+ var DeviceHistoryRefusalReasonSchema = z.enum([
16253
+ "undeclared",
16254
+ "not-owner",
16255
+ "opted-out",
16256
+ "not-a-real-device",
16257
+ "rate",
16258
+ "ingest-mismatch",
16259
+ "out-of-range"
16260
+ ]);
16261
+ var RefusalSchema = z.object({
16262
+ key: z.string(),
16263
+ reason: DeviceHistoryRefusalReasonSchema,
16264
+ count: z.number().int()
16265
+ });
16266
+ var IngestResultSchema = z.object({
16267
+ accepted: z.number().int(),
16268
+ refused: z.array(RefusalSchema).readonly()
16269
+ });
16270
+ var SeriesInfoSchema = z.object({
16271
+ key: z.string(),
16272
+ scope: z.string(),
16273
+ kind: DeviceHistoryKindSchema,
16274
+ /** `null` is unknown (a `unitFrom` series whose device does not state a unit right now), never a guess. */
16275
+ unit: z.string().nullable(),
16276
+ displayName: z.string(),
16277
+ source: z.enum(["cap", "addon"]),
16278
+ firstTs: z.number(),
16279
+ lastTs: z.number()
16280
+ });
16281
+ var QueryPointSchema = z.object({
16282
+ /** Raw: the point's time. Rollup: the bucket start. */
16283
+ t: z.number(),
16284
+ samples: z.number().int(),
16285
+ /** `sum / samples`. */
16286
+ mean: z.number().nullable(),
16287
+ /** Time-weighted mean (`tw_sum / tw_ms`); `null` for bucket-ingested series. For a boolean: the fraction of time true. */
16288
+ twMean: z.number().nullable(),
16289
+ min: z.number(),
16290
+ max: z.number(),
16291
+ /** `null` is unknown, never zero (D393). */
16292
+ last: z.number().nullable()
16293
+ });
16294
+ var QuerySeriesSchema = z.object({
16295
+ scope: z.string(),
16296
+ /** The last point STRICTLY BEFORE `from` in the chosen tier, so a step chart can start at the held value. */
16297
+ before: z.object({
16298
+ t: z.number(),
16299
+ value: z.number().nullable()
16300
+ }).nullable(),
16301
+ points: z.array(QueryPointSchema).readonly()
16302
+ });
16303
+ /** The window part of a query, shared by the device and node forms. */
16304
+ var QueryWindowShape = {
16305
+ key: z.string(),
16306
+ scope: z.string().optional(),
16307
+ from: z.number(),
16308
+ to: z.number(),
16309
+ resolution: z.union([DeviceHistoryResolutionSchema, z.literal("auto")]).default("auto"),
16310
+ maxPoints: z.number().int().positive().max(5e3).default(1e3)
16311
+ };
16312
+ var QueryResultSchema = z.object({
16313
+ resolution: DeviceHistoryResolutionSchema,
16314
+ series: z.array(QuerySeriesSchema).readonly(),
16315
+ truncated: z.boolean()
16316
+ });
16317
+ var TierStatusSchema = z.object({
16318
+ tier: DeviceHistoryResolutionSchema,
16319
+ /** `null` until the first background count answered. */
16320
+ rows: z.number().int().nullable(),
16321
+ /** `rows` times a fixed per-row estimate — approximate, labelled so. */
16322
+ approxBytes: z.number().nullable(),
16323
+ countedAt: z.number().nullable()
16324
+ });
16325
+ /** Operator/diagnostic view: rows per tier, last runs, refusals and drops since boot. */
16326
+ var DeviceHistoryStatusSchema = z.object({
16327
+ startedAt: z.number(),
16328
+ /** The store is declared, series loaded and the first reconcile has answered. */
16329
+ ready: z.boolean(),
16330
+ series: z.number().int(),
16331
+ metrics: z.number().int(),
16332
+ optedOutDevices: z.number().int(),
16333
+ tiers: z.array(TierStatusSchema).readonly(),
16334
+ capture: z.object({
16335
+ eventsSeen: z.number().int(),
16336
+ pointsEmitted: z.number().int(),
16337
+ pointsWritten: z.number().int(),
16338
+ pointsDropped: z.number().int(),
16339
+ bufferDepth: z.number().int(),
16340
+ trailingEmitted: z.number().int(),
16341
+ reconciledPoints: z.number().int(),
16342
+ reconcileRuns: z.number().int(),
16343
+ reconcileFailures: z.number().int(),
16344
+ lastReconcileAt: z.number().nullable(),
16345
+ lastFlushAt: z.number().nullable(),
16346
+ flushFailures: z.number().int(),
16347
+ skipped: z.record(z.string(), z.number().int())
16348
+ }),
16349
+ ingest: z.object({
16350
+ accepted: z.number().int(),
16351
+ refused: z.record(z.string(), z.number().int())
16352
+ }),
16353
+ rollup: z.object({
16354
+ last5mAt: z.number().nullable(),
16355
+ last1hAt: z.number().nullable(),
16356
+ last1dAt: z.number().nullable(),
16357
+ errors: z.number().int(),
16358
+ dirty5m: z.number().int(),
16359
+ dirty1h: z.number().int(),
16360
+ dirty1d: z.number().int()
16361
+ }),
16362
+ retention: z.object({
16363
+ lastRunAt: z.number().nullable(),
16364
+ deleted: z.record(z.string(), z.number().int()),
16365
+ purgedSeries: z.number().int()
16366
+ }),
16367
+ directory: z.object({
16368
+ devices: z.number().int(),
16369
+ lastRefreshAt: z.number().nullable()
16370
+ })
16371
+ });
16372
+ var deviceHistoryCapability = {
16373
+ name: "device-history",
16374
+ scope: "system",
16375
+ mode: "singleton",
16376
+ methods: {
16377
+ /**
16378
+ * The series a DEVICE has, and their span. `deviceId` is a flat top-level field
16379
+ * on purpose: the generated device selector (and so the scope gate) only sees
16380
+ * top-level ids, and a nested `subject.deviceId` would let a principal limited
16381
+ * to one device read another's history. Node series are the admin-only
16382
+ * `listNodeSeries` / `queryNode`.
16383
+ */
16384
+ listSeries: method(z.object({ deviceId: z.number().int() }), z.array(SeriesInfoSchema).readonly()),
16385
+ listNodeSeries: method(z.object({ nodeId: z.string().min(1) }), z.array(SeriesInfoSchema).readonly(), { auth: "admin" }),
16386
+ /**
16387
+ * One series (or every scope of it) at one resolution. `auto` picks the
16388
+ * finest tier whose retention covers `from` and whose point count fits
16389
+ * `maxPoints`; when even the coarsest tier does not fit, the newest
16390
+ * `maxPoints` points are returned and `truncated` is true.
16391
+ */
16392
+ query: method(z.object({
16393
+ deviceId: z.number().int(),
16394
+ ...QueryWindowShape
16395
+ }), QueryResultSchema),
16396
+ queryNode: method(z.object({
16397
+ nodeId: z.string().min(1),
16398
+ ...QueryWindowShape
16399
+ }), QueryResultSchema, { auth: "admin" }),
16400
+ /** Producer: declare (idempotent) a series key this addon owns: `addon:<callerAddonId>/<name>`. */
16401
+ declareSeries: method(z.object({
16402
+ name: z.string().regex(/^[a-z0-9-]+$/),
16403
+ subjectKind: z.enum(["device", "node"]),
16404
+ kind: DeviceHistoryKindSchema,
16405
+ unit: z.string().optional(),
16406
+ displayName: z.string().min(1),
16407
+ ingest: z.enum(["points", "buckets"])
16408
+ }), z.object({ key: z.string() }), {
16409
+ kind: "mutation",
16410
+ auth: "admin"
16411
+ }),
16412
+ /** Producer: points. Low rate: at most one per 10 s per series, sustained. */
16413
+ record: method(z.object({ points: z.array(z.object({
16414
+ key: z.string(),
16415
+ subject: DeviceHistorySubjectSchema,
16416
+ scope: z.string().default(""),
16417
+ ts: z.number(),
16418
+ value: z.number()
16419
+ })).max(5e3) }), IngestResultSchema, {
16420
+ kind: "mutation",
16421
+ auth: "admin"
16422
+ }),
16423
+ /** Producer: CLOSED five-minute buckets. Idempotent upsert keyed (series, bucketStart). */
16424
+ recordBuckets: method(z.object({ buckets: z.array(z.object({
16425
+ key: z.string(),
16426
+ subject: DeviceHistorySubjectSchema,
16427
+ scope: z.string().default(""),
16428
+ bucketStart: z.number(),
16429
+ samples: z.number().int().positive(),
16430
+ sum: z.number(),
16431
+ min: z.number(),
16432
+ max: z.number(),
16433
+ last: z.number().nullable(),
16434
+ lastTs: z.number().nullable()
16435
+ })).max(5e3) }), IngestResultSchema, {
16436
+ kind: "mutation",
16437
+ auth: "admin"
16438
+ }),
16439
+ /** Per-device opt-out. This addon IS the authority: the switch stores nothing elsewhere (D62). */
16440
+ getDeviceEnabled: method(z.object({ deviceId: z.number().int() }), z.object({ enabled: z.boolean() })),
16441
+ setDeviceEnabled: method(z.object({
16442
+ deviceId: z.number().int(),
16443
+ enabled: z.boolean()
16444
+ }), z.object({ enabled: z.boolean() }), {
16445
+ kind: "mutation",
16446
+ auth: "admin"
16447
+ }),
16448
+ getStatus: method(z.object({}), DeviceHistoryStatusSchema, { auth: "admin" })
16449
+ }
16450
+ };
16216
16451
  var DeviceCaStatusSchema = z.discriminatedUnion("state", [
16217
16452
  z.object({ state: z.literal("absent") }),
16218
16453
  z.object({
@@ -16410,6 +16645,16 @@ var nodeCertificatesCapability = {
16410
16645
  kind: "mutation",
16411
16646
  auth: "admin"
16412
16647
  }),
16648
+ /**
16649
+ * The hub unpairs this node (D857): it erases its mesh material, goes back to the
16650
+ * unpaired state and advertises itself again. The call is answered first; the wire
16651
+ * goes down right after, so the hub revokes the node's certificates BEFORE this
16652
+ * connection drops, never after.
16653
+ */
16654
+ forgetHub: method(z.object({}), z.object({ ok: z.literal(true) }), {
16655
+ kind: "mutation",
16656
+ auth: "admin"
16657
+ }),
16413
16658
  /** Install the hub-signed HTTPS leaf and hot-swap the serving context (no restart). */
16414
16659
  installHttpsCertificate: method(z.object({
16415
16660
  certPem: z.string().min(1),
@@ -39937,6 +40182,21 @@ var HUB_MDNS_TXT_KEYS = {
39937
40182
  url: "url"
39938
40183
  };
39939
40184
  /**
40185
+ * How a hub finds agents to pair (D857): every agent publishes ONE mDNS service for its API
40186
+ * port, paired or not. The TXT record carries only public facts. Finding an agent grants
40187
+ * nothing: pairing still needs the six-digit code confirmed on both screens.
40188
+ */
40189
+ var AGENT_MDNS_SERVICE_TYPE = "camstack-agent";
40190
+ /** The TXT keys of the agent advertisement. Every value is public. */
40191
+ var AGENT_MDNS_TXT_KEYS = {
40192
+ nodeId: "nodeId",
40193
+ version: "version",
40194
+ /** `unpaired` | `pending` | `paired`. */
40195
+ state: "state",
40196
+ /** First 16 hex chars of the SHA-256 of the agent's mesh leaf; present once paired. */
40197
+ keyFingerprint: "fp"
40198
+ };
40199
+ /**
39940
40200
  * Transport bounds for AI capability methods.
39941
40201
  *
39942
40202
  * Its own module because `llm.cap.ts` and `llm-runtime.cap.ts` already import
@@ -74293,6 +74553,66 @@ var METHOD_ACCESS_MAP = Object.freeze({
74293
74553
  addonId: null,
74294
74554
  access: "create"
74295
74555
  },
74556
+ "deviceHistory.declareSeries": {
74557
+ capName: "device-history",
74558
+ capScope: "system",
74559
+ addonId: null,
74560
+ access: "create"
74561
+ },
74562
+ "deviceHistory.getDeviceEnabled": {
74563
+ capName: "device-history",
74564
+ capScope: "system",
74565
+ addonId: null,
74566
+ access: "view"
74567
+ },
74568
+ "deviceHistory.getStatus": {
74569
+ capName: "device-history",
74570
+ capScope: "system",
74571
+ addonId: null,
74572
+ access: "view"
74573
+ },
74574
+ "deviceHistory.listNodeSeries": {
74575
+ capName: "device-history",
74576
+ capScope: "system",
74577
+ addonId: null,
74578
+ access: "view"
74579
+ },
74580
+ "deviceHistory.listSeries": {
74581
+ capName: "device-history",
74582
+ capScope: "system",
74583
+ addonId: null,
74584
+ access: "view"
74585
+ },
74586
+ "deviceHistory.query": {
74587
+ capName: "device-history",
74588
+ capScope: "system",
74589
+ addonId: null,
74590
+ access: "view"
74591
+ },
74592
+ "deviceHistory.queryNode": {
74593
+ capName: "device-history",
74594
+ capScope: "system",
74595
+ addonId: null,
74596
+ access: "view"
74597
+ },
74598
+ "deviceHistory.record": {
74599
+ capName: "device-history",
74600
+ capScope: "system",
74601
+ addonId: null,
74602
+ access: "create"
74603
+ },
74604
+ "deviceHistory.recordBuckets": {
74605
+ capName: "device-history",
74606
+ capScope: "system",
74607
+ addonId: null,
74608
+ access: "create"
74609
+ },
74610
+ "deviceHistory.setDeviceEnabled": {
74611
+ capName: "device-history",
74612
+ capScope: "system",
74613
+ addonId: null,
74614
+ access: "create"
74615
+ },
74296
74616
  "deviceManager.addLocation": {
74297
74617
  capName: "device-manager",
74298
74618
  capScope: "system",
@@ -76357,6 +76677,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
76357
76677
  addonId: null,
76358
76678
  access: "create"
76359
76679
  },
76680
+ "nodeCertificates.forgetHub": {
76681
+ capName: "node-certificates",
76682
+ capScope: "system",
76683
+ addonId: null,
76684
+ access: "delete"
76685
+ },
76360
76686
  "nodeCertificates.getCertificates": {
76361
76687
  capName: "node-certificates",
76362
76688
  capScope: "system",
@@ -80763,6 +81089,7 @@ var ALL_CAPABILITY_DEFINITIONS = [
80763
81089
  deviceDiscoveryCapability,
80764
81090
  deviceExportCapability,
80765
81091
  deviceExtensionCapability,
81092
+ deviceHistoryCapability,
80766
81093
  deviceManagerCapability,
80767
81094
  deviceOpsCapability,
80768
81095
  deviceProviderCapability,
@@ -81346,6 +81673,26 @@ Object.freeze({
81346
81673
  form: "single",
81347
81674
  optional: false
81348
81675
  }],
81676
+ "deviceHistory.getDeviceEnabled": [{
81677
+ name: "deviceId",
81678
+ form: "single",
81679
+ optional: false
81680
+ }],
81681
+ "deviceHistory.listSeries": [{
81682
+ name: "deviceId",
81683
+ form: "single",
81684
+ optional: false
81685
+ }],
81686
+ "deviceHistory.query": [{
81687
+ name: "deviceId",
81688
+ form: "single",
81689
+ optional: false
81690
+ }],
81691
+ "deviceHistory.setDeviceEnabled": [{
81692
+ name: "deviceId",
81693
+ form: "single",
81694
+ optional: false
81695
+ }],
81349
81696
  "deviceManager.adoptionRelease": [{
81350
81697
  name: "camDeviceId",
81351
81698
  form: "single",
@@ -85167,4 +85514,4 @@ function enumerateInferenceDevices(hw) {
85167
85514
  return out;
85168
85515
  }
85169
85516
  //#endregion
85170
- export { backupCapability as $, vectorStoreCapability as $n, readinessKey as $r, keychainCapability as $t, HUB_MDNS_SERVICE_TYPE as A, resolveHubAddressRoles as An, buildSecretRef as Ar, deviceStatusCapability as At, STORAGE_ACCESS_FALLBACK as B, snapshotCapability as Bn, hydrateSchema as Br, foldSnapshotByFunction as Bt, DEVICE_SAN_CREDENTIAL_PREFIX as C, ptzAutotrackCapability as Cn, ReadinessRegistry as Cr, defineExtensionSlotProvider as Ct, FIRST_LEVEL_MACRO_CLASSES as D, resolveBucketMs as Dn, asJsonObject as Dr, deviceExtensionCapability as Dt, DeviceStatusSchema as E, resolveAppConnections as En, WELL_KNOWN_TAB_MAP as Er, deviceCredentialsCapability as Et, METHOD_ACCESS_MAP as F, scopesAllowAddon as Fn, defineCustomActions as Fr, evictionPolicyOfLocation as Ft, StorageLocationTypeSchema as G, streamCatalogCapability as Gn, isSecretMarker as Gr, isArrayOutputSchema as Gt, ScopedTokenSchema as H, storageMigrationCapability as Hn, isEvent as Hr, formatMinutes as Ht, MINUTES_PER_DAY as I, scopesAllowDeviceCap as In, emitDownForOwnedCaps as Ir, expandContainer as It, addonPagesCapability as J, userManagementCapability as Jn, nodePin as Jr, isLocationEnabled as Jt, StorageMigrationJobSchema as K, streamQualityLabel as Kn, isSecretMarkerLike as Kr, isCollectionArrayMethod as Kt, MOTION_CLOSE_AFTER_MS as L, scoreRuntimes as Ln, emitReadiness as Lr, expressionContainsBuiltinCall as Lt, KEYCHAIN_RESET_TRIGGER_ACTOR as M, resolveMethodAuth as Mn, collectZodSecretPaths as Mr, enumerateItemArrayFields as Mt, LOG_LEVEL_RANK as N, resolveNotificationTapAddress as Nn, createEvent as Nr, enumerateSchemaFields as Nt, FieldClaimModeSchema as O, resolveCoreBlockEntry as On, asNumber as Or, deviceManagerCapability as Ot, LegacyStorageLocationDefaultSchema as P, runtimeStatePolicyFor as Pn, customAction as Pr, evaluateCompositionField as Pt, authProviderCapability as Q, vectorIndexDimConflictError as Qn, parseSecretRef as Qr, keychainAdminCapability as Qt, RECORDING_SOURCE_CAMSTACK_ADDON as R, settingsStoreCapability as Rn, expandCapMethods as Rr, extractNestedAddonId as Rt, DEVICE_NONCE_TTL_MS as S, procedureAuthKey as Sn, RUNTIME_DEFAULTS as Sr, decodeVectorBase64 as St, DeclaredDevices as T, replacedFieldKeys as Tn, SECRET_CLEAR as Tr, describeComposableCaps as Tt, StorageCleanupJobSchema as U, storageOccupancyCapability as Un, isKeychainStoredField as Ur, gbToBytes as Ut, STREAM_PROFILE_META as V, storageCapability as Vn, isDeviceConfigCap as Vr, formatDeviceRevoker as Vt, StorageLocationModeSchema as W, storageProviderCapability as Wn, isSecretClear as Wr, isAppLinkBase as Wt, addonWidgetsCapability as X, validateCustomAddress as Xn, parseJsonObject as Xr, isVoidInput as Xt, addonSettingsCapability as Y, validateComposition as Yn, normalizeSecretOwner as Yr, isObjectInput as Yt, alertsCapability as Z, vectorDimFromBase64 as Zn, parseJsonUnknown as Zr, kebabToCamel as Zt, DATABASE_SNAPSHOT_TIMEOUT_MS as _, objectInputDeclaresRequiredDeviceId as _n, BaseAddon as _r, coreBlocksCapability as _t, BatteryStatusSchema as a, sleep as ai, logDestinationCapability as an, composedDeviceStableId as ar, buildStreamParamsConfigSchema as at, DERIVED_CAMERA_SILENCED_CAP_NAMES as b, planComposition as bn, DEVICE_STATUS_METHOD as br, databaseSnapshotCapability as bt, CAP_NAMES_WITH_STATUS as c, transformSecretWrite as ci, mayReadLocation as cn, compositionSliceKey as cr, canonicalIconKey as ct, CORE_BLOCKS_ADDON_ID as d, metricsProviderCapability as dn, disarmRoseMemory as dr, compositionFieldKey as dt, resolveCapMount as ei, legacyAutoLinkIds as en, withLocationMode as er, bareAddonId as et, CORE_BLOCK_ADDON_PREFIX as f, modeMayWrite as fn, toExpressionValue as fr, compositionSourceRefs as ft, DATABASE_SNAPSHOT_SUFFIX as g, objectInputDeclaresAddonId as gn, errMsg as gr, coreBlockSourceKind as gt, DATABASE_SNAPSHOT_PARTIAL_SUFFIX as h, normalizeUnit as hn, DeviceType as hr, coreBlockIdFromAddonId as ht, BaseDevice as i, secretTreeFromSchema as ii, locationIconKey as in, composedDeviceRef as ir, buildDeviceSignatureMessage as it, HUB_MDNS_TXT_KEYS as j, resolveLocationMode as jn, collectSecretConfigKeys as jr, enumerateInferenceDevices as jt, FieldClaimSchema as k, resolveCoreBlockFiles as kn, asString$1 as kr, deviceStateCapability as kt, COMPOSED_ITEM_FIXED_FIELDS as l, EventCategory as li, mayWriteToLocation as ln, compositionSourceKey as lr, checkRoleAddress as lt, CoreBlockSchema as m, normalizeCoreBlockWrite as mn, DeviceRole as mr, coreBlockComposition as mt, AlertSchema as n, scopeKey as ni, lifecycleJobSchema as nn, buildFfmpegArgs as nr, buildCapabilityLookup as nt, CAMERA_SWITCH_ORDER as o, toNodeId as oi, logLevelAtMost as on, compositionFeatureEnabled as or, calendarsCapability as ot, CalendarPreferencesSchema as p, motionCapability as pn, DeviceFeature as pr, coreBlockAddonId as pt, UserRecordSchema as q, supportedRuntimes as qn, makeSecretMarker as qr, isDefaultAppConnectionEndpoint as qt, ApiKeyRecordSchema as r, secretTreeFromPaths as ri, localNetworkCapability as rn, cloneStatefulExpressionMemory as rr, buildDeviceEnrollmentLink as rt, CAMSTACK_APP_LINK_ORIGIN as s, toSecretFieldView as si, looseSchema as sn, compositionItemFieldPath as sr, cameraGridLayoutCapability as st, ALL_CAPABILITY_DEFINITIONS as t, resolveSecretMarkers as ti, legacyModeOf as tn, COMPOSER_ADDON_ID as tr, batteryCapability as tt, COMPOSER_RUNNER_ID as u, memoizePinnedFfmpeg as un, createStatefulExpressionMemory as ur, composerCapability as ut, DATA_STORE_DATABASES as v, parseStreamParamsFormPatch as vn, DATAPLANE_SECRET_HEADER as vr, createDeviceExtensionProvider as vt, DEVICE_SAN_USER_PREFIX as w, reducePoints as wn, ReadinessTimeoutError as wr, deriveBatteryPresence as wt, DEVICE_ENROLLMENT_TTL_MS as x, platformProbeCapability as xn, REDACTED_SECRET as xr, declarationOwnerNodeId as xt, DAY_NAMES as y, pickAppLinkHub as yn, DEVICE_SETTINGS_CONTRIBUTION_METHODS as yr, dataStoreProviderCapability as yt, RecordingStatusSchema as z, siteZoneKey as zn, formatSecretScope as zr, filesystemBrowseCapability as zt };
85517
+ export { alertsCapability as $, vectorDimFromBase64 as $n, parseJsonUnknown as $r, kebabToCamel as $t, FieldClaimModeSchema as A, resolveCoreBlockEntry as An, asNumber as Ar, deviceManagerCapability as At, RECORDING_SOURCE_CAMSTACK_ADDON as B, settingsStoreCapability as Bn, expandCapMethods as Br, extractNestedAddonId as Bt, DEVICE_ENROLLMENT_TTL_MS as C, platformProbeCapability as Cn, REDACTED_SECRET as Cr, declarationOwnerNodeId as Ct, DeclaredDevices as D, replacedFieldKeys as Dn, SECRET_CLEAR as Dr, describeComposableCaps as Dt, DEVICE_SAN_USER_PREFIX as E, reducePoints as En, ReadinessTimeoutError as Er, deriveBatteryPresence as Et, LOG_LEVEL_RANK as F, resolveNotificationTapAddress as Fn, createEvent as Fr, enumerateSchemaFields as Ft, StorageCleanupJobSchema as G, storageOccupancyCapability as Gn, isKeychainStoredField as Gr, gbToBytes as Gt, STORAGE_ACCESS_FALLBACK as H, snapshotCapability as Hn, hydrateSchema as Hr, foldSnapshotByFunction as Ht, LegacyStorageLocationDefaultSchema as I, runtimeStatePolicyFor as In, customAction as Ir, evaluateCompositionField as It, StorageMigrationJobSchema as J, streamQualityLabel as Jn, isSecretMarkerLike as Jr, isCollectionArrayMethod as Jt, StorageLocationModeSchema as K, storageProviderCapability as Kn, isSecretClear as Kr, isAppLinkBase as Kt, METHOD_ACCESS_MAP as L, scopesAllowAddon as Ln, defineCustomActions as Lr, evictionPolicyOfLocation as Lt, HUB_MDNS_SERVICE_TYPE as M, resolveHubAddressRoles as Mn, buildSecretRef as Mr, deviceStatusCapability as Mt, HUB_MDNS_TXT_KEYS as N, resolveLocationMode as Nn, collectSecretConfigKeys as Nr, enumerateInferenceDevices as Nt, DeviceStatusSchema as O, resolveAppConnections as On, WELL_KNOWN_TAB_MAP as Or, deviceCredentialsCapability as Ot, KEYCHAIN_RESET_TRIGGER_ACTOR as P, resolveMethodAuth as Pn, collectZodSecretPaths as Pr, enumerateItemArrayFields as Pt, addonWidgetsCapability as Q, validateCustomAddress as Qn, parseJsonObject as Qr, isVoidInput as Qt, MINUTES_PER_DAY as R, scopesAllowDeviceCap as Rn, emitDownForOwnedCaps as Rr, expandContainer as Rt, DERIVED_CAMERA_SILENCED_CAP_NAMES as S, planComposition as Sn, DEVICE_STATUS_METHOD as Sr, databaseSnapshotCapability as St, DEVICE_SAN_CREDENTIAL_PREFIX as T, ptzAutotrackCapability as Tn, ReadinessRegistry as Tr, defineExtensionSlotProvider as Tt, STREAM_PROFILE_META as U, storageCapability as Un, isDeviceConfigCap as Ur, formatDeviceRevoker as Ut, RecordingStatusSchema as V, siteZoneKey as Vn, formatSecretScope as Vr, filesystemBrowseCapability as Vt, ScopedTokenSchema as W, storageMigrationCapability as Wn, isEvent as Wr, formatMinutes as Wt, addonPagesCapability as X, userManagementCapability as Xn, nodePin as Xr, isLocationEnabled as Xt, UserRecordSchema as Y, supportedRuntimes as Yn, makeSecretMarker as Yr, isDefaultAppConnectionEndpoint as Yt, addonSettingsCapability as Z, validateComposition as Zn, normalizeSecretOwner as Zr, isObjectInput as Zt, DATABASE_SNAPSHOT_PARTIAL_SUFFIX as _, normalizeUnit as _n, DeviceType as _r, coreBlockIdFromAddonId as _t, ApiKeyRecordSchema as a, secretTreeFromPaths as ai, localNetworkCapability as an, cloneStatefulExpressionMemory as ar, buildDeviceEnrollmentLink as at, DATA_STORE_DATABASES as b, parseStreamParamsFormPatch as bn, DATAPLANE_SECRET_HEADER as br, createDeviceExtensionProvider as bt, CAMERA_SWITCH_ORDER as c, toNodeId as ci, logLevelAtMost as cn, compositionFeatureEnabled as cr, calendarsCapability as ct, COMPOSED_ITEM_FIXED_FIELDS as d, EventCategory as di, mayWriteToLocation as dn, compositionSourceKey as dr, checkRoleAddress as dt, parseSecretRef as ei, keychainAdminCapability as en, vectorIndexDimConflictError as er, authProviderCapability as et, COMPOSER_RUNNER_ID as f, memoizePinnedFfmpeg as fn, createStatefulExpressionMemory as fr, composerCapability as ft, CoreBlockSchema as g, normalizeCoreBlockWrite as gn, DeviceRole as gr, coreBlockComposition as gt, CalendarPreferencesSchema as h, motionCapability as hn, DeviceFeature as hr, coreBlockAddonId as ht, AlertSchema as i, scopeKey as ii, lifecycleJobSchema as in, buildFfmpegArgs as ir, buildCapabilityLookup as it, FieldClaimSchema as j, resolveCoreBlockFiles as jn, asString$1 as jr, deviceStateCapability as jt, FIRST_LEVEL_MACRO_CLASSES as k, resolveBucketMs as kn, asJsonObject as kr, deviceExtensionCapability as kt, CAMSTACK_APP_LINK_ORIGIN as l, toSecretFieldView as li, looseSchema as ln, compositionItemFieldPath as lr, cameraGridLayoutCapability as lt, CORE_BLOCK_ADDON_PREFIX as m, modeMayWrite as mn, toExpressionValue as mr, compositionSourceRefs as mt, AGENT_MDNS_TXT_KEYS as n, resolveCapMount as ni, legacyAutoLinkIds as nn, withLocationMode as nr, bareAddonId as nt, BaseDevice as o, secretTreeFromSchema as oi, locationIconKey as on, composedDeviceRef as or, buildDeviceSignatureMessage as ot, CORE_BLOCKS_ADDON_ID as p, metricsProviderCapability as pn, disarmRoseMemory as pr, compositionFieldKey as pt, StorageLocationTypeSchema as q, streamCatalogCapability as qn, isSecretMarker as qr, isArrayOutputSchema as qt, ALL_CAPABILITY_DEFINITIONS as r, resolveSecretMarkers as ri, legacyModeOf as rn, COMPOSER_ADDON_ID as rr, batteryCapability as rt, BatteryStatusSchema as s, sleep as si, logDestinationCapability as sn, composedDeviceStableId as sr, buildStreamParamsConfigSchema as st, AGENT_MDNS_SERVICE_TYPE as t, readinessKey as ti, keychainCapability as tn, vectorStoreCapability as tr, backupCapability as tt, CAP_NAMES_WITH_STATUS as u, transformSecretWrite as ui, mayReadLocation as un, compositionSliceKey as ur, canonicalIconKey as ut, DATABASE_SNAPSHOT_SUFFIX as v, objectInputDeclaresAddonId as vn, errMsg as vr, coreBlockSourceKind as vt, DEVICE_NONCE_TTL_MS as w, procedureAuthKey as wn, RUNTIME_DEFAULTS as wr, decodeVectorBase64 as wt, DAY_NAMES as x, pickAppLinkHub as xn, DEVICE_SETTINGS_CONTRIBUTION_METHODS as xr, dataStoreProviderCapability as xt, DATABASE_SNAPSHOT_TIMEOUT_MS as y, objectInputDeclaresRequiredDeviceId as yn, BaseAddon as yr, coreBlocksCapability as yt, MOTION_CLOSE_AFTER_MS as z, scoreRuntimes as zn, emitReadiness as zr, expressionContainsBuiltinCall as zt };
@@ -1,5 +1,5 @@
1
1
  require("./chunk-Cek0wNdY.js");
2
- const require_wal_maintenance = require("./wal-maintenance-BW1LIHi0.js");
2
+ const require_wal_maintenance = require("./wal-maintenance-CPLvZbzA.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-vhPZLYuA.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-Bc38yI3r.mjs";
2
2
  import { parentPort, threadId, workerData } from "node:worker_threads";
3
3
  //#region src/builtins/sqlite-storage/file-host-worker.ts
4
4
  /**