@camstack/system 1.2.232 → 1.2.234

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 (58) hide show
  1. package/dist/addon-runner.js +1 -1
  2. package/dist/addon-runner.mjs +1 -1
  3. package/dist/addon-utils.js +1 -1
  4. package/dist/addon-utils.mjs +1 -1
  5. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  6. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  7. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  8. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  9. package/dist/builtins/alerts/alerts.addon.js +1 -1
  10. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  11. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
  12. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
  13. package/dist/builtins/console-logging/index.js +1 -1
  14. package/dist/builtins/console-logging/index.mjs +1 -1
  15. package/dist/builtins/core-blocks/core-blocks.addon.js +1 -1
  16. package/dist/builtins/core-blocks/core-blocks.addon.mjs +1 -1
  17. package/dist/builtins/device-manager/contribution-cache.d.ts +68 -0
  18. package/dist/builtins/device-manager/device-manager.addon.js +175 -39
  19. package/dist/builtins/device-manager/device-manager.addon.mjs +176 -40
  20. package/dist/builtins/doorbell/virtual-doorbell.addon.js +1 -1
  21. package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
  22. package/dist/builtins/hub-forwarder/index.js +1 -1
  23. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  24. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  25. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  26. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  27. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  28. package/dist/builtins/local-network/local-network.addon.js +1 -1
  29. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  30. package/dist/builtins/loki-logging/index.js +1 -1
  31. package/dist/builtins/loki-logging/index.mjs +1 -1
  32. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  33. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  34. package/dist/builtins/platform-probe/index.js +1 -1
  35. package/dist/builtins/platform-probe/index.mjs +1 -1
  36. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  37. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  38. package/dist/builtins/snapshot/index.js +1 -1
  39. package/dist/builtins/snapshot/index.mjs +1 -1
  40. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  41. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -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 +1 -1
  45. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -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/{custom-action-registry-gaO1AlT2.mjs → custom-action-registry-CVsXD56p.mjs} +1 -1
  51. package/dist/{custom-action-registry-YHpAdksL.js → custom-action-registry-DG-QIWxd.js} +1 -1
  52. package/dist/{dist-CEIkHEdy.js → dist-DaSCLJVH.js} +114 -10
  53. package/dist/{dist-BX6SpI0i.mjs → dist-at9PGh6X.mjs} +114 -10
  54. package/dist/index.js +2 -2
  55. package/dist/index.mjs +2 -2
  56. package/dist/{retired-settings-keys-FLZlwa2U.js → retired-settings-keys-CZISf623.js} +1 -1
  57. package/dist/{retired-settings-keys-DDV06eUr.mjs → retired-settings-keys-X5zRxcV9.mjs} +1 -1
  58. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
- import { $t as DeviceFeature, At as resolveContainerPrimaryChild, Ct as normalizeUnit, J as deviceStatusCapability, Jt as errMsg, K as deviceManagerCapability, L as buildStreamParamsConfigSchema, Nt as runtimeStatePolicyFor, Q as enumerateSchemaFields, S as STREAM_PROFILE_META, Tt as parseStreamParamsFormPatch, Yt as BaseAddon, Z as enumerateItemArrayFields, a as CAMERA_SWITCH_ORDER, bn as sleep, en as DeviceRole, f as DeviceStatusSchema, in as WELL_KNOWN_TAB_MAP, o as CAP_NAMES_WITH_STATUS, pn as isDeviceConfigCap, q as deviceStateCapability, t as ALL_CAPABILITY_DEFINITIONS, tn as DeviceType, xn as EventCategory } from "../../dist-BX6SpI0i.mjs";
2
- import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-DDV06eUr.mjs";
1
+ import { $t as DeviceFeature, At as resolveContainerPrimaryChild, Ct as normalizeUnit, J as deviceStatusCapability, Jt as errMsg, K as deviceManagerCapability, L as buildStreamParamsConfigSchema, Nt as runtimeStatePolicyFor, Q as enumerateSchemaFields, S as STREAM_PROFILE_META, Tt as parseStreamParamsFormPatch, Yt as BaseAddon, Z as enumerateItemArrayFields, a as CAMERA_SWITCH_ORDER, bn as sleep$1, en as DeviceRole, f as DeviceStatusSchema, in as WELL_KNOWN_TAB_MAP, o as CAP_NAMES_WITH_STATUS, pn as isDeviceConfigCap, q as deviceStateCapability, t as ALL_CAPABILITY_DEFINITIONS, tn as DeviceType, xn as EventCategory } from "../../dist-at9PGh6X.mjs";
2
+ import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-X5zRxcV9.mjs";
3
3
  import { randomUUID } from "node:crypto";
