@camstack/system 1.2.469 → 1.2.470

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 (89) hide show
  1. package/dist/addon-runner.js +56 -25
  2. package/dist/addon-runner.mjs +56 -25
  3. package/dist/addon-utils.mjs +1 -1
  4. package/dist/{agent-https-5OgOR-eF.js → agent-https-D_oo3PNv.js} +1 -1
  5. package/dist/{agent-https-b-zX78oB.mjs → agent-https-DmNQyAl7.mjs} +1 -1
  6. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  7. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +4 -4
  8. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  9. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +5 -5
  10. package/dist/builtins/alerts/alerts.addon.js +1 -1
  11. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  12. package/dist/builtins/autotrack/index.js +1 -1
  13. package/dist/builtins/autotrack/index.mjs +1 -1
  14. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +2 -2
  15. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +5 -5
  16. package/dist/builtins/calendars/calendars.addon.js +1 -1
  17. package/dist/builtins/calendars/calendars.addon.mjs +1 -1
  18. package/dist/builtins/camera-grid/index.js +1 -1
  19. package/dist/builtins/camera-grid/index.mjs +1 -1
  20. package/dist/builtins/composer/composer.addon.js +2 -2
  21. package/dist/builtins/composer/composer.addon.mjs +2 -2
  22. package/dist/builtins/console-logging/index.js +1 -1
  23. package/dist/builtins/console-logging/index.mjs +1 -1
  24. package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
  25. package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
  26. package/dist/builtins/device-history/device-history.addon.js +1 -1
  27. package/dist/builtins/device-history/device-history.addon.mjs +1 -1
  28. package/dist/builtins/device-manager/device-manager.addon.js +1 -1
  29. package/dist/builtins/device-manager/device-manager.addon.mjs +1 -1
  30. package/dist/builtins/hub-forwarder/index.js +1 -1
  31. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  32. package/dist/builtins/keychain/index.js +3 -3
  33. package/dist/builtins/keychain/index.mjs +3 -3
  34. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  35. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  36. package/dist/builtins/local-auth/local-auth.addon.js +2 -2
  37. package/dist/builtins/local-auth/local-auth.addon.mjs +5 -5
  38. package/dist/builtins/local-network/local-network.addon.js +2 -2
  39. package/dist/builtins/local-network/local-network.addon.mjs +2 -2
  40. package/dist/builtins/loki-logging/index.js +1 -1
  41. package/dist/builtins/loki-logging/index.mjs +1 -1
  42. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  43. package/dist/builtins/native-metrics/native-metrics.addon.mjs +10 -10
  44. package/dist/builtins/platform-probe/accelerator-reprobe.d.ts +23 -0
  45. package/dist/builtins/platform-probe/coral-accelerators.d.ts +37 -8
  46. package/dist/builtins/platform-probe/index.d.ts +17 -1
  47. package/dist/builtins/platform-probe/index.js +192 -11
  48. package/dist/builtins/platform-probe/index.mjs +198 -18
  49. package/dist/builtins/platform-probe/platform-scorer.d.ts +14 -0
  50. package/dist/builtins/record-entries/index.js +1 -1
  51. package/dist/builtins/record-entries/index.mjs +1 -1
  52. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  53. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  54. package/dist/builtins/snapshot/index.js +1 -1
  55. package/dist/builtins/snapshot/index.mjs +1 -1
  56. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  57. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +20 -20
  58. package/dist/builtins/sqlite-storage/index.js +1 -1
  59. package/dist/builtins/sqlite-storage/index.mjs +1 -1
  60. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +2 -2
  61. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +2 -2
  62. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  63. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  64. package/dist/builtins/system-config/system-config.addon.js +3 -3
  65. package/dist/builtins/system-config/system-config.addon.mjs +115 -115
  66. package/dist/builtins/winston-logging/index.js +1 -1
  67. package/dist/builtins/winston-logging/index.mjs +1 -1
  68. package/dist/{composition-sources-DTdzzyf0.mjs → composition-sources-B0tqvf0t.mjs} +1 -1
  69. package/dist/{composition-sources-BGXTiUZm.js → composition-sources-CRJffEiB.js} +1 -1
  70. package/dist/{constants-md_POijo.mjs → constants--A505iuO.mjs} +1 -1
  71. package/dist/{constants-2mPqJjkR.js → constants-WF1AqoKF.js} +1 -1
  72. package/dist/{coral-accelerators-oUXmmbc2.js → coral-accelerators-Cri32b7q.js} +61 -24
  73. package/dist/{coral-accelerators-Qhn5TOYZ.mjs → coral-accelerators-Dl-GnMHn.mjs} +61 -30
  74. package/dist/{custom-action-registry-DZSCLBuT.mjs → custom-action-registry-BGYDjTqY.mjs} +37 -37
  75. package/dist/{device-ca-CFdyrqeJ.mjs → device-ca-DYmToMp8.mjs} +1 -1
  76. package/dist/{device-ca-CC58lmNV.js → device-ca-R4MZZtc0.js} +1 -1
  77. package/dist/{dist-DuBtzSCh.js → dist-DRL3rEfN.js} +77 -2
  78. package/dist/{dist-CtVVtyTX.mjs → dist-X1r44BdF.mjs} +77 -2
  79. package/dist/file-host-worker.js +1 -1
  80. package/dist/file-host-worker.mjs +1 -1
  81. package/dist/{hub-mdns-ciao-CmuWLPci.mjs → hub-mdns-ciao-CZV5Hion.mjs} +2 -2
  82. package/dist/{hub-mdns-ciao-BLsX_2cL.js → hub-mdns-ciao-DUoTS6jN.js} +2 -2
  83. package/dist/index.js +8 -8
  84. package/dist/index.mjs +225 -225
  85. package/dist/{restore-archive-CxPAuaNs.js → restore-archive-Df6PsOHP.js} +1 -1
  86. package/dist/{restore-archive-D2w3z_ob.mjs → restore-archive-X0ciGMmO.mjs} +94 -94
  87. package/dist/{wal-maintenance-DeluFl_1.mjs → wal-maintenance-D6J_MmZ8.mjs} +0 -0
  88. package/dist/{wal-maintenance-EK28XXnc.js → wal-maintenance-DYvzJiuK.js} +0 -0
  89. package/package.json +1 -1
