@camstack/addon-post-analysis 1.2.76 → 1.2.77
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/{dist-BsBjSNIo.js → dist-Bs6oboqZ.js} +89 -5
- package/dist/{dist-CYfG8ulU.mjs → dist-CxeFHSSV.mjs} +89 -5
- package/dist/embedding-encoder/index.js +1 -1
- package/dist/embedding-encoder/index.mjs +1 -1
- package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-DCcRtqVf.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-BP6Na43Q.mjs} +1 -1
- package/dist/pipeline-analytics/{hostInit-sdxJJeWR.mjs → hostInit-DTI0jC8p.mjs} +1 -1
- package/dist/pipeline-analytics/index.js +673 -65
- package/dist/pipeline-analytics/index.mjs +636 -65
- package/dist/pipeline-analytics/remoteEntry.js +1 -1
- package/package.json +1 -1
|
@@ -15040,13 +15040,81 @@ var NcRuleActionsSchema = object({
|
|
|
15040
15040
|
*/
|
|
15041
15041
|
buttons: array(NcRuleNotificationButtonSchema).max(8).optional()
|
|
15042
15042
|
});
|
|
15043
|
+
/**
|
|
15044
|
+
* "This rule applies only while `deviceId` is in one of `states`."
|
|
15045
|
+
*
|
|
15046
|
+
* The states are the DEVICE's own vocabulary — `AlarmState` for a panel,
|
|
15047
|
+
* `on`/`off` for a switch — not a normalised set, because normalising would
|
|
15048
|
+
* make the condition lie about devices whose states have no equivalent.
|
|
15049
|
+
*
|
|
15050
|
+
* An unreadable state does NOT match: see the engine's fail-closed gate. A
|
|
15051
|
+
* condition that fired on "I could not read it" would be worse than no gate.
|
|
15052
|
+
*/
|
|
15053
|
+
var NcDeviceStateConditionSchema = object({
|
|
15054
|
+
deviceId: number().int(),
|
|
15055
|
+
/** Any of these matches. */
|
|
15056
|
+
states: array(string().min(1)).min(1)
|
|
15057
|
+
});
|
|
15058
|
+
/**
|
|
15059
|
+
* "This rule applies only while scene `sceneId` is `matched` / `diverged`."
|
|
15060
|
+
*
|
|
15061
|
+
* A GATE, not a trigger. `occupancy` and `audio` each DISCRIMINATE their rule —
|
|
15062
|
+
* carrying one makes the rule fire on that subject and nothing else. Scene is
|
|
15063
|
+
* the other shape entirely, the `deviceState` shape: it narrows a rule that
|
|
15064
|
+
* already has a trigger ("tell me about a person at the front door, but only
|
|
15065
|
+
* while the bin is still out"). That is why it composes with every delivery
|
|
15066
|
+
* instead of owning one, and why no new `NcDelivery` member and no new subject
|
|
15067
|
+
* kind exist for it — see D159.
|
|
15068
|
+
*
|
|
15069
|
+
* ── Identity ───────────────────────────────────────────────────────────────
|
|
15070
|
+
* `sceneId` is `SceneMonitor.id`, a `randomUUID()` minted by `createScene` —
|
|
15071
|
+
* globally unique, so it needs no device to disambiguate it. `deviceId` is
|
|
15072
|
+
* carried as a HINT for the editor and for the log line, never as part of the
|
|
15073
|
+
* lookup key: a rule whose hint drifted must still gate correctly.
|
|
15074
|
+
*
|
|
15075
|
+
* ── Which boolean ──────────────────────────────────────────────────────────
|
|
15076
|
+
* `latched` ABSENT means "whatever the scene itself says" — `SceneMonitor.emit`
|
|
15077
|
+
* already declares which boolean drives notification rules, and a second knob
|
|
15078
|
+
* that could disagree with it is exactly the D62 failure. Set it only to
|
|
15079
|
+
* override one rule against the scene's own default.
|
|
15080
|
+
*
|
|
15081
|
+
* - LIVE reading (`emit`/`latched` resolve to live): passes iff
|
|
15082
|
+
* `verdict === requiredState`. `unknown` — no reference for this light, view
|
|
15083
|
+
* shifted, no snapshot — passes NEITHER. A scene that cannot judge is not
|
|
15084
|
+
* evidence, in either direction.
|
|
15085
|
+
* - LATCHED reading: passes iff `latched === (requiredState === 'diverged')`.
|
|
15086
|
+
* The latch is a durable fact about the past ("it has diverged since I armed
|
|
15087
|
+
* it"), so a camera that has gone dark does not clear it — that is the whole
|
|
15088
|
+
* reason the operator asked for a latch.
|
|
15089
|
+
*
|
|
15090
|
+
* The gate reads an in-memory mirror (`NcSceneStateCache`) refreshed OFF the
|
|
15091
|
+
* event path, never the cap: D49. A mirror that has never loaded, or a scene it
|
|
15092
|
+
* does not carry, reads absent and the rule does NOT fire — fail closed, and
|
|
15093
|
+
* said out loud in the log rather than dropped in silence.
|
|
15094
|
+
*/
|
|
15095
|
+
var NcSceneConditionSchema = object({
|
|
15096
|
+
/** `SceneMonitor.id` — the uuid the cap mints. The whole lookup key. */
|
|
15097
|
+
sceneId: string().min(1),
|
|
15098
|
+
/** The camera the scene lives on. A hint for the editor and the log line. */
|
|
15099
|
+
deviceId: number().int().optional(),
|
|
15100
|
+
/** The state the scene must be in for the rule to fire. */
|
|
15101
|
+
requiredState: _enum(["matched", "diverged"]),
|
|
15102
|
+
/**
|
|
15103
|
+
* Read the LATCH (`true`) or the LIVE verdict (`false`). Absent = follow the
|
|
15104
|
+
* scene's own `emit` field, which is the only place that decision belongs.
|
|
15105
|
+
*/
|
|
15106
|
+
latched: boolean().optional()
|
|
15107
|
+
});
|
|
15043
15108
|
var NcConditionsSchema = object({
|
|
15044
15109
|
/** Gate on ANOTHER device's current state (the alarm armed, a switch on). */
|
|
15045
|
-
deviceState:
|
|
15046
|
-
|
|
15047
|
-
|
|
15048
|
-
|
|
15049
|
-
|
|
15110
|
+
deviceState: NcDeviceStateConditionSchema.optional(),
|
|
15111
|
+
/**
|
|
15112
|
+
* Gate on a SCENE's state — "only while the bin is still out". Composes with
|
|
15113
|
+
* every trigger (detection, occupancy, audio, sensor, package, track-end);
|
|
15114
|
+
* unlike `occupancy`/`audio` it discriminates nothing. See
|
|
15115
|
+
* {@link NcSceneCondition} and D159.
|
|
15116
|
+
*/
|
|
15117
|
+
scene: NcSceneConditionSchema.optional(),
|
|
15050
15118
|
/** Device scope — absent = all devices. */
|
|
15051
15119
|
devices: array(number()).optional(),
|
|
15052
15120
|
/** Detector class names (any overlap with the record's class set). */
|
|
@@ -15684,6 +15752,7 @@ var NcConditionDescriptorSchema = object({
|
|
|
15684
15752
|
"occupancy",
|
|
15685
15753
|
"audio",
|
|
15686
15754
|
"deviceState",
|
|
15755
|
+
"scene",
|
|
15687
15756
|
"systemEvent"
|
|
15688
15757
|
]),
|
|
15689
15758
|
operator: _enum([
|
|
@@ -16038,6 +16107,21 @@ var NC_CONDITION_CATALOG = [
|
|
|
16038
16107
|
phase: "P2",
|
|
16039
16108
|
description: "Only fire while another device is in one of the chosen states — the alarm armed, a switch on, a contact closed. A state that cannot be read does NOT fire."
|
|
16040
16109
|
},
|
|
16110
|
+
{
|
|
16111
|
+
id: "scene",
|
|
16112
|
+
group: "scope",
|
|
16113
|
+
label: "Scene state",
|
|
16114
|
+
valueType: "scene",
|
|
16115
|
+
operator: "in",
|
|
16116
|
+
appliesTo: [
|
|
16117
|
+
"immediate",
|
|
16118
|
+
"track-end",
|
|
16119
|
+
"device-event",
|
|
16120
|
+
"package-event"
|
|
16121
|
+
],
|
|
16122
|
+
phase: "P3",
|
|
16123
|
+
description: "Only fire while a scene is matched (the baseline is what we see) or diverged (it demonstrably is not) — “tell me about a person at the door, but only while the bin is still out”. A scene that cannot judge, or one this hub has not read yet, does NOT fire."
|
|
16124
|
+
},
|
|
16041
16125
|
{
|
|
16042
16126
|
id: "sensorKinds",
|
|
16043
16127
|
group: "device",
|
|
@@ -15009,13 +15009,81 @@ var NcRuleActionsSchema = object({
|
|
|
15009
15009
|
*/
|
|
15010
15010
|
buttons: array(NcRuleNotificationButtonSchema).max(8).optional()
|
|
15011
15011
|
});
|
|
15012
|
+
/**
|
|
15013
|
+
* "This rule applies only while `deviceId` is in one of `states`."
|
|
15014
|
+
*
|
|
15015
|
+
* The states are the DEVICE's own vocabulary — `AlarmState` for a panel,
|
|
15016
|
+
* `on`/`off` for a switch — not a normalised set, because normalising would
|
|
15017
|
+
* make the condition lie about devices whose states have no equivalent.
|
|
15018
|
+
*
|
|
15019
|
+
* An unreadable state does NOT match: see the engine's fail-closed gate. A
|
|
15020
|
+
* condition that fired on "I could not read it" would be worse than no gate.
|
|
15021
|
+
*/
|
|
15022
|
+
var NcDeviceStateConditionSchema = object({
|
|
15023
|
+
deviceId: number().int(),
|
|
15024
|
+
/** Any of these matches. */
|
|
15025
|
+
states: array(string().min(1)).min(1)
|
|
15026
|
+
});
|
|
15027
|
+
/**
|
|
15028
|
+
* "This rule applies only while scene `sceneId` is `matched` / `diverged`."
|
|
15029
|
+
*
|
|
15030
|
+
* A GATE, not a trigger. `occupancy` and `audio` each DISCRIMINATE their rule —
|
|
15031
|
+
* carrying one makes the rule fire on that subject and nothing else. Scene is
|
|
15032
|
+
* the other shape entirely, the `deviceState` shape: it narrows a rule that
|
|
15033
|
+
* already has a trigger ("tell me about a person at the front door, but only
|
|
15034
|
+
* while the bin is still out"). That is why it composes with every delivery
|
|
15035
|
+
* instead of owning one, and why no new `NcDelivery` member and no new subject
|
|
15036
|
+
* kind exist for it — see D159.
|
|
15037
|
+
*
|
|
15038
|
+
* ── Identity ───────────────────────────────────────────────────────────────
|
|
15039
|
+
* `sceneId` is `SceneMonitor.id`, a `randomUUID()` minted by `createScene` —
|
|
15040
|
+
* globally unique, so it needs no device to disambiguate it. `deviceId` is
|
|
15041
|
+
* carried as a HINT for the editor and for the log line, never as part of the
|
|
15042
|
+
* lookup key: a rule whose hint drifted must still gate correctly.
|
|
15043
|
+
*
|
|
15044
|
+
* ── Which boolean ──────────────────────────────────────────────────────────
|
|
15045
|
+
* `latched` ABSENT means "whatever the scene itself says" — `SceneMonitor.emit`
|
|
15046
|
+
* already declares which boolean drives notification rules, and a second knob
|
|
15047
|
+
* that could disagree with it is exactly the D62 failure. Set it only to
|
|
15048
|
+
* override one rule against the scene's own default.
|
|
15049
|
+
*
|
|
15050
|
+
* - LIVE reading (`emit`/`latched` resolve to live): passes iff
|
|
15051
|
+
* `verdict === requiredState`. `unknown` — no reference for this light, view
|
|
15052
|
+
* shifted, no snapshot — passes NEITHER. A scene that cannot judge is not
|
|
15053
|
+
* evidence, in either direction.
|
|
15054
|
+
* - LATCHED reading: passes iff `latched === (requiredState === 'diverged')`.
|
|
15055
|
+
* The latch is a durable fact about the past ("it has diverged since I armed
|
|
15056
|
+
* it"), so a camera that has gone dark does not clear it — that is the whole
|
|
15057
|
+
* reason the operator asked for a latch.
|
|
15058
|
+
*
|
|
15059
|
+
* The gate reads an in-memory mirror (`NcSceneStateCache`) refreshed OFF the
|
|
15060
|
+
* event path, never the cap: D49. A mirror that has never loaded, or a scene it
|
|
15061
|
+
* does not carry, reads absent and the rule does NOT fire — fail closed, and
|
|
15062
|
+
* said out loud in the log rather than dropped in silence.
|
|
15063
|
+
*/
|
|
15064
|
+
var NcSceneConditionSchema = object({
|
|
15065
|
+
/** `SceneMonitor.id` — the uuid the cap mints. The whole lookup key. */
|
|
15066
|
+
sceneId: string().min(1),
|
|
15067
|
+
/** The camera the scene lives on. A hint for the editor and the log line. */
|
|
15068
|
+
deviceId: number().int().optional(),
|
|
15069
|
+
/** The state the scene must be in for the rule to fire. */
|
|
15070
|
+
requiredState: _enum(["matched", "diverged"]),
|
|
15071
|
+
/**
|
|
15072
|
+
* Read the LATCH (`true`) or the LIVE verdict (`false`). Absent = follow the
|
|
15073
|
+
* scene's own `emit` field, which is the only place that decision belongs.
|
|
15074
|
+
*/
|
|
15075
|
+
latched: boolean().optional()
|
|
15076
|
+
});
|
|
15012
15077
|
var NcConditionsSchema = object({
|
|
15013
15078
|
/** Gate on ANOTHER device's current state (the alarm armed, a switch on). */
|
|
15014
|
-
deviceState:
|
|
15015
|
-
|
|
15016
|
-
|
|
15017
|
-
|
|
15018
|
-
|
|
15079
|
+
deviceState: NcDeviceStateConditionSchema.optional(),
|
|
15080
|
+
/**
|
|
15081
|
+
* Gate on a SCENE's state — "only while the bin is still out". Composes with
|
|
15082
|
+
* every trigger (detection, occupancy, audio, sensor, package, track-end);
|
|
15083
|
+
* unlike `occupancy`/`audio` it discriminates nothing. See
|
|
15084
|
+
* {@link NcSceneCondition} and D159.
|
|
15085
|
+
*/
|
|
15086
|
+
scene: NcSceneConditionSchema.optional(),
|
|
15019
15087
|
/** Device scope — absent = all devices. */
|
|
15020
15088
|
devices: array(number()).optional(),
|
|
15021
15089
|
/** Detector class names (any overlap with the record's class set). */
|
|
@@ -15653,6 +15721,7 @@ var NcConditionDescriptorSchema = object({
|
|
|
15653
15721
|
"occupancy",
|
|
15654
15722
|
"audio",
|
|
15655
15723
|
"deviceState",
|
|
15724
|
+
"scene",
|
|
15656
15725
|
"systemEvent"
|
|
15657
15726
|
]),
|
|
15658
15727
|
operator: _enum([
|
|
@@ -16007,6 +16076,21 @@ var NC_CONDITION_CATALOG = [
|
|
|
16007
16076
|
phase: "P2",
|
|
16008
16077
|
description: "Only fire while another device is in one of the chosen states — the alarm armed, a switch on, a contact closed. A state that cannot be read does NOT fire."
|
|
16009
16078
|
},
|
|
16079
|
+
{
|
|
16080
|
+
id: "scene",
|
|
16081
|
+
group: "scope",
|
|
16082
|
+
label: "Scene state",
|
|
16083
|
+
valueType: "scene",
|
|
16084
|
+
operator: "in",
|
|
16085
|
+
appliesTo: [
|
|
16086
|
+
"immediate",
|
|
16087
|
+
"track-end",
|
|
16088
|
+
"device-event",
|
|
16089
|
+
"package-event"
|
|
16090
|
+
],
|
|
16091
|
+
phase: "P3",
|
|
16092
|
+
description: "Only fire while a scene is matched (the baseline is what we see) or diverged (it demonstrably is not) — “tell me about a person at the door, but only while the bin is still out”. A scene that cannot judge, or one this hub has not read yet, does NOT fire."
|
|
16093
|
+
},
|
|
16010
16094
|
{
|
|
16011
16095
|
id: "sensorKinds",
|
|
16012
16096
|
group: "device",
|
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_dist = require("../dist-
|
|
5
|
+
const require_dist = require("../dist-Bs6oboqZ.js");
|
|
6
6
|
let node_fs = require("node:fs");
|
|
7
7
|
let node_fs$1 = require_dist.__toESM(node_fs, 1);
|
|
8
8
|
node_fs = require_dist.__toESM(node_fs);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Q as hfModelUrl, Y as embeddingEncoderCapability, pt as BaseAddon } from "../dist-
|
|
1
|
+
import { Q as hfModelUrl, Y as embeddingEncoderCapability, pt as BaseAddon } from "../dist-CxeFHSSV.mjs";
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
3
|
import * as fs from "node:fs";
|
|
4
4
|
import "node:fs";
|