4
4
  import { canonicalDeviceFingerprint } from "@camstack/types/node";
5
5
  //#region src/builtins/device-manager/adoption-job-engine.ts
@@ -290,6 +290,113 @@ var AdoptionJobEngine = class {
290
290
  }
291
291
  };
292
292
  //#endregion
293
+ //#region src/builtins/device-manager/contribution-cache.ts
294
+ /**
295
+ * The device-details fan-out, made survivable: budgeted, cached, single-flight.
296
+ *
297
+ * ## What it is for
298
+ *
299
+ * `getDeviceAggregate` asks every contributing provider for this device's
300
+ * settings panel and waits for all of them. Measured on this hub (2026-09-14):
301
+ * 10 595 ms on a battery camera against 331 ms on a mains one, while the page
302
+ * re-polls every 2 500 ms. One slow contributor stalled the whole device page,
303
+ * the poll stacked a fresh 10 s call on top of the one still running, and not
304
+ * one line named which provider was holding it.
305
+ *
306
+ * ## Why a budget alone would have been worse
307
+ *
308
+ * Dropping the provider that overran makes its settings SECTION disappear and
309
+ * come back between polls. A section of settings that flickers is worse than a
310
+ * slow one — and it is also what moved the operator's page: the schema loses a
311
+ * tab for a beat, and everything downstream reacts to a tab that is not there.
312
+ *
313
+ * So the budget is paired with the last answer that provider gave. A slow
314
+ * provider costs the page its budget ONCE; after that the page is instant and
315
+ * shows what that provider last said, until it says something new.
316
+ *
317
+ * ## The rules
318
+ *
319
+ * - **A read never joins a refresh already in flight** (D224). Without this the
320
+ * 2.5 s poll starts a new 10 s call every tick and they pile up.
321
+ * - **An explicit `null` is an ANSWER**, not a miss: it means "I have nothing
322
+ * for this device", and it replaces what was cached. A cache that only ever
323
+ * remembers successes would serve a stale panel around a provider that has
324
+ * since disowned the device.
325
+ * - **A failure falls back**, but a failure with nothing behind it is ABSENT
326
+ * and says which of the two it was — "never answered" and "answered once and
327
+ * is now broken" are different operator problems.
328
+ */
329
+ /** How long the page waits for ONE provider before serving what it has. */
330
+ var CONTRIBUTION_BUDGET_MS = 1500;
331
+ var ContributionCache = class {
332
+ maxEntries;
333
+ entries = /* @__PURE__ */ new Map();
334
+ constructor(maxEntries = 512) {
335
+ this.maxEntries = maxEntries;
336
+ }
337
+ /**
338
+ * Resolve one provider's contribution within `budgetMs`.
339
+ *
340
+ * The call is never cancelled: it keeps running and its answer refreshes the
341
+ * cache, so the provider that overran this page pays for the next one.
342
+ */
343
+ async resolve(key, call, budgetMs = CONTRIBUTION_BUDGET_MS) {
344
+ const existing = this.entries.get(key);
345
+ if (existing?.inFlight) return existing.value !== null ? {
346
+ kind: "stale",
347
+ value: existing.value
348
+ } : {
349
+ kind: "absent",
350
+ reason: "slow"
351
+ };
352
+ const entry = existing ?? {
353
+ value: null,
354
+ inFlight: null
355
+ };
356
+ if (!existing) this.remember(key, entry);
357
+ let settled = false;
358
+ let answer = null;
359
+ let failed = false;
360
+ const refresh = call().then((value) => {
361
+ answer = value;
362
+ settled = true;
363
+ entry.value = value;
364
+ entry.inFlight = null;
365
+ }, () => {
366
+ failed = true;
367
+ settled = true;
368
+ entry.inFlight = null;
369
+ });
370
+ entry.inFlight = refresh;
371
+ await Promise.race([refresh, sleep(budgetMs)]);
372
+ if (settled && !failed) return {
373
+ kind: "fresh",
374
+ value: answer
375
+ };
376
+ if (entry.value !== null) return {
377
+ kind: "stale",
378
+ value: entry.value
379
+ };
380
+ return {
381
+ kind: "absent",
382
+ reason: failed ? "failed" : "slow"
383
+ };
384
+ }
385
+ remember(key, entry) {
386
+ this.entries.set(key, entry);
387
+ while (this.entries.size > this.maxEntries) {
388
+ const oldest = this.entries.keys().next();
389
+ if (oldest.done === true) break;
390
+ this.entries.delete(oldest.value);
391
+ }
392
+ }
393
+ };
394
+ function sleep(ms) {
395
+ return new Promise((resolve) => {
396
+ setTimeout(resolve, ms).unref?.();
397
+ });
398
+ }
399
+ //#endregion
293
400
  //#region src/builtins/device-manager/device-aggregation-merge.ts