@@ -1,10 +1,54 @@
1
1
  import { o as __toESM, r as __exportAll } from "../../chunk-CNf5ZN-e.mjs";
2
- import { $n as platformProbeCapability, $r as errMsg, Da as EventCategory, Ji as emitReadiness, _r as scoreRuntimes, an as enumerateInferenceDevices, ei as BaseAddon } from "../../dist-CtVVtyTX.mjs";
3
- import { n as nodeCoralFs, t as classifyCoralAccelerator } from "../../coral-accelerators-Qhn5TOYZ.mjs";
2
+ import { $n as platformProbeCapability, $r as errMsg, Da as EventCategory, Ji as emitReadiness, _r as scoreRuntimes, an as enumerateInferenceDevices, ei as BaseAddon } from "../../dist-X1r44BdF.mjs";
3
+ import { n as detectCoralAccelerator, r as nodeCoralFs } from "../../coral-accelerators-Dl-GnMHn.mjs";
4
4
  import { promisify } from "node:util";
5
5
  import * as os$1 from "node:os";
6
- import * as fs$1 from "node:fs";
6
+ import * as fs from "node:fs";
7
7
  import { execFile } from "node:child_process";
8
+ //#region src/builtins/platform-probe/accelerator-reprobe.ts
9
+ /**
10
+ * The accelerator part of the platform probe, re-run on its own (D919).
11
+ *
12
+ * The full probe runs once per process. A Coral is the one accelerator that is
13
+ * plugged in, pulled out and moved between nodes while the process runs, so
14
+ * its part (USB ids, PCIe apex units — reads of `/sys` and `/dev`, no model
15
+ * load) is re-run periodically and on demand, and the node's inference device
16
+ * list is rebuilt from the new answer. Pure: the scorer owns the cache.
17
+ */
18
+ /** A stable signature of a Coral answer — what decides "did it change". */
19
+ function coralSignature(coral) {
20
+ if (coral == null) return "none";
21
+ return `units=${(coral.units ?? []).map((u) => `${u.bus}:${u.count}`).join(",")};unavailable=${(coral.unavailable ?? []).map((u) => `${u.bus}:${u.count}:${u.reason}`).join(",")}`;
22
+ }
23
+ /** Which device keys a new probe added and removed. */
24
+ function diffInferenceDevices(previous, next) {
25
+ const before = new Set(previous.map((d) => d.key));
26
+ const after = new Set(next.map((d) => d.key));
27
+ return {
28
+ appeared: [...after].filter((k) => !before.has(k)).toSorted(),
29
+ disappeared: [...before].filter((k) => !after.has(k)).toSorted()
30
+ };
31
+ }
32
+ /**
33
+ * The capabilities with a new Coral answer: hardware, scores and the device
34
+ * enumeration are all derived again from it, so the edgetpu runtime and its
35
+ * devices follow the hardware rather than the boot-time snapshot.
36
+ */
37
+ function withCoral(caps, coral) {
38
+ const hardware = {
39
+ ...caps.hardware,
40
+ coral
41
+ };
42
+ const { scores, best } = scoreRuntimes(hardware);
43
+ return {
44
+ ...caps,
45
+ hardware,
46
+ scores: [...scores],
47
+ bestScore: best,
48
+ devices: enumerateInferenceDevices(hardware)
49
+ };
50
+ }
51
+ //#endregion
8
52
  //#region src/builtins/platform-probe/amd-npu.ts
9
53
  var amd_npu_exports = /* @__PURE__ */ __exportAll({
10
54
  classifyAmdNpu: () => classifyAmdNpu,
@@ -411,15 +455,7 @@ var PlatformScorer = class {
411
455
  } });
412
456
  let gpu = null;
413
457
  let npu = null;
