@camstack/addon-pipeline-orchestrator 1.2.630 → 1.2.631
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/CHANGELOG.md +12 -0
- package/README.md +19 -0
- package/dist/_stub.js +2 -2
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_orchestrator_widgets-WH0qcOc8.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_orchestrator_widgets-B749Uhfl.mjs} +2 -2
- package/dist/_virtual_mf___mfe_internal__addon_pipeline_orchestrator_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-D0o6BdcQ.mjs +26 -0
- package/dist/_virtual_mf___mfe_internal__addon_pipeline_orchestrator_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-E1Gh6b6l.mjs +26 -0
- package/dist/{hostInit-DSNLXrd-.mjs → hostInit-BPB2Gtx5.mjs} +2 -2
- package/dist/index.js +144 -7
- package/dist/index.mjs +144 -7
- package/dist/remoteEntry.js +1 -1
- package/package.json +4 -2
- package/dist/_virtual_mf___mfe_internal__addon_pipeline_orchestrator_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DQrrtzuY.mjs +0 -26
- package/dist/_virtual_mf___mfe_internal__addon_pipeline_orchestrator_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-DCSiBW8I.mjs +0 -26
package/dist/index.js
CHANGED
|
@@ -30,7 +30,7 @@ node_fs = __toESM(node_fs);
|
|
|
30
30
|
let node_path = require("node:path");
|
|
31
31
|
node_path = __toESM(node_path);
|
|
32
32
|
let node_url = require("node:url");
|
|
33
|
-
//#region ../types/dist/event-category-
|
|
33
|
+
//#region ../types/dist/event-category-CT-hz5Rb.mjs
|
|
34
34
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
35
35
|
EventCategory["SystemBoot"] = "system.boot";
|
|
36
36
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -356,6 +356,14 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
356
356
|
/** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
|
|
357
357
|
EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
|
|
358
358
|
/**
|
|
359
|
+
* A camera's package LLM confirm has failed closed three times in a row
|
|
360
|
+
* (D931, 2026-10-26). One edge per camera until
|
|
361
|
+
* {@link PipelinePackageLlmAnswered}.
|
|
362
|
+
*/
|
|
363
|
+
EventCategory["PipelinePackageLlmSilent"] = "pipeline.package-llm-silent";
|
|
364
|
+
/** The recovery edge of {@link PipelinePackageLlmSilent}: a confirm returned yes or no. */
|
|
365
|
+
EventCategory["PipelinePackageLlmAnswered"] = "pipeline.package-llm-answered";
|
|
366
|
+
/**
|
|
359
367
|
* Per-camera pipeline config was mutated by the orchestrator
|
|
360
368
|
* (a settings change via `setAgentInferenceDevices` /
|
|
361
369
|
* `setCameraStepToggle` / `setCameraStepSettings`). Orchestrator
|
|
@@ -5598,7 +5606,7 @@ var ZodIssueCode = {
|
|
|
5598
5606
|
var ZodFirstPartyTypeKind;
|
|
5599
5607
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5600
5608
|
//#endregion
|
|
5601
|
-
//#region ../types/dist/sleep-
|
|
5609
|
+
//#region ../types/dist/sleep-bykKrTgu.mjs
|
|
5602
5610
|
/**
|
|
5603
5611
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5604
5612
|
* window to float samples (D455).
|
|
@@ -9505,6 +9513,7 @@ var CAP_NAMES = Object.freeze([
|
|
|
9505
9513
|
"filesystem-browse",
|
|
9506
9514
|
"flood",
|
|
9507
9515
|
"gas",
|
|
9516
|
+
"group-commands",
|
|
9508
9517
|
"group-status",
|
|
9509
9518
|
"heating-valve",
|
|
9510
9519
|
"humidifier",
|
|
@@ -11703,7 +11712,7 @@ function errMsg$2(err) {
|
|
|
11703
11712
|
return String(err);
|
|
11704
11713
|
}
|
|
11705
11714
|
//#endregion
|
|
11706
|
-
//#region ../types/dist/composition-
|
|
11715
|
+
//#region ../types/dist/composition-OhpuespA.mjs
|
|
11707
11716
|
/**
|
|
11708
11717
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
11709
11718
|
*
|
|
@@ -12611,7 +12620,9 @@ var GROUP_TEMPLATE_IDS = [
|
|
|
12611
12620
|
"leak",
|
|
12612
12621
|
"smoke",
|
|
12613
12622
|
"occupancy",
|
|
12614
|
-
"binary"
|
|
12623
|
+
"binary",
|
|
12624
|
+
"switch",
|
|
12625
|
+
"light"
|
|
12615
12626
|
];
|
|
12616
12627
|
var NUMERIC_AGGREGATES = [
|
|
12617
12628
|
"mean",
|
|
@@ -12621,6 +12632,8 @@ var NUMERIC_AGGREGATES = [
|
|
|
12621
12632
|
"sum"
|
|
12622
12633
|
];
|
|
12623
12634
|
var BINARY_AGGREGATES = ["any", "all"];
|
|
12635
|
+
/** How an actuator group decides it is on. Unknown members never count as off. */
|
|
12636
|
+
var ACTIVE_CRITERIA = ["at-least-one", "all"];
|
|
12624
12637
|
var AGGREGATE_REDUCERS = [
|
|
12625
12638
|
"mean",
|
|
12626
12639
|
"median",
|
|
@@ -12632,6 +12645,7 @@ var AGGREGATE_REDUCERS = [
|
|
|
12632
12645
|
];
|
|
12633
12646
|
var GroupTemplateIdSchema = _enum(GROUP_TEMPLATE_IDS);
|
|
12634
12647
|
var AggregateReducerSchema = _enum(AGGREGATE_REDUCERS);
|
|
12648
|
+
var ActiveCriterionSchema = _enum(ACTIVE_CRITERIA);
|
|
12635
12649
|
/** One member. The field is stored so occupancy can name motion or binary. */
|
|
12636
12650
|
var HelperMemberSchema = object({
|
|
12637
12651
|
source: CompositionSourceRefSchema,
|
|
@@ -12642,7 +12656,9 @@ var HelperSpecSchema = discriminatedUnion("kind", [object({
|
|
|
12642
12656
|
kind: literal("group"),
|
|
12643
12657
|
templateId: GroupTemplateIdSchema,
|
|
12644
12658
|
aggregate: AggregateReducerSchema,
|
|
12645
|
-
members: array(HelperMemberSchema).min(1).max(64)
|
|
12659
|
+
members: array(HelperMemberSchema).min(1).max(64),
|
|
12660
|
+
/** Actuator groups only. Readings leave this unset. */
|
|
12661
|
+
active: ActiveCriterionSchema.optional()
|
|
12646
12662
|
})]);
|
|
12647
12663
|
/**
|
|
12648
12664
|
* A COMPOSITION: a device assembled from other devices' state (D659).
|
|
@@ -19537,6 +19553,7 @@ function numeric(input) {
|
|
|
19537
19553
|
family: "numeric",
|
|
19538
19554
|
deviceType: DeviceType.Sensor,
|
|
19539
19555
|
memberDeviceType: DeviceType.Sensor,
|
|
19556
|
+
commandCaps: [],
|
|
19540
19557
|
baseUnit: baseUnitOf(input.quantity),
|
|
19541
19558
|
aggregates: NUMERIC_AGGREGATES,
|
|
19542
19559
|
accept: [{
|
|
@@ -19551,6 +19568,7 @@ function binary(input) {
|
|
|
19551
19568
|
family: "binary",
|
|
19552
19569
|
deviceType: DeviceType.Sensor,
|
|
19553
19570
|
memberDeviceType: DeviceType.Sensor,
|
|
19571
|
+
commandCaps: [],
|
|
19554
19572
|
quantity: "none",
|
|
19555
19573
|
baseUnit: void 0,
|
|
19556
19574
|
aggregates: BINARY_AGGREGATES,
|
|
@@ -19745,9 +19763,47 @@ var GROUP_TEMPLATES = [
|
|
|
19745
19763
|
fieldPath: "on"
|
|
19746
19764
|
}],
|
|
19747
19765
|
companions: [CHANGED]
|
|
19766
|
+
}),
|
|
19767
|
+
actuator({
|
|
19768
|
+
id: "switch",
|
|
19769
|
+
summary: "On when at least one switch is on, or when all of them are. Offline and unknown members are left out of that decision, never read as off, and still receive the command.",
|
|
19770
|
+
deviceType: DeviceType.Switch,
|
|
19771
|
+
outputCap: "switch",
|
|
19772
|
+
commandCaps: ["switch"]
|
|
19773
|
+
}),
|
|
19774
|
+
actuator({
|
|
19775
|
+
id: "light",
|
|
19776
|
+
summary: "On when at least one light is on, or when all of them are. Brightness and colour are offered only when every member has them. A command is not sent to a member that lacks it.",
|
|
19777
|
+
deviceType: DeviceType.Light,
|
|
19778
|
+
outputCap: "switch",
|
|
19779
|
+
commandCaps: [
|
|
19780
|
+
"switch",
|
|
19781
|
+
"brightness",
|
|
19782
|
+
"color"
|
|
19783
|
+
]
|
|
19748
19784
|
})
|
|
19749
19785
|
];
|
|
19786
|
+
function actuator(input) {
|
|
19787
|
+
return {
|
|
19788
|
+
...input,
|
|
19789
|
+
family: "actuator",
|
|
19790
|
+
role: void 0,
|
|
19791
|
+
memberDeviceType: input.deviceType,
|
|
19792
|
+
outputField: "on",
|
|
19793
|
+
quantity: "none",
|
|
19794
|
+
baseUnit: void 0,
|
|
19795
|
+
aggregates: BINARY_AGGREGATES,
|
|
19796
|
+
defaultAggregate: "any",
|
|
19797
|
+
empty: "offline",
|
|
19798
|
+
accept: [{
|
|
19799
|
+
cap: "switch",
|
|
19800
|
+
fieldPath: "on"
|
|
19801
|
+
}],
|
|
19802
|
+
companions: [CHANGED]
|
|
19803
|
+
};
|
|
19804
|
+
}
|
|
19750
19805
|
new Map(GROUP_TEMPLATES.map((template) => [template.id, template]));
|
|
19806
|
+
DeviceFeature.LightColorRgb, DeviceFeature.LightColorHsv, DeviceFeature.LightColorMired;
|
|
19751
19807
|
`${COMPOSED_DEVICE_STABLE_ID_PREFIX}`;
|
|
19752
19808
|
/**
|
|
19753
19809
|
* What a composition may BUILD on a device type (G2, D676): the caps a new
|
|
@@ -46582,6 +46638,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
46582
46638
|
"detection-blind",
|
|
46583
46639
|
"motion-noisy",
|
|
46584
46640
|
"motion-calm",
|
|
46641
|
+
"package-llm-silent",
|
|
46642
|
+
"package-llm-answered",
|
|
46585
46643
|
"recording-stalled",
|
|
46586
46644
|
"recording-healthy",
|
|
46587
46645
|
"recording-degraded",
|
|
@@ -58519,6 +58577,28 @@ var PackageVersionInfoSchema = object({
|
|
|
58519
58577
|
deprecated: string().optional(),
|
|
58520
58578
|
distTags: array(string()).readonly()
|
|
58521
58579
|
});
|
|
58580
|
+
/**
|
|
58581
|
+
* One published document. `ok` is markdown from the registry. `missing` means
|
|
58582
|
+
* the registry answered and the file was not there. `error` is a registry or
|
|
58583
|
+
* tarball failure — never an empty string standing in for either.
|
|
58584
|
+
*/
|
|
58585
|
+
var PackageDocBodySchema = discriminatedUnion("status", [
|
|
58586
|
+
object({
|
|
58587
|
+
status: literal("ok"),
|
|
58588
|
+
markdown: string()
|
|
58589
|
+
}),
|
|
58590
|
+
object({ status: literal("missing") }),
|
|
58591
|
+
object({
|
|
58592
|
+
status: literal("error"),
|
|
58593
|
+
message: string()
|
|
58594
|
+
})
|
|
58595
|
+
]);
|
|
58596
|
+
var PackageDocsSchema = object({
|
|
58597
|
+
name: string(),
|
|
58598
|
+
version: string(),
|
|
58599
|
+
readme: PackageDocBodySchema,
|
|
58600
|
+
changelog: PackageDocBodySchema
|
|
58601
|
+
});
|
|
58522
58602
|
var SearchResultSchema = object({
|
|
58523
58603
|
name: string(),
|
|
58524
58604
|
version: string(),
|
|
@@ -58737,7 +58817,10 @@ method(object({ nodeId: string().optional() }).optional(), array(AddonListItemSc
|
|
|
58737
58817
|
}), object({ success: literal(true) }), {
|
|
58738
58818
|
kind: "mutation",
|
|
58739
58819
|
auth: "admin"
|
|
58740
|
-
}), method(object({ name: string() }), array(PackageVersionInfoSchema).readonly()), method(object({
|
|
58820
|
+
}), method(object({ name: string() }), array(PackageVersionInfoSchema).readonly()), method(object({
|
|
58821
|
+
name: string().min(1),
|
|
58822
|
+
version: string().min(1).optional()
|
|
58823
|
+
}), PackageDocsSchema, { auth: "admin" }), method(object({ addonId: string() }), RestartAddonResultSchema, {
|
|
58741
58824
|
kind: "mutation",
|
|
58742
58825
|
auth: "admin"
|
|
58743
58826
|
}), method(object({ packageName: string() }), object({ success: literal(true) }), {
|
|
@@ -60768,6 +60851,18 @@ object({
|
|
|
60768
60851
|
lastChangedAt: number()
|
|
60769
60852
|
});
|
|
60770
60853
|
DeviceType.Sensor;
|
|
60854
|
+
object({
|
|
60855
|
+
/** One row per member that has been commanded. A later command replaces that member's row. */
|
|
60856
|
+
results: array(object({
|
|
60857
|
+
deviceId: number().int().nonnegative(),
|
|
60858
|
+
cap: string().min(1),
|
|
60859
|
+
method: string().min(1),
|
|
60860
|
+
ok: boolean(),
|
|
60861
|
+
error: string().optional(),
|
|
60862
|
+
/** Ms epoch of the attempt. */
|
|
60863
|
+
at: number()
|
|
60864
|
+
})) });
|
|
60865
|
+
DeviceType.Switch, DeviceType.Light;
|
|
60771
60866
|
object({
|
|
60772
60867
|
/** Members whose current value entered the aggregate. */
|
|
60773
60868
|
included: number().int().nonnegative().meta(readingMeta("count", {
|
|
@@ -60785,7 +60880,7 @@ object({
|
|
|
60785
60880
|
label: "Members"
|
|
60786
60881
|
}))
|
|
60787
60882
|
});
|
|
60788
|
-
DeviceType.Sensor;
|
|
60883
|
+
DeviceType.Sensor, DeviceType.Switch, DeviceType.Light;
|
|
60789
60884
|
object({
|
|
60790
60885
|
/** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
|
|
60791
60886
|
position: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
@@ -68792,6 +68887,13 @@ Object.freeze({
|
|
|
68792
68887
|
access: "view",
|
|
68793
68888
|
role: "admin"
|
|
68794
68889
|
},
|
|
68890
|
+
"addons.getPackageDocs": {
|
|
68891
|
+
capName: "addons",
|
|
68892
|
+
capScope: "system",
|
|
68893
|
+
addonId: null,
|
|
68894
|
+
access: "view",
|
|
68895
|
+
role: "admin"
|
|
68896
|
+
},
|
|
68795
68897
|
"addons.getVersions": {
|
|
68796
68898
|
capName: "addons",
|
|
68797
68899
|
capScope: "system",
|
|
@@ -71900,6 +72002,13 @@ Object.freeze({
|
|
|
71900
72002
|
access: "view",
|
|
71901
72003
|
role: "viewer"
|
|
71902
72004
|
},
|
|
72005
|
+
"groupCommands.getStatus": {
|
|
72006
|
+
capName: "group-commands",
|
|
72007
|
+
capScope: "device",
|
|
72008
|
+
addonId: null,
|
|
72009
|
+
access: "view",
|
|
72010
|
+
role: "viewer"
|
|
72011
|
+
},
|
|
71903
72012
|
"groupStatus.getStatus": {
|
|
71904
72013
|
capName: "group-status",
|
|
71905
72014
|
capScope: "device",
|
|
@@ -81729,6 +81838,10 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
81729
81838
|
icon: "flame"
|
|
81730
81839
|
}]
|
|
81731
81840
|
},
|
|
81841
|
+
"group-commands": {
|
|
81842
|
+
scope: "device",
|
|
81843
|
+
noun: t("Group command", "Comando di gruppo")
|
|
81844
|
+
},
|
|
81732
81845
|
"group-status": {
|
|
81733
81846
|
scope: "device",
|
|
81734
81847
|
noun: t("Group", "Gruppo"),
|
|
@@ -83249,6 +83362,11 @@ Object.freeze({
|
|
|
83249
83362
|
form: "single",
|
|
83250
83363
|
optional: false
|
|
83251
83364
|
}],
|
|
83365
|
+
"groupCommands.getStatus": [{
|
|
83366
|
+
name: "deviceId",
|
|
83367
|
+
form: "single",
|
|
83368
|
+
optional: false
|
|
83369
|
+
}],
|
|
83252
83370
|
"groupStatus.getStatus": [{
|
|
83253
83371
|
name: "deviceId",
|
|
83254
83372
|
form: "single",
|
|
@@ -85335,6 +85453,8 @@ new Map(Object.entries({
|
|
|
85335
85453
|
"detection-blind": "device-events",
|
|
85336
85454
|
"motion-noisy": "device-events",
|
|
85337
85455
|
"motion-calm": "device-events",
|
|
85456
|
+
"package-llm-silent": "device-events",
|
|
85457
|
+
"package-llm-answered": "device-events",
|
|
85338
85458
|
"recording-stalled": "device-events",
|
|
85339
85459
|
"recording-healthy": "device-events",
|
|
85340
85460
|
"recording-degraded": "device-events",
|
|
@@ -85418,6 +85538,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
85418
85538
|
label: "Motion without a subject",
|
|
85419
85539
|
kinds: ["motion-noisy", "motion-calm"]
|
|
85420
85540
|
},
|
|
85541
|
+
{
|
|
85542
|
+
id: "package-llm",
|
|
85543
|
+
family: "device-events",
|
|
85544
|
+
label: "Package confirm",
|
|
85545
|
+
kinds: ["package-llm-silent", "package-llm-answered"]
|
|
85546
|
+
},
|
|
85421
85547
|
{
|
|
85422
85548
|
id: "recording",
|
|
85423
85549
|
family: "device-events",
|
|
@@ -85599,6 +85725,8 @@ var DEVICE_EVENTS = [
|
|
|
85599
85725
|
"detection-blind",
|
|
85600
85726
|
"motion-noisy",
|
|
85601
85727
|
"motion-calm",
|
|
85728
|
+
"package-llm-silent",
|
|
85729
|
+
"package-llm-answered",
|
|
85602
85730
|
"recording-stalled",
|
|
85603
85731
|
"recording-healthy",
|
|
85604
85732
|
"recording-degraded",
|
|
@@ -85867,6 +85995,15 @@ new Map([
|
|
|
85867
85995
|
snapshotLabel: "Cameras with constant motion now",
|
|
85868
85996
|
snapshotSection: null
|
|
85869
85997
|
},
|
|
85998
|
+
{
|
|
85999
|
+
id: "package-llm-confirm",
|
|
86000
|
+
family: "device-events",
|
|
86001
|
+
label: "Package confirm (not answering / answering again)",
|
|
86002
|
+
bad: ["package-llm-silent"],
|
|
86003
|
+
recovery: ["package-llm-answered"],
|
|
86004
|
+
snapshotLabel: "Cameras whose package confirm is not answering",
|
|
86005
|
+
snapshotSection: null
|
|
86006
|
+
},
|
|
85870
86007
|
{
|
|
85871
86008
|
id: "recording-health",
|
|
85872
86009
|
family: "device-events",
|
package/dist/index.mjs
CHANGED
|
@@ -2,7 +2,7 @@ import { createHash, randomUUID } from "node:crypto";
|
|
|
2
2
|
import fs from "node:fs";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
|
-
//#region ../types/dist/event-category-
|
|
5
|
+
//#region ../types/dist/event-category-CT-hz5Rb.mjs
|
|
6
6
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
7
7
|
EventCategory["SystemBoot"] = "system.boot";
|
|
8
8
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -328,6 +328,14 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
328
328
|
/** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
|
|
329
329
|
EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
|
|
330
330
|
/**
|
|
331
|
+
* A camera's package LLM confirm has failed closed three times in a row
|
|
332
|
+
* (D931, 2026-10-26). One edge per camera until
|
|
333
|
+
* {@link PipelinePackageLlmAnswered}.
|
|
334
|
+
*/
|
|
335
|
+
EventCategory["PipelinePackageLlmSilent"] = "pipeline.package-llm-silent";
|
|
336
|
+
/** The recovery edge of {@link PipelinePackageLlmSilent}: a confirm returned yes or no. */
|
|
337
|
+
EventCategory["PipelinePackageLlmAnswered"] = "pipeline.package-llm-answered";
|
|
338
|
+
/**
|
|
331
339
|
* Per-camera pipeline config was mutated by the orchestrator
|
|
332
340
|
* (a settings change via `setAgentInferenceDevices` /
|
|
333
341
|
* `setCameraStepToggle` / `setCameraStepSettings`). Orchestrator
|
|
@@ -5570,7 +5578,7 @@ var ZodIssueCode = {
|
|
|
5570
5578
|
var ZodFirstPartyTypeKind;
|
|
5571
5579
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5572
5580
|
//#endregion
|
|
5573
|
-
//#region ../types/dist/sleep-
|
|
5581
|
+
//#region ../types/dist/sleep-bykKrTgu.mjs
|
|
5574
5582
|
/**
|
|
5575
5583
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5576
5584
|
* window to float samples (D455).
|
|
@@ -9477,6 +9485,7 @@ var CAP_NAMES = Object.freeze([
|
|
|
9477
9485
|
"filesystem-browse",
|
|
9478
9486
|
"flood",
|
|
9479
9487
|
"gas",
|
|
9488
|
+
"group-commands",
|
|
9480
9489
|
"group-status",
|
|
9481
9490
|
"heating-valve",
|
|
9482
9491
|
"humidifier",
|
|
@@ -11675,7 +11684,7 @@ function errMsg$2(err) {
|
|
|
11675
11684
|
return String(err);
|
|
11676
11685
|
}
|
|
11677
11686
|
//#endregion
|
|
11678
|
-
//#region ../types/dist/composition-
|
|
11687
|
+
//#region ../types/dist/composition-OhpuespA.mjs
|
|
11679
11688
|
/**
|
|
11680
11689
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
11681
11690
|
*
|
|
@@ -12583,7 +12592,9 @@ var GROUP_TEMPLATE_IDS = [
|
|
|
12583
12592
|
"leak",
|
|
12584
12593
|
"smoke",
|
|
12585
12594
|
"occupancy",
|
|
12586
|
-
"binary"
|
|
12595
|
+
"binary",
|
|
12596
|
+
"switch",
|
|
12597
|
+
"light"
|
|
12587
12598
|
];
|
|
12588
12599
|
var NUMERIC_AGGREGATES = [
|
|
12589
12600
|
"mean",
|
|
@@ -12593,6 +12604,8 @@ var NUMERIC_AGGREGATES = [
|
|
|
12593
12604
|
"sum"
|
|
12594
12605
|
];
|
|
12595
12606
|
var BINARY_AGGREGATES = ["any", "all"];
|
|
12607
|
+
/** How an actuator group decides it is on. Unknown members never count as off. */
|
|
12608
|
+
var ACTIVE_CRITERIA = ["at-least-one", "all"];
|
|
12596
12609
|
var AGGREGATE_REDUCERS = [
|
|
12597
12610
|
"mean",
|
|
12598
12611
|
"median",
|
|
@@ -12604,6 +12617,7 @@ var AGGREGATE_REDUCERS = [
|
|
|
12604
12617
|
];
|
|
12605
12618
|
var GroupTemplateIdSchema = _enum(GROUP_TEMPLATE_IDS);
|
|
12606
12619
|
var AggregateReducerSchema = _enum(AGGREGATE_REDUCERS);
|
|
12620
|
+
var ActiveCriterionSchema = _enum(ACTIVE_CRITERIA);
|
|
12607
12621
|
/** One member. The field is stored so occupancy can name motion or binary. */
|
|
12608
12622
|
var HelperMemberSchema = object({
|
|
12609
12623
|
source: CompositionSourceRefSchema,
|
|
@@ -12614,7 +12628,9 @@ var HelperSpecSchema = discriminatedUnion("kind", [object({
|
|
|
12614
12628
|
kind: literal("group"),
|
|
12615
12629
|
templateId: GroupTemplateIdSchema,
|
|
12616
12630
|
aggregate: AggregateReducerSchema,
|
|
12617
|
-
members: array(HelperMemberSchema).min(1).max(64)
|
|
12631
|
+
members: array(HelperMemberSchema).min(1).max(64),
|
|
12632
|
+
/** Actuator groups only. Readings leave this unset. */
|
|
12633
|
+
active: ActiveCriterionSchema.optional()
|
|
12618
12634
|
})]);
|
|
12619
12635
|
/**
|
|
12620
12636
|
* A COMPOSITION: a device assembled from other devices' state (D659).
|
|
@@ -19509,6 +19525,7 @@ function numeric(input) {
|
|
|
19509
19525
|
family: "numeric",
|
|
19510
19526
|
deviceType: DeviceType.Sensor,
|
|
19511
19527
|
memberDeviceType: DeviceType.Sensor,
|
|
19528
|
+
commandCaps: [],
|
|
19512
19529
|
baseUnit: baseUnitOf(input.quantity),
|
|
19513
19530
|
aggregates: NUMERIC_AGGREGATES,
|
|
19514
19531
|
accept: [{
|
|
@@ -19523,6 +19540,7 @@ function binary(input) {
|
|
|
19523
19540
|
family: "binary",
|
|
19524
19541
|
deviceType: DeviceType.Sensor,
|
|
19525
19542
|
memberDeviceType: DeviceType.Sensor,
|
|
19543
|
+
commandCaps: [],
|
|
19526
19544
|
quantity: "none",
|
|
19527
19545
|
baseUnit: void 0,
|
|
19528
19546
|
aggregates: BINARY_AGGREGATES,
|
|
@@ -19717,9 +19735,47 @@ var GROUP_TEMPLATES = [
|
|
|
19717
19735
|
fieldPath: "on"
|
|
19718
19736
|
}],
|
|
19719
19737
|
companions: [CHANGED]
|
|
19738
|
+
}),
|
|
19739
|
+
actuator({
|
|
19740
|
+
id: "switch",
|
|
19741
|
+
summary: "On when at least one switch is on, or when all of them are. Offline and unknown members are left out of that decision, never read as off, and still receive the command.",
|
|
19742
|
+
deviceType: DeviceType.Switch,
|
|
19743
|
+
outputCap: "switch",
|
|
19744
|
+
commandCaps: ["switch"]
|
|
19745
|
+
}),
|
|
19746
|
+
actuator({
|
|
19747
|
+
id: "light",
|
|
19748
|
+
summary: "On when at least one light is on, or when all of them are. Brightness and colour are offered only when every member has them. A command is not sent to a member that lacks it.",
|
|
19749
|
+
deviceType: DeviceType.Light,
|
|
19750
|
+
outputCap: "switch",
|
|
19751
|
+
commandCaps: [
|
|
19752
|
+
"switch",
|
|
19753
|
+
"brightness",
|
|
19754
|
+
"color"
|
|
19755
|
+
]
|
|
19720
19756
|
})
|
|
19721
19757
|
];
|
|
19758
|
+
function actuator(input) {
|
|
19759
|
+
return {
|
|
19760
|
+
...input,
|
|
19761
|
+
family: "actuator",
|
|
19762
|
+
role: void 0,
|
|
19763
|
+
memberDeviceType: input.deviceType,
|
|
19764
|
+
outputField: "on",
|
|
19765
|
+
quantity: "none",
|
|
19766
|
+
baseUnit: void 0,
|
|
19767
|
+
aggregates: BINARY_AGGREGATES,
|
|
19768
|
+
defaultAggregate: "any",
|
|
19769
|
+
empty: "offline",
|
|
19770
|
+
accept: [{
|
|
19771
|
+
cap: "switch",
|
|
19772
|
+
fieldPath: "on"
|
|
19773
|
+
}],
|
|
19774
|
+
companions: [CHANGED]
|
|
19775
|
+
};
|
|
19776
|
+
}
|
|
19722
19777
|
new Map(GROUP_TEMPLATES.map((template) => [template.id, template]));
|
|
19778
|
+
DeviceFeature.LightColorRgb, DeviceFeature.LightColorHsv, DeviceFeature.LightColorMired;
|
|
19723
19779
|
`${COMPOSED_DEVICE_STABLE_ID_PREFIX}`;
|
|
19724
19780
|
/**
|
|
19725
19781
|
* What a composition may BUILD on a device type (G2, D676): the caps a new
|
|
@@ -46554,6 +46610,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
46554
46610
|
"detection-blind",
|
|
46555
46611
|
"motion-noisy",
|
|
46556
46612
|
"motion-calm",
|
|
46613
|
+
"package-llm-silent",
|
|
46614
|
+
"package-llm-answered",
|
|
46557
46615
|
"recording-stalled",
|
|
46558
46616
|
"recording-healthy",
|
|
46559
46617
|
"recording-degraded",
|
|
@@ -58491,6 +58549,28 @@ var PackageVersionInfoSchema = object({
|
|
|
58491
58549
|
deprecated: string().optional(),
|
|
58492
58550
|
distTags: array(string()).readonly()
|
|
58493
58551
|
});
|
|
58552
|
+
/**
|
|
58553
|
+
* One published document. `ok` is markdown from the registry. `missing` means
|
|
58554
|
+
* the registry answered and the file was not there. `error` is a registry or
|
|
58555
|
+
* tarball failure — never an empty string standing in for either.
|
|
58556
|
+
*/
|
|
58557
|
+
var PackageDocBodySchema = discriminatedUnion("status", [
|
|
58558
|
+
object({
|
|
58559
|
+
status: literal("ok"),
|
|
58560
|
+
markdown: string()
|
|
58561
|
+
}),
|
|
58562
|
+
object({ status: literal("missing") }),
|
|
58563
|
+
object({
|
|
58564
|
+
status: literal("error"),
|
|
58565
|
+
message: string()
|
|
58566
|
+
})
|
|
58567
|
+
]);
|
|
58568
|
+
var PackageDocsSchema = object({
|
|
58569
|
+
name: string(),
|
|
58570
|
+
version: string(),
|
|
58571
|
+
readme: PackageDocBodySchema,
|
|
58572
|
+
changelog: PackageDocBodySchema
|
|
58573
|
+
});
|
|
58494
58574
|
var SearchResultSchema = object({
|
|
58495
58575
|
name: string(),
|
|
58496
58576
|
version: string(),
|
|
@@ -58709,7 +58789,10 @@ method(object({ nodeId: string().optional() }).optional(), array(AddonListItemSc
|
|
|
58709
58789
|
}), object({ success: literal(true) }), {
|
|
58710
58790
|
kind: "mutation",
|
|
58711
58791
|
auth: "admin"
|
|
58712
|
-
}), method(object({ name: string() }), array(PackageVersionInfoSchema).readonly()), method(object({
|
|
58792
|
+
}), method(object({ name: string() }), array(PackageVersionInfoSchema).readonly()), method(object({
|
|
58793
|
+
name: string().min(1),
|
|
58794
|
+
version: string().min(1).optional()
|
|
58795
|
+
}), PackageDocsSchema, { auth: "admin" }), method(object({ addonId: string() }), RestartAddonResultSchema, {
|
|
58713
58796
|
kind: "mutation",
|
|
58714
58797
|
auth: "admin"
|
|
58715
58798
|
}), method(object({ packageName: string() }), object({ success: literal(true) }), {
|
|
@@ -60740,6 +60823,18 @@ object({
|
|
|
60740
60823
|
lastChangedAt: number()
|
|
60741
60824
|
});
|
|
60742
60825
|
DeviceType.Sensor;
|
|
60826
|
+
object({
|
|
60827
|
+
/** One row per member that has been commanded. A later command replaces that member's row. */
|
|
60828
|
+
results: array(object({
|
|
60829
|
+
deviceId: number().int().nonnegative(),
|
|
60830
|
+
cap: string().min(1),
|
|
60831
|
+
method: string().min(1),
|
|
60832
|
+
ok: boolean(),
|
|
60833
|
+
error: string().optional(),
|
|
60834
|
+
/** Ms epoch of the attempt. */
|
|
60835
|
+
at: number()
|
|
60836
|
+
})) });
|
|
60837
|
+
DeviceType.Switch, DeviceType.Light;
|
|
60743
60838
|
object({
|
|
60744
60839
|
/** Members whose current value entered the aggregate. */
|
|
60745
60840
|
included: number().int().nonnegative().meta(readingMeta("count", {
|
|
@@ -60757,7 +60852,7 @@ object({
|
|
|
60757
60852
|
label: "Members"
|
|
60758
60853
|
}))
|
|
60759
60854
|
});
|
|
60760
|
-
DeviceType.Sensor;
|
|
60855
|
+
DeviceType.Sensor, DeviceType.Switch, DeviceType.Light;
|
|
60761
60856
|
object({
|
|
60762
60857
|
/** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
|
|
60763
60858
|
position: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
@@ -68764,6 +68859,13 @@ Object.freeze({
|
|
|
68764
68859
|
access: "view",
|
|
68765
68860
|
role: "admin"
|
|
68766
68861
|
},
|
|
68862
|
+
"addons.getPackageDocs": {
|
|
68863
|
+
capName: "addons",
|
|
68864
|
+
capScope: "system",
|
|
68865
|
+
addonId: null,
|
|
68866
|
+
access: "view",
|
|
68867
|
+
role: "admin"
|
|
68868
|
+
},
|
|
68767
68869
|
"addons.getVersions": {
|
|
68768
68870
|
capName: "addons",
|
|
68769
68871
|
capScope: "system",
|
|
@@ -71872,6 +71974,13 @@ Object.freeze({
|
|
|
71872
71974
|
access: "view",
|
|
71873
71975
|
role: "viewer"
|
|
71874
71976
|
},
|
|
71977
|
+
"groupCommands.getStatus": {
|
|
71978
|
+
capName: "group-commands",
|
|
71979
|
+
capScope: "device",
|
|
71980
|
+
addonId: null,
|
|
71981
|
+
access: "view",
|
|
71982
|
+
role: "viewer"
|
|
71983
|
+
},
|
|
71875
71984
|
"groupStatus.getStatus": {
|
|
71876
71985
|
capName: "group-status",
|
|
71877
71986
|
capScope: "device",
|
|
@@ -81701,6 +81810,10 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
81701
81810
|
icon: "flame"
|
|
81702
81811
|
}]
|
|
81703
81812
|
},
|
|
81813
|
+
"group-commands": {
|
|
81814
|
+
scope: "device",
|
|
81815
|
+
noun: t("Group command", "Comando di gruppo")
|
|
81816
|
+
},
|
|
81704
81817
|
"group-status": {
|
|
81705
81818
|
scope: "device",
|
|
81706
81819
|
noun: t("Group", "Gruppo"),
|
|
@@ -83221,6 +83334,11 @@ Object.freeze({
|
|
|
83221
83334
|
form: "single",
|
|
83222
83335
|
optional: false
|
|
83223
83336
|
}],
|
|
83337
|
+
"groupCommands.getStatus": [{
|
|
83338
|
+
name: "deviceId",
|
|
83339
|
+
form: "single",
|
|
83340
|
+
optional: false
|
|
83341
|
+
}],
|
|
83224
83342
|
"groupStatus.getStatus": [{
|
|
83225
83343
|
name: "deviceId",
|
|
83226
83344
|
form: "single",
|
|
@@ -85307,6 +85425,8 @@ new Map(Object.entries({
|
|
|
85307
85425
|
"detection-blind": "device-events",
|
|
85308
85426
|
"motion-noisy": "device-events",
|
|
85309
85427
|
"motion-calm": "device-events",
|
|
85428
|
+
"package-llm-silent": "device-events",
|
|
85429
|
+
"package-llm-answered": "device-events",
|
|
85310
85430
|
"recording-stalled": "device-events",
|
|
85311
85431
|
"recording-healthy": "device-events",
|
|
85312
85432
|
"recording-degraded": "device-events",
|
|
@@ -85390,6 +85510,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
85390
85510
|
label: "Motion without a subject",
|
|
85391
85511
|
kinds: ["motion-noisy", "motion-calm"]
|
|
85392
85512
|
},
|
|
85513
|
+
{
|
|
85514
|
+
id: "package-llm",
|
|
85515
|
+
family: "device-events",
|
|
85516
|
+
label: "Package confirm",
|
|
85517
|
+
kinds: ["package-llm-silent", "package-llm-answered"]
|
|
85518
|
+
},
|
|
85393
85519
|
{
|
|
85394
85520
|
id: "recording",
|
|
85395
85521
|
family: "device-events",
|
|
@@ -85571,6 +85697,8 @@ var DEVICE_EVENTS = [
|
|
|
85571
85697
|
"detection-blind",
|
|
85572
85698
|
"motion-noisy",
|
|
85573
85699
|
"motion-calm",
|
|
85700
|
+
"package-llm-silent",
|
|
85701
|
+
"package-llm-answered",
|
|
85574
85702
|
"recording-stalled",
|
|
85575
85703
|
"recording-healthy",
|
|
85576
85704
|
"recording-degraded",
|
|
@@ -85839,6 +85967,15 @@ new Map([
|
|
|
85839
85967
|
snapshotLabel: "Cameras with constant motion now",
|
|
85840
85968
|
snapshotSection: null
|
|
85841
85969
|
},
|
|
85970
|
+
{
|
|
85971
|
+
id: "package-llm-confirm",
|
|
85972
|
+
family: "device-events",
|
|
85973
|
+
label: "Package confirm (not answering / answering again)",
|
|
85974
|
+
bad: ["package-llm-silent"],
|
|
85975
|
+
recovery: ["package-llm-answered"],
|
|
85976
|
+
snapshotLabel: "Cameras whose package confirm is not answering",
|
|
85977
|
+
snapshotSection: null
|
|
85978
|
+
},
|
|
85842
85979
|
{
|
|
85843
85980
|
id: "recording-health",
|
|
85844
85981
|
family: "device-events",
|
package/dist/remoteEntry.js
CHANGED
|
@@ -30,7 +30,7 @@ async function d(e) {
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
async function f() {
|
|
33
|
-
return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_orchestrator_widgets-
|
|
33
|
+
return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_orchestrator_widgets-B749Uhfl.mjs")).catch((e) => {
|
|
34
34
|
throw l = void 0, e;
|
|
35
35
|
}), l;
|
|
36
36
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-pipeline-orchestrator",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.631",
|
|
4
4
|
"description": "Hub-side camera-to-agent load balancer — tracks runner capacity and dispatches attachCamera calls to the optimal pipeline-runner instance",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|
|
@@ -75,7 +75,9 @@
|
|
|
75
75
|
},
|
|
76
76
|
"files": [
|
|
77
77
|
"dist",
|
|
78
|
-
"assets"
|
|
78
|
+
"assets",
|
|
79
|
+
"README.md",
|
|
80
|
+
"CHANGELOG.md"
|
|
79
81
|
],
|
|
80
82
|
"scripts": {
|
|
81
83
|
"build": "vite build && vite build --config vite.widgets.config.ts",
|