294
401
  /**
295
402
  * Pure aggregator-merge + field-tagging helpers for the device-manager
@@ -2433,6 +2540,52 @@ function splitDeviceStoreKeys(patch) {
2433
2540
  * and side effects of the original class methods are preserved; the addon keeps
2434
2541
  * thin delegator methods over these functions.
2435
2542
  */
2543
+ /**
2544
+ * One process-wide cache behind every device-details fan-out.
2545
+ *
2546
+ * Module-level on purpose: the page re-polls every 2.5 s and a per-call cache
2547
+ * would be empty every time, which is the same as having none.
2548
+ */
2549
+ var contributionCache = new ContributionCache();
2550
+ /**
2551
+ * Ask ONE provider for its contribution, bounded, and say what happened.
2552
+ *
2553
+ * The two non-fresh outcomes are logged because they are the two questions an
2554
+ * operator asks of a slow device page, and neither had an answer before: WHICH
2555
+ * provider is slow, and whether the panel in front of them is current.
2556
+ */
2557
+ async function resolveContribution(deps, input) {
2558
+ const { deviceId, kind, capName, addonId } = input;
2559
+ const outcome = await contributionCache.resolve(`${String(deviceId)}:${kind}:${capName}:${addonId}`, input.call);
2560
+ if (outcome.kind === "fresh") return outcome.value === null ? null : tagContribution(outcome.value, capName, addonId, kind);
2561
+ if (outcome.kind === "stale") {
2562
+ deps.ctx.logger.info("device contribution served from the last answer — the provider is slow", {
2563
+ tags: {
2564
+ deviceId,
2565
+ addonId
2566
+ },
2567
+ meta: {
2568
+ capName,
2569
+ method: kind,
2570
+ budgetMs: CONTRIBUTION_BUDGET_MS
2571
+ }
2572
+ });
2573
+ return tagContribution(outcome.value, capName, addonId, kind);
2574
+ }
2575
+ deps.ctx.logger.warn("device contribution unavailable — the panel is missing this section", {
2576
+ tags: {
2577
+ deviceId,
2578
+ addonId
2579
+ },
2580
+ meta: {
2581
+ capName,
2582
+ method: kind,
2583
+ reason: outcome.reason,
2584
+ budgetMs: CONTRIBUTION_BUDGET_MS
2585
+ }
2586
+ });
2587
+ return null;
2588
+ }
2436
2589
  async function getDeviceAggregate(deps, deviceId, kind) {
2437
2590
  const registry = deps.capabilityRegistry;
2438
2591
  if (!registry) {
@@ -2448,25 +2601,16 @@ async function getDeviceAggregate(deps, deviceId, kind) {
2448
2601
  if (!def?.exposesDeviceSettings) return null;
2449
2602
  const provider = registry.getProviderByAddon(entry.capName, entry.providerAddonId);
2450
2603
  if (!provider) return null;
2451
- try {
2452
- const contribution = await provider[method]({ deviceId });
2453
- if (!contribution) return null;
2454
- return tagContribution(toWireShape(contribution), entry.capName, entry.providerAddonId, kind);
2455
- } catch (err) {
2456
- const msg = err instanceof Error ? err.message : String(err);
2457
- deps.ctx.logger.warn("contribution method failed", {
2458
- tags: {
2459
- deviceId,
2460
- addonId: entry.providerAddonId
2461
- },
2462
- meta: {
2463
- capName: entry.capName,
2464
- method,
2465
- error: msg
2466
- }
2467
- });
2468
- return null;
2469
- }
2604
+ return await resolveContribution(deps, {
2605
+ deviceId,
2606
+ kind,
2607
+ capName: entry.capName,
2608
+ addonId: entry.providerAddonId,
2609
+ call: async () => {
2610
+ const contribution = await provider[method]({ deviceId });
2611
+ return contribution ? toWireShape(contribution) : null;
2612
+ }
2613
+ });
2470
2614
  }));
