@camstack/system 1.2.332 → 1.2.334
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 +1 -1
- package/dist/addon-runner.mjs +1 -1
- package/dist/addon-utils.js +1 -1
- package/dist/addon-utils.mjs +1 -1
- 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/autotrack/autotrack-cameras.d.ts +1 -1
- package/dist/builtins/autotrack/index.js +1 -1
- package/dist/builtins/autotrack/index.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/camera-grid/grid-sentry-sources.d.ts +1 -1
- package/dist/builtins/camera-grid/index.js +2 -2
- package/dist/builtins/camera-grid/index.mjs +2 -2
- package/dist/builtins/composer/composer.addon.js +2 -2
- package/dist/builtins/composer/composer.addon.mjs +2 -2
- 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 +2 -2
- package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
- package/dist/builtins/device-manager/device-manager.addon.js +17 -2
- package/dist/builtins/device-manager/device-manager.addon.mjs +17 -2
- package/dist/builtins/device-manager/device-meta-types.d.ts +1 -1
- package/dist/builtins/device-manager/stale-wrapper-activations.d.ts +6 -0
- 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.js +1 -1
- package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
- 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 +3 -3
- package/dist/builtins/snapshot/index.mjs +3 -3
- package/dist/builtins/snapshot/snapshot-courtesy.d.ts +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/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/{child-cap-dispatch-93MfsaZL.js → child-cap-dispatch-Cy56Y66E.js} +39 -0
- package/dist/{child-cap-dispatch-kLIiU1CG.mjs → child-cap-dispatch-Dmo2YJFe.mjs} +39 -0
- package/dist/{composition-sources-BpyaHvoR.mjs → composition-sources-BWautla8.mjs} +1 -1
- package/dist/{composition-sources-DK--XR5V.js → composition-sources-BuIRUkTE.js} +1 -1
- package/dist/{dist-BEPK2RUO.mjs → dist-COj36Fwm.mjs} +77 -67
- package/dist/{dist-CH3jfPMi.js → dist-Ex-rbzic.js} +77 -67
- package/dist/index.js +4 -4
- package/dist/index.mjs +4 -4
- package/dist/kernel/capability-registry.d.ts +1 -1
- package/dist/kernel/transport/local-child-registry.d.ts +30 -0
- package/dist/{retired-settings-keys-C5mSevGV.js → retired-settings-keys-Bmyl7KuD.js} +1 -1
- package/dist/{retired-settings-keys-tDI1g7ab.mjs → retired-settings-keys-DzbmRUhF.mjs} +1 -1
- package/dist/{snapshot-courtesy-CZPvteq2.mjs → snapshot-courtesy-CyFs1M3I.mjs} +1 -1
- package/dist/{snapshot-courtesy-Cqs7GkOV.js → snapshot-courtesy-D_C5-nC0.js} +1 -1
- package/package.json +1 -1
|
@@ -3521,7 +3521,7 @@ function errMsg(err) {
|
|
|
3521
3521
|
return String(err);
|
|
3522
3522
|
}
|
|
3523
3523
|
//#endregion
|
|
3524
|
-
//#region ../types/dist/composition-
|
|
3524
|
+
//#region ../types/dist/composition-D7ULvLdD.mjs
|
|
3525
3525
|
var AUDIO_ENCODER_BY_CODEC = {
|
|
3526
3526
|
opus: "libopus",
|
|
3527
3527
|
aac: "aac",
|
|
@@ -3967,20 +3967,20 @@ function portable(target) {
|
|
|
3967
3967
|
}
|
|
3968
3968
|
portable("linux64"), portable("linuxarm64"), portable("macarm64"), portable("mac64");
|
|
3969
3969
|
/**
|
|
3970
|
-
*
|
|
3971
|
-
*
|
|
3970
|
+
* THE table "which boolean of this device type counts as HIGH", and the
|
|
3971
|
+
* pure evaluator of its EDGE.
|
|
3972
3972
|
*
|
|
3973
|
-
*
|
|
3974
|
-
*
|
|
3975
|
-
*
|
|
3976
|
-
*
|
|
3977
|
-
*
|
|
3978
|
-
*
|
|
3973
|
+
* ONE table for everyone who asks "is this device HIGH?": the
|
|
3974
|
+
* recorder's `RecordingTriggers.sensorDeviceIds` trigger, the post-analysis
|
|
3975
|
+
* sensor markers, the orchestrator's camera-sensors bridge and
|
|
3976
|
+
* the sources of a composite doorbell (`doorbellFeatureSources`, D671).
|
|
3977
|
+
* A second copy would diverge at the first cap added, and the symptom — "the
|
|
3978
|
+
* sensor rings the doorbell but does not record" — is exactly D62.
|
|
3979
3979
|
*
|
|
3980
|
-
* ⚠
|
|
3981
|
-
*
|
|
3982
|
-
*
|
|
3983
|
-
*
|
|
3980
|
+
* ⚠ NOT `DEVICE_STATE_READERS` (`catalogs/device-state-vocabulary.ts`), and the
|
|
3981
|
+
* two must not be unified: that one answers "what is the state WORD for a
|
|
3982
|
+
* rule" (and includes `presence`, `cover`, `alarm-panel`), this one "which
|
|
3983
|
+
* boolean's EDGE counts". Deliberately different vocabularies.
|
|
3984
3984
|
*/
|
|
3985
3985
|
/**
|
|
3986
3986
|
* Known binary / switch source caps → the boolean slice field whose
|
|
@@ -6149,22 +6149,22 @@ var CLASS_MAP_MACRO_TARGETS = [
|
|
|
6149
6149
|
"package"
|
|
6150
6150
|
];
|
|
6151
6151
|
/**
|
|
6152
|
-
*
|
|
6153
|
-
*
|
|
6152
|
+
* The FIRST-LEVEL macro classes: those an object detector emits and that
|
|
6153
|
+
* an operator can select.
|
|
6154
6154
|
*
|
|
6155
|
-
*
|
|
6155
|
+
* They are the three offered by the `object-detection` step
|
|
6156
6156
|
* (`addon-pipeline/src/detection-pipeline/registry/step-definitions.ts`,
|
|
6157
|
-
* `enabledMacroClasses`). `package`
|
|
6158
|
-
* `MACRO_LABELS` —
|
|
6159
|
-
* `package-detection`,
|
|
6160
|
-
*
|
|
6157
|
+
* `enabledMacroClasses`). `package` is in {@link CLASS_MAP_MACRO_TARGETS} and in
|
|
6158
|
+
* `MACRO_LABELS` — it is a true macro — but NOT here: it belongs to the step
|
|
6159
|
+
* `package-detection`, whose enablement is driven by zones, and offering the
|
|
6160
|
+
* same word twice has already made an operator turn on the COCO proxy
|
|
6161
6161
|
* (suitcase/backpack/handbag) lasciando spento il detector dedicato.
|
|
6162
6162
|
*
|
|
6163
|
-
*
|
|
6164
|
-
*
|
|
6165
|
-
* (`types/detection.ts`);
|
|
6166
|
-
* (`RecordingTriggers.objectClasses`)
|
|
6167
|
-
*
|
|
6163
|
+
* ONE list. Before today the same three were hand-written in the step's offer
|
|
6164
|
+
* and a second time as the union `FirstLevelMacro`
|
|
6165
|
+
* (`types/detection.ts`); a third copy for the recording trigger
|
|
6166
|
+
* (`RecordingTriggers.objectClasses`) would have made the later divergence
|
|
6167
|
+
* invisible.
|
|
6168
6168
|
*/
|
|
6169
6169
|
var FIRST_LEVEL_MACRO_CLASSES = [
|
|
6170
6170
|
"person",
|
|
@@ -6229,17 +6229,17 @@ var RecordingStorageModeSchema = zod.z.enum([
|
|
|
6229
6229
|
"on-device-decision"
|
|
6230
6230
|
]);
|
|
6231
6231
|
/**
|
|
6232
|
-
*
|
|
6233
|
-
*
|
|
6232
|
+
* The macro classes that can open a recording window — the same
|
|
6233
|
+
* three offered by the `object-detection` step, from ONE list
|
|
6234
6234
|
* ({@link FIRST_LEVEL_MACRO_CLASSES}).
|
|
6235
6235
|
*/
|
|
6236
6236
|
var RecordingObjectTriggerClassSchema = zod.z.enum(FIRST_LEVEL_MACRO_CLASSES);
|
|
6237
6237
|
/**
|
|
6238
|
-
* True
|
|
6238
|
+
* True when `values` does not repeat an element.
|
|
6239
6239
|
*
|
|
6240
|
-
*
|
|
6241
|
-
*
|
|
6242
|
-
*
|
|
6240
|
+
* A duplicate is not harmless: every entry of `objectClasses` / `sensorDeviceIds`
|
|
6241
|
+
* becomes a SOURCE in `bandTriggerSources`, and the same source twice
|
|
6242
|
+
* would count its windows twice in `segmentMissedByMs`.
|
|
6243
6243
|
*/
|
|
6244
6244
|
var noDuplicates = (values) => new Set(values).size === values.length;
|
|
6245
6245
|
/** Which detectors trigger an `events`-mode band. */
|
|
@@ -6247,34 +6247,34 @@ var RecordingTriggersSchema = zod.z.object({
|
|
|
6247
6247
|
motion: zod.z.boolean().optional(),
|
|
6248
6248
|
audioThresholdDbfs: zod.z.number().optional(),
|
|
6249
6249
|
/**
|
|
6250
|
-
*
|
|
6251
|
-
*
|
|
6252
|
-
*
|
|
6253
|
-
*
|
|
6250
|
+
* The macro classes whose detection opens a window. ABSENT = the source
|
|
6251
|
+
* is not listened to; an EMPTY array is rejected, because "events band, object
|
|
6252
|
+
* trigger on, no class" is the same shape "enabled and records
|
|
6253
|
+
* nothing, forever" that `eventsBandCanEverDemand` is written against.
|
|
6254
6254
|
*
|
|
6255
|
-
*
|
|
6256
|
-
*
|
|
6257
|
-
* `minConfidence<Macro>`
|
|
6258
|
-
* (`source: 'onboard'`)
|
|
6259
|
-
*
|
|
6255
|
+
* The signal read is ALREADY FILTERED: only `source: 'pipeline'` detections, i.e.
|
|
6256
|
+
* those that went through `enabledMacroClasses`, the
|
|
6257
|
+
* `minConfidence<Macro>` and the full-frame guard. The camera's onboard AI
|
|
6258
|
+
* (`source: 'onboard'`) goes through none of those gates and does NOT open
|
|
6259
|
+
* windows — see `recorder/object-trigger.ts`.
|
|
6260
6260
|
*/
|
|
6261
6261
|
objectClasses: zod.z.array(RecordingObjectTriggerClassSchema).min(1).refine(noDuplicates, { message: "objectClasses must not repeat a class" }).optional(),
|
|
6262
6262
|
/**
|
|
6263
|
-
*
|
|
6264
|
-
*
|
|
6263
|
+
* The LINKED devices whose RISING EDGE opens a window. Absent = the source
|
|
6264
|
+
* is not listened to; an empty array is rejected for the same reason as
|
|
6265
6265
|
* `objectClasses`.
|
|
6266
6266
|
*
|
|
6267
|
-
*
|
|
6268
|
-
*
|
|
6269
|
-
*
|
|
6270
|
-
*
|
|
6271
|
-
* device (D12) —
|
|
6267
|
+
* These are SOURCE device ids, not cameras: the band names them, so the
|
|
6268
|
+
* hot path (`DeviceStateChanged`, at bus rate across the whole fleet)
|
|
6269
|
+
* does no RPC. The OFFER from which the operator picks them is another question, and
|
|
6270
|
+
* is resolved with `deviceManager.getLinkedDevices` + `getBindingsBatch` per
|
|
6271
|
+
* device (D12) — never a global list of caps.
|
|
6272
6272
|
*
|
|
6273
|
-
*
|
|
6274
|
-
* `SOURCE_CAP_ACTIVE_FIELD` (`catalogs/sensor-active-state.ts`)
|
|
6275
|
-
*
|
|
6276
|
-
*
|
|
6277
|
-
*
|
|
6273
|
+
* What "high" means depends on the device TYPE and is not decided here:
|
|
6274
|
+
* `SOURCE_CAP_ACTIVE_FIELD` (`catalogs/sensor-active-state.ts`) is THE table,
|
|
6275
|
+
* the same one as the composite doorbell (D671). And it is the EDGE, not
|
|
6276
|
+
* the level: a contact found already open at runner restart does not
|
|
6277
|
+
* record.
|
|
6278
6278
|
*/
|
|
6279
6279
|
sensorDeviceIds: zod.z.array(zod.z.number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional()
|
|
6280
6280
|
});
|
|
@@ -7545,7 +7545,7 @@ var DecoderSessionConfigSchema = zod.z.object({
|
|
|
7545
7545
|
* - **VALUE** — at which level, for which scope, until when. That stays ONE
|
|
7546
7546
|
* thing: the logging settings document on the `system` cap. Two authorities
|
|
7547
7547
|
* over the values is the exact defect
|
|
7548
|
-
* `docs/design/plans/2026-08-26-
|
|
7548
|
+
* `docs/design/plans/2026-08-26-per-component-logging.md` was written to
|
|
7549
7549
|
* remove; re-introducing it from the cure side would be grotesque.
|
|
7550
7550
|
*
|
|
7551
7551
|
* Nothing in this file reads a clock, an env var or a store. The registry is
|
|
@@ -13660,7 +13660,7 @@ var dataStoreProviderCapability = {
|
|
|
13660
13660
|
*
|
|
13661
13661
|
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
13662
13662
|
* was wrong — corrected 2026-08-26 after the hop map
|
|
13663
|
-
* (`docs/design/2026-08-26-
|
|
13663
|
+
* (`docs/design/2026-08-26-topic-hop-map.md`) traced the path.
|
|
13664
13664
|
* There is **no Zod parse at all** between the door and the engine: the
|
|
13665
13665
|
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
13666
13666
|
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
@@ -14746,7 +14746,17 @@ function siteZoneKey(label) {
|
|
|
14746
14746
|
var ProviderStatusSchema = zod.z.object({
|
|
14747
14747
|
connected: zod.z.boolean(),
|
|
14748
14748
|
deviceCount: zod.z.number(),
|
|
14749
|
-
error: zod.z.string().optional()
|
|
14749
|
+
error: zod.z.string().optional(),
|
|
14750
|
+
/**
|
|
14751
|
+
* `'orchestrator'`: this provider writes NO camera's `motion` runtime slice
|
|
14752
|
+
* — the orchestrator is its only writer (D696). Set by `BaseDeviceProvider`,
|
|
14753
|
+
* which every provider bundles, so only a provider BUILT from D696-amended
|
|
14754
|
+
* code says it. ABSENT means an older provider that may still write it (raw
|
|
14755
|
+
* VMD writes, a boot seed), and the orchestrator's provider gate keeps that
|
|
14756
|
+
* provider's cameras unwritten (`camera-sensors/motion-slice-provider-gate.ts`)
|
|
14757
|
+
* — the provider twin of the runner's `getLocalLoad().motionSliceWriter`.
|
|
14758
|
+
*/
|
|
14759
|
+
motionSliceWriter: zod.z.literal("orchestrator").optional()
|
|
14750
14760
|
});
|
|
14751
14761
|
zod.z.object({
|
|
14752
14762
|
externalId: zod.z.string(),
|
|
@@ -15937,7 +15947,7 @@ var deviceManagerCapability = {
|
|
|
15937
15947
|
* sources could be switched off without switching off the rest (D556, then
|
|
15938
15948
|
* D555's re-key by source). The operator removed the whole idea the same
|
|
15939
15949
|
* day: *"tutti i providers funzionano sempre, non serve
|
|
15940
|
-
* disattivarli/attivarli … loro vivono lì"* (D557 amended, third). A
|
|
15950
|
+
* disattivarli/attivarli … loro vivono lì"* [all the providers always work, there is no need to deactivate/activate them … they live there] (D557 amended, third). A
|
|
15941
15951
|
* collection cap's providers are a DERIVED set — every addon that provides
|
|
15942
15952
|
* the cap for this device type, computed on every read and persisted
|
|
15943
15953
|
* nowhere — so there is nothing here to activate, and a verb that accepted
|
|
@@ -16789,7 +16799,7 @@ var embeddingEncoderCapability = {
|
|
|
16789
16799
|
* per-device window, `KeyFrameCaptureLog`, `bumpCropMetric`. Every one of them
|
|
16790
16800
|
* ends in a log line, and a log line is the thing the operator asked to stop
|
|
16791
16801
|
* needing: *"possiamo armare questi errori intanto? Così al prossimo giro
|
|
16792
|
-
* ricontrolliamo tutti questi punti"
|
|
16802
|
+
* ricontrolliamo tutti questi punti"* [can we instrument these errors in the meantime? That way next round we recheck all these points]. Reading them meant grepping Loki and
|
|
16793
16803
|
* hand-correlating timestamps, which is how a 22% thumbnail gap and a 3-hour
|
|
16794
16804
|
* media blackout were both diagnosed. The counters stay; this is where they can
|
|
16795
16805
|
* be READ.
|
|
@@ -23060,14 +23070,14 @@ var TrackSchema = zod.z.object({
|
|
|
23060
23070
|
* `derive-returned-null tile=standin`,
|
|
23061
23071
|
* `native-tile tile=native no-key-frame-at-close`, …) written at close and
|
|
23062
23072
|
* CLEARED by the late-keyFrame upgrade when a native tile lands after all.
|
|
23063
|
-
* The operator-facing answer to "perché manca l'immagine?" on a track whose
|
|
23073
|
+
* The operator-facing answer to "perché manca l'immagine?" [why is the image missing?] on a track whose
|
|
23064
23074
|
* tile is a face/plate stand-in, a raster crop, or an icon.
|
|
23065
23075
|
*
|
|
23066
23076
|
* **`no-key-frame-at-close` (D400).** The line used to be written ONLY when
|
|
23067
23077
|
* the TILE ranked below native, so a track whose thumbnail landed natively
|
|
23068
23078
|
* while its key frame missed carried no reason at all — three of the four
|
|
23069
23079
|
* `MISSING_KEYFRAME` tracks in the 2026-09-07 operator audit were exactly
|
|
23070
|
-
* that shape, and their "niente ultimo" had no cause anywhere on the row.
|
|
23080
|
+
* that shape, and their "niente ultimo" [no last frame] had no cause anywhere on the row.
|
|
23071
23081
|
* The key frame is the head of a cascade (`keyFrame ⇒ keyFrameSmall ⇒ the
|
|
23072
23082
|
* lastFrame copy source`), so its absence is now on this line whatever the
|
|
23073
23083
|
* tile ended up being.
|
|
@@ -23154,7 +23164,7 @@ var MotionEventSchema = zod.z.object({
|
|
|
23154
23164
|
/**
|
|
23155
23165
|
* Ms offsets from `timestamp` (the episode's own first rising edge, so the
|
|
23156
23166
|
* first entry is always `0`) of every genuine off→on transition the
|
|
23157
|
-
* episode saw — "ogni evento on si deve salvare" (D475). NOT one entry per
|
|
23167
|
+
* episode saw — "ogni evento on si deve salvare" [every ON event must be saved] (D475). NOT one entry per
|
|
23158
23168
|
* push: a firmware source that keepalives at ~1 Hz for the whole burst
|
|
23159
23169
|
* (Reolink, Hikvision) produces exactly one edge; a source that reports an
|
|
23160
23170
|
* explicit `false` mid-episode and then resumes before the quiet window
|
|
@@ -30483,7 +30493,7 @@ var ClipPlaybackSchema = zod.z.object({
|
|
|
30483
30493
|
* **One authorised yes is one wake.** `next-natural` — take the clip the next
|
|
30484
30494
|
* time the camera is awake for its own reasons — is deliberately not a member:
|
|
30485
30495
|
* it was proposed, it is free on the battery, and the operator declined it on
|
|
30486
|
-
* 2026-09-20 (*"Quando un export viene richiesto si sveglia la camera."
|
|
30496
|
+
* 2026-09-20 (*"Quando un export viene richiesto si sveglia la camera."* [When an export is requested the camera wakes up],
|
|
30487
30497
|
* D558 "Considered and not taken").
|
|
30488
30498
|
*/
|
|
30489
30499
|
var ClipWakeSchema = zod.z.enum(["authorised"]);
|
|
@@ -30728,7 +30738,7 @@ var videoclipsCapability = {
|
|
|
30728
30738
|
* **It is a SECTION of the Recording tab, at the end of it — not a tab of
|
|
30729
30739
|
* its own.** It shipped as a `clips` top-tab and the operator rejected the
|
|
30730
30740
|
* placement: *"utilizzerei la stessa tab recordings, lì abbiamo già tutto il
|
|
30731
|
-
* necessario, una nuova sezione alla fine per le clips"
|
|
30741
|
+
* necessario, una nuova sezione alla fine per le clips"* [I would use the same recordings tab, there we already have everything necessary, a new section at the end for the clips]. The Recording tab
|
|
30732
30742
|
* already holds the recorder's panel, the schedule bands and the unified
|
|
30733
30743
|
* retention policy; footage the camera itself holds is the same question,
|
|
30734
30744
|
* asked of a different store. `order: 100` puts it after all of them with
|
|
@@ -30789,7 +30799,7 @@ var videoclipsCapability = {
|
|
|
30789
30799
|
* It replaced `sources?: string[]`, a VIEW filter over source ids that
|
|
30790
30800
|
* assumed the answer was a fan-out over everything a camera has. The
|
|
30791
30801
|
* operator settled otherwise on 2026-09-20 — *"l'utilizzatore è uno
|
|
30792
|
-
* solo"* — so the list is asked of one provider at a time and there is
|
|
30802
|
+
* solo"* [there is only one user] — so the list is asked of one provider at a time and there is
|
|
30793
30803
|
* nothing to filter out of it.
|
|
30794
30804
|
*/
|
|
30795
30805
|
provider: zod.z.string().min(1)
|
|
@@ -36456,7 +36466,7 @@ authKey: zod.z.string().optional() }), zod.z.object({
|
|
|
36456
36466
|
*/
|
|
36457
36467
|
/**
|
|
36458
36468
|
* How long after a camera's last rising edge `pipeline-analytics` closes the
|
|
36459
|
-
* motion EPISODE row it kept open for it (D475) — "il delay della cap", in
|
|
36469
|
+
* motion EPISODE row it kept open for it (D475) — "il delay della cap" [the cap's delay], in
|
|
36460
36470
|
* the operator's words. One authority for the whole system: the writer of a
|
|
36461
36471
|
* `Camera` device's slice (the orchestrator, D696) writes this SAME constant
|
|
36462
36472
|
* in `autoClearAfterMs` while `detected: true` (never a camera's own clock —
|
|
@@ -40079,7 +40089,7 @@ var ReadGopBytesResultSchema = zod.z.object({
|
|
|
40079
40089
|
/**
|
|
40080
40090
|
* A time WINDOW of one finalized segment, cut by byte range — the multi-GOP
|
|
40081
40091
|
* twin of {@link ReadGopBytesResultSchema}'s single instant. Built for the
|
|
40082
|
-
* replay clip's `recording` source (`docs/design/plans/2026-08-26-replay-
|
|
40092
|
+
* replay clip's `recording` source (`docs/design/plans/2026-08-26-clip-replay-on-pipeline.md`):
|
|
40083
40093
|
* a replay needs several seconds of native pixels, not one frame.
|
|
40084
40094
|
*
|
|
40085
40095
|
* `ok.data` is standalone-demuxable, same as a GOP read. `ok.reachesRequestedEnd`
|
|
@@ -43031,7 +43041,7 @@ var systemCapability = {
|
|
|
43031
43041
|
*
|
|
43032
43042
|
* This is the surface the operator asked for on 2026-08-28 (*"possiamo
|
|
43033
43043
|
* armare questi errori intanto? Così al prossimo giro ricontrolliamo tutti
|
|
43034
|
-
* questi punti"*). Before it, four live failure modes could only be counted
|
|
43044
|
+
* questi punti"* [can we instrument these errors in the meantime? That way next round we recheck all these points]). Before it, four live failure modes could only be counted
|
|
43035
43045
|
* by grepping Loki and hand-correlating timestamps, which is exactly how a
|
|
43036
43046
|
* 22% thumbnail gap and a 3-hour media blackout were diagnosed — twice.
|
|
43037
43047
|
*
|
|
@@ -57853,7 +57863,7 @@ var PreviewTextField = zod.z.string().max(200);
|
|
|
57853
57863
|
* Whether the notification's preview is a STILL or a short animation.
|
|
57854
57864
|
*
|
|
57855
57865
|
* The operator's ask, verbatim: *"inviato come gif o video (come per le altre
|
|
57856
|
-
* rule)"* — the other rules already offer an animated preview, and a ten-hour
|
|
57866
|
+
* rule)"* [sent as a gif or video (as for the other rules)] — the other rules already offer an animated preview, and a ten-hour
|
|
57857
57867
|
* night reads better as three seconds of motion than as one frame of it. Both
|
|
57858
57868
|
* modes get the SAME treatment (blurred frame, large centred title); `'gif'`
|
|
57859
57869
|
* simply applies it to a dozen frames sampled across the render and assembles
|
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-Ex-rbzic.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_builtins_composer_composer_addon = require("./builtins/composer/composer.addon.js");
|
|
@@ -29,7 +29,7 @@ require("./builtins/system-config/index.js");
|
|
|
29
29
|
const require_builtins_winston_logging_index = require("./builtins/winston-logging/index.js");
|
|
30
30
|
const require_event_loop_stall_monitor = require("./event-loop-stall-monitor-ey4mbofz.js");
|
|
31
31
|
const require_tls$1 = require("./tls-D_wUeOTD.js");
|
|
32
|
-
const require_child_cap_dispatch = require("./child-cap-dispatch-
|
|
32
|
+
const require_child_cap_dispatch = require("./child-cap-dispatch-Cy56Y66E.js");
|
|
33
33
|
const require_resource_monitor = require("./resource-monitor-DzNn_IZK.js");
|
|
34
34
|
const require_custom_action_registry = require("./custom-action-registry-acBY3mHA.js");
|
|
35
35
|
let zod = require("zod");
|
|
@@ -735,7 +735,7 @@ var LogRingBuffer = class {
|
|
|
735
735
|
* the hub forwarder). It does NOT gate the in-memory ring buffer: the ring
|
|
736
736
|
* keeps everything it has room for and prunes by level only under pressure,
|
|
737
737
|
* which the plan
|
|
738
|
-
* (`docs/design/plans/2026-08-26-
|
|
738
|
+
* (`docs/design/plans/2026-08-26-per-component-logging.md`) settles as the
|
|
739
739
|
* better policy — an admission level for the ring would make the log viewer go
|
|
740
740
|
* blind exactly when an operator raises the level to quieten a disk.
|
|
741
741
|
*
|
|
@@ -6989,7 +6989,7 @@ var CapabilityRegistry = class CapabilityRegistry {
|
|
|
6989
6989
|
*
|
|
6990
6990
|
* Filters by activation (the manifest's autoActivate) and by nothing else.
|
|
6991
6991
|
* The per-device DENY set that used to filter here is gone with the switch
|
|
6992
|
-
* it projected (2026-09-20): *"tutti i providers funzionano sempre"
|
|
6992
|
+
* it projected (2026-09-20): *"tutti i providers funzionano sempre"* [all the providers always work]. WHICH
|
|
6993
6993
|
* providers a device has is now answered by its BINDINGS
|
|
6994
6994
|
* (`device-bindings-store.ts` step 0), which is a different question from
|
|
6995
6995
|
* which of them are registered and running — this one.
|
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 { $n as createEvent, At as isArrayOutputSchema, C as LOG_LEVEL_RANK, E as METHOD_ACCESS_MAP, Ft as kebabToCamel, Gn as DEVICE_SETTINGS_CONTRIBUTION_METHODS, H as addonSettingsCapability, Hn as errMsg$1, Ht as logLevelAtMost, Jn as ReadinessTimeoutError, Kn as DEVICE_STATUS_METHOD, Nt as isObjectInput, Pt as isVoidInput, Qn as asString$1, Qt as objectInputDeclaresRequiredDeviceId, Rt as lifecycleJobSchema, Tt as extractNestedAddonId, Ut as looseSchema, Wn as DATAPLANE_SECRET_HEADER$1, Xn as asJsonObject$1, Zn as asNumber, Zt as objectInputDeclaresAddonId, cn as resolveMethodAuth, cr as parseJsonUnknown, dn as scopesAllowDeviceCap, dr as scopeKey, er as emitDownForOwnedCaps, j as RUNTIME_DEFAULTS, jt as isCollectionArrayMethod, lr as readinessKey, mr as EventCategory$1, nn as procedureAuthKey, nr as expandCapMethods, qn as ReadinessRegistry, sr as parseJsonObject, t as ALL_CAPABILITY_DEFINITIONS, un as scopesAllowAddon, ur as resolveCapMount } from "./dist-
|
|
2
|
+
import { $n as createEvent, At as isArrayOutputSchema, C as LOG_LEVEL_RANK, E as METHOD_ACCESS_MAP, Ft as kebabToCamel, Gn as DEVICE_SETTINGS_CONTRIBUTION_METHODS, H as addonSettingsCapability, Hn as errMsg$1, Ht as logLevelAtMost, Jn as ReadinessTimeoutError, Kn as DEVICE_STATUS_METHOD, Nt as isObjectInput, Pt as isVoidInput, Qn as asString$1, Qt as objectInputDeclaresRequiredDeviceId, Rt as lifecycleJobSchema, Tt as extractNestedAddonId, Ut as looseSchema, Wn as DATAPLANE_SECRET_HEADER$1, Xn as asJsonObject$1, Zn as asNumber, Zt as objectInputDeclaresAddonId, cn as resolveMethodAuth, cr as parseJsonUnknown, dn as scopesAllowDeviceCap, dr as scopeKey, er as emitDownForOwnedCaps, j as RUNTIME_DEFAULTS, jt as isCollectionArrayMethod, lr as readinessKey, mr as EventCategory$1, nn as procedureAuthKey, nr as expandCapMethods, qn as ReadinessRegistry, sr as parseJsonObject, t as ALL_CAPABILITY_DEFINITIONS, un as scopesAllowAddon, ur as resolveCapMount } from "./dist-COj36Fwm.mjs";
|
|
3
3
|
import { AlertCenterAddon } from "./builtins/alerts/alerts.addon.mjs";
|
|
4
4
|
import "./builtins/alerts/index.mjs";
|
|
5
5
|
import { ComposerAddon } from "./builtins/composer/composer.addon.mjs";
|
|
@@ -28,7 +28,7 @@ import "./builtins/system-config/index.mjs";
|
|
|
28
28
|
import { WinstonDestination, WinstonLoggingAddon } from "./builtins/winston-logging/index.mjs";
|
|
29
29
|
import { _ as ensureModel, a as createFileDataPlaneHandler, c as parseRangeHeader, d as ModelDownloadService, g as downloadModel, h as downloadFile, i as startEventLoopStallMonitor, l as parseTokenizedUrl, m as deleteModelFromDisk, n as STALL_TICK_MS, o as contentTypeFor, p as collectModelFiles, r as attributeStall, s as createAuthenticatedFileServer, t as STALL_REPORT_MS, u as resolveFilePath, v as fetchJson, x as isModelDownloaded, y as getModelFilePath } from "./event-loop-stall-monitor-EXjzIxDz.mjs";
|
|
30
30
|
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-IM-v7JV4.mjs";
|
|
31
|
-
import { $ as classifyCapRoute, $n as EMPTY_CAP_ACTION_READING, $t as RUNNER_RSS_BUDGET_ENV, A as resolveHwAccel, An as OUTBOUND_QUEUE_SUSTAIN_MS, At as DeviceRegistry, B as udsChildLogToWorkerEntry, Bn as createSocketPlaneMeter, Bt as hostNodeIdOf, C as getBrokerEventBus, Cn as HEAP_SPACE_REPORT_MIN_MB, Ct as capActionName, D as subscribePassthrough, Dn as readHeapSpaces, Dt as parseCapAction, E as setNodeEventInterest, En as heapSpaceField, Et as capServiceName, F as ipcParentLink, Fn as createMeshQueueReader, Ft as resolveAddonClass, G as UDS_NO_ROUTE_PREFIX, Gn as EMPTY_SOCKET_DIRECTION, Gt as HEAP_WATCH_INTERVAL_MS, H as createUdsLoggerWithControl, Hn as diffSocketPlane, Ht as HEAP_RECLAIM_MIN_INTERVAL_MS, I as localProviderLink, In as formatMeshQueue, It as buildNpmChildEnv, J as deviceOfGetStatus, Jn as sampleSocketDirection, Jt as HUB_MAIN_RSS_BUDGET_MB, K as GET_STATUS_METHOD, Kn as createSocketDirectionCounters, Kt as HEAP_WATCH_WARN_RATIO, L as createParentUnownedCallHandler, Ln as EMPTY_SOCKET_PLANE_BASELINE, Lt as resolveNpmInvocation, M as brokerTransportLink, Mn as createOutboundQueueGate, Mt as CapabilityUnavailableError, N as buildLinkChain, Nn as formatOutboundQueueVerdict, Nt as copyBundledNativeModules, O as AddonDepsManager, On as selectReportedSpaces, Ot as deserializeTypedArrays, P as deviceCapResolverLink, Pn as MESH_QUEUE_TOP_N, Pt as installManifestNativeDeps, Q as CapRouteError, Qn as CAP_ACTION_UNLABELLED, Qt as RUNNER_HEAP_WATCH_INTERVAL_MS, R as createUdsEventBridge, Rn as SOCKET_PLANE_TOP_N, Rt as runNpm, S as clusterEventTopic, Sn as DECISIVE_HEAP_SPACES, St as NATIVE_PROVIDER_SERVICE_INFIX, T as registerEventBusService, Tn as formatHeapSpaces, Tt as capBareAction, U as LocalChildClient, Un as formatSocketPlane, Ut as HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS, V as createUdsLogger, Vn as createSocketPlaneReader, Vt as createAddonDataPlaneFacility, W as LocalChildRegistry, Wn as readSocketQueues, Wt as HEAP_RECLAIM_TRIGGER_MB, X as AGENT_CAP_FWD_SERVICE, Xn as socketDirectionMessages, Xt as RSS_BUDGET_REANNOUNCE_MIN_MS, Y as AGENT_CAP_FWD_ACTION, Yn as socketDirectionBytes, Yt as HUB_RSS_BUDGET_ENV, Z as CapRouteResolver, Zn as CAP_ACTION_OVERFLOW_LABEL, Zt as RSS_BUDGET_RELEASE_RATIO, _ as getWorkerDeviceRegistry, _n as ARRAY_BUFFER_RELEASE_MIN_DROP_RATIO, a as reapProcessGroup, an as describeRss, ar as createEventPlaneMeter, at as getCapUsageRegistry, b as setHubConnected, bn as formatArrayBufferCensus, bt as createAddonService, c as runnerOwnsProcessGroup, cn as parseRssBudgetMb, cr as formatEventPlane, ct as UdsLocalTransportServer, d as summarizeMembers, dn as startHeapWatch, dt as localEndpointPath, en as ZERO_LOOP_DELAY, er as MAX_CAP_ACTIONS_PER_PEER, et as callWithServiceDiscovery, f as installManifestSystemDeps, fn as startRunnerHeapWatch, ft as FrameDecoder, g as createUdsAddonContext, gn as ARRAY_BUFFER_CENSUS_THRESHOLD_MB, h as createAddonContext, hn as ARRAY_BUFFER_CENSUS_SUSTAIN_MS, ht as createBrokerDeviceManagerApi, in as createV8Reclaimer, ir as EVENT_PLANE_TOP_N, it as __resetCapUsageRegistryForTests, j as brokerCallForCap, jn as OUTBOUND_QUEUE_THRESHOLD_BYTES, jt as CapabilityHandle, k as createKernelHwAccel, kn as OUTBOUND_QUEUE_COOLDOWN_MS, kt as serializeTypedArrays, l as signalAllRunnerGroups, ln as reclaimIntervalMs, lt as SocketChannel, m as adaptBrokerToCluster, mn as ARRAY_BUFFER_CENSUS_COOLDOWN_MS, mt as buildNativeCapProxy, nn as createDeferredHeapWatchSink, nr as createCapActionCensus, nt as CapUsageRegistry, o as registerRunnerGroup, on as hubMainRssBudget, or as createEventPlaneReader, ot as createLocalTransport, p as installManifestPythonDeps, pn as strandedMb, pt as encodeFrame, q as answerClaimedGetStatus, qn as recordSocketFrame, qt as HUB_MAIN_HEAP_WATCH_LABEL, r as defaultProcessGroupOps, rn as createLoopDelayMeter, rr as diffCapActionCensus, rt as PARENT_ROUTED_PROVIDER_ADDON_ID, s as releaseRunnerGroup, sn as nextRssBudgetState, sr as diffEventPlane, st as UdsLocalTransportClient, t as CAP_METHOD_NOT_IMPLEMENTED, tn as buildHeapSample, tr as capActionLabel, tt as readMoleculerFanoutMode, un as shouldReclaim, ut as PeerAnsweredError, v as getOrInitReadinessRegistry, vn as createArrayBufferCensusGate, vt as mountNativeCapService, w as getMoleculerEventStats, wn as emitHeapDiagnosticReport, wt as capActionSuffix, x as EVENT_TOPIC_PREFIX, xn as isArrayBufferCensusReport, xt as validateProviderRegistrations, y as getOrInitReadinessRegistryForClient, yn as createInspectorArrayBufferCensus, z as createUdsEventBus, zn as SOCKET_QUEUE_TOP_N, zt as createAddonPeerBytesFacility } from "./child-cap-dispatch-
|
|
31
|
+
import { $ as classifyCapRoute, $n as EMPTY_CAP_ACTION_READING, $t as RUNNER_RSS_BUDGET_ENV, A as resolveHwAccel, An as OUTBOUND_QUEUE_SUSTAIN_MS, At as DeviceRegistry, B as udsChildLogToWorkerEntry, Bn as createSocketPlaneMeter, Bt as hostNodeIdOf, C as getBrokerEventBus, Cn as HEAP_SPACE_REPORT_MIN_MB, Ct as capActionName, D as subscribePassthrough, Dn as readHeapSpaces, Dt as parseCapAction, E as setNodeEventInterest, En as heapSpaceField, Et as capServiceName, F as ipcParentLink, Fn as createMeshQueueReader, Ft as resolveAddonClass, G as UDS_NO_ROUTE_PREFIX, Gn as EMPTY_SOCKET_DIRECTION, Gt as HEAP_WATCH_INTERVAL_MS, H as createUdsLoggerWithControl, Hn as diffSocketPlane, Ht as HEAP_RECLAIM_MIN_INTERVAL_MS, I as localProviderLink, In as formatMeshQueue, It as buildNpmChildEnv, J as deviceOfGetStatus, Jn as sampleSocketDirection, Jt as HUB_MAIN_RSS_BUDGET_MB, K as GET_STATUS_METHOD, Kn as createSocketDirectionCounters, Kt as HEAP_WATCH_WARN_RATIO, L as createParentUnownedCallHandler, Ln as EMPTY_SOCKET_PLANE_BASELINE, Lt as resolveNpmInvocation, M as brokerTransportLink, Mn as createOutboundQueueGate, Mt as CapabilityUnavailableError, N as buildLinkChain, Nn as formatOutboundQueueVerdict, Nt as copyBundledNativeModules, O as AddonDepsManager, On as selectReportedSpaces, Ot as deserializeTypedArrays, P as deviceCapResolverLink, Pn as MESH_QUEUE_TOP_N, Pt as installManifestNativeDeps, Q as CapRouteError, Qn as CAP_ACTION_UNLABELLED, Qt as RUNNER_HEAP_WATCH_INTERVAL_MS, R as createUdsEventBridge, Rn as SOCKET_PLANE_TOP_N, Rt as runNpm, S as clusterEventTopic, Sn as DECISIVE_HEAP_SPACES, St as NATIVE_PROVIDER_SERVICE_INFIX, T as registerEventBusService, Tn as formatHeapSpaces, Tt as capBareAction, U as LocalChildClient, Un as formatSocketPlane, Ut as HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS, V as createUdsLogger, Vn as createSocketPlaneReader, Vt as createAddonDataPlaneFacility, W as LocalChildRegistry, Wn as readSocketQueues, Wt as HEAP_RECLAIM_TRIGGER_MB, X as AGENT_CAP_FWD_SERVICE, Xn as socketDirectionMessages, Xt as RSS_BUDGET_REANNOUNCE_MIN_MS, Y as AGENT_CAP_FWD_ACTION, Yn as socketDirectionBytes, Yt as HUB_RSS_BUDGET_ENV, Z as CapRouteResolver, Zn as CAP_ACTION_OVERFLOW_LABEL, Zt as RSS_BUDGET_RELEASE_RATIO, _ as getWorkerDeviceRegistry, _n as ARRAY_BUFFER_RELEASE_MIN_DROP_RATIO, a as reapProcessGroup, an as describeRss, ar as createEventPlaneMeter, at as getCapUsageRegistry, b as setHubConnected, bn as formatArrayBufferCensus, bt as createAddonService, c as runnerOwnsProcessGroup, cn as parseRssBudgetMb, cr as formatEventPlane, ct as UdsLocalTransportServer, d as summarizeMembers, dn as startHeapWatch, dt as localEndpointPath, en as ZERO_LOOP_DELAY, er as MAX_CAP_ACTIONS_PER_PEER, et as callWithServiceDiscovery, f as installManifestSystemDeps, fn as startRunnerHeapWatch, ft as FrameDecoder, g as createUdsAddonContext, gn as ARRAY_BUFFER_CENSUS_THRESHOLD_MB, h as createAddonContext, hn as ARRAY_BUFFER_CENSUS_SUSTAIN_MS, ht as createBrokerDeviceManagerApi, in as createV8Reclaimer, ir as EVENT_PLANE_TOP_N, it as __resetCapUsageRegistryForTests, j as brokerCallForCap, jn as OUTBOUND_QUEUE_THRESHOLD_BYTES, jt as CapabilityHandle, k as createKernelHwAccel, kn as OUTBOUND_QUEUE_COOLDOWN_MS, kt as serializeTypedArrays, l as signalAllRunnerGroups, ln as reclaimIntervalMs, lt as SocketChannel, m as adaptBrokerToCluster, mn as ARRAY_BUFFER_CENSUS_COOLDOWN_MS, mt as buildNativeCapProxy, nn as createDeferredHeapWatchSink, nr as createCapActionCensus, nt as CapUsageRegistry, o as registerRunnerGroup, on as hubMainRssBudget, or as createEventPlaneReader, ot as createLocalTransport, p as installManifestPythonDeps, pn as strandedMb, pt as encodeFrame, q as answerClaimedGetStatus, qn as recordSocketFrame, qt as HUB_MAIN_HEAP_WATCH_LABEL, r as defaultProcessGroupOps, rn as createLoopDelayMeter, rr as diffCapActionCensus, rt as PARENT_ROUTED_PROVIDER_ADDON_ID, s as releaseRunnerGroup, sn as nextRssBudgetState, sr as diffEventPlane, st as UdsLocalTransportClient, t as CAP_METHOD_NOT_IMPLEMENTED, tn as buildHeapSample, tr as capActionLabel, tt as readMoleculerFanoutMode, un as shouldReclaim, ut as PeerAnsweredError, v as getOrInitReadinessRegistry, vn as createArrayBufferCensusGate, vt as mountNativeCapService, w as getMoleculerEventStats, wn as emitHeapDiagnosticReport, wt as capActionSuffix, x as EVENT_TOPIC_PREFIX, xn as isArrayBufferCensusReport, xt as validateProviderRegistrations, y as getOrInitReadinessRegistryForClient, yn as createInspectorArrayBufferCensus, z as createUdsEventBus, zn as SOCKET_QUEUE_TOP_N, zt as createAddonPeerBytesFacility } from "./child-cap-dispatch-Dmo2YJFe.mjs";
|
|
32
32
|
import { n as getSinglePidStats, t as getPidStats } from "./resource-monitor-B1v6E07R.mjs";
|
|
33
33
|
import { t as CustomActionRegistry } from "./custom-action-registry-B4Cf4O_X.mjs";
|
|
34
34
|
import { z } from "zod";
|
|
@@ -728,7 +728,7 @@ var LogRingBuffer = class {
|
|
|
728
728
|
* the hub forwarder). It does NOT gate the in-memory ring buffer: the ring
|
|
729
729
|
* keeps everything it has room for and prunes by level only under pressure,
|
|
730
730
|
* which the plan
|
|
731
|
-
* (`docs/design/plans/2026-08-26-
|
|
731
|
+
* (`docs/design/plans/2026-08-26-per-component-logging.md`) settles as the
|
|
732
732
|
* better policy — an admission level for the ring would make the log viewer go
|
|
733
733
|
* blind exactly when an operator raises the level to quieten a disk.
|
|
734
734
|
*
|
|
@@ -6982,7 +6982,7 @@ var CapabilityRegistry = class CapabilityRegistry {
|
|
|
6982
6982
|
*
|
|
6983
6983
|
* Filters by activation (the manifest's autoActivate) and by nothing else.
|
|
6984
6984
|
* The per-device DENY set that used to filter here is gone with the switch
|
|
6985
|
-
* it projected (2026-09-20): *"tutti i providers funzionano sempre"
|
|
6985
|
+
* it projected (2026-09-20): *"tutti i providers funzionano sempre"* [all the providers always work]. WHICH
|
|
6986
6986
|
* providers a device has is now answered by its BINDINGS
|
|
6987
6987
|
* (`device-bindings-store.ts` step 0), which is a different question from
|
|
6988
6988
|
* which of them are registered and running — this one.
|
|
@@ -556,7 +556,7 @@ export declare class CapabilityRegistry {
|
|
|
556
556
|
*
|
|
557
557
|
* Filters by activation (the manifest's autoActivate) and by nothing else.
|
|
558
558
|
* The per-device DENY set that used to filter here is gone with the switch
|
|
559
|
-
* it projected (2026-09-20): *"tutti i providers funzionano sempre"
|
|
559
|
+
* it projected (2026-09-20): *"tutti i providers funzionano sempre"* [all the providers always work]. WHICH
|
|
560
560
|
* providers a device has is now answered by its BINDINGS
|
|
561
561
|
* (`device-bindings-store.ts` step 0), which is a different question from
|
|
562
562
|
* which of them are registered and running — this one.
|
|
@@ -98,8 +98,30 @@ export interface LocalChildRegistryLogger {
|
|
|
98
98
|
* The optional `logger` receives a single deduplicated INFO line the first time
|
|
99
99
|
* each capName is routed child→sibling over UDS.
|
|
100
100
|
*/
|
|
101
|
+
/**
|
|
102
|
+
* Where the registry says that a runner came up or went away — the parent's
|
|
103
|
+
* kernel bus. A forked runner has no Moleculer broker (Phase F), so
|
|
104
|
+
* `$node.connected` never fires for it and the Moleculer-side emitter
|
|
105
|
+
* (`agent-registry.service.ts`) never sees one: this registry is the only place
|
|
106
|
+
* that knows (fix round 1 of the 2026-10-02 motion-release-order work, C1).
|
|
107
|
+
*/
|
|
108
|
+
export interface ChildLifecycleEvents {
|
|
109
|
+
/** This parent's node id (`'hub'`, or the bare agent id): the `<node>` of `<node>/<childId>`. */
|
|
110
|
+
readonly parentNodeId: () => string;
|
|
111
|
+
/** The parent's kernel bus `emit`. Telemetry (D8): a consumer must survive a dropped event. */
|
|
112
|
+
readonly emit: (event: SystemEvent) => void;
|
|
113
|
+
}
|
|
101
114
|
export interface LocalChildRegistryOptions {
|
|
102
115
|
readonly server: LocalTransportServer;
|
|
116
|
+
/**
|
|
117
|
+
* Emit `WorkerOnline { workerId: '<parent>/<childId>' }` at a new
|
|
118
|
+
* incarnation's FIRST register — the pre-init frame `LocalChildClient.start()`
|
|
119
|
+
* sends before any addon module is loaded, so before `initialize()` and any
|
|
120
|
+
* device restore; it is emitted before that frame is acked — and
|
|
121
|
+
* `WorkerOffline` when the LIVE connection closes (never for a superseded
|
|
122
|
+
* one). Omitted: nothing is emitted.
|
|
123
|
+
*/
|
|
124
|
+
readonly lifecycleEvents?: ChildLifecycleEvents;
|
|
103
125
|
readonly onUnownedCall?: (input: CapCallInput) => Promise<unknown>;
|
|
104
126
|
readonly logger?: LocalChildRegistryLogger;
|
|
105
127
|
/**
|
|
@@ -275,6 +297,9 @@ export declare class LocalChildRegistry {
|
|
|
275
297
|
private readonly server;
|
|
276
298
|
private readonly onUnownedCall?;
|
|
277
299
|
private readonly logger?;
|
|
300
|
+
private readonly lifecycleEvents?;
|
|
301
|
+
/** Per childId: the incarnation `WorkerOnline` was last said for. */
|
|
302
|
+
private readonly announcedIncarnation;
|
|
278
303
|
private readonly getActiveSingletonAddonId?;
|
|
279
304
|
private readonly resolveChildIdForAddon?;
|
|
280
305
|
/** This node's own Moleculer nodeId (see {@link LocalChildRegistryOptions.ownNodeId}). */
|
|
@@ -605,5 +630,10 @@ export declare class LocalChildRegistry {
|
|
|
605
630
|
*/
|
|
606
631
|
setChildLogLevel(childId: string, level: string): boolean;
|
|
607
632
|
close(): Promise<void>;
|
|
633
|
+
/** `WorkerOnline`, once per incarnation: a re-register of the same connection says nothing. */
|
|
634
|
+
private announceOnline;
|
|
635
|
+
/** `WorkerOffline` for the LIVE connection's close (a superseded close never reaches here). */
|
|
636
|
+
private announceOffline;
|
|
637
|
+
private emitLifecycle;
|
|
608
638
|
private onConnection;
|
|
609
639
|
}
|
|
@@ -86,7 +86,7 @@ function buildCourtesySvg(spec) {
|
|
|
86
86
|
* "remains visible underneath". A 38 % view of a dark room is not a view of it,
|
|
87
87
|
* and the operator read the result as a placeholder rather than as their own
|
|
88
88
|
* camera: *"ma perché Waking? Dovremmo mostrare l'ultimo snapshot
|
|
89
|
-
* disponibile"* (Baby monitor, 2026-09-16).
|
|
89
|
+
* disponibile"* [but why Waking? We should show the last available snapshot] (Baby monitor, 2026-09-16).
|
|
90
90
|
*
|
|
91
91
|
* The marker still has to earn its place — a stale frame shown clean gets
|
|
92
92
|
* mistaken for live, which is the reason the treatment exists at all. A band
|
|
@@ -88,7 +88,7 @@ function buildCourtesySvg(spec) {
|
|
|
88
88
|
* "remains visible underneath". A 38 % view of a dark room is not a view of it,
|
|
89
89
|
* and the operator read the result as a placeholder rather than as their own
|
|
90
90
|
* camera: *"ma perché Waking? Dovremmo mostrare l'ultimo snapshot
|
|
91
|
-
* disponibile"* (Baby monitor, 2026-09-16).
|
|
91
|
+
* disponibile"* [but why Waking? We should show the last available snapshot] (Baby monitor, 2026-09-16).
|
|
92
92
|
*
|
|
93
93
|
* The marker still has to earn its place — a stale frame shown clean gets
|
|
94
94
|
* mistaken for live, which is the reason the treatment exists at all. A band
|