414
- const coral = classifyCoralAccelerator(this.coralFs);
415
- if (coral) {
416
- if ((coral.units ?? []).length > 0) this.logger.info("Coral Edge TPU detected", { meta: { units: coral.units } });
417
- for (const unavailable of coral.unavailable ?? []) this.logger.warn("Coral Edge TPU present but unusable", { meta: {
418
- bus: unavailable.bus,
419
- count: unavailable.count,
420
- reason: unavailable.reason
421
- } });
422
- }
458
+ const coral = this.probeCoral().info;
423
459
  if (platform === "darwin" && arch === "arm64") {
424
460
  gpu = {
425
461
  type: "apple",
@@ -448,14 +484,14 @@ var PlatformScorer = class {
448
484
  if (nvidia) gpu = nvidia;
449
485
  const listRenderNodes = () => {
450
486
  try {
451
- return fs$1.readdirSync("/dev/dri").filter((n) => n.startsWith("renderD")).map((n) => `/dev/dri/${n}`);
487
+ return fs.readdirSync("/dev/dri").filter((n) => n.startsWith("renderD")).map((n) => `/dev/dri/${n}`);
452
488
  } catch {
453
489
  return [];
454
490
  }
455
491
  };
456
492
  const readDrmAttr = (node, attr) => {
457
493
  try {
458
- return fs$1.readFileSync(`/sys/class/drm/${node.split("/").pop()}/device/${attr}`, "utf8");
494
+ return fs.readFileSync(`/sys/class/drm/${node.split("/").pop()}/device/${attr}`, "utf8");
459
495
  } catch {
460
496
  return "";
461
497
  }
@@ -481,12 +517,12 @@ var PlatformScorer = class {
481
517
  }
482
518
  const listDir = (p) => {
483
519
  try {
484
- return fs$1.readdirSync(p);
520
+ return fs.readdirSync(p);
485
521
  } catch {
486
522
  return [];
487
523
  }
488
524
  };
489
- const exists = (p) => fs$1.existsSync(p);
525
+ const exists = (p) => fs.existsSync(p);
490
526
  if (!npu) {
491
527
  const { classifyIntelNpu } = await import("../../intel-npu-C8HKvRQF.mjs");
492
528
  npu = classifyIntelNpu({
@@ -514,7 +550,7 @@ var PlatformScorer = class {
514
550
  exists,
515
551
  readFile: (p) => {
516
552
  try {
517
- return fs$1.readFileSync(p, "utf8");
553
+ return fs.readFileSync(p, "utf8");
518
554
  } catch {
519
555
  return "";
520
556
  }
@@ -539,6 +575,64 @@ var PlatformScorer = class {
539
575
  coral
540
576
  };
541
577
  }
578
+ /**
579
+ * The Coral part of the probe, with the evidence that decided it logged —
580
+ * a node that reports a Coral, or stops reporting one, says WHY (D919).
581
+ */
582
+ probeCoral() {
583
+ const detection = detectCoralAccelerator(this.coralFs);
584
+ const coral = detection.info;
585
+ this.logger.info("Coral Edge TPU probe", { meta: {
586
+ usbBus: detection.usbBus,
587
+ decidedBy: detection.decidedBy,
588
+ units: coral?.units ?? []
589
+ } });
590
+ if (coral) {
591
+ if ((coral.units ?? []).length > 0) this.logger.info("Coral Edge TPU detected", { meta: {
592
+ units: coral.units,
593
+ decidedBy: detection.decidedBy
594
+ } });
595
+ for (const unavailable of coral.unavailable ?? []) this.logger.warn("Coral Edge TPU present but unusable", { meta: {
596
+ bus: unavailable.bus,
597
+ count: unavailable.count,
598
+ reason: unavailable.reason
599
+ } });
600
+ }
601
+ return detection;
602
+ }
603
+ /**
604
+ * Re-run ONLY the accelerator part (Coral USB ids + PCIe apex units: `/sys`
605
+ * and `/dev` reads, no model load) against the cached probe, and rebuild the
606
+ * device list from it when it changed. `null` before the first full probe
607
+ * completed — there is nothing to compare against yet. Logs the evidence
608
+ * only when the answer changed, so a 60 s cadence stays quiet.
609
+ */
610
+ reprobeAccelerators() {
611
+ const cached = this.cached;
612
+ if (cached === null) return null;
613
+ const detection = detectCoralAccelerator(this.coralFs);
614
+ if (coralSignature(detection.info) === coralSignature(cached.hardware.coral)) return {
615
+ caps: cached,
616
+ change: {
617
+ appeared: [],
618
+ disappeared: []
619
+ },
620
+ detection
621
+ };
622
+ this.logger.info("Coral Edge TPU probe changed", { meta: {
623
+ usbBus: detection.usbBus,
624
+ decidedBy: detection.decidedBy,
625
+ before: coralSignature(cached.hardware.coral),
626
+ after: coralSignature(detection.info)
627
+ } });
628
+ const next = withCoral(cached, detection.info);
629
+ this.cached = next;
630
+ return {
631
+ caps: next,
632
+ change: diffInferenceDevices(cached.devices, next.devices),
633
+ detection
634
+ };
635
+ }
542
636
  /** NVIDIA's own tool: exact model and VRAM. Null when absent or failing. */
543
637
  async probeNvidiaSmi() {
544
638
  try {
@@ -727,9 +821,13 @@ function narrowHwAccelPrefer(value) {
727
821
  if (typeof value === "string" && isHwAccelBackend(value)) return value;
728
822
  return null;
729
823
  }
824
+ /** How often the accelerator part of the probe is re-run (D919). Cheap: `/sys` + `/dev` reads. */
825
+ var ACCELERATOR_REPROBE_INTERVAL_MS = 6e4;
730
826
  var PlatformProbeNativeAddon = class extends BaseAddon {
731
827
  scorer = null;
732
828
  cachedCaps = null;
829
+ /** The periodic accelerator re-probe; started once the full probe completed. */
830
+ reprobeTimer = null;
733
831
  /**
734
832
  * Per-boot generation stamp for the manual readiness emissions below.
735
833
  * Constant for the lifetime of this addon instance (== one process boot);
@@ -810,6 +908,7 @@ var PlatformProbeNativeAddon = class extends BaseAddon {
810
908
  bestScore: caps.bestScore.score
811
909
  } });
812
910
  this.emitProbeReadiness("ready");
911
+ this.startAcceleratorReprobe();
813
912
  return caps;
814
913
  }).catch((err) => {
815
914
  const msg = errMsg(err);
@@ -844,15 +943,96 @@ var PlatformProbeNativeAddon = class extends BaseAddon {
844
943
  preferred: res.preferred,
845
944
  rationale: res.rationale
846
945
  };
946
+ },
947
+ rescanAccelerators: async () => {
948
+ await getCaps();
949
+ const rescan = this.reprobeAccelerators("operator");
950
+ if (rescan === null) throw new Error("platform-probe: the probe is shutting down");
951
+ return rescan;
847
952
  }
848
953
  }
849
954
  }];
850
955
  }
956
+ /** Start the periodic accelerator re-probe (idempotent). */
957
+ startAcceleratorReprobe() {
958
+ if (this.reprobeTimer !== null) return;
959
+ this.reprobeTimer = setInterval(() => {
960
+ this.reprobeAccelerators("periodic");
961
+ }, ACCELERATOR_REPROBE_INTERVAL_MS);
962
+ this.reprobeTimer.unref?.();
963
+ }
964
+ /**
965
+ * Re-run the accelerator part of the probe and serve its answer from now on.
966
+ * Every device that appeared or disappeared is logged, naming the node and
967
+ * what triggered the re-probe; the orchestrator sees the new list on its next
968
+ * `getCapabilities` read and re-elects through its device-set-change path.
969
+ * `null` when the scorer is gone or has not completed its first probe.
970
+ */
971
+ reprobeAccelerators(trigger) {
972
+ const scorer = this.scorer;
973
+ if (scorer === null) return null;
974
+ let result;
975
+ try {
976
+ result = scorer.reprobeAccelerators();
977
+ } catch (err) {
978
+ this.ctx.logger.warn("accelerator re-probe failed — last device list kept", {
979
+ tags: { nodeId: this.bareLocalNodeId() },
980
+ meta: {
981
+ nodeId: this.bareLocalNodeId(),
982
+ trigger,
983
+ error: errMsg(err)
984
+ }
985
+ });
986
+ return null;
987
+ }
988
+ if (result === null) return null;
989
+ this.cachedCaps = result.caps;
990
+ const nodeId = this.bareLocalNodeId();
991
+ for (const deviceKey of result.change.appeared) this.ctx.logger.info("inference device appeared", {
992
+ tags: { nodeId },
993
+ meta: {
994
+ nodeId,
995
+ deviceKey,
996
+ trigger,
997
+ decidedBy: result.detection.decidedBy
998
+ }
999
+ });
1000
+ for (const deviceKey of result.change.disappeared) this.ctx.logger.info("inference device disappeared", {
1001
+ tags: { nodeId },
1002
+ meta: {
1003
+ nodeId,
1004
+ deviceKey,
1005
+ trigger,
1006
+ decidedBy: result.detection.decidedBy
1007
+ }
1008
+ });
1009
+ if (trigger === "operator") this.ctx.logger.info("inference devices rescanned", {
1010
+ tags: { nodeId },
1011
+ meta: {
1012
+ nodeId,
1013
+ usbBus: result.detection.usbBus,
1014
+ decidedBy: result.detection.decidedBy,
1015
+ appeared: result.change.appeared,
1016
+ disappeared: result.change.disappeared
1017
+ }
1018
+ });
1019
+ return {
1020
+ devices: result.caps.devices,
1021
+ appeared: result.change.appeared,
1022
+ disappeared: result.change.disappeared,
1023
+ usbBus: result.detection.usbBus,
1024
+ decidedBy: result.detection.decidedBy
1025
+ };
1026
+ }
851
1027
  async onShutdown() {
1028
+ if (this.reprobeTimer !== null) {
1029
+ clearInterval(this.reprobeTimer);
1030
+ this.reprobeTimer = null;
1031
+ }
852
1032
  this.emitProbeReadiness("down");
853
1033
  this.scorer = null;
854
1034
  this.cachedCaps = null;
855
1035
  }
856
1036
  };
857
1037
  //#endregion
858
- export { InferenceConfigResolver, PlatformProbeNativeAddon, PlatformProbeNativeAddon as default, PlatformScorer };
1038
+ export { ACCELERATOR_REPROBE_INTERVAL_MS, InferenceConfigResolver, PlatformProbeNativeAddon, PlatformProbeNativeAddon as default, PlatformScorer };
@@ -1,5 +1,6 @@
1
1
  import type { HardwareInfo, PlatformCapabilities, IScopedLogger } from "@camstack/types";
2
2
  import { type CoralFs } from "./coral-accelerators.js";
3
+ import { type AcceleratorReprobe } from "./accelerator-reprobe.js";
3
4
  export declare class PlatformScorer {
4
5
  private cached;
5
6
  private readonly logger;
@@ -29,6 +30,19 @@ export declare class PlatformScorer {
29
30
  */
30
31
  probe(onPhase?: (phase: string, payload?: Record<string, unknown>) => void): Promise<PlatformCapabilities>;
31
32
  probeHardware(): Promise<HardwareInfo>;
33
+ /**
34
+ * The Coral part of the probe, with the evidence that decided it logged —
35
+ * a node that reports a Coral, or stops reporting one, says WHY (D919).
36
+ */
37
+ private probeCoral;
38
+ /**
39
+ * Re-run ONLY the accelerator part (Coral USB ids + PCIe apex units: `/sys`
40
+ * and `/dev` reads, no model load) against the cached probe, and rebuild the
41
+ * device list from it when it changed. `null` before the first full probe
42
+ * completed — there is nothing to compare against yet. Logs the evidence
43
+ * only when the answer changed, so a 60 s cadence stays quiet.
44
+ */
45
+ reprobeAccelerators(): AcceleratorReprobe | null;
32
46
  /** NVIDIA's own tool: exact model and VRAM. Null when absent or failing. */
33
47
  private probeNvidiaSmi;
34
48
  /** Windows WMI probe; bounded, and a failure is a log line, never a boot failure. */
@@ -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-DuBtzSCh.js");
6
+ const require_dist = require("../../dist-DRL3rEfN.js");
7
7
  let zod = require("zod");
8
8
  let node_crypto = require("node:crypto");
9
9
  //#region src/builtins/record-entries/entries-service.ts
@@ -1,4 +1,4 @@
1
- import { ei as BaseAddon, ha as recordSecretRef, ji as UnknownRecordKindError, nr as recordEntriesCapability, sa as mapSecretLeaves, ui as InvalidRecordError } from "../../dist-CtVVtyTX.mjs";
1
+ import { ei as BaseAddon, ha as recordSecretRef, ji as UnknownRecordKindError, nr as recordEntriesCapability, sa as mapSecretLeaves, ui as InvalidRecordError } from "../../dist-X1r44BdF.mjs";
2
2
  import { z } from "zod";
3
3
  import { randomUUID } from "node:crypto";
4
4
  //#region src/builtins/record-entries/entries-service.ts
@@ -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-DuBtzSCh.js");
6
+ const require_dist = require("../../dist-DRL3rEfN.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 { Da as EventCategory, ei as BaseAddon } from "../../dist-CtVVtyTX.mjs";
1
+ import { Da as EventCategory, ei as BaseAddon } from "../../dist-X1r44BdF.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-DuBtzSCh.js");
6
+ const require_dist = require("../../dist-DRL3rEfN.js");
7
7
  const require_snapshot_courtesy = require("../../snapshot-courtesy-D_C5-nC0.js");
8
8
  let zod = require("zod");
9
9
  let node_crypto = require("node:crypto");
@@ -1,4 +1,4 @@
1
- import { $r as errMsg, Da as EventCategory, Dt as batteryCapability, Et as bareAddonId, Hn as memoizePinnedFfmpeg, Qr as DeviceType, Xr as DeviceFeature, Xt as deriveBatteryPresence, ca as nodePin, ei as BaseAddon, kr as streamQualityLabel, o as BatteryStatusSchema, xr as snapshotCapability } from "../../dist-CtVVtyTX.mjs";
1
+ import { $r as errMsg, Da as EventCategory, Dt as batteryCapability, Et as bareAddonId, Hn as memoizePinnedFfmpeg, Qr as DeviceType, Xr as DeviceFeature, Xt as deriveBatteryPresence, ca as nodePin, ei as BaseAddon, kr as streamQualityLabel, o as BatteryStatusSchema, xr as snapshotCapability } from "../../dist-X1r44BdF.mjs";
2
2
  import { i as renderCourtesyOverlayJpeg, n as courtesyCacheKey, r as renderCourtesyJpeg } from "../../snapshot-courtesy-CyFs1M3I.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-DuBtzSCh.js");
6
+ const require_dist = require("../../dist-DRL3rEfN.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,10 +1,10 @@
1
- import { Dr as storageProviderCapability, ei as BaseAddon, pn as filesystemBrowseCapability } from "../../dist-CtVVtyTX.mjs";
1
+ import { Dr as storageProviderCapability, ei as BaseAddon, pn as filesystemBrowseCapability } from "../../dist-X1r44BdF.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";
5
5
  import { basename, dirname, isAbsolute, join, resolve, sep } from "node:path";
6
6
  import { homedir } from "node:os";
7
- import * as fs$1 from "node:fs";
7
+ import * as fs from "node:fs";
8
8
  //#region src/builtins/sqlite-storage/path-guard.ts
9
9
  /**
10
10
  * Guards for the filesystem-browse cap. Pure + synchronous so they are
@@ -169,16 +169,16 @@ var FilesystemStorageProvider = class FilesystemStorageProvider {
169
169
  error: "config.basePath must be a non-empty string"
170
170
  };
171
171
  try {
172
- const stat = await fs$1.promises.stat(basePath).catch(() => null);
172
+ const stat = await fs.promises.stat(basePath).catch(() => null);
173
173
  if (stat) {
174
174
  if (!stat.isDirectory()) return {
175
175
  ok: false,
176
176
  error: `Path "${basePath}" exists but is not a directory`
177
177
  };
178
- await fs$1.promises.access(basePath, fs$1.constants.W_OK);
178
+ await fs.promises.access(basePath, fs.constants.W_OK);
179
179
  return { ok: true };
180
180
  }
181
- await fs$1.promises.mkdir(basePath, { recursive: true });
181
+ await fs.promises.mkdir(basePath, { recursive: true });
182
182
  return { ok: true };
183
183
  } catch (err) {
184
184
  return {
@@ -192,12 +192,12 @@ var FilesystemStorageProvider = class FilesystemStorageProvider {
192
192
  }
193
193
  async write({ location, relativePath, data }) {
194
194
  const filePath = safeResolve(getBasePath(location), relativePath);
195
- await fs$1.promises.mkdir(path$1.dirname(filePath), { recursive: true });
196
- await fs$1.promises.writeFile(filePath, data);
195
+ await fs.promises.mkdir(path$1.dirname(filePath), { recursive: true });
196
+ await fs.promises.writeFile(filePath, data);
197
197
  }
198
198
  async read({ location, relativePath }) {
199
199
  const filePath = safeResolve(getBasePath(location), relativePath);
200
- const buf = await fs$1.promises.readFile(filePath);
200
+ const buf = await fs.promises.readFile(filePath);
201
201
  const out = new Uint8Array(new ArrayBuffer(buf.byteLength));
202
202
  out.set(buf);
203
203
  return out;
@@ -205,7 +205,7 @@ var FilesystemStorageProvider = class FilesystemStorageProvider {
205
205
  async exists({ location, relativePath }) {
206
206
  const filePath = safeResolve(getBasePath(location), relativePath);
207
207
  try {
208
- await fs$1.promises.access(filePath);
208
+ await fs.promises.access(filePath);
209
209
  return true;
210
210
  } catch {
211
211
  return false;
@@ -215,25 +215,25 @@ var FilesystemStorageProvider = class FilesystemStorageProvider {
215
215
  const base = getBasePath(location);
216
216
  const dir = prefix ? safeResolve(base, prefix) : path$1.resolve(base);
217
217
  try {
218
- return (await fs$1.promises.readdir(dir, { withFileTypes: true })).map((e) => prefix ? `${prefix}/${e.name}` : e.name);
218
+ return (await fs.promises.readdir(dir, { withFileTypes: true })).map((e) => prefix ? `${prefix}/${e.name}` : e.name);
219
219
  } catch {
220
220
  return [];
221
221
  }
222
222
  }
223
223
  async delete({ location, relativePath }) {
224
224
  const filePath = safeResolve(getBasePath(location), relativePath);
225
- await fs$1.promises.rm(filePath, { force: true });
225
+ await fs.promises.rm(filePath, { force: true });
226
226
  }
227
227
  async getAvailableSpace({ location }) {
228
228
  const base = path$1.resolve(getBasePath(location));
229
229
  try {
230
230
  let target = base;
231
- while (!fs$1.existsSync(target)) {
231
+ while (!fs.existsSync(target)) {
232
232
  const parent = path$1.dirname(target);
233
233
  if (!parent || parent === target) return null;
234
234
  target = parent;
235
235
  }
236
- const stats = await fs$1.promises.statfs(target);
236
+ const stats = await fs.promises.statfs(target);
237
237
  return stats.bavail * stats.bsize;
238
238
  } catch {
239
239
  return null;
@@ -242,9 +242,9 @@ var FilesystemStorageProvider = class FilesystemStorageProvider {
242
242
  async beginUpload({ location, relativePath }) {
243
243
  const target = safeResolve(getBasePath(location), relativePath);
244
244
  const partial = `${target}.partial`;
245
- await fs$1.promises.mkdir(path$1.dirname(target), { recursive: true });
246
- await fs$1.promises.unlink(partial).catch(() => {});
247
- const stream = fs$1.createWriteStream(partial);
245
+ await fs.promises.mkdir(path$1.dirname(target), { recursive: true });
246
+ await fs.promises.unlink(partial).catch(() => {});
247
+ const stream = fs.createWriteStream(partial);
248
248
  const uploadId = randomUUID();
249
249
  const session = {
250
250
  stream,
@@ -285,7 +285,7 @@ var FilesystemStorageProvider = class FilesystemStorageProvider {
285
285
  session.stream.end(() => resolve());
286
286
  session.stream.on("error", reject);
287
287
  });
288
- await fs$1.promises.rename(session.partial, session.target);
288
+ await fs.promises.rename(session.partial, session.target);
289
289
  clearTimeout(session.timer);
290
290
  this.uploads.delete(uploadId);
291
291
  }
@@ -295,14 +295,14 @@ var FilesystemStorageProvider = class FilesystemStorageProvider {
295
295
  try {
296
296
  session.stream.destroy();
297
297
  } catch {}
298
- await fs$1.promises.unlink(session.partial).catch(() => {});
298
+ await fs.promises.unlink(session.partial).catch(() => {});
299
299
  clearTimeout(session.timer);
300
300
  this.uploads.delete(uploadId);
301
301
  }
302
302
  async beginDownload({ location, relativePath }) {
303
303
  const target = safeResolve(getBasePath(location), relativePath);
304
- const stat = await fs$1.promises.stat(target);
305
- const fd = await fs$1.promises.open(target, "r");
304
+ const stat = await fs.promises.stat(target);
305
+ const fd = await fs.promises.open(target, "r");
306
306
  const downloadId = randomUUID();
307
307
  const session = {
308
308
  fd,
@@ -4,7 +4,7 @@ Object.defineProperties(exports, {
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
6
  const require_builtins_sqlite_storage_filesystem_storage_addon = require("./filesystem-storage.addon.js");
7
- const require_wal_maintenance = require("../../wal-maintenance-EK28XXnc.js");
7
+ const require_wal_maintenance = require("../../wal-maintenance-DYvzJiuK.js");
8
8
  const require_builtins_sqlite_storage_sqlite_settings_addon = require("./sqlite-settings.addon.js");
9
9
  //#region src/builtins/sqlite-storage/config-store.ts
10
10
  var ConfigStore = class {
@@ -1,5 +1,5 @@
1
1
  import { FilesystemStorageAddon, t as FilesystemStorageProvider } from "./filesystem-storage.addon.mjs";
2
- import { A as SQLITE_MMAP_CEILING_BYTES, B as SQLITE_SLOW_CALL_MS, F as sqlitePageCacheKibFor, H as sqliteEngineStorm, I as SQLITE_ENGINE_STORM_WALL_SHARE, L as SQLITE_PROFILE_REPORT_FLOOR_MS, M as SQLITE_PAGE_CACHE_CEILING_KIB, N as SQLITE_PAGE_CACHE_FLOOR_KIB, P as sqliteMmapSizeFor, R as SQLITE_PROFILE_REPORT_INTERVAL_MS, V as SqliteOpProfiler, a as WalMaintenance, i as WAL_MAINTENANCE_INTERVAL_MS, j as SQLITE_MMAP_FLOOR_BYTES, k as SQLITE_JOURNAL_SIZE_LIMIT_BYTES, l as SqliteSettingsBackend, n as WAL_HIGH_WATER_BYTES, r as WAL_IDLE_QUIET_MS, t as WAL_CHECKPOINT_BUSY_TIMEOUT_MS, z as SQLITE_PROFILE_TOP_N } from "../../wal-maintenance-DeluFl_1.mjs";
2
+ import { A as SQLITE_MMAP_CEILING_BYTES, B as SQLITE_SLOW_CALL_MS, F as sqlitePageCacheKibFor, H as sqliteEngineStorm, I as SQLITE_ENGINE_STORM_WALL_SHARE, L as SQLITE_PROFILE_REPORT_FLOOR_MS, M as SQLITE_PAGE_CACHE_CEILING_KIB, N as SQLITE_PAGE_CACHE_FLOOR_KIB, P as sqliteMmapSizeFor, R as SQLITE_PROFILE_REPORT_INTERVAL_MS, V as SqliteOpProfiler, a as WalMaintenance, i as WAL_MAINTENANCE_INTERVAL_MS, j as SQLITE_MMAP_FLOOR_BYTES, k as SQLITE_JOURNAL_SIZE_LIMIT_BYTES, l as SqliteSettingsBackend, n as WAL_HIGH_WATER_BYTES, r as WAL_IDLE_QUIET_MS, t as WAL_CHECKPOINT_BUSY_TIMEOUT_MS, z as SQLITE_PROFILE_TOP_N } from "../../wal-maintenance-D6J_MmZ8.mjs";
3
3
  import { SqliteSettingsAddon } from "./sqlite-settings.addon.mjs";
4
4
  //#region src/builtins/sqlite-storage/config-store.ts
5
5
  var ConfigStore = class {
@@ -3,9 +3,9 @@ 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-DuBtzSCh.js");
6
+ const require_dist = require("../../dist-DRL3rEfN.js");
7
7
  const require_retired_settings_keys = require("../../retired-settings-keys-CGUqX-Oz.js");
8
- const require_wal_maintenance = require("../../wal-maintenance-EK28XXnc.js");
8
+ const require_wal_maintenance = require("../../wal-maintenance-DYvzJiuK.js");
9
9
  const require_sqlite_snapshot_protocol = require("../../sqlite-snapshot-protocol-B9OndqZv.js");
10
10
  const require_wal_checkpoint_policy = require("../../wal-checkpoint-policy-d2z2qPqx.js");
11
11
  let node_fs_promises = require("node:fs/promises");
@@ -1,6 +1,6 @@
1
- import { $r as errMsg, C as DATA_STORE_DATABASES, Cr as storageAdminCapability, Et as bareAddonId, Gt as dataStoreProviderCapability, Ir as vectorStoreCapability, Kt as databaseSnapshotCapability, S as DATABASE_SNAPSHOT_TIMEOUT_MS, Si as RecordKindDeclarationSchema, b as DATABASE_SNAPSHOT_PARTIAL_SUFFIX, di as NoCallerError, ei as BaseAddon, gi as RECORD_SWEEP_INTERVAL_MS, ji as UnknownRecordKindError, ki as TransactRefusedError, oi as DeclarationRefusedError, rr as recordsCapability, ua as normalizeSecretOwner, ui as InvalidRecordError, x as DATABASE_SNAPSHOT_SUFFIX, yi as RUNTIME_DEFAULTS } from "../../dist-CtVVtyTX.mjs";
1
+ import { $r as errMsg, C as DATA_STORE_DATABASES, Cr as storageAdminCapability, Et as bareAddonId, Gt as dataStoreProviderCapability, Ir as vectorStoreCapability, Kt as databaseSnapshotCapability, S as DATABASE_SNAPSHOT_TIMEOUT_MS, Si as RecordKindDeclarationSchema, b as DATABASE_SNAPSHOT_PARTIAL_SUFFIX, di as NoCallerError, ei as BaseAddon, gi as RECORD_SWEEP_INTERVAL_MS, ji as UnknownRecordKindError, ki as TransactRefusedError, oi as DeclarationRefusedError, rr as recordsCapability, ua as normalizeSecretOwner, ui as InvalidRecordError, x as DATABASE_SNAPSHOT_SUFFIX, yi as RUNTIME_DEFAULTS } from "../../dist-X1r44BdF.mjs";
2
2
  import { r as retiredKeyStoreOf, t as purgeRetiredSettingsKeys } from "../../retired-settings-keys-C_Kjp-Bj.mjs";
3
- import { C as RecordsEngine, D as callVector, E as callRecords, O as controlTargetOf, S as trustResult, T as callData, _ as collectTransferables, a as WalMaintenance, c as vectorProviderOfOwnedFile, d as CrossDatabaseTransactError, f as DatabaseBusyError, l as SqliteSettingsBackend, m as rehydrateError, o as createVectorIndex, p as DuplicatePlacementError, s as vectorProviderOf, u as CollectionPlacementError, v as isFileHostMessage, w as callControl } from "../../wal-maintenance-DeluFl_1.mjs";
3
+ import { C as RecordsEngine, D as callVector, E as callRecords, O as controlTargetOf, S as trustResult, T as callData, _ as collectTransferables, a as WalMaintenance, c as vectorProviderOfOwnedFile, d as CrossDatabaseTransactError, f as DatabaseBusyError, l as SqliteSettingsBackend, m as rehydrateError, o as createVectorIndex, p as DuplicatePlacementError, s as vectorProviderOf, u as CollectionPlacementError, v as isFileHostMessage, w as callControl } from "../../wal-maintenance-D6J_MmZ8.mjs";
4
4
  import { r as isSnapshotWorkerMessage } from "../../sqlite-snapshot-protocol-2QaTouWV.mjs";
5
5
  import { a as isWorkerMessage, t as WAL_CHECKPOINT_LARGE_PASS_FRAMES } from "../../wal-checkpoint-policy-BahrTtyD.mjs";
6
6
  import { createRequire } from "node:module";
@@ -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-DuBtzSCh.js");
6
+ const require_dist = require("../../dist-DRL3rEfN.js");
7
7
  const require_read_all_rows$1 = require("../../read-all-rows-CVoO1ONM.js");
8
8
  let zod = require("zod");
9
9
  let node_crypto = require("node:crypto");
@@ -1,4 +1,4 @@
1
- import { Bn as mayReadLocation, Da as EventCategory, En as isLocationEnabled, Ki as defineRecordKinds, Lr as withLocationMode, Nn as legacyModeOf, Tr as storageMigrationCapability, Vn as mayWriteToLocation, Wn as modeMayWrite, _a as resolveSecretMarkers, _i as REDACTED_SECRET, _n as gbToBytes, da as parseJsonObject, dr as resolveLocationMode, dt as StorageLocationModeSchema, ei as BaseAddon, ft as StorageLocationTypeSchema, la as normalizeNodeId, ln as evictionPolicyOfLocation, pt as StorageMigrationJobSchema, q as LegacyStorageLocationDefaultSchema, ra as isSecretMarker, ut as StorageCleanupJobSchema, vr as settingsStoreCapability, wa as transformSecretWrite, wr as storageCapability, ya as secretTreeFromPaths, zi as collectSecretConfigKeys } from "../../dist-CtVVtyTX.mjs";
1
+ import { Bn as mayReadLocation, Da as EventCategory, En as isLocationEnabled, Ki as defineRecordKinds, Lr as withLocationMode, Nn as legacyModeOf, Tr as storageMigrationCapability, Vn as mayWriteToLocation, Wn as modeMayWrite, _a as resolveSecretMarkers, _i as REDACTED_SECRET, _n as gbToBytes, da as parseJsonObject, dr as resolveLocationMode, dt as StorageLocationModeSchema, ei as BaseAddon, ft as StorageLocationTypeSchema, la as normalizeNodeId, ln as evictionPolicyOfLocation, pt as StorageMigrationJobSchema, q as LegacyStorageLocationDefaultSchema, ra as isSecretMarker, ut as StorageCleanupJobSchema, vr as settingsStoreCapability, wa as transformSecretWrite, wr as storageCapability, ya as secretTreeFromPaths, zi as collectSecretConfigKeys } from "../../dist-X1r44BdF.mjs";
2
2
  import { t as require_read_all_rows } from "../../read-all-rows-TaPqdWNF.mjs";
3
3
  import { z } from "zod";
4
4
  import { randomUUID } from "node:crypto";
@@ -3,11 +3,11 @@ 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-DuBtzSCh.js");
6
+ const require_dist = require("../../dist-DRL3rEfN.js");
7
7
  const require_safe_buffer$1 = require("../../safe-buffer-D3aoa-7X.js");
8
8
  const require_x509_es = require("../../x509.es-C4cOo48M.js");
9
- const require_agent_https = require("../../agent-https-5OgOR-eF.js");
10
- const require_constants$8 = require("../../constants-2mPqJjkR.js");
9
+ const require_agent_https = require("../../agent-https-D_oo3PNv.js");
10
+ const require_constants$8 = require("../../constants-WF1AqoKF.js");
11
11
  const require_src$1 = require("../../src-CnAqG6EF.js");
12
12
  let zod = require("zod");
13
13
  let node_crypto = require("node:crypto");