2471
2615
  const base = kind === "settings" ? await buildBaseDeviceSection(deps, deviceId) : null;
2472
2616
  const systemResults = await collectSystemDeviceContributions(deps, deviceId, kind, seenCaps);
@@ -2516,24 +2660,16 @@ async function collectSystemDeviceContributions(deps, deviceId, kind, seenCaps)
2516
2660
  for (const addonId of addonIds) tasks.push((async () => {
2517
2661
  const provider = registry.getProviderByAddon(info.name, addonId);
2518
2662
  if (!provider) return null;
2519
- try {
2520
- const contribution = await provider[method]({ deviceId });
2521
- if (!contribution) return null;
2522
- return tagContribution(toWireShape(contribution), info.name, addonId, kind);
2523
- } catch (err) {
2524
- deps.ctx.logger.warn("system device-settings contribution skipped", {
2525
- tags: {
2526
- deviceId,
2527
- addonId
2528
- },
2529
- meta: {
2530
- capName: info.name,
2531
- method,
2532
- error: err instanceof Error ? err.message : String(err)
2533
- }
2534
- });
2535
- return null;
2536
- }
2663
+ return await resolveContribution(deps, {
2664
+ deviceId,
2665
+ kind,
2666
+ capName: info.name,
2667
+ addonId,
2668
+ call: async () => {
2669
+ const contribution = await provider[method]({ deviceId });
2670
+ return contribution ? toWireShape(contribution) : null;
2671
+ }
2672
+ });
2537
2673
  })());
2538
2674
  }
2539
2675
  return (await Promise.all(tasks)).filter((r) => r !== null);
