@camstack/types 1.2.278 → 1.2.280
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/capabilities/index.d.ts +2 -2
- package/dist/capabilities/notification-rules.cap.d.ts +14 -14
- package/dist/capabilities/osd-manager.cap.d.ts +6 -6
- package/dist/capabilities/pipeline-analytics.cap.d.ts +6 -0
- package/dist/capabilities/pipeline-orchestrator.cap.d.ts +62 -0
- package/dist/generated/addon-api.d.ts +7 -0
- package/dist/generated/method-access-map.d.ts +1 -1
- package/dist/generated/method-device-selectors.d.ts +2 -2
- package/dist/generated/system-proxy.d.ts +1 -1
- package/dist/i18n/state-labels.d.ts +41 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.js +325 -20
- package/dist/index.mjs +313 -21
- package/dist/interfaces/event-bus.d.ts +3 -0
- package/dist/notification/condition-taxonomy.d.ts +12 -0
- package/dist/types/appearance.d.ts +44 -0
- package/dist/types/detection.d.ts +12 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -4990,6 +4990,44 @@ function pickClosestResolution(entries, target) {
|
|
|
4990
4990
|
}])].sort((a, b) => compareToTarget(a.pixels, b.pixels, targetPixels))[0]?.entry;
|
|
4991
4991
|
}
|
|
4992
4992
|
//#endregion
|
|
4993
|
+
//#region src/types/appearance.ts
|
|
4994
|
+
/**
|
|
4995
|
+
* A model-free appearance descriptor of one detection box (D683 §8).
|
|
4996
|
+
*
|
|
4997
|
+
* Computed on the runner from the analysis raster the frame already leased
|
|
4998
|
+
* (`pipeline-runner/appearance-descriptor.ts`), carried on `ObjectDetection`
|
|
4999
|
+
* and mirrored onto the tracker's `SpatialDetection`. A vector about a box,
|
|
5000
|
+
* never pixels (D9/D18). No learned weights, so no licence question (O6).
|
|
5001
|
+
*
|
|
5002
|
+
* Layout: the box shrunk 10 % per side, split into an upper and a lower half;
|
|
5003
|
+
* per half a hue–saturation histogram (8 hue × 4 saturation), a value histogram
|
|
5004
|
+
* (8) and a magnitude-weighted gradient-orientation histogram (8). Each block
|
|
5005
|
+
* is L1-normalised and quantised to integers 0–255. About 300 bytes of JSON.
|
|
5006
|
+
*/
|
|
5007
|
+
var APPEARANCE_DESCRIPTOR_VERSION = 1;
|
|
5008
|
+
var APPEARANCE_BIN_COUNT = 96;
|
|
5009
|
+
var APPEARANCE_BLOCKS = {
|
|
5010
|
+
upperHs: [0, 32],
|
|
5011
|
+
upperV: [32, 40],
|
|
5012
|
+
upperGrad: [40, 48],
|
|
5013
|
+
lowerHs: [48, 80],
|
|
5014
|
+
lowerV: [80, 88],
|
|
5015
|
+
lowerGrad: [88, 96]
|
|
5016
|
+
};
|
|
5017
|
+
/**
|
|
5018
|
+
* Whether appearance may influence anything at all (D683 §3.2, fix round 1
|
|
5019
|
+
* ruling 2026-09-30 on the Task 10 cost-bench STOP): OFF until the
|
|
5020
|
+
* descriptor is calibrated on tapes that carry it (Task 23, review M9).
|
|
5021
|
+
*
|
|
5022
|
+
* This is the ONE authority both addons read — never two settings that
|
|
5023
|
+
* could disagree (CLAUDE.md D62). The tracker's `TrackerV2Config.appearanceResolvesAmbiguity`
|
|
5024
|
+
* default reads it (`addon-post-analysis/pipeline/tracker-v2/types.ts`); the
|
|
5025
|
+
* runner's cost gate reads it too (`addon-pipeline/pipeline-runner/appearance-attach.ts`),
|
|
5026
|
+
* short-circuiting BEFORE any crop, resample or descriptor is computed, so a
|
|
5027
|
+
* disabled camera costs nothing extra per frame.
|
|
5028
|
+
*/
|
|
5029
|
+
var APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT = false;
|
|
5030
|
+
//#endregion
|
|
4993
5031
|
//#region src/types/overlay-layer.ts
|
|
4994
5032
|
var OVERLAY_LAYERS = [
|
|
4995
5033
|
"motion",
|
|
@@ -19012,8 +19050,14 @@ var NcSensorTransitionSchema = zod.z.enum(["raised", "cleared"]);
|
|
|
19012
19050
|
/** Admin-zone membership condition (zone IDs as stamped by the ZoneEngine). */
|
|
19013
19051
|
var NcZoneConditionSchema = zod.z.object({
|
|
19014
19052
|
ids: zod.z.array(zod.z.string().min(1)).min(1),
|
|
19015
|
-
/**
|
|
19016
|
-
|
|
19053
|
+
/**
|
|
19054
|
+
* LEGACY quantifier over `ids`. Absent = `any` (at least one visited), which
|
|
19055
|
+
* is what both editors mean and all they write since D690: "all of" was
|
|
19056
|
+
* removed from the editors because on an immediate rule it asked one
|
|
19057
|
+
* detection to stand in every zone at once. Still ACCEPTED, and `all` still
|
|
19058
|
+
* evaluated, so a stored rule keeps parsing and meaning what it meant.
|
|
19059
|
+
*/
|
|
19060
|
+
match: zod.z.enum(["any", "all"]).optional()
|
|
19017
19061
|
});
|
|
19018
19062
|
/**
|
|
19019
19063
|
* The P1 condition set — a flat AND of groups; absent group = pass;
|
|
@@ -20340,7 +20384,7 @@ var NC_CONDITION_CATALOG = [
|
|
|
20340
20384
|
"package-event"
|
|
20341
20385
|
],
|
|
20342
20386
|
phase: "P1",
|
|
20343
|
-
description: "
|
|
20387
|
+
description: "The zones the subject must be in (included) or never in (excluded)."
|
|
20344
20388
|
},
|
|
20345
20389
|
{
|
|
20346
20390
|
id: "zonesExclude",
|
|
@@ -20363,29 +20407,24 @@ var NC_CONDITION_CATALOG = [
|
|
|
20363
20407
|
options: [
|
|
20364
20408
|
{
|
|
20365
20409
|
value: "",
|
|
20366
|
-
label: "
|
|
20367
|
-
hint: "Entries
|
|
20368
|
-
},
|
|
20369
|
-
{
|
|
20370
|
-
value: "enter",
|
|
20371
|
-
label: "Entered a zone",
|
|
20372
|
-
hint: "The same matches as \"not set\", stated explicitly: entries and non-crossing detections pass, exits do not."
|
|
20410
|
+
label: "Entering",
|
|
20411
|
+
hint: "Entries and ordinary movement; never an exit."
|
|
20373
20412
|
},
|
|
20374
20413
|
{
|
|
20375
20414
|
value: "exit",
|
|
20376
|
-
label: "
|
|
20377
|
-
hint: "
|
|
20415
|
+
label: "Leaving",
|
|
20416
|
+
hint: "Only an exit from a zone."
|
|
20378
20417
|
},
|
|
20379
20418
|
{
|
|
20380
20419
|
value: "any",
|
|
20381
|
-
label: "
|
|
20382
|
-
hint: "
|
|
20420
|
+
label: "Entering or leaving",
|
|
20421
|
+
hint: "Entries, exits and ordinary movement."
|
|
20383
20422
|
}
|
|
20384
20423
|
],
|
|
20385
20424
|
operator: "in",
|
|
20386
20425
|
appliesTo: ["immediate"],
|
|
20387
20426
|
phase: "P1",
|
|
20388
|
-
description: "
|
|
20427
|
+
description: "Which way the subject crosses the zone."
|
|
20389
20428
|
},
|
|
20390
20429
|
{
|
|
20391
20430
|
id: "labelEquals",
|
|
@@ -20522,7 +20561,7 @@ var NC_CONDITION_CATALOG = [
|
|
|
20522
20561
|
"package-event"
|
|
20523
20562
|
],
|
|
20524
20563
|
phase: "P3",
|
|
20525
|
-
description: "Only fire while a scene is matched
|
|
20564
|
+
description: "Only fire while a scene is matched or diverged."
|
|
20526
20565
|
},
|
|
20527
20566
|
{
|
|
20528
20567
|
id: "sensorKinds",
|
|
@@ -24017,13 +24056,19 @@ var pipelineAnalyticsCapability = {
|
|
|
24017
24056
|
*
|
|
24018
24057
|
* Operator-driven from the DI Events page (batch delete). Routes through
|
|
24019
24058
|
* the same widened track-deletion cascade (design §5.2).
|
|
24059
|
+
*
|
|
24060
|
+
* `sparedMediaIds` (D683 Task 14): media rows the cascade LEFT because a
|
|
24061
|
+
* live stationary entry vouches for them (its key frame, owned by a track
|
|
24062
|
+
* that moved and was kept). Released when the entry retires. Optional:
|
|
24063
|
+
* absent from a provider that predates it.
|
|
24020
24064
|
*/
|
|
24021
24065
|
deleteTracks: require_sleep.method(zod.z.object({
|
|
24022
24066
|
deviceId: zod.z.number(),
|
|
24023
24067
|
trackIds: zod.z.array(zod.z.string()).min(1)
|
|
24024
24068
|
}), zod.z.object({
|
|
24025
24069
|
deleted: zod.z.number().int(),
|
|
24026
|
-
failed: zod.z.array(zod.z.string()).readonly()
|
|
24070
|
+
failed: zod.z.array(zod.z.string()).readonly(),
|
|
24071
|
+
sparedMediaIds: zod.z.array(zod.z.number().int()).readonly().optional()
|
|
24027
24072
|
}), {
|
|
24028
24073
|
kind: "mutation",
|
|
24029
24074
|
auth: "admin"
|
|
@@ -27368,6 +27413,42 @@ var SetCameraSensorsInputSchema = zod.z.object({
|
|
|
27368
27413
|
/** `null` removes the attachment: the camera goes back to `not-configured`. */
|
|
27369
27414
|
config: CameraSensorsConfigSchema.nullable()
|
|
27370
27415
|
});
|
|
27416
|
+
/**
|
|
27417
|
+
* Why an early occupancy look (D691) was not scheduled.
|
|
27418
|
+
*
|
|
27419
|
+
* - `unknown-camera` — no session was ever dispatched for it, so there is no
|
|
27420
|
+
* node and no config to attach a burst with.
|
|
27421
|
+
* - `out-of-range` — the ask is negative or further out than the orchestrator
|
|
27422
|
+
* will hold a timer for; the parked-object cadence is the answer there.
|
|
27423
|
+
* - `no-burst-producer` — this build has no burst producer at all.
|
|
27424
|
+
* - `already-looked` — this camera's ONE early look since its last session has
|
|
27425
|
+
* been spent. A look's own burst can re-arm a flickering flip, and a look
|
|
27426
|
+
* per arm would chain a burst every ~30 s forever (review H2); the next
|
|
27427
|
+
* real session re-arms the budget.
|
|
27428
|
+
*/
|
|
27429
|
+
var OccupancyLookRefusalSchema = zod.z.enum([
|
|
27430
|
+
"unknown-camera",
|
|
27431
|
+
"out-of-range",
|
|
27432
|
+
"no-burst-producer",
|
|
27433
|
+
"already-looked"
|
|
27434
|
+
]);
|
|
27435
|
+
/** The input of `requestOccupancyLook` (D691). */
|
|
27436
|
+
var OccupancyLookRequestSchema = zod.z.object({
|
|
27437
|
+
deviceId: zod.z.number().int().nonnegative(),
|
|
27438
|
+
/** How long from NOW until the pending flip's sustain window ends. RELATIVE,
|
|
27439
|
+
* so the caller's clock and the orchestrator's never have to agree. */
|
|
27440
|
+
afterMs: zod.z.number().finite(),
|
|
27441
|
+
/** Why, for the log. */
|
|
27442
|
+
reason: zod.z.string()
|
|
27443
|
+
});
|
|
27444
|
+
/** The answer of `requestOccupancyLook` (D691). */
|
|
27445
|
+
var OccupancyLookAnswerSchema = zod.z.object({
|
|
27446
|
+
scheduled: zod.z.boolean(),
|
|
27447
|
+
/** When `scheduled`: how long until the burst is dialled. */
|
|
27448
|
+
dueInMs: zod.z.number().optional(),
|
|
27449
|
+
/** When not `scheduled`: why. */
|
|
27450
|
+
refusedBecause: OccupancyLookRefusalSchema.optional()
|
|
27451
|
+
});
|
|
27371
27452
|
var pipelineOrchestratorCapability = {
|
|
27372
27453
|
name: "pipeline-orchestrator",
|
|
27373
27454
|
scope: "system",
|
|
@@ -27375,6 +27456,19 @@ var pipelineOrchestratorCapability = {
|
|
|
27375
27456
|
nodeIdMode: "data",
|
|
27376
27457
|
exposesDeviceSettings: true,
|
|
27377
27458
|
methods: {
|
|
27459
|
+
/**
|
|
27460
|
+
* D691 — an occupancy flip is pending on this camera and can commit
|
|
27461
|
+
* `afterMs` from now: dial ONE occupancy burst at the end of its sustain
|
|
27462
|
+
* window instead of leaving the commit to the 300 s parked-object cadence.
|
|
27463
|
+
* Called by the notification centre, the only component that knows a flip
|
|
27464
|
+
* is pending; the dial is the recheck's own (attach on the last session
|
|
27465
|
+
* node, `requestOccupancyBurst`, detach). One pending look per camera; a
|
|
27466
|
+
* session open at the due time is the look, and no burst is dialled.
|
|
27467
|
+
*/
|
|
27468
|
+
requestOccupancyLook: require_sleep.method(OccupancyLookRequestSchema, OccupancyLookAnswerSchema, {
|
|
27469
|
+
kind: "mutation",
|
|
27470
|
+
auth: "admin"
|
|
27471
|
+
}),
|
|
27378
27472
|
/** Internal storage-migration participant lease. While held, dispatch
|
|
27379
27473
|
* requests are accepted as pending but no new runner attachment starts. */
|
|
27380
27474
|
pauseForStorageMigration: require_sleep.method(StorageMigrationLeaseInputSchema, zod.z.object({ paused: zod.z.literal(true) }), {
|
|
@@ -57256,6 +57350,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
57256
57350
|
addonId: null,
|
|
57257
57351
|
access: "delete"
|
|
57258
57352
|
},
|
|
57353
|
+
"pipelineOrchestrator.requestOccupancyLook": {
|
|
57354
|
+
capName: "pipeline-orchestrator",
|
|
57355
|
+
capScope: "system",
|
|
57356
|
+
addonId: null,
|
|
57357
|
+
access: "create"
|
|
57358
|
+
},
|
|
57259
57359
|
"pipelineOrchestrator.resetNodePipelineDefaults": {
|
|
57260
57360
|
capName: "pipeline-orchestrator",
|
|
57261
57361
|
capScope: "system",
|
|
@@ -61383,6 +61483,11 @@ var METHOD_DEVICE_SELECTORS = Object.freeze({
|
|
|
61383
61483
|
form: "single",
|
|
61384
61484
|
optional: false
|
|
61385
61485
|
}],
|
|
61486
|
+
"pipelineOrchestrator.requestOccupancyLook": [{
|
|
61487
|
+
name: "deviceId",
|
|
61488
|
+
form: "single",
|
|
61489
|
+
optional: false
|
|
61490
|
+
}],
|
|
61386
61491
|
"pipelineOrchestrator.resolvePipeline": [{
|
|
61387
61492
|
name: "deviceId",
|
|
61388
61493
|
form: "single",
|
|
@@ -62218,6 +62323,7 @@ var SYSTEM_SCOPE_DEVICE_METHODS = [
|
|
|
62218
62323
|
"pipelineOrchestrator.getCameraSwitches",
|
|
62219
62324
|
"pipelineOrchestrator.getPipelineAssignment",
|
|
62220
62325
|
"pipelineOrchestrator.getPipelineDevicePin",
|
|
62326
|
+
"pipelineOrchestrator.requestOccupancyLook",
|
|
62221
62327
|
"pipelineOrchestrator.resolvePipeline",
|
|
62222
62328
|
"pipelineOrchestrator.setCameraPipelineForAgent",
|
|
62223
62329
|
"pipelineOrchestrator.setCameraSensors",
|
|
@@ -63181,6 +63287,7 @@ function createSystemProxy(api) {
|
|
|
63181
63287
|
getDetectionConfigSchema: (input) => dispatch("pipelineExecutor", "getDetectionConfigSchema", "query", input)
|
|
63182
63288
|
},
|
|
63183
63289
|
pipelineOrchestrator: {
|
|
63290
|
+
requestOccupancyLook: (input) => dispatch("pipelineOrchestrator", "requestOccupancyLook", "mutation", input),
|
|
63184
63291
|
pauseForStorageMigration: (input) => dispatch("pipelineOrchestrator", "pauseForStorageMigration", "mutation", input),
|
|
63185
63292
|
resumeForStorageMigration: (input) => dispatch("pipelineOrchestrator", "resumeForStorageMigration", "mutation", input),
|
|
63186
63293
|
rebalance: (input) => dispatch("pipelineOrchestrator", "rebalance", "mutation", input),
|
|
@@ -63939,6 +64046,27 @@ function pickerForCondition(conditionId, taxonomy) {
|
|
|
63939
64046
|
}
|
|
63940
64047
|
return null;
|
|
63941
64048
|
}
|
|
64049
|
+
/** The taxonomy group the class picker appends the audio kinds under. */
|
|
64050
|
+
var AUDIO_GROUP_KEY = "audio";
|
|
64051
|
+
/**
|
|
64052
|
+
* The class picker a RULE's class scope uses: {@link pickerForCondition}'s
|
|
64053
|
+
* `classes` vocabulary WITHOUT the audio group (R13, D690).
|
|
64054
|
+
*
|
|
64055
|
+
* A detection rule that picked a sound there became the legacy one-sample audio
|
|
64056
|
+
* rule and broke itself; sounds are authored on a Sound rule
|
|
64057
|
+
* (`conditions.audio`). The plain `classes` picker keeps the audio group for
|
|
64058
|
+
* the surfaces where a sound IS a class — a snooze, a report, the simulator.
|
|
64059
|
+
*/
|
|
64060
|
+
function pickerForRuleClasses(taxonomy) {
|
|
64061
|
+
const picker = pickerForCondition("classes", taxonomy);
|
|
64062
|
+
if (picker === null) return null;
|
|
64063
|
+
const groups = picker.groups.filter((group) => group.key !== AUDIO_GROUP_KEY);
|
|
64064
|
+
return groups.length > 0 ? { groups } : null;
|
|
64065
|
+
}
|
|
64066
|
+
/** An audio kind (`audio-*`) — the one prefix every sound class carries. */
|
|
64067
|
+
function isAudioClassName(name) {
|
|
64068
|
+
return name.trim().toLowerCase().startsWith(`${AUDIO_GROUP_KEY}-`);
|
|
64069
|
+
}
|
|
63942
64070
|
/** All option values across a picker's groups (for custom-value detection). */
|
|
63943
64071
|
function knownValues(picker) {
|
|
63944
64072
|
const set = /* @__PURE__ */ new Set();
|
|
@@ -64524,7 +64652,7 @@ var NC_RULE_KIND_SPECS = [
|
|
|
64524
64652
|
{
|
|
64525
64653
|
kind: "detection",
|
|
64526
64654
|
label: "Conditions",
|
|
64527
|
-
excluded: {},
|
|
64655
|
+
excluded: { audio: "A detection rule fires on what the camera SAW. Sounds are a Sound rule of their own — adding one here turned the rule into a sound rule and dropped every detection condition." },
|
|
64528
64656
|
editable: true,
|
|
64529
64657
|
carriesMedia: true,
|
|
64530
64658
|
carriesSubjectCrop: true
|
|
@@ -64532,7 +64660,7 @@ var NC_RULE_KIND_SPECS = [
|
|
|
64532
64660
|
{
|
|
64533
64661
|
kind: "sensor",
|
|
64534
64662
|
label: "Conditions",
|
|
64535
|
-
/**
|
|
64663
|
+
/** `occupancy` is still offered here: authoring it converts a sensor rule into an occupancy rule. */
|
|
64536
64664
|
excluded: {},
|
|
64537
64665
|
editable: true,
|
|
64538
64666
|
carriesMedia: true,
|
|
@@ -64881,7 +65009,7 @@ function ruleSeedForSection(section) {
|
|
|
64881
65009
|
};
|
|
64882
65010
|
default: return {
|
|
64883
65011
|
delivery: "immediate",
|
|
64884
|
-
conditions: {}
|
|
65012
|
+
conditions: { source: "pipeline" }
|
|
64885
65013
|
};
|
|
64886
65014
|
}
|
|
64887
65015
|
}
|
|
@@ -66283,6 +66411,170 @@ function packagePickerItems(packages) {
|
|
|
66283
66411
|
return [...pinned, ...addons];
|
|
66284
66412
|
}
|
|
66285
66413
|
//#endregion
|
|
66414
|
+
//#region src/i18n/state-labels.ts
|
|
66415
|
+
/** Every key the dictionary answers for, in a stable order. */
|
|
66416
|
+
var STATE_LABEL_KEYS = [
|
|
66417
|
+
"disarmed",
|
|
66418
|
+
"armed_home",
|
|
66419
|
+
"armed_away",
|
|
66420
|
+
"armed_night",
|
|
66421
|
+
"armed_vacation",
|
|
66422
|
+
"armed_custom_bypass",
|
|
66423
|
+
"arming",
|
|
66424
|
+
"disarming",
|
|
66425
|
+
"pending",
|
|
66426
|
+
"triggered",
|
|
66427
|
+
"open",
|
|
66428
|
+
"opening",
|
|
66429
|
+
"closing",
|
|
66430
|
+
"closed",
|
|
66431
|
+
"stopped",
|
|
66432
|
+
"locked",
|
|
66433
|
+
"unlocked",
|
|
66434
|
+
"locking",
|
|
66435
|
+
"unlocking",
|
|
66436
|
+
"jammed",
|
|
66437
|
+
"on",
|
|
66438
|
+
"off",
|
|
66439
|
+
"home",
|
|
66440
|
+
"not_home",
|
|
66441
|
+
"matched",
|
|
66442
|
+
"diverged",
|
|
66443
|
+
"unknown",
|
|
66444
|
+
"latched",
|
|
66445
|
+
"live"
|
|
66446
|
+
];
|
|
66447
|
+
var STATE_LABELS = {
|
|
66448
|
+
disarmed: {
|
|
66449
|
+
en: "Disarmed",
|
|
66450
|
+
it: "Disinserito"
|
|
66451
|
+
},
|
|
66452
|
+
armed_home: {
|
|
66453
|
+
en: "Armed (home)",
|
|
66454
|
+
it: "Inserito (in casa)"
|
|
66455
|
+
},
|
|
66456
|
+
armed_away: {
|
|
66457
|
+
en: "Armed (away)",
|
|
66458
|
+
it: "Inserito (fuori casa)"
|
|
66459
|
+
},
|
|
66460
|
+
armed_night: {
|
|
66461
|
+
en: "Armed (night)",
|
|
66462
|
+
it: "Inserito (notte)"
|
|
66463
|
+
},
|
|
66464
|
+
armed_vacation: {
|
|
66465
|
+
en: "Armed (vacation)",
|
|
66466
|
+
it: "Inserito (vacanza)"
|
|
66467
|
+
},
|
|
66468
|
+
armed_custom_bypass: {
|
|
66469
|
+
en: "Armed (custom)",
|
|
66470
|
+
it: "Inserito (personalizzato)"
|
|
66471
|
+
},
|
|
66472
|
+
arming: {
|
|
66473
|
+
en: "Arming",
|
|
66474
|
+
it: "In inserimento"
|
|
66475
|
+
},
|
|
66476
|
+
disarming: {
|
|
66477
|
+
en: "Disarming",
|
|
66478
|
+
it: "In disinserimento"
|
|
66479
|
+
},
|
|
66480
|
+
pending: {
|
|
66481
|
+
en: "Pending (entry delay)",
|
|
66482
|
+
it: "In attesa (ritardo ingresso)"
|
|
66483
|
+
},
|
|
66484
|
+
triggered: {
|
|
66485
|
+
en: "Triggered",
|
|
66486
|
+
it: "In allarme"
|
|
66487
|
+
},
|
|
66488
|
+
open: {
|
|
66489
|
+
en: "Open",
|
|
66490
|
+
it: "Aperto"
|
|
66491
|
+
},
|
|
66492
|
+
opening: {
|
|
66493
|
+
en: "Opening",
|
|
66494
|
+
it: "In apertura"
|
|
66495
|
+
},
|
|
66496
|
+
closing: {
|
|
66497
|
+
en: "Closing",
|
|
66498
|
+
it: "In chiusura"
|
|
66499
|
+
},
|
|
66500
|
+
closed: {
|
|
66501
|
+
en: "Closed",
|
|
66502
|
+
it: "Chiuso"
|
|
66503
|
+
},
|
|
66504
|
+
stopped: {
|
|
66505
|
+
en: "Stopped",
|
|
66506
|
+
it: "Fermo"
|
|
66507
|
+
},
|
|
66508
|
+
locked: {
|
|
66509
|
+
en: "Locked",
|
|
66510
|
+
it: "Bloccata"
|
|
66511
|
+
},
|
|
66512
|
+
unlocked: {
|
|
66513
|
+
en: "Unlocked",
|
|
66514
|
+
it: "Sbloccata"
|
|
66515
|
+
},
|
|
66516
|
+
locking: {
|
|
66517
|
+
en: "Locking",
|
|
66518
|
+
it: "In blocco"
|
|
66519
|
+
},
|
|
66520
|
+
unlocking: {
|
|
66521
|
+
en: "Unlocking",
|
|
66522
|
+
it: "In sblocco"
|
|
66523
|
+
},
|
|
66524
|
+
jammed: {
|
|
66525
|
+
en: "Jammed",
|
|
66526
|
+
it: "Inceppata"
|
|
66527
|
+
},
|
|
66528
|
+
on: {
|
|
66529
|
+
en: "On",
|
|
66530
|
+
it: "Acceso"
|
|
66531
|
+
},
|
|
66532
|
+
off: {
|
|
66533
|
+
en: "Off",
|
|
66534
|
+
it: "Spento"
|
|
66535
|
+
},
|
|
66536
|
+
home: {
|
|
66537
|
+
en: "Home",
|
|
66538
|
+
it: "In casa"
|
|
66539
|
+
},
|
|
66540
|
+
not_home: {
|
|
66541
|
+
en: "Away",
|
|
66542
|
+
it: "Fuori casa"
|
|
66543
|
+
},
|
|
66544
|
+
matched: {
|
|
66545
|
+
en: "Matched (as captured)",
|
|
66546
|
+
it: "Corrisponde (come acquisita)"
|
|
66547
|
+
},
|
|
66548
|
+
diverged: {
|
|
66549
|
+
en: "Diverged (changed)",
|
|
66550
|
+
it: "Diversa (cambiata)"
|
|
66551
|
+
},
|
|
66552
|
+
unknown: {
|
|
66553
|
+
en: "Cannot judge",
|
|
66554
|
+
it: "Non valutabile"
|
|
66555
|
+
},
|
|
66556
|
+
latched: {
|
|
66557
|
+
en: "Latched",
|
|
66558
|
+
it: "Memorizzato"
|
|
66559
|
+
},
|
|
66560
|
+
live: {
|
|
66561
|
+
en: "Live",
|
|
66562
|
+
it: "In tempo reale"
|
|
66563
|
+
}
|
|
66564
|
+
};
|
|
66565
|
+
var KEY_SET = new Set(STATE_LABEL_KEYS);
|
|
66566
|
+
/** Is `key` one the dictionary answers for? An own key only — never `toString`. */
|
|
66567
|
+
function isStateLabelKey(key) {
|
|
66568
|
+
return KEY_SET.has(key);
|
|
66569
|
+
}
|
|
66570
|
+
/**
|
|
66571
|
+
* The human label of a state word in `locale`, or the word itself when the
|
|
66572
|
+
* dictionary does not know it. Never throws.
|
|
66573
|
+
*/
|
|
66574
|
+
function stateLabel(key, locale) {
|
|
66575
|
+
return isStateLabelKey(key) ? STATE_LABELS[key][locale] : key;
|
|
66576
|
+
}
|
|
66577
|
+
//#endregion
|
|
66286
66578
|
//#region src/notification/timelapse-rule.ts
|
|
66287
66579
|
/**
|
|
66288
66580
|
* TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
|
|
@@ -68704,6 +68996,10 @@ exports.ACCESSORY_LABEL = ACCESSORY_LABEL;
|
|
|
68704
68996
|
exports.ACCESS_ROLES = ACCESS_ROLES;
|
|
68705
68997
|
exports.ALEXA_EGRESS_PROFILE = ALEXA_EGRESS_PROFILE;
|
|
68706
68998
|
exports.ALL_CAPABILITY_DEFINITIONS = ALL_CAPABILITY_DEFINITIONS;
|
|
68999
|
+
exports.APPEARANCE_BIN_COUNT = APPEARANCE_BIN_COUNT;
|
|
69000
|
+
exports.APPEARANCE_BLOCKS = APPEARANCE_BLOCKS;
|
|
69001
|
+
exports.APPEARANCE_DESCRIPTOR_VERSION = APPEARANCE_DESCRIPTOR_VERSION;
|
|
69002
|
+
exports.APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT = APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT;
|
|
68707
69003
|
exports.APPLE_SA_TO_MACRO = APPLE_SA_TO_MACRO;
|
|
68708
69004
|
exports.ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT = ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT;
|
|
68709
69005
|
exports.AUDIO_ANALYSIS_CAP_NAME = AUDIO_ANALYSIS_CAP_NAME;
|
|
@@ -69635,6 +69931,9 @@ exports.OWNER_ONLY_EVENT_CATEGORIES = require_event_category.OWNER_ONLY_EVENT_CA
|
|
|
69635
69931
|
exports.OauthIntegrationDescriptorSchema = OauthIntegrationDescriptorSchema;
|
|
69636
69932
|
exports.ObjectEventSchema = ObjectEventSchema;
|
|
69637
69933
|
exports.OccupancyBurstRefusalSchema = OccupancyBurstRefusalSchema;
|
|
69934
|
+
exports.OccupancyLookAnswerSchema = OccupancyLookAnswerSchema;
|
|
69935
|
+
exports.OccupancyLookRefusalSchema = OccupancyLookRefusalSchema;
|
|
69936
|
+
exports.OccupancyLookRequestSchema = OccupancyLookRequestSchema;
|
|
69638
69937
|
exports.OnboardFieldSupportSchema = OnboardFieldSupportSchema;
|
|
69639
69938
|
exports.OnboardRecordTrackSchema = OnboardRecordTrackSchema;
|
|
69640
69939
|
exports.OnboardScheduleSupportSchema = OnboardScheduleSupportSchema;
|
|
@@ -69853,6 +70152,8 @@ exports.SOURCE_CAP_ACTIVE_FIELD = require_composition.SOURCE_CAP_ACTIVE_FIELD;
|
|
|
69853
70152
|
exports.SOURCE_CAP_CHANGED_AT_FIELD = require_composition.SOURCE_CAP_CHANGED_AT_FIELD;
|
|
69854
70153
|
exports.SOURCE_DEVICE_TYPES = require_composition.SOURCE_DEVICE_TYPES;
|
|
69855
70154
|
exports.SOURCE_INFO_METADATA_KEY = SOURCE_INFO_METADATA_KEY;
|
|
70155
|
+
exports.STATE_LABELS = STATE_LABELS;
|
|
70156
|
+
exports.STATE_LABEL_KEYS = STATE_LABEL_KEYS;
|
|
69856
70157
|
exports.STATIONARY_OVERLAY_STYLE = STATIONARY_OVERLAY_STYLE;
|
|
69857
70158
|
exports.STORAGE_ACCESS_FALLBACK = STORAGE_ACCESS_FALLBACK;
|
|
69858
70159
|
exports.STORAGE_BYTES_PER_GB = STORAGE_BYTES_PER_GB;
|
|
@@ -70371,6 +70672,7 @@ exports.invocationFromEncodeProfile = require_composition.invocationFromEncodePr
|
|
|
70371
70672
|
exports.isAgentOnlyPlacement = isAgentOnlyPlacement;
|
|
70372
70673
|
exports.isArrayOutputSchema = isArrayOutputSchema;
|
|
70373
70674
|
exports.isAudioChunkFormat = require_sleep.isAudioChunkFormat;
|
|
70675
|
+
exports.isAudioClassName = isAudioClassName;
|
|
70374
70676
|
exports.isAudioLabelSelected = isAudioLabelSelected;
|
|
70375
70677
|
exports.isAudioRule = isAudioRule;
|
|
70376
70678
|
exports.isBaseConditionKey = isBaseConditionKey;
|
|
@@ -70401,6 +70703,7 @@ exports.isScheduleActive = isScheduleActive;
|
|
|
70401
70703
|
exports.isSecretConfigField = isSecretConfigField;
|
|
70402
70704
|
exports.isSoftwareDecode = require_composition.isSoftwareDecode;
|
|
70403
70705
|
exports.isSourceCap = require_composition.isSourceCap;
|
|
70706
|
+
exports.isStateLabelKey = isStateLabelKey;
|
|
70404
70707
|
exports.isStatefulBuiltin = require_composition.isStatefulBuiltin;
|
|
70405
70708
|
exports.isStorageLocationMode = isStorageLocationMode;
|
|
70406
70709
|
exports.isSystemDelivery = isSystemDelivery;
|
|
@@ -70514,6 +70817,7 @@ exports.pickPreferredRtspEntry = pickPreferredRtspEntry;
|
|
|
70514
70817
|
exports.pickRestartCandidate = pickRestartCandidate;
|
|
70515
70818
|
exports.pickVideoEncoder = require_composition.pickVideoEncoder;
|
|
70516
70819
|
exports.pickerForCondition = pickerForCondition;
|
|
70820
|
+
exports.pickerForRuleClasses = pickerForRuleClasses;
|
|
70517
70821
|
exports.pipelineAnalyticsCapability = pipelineAnalyticsCapability;
|
|
70518
70822
|
exports.pipelineExecutorCapability = pipelineExecutorCapability;
|
|
70519
70823
|
exports.pipelineOrchestratorCapability = pipelineOrchestratorCapability;
|
|
@@ -70627,6 +70931,7 @@ exports.smtpProviderCapability = smtpProviderCapability;
|
|
|
70627
70931
|
exports.snapshotCapability = snapshotCapability;
|
|
70628
70932
|
exports.ssoBridgeCapability = ssoBridgeCapability;
|
|
70629
70933
|
exports.startReachabilityPoll = startReachabilityPoll;
|
|
70934
|
+
exports.stateLabel = stateLabel;
|
|
70630
70935
|
exports.stateVocabularyFor = stateVocabularyFor;
|
|
70631
70936
|
exports.stepModelRunsOnFormat = stepModelRunsOnFormat;
|
|
70632
70937
|
exports.storageCapability = storageCapability;
|