@camstack/system 1.2.176 → 1.2.178
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.
- package/dist/addon-runner.js +2 -3
- package/dist/addon-runner.mjs +2 -3
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
- package/dist/builtins/alerts/alerts.addon.js +1 -1
- package/dist/builtins/alerts/alerts.addon.mjs +1 -1
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
- package/dist/builtins/console-logging/index.js +1 -1
- package/dist/builtins/console-logging/index.mjs +1 -1
- package/dist/builtins/core-blocks/core-blocks.addon.js +1 -1
- package/dist/builtins/core-blocks/core-blocks.addon.mjs +1 -1
- package/dist/builtins/device-manager/device-manager.addon.js +8 -4
- package/dist/builtins/device-manager/device-manager.addon.mjs +8 -4
- package/dist/builtins/doorbell/virtual-doorbell.addon.js +1 -1
- package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
- package/dist/builtins/hub-forwarder/index.js +1 -1
- package/dist/builtins/hub-forwarder/index.mjs +1 -1
- package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
- package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
- package/dist/builtins/local-auth/local-auth.addon.js +1 -1
- package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
- package/dist/builtins/local-network/local-network.addon.js +1 -1
- package/dist/builtins/local-network/local-network.addon.mjs +1 -1
- package/dist/builtins/loki-logging/index.js +1 -1
- package/dist/builtins/loki-logging/index.mjs +1 -1
- package/dist/builtins/native-metrics/native-metrics.addon.d.ts +0 -1
- package/dist/builtins/native-metrics/native-metrics.addon.js +2 -40
- package/dist/builtins/native-metrics/native-metrics.addon.mjs +2 -40
- package/dist/builtins/platform-probe/index.js +1 -1
- package/dist/builtins/platform-probe/index.mjs +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
- package/dist/builtins/snapshot/index.js +1 -1
- package/dist/builtins/snapshot/index.mjs +1 -1
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
- package/dist/builtins/sqlite-storage/filter-compiler.d.ts +10 -0
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
- package/dist/builtins/system-config/system-config.addon.js +1 -1
- package/dist/builtins/system-config/system-config.addon.mjs +1 -1
- package/dist/builtins/winston-logging/index.js +1 -1
- package/dist/builtins/winston-logging/index.mjs +1 -1
- package/dist/{dist-KItAWyKG.js → dist-C0IXtI_E.js} +100 -32
- package/dist/{dist-BianbXLH.mjs → dist-DMJ-DM7n.mjs} +95 -33
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -4
- package/dist/index.mjs +3 -3
- package/dist/kernel/heap-allocation-sample.d.ts +107 -0
- package/dist/kernel/heap-spaces.d.ts +1 -6
- package/dist/{manifest-system-deps-BPpzK6cH.mjs → manifest-system-deps-BMD6YE4f.mjs} +3 -36
- package/dist/{manifest-system-deps-DU0BvqV-.js → manifest-system-deps-D6ncx0jA.js} +2 -47
- package/dist/{retired-settings-keys-CXYnLa7d.mjs → retired-settings-keys-D66kBk8P.mjs} +1 -1
- package/dist/{retired-settings-keys-DfNTZPhu.js → retired-settings-keys-eLv_RCfp.js} +1 -1
- package/package.json +1 -1
|
@@ -12842,17 +12842,6 @@ var ContainerMemoryPointSchema = zod.z.object({
|
|
|
12842
12842
|
*/
|
|
12843
12843
|
gpuShmemBytes: zod.z.number().nullable()
|
|
12844
12844
|
}).extend({ atMs: zod.z.number() });
|
|
12845
|
-
var DumpHeapSnapshotInputSchema = zod.z.object({
|
|
12846
|
-
/** The addon whose runner should dump a heap snapshot. */
|
|
12847
|
-
addonId: zod.z.string() });
|
|
12848
|
-
var DumpHeapSnapshotResultSchema = zod.z.object({
|
|
12849
|
-
success: zod.z.boolean(),
|
|
12850
|
-
/** Path of the written .heapsnapshot inside the runner's container/host. */
|
|
12851
|
-
path: zod.z.string().optional(),
|
|
12852
|
-
/** Process pid that was signalled. */
|
|
12853
|
-
pid: zod.z.number().optional(),
|
|
12854
|
-
reason: zod.z.string().optional()
|
|
12855
|
-
});
|
|
12856
12845
|
/**
|
|
12857
12846
|
* One point of one function's series.
|
|
12858
12847
|
*
|
|
@@ -13041,19 +13030,7 @@ var metricsProviderCapability = {
|
|
|
13041
13030
|
* agent's ring alone (`durable: false`). Empty is a legitimate answer: a
|
|
13042
13031
|
* node nobody has heard from has no series, and saying so is the truth.
|
|
13043
13032
|
*/
|
|
13044
|
-
getLoadSeries: method(GetLoadSeriesInputSchema, NodeLoadSeriesSchema)
|
|
13045
|
-
/**
|
|
13046
|
-
* Tell the addon's forked runner to write a V8 heap snapshot to disk (via
|
|
13047
|
-
* SIGUSR2 — the runner's diagnostic handler). Also logs its
|
|
13048
|
-
* `process.memoryUsage()` + heap-space breakdown. Resolves the pid from
|
|
13049
|
-
* `$process.list`, so it can only reach a runner this node spawned. Use
|
|
13050
|
-
* for deep per-addon memory attribution; copy the returned path off the
|
|
13051
|
-
* node to analyze.
|
|
13052
|
-
*/
|
|
13053
|
-
dumpHeapSnapshot: method(DumpHeapSnapshotInputSchema, DumpHeapSnapshotResultSchema, {
|
|
13054
|
-
kind: "mutation",
|
|
13055
|
-
auth: "admin"
|
|
13056
|
-
})
|
|
13033
|
+
getLoadSeries: method(GetLoadSeriesInputSchema, NodeLoadSeriesSchema)
|
|
13057
13034
|
}
|
|
13058
13035
|
};
|
|
13059
13036
|
var modelConvertCapability = {
|
|
@@ -17777,7 +17754,8 @@ var MediaFileKindEnum = zod.z.enum([
|
|
|
17777
17754
|
"plateCrop",
|
|
17778
17755
|
"keyFrame",
|
|
17779
17756
|
"keyFrameSmall",
|
|
17780
|
-
"thumbnailSmall"
|
|
17757
|
+
"thumbnailSmall",
|
|
17758
|
+
"sceneFrame"
|
|
17781
17759
|
]);
|
|
17782
17760
|
/**
|
|
17783
17761
|
* One media row ON THE WIRE: what it is, how big it is, and WHERE ITS BYTES
|
|
@@ -18441,7 +18419,21 @@ var pipelineAnalyticsCapability = {
|
|
|
18441
18419
|
/** Include stationary-promoted rows (parked objects handed to the
|
|
18442
18420
|
* stationary registry). Default false: the timeline lists passages,
|
|
18443
18421
|
* not parking records (operator decision, 2026-08-15). */
|
|
18444
|
-
includeStationary: zod.z.boolean().optional()
|
|
18422
|
+
includeStationary: zod.z.boolean().optional(),
|
|
18423
|
+
/**
|
|
18424
|
+
* Restrict to these track classes. ABSENT or EMPTY means no filter.
|
|
18425
|
+
*
|
|
18426
|
+
* Added 2026-09-03: the timeline's class chips filtered in the CLIENT,
|
|
18427
|
+
* on a day of rows already downloaded. The zone filter had been moved
|
|
18428
|
+
* here for exactly that reason — and it is also what lets the rows come
|
|
18429
|
+
* back `slim` — but the class filter was left behind, so a narrow
|
|
18430
|
+
* selection was still a wide read followed by a wide discard.
|
|
18431
|
+
*
|
|
18432
|
+
* Empty is "show all", not "nothing matches": a chip row with nothing
|
|
18433
|
+
* selected is an operator who has not narrowed anything, and an empty
|
|
18434
|
+
* timeline would read as a camera that saw nothing.
|
|
18435
|
+
*/
|
|
18436
|
+
classes: zod.z.array(zod.z.string()).optional()
|
|
18445
18437
|
}), zod.z.array(TrackSchema).readonly()),
|
|
18446
18438
|
/**
|
|
18447
18439
|
* Batched cluster-wide track listing — ONE call for the events page /
|
|
@@ -33741,6 +33733,82 @@ var RUNTIME_DEFAULTS = {
|
|
|
33741
33733
|
"auth.tokenExpiry": "30d"
|
|
33742
33734
|
};
|
|
33743
33735
|
/**
|
|
33736
|
+
* WHICH child a container stands for — one definition, for every consumer.
|
|
33737
|
+
*
|
|
33738
|
+
* A CONTAINER device has no controllable surface of its own: it groups entity
|
|
33739
|
+
* children (a Gree air-conditioner grouping a climate child plus light, x-fan
|
|
33740
|
+
* and health switches). Everything that has to show or act on a container has
|
|
33741
|
+
* to answer the same question — which child IS the container — and until now
|
|
33742
|
+
* three places answered it separately:
|
|
33743
|
+
*
|
|
33744
|
+
* - `ui-library/device-controls/primary-child.ts` (admin-ui rendering)
|
|
33745
|
+
* - `addon-provider-homeassistant` PARENT_TYPE_PRIORITY (adoption)
|
|
33746
|
+
* - the viewer's own `container-primary.ts` (linked-devices panel)
|
|
33747
|
+
*
|
|
33748
|
+
* Each carried the same list and a comment asking the others to stay in sync.
|
|
33749
|
+
* This is that list, in the one package all of them already depend on.
|
|
33750
|
+
*
|
|
33751
|
+
* The rule has two halves and the ORDER matters: an operator's explicit pick
|
|
33752
|
+
* wins outright, and only in its absence does type priority decide. The pick is
|
|
33753
|
+
* keyed on the child's re-sync-stable `entityId`, not its numeric id, so it
|
|
33754
|
+
* survives a re-sync that reallocates ids.
|
|
33755
|
+
*/
|
|
33756
|
+
/**
|
|
33757
|
+
* Type priority, most→least "primary". An actuator (climate / lock / cover / …)
|
|
33758
|
+
* outranks a bare `switch` so a container's defining child wins over its
|
|
33759
|
+
* auxiliary switches. Unknown or absent types sort after every entry.
|
|
33760
|
+
*
|
|
33761
|
+
* NB: `siren` deliberately sits BELOW `switch` — it is a switch-family
|
|
33762
|
+
* actuator, and a camera's siren must not out-rank the thing the container is.
|
|
33763
|
+
*
|
|
33764
|
+
* These strings are matched against a child's `DeviceType` VALUE, so they must
|
|
33765
|
+
* equal the enum's string values.
|
|
33766
|
+
*/
|
|
33767
|
+
var CONTAINER_CHILD_PRIORITY = [
|
|
33768
|
+
"media-player",
|
|
33769
|
+
"alarm-panel",
|
|
33770
|
+
"thermostat",
|
|
33771
|
+
"climate",
|
|
33772
|
+
"humidifier",
|
|
33773
|
+
"water-heater",
|
|
33774
|
+
"lock",
|
|
33775
|
+
"cover",
|
|
33776
|
+
"valve",
|
|
33777
|
+
"fan",
|
|
33778
|
+
"vacuum",
|
|
33779
|
+
"lawn-mower",
|
|
33780
|
+
"light",
|
|
33781
|
+
"switch",
|
|
33782
|
+
"siren",
|
|
33783
|
+
"button",
|
|
33784
|
+
"control",
|
|
33785
|
+
"notifier",
|
|
33786
|
+
"script",
|
|
33787
|
+
"automation",
|
|
33788
|
+
"update",
|
|
33789
|
+
"presence",
|
|
33790
|
+
"weather",
|
|
33791
|
+
"image",
|
|
33792
|
+
"sensor"
|
|
33793
|
+
];
|
|
33794
|
+
function rank(type) {
|
|
33795
|
+
const i = CONTAINER_CHILD_PRIORITY.indexOf(type);
|
|
33796
|
+
return i === -1 ? CONTAINER_CHILD_PRIORITY.length : i;
|
|
33797
|
+
}
|
|
33798
|
+
/**
|
|
33799
|
+
* The child a container stands for: the operator's pick when it still exists,
|
|
33800
|
+
* else the highest-priority type. `null` for a childless container — a caller
|
|
33801
|
+
* must decide what an empty container means for it, rather than being handed a
|
|
33802
|
+
* child that is not there.
|
|
33803
|
+
*/
|
|
33804
|
+
function resolveContainerPrimaryChild(children, overrideEntityId) {
|
|
33805
|
+
if (overrideEntityId !== void 0 && overrideEntityId !== null) {
|
|
33806
|
+
const picked = children.find((c) => c.entityId === overrideEntityId);
|
|
33807
|
+
if (picked !== void 0) return picked;
|
|
33808
|
+
}
|
|
33809
|
+
return [...children].toSorted((a, b) => rank(a.type) - rank(b.type))[0] ?? null;
|
|
33810
|
+
}
|
|
33811
|
+
/**
|
|
33744
33812
|
* Accessory device helpers — shared across drivers.
|
|
33745
33813
|
*
|
|
33746
33814
|
* Many vendor-specific drivers register accessory child devices on
|
|
@@ -36881,12 +36949,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
36881
36949
|
addonId: null,
|
|
36882
36950
|
access: "view"
|
|
36883
36951
|
},
|
|
36884
|
-
"metricsProvider.dumpHeapSnapshot": {
|
|
36885
|
-
capName: "metrics-provider",
|
|
36886
|
-
capScope: "system",
|
|
36887
|
-
addonId: null,
|
|
36888
|
-
access: "create"
|
|
36889
|
-
},
|
|
36890
36952
|
"metricsProvider.getAddonStats": {
|
|
36891
36953
|
capName: "metrics-provider",
|
|
36892
36954
|
capScope: "system",
|
|
@@ -43674,6 +43736,12 @@ Object.defineProperty(exports, "resolveCapMount", {
|
|
|
43674
43736
|
return resolveCapMount;
|
|
43675
43737
|
}
|
|
43676
43738
|
});
|
|
43739
|
+
Object.defineProperty(exports, "resolveContainerPrimaryChild", {
|
|
43740
|
+
enumerable: true,
|
|
43741
|
+
get: function() {
|
|
43742
|
+
return resolveContainerPrimaryChild;
|
|
43743
|
+
}
|
|
43744
|
+
});
|
|
43677
43745
|
Object.defineProperty(exports, "resolveMethodAuth", {
|
|
43678
43746
|
enumerable: true,
|
|
43679
43747
|
get: function() {
|
|
@@ -12842,17 +12842,6 @@ var ContainerMemoryPointSchema = z.object({
|
|
|
12842
12842
|
*/
|
|
12843
12843
|
gpuShmemBytes: z.number().nullable()
|
|
12844
12844
|
}).extend({ atMs: z.number() });
|
|
12845
|
-
var DumpHeapSnapshotInputSchema = z.object({
|
|
12846
|
-
/** The addon whose runner should dump a heap snapshot. */
|
|
12847
|
-
addonId: z.string() });
|
|
12848
|
-
var DumpHeapSnapshotResultSchema = z.object({
|
|
12849
|
-
success: z.boolean(),
|
|
12850
|
-
/** Path of the written .heapsnapshot inside the runner's container/host. */
|
|
12851
|
-
path: z.string().optional(),
|
|
12852
|
-
/** Process pid that was signalled. */
|
|
12853
|
-
pid: z.number().optional(),
|
|
12854
|
-
reason: z.string().optional()
|
|
12855
|
-
});
|
|
12856
12845
|
/**
|
|
12857
12846
|
* One point of one function's series.
|
|
12858
12847
|
*
|
|
@@ -13041,19 +13030,7 @@ var metricsProviderCapability = {
|
|
|
13041
13030
|
* agent's ring alone (`durable: false`). Empty is a legitimate answer: a
|
|
13042
13031
|
* node nobody has heard from has no series, and saying so is the truth.
|
|
13043
13032
|
*/
|
|
13044
|
-
getLoadSeries: method(GetLoadSeriesInputSchema, NodeLoadSeriesSchema)
|
|
13045
|
-
/**
|
|
13046
|
-
* Tell the addon's forked runner to write a V8 heap snapshot to disk (via
|
|
13047
|
-
* SIGUSR2 — the runner's diagnostic handler). Also logs its
|
|
13048
|
-
* `process.memoryUsage()` + heap-space breakdown. Resolves the pid from
|
|
13049
|
-
* `$process.list`, so it can only reach a runner this node spawned. Use
|
|
13050
|
-
* for deep per-addon memory attribution; copy the returned path off the
|
|
13051
|
-
* node to analyze.
|
|
13052
|
-
*/
|
|
13053
|
-
dumpHeapSnapshot: method(DumpHeapSnapshotInputSchema, DumpHeapSnapshotResultSchema, {
|
|
13054
|
-
kind: "mutation",
|
|
13055
|
-
auth: "admin"
|
|
13056
|
-
})
|
|
13033
|
+
getLoadSeries: method(GetLoadSeriesInputSchema, NodeLoadSeriesSchema)
|
|
13057
13034
|
}
|
|
13058
13035
|
};
|
|
13059
13036
|
var modelConvertCapability = {
|
|
@@ -17777,7 +17754,8 @@ var MediaFileKindEnum = z.enum([
|
|
|
17777
17754
|
"plateCrop",
|
|
17778
17755
|
"keyFrame",
|
|
17779
17756
|
"keyFrameSmall",
|
|
17780
|
-
"thumbnailSmall"
|
|
17757
|
+
"thumbnailSmall",
|
|
17758
|
+
"sceneFrame"
|
|
17781
17759
|
]);
|
|
17782
17760
|
/**
|
|
17783
17761
|
* One media row ON THE WIRE: what it is, how big it is, and WHERE ITS BYTES
|
|
@@ -18441,7 +18419,21 @@ var pipelineAnalyticsCapability = {
|
|
|
18441
18419
|
/** Include stationary-promoted rows (parked objects handed to the
|
|
18442
18420
|
* stationary registry). Default false: the timeline lists passages,
|
|
18443
18421
|
* not parking records (operator decision, 2026-08-15). */
|
|
18444
|
-
includeStationary: z.boolean().optional()
|
|
18422
|
+
includeStationary: z.boolean().optional(),
|
|
18423
|
+
/**
|
|
18424
|
+
* Restrict to these track classes. ABSENT or EMPTY means no filter.
|
|
18425
|
+
*
|
|
18426
|
+
* Added 2026-09-03: the timeline's class chips filtered in the CLIENT,
|
|
18427
|
+
* on a day of rows already downloaded. The zone filter had been moved
|
|
18428
|
+
* here for exactly that reason — and it is also what lets the rows come
|
|
18429
|
+
* back `slim` — but the class filter was left behind, so a narrow
|
|
18430
|
+
* selection was still a wide read followed by a wide discard.
|
|
18431
|
+
*
|
|
18432
|
+
* Empty is "show all", not "nothing matches": a chip row with nothing
|
|
18433
|
+
* selected is an operator who has not narrowed anything, and an empty
|
|
18434
|
+
* timeline would read as a camera that saw nothing.
|
|
18435
|
+
*/
|
|
18436
|
+
classes: z.array(z.string()).optional()
|
|
18445
18437
|
}), z.array(TrackSchema).readonly()),
|
|
18446
18438
|
/**
|
|
18447
18439
|
* Batched cluster-wide track listing — ONE call for the events page /
|
|
@@ -33741,6 +33733,82 @@ var RUNTIME_DEFAULTS = {
|
|
|
33741
33733
|
"auth.tokenExpiry": "30d"
|
|
33742
33734
|
};
|
|
33743
33735
|
/**
|
|
33736
|
+
* WHICH child a container stands for — one definition, for every consumer.
|
|
33737
|
+
*
|
|
33738
|
+
* A CONTAINER device has no controllable surface of its own: it groups entity
|
|
33739
|
+
* children (a Gree air-conditioner grouping a climate child plus light, x-fan
|
|
33740
|
+
* and health switches). Everything that has to show or act on a container has
|
|
33741
|
+
* to answer the same question — which child IS the container — and until now
|
|
33742
|
+
* three places answered it separately:
|
|
33743
|
+
*
|
|
33744
|
+
* - `ui-library/device-controls/primary-child.ts` (admin-ui rendering)
|
|
33745
|
+
* - `addon-provider-homeassistant` PARENT_TYPE_PRIORITY (adoption)
|
|
33746
|
+
* - the viewer's own `container-primary.ts` (linked-devices panel)
|
|
33747
|
+
*
|
|
33748
|
+
* Each carried the same list and a comment asking the others to stay in sync.
|
|
33749
|
+
* This is that list, in the one package all of them already depend on.
|
|
33750
|
+
*
|
|
33751
|
+
* The rule has two halves and the ORDER matters: an operator's explicit pick
|
|
33752
|
+
* wins outright, and only in its absence does type priority decide. The pick is
|
|
33753
|
+
* keyed on the child's re-sync-stable `entityId`, not its numeric id, so it
|
|
33754
|
+
* survives a re-sync that reallocates ids.
|
|
33755
|
+
*/
|
|
33756
|
+
/**
|
|
33757
|
+
* Type priority, most→least "primary". An actuator (climate / lock / cover / …)
|
|
33758
|
+
* outranks a bare `switch` so a container's defining child wins over its
|
|
33759
|
+
* auxiliary switches. Unknown or absent types sort after every entry.
|
|
33760
|
+
*
|
|
33761
|
+
* NB: `siren` deliberately sits BELOW `switch` — it is a switch-family
|
|
33762
|
+
* actuator, and a camera's siren must not out-rank the thing the container is.
|
|
33763
|
+
*
|
|
33764
|
+
* These strings are matched against a child's `DeviceType` VALUE, so they must
|
|
33765
|
+
* equal the enum's string values.
|
|
33766
|
+
*/
|
|
33767
|
+
var CONTAINER_CHILD_PRIORITY = [
|
|
33768
|
+
"media-player",
|
|
33769
|
+
"alarm-panel",
|
|
33770
|
+
"thermostat",
|
|
33771
|
+
"climate",
|
|
33772
|
+
"humidifier",
|
|
33773
|
+
"water-heater",
|
|
33774
|
+
"lock",
|
|
33775
|
+
"cover",
|
|
33776
|
+
"valve",
|
|
33777
|
+
"fan",
|
|
33778
|
+
"vacuum",
|
|
33779
|
+
"lawn-mower",
|
|
33780
|
+
"light",
|
|
33781
|
+
"switch",
|
|
33782
|
+
"siren",
|
|
33783
|
+
"button",
|
|
33784
|
+
"control",
|
|
33785
|
+
"notifier",
|
|
33786
|
+
"script",
|
|
33787
|
+
"automation",
|
|
33788
|
+
"update",
|
|
33789
|
+
"presence",
|
|
33790
|
+
"weather",
|
|
33791
|
+
"image",
|
|
33792
|
+
"sensor"
|
|
33793
|
+
];
|
|
33794
|
+
function rank(type) {
|
|
33795
|
+
const i = CONTAINER_CHILD_PRIORITY.indexOf(type);
|
|
33796
|
+
return i === -1 ? CONTAINER_CHILD_PRIORITY.length : i;
|
|
33797
|
+
}
|
|
33798
|
+
/**
|
|
33799
|
+
* The child a container stands for: the operator's pick when it still exists,
|
|
33800
|
+
* else the highest-priority type. `null` for a childless container — a caller
|
|
33801
|
+
* must decide what an empty container means for it, rather than being handed a
|
|
33802
|
+
* child that is not there.
|
|
33803
|
+
*/
|
|
33804
|
+
function resolveContainerPrimaryChild(children, overrideEntityId) {
|
|
33805
|
+
if (overrideEntityId !== void 0 && overrideEntityId !== null) {
|
|
33806
|
+
const picked = children.find((c) => c.entityId === overrideEntityId);
|
|
33807
|
+
if (picked !== void 0) return picked;
|
|
33808
|
+
}
|
|
33809
|
+
return [...children].toSorted((a, b) => rank(a.type) - rank(b.type))[0] ?? null;
|
|
33810
|
+
}
|
|
33811
|
+
/**
|
|
33744
33812
|
* Accessory device helpers — shared across drivers.
|
|
33745
33813
|
*
|
|
33746
33814
|
* Many vendor-specific drivers register accessory child devices on
|
|
@@ -36881,12 +36949,6 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
36881
36949
|
addonId: null,
|
|
36882
36950
|
access: "view"
|
|
36883
36951
|
},
|
|
36884
|
-
"metricsProvider.dumpHeapSnapshot": {
|
|
36885
|
-
capName: "metrics-provider",
|
|
36886
|
-
capScope: "system",
|
|
36887
|
-
addonId: null,
|
|
36888
|
-
access: "create"
|
|
36889
|
-
},
|
|
36890
36952
|
"metricsProvider.getAddonStats": {
|
|
36891
36953
|
capName: "metrics-provider",
|
|
36892
36954
|
capScope: "system",
|
|
@@ -43086,4 +43148,4 @@ function enumerateInferenceDevices(hw) {
|
|
|
43086
43148
|
return out;
|
|
43087
43149
|
}
|
|
43088
43150
|
//#endregion
|
|
43089
|
-
export { isArrayOutputSchema as $,
|
|
43151
|
+
export { isArrayOutputSchema as $, isDeviceConfigCap as $t, authProviderCapability as A, streamQualityLabel as At, decodeVectorBase64 as B, DeviceRole as Bt, StorageLocationTypeSchema as C, scopesAllowDeviceCap as Ct, addonSettingsCapability as D, storageCapability as Dt, addonPagesCapability as E, snapshotCapability as Et, collectSecretConfigKeys as F, BaseAddon as Ft, doorbellCapability as G, asJsonObject as Gt, deviceManagerCapability as H, ReadinessRegistry as Ht, coreBlockAddonId as I, DATAPLANE_SECRET_HEADER as It, enumerateSchemaFields as J, createEvent as Jt, enumerateInferenceDevices as K, asNumber as Kt, coreBlockIdFromAddonId as L, DEVICE_SETTINGS_CONTRIBUTION_METHODS as Lt, bareAddonId as M, vectorDimFromBase64 as Mt, batteryCapability as N, vectorStoreCapability as Nt, addonWidgetsCapability as O, storageMigrationCapability as Ot, buildStreamParamsConfigSchema as P, errMsg as Pt, foldSnapshotByFunction as Q, hydrateSchema as Qt, coreBlocksCapability as R, DEVICE_STATUS_METHOD as Rt, StorageCleanupJobSchema as S, scopesAllowAddon as St, UserRecordSchema as T, settingsStoreCapability as Tt, deviceStateCapability as U, ReadinessTimeoutError as Ut, deriveBatteryPresence as V, DeviceType as Vt, deviceStatusCapability as W, WELL_KNOWN_TAB_MAP as Wt, extractNestedAddonId as X, emitReadiness as Xt, evaluateSensorEdge as Y, emitDownForOwnedCaps as Yt, filesystemBrowseCapability as Z, expandCapMethods as Zt, SOURCE_CAPS as _, reducePoints as _t, CAMERA_SWITCH_ORDER as a, scopeKey as an, kebabToCamel as at, STREAM_PROFILE_META as b, resolveMethodAuth as bt, CORE_BLOCK_ADDON_PREFIX as c, logDestinationCapability as ct, DeclaredDevices as d, metricsProviderCapability as dt, nodePin as en, isCollectionArrayMethod as et, DeviceStatusSchema as f, normalizeUnit as ft, RUNTIME_DEFAULTS as g, procedureAuthKey as gt, REDACTED_SECRET as h, platformProbeCapability as ht, BatteryStatusSchema as i, resolveCapMount as in, isVoidInput as it, backupCapability as j, userManagementCapability as jt, alertsCapability as k, storageProviderCapability as kt, CoreBlockSchema as l, logLevelAtMost as lt, METHOD_ACCESS_MAP as m, parseStreamParamsFormPatch as mt, AlertSchema as n, parseJsonUnknown as nn, isSameAddonId as nt, CAP_NAMES_WITH_STATUS as o, sleep as on, lifecycleJobSchema as ot, LOG_LEVEL_RANK as p, objectInputDeclaresAddonId as pt, enumerateItemArrayFields as q, asString as qt, ApiKeyRecordSchema as r, readinessKey as rn, isSourceCap as rt, CORE_BLOCKS_ADDON_ID as s, EventCategory as sn, localNetworkCapability as st, ALL_CAPABILITY_DEFINITIONS as t, parseJsonObject as tn, isObjectInput as tt, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as u, looseSchema as ut, SOURCE_DEVICE_TYPES as v, resolveBucketMs as vt, StorageMigrationJobSchema as w, scoreRuntimes as wt, ScopedTokenSchema as x, runtimeStatePolicyFor as xt, STORAGE_ACCESS_FALLBACK as y, resolveContainerPrimaryChild as yt, dataStoreProviderCapability as z, DeviceFeature as zt };
|
package/dist/index.d.ts
CHANGED
|
@@ -51,7 +51,7 @@ export { createEventPlaneMeter, createEventPlaneReader, diffEventPlane, EVENT_PL
|
|
|
51
51
|
export type { SocketPeerDelta, SocketPeerSample, SocketPlaneBaseline, SocketPlaneCounters, SocketPlaneMeter, SocketPlaneReader, SocketPlaneRegistry, SocketPlaneRegistryChild, SocketPlaneSources, SocketPlaneWindow, } from './kernel/socket-plane-report.js';
|
|
52
52
|
export { createSocketPlaneMeter, createSocketPlaneReader, diffSocketPlane, EMPTY_SOCKET_PLANE_BASELINE, formatSocketPlane, SOCKET_PLANE_TOP_N, } from './kernel/socket-plane-report.js';
|
|
53
53
|
export type { HeapDiagnosticDeps, HeapDiagnosticRequest, HeapSpaceReader, HeapSpaceUsage, } from './kernel/heap-spaces.js';
|
|
54
|
-
export { DECISIVE_HEAP_SPACES, emitHeapDiagnosticReport, formatHeapSpaces, HEAP_SPACE_REPORT_MIN_MB,
|
|
54
|
+
export { DECISIVE_HEAP_SPACES, emitHeapDiagnosticReport, formatHeapSpaces, HEAP_SPACE_REPORT_MIN_MB, heapSpaceField, readHeapSpaces, selectReportedSpaces, } from './kernel/heap-spaces.js';
|
|
55
55
|
export type { DeferredHeapWatchSink, HeapReclaimer, HeapReclaimOptions, HeapSample, HeapWatchProbes, HeapWatchSink, LoopDelayMeter, LoopDelaySample, RssBreakdown, RssBudgetOptions, RssBudgetState, RssGrowthShape, RunnerHeapWatchOptions, } from './kernel/heap-watch.js';
|
|
56
56
|
export { buildHeapSample, createDeferredHeapWatchSink, createLoopDelayMeter, createV8Reclaimer, HEAP_RECLAIM_MIN_INTERVAL_MS, HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS, HEAP_RECLAIM_TRIGGER_MB, HEAP_WATCH_INTERVAL_MS, HEAP_WATCH_WARN_RATIO, HUB_MAIN_HEAP_WATCH_LABEL, HUB_MAIN_RSS_BUDGET_MB, HUB_RSS_BUDGET_ENV, hubMainRssBudget, describeRss, nextRssBudgetState, parseRssBudgetMb, reclaimIntervalMs, RSS_BUDGET_REANNOUNCE_MIN_MS, RSS_BUDGET_RELEASE_RATIO, RUNNER_HEAP_WATCH_INTERVAL_MS, RUNNER_RSS_BUDGET_ENV, shouldReclaim, startHeapWatch, startRunnerHeapWatch, strandedMb, ZERO_LOOP_DELAY, } from './kernel/heap-watch.js';
|
|
57
57
|
export type { AddonDataPlaneFacility, DataPlaneSink, } from './kernel/moleculer/addon-data-plane-facility.js';
|
package/dist/index.js
CHANGED
|
@@ -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-
|
|
3
|
+
const require_dist = require("./dist-C0IXtI_E.js");
|
|
4
4
|
const require_builtins_alerts_alerts_addon = require("./builtins/alerts/alerts.addon.js");
|
|
5
5
|
require("./builtins/alerts/index.js");
|
|
6
6
|
const require_formatter = require("./formatter-DqAKDlvN.js");
|
|
@@ -27,7 +27,7 @@ require("./builtins/system-config/index.js");
|
|
|
27
27
|
const require_builtins_winston_logging_index = require("./builtins/winston-logging/index.js");
|
|
28
28
|
const require_file_data_plane = require("./file-data-plane-DO8KbxCe.js");
|
|
29
29
|
const require_tls$1 = require("./tls-BxQlomxd.js");
|
|
30
|
-
const require_manifest_system_deps = require("./manifest-system-deps-
|
|
30
|
+
const require_manifest_system_deps = require("./manifest-system-deps-D6ncx0jA.js");
|
|
31
31
|
const require_resource_monitor = require("./resource-monitor-CdnzxBLP.js");
|
|
32
32
|
const require_custom_action_registry = require("./custom-action-registry-jY0NOZK8.js");
|
|
33
33
|
let zod = require("zod");
|
|
@@ -95354,7 +95354,6 @@ exports.QUARANTINE_DIRNAME = QUARANTINE_DIRNAME;
|
|
|
95354
95354
|
exports.RESTART_MARKER_FILE = RESTART_MARKER_FILE;
|
|
95355
95355
|
exports.RSS_BUDGET_REANNOUNCE_MIN_MS = require_manifest_system_deps.RSS_BUDGET_REANNOUNCE_MIN_MS;
|
|
95356
95356
|
exports.RSS_BUDGET_RELEASE_RATIO = require_manifest_system_deps.RSS_BUDGET_RELEASE_RATIO;
|
|
95357
|
-
exports.RUNNER_HEAP_SNAPSHOT_ENV = require_manifest_system_deps.RUNNER_HEAP_SNAPSHOT_ENV;
|
|
95358
95357
|
exports.RUNNER_HEAP_WATCH_INTERVAL_MS = require_manifest_system_deps.RUNNER_HEAP_WATCH_INTERVAL_MS;
|
|
95359
95358
|
exports.RUNNER_RSS_BUDGET_ENV = require_manifest_system_deps.RUNNER_RSS_BUDGET_ENV;
|
|
95360
95359
|
exports.RUNTIME_DEFAULTS = require_dist.RUNTIME_DEFAULTS;
|
|
@@ -95545,7 +95544,6 @@ exports.getSinglePidStats = require_resource_monitor.getSinglePidStats;
|
|
|
95545
95544
|
exports.getWorkerDeviceRegistry = require_manifest_system_deps.getWorkerDeviceRegistry;
|
|
95546
95545
|
exports.hasDotNode = hasDotNode;
|
|
95547
95546
|
exports.hashClusterSecret = hashClusterSecret;
|
|
95548
|
-
exports.heapSnapshotAuthorised = require_manifest_system_deps.heapSnapshotAuthorised;
|
|
95549
95547
|
exports.heapSpaceField = require_manifest_system_deps.heapSpaceField;
|
|
95550
95548
|
exports.hubMainRssBudget = require_manifest_system_deps.hubMainRssBudget;
|
|
95551
95549
|
exports.installManifestNativeDeps = require_manifest_system_deps.installManifestNativeDeps;
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as __toCommonJS, i as __require, n as __esmMin, o as __toESM$1, r as __exportAll, t as __commonJSMin$1 } from "./chunk-CNf5ZN-e.mjs";
|
|
2
|
-
import { $ as isArrayOutputSchema,
|
|
2
|
+
import { $ as isArrayOutputSchema, Ct as scopesAllowDeviceCap, D as addonSettingsCapability, Gt as asJsonObject$1, Ht as ReadinessRegistry, It as DATAPLANE_SECRET_HEADER$1, Jt as createEvent, Kt as asNumber, Lt as DEVICE_SETTINGS_CONTRIBUTION_METHODS, Pt as errMsg$1, Rt as DEVICE_STATUS_METHOD, St as scopesAllowAddon, Ut as ReadinessTimeoutError, X as extractNestedAddonId, Yt as emitDownForOwnedCaps, Zt as expandCapMethods, an as scopeKey, at as kebabToCamel, bt as resolveMethodAuth, et as isCollectionArrayMethod, g as RUNTIME_DEFAULTS, gt as procedureAuthKey, in as resolveCapMount, it as isVoidInput, lt as logLevelAtMost, m as METHOD_ACCESS_MAP, nn as parseJsonUnknown, ot as lifecycleJobSchema, p as LOG_LEVEL_RANK, pt as objectInputDeclaresAddonId, qt as asString$1, rn as readinessKey, sn as EventCategory$1, t as ALL_CAPABILITY_DEFINITIONS, tn as parseJsonObject, tt as isObjectInput, ut as looseSchema } from "./dist-DMJ-DM7n.mjs";
|
|
3
3
|
import { AlertCenterAddon } from "./builtins/alerts/alerts.addon.mjs";
|
|
4
4
|
import "./builtins/alerts/index.mjs";
|
|
5
5
|
import { t as formatLogLine } from "./formatter-B7qW8bPJ.mjs";
|
|
@@ -26,7 +26,7 @@ import "./builtins/system-config/index.mjs";
|
|
|
26
26
|
import { WinstonDestination, WinstonLoggingAddon } from "./builtins/winston-logging/index.mjs";
|
|
27
27
|
import { a as parseTokenizedUrl, c as collectModelFiles, d as downloadModel, f as ensureModel, h as isModelDownloaded, i as parseRangeHeader, l as deleteModelFromDisk, m as getModelFilePath, n as contentTypeFor, o as resolveFilePath, p as fetchJson, r as createAuthenticatedFileServer, s as ModelDownloadService, t as createFileDataPlaneHandler, u as downloadFile } from "./file-data-plane-BhKdxJgf.mjs";
|
|
28
28
|
import { C as registerLanHttpHandler, S as readLanHttpState, _ as DEFAULT_LAN_HTTP_PORT, a as writeTlsMode, b as bindPendingLanHttp, c as loadTlsCert, d as collectCertIdentity, f as CA_VALIDITY_DAYS, g as evaluateExistingCert, h as SERVER_AUTH_OID, i as writeExtraSans, l as reissueTlsLeaf, m as MAX_LEAF_VALIDITY_DAYS, n as readTlsAccessStatus, o as validateUploadedTls, p as LEAF_RENEWAL_WINDOW_DAYS, r as readTlsMode, s as ensureTlsCert, t as readExtraSans, u as CA_COMMON_NAME, v as allFamiliesListenHost, x as closeLanHttp, y as applyLanHttp } from "./tls-DOTmtLCW.mjs";
|
|
29
|
-
import { $ as buildUdsNativeCapProxy, $t as
|
|
29
|
+
import { $ as buildUdsNativeCapProxy, $t as formatHeapSpaces, A as createUdsLoggerWithControl, At as HUB_MAIN_RSS_BUDGET_MB, B as readMoleculerFanoutMode, Bt as createV8Reclaimer, C as ipcParentLink, Ct as createAddonDataPlaneFacility, D as createUdsEventBus, Dt as HEAP_WATCH_INTERVAL_MS, E as createUdsEventBridge, Et as HEAP_RECLAIM_TRIGGER_MB, F as AGENT_CAP_FWD_SERVICE, Ft as RUNNER_RSS_BUDGET_ENV, G as createLocalTransport, Gt as reclaimIntervalMs, H as PARENT_ROUTED_PROVIDER_ADDON_ID, Ht as hubMainRssBudget, I as CapRouteResolver, It as ZERO_LOOP_DELAY, J as SocketChannel, Jt as startRunnerHeapWatch, K as UdsLocalTransportClient, Kt as shouldReclaim, L as CapRouteError, Lt as buildHeapSample, M as LocalChildRegistry, Mt as RSS_BUDGET_REANNOUNCE_MIN_MS, N as UDS_NO_ROUTE_PREFIX, Nt as RSS_BUDGET_RELEASE_RATIO, O as udsChildLogToWorkerEntry, Ot as HEAP_WATCH_WARN_RATIO, P as AGENT_CAP_FWD_ACTION, Pt as RUNNER_HEAP_WATCH_INTERVAL_MS, Q as buildNativeCapProxy, Qt as emitHeapDiagnosticReport, R as classifyCapRoute, Rt as createDeferredHeapWatchSink, S as buildLinkChain, St as runNpm, T as createParentUnownedCallHandler, Tt as HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS, U as __resetCapUsageRegistryForTests, Ut as nextRssBudgetState, V as CapUsageRegistry, Vt as describeRss, W as getCapUsageRegistry, Wt as parseRssBudgetMb, X as FrameDecoder, Xt as DECISIVE_HEAP_SPACES, Y as localEndpointPath, Yt as strandedMb, Z as encodeFrame, Zt as HEAP_SPACE_REPORT_MIN_MB, _ as AddonDepsManager, _n as createEventPlaneReader, _t as CapabilityUnavailableError, a as createUdsAddonContext, an as createSocketPlaneMeter, at as createAddonService, b as brokerCallForCap, bt as resolveAddonClass, c as getOrInitReadinessRegistryForClient, cn as formatSocketPlane, ct as capActionName, d as clusterEventTopic, dn as recordSocketFrame, dt as capServiceName, en as heapSpaceField, et as createBrokerDeviceManagerApi, f as getBrokerEventBus, fn as sampleSocketDirection, ft as parseCapAction, g as subscribePassthrough, gn as createEventPlaneMeter, gt as CapabilityHandle, h as setNodeEventInterest, hn as EVENT_PLANE_TOP_N, ht as DeviceRegistry, i as createAddonContext, in as SOCKET_PLANE_TOP_N, j as LocalChildClient, jt as HUB_RSS_BUDGET_ENV, k as createUdsLogger, kt as HUB_MAIN_HEAP_WATCH_LABEL, l as setHubConnected, ln as EMPTY_SOCKET_DIRECTION, lt as capActionSuffix, m as registerEventBusService, mn as socketDirectionMessages, mt as serializeTypedArrays, n as installManifestPythonDeps, nn as selectReportedSpaces, o as getWorkerDeviceRegistry, on as createSocketPlaneReader, ot as validateProviderRegistrations, p as getMoleculerEventStats, pn as socketDirectionBytes, pt as deserializeTypedArrays, q as UdsLocalTransportServer, qt as startHeapWatch, r as adaptBrokerToCluster, rn as EMPTY_SOCKET_PLANE_BASELINE, rt as mountNativeCapService, s as getOrInitReadinessRegistry, sn as diffSocketPlane, st as NATIVE_PROVIDER_SERVICE_INFIX, t as installManifestSystemDeps, tn as readHeapSpaces, u as EVENT_TOPIC_PREFIX, un as createSocketDirectionCounters, ut as capBareAction, v as createKernelHwAccel, vn as diffEventPlane, vt as copyBundledNativeModules, w as localProviderLink, wt as HEAP_RECLAIM_MIN_INTERVAL_MS, x as brokerTransportLink, xt as resolveNpmInvocation, y as resolveHwAccel, yn as formatEventPlane, yt as installManifestNativeDeps, z as callWithServiceDiscovery, zt as createLoopDelayMeter } from "./manifest-system-deps-BMD6YE4f.mjs";
|
|
30
30
|
import { n as getSinglePidStats, t as getPidStats } from "./resource-monitor-BWmQ5i-o.mjs";
|
|
31
31
|
import { t as CustomActionRegistry } from "./custom-action-registry-F__gp_VX.mjs";
|
|
32
32
|
import { z } from "zod";
|
|
@@ -95238,4 +95238,4 @@ var LifecycleJobEngine = class {
|
|
|
95238
95238
|
}
|
|
95239
95239
|
};
|
|
95240
95240
|
//#endregion
|
|
95241
|
-
export { AGENT_CAP_FWD_ACTION, AGENT_CAP_FWD_SERVICE, AGENT_READINESS_SERVICE_NAME, ALL_CAPABILITY_DEFINITIONS, AddonApiFactory, AddonDepsManager, AddonEngineManager, AddonHealthMonitor, AddonInstaller, AddonLoader, AddonManifest, AddonRouteRegistry, AlertCenterAddon, ApiKeyManager, AuthManager, CA_COMMON_NAME, CA_VALIDITY_DAYS, CLUSTER_SECRET_MISMATCH_TYPE, CLUSTER_SECRET_REJECTED_EXIT_CODE, CORE_CAP_SERVICE_NAME, CapRouteError, CapRouteResolver, CapUsageRegistry, CapabilityHandle, CapabilityRegistry, CapabilityUnavailableError, ConfigManager, ConfigStore, ConsoleDestination, ConsoleLoggingAddon, CoreBlocksAddon, CustomActionRegistry, DECISIVE_HEAP_SPACES, DEFAULT_DATA_PATH, DEFAULT_LAN_HTTP_PORT, DEFAULT_LOG_LEVEL, DEVICE_SETTINGS_CONTRIBUTION_METHODS, DEVICE_STATUS_METHOD, DataPlaneRegistry, DeviceManagerAddon, DeviceRegistry, DeviceStore, EMPTY_SOCKET_DIRECTION, EMPTY_SOCKET_PLANE_BASELINE, EVENT_PLANE_TOP_N, EVENT_TOPIC_PREFIX, EngineManagerResolver, EventBus, FeatureManager, FilesystemStorageAddon, FilesystemStorageProvider, FrameDecoder, FsStorageBackend, HEALTH_MONITOR_GRACE_PERIOD_MS, HEALTH_MONITOR_RETRY_INTERVALS_MS, HEALTH_MONITOR_TICK_MS, HEAP_RECLAIM_MIN_INTERVAL_MS, HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS, HEAP_RECLAIM_TRIGGER_MB, HEAP_SPACE_REPORT_MIN_MB, HEAP_WATCH_INTERVAL_MS, HEAP_WATCH_WARN_RATIO, HUB_CAP_FWD_ACTION, HUB_CAP_FWD_SERVICE, HUB_MAIN_HEAP_WATCH_LABEL, HUB_MAIN_RSS_BUDGET_MB, HUB_RSS_BUDGET_ENV, HubForwarderAddon, HubForwarderDestination, HubLogForwarder, HubNodeRegistry, INFRA_CAPABILITIES, IntegrationRegistry, JobJournal, LEAF_RENEWAL_WINDOW_DAYS, LifecycleJobEngine, LifecycleStateMachine, LivenessMonitorAddon, LocalAuthAddon, LocalChildClient, LocalChildRegistry, LogManager, LogRingBuffer, LoggingGate, LokiDestination, LokiLoggingAddon, MAX_LEAF_VALIDITY_DAYS, METHOD_ACCESS_MAP, ModelDownloadService, NATIVE_PROVIDER_SERVICE_INFIX, NATIVE_SCAN_DEPTH, NativeMetricsAddon, NativeMetricsProvider, NetworkQualityTracker, NotificationService, PARENT_ROUTED_PROVIDER_ADDON_ID, PYTHON_VERSION, PipelineRunner, PipelineValidator, PythonEnvManager, QUARANTINE_DIRNAME, RESTART_MARKER_FILE, RSS_BUDGET_REANNOUNCE_MIN_MS, RSS_BUDGET_RELEASE_RATIO,
|
|
95241
|
+
export { AGENT_CAP_FWD_ACTION, AGENT_CAP_FWD_SERVICE, AGENT_READINESS_SERVICE_NAME, ALL_CAPABILITY_DEFINITIONS, AddonApiFactory, AddonDepsManager, AddonEngineManager, AddonHealthMonitor, AddonInstaller, AddonLoader, AddonManifest, AddonRouteRegistry, AlertCenterAddon, ApiKeyManager, AuthManager, CA_COMMON_NAME, CA_VALIDITY_DAYS, CLUSTER_SECRET_MISMATCH_TYPE, CLUSTER_SECRET_REJECTED_EXIT_CODE, CORE_CAP_SERVICE_NAME, CapRouteError, CapRouteResolver, CapUsageRegistry, CapabilityHandle, CapabilityRegistry, CapabilityUnavailableError, ConfigManager, ConfigStore, ConsoleDestination, ConsoleLoggingAddon, CoreBlocksAddon, CustomActionRegistry, DECISIVE_HEAP_SPACES, DEFAULT_DATA_PATH, DEFAULT_LAN_HTTP_PORT, DEFAULT_LOG_LEVEL, DEVICE_SETTINGS_CONTRIBUTION_METHODS, DEVICE_STATUS_METHOD, DataPlaneRegistry, DeviceManagerAddon, DeviceRegistry, DeviceStore, EMPTY_SOCKET_DIRECTION, EMPTY_SOCKET_PLANE_BASELINE, EVENT_PLANE_TOP_N, EVENT_TOPIC_PREFIX, EngineManagerResolver, EventBus, FeatureManager, FilesystemStorageAddon, FilesystemStorageProvider, FrameDecoder, FsStorageBackend, HEALTH_MONITOR_GRACE_PERIOD_MS, HEALTH_MONITOR_RETRY_INTERVALS_MS, HEALTH_MONITOR_TICK_MS, HEAP_RECLAIM_MIN_INTERVAL_MS, HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS, HEAP_RECLAIM_TRIGGER_MB, HEAP_SPACE_REPORT_MIN_MB, HEAP_WATCH_INTERVAL_MS, HEAP_WATCH_WARN_RATIO, HUB_CAP_FWD_ACTION, HUB_CAP_FWD_SERVICE, HUB_MAIN_HEAP_WATCH_LABEL, HUB_MAIN_RSS_BUDGET_MB, HUB_RSS_BUDGET_ENV, HubForwarderAddon, HubForwarderDestination, HubLogForwarder, HubNodeRegistry, INFRA_CAPABILITIES, IntegrationRegistry, JobJournal, LEAF_RENEWAL_WINDOW_DAYS, LifecycleJobEngine, LifecycleStateMachine, LivenessMonitorAddon, LocalAuthAddon, LocalChildClient, LocalChildRegistry, LogManager, LogRingBuffer, LoggingGate, LokiDestination, LokiLoggingAddon, MAX_LEAF_VALIDITY_DAYS, METHOD_ACCESS_MAP, ModelDownloadService, NATIVE_PROVIDER_SERVICE_INFIX, NATIVE_SCAN_DEPTH, NativeMetricsAddon, NativeMetricsProvider, NetworkQualityTracker, NotificationService, PARENT_ROUTED_PROVIDER_ADDON_ID, PYTHON_VERSION, PipelineRunner, PipelineValidator, PythonEnvManager, QUARANTINE_DIRNAME, RESTART_MARKER_FILE, RSS_BUDGET_REANNOUNCE_MIN_MS, RSS_BUDGET_RELEASE_RATIO, RUNNER_HEAP_WATCH_INTERVAL_MS, RUNNER_RSS_BUDGET_ENV, RUNTIME_DEFAULTS, ReadinessRegistry, ReadinessTimeoutError, ReplEngine, RingBuffer, SERVER_AUTH_OID, SOCKET_PLANE_TOP_N, ScopedLogger, ScopedTokenManager, SocketChannel, SqliteSettingsAddon, SqliteSettingsBackend, StagingArea, StorageLocationManager, StorageManager, StorageOrchestratorAddon, StorageOrchestratorService, SystemConfigAddon, SystemEventBus, TRADITIONAL_NATIVE_PACKAGES, ToastService, UDS_NO_ROUTE_PREFIX, UdsLocalTransportClient, UdsLocalTransportServer, UserManager, WinstonDestination, WinstonLoggingAddon, ZERO_LOOP_DELAY, __resetCapUsageRegistryForTests, __resetLoggingGateForTests, adaptBrokerToCluster, addonSettingsCapability, allFamiliesListenHost, applyLanHttp, bindPendingLanHttp, bootstrapSchema, brokerCallForCap, brokerTransportLink, buildBinaryPath, buildCapRouters, buildHeapSample, buildLinkChain, buildNativeCapProxy, buildNodeManifest, buildStorageLocationRegistry, buildUdsNativeCapProxy, builderMountedCapNames, callRegisterNodeWithRetry, callWithServiceDiscovery, canServeDataPlane, capActionName, capActionSuffix, capBareAction, capServiceName, classifyAddonDir, classifyCapRoute, clearPendingRestart, closeLanHttp, clusterEventTopic, clusterSecretMatches, collectCertIdentity, collectModelFiles, contentTypeFor, copyDirRecursive, copyExtraFileDirs, createAddonContext, createAddonDataPlaneFacility, createAddonService, createAuthenticatedFileServer, createBroker, createBrokerDeviceManagerApi, createCoreCapService, createDeferredHeapWatchSink, createDoorSettingsView, createEventPlaneMeter, createEventPlaneReader, createFileDataPlaneHandler, createHubCapForwardService, createHubService, createKernelHwAccel, createLocalTransport, createLoopDelayMeter, createParentUnownedCallHandler, createProcessService, createReadinessService, createReadinessServiceForRegistry, createScopedProcessManager, createSocketDirectionCounters, createSocketPlaneMeter, createSocketPlaneReader, createStreamProbeBrokerService, createUdsAddonContext, createUdsEventBridge, createUdsEventBus, createUdsLogger, createUdsLoggerWithControl, createV8Reclaimer, deleteModelFromDisk, deriveAgentListenPort, describeProviderKindDrift, describeRss, detectWorkspacePackagesDir, diffEventPlane, diffSocketPlane, downloadBinary, downloadFile, downloadModel, emitDownForOwnedCaps, emitHeapDiagnosticReport, encodeFrame, ensureAddonNativePrebuilds, ensureBinary, ensureDir, ensureFfmpeg, ensureLibraryBuilt, ensureModel, ensureNativePrebuilds, ensurePython, ensureTlsCert, evaluateExistingCert, expandCapMethods, fetchJson, findInPath, formatEventPlane, formatHeapSpaces, formatLogLine, formatSocketPlane, getBrokerEventBus, getCapUsageRegistry, getFfmpegDownloadUrl, getLoggingGate, getModelFilePath, getMoleculerEventStats, getOrInitReadinessRegistry, getOrInitReadinessRegistryForClient, getPidStats, getPlatformInfo, getPythonDownloadUrl, getRestartMarkerPath, getSinglePidStats, getWorkerDeviceRegistry, hasDotNode, hashClusterSecret, heapSpaceField, hubMainRssBudget, installManifestNativeDeps, installManifestPythonDeps, installManifestSystemDeps, installPackageFromNpm, installPythonPackages, installPythonRequirements, ipcParentLink, isAddonDeploySource, isArrayOutputSchema, isClusterSecretMismatchError, isCollectionArrayMethod, isInfraCapability, isModelDownloaded, isSourceNewer, isolatedBuiltinPhase, loadTlsCert, localEndpointPath, localProviderLink, mountNativeCapService, nextRssBudgetState, parseCapAction, parseRangeHeader, parseRssBudgetMb, parseTokenizedUrl, partitionIsolatedBuiltinIds, proxyToUpstream, quarantineAddonResidue, readExtraSans, readHeapSpaces, readLanHttpState, readMoleculerFanoutMode, readPendingRestart, readTlsAccessStatus, readTlsMode, readinessKey, reclaimIntervalMs, recordSocketFrame, registerEventBusService, registerLanHttpHandler, reissueTlsLeaf, resolveFilePath, resolveHwAccel, resolveNpmInvocation, runHubAddonBoot, runNpm, sampleSocketDirection, scheduleSelfRestart, scopeKey, scopesAllowAddon, scopesAllowDeviceCap, selectAddonResidue, selectReportedSpaces, serializeTypedArrays, setHubConnected, setNodeEventInterest, shouldReclaim, socketDirectionBytes, socketDirectionMessages, startHeapWatch, startRunnerHeapWatch, strandedMb, stripCamstackDeps, subscribePassthrough, udsChildLogToWorkerEntry, validateProviderRegistrations, validateUploadedTls, waitUntilReady, writeExtraSans, writePendingRestart, writeTlsMode };
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WHERE the bytes come from, without stopping the process.
|
|
3
|
+
*
|
|
4
|
+
* A heap SNAPSHOT answers "what is retained" and costs a stop-the-world walk
|
|
5
|
+
* plus a multi-gigabyte write. On this hub that took the machine down twice;
|
|
6
|
+
* the second attempt did not even finish — it left a 0-byte file and an
|
|
7
|
+
* unresponsive host that had to be rebooted. The remotely-triggerable command
|
|
8
|
+
* is gone (`scripts/check-no-heap-dump-command.ts`).
|
|
9
|
+
*
|
|
10
|
+
* V8's SAMPLING heap profiler answers a cheaper, different question: which
|
|
11
|
+
* allocation SITES the bytes came from, statistically, with no pause and
|
|
12
|
+
* nothing written. Measured locally: 51 ms for a window that allocated 200 000
|
|
13
|
+
* objects.
|
|
14
|
+
*
|
|
15
|
+
* ## What this is NOT
|
|
16
|
+
*
|
|
17
|
+
* It is not retention analysis. It says where bytes were BORN, not what is
|
|
18
|
+
* holding them alive, and a leak is about the second. It is still the right
|
|
19
|
+
* first instrument for the recorder's ~900 MB of large objects that "no
|
|
20
|
+
* allocation site in its tree can produce" — because naming the sites is
|
|
21
|
+
* exactly the claim under test, and if the sites turn out to be ordinary, the
|
|
22
|
+
* retention question is the one that survives.
|
|
23
|
+
*
|
|
24
|
+
* This module is the PURE half: it folds the profile V8 hands back. The
|
|
25
|
+
* sampling belongs to the caller, so the fold is testable without a profiler.
|
|
26
|
+
*/
|
|
27
|
+
/** One frame as the inspector protocol reports it. */
|
|
28
|
+
export interface AllocationCallFrame {
|
|
29
|
+
readonly functionName: string;
|
|
30
|
+
readonly url: string;
|
|
31
|
+
readonly lineNumber: number;
|
|
32
|
+
}
|
|
33
|
+
/** One node of `HeapProfiler.stopSampling`'s profile tree. */
|
|
34
|
+
export interface AllocationProfileNode {
|
|
35
|
+
readonly selfSize: number;
|
|
36
|
+
readonly callFrame: AllocationCallFrame;
|
|
37
|
+
readonly children?: readonly AllocationProfileNode[];
|
|
38
|
+
}
|
|
39
|
+
export interface AllocationSite {
|
|
40
|
+
readonly functionName: string;
|
|
41
|
+
/** `file.js:line` — what a human reads in a log line. */
|
|
42
|
+
readonly site: string;
|
|
43
|
+
readonly bytes: number;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Fold the tree into the biggest allocation sites.
|
|
47
|
+
*
|
|
48
|
+
* Sites are SUMMED across call paths: one site reached from two callers is one
|
|
49
|
+
* site, and reporting it twice at half the size is how a dominant allocator
|
|
50
|
+
* hides in a long tail. Identity is (function, url, line) — the same line of
|
|
51
|
+
* two files is two sites.
|
|
52
|
+
*/
|
|
53
|
+
export declare function summariseAllocationProfile(head: AllocationProfileNode, limit: number): readonly AllocationSite[];
|
|
54
|
+
/**
|
|
55
|
+
* The inspector session slice this needs. Injected so the sampler is testable
|
|
56
|
+
* without an inspector, and so nothing here reaches for a global.
|
|
57
|
+
*/
|
|
58
|
+
export interface HeapProfilerSession {
|
|
59
|
+
connect: () => void;
|
|
60
|
+
disconnect: () => void;
|
|
61
|
+
post: (method: string, paramsOrCb: unknown, maybeCb?: unknown) => void;
|
|
62
|
+
}
|
|
63
|
+
export interface SampleHeapAllocationsInput {
|
|
64
|
+
readonly session: HeapProfilerSession;
|
|
65
|
+
/** How long to sample. Bounded by the caller; this module never loops. */
|
|
66
|
+
readonly durationMs: number;
|
|
67
|
+
readonly limit: number;
|
|
68
|
+
readonly wait: (ms: number) => Promise<void>;
|
|
69
|
+
/** Bytes between samples. Larger = cheaper and coarser. */
|
|
70
|
+
readonly samplingInterval?: number;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Sample allocations for a bounded window and answer with the top sites.
|
|
74
|
+
*
|
|
75
|
+
* Writes NOTHING and pauses nothing. The profiler is stopped and the session
|
|
76
|
+
* disconnected in a `finally`, because a sampler left running is a tax on the
|
|
77
|
+
* process that outlives whoever enabled it — and the failure that made this
|
|
78
|
+
* module necessary was a diagnostic nobody could turn off from outside.
|
|
79
|
+
*/
|
|
80
|
+
export declare function sampleHeapAllocations(input: SampleHeapAllocationsInput): Promise<readonly AllocationSite[]>;
|
|
81
|
+
/**
|
|
82
|
+
* Per-runner opt-in for allocation sampling.
|
|
83
|
+
*
|
|
84
|
+
* Explicit `'on'` only — the same discipline the snapshot flag had. The
|
|
85
|
+
* DIFFERENCE is what it authorises: that flag allowed a stop-the-world walk and
|
|
86
|
+
* a multi-gigabyte write, so leaving it on in production (which is exactly what
|
|
87
|
+
* happened) was an outage waiting for a signal. This one allows ~50 ms of
|
|
88
|
+
* statistical sampling and one log line, so a runner left with it on is simply
|
|
89
|
+
* a runner that reports where its bytes come from.
|
|
90
|
+
*/
|
|
91
|
+
export declare const RUNNER_ALLOC_SAMPLE_ENV = "CAMSTACK_RUNNER_ALLOC_SAMPLE";
|
|
92
|
+
export declare function allocationSamplingEnabled(env?: NodeJS.ProcessEnv): boolean;
|
|
93
|
+
/** Sample on every Nth heartbeat — one sample per ~10 minutes at a 60 s beat. */
|
|
94
|
+
export declare const ALLOCATION_SAMPLE_EVERY_N_BEATS = 10;
|
|
95
|
+
/** How long one sample runs. Short enough that two can never overlap. */
|
|
96
|
+
export declare const ALLOCATION_SAMPLE_WINDOW_MS = 5000;
|
|
97
|
+
/** How many sites one log line carries. */
|
|
98
|
+
export declare const ALLOCATION_SAMPLE_TOP_N = 8;
|
|
99
|
+
/**
|
|
100
|
+
* Is this the beat that samples?
|
|
101
|
+
*
|
|
102
|
+
* Beat 0 never samples: a runner that has just booted has allocated nothing
|
|
103
|
+
* worth ranking. A non-positive cadence samples NEVER rather than always — a
|
|
104
|
+
* misconfigured `0` must not turn a diagnostic into a permanent load, which is
|
|
105
|
+
* the failure mode this whole module exists because of.
|
|
106
|
+
*/
|
|
107
|
+
export declare function shouldSampleAllocations(beat: number, everyN: number): boolean;
|
|
@@ -97,7 +97,6 @@ export declare function formatHeapSpaces(spaces: readonly HeapSpaceUsage[], minM
|
|
|
97
97
|
* seconds. The per-space breakdown is ~1.2 µs and changes nothing. Welding them
|
|
98
98
|
* to one signal priced the free answer at the cost of the expensive one.
|
|
99
99
|
*/
|
|
100
|
-
export declare const RUNNER_HEAP_SNAPSHOT_ENV = "CAMSTACK_RUNNER_HEAP_SNAPSHOT";
|
|
101
100
|
/**
|
|
102
101
|
* Whether the operator has authorised the snapshot half of SIGUSR2.
|
|
103
102
|
*
|
|
@@ -105,26 +104,22 @@ export declare const RUNNER_HEAP_SNAPSHOT_ENV = "CAMSTACK_RUNNER_HEAP_SNAPSHOT";
|
|
|
105
104
|
* authorisation: a multi-GB stop-the-world write must never be reachable by a
|
|
106
105
|
* value someone set for a different purpose.
|
|
107
106
|
*/
|
|
108
|
-
export declare function heapSnapshotAuthorised(env?: NodeJS.ProcessEnv): boolean;
|
|
109
107
|
/** What a diagnostic report is ABOUT. */
|
|
110
108
|
export interface HeapDiagnosticRequest {
|
|
111
109
|
/** The runner's nodeId, so the line groups with its `[mem]` heartbeat. */
|
|
112
110
|
readonly label: string;
|
|
113
111
|
readonly addons: readonly string[];
|
|
114
112
|
readonly sink: HeapWatchSink;
|
|
115
|
-
/** Where a snapshot would be written, if one is authorised. */
|
|
116
|
-
readonly snapshotPath: string;
|
|
117
113
|
}
|
|
118
114
|
/** Everything the report READS. Injected so the split itself is testable. */
|
|
119
115
|
export interface HeapDiagnosticDeps {
|
|
120
116
|
readonly readMemory: () => NodeJS.MemoryUsage;
|
|
121
117
|
readonly readSpaces: HeapSpaceReader;
|
|
122
|
-
readonly writeSnapshot: (path: string) => void;
|
|
123
118
|
readonly env: NodeJS.ProcessEnv;
|
|
124
119
|
}
|
|
125
120
|
/**
|
|
126
121
|
* The SIGUSR2 report — memory + the FULL per-space breakdown, always; the
|
|
127
|
-
* snapshot
|
|
122
|
+
* snapshot NEVER — see the note in the body.
|
|
128
123
|
*
|
|
129
124
|
* The breakdown here keeps every non-empty space at 0.1 MB, unlike the
|
|
130
125
|
* heartbeat's filtered whole-MB pair: this is a hand-fired diagnostic read once
|