@@ -2907,7 +3043,7 @@ async function resolveDriverConfigSchema(deps, deviceId, hubLocal) {
2907
3043
  const RETRY_DELAY_MS = 750;
2908
3044
  let lastErr;
2909
3045
  for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
2910
- if (attempt > 0) await sleep(RETRY_DELAY_MS);
3046
+ if (attempt > 0) await sleep$1(RETRY_DELAY_MS);
2911
3047
  try {
2912
3048
  const schema = await ops.getSettingsSchema({ deviceId });
2913
3049
  if (!schema) return { status: "none" };
@@ -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-CEIkHEdy.js");
6
+ const require_dist = require("../../dist-DaSCLJVH.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 { $ as evaluateSensorEdge, F as bareAddonId, Jt as errMsg, Y as doorbellCapability, Yt as BaseAddon, b as SOURCE_DEVICE_TYPES, cn as createEvent, lt as isSameAddonId, tn as DeviceType, ut as isSourceCap, xn as EventCategory, y as SOURCE_CAPS } from "../../dist-BX6SpI0i.mjs";
1
+ import { $ as evaluateSensorEdge, F as bareAddonId, Jt as errMsg, Y as doorbellCapability, Yt as BaseAddon, b as SOURCE_DEVICE_TYPES, cn as createEvent, lt as isSameAddonId, tn as DeviceType, ut as isSourceCap, xn as EventCategory, y as SOURCE_CAPS } from "../../dist-at9PGh6X.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-CEIkHEdy.js");
6
+ const require_dist = require("../../dist-DaSCLJVH.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 { Yt as BaseAddon, gt as logDestinationCapability } from "../../dist-BX6SpI0i.mjs";
1
+ import { Yt as BaseAddon, gt as logDestinationCapability } from "../../dist-at9PGh6X.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-CEIkHEdy.js");
3
+ const require_dist = require("../../dist-DaSCLJVH.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 { Jt as errMsg, Yt as BaseAddon, cn as createEvent, v as RecordingStatusSchema, xn as EventCategory } from "../../dist-BX6SpI0i.mjs";
1
+ import { Jt as errMsg, Yt as BaseAddon, cn as createEvent, v as RecordingStatusSchema, xn as EventCategory } from "../../dist-at9PGh6X.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-CEIkHEdy.js");
6
+ const require_dist = require("../../dist-DaSCLJVH.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 { C as ScopedTokenSchema, N as authProviderCapability, O as UserRecordSchema, Wt as userManagementCapability, Yt as BaseAddon, r as ApiKeyRecordSchema } from "../../dist-BX6SpI0i.mjs";
2
+ import { C as ScopedTokenSchema, N as authProviderCapability, O as UserRecordSchema, Wt as userManagementCapability, Yt as BaseAddon, r as ApiKeyRecordSchema } from "../../dist-at9PGh6X.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-CEIkHEdy.js");
3
+ const require_dist = require("../../dist-DaSCLJVH.js");
4
4
  const require_tls = require("../../tls-BFs4PzoW.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 { Yt as BaseAddon, ht as localNetworkCapability, xn as EventCategory } from "../../dist-BX6SpI0i.mjs";
1
+ import { Yt as BaseAddon, ht as localNetworkCapability, xn as EventCategory } from "../../dist-at9PGh6X.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-2xbgg78V.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-CEIkHEdy.js");
6
+ const require_dist = require("../../dist-DaSCLJVH.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 { Yt as BaseAddon, gt as logDestinationCapability } from "../../dist-BX6SpI0i.mjs";
1
+ import { Yt as BaseAddon, gt as logDestinationCapability } from "../../dist-at9PGh6X.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-CEIkHEdy.js");
6
+ const require_dist = require("../../dist-DaSCLJVH.js");
7
7
  let node_fs_promises = require("node:fs/promises");
8
8
  let node_fs = require("node:fs");
9
9
  node_fs = require_chunk.__toESM(node_fs);
@@ -1,4 +1,4 @@
1
- import { Jt as errMsg, Ot as reducePoints, Yt as BaseAddon, cn as createEvent, kt as resolveBucketMs, rt as foldSnapshotByFunction, xn as EventCategory, xt as metricsProviderCapability } from "../../dist-BX6SpI0i.mjs";
1
+ import { Jt as errMsg, Ot as reducePoints, Yt as BaseAddon, cn as createEvent, kt as resolveBucketMs, rt as foldSnapshotByFunction, xn as EventCategory, xt as metricsProviderCapability } from "../../dist-at9PGh6X.mjs";
2
2
  import { access, readFile, readdir } from "node:fs/promises";
3
3
  import * as fs from "node:fs";
4
4
  import { constants, readFileSync } from "node:fs";
@@ -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-CEIkHEdy.js");
6
+ const require_dist = require("../../dist-DaSCLJVH.js");
7
7
  let node_fs = require("node:fs");
8
8
  node_fs = require_chunk.__toESM(node_fs);
9
9
  let node_child_process = require("node:child_process");
@@ -1,5 +1,5 @@
1
1
  import { o as __toESM } from "../../chunk-CNf5ZN-e.mjs";
2
- import { Et as platformProbeCapability, It as scoreRuntimes, Jt as errMsg, X as enumerateInferenceDevices, Yt as BaseAddon, un as emitReadiness, xn as EventCategory } from "../../dist-BX6SpI0i.mjs";
2
+ import { Et as platformProbeCapability, It as scoreRuntimes, Jt as errMsg, X as enumerateInferenceDevices, Yt as BaseAddon, un as emitReadiness, xn as EventCategory } from "../../dist-at9PGh6X.mjs";
3
3
  import * as fs from "node:fs";
4
4
  import { execFile } from "node:child_process";
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-CEIkHEdy.js");
6
+ const require_dist = require("../../dist-DaSCLJVH.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 { Yt as BaseAddon, xn as EventCategory } from "../../dist-BX6SpI0i.mjs";
1
+ import { Yt as BaseAddon, xn as EventCategory } from "../../dist-at9PGh6X.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-CEIkHEdy.js");
6
+ const require_dist = require("../../dist-DaSCLJVH.js");
7
7
  const require_snapshot_courtesy = require("../../snapshot-courtesy-oeTWCXPv.js");
8
8
  let zod = require("zod");
9
9
  let node_crypto = require("node:crypto");
@@ -1,4 +1,4 @@
1
- import { $t as DeviceFeature, F as bareAddonId, I as batteryCapability, Jt as errMsg, Rt as snapshotCapability, Ut as streamQualityLabel, W as deriveBatteryPresence, Yt as BaseAddon, i as BatteryStatusSchema, mn as nodePin, tn as DeviceType, xn as EventCategory } from "../../dist-BX6SpI0i.mjs";
1
+ import { $t as DeviceFeature, F as bareAddonId, I as batteryCapability, Jt as errMsg, Rt as snapshotCapability, Ut as streamQualityLabel, W as deriveBatteryPresence, Yt as BaseAddon, i as BatteryStatusSchema, mn as nodePin, tn as DeviceType, xn as EventCategory } from "../../dist-at9PGh6X.mjs";
2
2
  import { i as renderCourtesyOverlayJpeg, n as courtesyCacheKey, r as renderCourtesyJpeg } from "../../snapshot-courtesy-LoJNgHHZ.mjs";
3
3
  import { z } from "zod";
4
4
  import { randomUUID } from "node:crypto";
@@ -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-CEIkHEdy.js");
6
+ const require_dist = require("../../dist-DaSCLJVH.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 { Ht as storageProviderCapability, Yt as BaseAddon, nt as filesystemBrowseCapability } from "../../dist-BX6SpI0i.mjs";
1
+ import { Ht as storageProviderCapability, Yt as BaseAddon, nt as filesystemBrowseCapability } from "../../dist-at9PGh6X.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";
@@ -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-CEIkHEdy.js");
6
+ const require_dist = require("../../dist-DaSCLJVH.js");
7
7
  const require_hub_cap_forward = require("../../hub-cap-forward-DmHNjbB0.js");
8
8
  let zod = require("zod");
9
9
  let node_crypto = require("node:crypto");
@@ -1,4 +1,4 @@
1
- import { Bt as storageMigrationCapability, D as StorageMigrationJobSchema, E as StorageLocationTypeSchema, Lt as settingsStoreCapability, R as collectSecretConfigKeys, St as modeMayWrite, T as StorageLocationModeSchema, Yt as BaseAddon, bt as mayWriteToLocation, et as evictionPolicyOfLocation, g as REDACTED_SECRET, hn as parseJsonObject, it as gbToBytes, jt as resolveLocationMode, m as LegacyStorageLocationDefaultSchema, pt as legacyModeOf, qt as withLocationMode, st as isLocationEnabled, w as StorageCleanupJobSchema, xn as EventCategory, yt as mayReadLocation, zt as storageCapability } from "../../dist-BX6SpI0i.mjs";
1
+ import { Bt as storageMigrationCapability, D as StorageMigrationJobSchema, E as StorageLocationTypeSchema, Lt as settingsStoreCapability, R as collectSecretConfigKeys, St as modeMayWrite, T as StorageLocationModeSchema, Yt as BaseAddon, bt as mayWriteToLocation, et as evictionPolicyOfLocation, g as REDACTED_SECRET, hn as parseJsonObject, it as gbToBytes, jt as resolveLocationMode, m as LegacyStorageLocationDefaultSchema, pt as legacyModeOf, qt as withLocationMode, st as isLocationEnabled, w as StorageCleanupJobSchema, xn as EventCategory, yt as mayReadLocation, zt as storageCapability } from "../../dist-at9PGh6X.mjs";
2
2
  import { t as HUB_CAP_FWD_ACTION } from "../../hub-cap-forward-BdT320dq.mjs";
3
3
  import { z } from "zod";
4
4
  import { randomUUID } from "node:crypto";
@@ -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-CEIkHEdy.js");
6
+ const require_dist = require("../../dist-DaSCLJVH.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 { Jt as errMsg, Yt as BaseAddon, fn as hydrateSchema } from "../../dist-BX6SpI0i.mjs";
1
+ import { Jt as errMsg, Yt as BaseAddon, fn as hydrateSchema } from "../../dist-at9PGh6X.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-CEIkHEdy.js");
6
+ const require_dist = require("../../dist-DaSCLJVH.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 { Yt as BaseAddon, gt as logDestinationCapability } from "../../dist-BX6SpI0i.mjs";
1
+ import { Yt as BaseAddon, gt as logDestinationCapability } from "../../dist-at9PGh6X.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
- import { G as describeCustomActions } from "./dist-BX6SpI0i.mjs";
1
+ import { G as describeCustomActions } from "./dist-at9PGh6X.mjs";
2
2
  //#region src/kernel/custom-action-registry.ts
3
3
  /**
4
4
  * CustomActionRegistry — per-process registry of addon custom actions.
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-CEIkHEdy.js");
1
+ const require_dist = require("./dist-DaSCLJVH.js");
2
2
  //#region src/kernel/custom-action-registry.ts
3
3
  /**
4
4
  * CustomActionRegistry — per-process registry of addon custom actions.