@camstack/addon-osd-manager 0.1.267 → 0.1.269
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/{MotionZonesSettings-3OswGeMl.mjs → MotionZonesSettings-BNpjz5g_.mjs} +2 -2
- package/dist/{PrivacyMaskSettings-CxN7tOH_.mjs → PrivacyMaskSettings-BUUwi7AA.mjs} +4 -4
- package/dist/{SceneMonitorEditor-l9nWTYyI.mjs → SceneMonitorEditor-C8nM8xAb.mjs} +3 -3
- package/dist/_stub.js +4155 -4019
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-DXtR0Eje.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-DyV-DzxR.mjs} +3 -3
- package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CV6YcS56.mjs +26 -0
- package/dist/addon-osd-manager.css +1 -1
- package/dist/{hostInit-DtrBgAfd.mjs → hostInit-FBoYOEXv.mjs} +2 -2
- package/dist/index.js +591 -76
- package/dist/index.mjs +591 -76
- package/dist/{player-overlays-DeO4qjxv.mjs → player-overlays-CfPa7e9_.mjs} +1 -1
- package/dist/remoteEntry.js +1 -1
- package/dist/{responsive-BiymurY0.mjs → responsive-C4D8Hc3L.mjs} +1 -1
- package/dist/{scene-monitor-copy-CXLDSWeP.mjs → scene-monitor-copy-DKL8iV9N.mjs} +1 -1
- package/dist/{square-Vgi9aM6a.mjs → square-C1SY2RoU.mjs} +1 -1
- package/dist/{trash-2-Ccc91Gq3.mjs → trash-2-BTuzBHSh.mjs} +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-BYRSI4Gv.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-BxBkI9w9.mjs} +1 -1
- package/package.json +1 -1
- package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BbmRj6OR.mjs +0 -26
package/dist/index.js
CHANGED
|
@@ -8737,7 +8737,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
8737
8737
|
return DeviceRole;
|
|
8738
8738
|
}({});
|
|
8739
8739
|
//#endregion
|
|
8740
|
-
//#region ../types/dist/composition-
|
|
8740
|
+
//#region ../types/dist/composition-BJ8iAZb3.mjs
|
|
8741
8741
|
/**
|
|
8742
8742
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
8743
8743
|
*
|
|
@@ -8797,7 +8797,7 @@ portable("linux64"), portable("linuxarm64"), portable("macarm64"), portable("mac
|
|
|
8797
8797
|
* ONE table for everyone who asks "is this device HIGH?": the
|
|
8798
8798
|
* recorder's `RecordingTriggers.sensorDeviceIds` trigger, the post-analysis
|
|
8799
8799
|
* sensor markers, the orchestrator's camera-sensors bridge and
|
|
8800
|
-
* the sources of a
|
|
8800
|
+
* the sources of a pulse (`compilePulseOverride`, D936).
|
|
8801
8801
|
* A second copy would diverge at the first cap added, and the symptom — "the
|
|
8802
8802
|
* sensor rings the doorbell but does not record" — is exactly D62.
|
|
8803
8803
|
*
|
|
@@ -15848,6 +15848,13 @@ var ComposerUnreadableBlockSchema = object({
|
|
|
15848
15848
|
/** The parse error, in the operator's words. */
|
|
15849
15849
|
error: string()
|
|
15850
15850
|
});
|
|
15851
|
+
/** A confirmed release the hub did not accept. `deviceId` is the claim's device. */
|
|
15852
|
+
var UnreleasedClaimSchema = object({
|
|
15853
|
+
deviceId: number().int(),
|
|
15854
|
+
capName: string(),
|
|
15855
|
+
owner: string(),
|
|
15856
|
+
error: string()
|
|
15857
|
+
});
|
|
15851
15858
|
method(object({
|
|
15852
15859
|
/** The shared Blocks integration; null until `core-blocks` has reconciled it. */
|
|
15853
15860
|
integrationId: string().nullable(),
|
|
@@ -15857,7 +15864,13 @@ method(object({
|
|
|
15857
15864
|
/** Operator restarts: rebuild these runtimes and re-resolve their sources. Stores nothing (D62). */
|
|
15858
15865
|
restartBlockIds: array(string()),
|
|
15859
15866
|
/** Composition rows that exist but do not parse: held, never withdrawn, reported failed. */
|
|
15860
|
-
unreadableBlocks: array(ComposerUnreadableBlockSchema)
|
|
15867
|
+
unreadableBlocks: array(ComposerUnreadableBlockSchema),
|
|
15868
|
+
/**
|
|
15869
|
+
* Operator-confirmed deletions. Their claims are released on this apply,
|
|
15870
|
+
* before any replacement block claims. A block that merely vanished from the
|
|
15871
|
+
* snapshot is not listed here and still waits for two applies (D49).
|
|
15872
|
+
*/
|
|
15873
|
+
retiredBlockIds: array(string()).optional()
|
|
15861
15874
|
}), object({
|
|
15862
15875
|
blocks: array(object({
|
|
15863
15876
|
blockId: string(),
|
|
@@ -15869,7 +15882,13 @@ method(object({
|
|
|
15869
15882
|
* integration unknown, its own rows unread or read empty once). An empty
|
|
15870
15883
|
* apply the caller owes is paid off only by one the composer acted on (D49).
|
|
15871
15884
|
*/
|
|
15872
|
-
acted: boolean()
|
|
15885
|
+
acted: boolean(),
|
|
15886
|
+
/**
|
|
15887
|
+
* Confirmed releases this apply tried and the hub did not accept. Empty when
|
|
15888
|
+
* every one landed (or there was nothing to hand back). Absent on a result
|
|
15889
|
+
* that never got that far.
|
|
15890
|
+
*/
|
|
15891
|
+
unreleasedClaims: array(UnreleasedClaimSchema).optional()
|
|
15873
15892
|
}), {
|
|
15874
15893
|
kind: "mutation",
|
|
15875
15894
|
auth: "admin"
|
|
@@ -41777,6 +41796,381 @@ var _macroLookup = /* @__PURE__ */ new Map();
|
|
|
41777
41796
|
for (const [k, v] of Object.entries(YAMNET_TO_MACRO.mapping)) _macroLookup.set(k.toLowerCase(), v);
|
|
41778
41797
|
for (const [k, v] of Object.entries(APPLE_SA_TO_MACRO.mapping)) _macroLookup.set(k.toLowerCase(), v);
|
|
41779
41798
|
/**
|
|
41799
|
+
* Palette entry ids (D939). Audio is the one gradient; `audio-*` leaves are
|
|
41800
|
+
* not entries. `heatmapScrub` is a mark, not an event kind.
|
|
41801
|
+
*/
|
|
41802
|
+
var PALETTE_ENTRY_IDS = [
|
|
41803
|
+
"motion",
|
|
41804
|
+
"audio",
|
|
41805
|
+
"recording",
|
|
41806
|
+
"live",
|
|
41807
|
+
"heatmapScrub",
|
|
41808
|
+
"person",
|
|
41809
|
+
"vehicle",
|
|
41810
|
+
"animal",
|
|
41811
|
+
"package",
|
|
41812
|
+
"sensor",
|
|
41813
|
+
"control",
|
|
41814
|
+
"face",
|
|
41815
|
+
"plate",
|
|
41816
|
+
"car",
|
|
41817
|
+
"truck",
|
|
41818
|
+
"bus",
|
|
41819
|
+
"motorcycle",
|
|
41820
|
+
"bicycle",
|
|
41821
|
+
"airplane",
|
|
41822
|
+
"boat",
|
|
41823
|
+
"train",
|
|
41824
|
+
"bird",
|
|
41825
|
+
"dog",
|
|
41826
|
+
"cat",
|
|
41827
|
+
"horse",
|
|
41828
|
+
"sheep",
|
|
41829
|
+
"cow",
|
|
41830
|
+
"elephant",
|
|
41831
|
+
"bear",
|
|
41832
|
+
"zebra",
|
|
41833
|
+
"giraffe",
|
|
41834
|
+
"package-delivered",
|
|
41835
|
+
"package-picked-up",
|
|
41836
|
+
"suitcase",
|
|
41837
|
+
"backpack",
|
|
41838
|
+
"handbag",
|
|
41839
|
+
"contact",
|
|
41840
|
+
"motion-sensor",
|
|
41841
|
+
"smoke",
|
|
41842
|
+
"flood",
|
|
41843
|
+
"gas",
|
|
41844
|
+
"carbon-monoxide",
|
|
41845
|
+
"vibration",
|
|
41846
|
+
"tamper",
|
|
41847
|
+
"presence",
|
|
41848
|
+
"enum-sensor",
|
|
41849
|
+
"device-event",
|
|
41850
|
+
"lock",
|
|
41851
|
+
"cover",
|
|
41852
|
+
"switch",
|
|
41853
|
+
"siren",
|
|
41854
|
+
"button",
|
|
41855
|
+
"doorbell"
|
|
41856
|
+
];
|
|
41857
|
+
var AUDIO_ENTRY_ID = "audio";
|
|
41858
|
+
/** Six rungs, quiet → loud. The opaque end is the entry's hex. */
|
|
41859
|
+
var AUDIO_GRADIENT_ALPHAS = [
|
|
41860
|
+
.3,
|
|
41861
|
+
.42,
|
|
41862
|
+
.55,
|
|
41863
|
+
.7,
|
|
41864
|
+
.85,
|
|
41865
|
+
1
|
|
41866
|
+
];
|
|
41867
|
+
var PALETTE_PRESET_IDS = [
|
|
41868
|
+
"camstack",
|
|
41869
|
+
"high-contrast",
|
|
41870
|
+
"okabe-ito"
|
|
41871
|
+
];
|
|
41872
|
+
/** Frozen palette tables (D939). The spec refuses a table that breaks the rule. */
|
|
41873
|
+
var CAMSTACK_HEX = {
|
|
41874
|
+
motion: "#d946ef",
|
|
41875
|
+
audio: "#059eb8",
|
|
41876
|
+
recording: "#ef4444",
|
|
41877
|
+
live: "#8d7a00",
|
|
41878
|
+
heatmapScrub: "#4b32ff",
|
|
41879
|
+
person: "#11a64c",
|
|
41880
|
+
vehicle: "#3b82f6",
|
|
41881
|
+
animal: "#ea6a09",
|
|
41882
|
+
package: "#924667",
|
|
41883
|
+
sensor: "#624bbc",
|
|
41884
|
+
control: "#944d24",
|
|
41885
|
+
face: "#ed4f8d",
|
|
41886
|
+
plate: "#4b7027",
|
|
41887
|
+
car: "#9684cf",
|
|
41888
|
+
truck: "#0f9b89",
|
|
41889
|
+
bus: "#a734a9",
|
|
41890
|
+
motorcycle: "#c1133a",
|
|
41891
|
+
bicycle: "#0e6a9b",
|
|
41892
|
+
airplane: "#7c9928",
|
|
41893
|
+
boat: "#b17933",
|
|
41894
|
+
train: "#ad6ca3",
|
|
41895
|
+
bird: "#0f7c55",
|
|
41896
|
+
dog: "#c82700",
|
|
41897
|
+
cat: "#7268f2",
|
|
41898
|
+
horse: "#cb795e",
|
|
41899
|
+
sheep: "#b8636b",
|
|
41900
|
+
cow: "#cb2969",
|
|
41901
|
+
elephant: "#1158d2",
|
|
41902
|
+
bear: "#8d5e00",
|
|
41903
|
+
zebra: "#0097d6",
|
|
41904
|
+
giraffe: "#8f61bb",
|
|
41905
|
+
"package-delivered": "#cd3f9b",
|
|
41906
|
+
"package-picked-up": "#388a08",
|
|
41907
|
+
suitcase: "#666800",
|
|
41908
|
+
backpack: "#ec5022",
|
|
41909
|
+
handbag: "#a76ef8",
|
|
41910
|
+
contact: "#ab5a49",
|
|
41911
|
+
"motion-sensor": "#b95d1a",
|
|
41912
|
+
smoke: "#dd3858",
|
|
41913
|
+
flood: "#b31e7d",
|
|
41914
|
+
gas: "#5b70b5",
|
|
41915
|
+
"carbon-monoxide": "#7b4e8e",
|
|
41916
|
+
vibration: "#e65bba",
|
|
41917
|
+
tamper: "#98464b",
|
|
41918
|
+
presence: "#3a9468",
|
|
41919
|
+
"enum-sensor": "#7885f8",
|
|
41920
|
+
"device-event": "#8c43c8",
|
|
41921
|
+
lock: "#649653",
|
|
41922
|
+
cover: "#c67597",
|
|
41923
|
+
switch: "#7a812a",
|
|
41924
|
+
siren: "#ac5d7f",
|
|
41925
|
+
button: "#b276cd",
|
|
41926
|
+
doorbell: "#0087ab"
|
|
41927
|
+
};
|
|
41928
|
+
var CAMSTACK_FALLBACK = [
|
|
41929
|
+
"#b34dc7",
|
|
41930
|
+
"#1d7d34",
|
|
41931
|
+
"#db6b6c",
|
|
41932
|
+
"#a43d29",
|
|
41933
|
+
"#0e6ee6",
|
|
41934
|
+
"#29a10b",
|
|
41935
|
+
"#a98731",
|
|
41936
|
+
"#0181c6"
|
|
41937
|
+
];
|
|
41938
|
+
var HIGH_CONTRAST_HEX = {
|
|
41939
|
+
motion: "#964360",
|
|
41940
|
+
audio: "#23a132",
|
|
41941
|
+
recording: "#2494ca",
|
|
41942
|
+
live: "#bd7e2b",
|
|
41943
|
+
heatmapScrub: "#ad6eea",
|
|
41944
|
+
person: "#62611e",
|
|
41945
|
+
vehicle: "#f4534c",
|
|
41946
|
+
animal: "#1556cd",
|
|
41947
|
+
package: "#9c4415",
|
|
41948
|
+
sensor: "#066c48",
|
|
41949
|
+
control: "#f2479f",
|
|
41950
|
+
face: "#139d8a",
|
|
41951
|
+
plate: "#909024",
|
|
41952
|
+
car: "#8e35ab",
|
|
41953
|
+
truck: "#bd0b2b",
|
|
41954
|
+
bus: "#7a88ca",
|
|
41955
|
+
motorcycle: "#e26725",
|
|
41956
|
+
bicycle: "#a6679b",
|
|
41957
|
+
airplane: "#7c5720",
|
|
41958
|
+
boat: "#467a1b",
|
|
41959
|
+
train: "#6f65a4",
|
|
41960
|
+
bird: "#cb717f",
|
|
41961
|
+
dog: "#c62490",
|
|
41962
|
+
cat: "#b36850",
|
|
41963
|
+
horse: "#1872ac",
|
|
41964
|
+
sheep: "#927939",
|
|
41965
|
+
cow: "#428a5c",
|
|
41966
|
+
elephant: "#d41160",
|
|
41967
|
+
bear: "#799453",
|
|
41968
|
+
zebra: "#a85455",
|
|
41969
|
+
giraffe: "#746be8",
|
|
41970
|
+
"package-delivered": "#824a80",
|
|
41971
|
+
"package-picked-up": "#614ac1",
|
|
41972
|
+
suitcase: "#2f77f3",
|
|
41973
|
+
backpack: "#fa476d",
|
|
41974
|
+
handbag: "#c14cbe",
|
|
41975
|
+
contact: "#c83921",
|
|
41976
|
+
"motion-sensor": "#a07ebd",
|
|
41977
|
+
smoke: "#a25b13",
|
|
41978
|
+
flood: "#526bab",
|
|
41979
|
+
gas: "#924938",
|
|
41980
|
+
"carbon-monoxide": "#bb7e53",
|
|
41981
|
+
vibration: "#b66182",
|
|
41982
|
+
tamper: "#3c6931",
|
|
41983
|
+
presence: "#6c851d",
|
|
41984
|
+
"enum-sensor": "#ad2d48",
|
|
41985
|
+
"device-event": "#5e9b04",
|
|
41986
|
+
lock: "#00a062",
|
|
41987
|
+
cover: "#ad8624",
|
|
41988
|
+
switch: "#d05259",
|
|
41989
|
+
siren: "#cd67b3",
|
|
41990
|
+
button: "#c9746a",
|
|
41991
|
+
doorbell: "#338eeb"
|
|
41992
|
+
};
|
|
41993
|
+
var HIGH_CONTRAST_FALLBACK = [
|
|
41994
|
+
"#817f3b",
|
|
41995
|
+
"#a0733e",
|
|
41996
|
+
"#8658b2",
|
|
41997
|
+
"#956301",
|
|
41998
|
+
"#bc652d",
|
|
41999
|
+
"#647331",
|
|
42000
|
+
"#a14c9e",
|
|
42001
|
+
"#d14e71"
|
|
42002
|
+
];
|
|
42003
|
+
var OKABE_ITO_HEX = {
|
|
42004
|
+
motion: "#b88128",
|
|
42005
|
+
audio: "#1096c8",
|
|
42006
|
+
recording: "#009e73",
|
|
42007
|
+
live: "#9c8c22",
|
|
42008
|
+
heatmapScrub: "#0072b2",
|
|
42009
|
+
person: "#d55e00",
|
|
42010
|
+
vehicle: "#c0739f",
|
|
42011
|
+
animal: "#226d18",
|
|
42012
|
+
package: "#91446c",
|
|
42013
|
+
sensor: "#217b56",
|
|
42014
|
+
control: "#648647",
|
|
42015
|
+
face: "#c22998",
|
|
42016
|
+
plate: "#fa4575",
|
|
42017
|
+
car: "#956301",
|
|
42018
|
+
truck: "#2f77f3",
|
|
42019
|
+
bus: "#7a4e86",
|
|
42020
|
+
motorcycle: "#f54597",
|
|
42021
|
+
bicycle: "#bb3e75",
|
|
42022
|
+
airplane: "#e054c0",
|
|
42023
|
+
boat: "#457942",
|
|
42024
|
+
train: "#867afa",
|
|
42025
|
+
bird: "#88914c",
|
|
42026
|
+
dog: "#1556cd",
|
|
42027
|
+
cat: "#71702c",
|
|
42028
|
+
horse: "#9b4fa4",
|
|
42029
|
+
sheep: "#c0559d",
|
|
42030
|
+
cow: "#d14f65",
|
|
42031
|
+
elephant: "#98470f",
|
|
42032
|
+
bear: "#595896",
|
|
42033
|
+
zebra: "#96790e",
|
|
42034
|
+
giraffe: "#cb717b",
|
|
42035
|
+
"package-delivered": "#139d8a",
|
|
42036
|
+
"package-picked-up": "#906ead",
|
|
42037
|
+
suitcase: "#d02939",
|
|
42038
|
+
backpack: "#d41160",
|
|
42039
|
+
handbag: "#f64f54",
|
|
42040
|
+
contact: "#7258d2",
|
|
42041
|
+
"motion-sensor": "#b66182",
|
|
42042
|
+
smoke: "#627abb",
|
|
42043
|
+
flood: "#b86ae4",
|
|
42044
|
+
gas: "#a95261",
|
|
42045
|
+
"carbon-monoxide": "#c65d3c",
|
|
42046
|
+
vibration: "#7a40b7",
|
|
42047
|
+
tamper: "#914b34",
|
|
42048
|
+
presence: "#9481c3",
|
|
42049
|
+
"enum-sensor": "#ac6d47",
|
|
42050
|
+
"device-event": "#7b6fce",
|
|
42051
|
+
lock: "#c67662",
|
|
42052
|
+
cover: "#a6564d",
|
|
42053
|
+
switch: "#ad2c4e",
|
|
42054
|
+
siren: "#348e08",
|
|
42055
|
+
button: "#d27303",
|
|
42056
|
+
doorbell: "#55770f"
|
|
42057
|
+
};
|
|
42058
|
+
var OKABE_ITO_FALLBACK = [
|
|
42059
|
+
"#9a3784",
|
|
42060
|
+
"#a7392c",
|
|
42061
|
+
"#409d50",
|
|
42062
|
+
"#6987e7",
|
|
42063
|
+
"#ee5b3d",
|
|
42064
|
+
"#c0430d",
|
|
42065
|
+
"#af79b3",
|
|
42066
|
+
"#4b6628"
|
|
42067
|
+
];
|
|
42068
|
+
/**
|
|
42069
|
+
* The display palette (D939). One table of colours, three presets, one
|
|
42070
|
+
* validator. Taxonomy colours and every consumer read this — there is no
|
|
42071
|
+
* second hex table.
|
|
42072
|
+
*/
|
|
42073
|
+
var paletteHexSchema = string().regex(/^#[0-9a-f]{6}$/);
|
|
42074
|
+
var paletteSwatchSchema = discriminatedUnion("form", [object({
|
|
42075
|
+
form: literal("solid"),
|
|
42076
|
+
hex: paletteHexSchema
|
|
42077
|
+
}), object({
|
|
42078
|
+
form: literal("gradient"),
|
|
42079
|
+
hex: paletteHexSchema,
|
|
42080
|
+
alphas: array(number().gt(0).lte(1)).length(AUDIO_GRADIENT_ALPHAS.length)
|
|
42081
|
+
})]);
|
|
42082
|
+
var paletteReadySchema = object({
|
|
42083
|
+
status: literal("ready"),
|
|
42084
|
+
presetId: _enum(PALETTE_PRESET_IDS),
|
|
42085
|
+
customized: boolean(),
|
|
42086
|
+
source: _enum(["stored", "unconfigured"]),
|
|
42087
|
+
swatches: record(string(), paletteSwatchSchema),
|
|
42088
|
+
fallbacks: array(paletteHexSchema).length(8)
|
|
42089
|
+
});
|
|
42090
|
+
var paletteResultSchema = discriminatedUnion("status", [paletteReadySchema, object({
|
|
42091
|
+
status: literal("unknown"),
|
|
42092
|
+
reason: string()
|
|
42093
|
+
})]);
|
|
42094
|
+
var setPaletteInputSchema = union([object({ presetId: string() }), object({
|
|
42095
|
+
presetId: string(),
|
|
42096
|
+
overrides: record(string(), paletteSwatchSchema)
|
|
42097
|
+
})]);
|
|
42098
|
+
object({
|
|
42099
|
+
presetId: string(),
|
|
42100
|
+
overrides: record(string(), paletteSwatchSchema)
|
|
42101
|
+
});
|
|
42102
|
+
function solid(hex) {
|
|
42103
|
+
return {
|
|
42104
|
+
form: "solid",
|
|
42105
|
+
hex
|
|
42106
|
+
};
|
|
42107
|
+
}
|
|
42108
|
+
function audioGradient(hex) {
|
|
42109
|
+
return {
|
|
42110
|
+
form: "gradient",
|
|
42111
|
+
hex,
|
|
42112
|
+
alphas: [...AUDIO_GRADIENT_ALPHAS]
|
|
42113
|
+
};
|
|
42114
|
+
}
|
|
42115
|
+
function swatchesFrom(hexes) {
|
|
42116
|
+
const out = {};
|
|
42117
|
+
for (const id of PALETTE_ENTRY_IDS) {
|
|
42118
|
+
const hex = hexes[id];
|
|
42119
|
+
if (hex === void 0) throw new Error(`palette table missing ${id}`);
|
|
42120
|
+
out[id] = id === "audio" ? audioGradient(hex) : solid(hex);
|
|
42121
|
+
}
|
|
42122
|
+
return out;
|
|
42123
|
+
}
|
|
42124
|
+
function preset(id, name, hexes, fallbacks) {
|
|
42125
|
+
return {
|
|
42126
|
+
id,
|
|
42127
|
+
name,
|
|
42128
|
+
swatches: swatchesFrom(hexes),
|
|
42129
|
+
fallbacks
|
|
42130
|
+
};
|
|
42131
|
+
}
|
|
42132
|
+
var DISPLAY_PRESETS = [
|
|
42133
|
+
preset("camstack", "CamStack", CAMSTACK_HEX, CAMSTACK_FALLBACK),
|
|
42134
|
+
preset("high-contrast", "High contrast", HIGH_CONTRAST_HEX, HIGH_CONTRAST_FALLBACK),
|
|
42135
|
+
preset("okabe-ito", "Colour-blind safe", OKABE_ITO_HEX, OKABE_ITO_FALLBACK)
|
|
42136
|
+
];
|
|
42137
|
+
function presetById(id) {
|
|
42138
|
+
return DISPLAY_PRESETS.find((item) => item.id === id);
|
|
42139
|
+
}
|
|
42140
|
+
function bundledCamstack() {
|
|
42141
|
+
const presetRow = presetById("camstack");
|
|
42142
|
+
if (presetRow === void 0) throw new Error("CamStack preset missing");
|
|
42143
|
+
return readyOf(presetRow, "unconfigured", false);
|
|
42144
|
+
}
|
|
42145
|
+
function readyOf(row, source, customized) {
|
|
42146
|
+
return {
|
|
42147
|
+
status: "ready",
|
|
42148
|
+
presetId: row.id,
|
|
42149
|
+
customized,
|
|
42150
|
+
source,
|
|
42151
|
+
swatches: row.swatches,
|
|
42152
|
+
fallbacks: [...row.fallbacks]
|
|
42153
|
+
};
|
|
42154
|
+
}
|
|
42155
|
+
function hashFallback(kind, fallbacks) {
|
|
42156
|
+
let hash = 0;
|
|
42157
|
+
for (let i = 0; i < kind.length; i++) hash = hash * 31 + (kind.codePointAt(i) ?? 0) >>> 0;
|
|
42158
|
+
const hex = fallbacks[hash % fallbacks.length];
|
|
42159
|
+
if (hex === void 0) throw new Error("display palette has no fallback colour");
|
|
42160
|
+
return hex;
|
|
42161
|
+
}
|
|
42162
|
+
/** Colour a kind paints with. Audio leaves share the audio gradient's hex. */
|
|
42163
|
+
function paintHex(swatches, fallbacks, kind) {
|
|
42164
|
+
const key = kind.trim().toLowerCase();
|
|
42165
|
+
if (key.startsWith("audio-")) {
|
|
42166
|
+
const audio = swatches[AUDIO_ENTRY_ID];
|
|
42167
|
+
return audio !== void 0 ? audio.hex : hashFallback(key, fallbacks);
|
|
42168
|
+
}
|
|
42169
|
+
const direct = swatches[key];
|
|
42170
|
+
if (direct !== void 0) return direct.hex;
|
|
42171
|
+
return hashFallback(key, fallbacks);
|
|
42172
|
+
}
|
|
42173
|
+
/**
|
|
41780
42174
|
* Unified event-kind taxonomy — THE single source of truth for
|
|
41781
42175
|
* `kind → { parentKind, category, level, color, iconId, labelKey, label,
|
|
41782
42176
|
* icon }`.
|
|
@@ -41790,109 +42184,88 @@ for (const [k, v] of Object.entries(APPLE_SA_TO_MACRO.mapping)) _macroLookup.set
|
|
|
41790
42184
|
* - `addon-post-analysis/shared/frame/box-drawer.ts` (DEFAULT_COLOR)
|
|
41791
42185
|
* - the COCO / audio class maps (macro ↔ sub relationships)
|
|
41792
42186
|
*
|
|
41793
|
-
* The DATA (serializable —
|
|
41794
|
-
* `@camstack/types`.
|
|
41795
|
-
*
|
|
41796
|
-
*
|
|
41797
|
-
*
|
|
42187
|
+
* The DATA (serializable — parentKind / iconId / labelKey) lives here in
|
|
42188
|
+
* `@camstack/types`. Colour is NOT a second table: each entry's `color` is
|
|
42189
|
+
* the bundled CamStack display palette (D939). The effective cluster palette
|
|
42190
|
+
* is the `display-palette` capability. The UI-side mapping `iconId → lucide
|
|
42191
|
+
* component` and `labelKey → t()` lives in `@camstack/ui-library`.
|
|
41798
42192
|
*
|
|
41799
42193
|
* Two levels only (v1 YAGNI): macro → sub. `person` is a leaf macro.
|
|
41800
42194
|
*/
|
|
41801
|
-
var
|
|
41802
|
-
|
|
41803
|
-
|
|
41804
|
-
|
|
41805
|
-
|
|
41806
|
-
|
|
41807
|
-
|
|
41808
|
-
|
|
41809
|
-
|
|
41810
|
-
|
|
41811
|
-
};
|
|
41812
|
-
var DETECTION_SUB_COLORS = {
|
|
41813
|
-
car: "#f59e0b",
|
|
41814
|
-
truck: "#d97706",
|
|
41815
|
-
bus: "#b45309",
|
|
41816
|
-
motorcycle: "#eab308",
|
|
41817
|
-
bicycle: "#ca8a04",
|
|
41818
|
-
airplane: "#60a5fa",
|
|
41819
|
-
boat: "#2563eb",
|
|
41820
|
-
train: "#1d4ed8",
|
|
41821
|
-
bird: "#14b8a6",
|
|
41822
|
-
dog: "#84cc16",
|
|
41823
|
-
cat: "#f97316",
|
|
41824
|
-
horse: "#a16207",
|
|
41825
|
-
sheep: "#a3a3a3",
|
|
41826
|
-
cow: "#78716c",
|
|
41827
|
-
elephant: "#6b7280",
|
|
41828
|
-
bear: "#7c2d12",
|
|
41829
|
-
zebra: "#404040",
|
|
41830
|
-
giraffe: "#d4a373"
|
|
41831
|
-
};
|
|
42195
|
+
var BUNDLED_PALETTE = bundledCamstack();
|
|
42196
|
+
function kindColor(kind) {
|
|
42197
|
+
return paintHex(BUNDLED_PALETTE.swatches, BUNDLED_PALETTE.fallbacks, kind);
|
|
42198
|
+
}
|
|
42199
|
+
function firstFallback(fallbacks) {
|
|
42200
|
+
const hex = fallbacks[0];
|
|
42201
|
+
if (hex === void 0) throw new Error("display palette has no fallback colour");
|
|
42202
|
+
return hex;
|
|
42203
|
+
}
|
|
42204
|
+
firstFallback(BUNDLED_PALETTE.fallbacks);
|
|
41832
42205
|
function titleCase(id) {
|
|
41833
42206
|
return id.split(/[-_ ]/).filter((p) => p.length > 0).map((p) => p.charAt(0).toUpperCase() + p.slice(1)).join(" ");
|
|
41834
42207
|
}
|
|
41835
42208
|
var entries = /* @__PURE__ */ new Map();
|
|
41836
|
-
function macro(kind, category,
|
|
42209
|
+
function macro(kind, category, iconId, label) {
|
|
41837
42210
|
entries.set(kind, {
|
|
41838
42211
|
kind,
|
|
41839
42212
|
parentKind: null,
|
|
41840
42213
|
level: "macro",
|
|
41841
42214
|
category,
|
|
41842
|
-
color,
|
|
42215
|
+
color: kindColor(kind),
|
|
41843
42216
|
iconId,
|
|
41844
42217
|
labelKey: `eventKind.${kind}`,
|
|
41845
42218
|
label
|
|
41846
42219
|
});
|
|
41847
42220
|
}
|
|
41848
|
-
function sub(kind, parentKind, category,
|
|
42221
|
+
function sub(kind, parentKind, category, iconId, label) {
|
|
41849
42222
|
entries.set(kind, {
|
|
41850
42223
|
kind,
|
|
41851
42224
|
parentKind,
|
|
41852
42225
|
level: "sub",
|
|
41853
42226
|
category,
|
|
41854
|
-
color,
|
|
42227
|
+
color: kindColor(kind),
|
|
41855
42228
|
iconId,
|
|
41856
42229
|
labelKey: `eventKind.${kind}`,
|
|
41857
42230
|
label
|
|
41858
42231
|
});
|
|
41859
42232
|
}
|
|
41860
|
-
macro("motion", "motion",
|
|
41861
|
-
macro("audio", "audio",
|
|
41862
|
-
macro("person", "detection",
|
|
41863
|
-
macro("vehicle", "detection",
|
|
41864
|
-
macro("animal", "detection",
|
|
41865
|
-
macro("package", "package",
|
|
41866
|
-
macro("sensor", "sensor",
|
|
41867
|
-
macro("control", "control",
|
|
42233
|
+
macro("motion", "motion", "motion", "Motion");
|
|
42234
|
+
macro("audio", "audio", "audio", "Audio");
|
|
42235
|
+
macro("person", "detection", "person", "Person");
|
|
42236
|
+
macro("vehicle", "detection", "vehicle", "Vehicle");
|
|
42237
|
+
macro("animal", "detection", "animal", "Animal");
|
|
42238
|
+
macro("package", "package", "package", "Package");
|
|
42239
|
+
macro("sensor", "sensor", "sensor", "Sensor");
|
|
42240
|
+
macro("control", "control", "control", "Control");
|
|
41868
42241
|
for (const [cocoClass, macroClass] of Object.entries(COCO_TO_MACRO.mapping)) {
|
|
41869
42242
|
if (macroClass !== "vehicle" && macroClass !== "animal") continue;
|
|
41870
42243
|
if (entries.has(cocoClass)) continue;
|
|
41871
|
-
sub(cocoClass, macroClass, "detection",
|
|
42244
|
+
sub(cocoClass, macroClass, "detection", cocoClass, titleCase(cocoClass));
|
|
41872
42245
|
}
|
|
41873
|
-
sub("package-delivered", "package", "package",
|
|
41874
|
-
sub("package-picked-up", "package", "package",
|
|
41875
|
-
sub("contact", "sensor", "sensor", "
|
|
41876
|
-
sub("motion-sensor", "sensor", "sensor",
|
|
41877
|
-
sub("smoke", "sensor", "sensor", "
|
|
41878
|
-
sub("flood", "sensor", "sensor", "
|
|
41879
|
-
sub("gas", "sensor", "sensor", "
|
|
41880
|
-
sub("carbon-monoxide", "sensor", "sensor", "
|
|
41881
|
-
sub("vibration", "sensor", "sensor", "
|
|
41882
|
-
sub("tamper", "sensor", "sensor", "
|
|
41883
|
-
sub("presence", "sensor", "sensor", "
|
|
41884
|
-
sub("enum-sensor", "sensor", "sensor",
|
|
41885
|
-
sub("device-event", "sensor", "sensor", "
|
|
41886
|
-
sub("lock", "control", "control", "
|
|
41887
|
-
sub("cover", "control", "control", "
|
|
41888
|
-
sub("switch", "control", "control",
|
|
41889
|
-
sub("siren", "control", "control", "
|
|
41890
|
-
sub("button", "control", "control", "
|
|
41891
|
-
sub("doorbell", "control", "control", "
|
|
42246
|
+
sub("package-delivered", "package", "package", "package", "Package delivered");
|
|
42247
|
+
sub("package-picked-up", "package", "package", "package", "Package picked up");
|
|
42248
|
+
sub("contact", "sensor", "sensor", "door", "Contact");
|
|
42249
|
+
sub("motion-sensor", "sensor", "sensor", "pir", "Motion sensor");
|
|
42250
|
+
sub("smoke", "sensor", "sensor", "smoke", "Smoke");
|
|
42251
|
+
sub("flood", "sensor", "sensor", "water", "Water leak");
|
|
42252
|
+
sub("gas", "sensor", "sensor", "gas", "Gas");
|
|
42253
|
+
sub("carbon-monoxide", "sensor", "sensor", "smoke", "Carbon monoxide");
|
|
42254
|
+
sub("vibration", "sensor", "sensor", "vibration", "Vibration");
|
|
42255
|
+
sub("tamper", "sensor", "sensor", "tamper", "Tamper");
|
|
42256
|
+
sub("presence", "sensor", "sensor", "presence", "Presence");
|
|
42257
|
+
sub("enum-sensor", "sensor", "sensor", "generic", "Sensor state");
|
|
42258
|
+
sub("device-event", "sensor", "sensor", "button", "Device event");
|
|
42259
|
+
sub("lock", "control", "control", "lock", "Lock");
|
|
42260
|
+
sub("cover", "control", "control", "door", "Cover");
|
|
42261
|
+
sub("switch", "control", "control", "switch", "Switch");
|
|
42262
|
+
sub("siren", "control", "control", "siren", "Siren");
|
|
42263
|
+
sub("button", "control", "control", "button", "Button");
|
|
42264
|
+
sub("doorbell", "control", "control", "doorbell", "Doorbell");
|
|
41892
42265
|
for (const l of AUDIO_MACRO_LABELS) {
|
|
41893
42266
|
const kind = `audio-${l.id}`;
|
|
41894
42267
|
if (entries.has(kind)) continue;
|
|
41895
|
-
sub(kind, "audio", "audio",
|
|
42268
|
+
sub(kind, "audio", "audio", kind, l.name);
|
|
41896
42269
|
}
|
|
41897
42270
|
/** The complete taxonomy dictionary, keyed by kind. */
|
|
41898
42271
|
var EVENT_TAXONOMY = Object.freeze(Object.fromEntries(entries));
|
|
@@ -54291,7 +54664,8 @@ var BatteryStatusSchema = object({
|
|
|
54291
54664
|
*/
|
|
54292
54665
|
binary: boolean().optional()
|
|
54293
54666
|
});
|
|
54294
|
-
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat
|
|
54667
|
+
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat;
|
|
54668
|
+
method(object({
|
|
54295
54669
|
deviceId: number(),
|
|
54296
54670
|
/** Bound on the wait. Sensible range 3000–10000ms. */
|
|
54297
54671
|
timeoutMs: number().int().min(500).max(3e4).default(8e3)
|
|
@@ -55000,6 +55374,7 @@ var ConsumablesStatusSchema = object({
|
|
|
55000
55374
|
})),
|
|
55001
55375
|
lastChangedAt: number()
|
|
55002
55376
|
});
|
|
55377
|
+
Object.values(DeviceType), [...ConsumableRemainingUnitSchema.options], [...ConsumableStatusSchema.options], [...ConsumableKindSchema.options], [...ConsumableFormSchema.options];
|
|
55003
55378
|
Object.values(DeviceType), method(object({
|
|
55004
55379
|
deviceId: number().int().nonnegative(),
|
|
55005
55380
|
key: string().min(1)
|
|
@@ -55192,6 +55567,30 @@ DeviceType.Camera, method(object({ deviceId: number() }), DayNightOptionsSchema)
|
|
|
55192
55567
|
auth: "admin"
|
|
55193
55568
|
});
|
|
55194
55569
|
/**
|
|
55570
|
+
* display-palette — the cluster's one colour table (D939).
|
|
55571
|
+
*
|
|
55572
|
+
* Hub singleton. `getPalette` reports `unknown` when the settings store
|
|
55573
|
+
* cannot be read; it does not pretend the bundled preset was stored.
|
|
55574
|
+
* `setPalette` refuses a palette that fails the ΔE / contrast rule and names
|
|
55575
|
+
* the pairs.
|
|
55576
|
+
*/
|
|
55577
|
+
var presetSummarySchema = object({
|
|
55578
|
+
id: string(),
|
|
55579
|
+
name: string(),
|
|
55580
|
+
swatches: record(string(), paletteSwatchSchema),
|
|
55581
|
+
fallbacks: array(string())
|
|
55582
|
+
});
|
|
55583
|
+
method(_void(), paletteResultSchema, {
|
|
55584
|
+
auth: "protected",
|
|
55585
|
+
role: "viewer"
|
|
55586
|
+
}), method(_void(), array(presetSummarySchema).readonly(), {
|
|
55587
|
+
auth: "protected",
|
|
55588
|
+
role: "viewer"
|
|
55589
|
+
}), method(setPaletteInputSchema, paletteReadySchema, {
|
|
55590
|
+
kind: "mutation",
|
|
55591
|
+
auth: "admin"
|
|
55592
|
+
});
|
|
55593
|
+
/**
|
|
55195
55594
|
* Generic device-level status snapshot. Auto-registered by `BaseDevice`
|
|
55196
55595
|
* for every device, regardless of provider — the kernel needs a uniform
|
|
55197
55596
|
* cap-keyed slice for the basic device flags every consumer expects to
|
|
@@ -55471,6 +55870,7 @@ DeviceType.Dishwasher, method(object({
|
|
|
55471
55870
|
kind: "mutation",
|
|
55472
55871
|
auth: "protected"
|
|
55473
55872
|
}), method(object({ deviceId: DeviceIdSchema }), DishwasherOptionsSchema, { auth: "protected" });
|
|
55873
|
+
DeviceType.Camera;
|
|
55474
55874
|
object({
|
|
55475
55875
|
/** Ms epoch of the last press. null = never observed since this provider started. */
|
|
55476
55876
|
lastPressedAt: number().nullable(),
|
|
@@ -57263,6 +57663,7 @@ authKey: string().optional() }), object({
|
|
|
57263
57663
|
/** Human-readable error when `ok: false`. */
|
|
57264
57664
|
error: string().optional()
|
|
57265
57665
|
}), { kind: "mutation" });
|
|
57666
|
+
DeviceType.Camera;
|
|
57266
57667
|
object({
|
|
57267
57668
|
detected: boolean(),
|
|
57268
57669
|
/** Ms epoch of the last detected-true observation. Null if never detected. */
|
|
@@ -59396,7 +59797,8 @@ object({
|
|
|
59396
59797
|
since: number().nullable(),
|
|
59397
59798
|
source: RunningStateSourceSchema,
|
|
59398
59799
|
phase: string().nullable(),
|
|
59399
|
-
|
|
59800
|
+
/** null until a reading has been published (D393). */
|
|
59801
|
+
lastFetchedAt: number().nullable()
|
|
59400
59802
|
});
|
|
59401
59803
|
object({
|
|
59402
59804
|
deviceId: number(),
|
|
@@ -59404,6 +59806,7 @@ object({
|
|
|
59404
59806
|
phase: string().nullable()
|
|
59405
59807
|
});
|
|
59406
59808
|
Object.values(DeviceType);
|
|
59809
|
+
DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
|
|
59407
59810
|
DeviceType.Camera, DeviceType.Sensor, DeviceType.Switch, method(object({ deviceId: number().int().nonnegative() }), object({ success: literal(true) }), {
|
|
59408
59811
|
kind: "mutation",
|
|
59409
59812
|
auth: "admin"
|
|
@@ -66464,6 +66867,27 @@ Object.freeze({
|
|
|
66464
66867
|
access: "create",
|
|
66465
66868
|
role: "viewer"
|
|
66466
66869
|
},
|
|
66870
|
+
"displayPalette.getPalette": {
|
|
66871
|
+
capName: "display-palette",
|
|
66872
|
+
capScope: "system",
|
|
66873
|
+
addonId: null,
|
|
66874
|
+
access: "view",
|
|
66875
|
+
role: "viewer"
|
|
66876
|
+
},
|
|
66877
|
+
"displayPalette.listPresets": {
|
|
66878
|
+
capName: "display-palette",
|
|
66879
|
+
capScope: "system",
|
|
66880
|
+
addonId: null,
|
|
66881
|
+
access: "view",
|
|
66882
|
+
role: "viewer"
|
|
66883
|
+
},
|
|
66884
|
+
"displayPalette.setPalette": {
|
|
66885
|
+
capName: "display-palette",
|
|
66886
|
+
capScope: "system",
|
|
66887
|
+
addonId: null,
|
|
66888
|
+
access: "create",
|
|
66889
|
+
role: "admin"
|
|
66890
|
+
},
|
|
66467
66891
|
"doorbell.getStatus": {
|
|
66468
66892
|
capName: "doorbell",
|
|
66469
66893
|
capScope: "device",
|
|
@@ -76920,6 +77344,7 @@ var SYSTEM_CAP_VOCABULARY = {
|
|
|
76920
77344
|
"device-provider": system(INTERNAL),
|
|
76921
77345
|
"device-removal-hook": system(INTERNAL),
|
|
76922
77346
|
"device-state": system("the runtime-state mirror every trigger already reads through"),
|
|
77347
|
+
"display-palette": system("the cluster display palette — one colour table for every client, not a device action"),
|
|
76923
77348
|
"embedding-encoder": system(ML),
|
|
76924
77349
|
"face-gallery": system("the face gallery — curated on its own page"),
|
|
76925
77350
|
"failure-contribution": system(INTERNAL),
|
|
@@ -79804,6 +80229,96 @@ Object.freeze({
|
|
|
79804
80229
|
"smtp-provider": "email"
|
|
79805
80230
|
});
|
|
79806
80231
|
DeviceType.Camera;
|
|
80232
|
+
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.Dishwasher, DeviceType.Camera, DeviceType.Camera, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
|
|
80233
|
+
/**
|
|
80234
|
+
* A saved Customize assignment (D936). The schema is the type: callers use
|
|
80235
|
+
* `z.infer`, they do not restate the shape.
|
|
80236
|
+
*/
|
|
80237
|
+
var OverrideSourceSchema = object({
|
|
80238
|
+
addonId: string().min(1),
|
|
80239
|
+
stableId: string().min(1),
|
|
80240
|
+
cap: string().min(1),
|
|
80241
|
+
fieldPath: string().min(1)
|
|
80242
|
+
});
|
|
80243
|
+
var CustomizeTransformDraftSchema = discriminatedUnion("kind", [
|
|
80244
|
+
object({ kind: literal("identity") }),
|
|
80245
|
+
object({ kind: literal("invert") }),
|
|
80246
|
+
object({
|
|
80247
|
+
kind: literal("threshold"),
|
|
80248
|
+
comparison: _enum(["gte", "lte"]),
|
|
80249
|
+
threshold: number(),
|
|
80250
|
+
startDwellMs: number().nonnegative(),
|
|
80251
|
+
stopDwellMs: number().nonnegative()
|
|
80252
|
+
}),
|
|
80253
|
+
object({
|
|
80254
|
+
kind: literal("linear"),
|
|
80255
|
+
scale: number(),
|
|
80256
|
+
offset: number(),
|
|
80257
|
+
clampMin: number().optional(),
|
|
80258
|
+
clampMax: number().optional()
|
|
80259
|
+
}),
|
|
80260
|
+
object({
|
|
80261
|
+
kind: literal("enum-map"),
|
|
80262
|
+
mapping: record(string(), string().nullable())
|
|
80263
|
+
}),
|
|
80264
|
+
object({ kind: literal("number") })
|
|
80265
|
+
]);
|
|
80266
|
+
var ScalarOverrideDraftSchema = object({
|
|
80267
|
+
kind: literal("scalar"),
|
|
80268
|
+
cap: string().min(1),
|
|
80269
|
+
targetId: string().min(1),
|
|
80270
|
+
source: OverrideSourceSchema,
|
|
80271
|
+
transform: CustomizeTransformDraftSchema
|
|
80272
|
+
});
|
|
80273
|
+
var KeyedArrayOverrideDraftSchema = object({
|
|
80274
|
+
kind: literal("keyedArray"),
|
|
80275
|
+
cap: string().min(1),
|
|
80276
|
+
targetId: string().min(1),
|
|
80277
|
+
key: string().min(1),
|
|
80278
|
+
label: string().min(1),
|
|
80279
|
+
fieldPath: string().min(1),
|
|
80280
|
+
source: OverrideSourceSchema,
|
|
80281
|
+
transform: CustomizeTransformDraftSchema
|
|
80282
|
+
});
|
|
80283
|
+
var PulseOverrideDraftSchema = object({
|
|
80284
|
+
kind: literal("pulse"),
|
|
80285
|
+
cap: string().min(1),
|
|
80286
|
+
targetId: string().min(1),
|
|
80287
|
+
enabled: boolean(),
|
|
80288
|
+
debounceMs: number().nonnegative(),
|
|
80289
|
+
sources: array(OverrideSourceSchema).min(1)
|
|
80290
|
+
});
|
|
80291
|
+
var SpanSourceDraftSchema = OverrideSourceSchema.extend({ mode: _enum([
|
|
80292
|
+
"in-addition",
|
|
80293
|
+
"confirm",
|
|
80294
|
+
"replace"
|
|
80295
|
+
]).optional() });
|
|
80296
|
+
discriminatedUnion("kind", [
|
|
80297
|
+
ScalarOverrideDraftSchema,
|
|
80298
|
+
KeyedArrayOverrideDraftSchema,
|
|
80299
|
+
PulseOverrideDraftSchema,
|
|
80300
|
+
object({
|
|
80301
|
+
kind: literal("span"),
|
|
80302
|
+
cap: string().min(1),
|
|
80303
|
+
targetId: string().min(1),
|
|
80304
|
+
timeoutMs: number().nonnegative(),
|
|
80305
|
+
cooldownMs: number().nonnegative().optional(),
|
|
80306
|
+
sources: array(SpanSourceDraftSchema)
|
|
80307
|
+
})
|
|
80308
|
+
]);
|
|
80309
|
+
object({
|
|
80310
|
+
targetId: string().min(1),
|
|
80311
|
+
configured: boolean(),
|
|
80312
|
+
source: _enum(["native", "assigned"]),
|
|
80313
|
+
state: _enum([
|
|
80314
|
+
"active",
|
|
80315
|
+
"stale",
|
|
80316
|
+
"released",
|
|
80317
|
+
"unavailable"
|
|
80318
|
+
]),
|
|
80319
|
+
reason: string().nullable()
|
|
80320
|
+
});
|
|
80321
|
+
String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
|
|
79807
80322
|
var G711_SCALE_CORRECTION_DB = {
|
|
79808
80323
|
PCMU: 20 * Math.log10(4),
|
|
79809
80324
|
PCMA: 20 * Math.log10(8)
|
|
@@ -84654,7 +85169,7 @@ var OsdManagerAddon = class extends BaseAddon {
|
|
|
84654
85169
|
* collection cap. Mirrors the manifest `pages[]` entry — admin-ui's
|
|
84655
85170
|
* `<AddonPageLoader>` loads `addon_osd_manager_page/page` from
|
|
84656
85171
|
* `/api/addon-pages/osd-manager/remoteEntry.js`. Modeled directly on
|
|
84657
|
-
* `addon-benchmark` / `addon-model-studio` (
|
|
85172
|
+
* `addon-benchmark` / `addon-model-studio` (former roadmap item 4d).
|
|
84658
85173
|
*/
|
|
84659
85174
|
pages = [{
|
|
84660
85175
|
id: "osd-manager",
|