@camstack/addon-post-analysis 1.2.649 → 1.2.650
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 +6 -0
- package/dist/{clip-model-registry-DLCu17dL.mjs → clip-model-registry-B_mY0hd7.mjs} +128 -6
- package/dist/{clip-model-registry-BweA9zEK.js → clip-model-registry-CC7pvitG.js} +128 -6
- package/dist/embedding-encoder/index.js +1 -1
- package/dist/embedding-encoder/index.mjs +1 -1
- package/dist/pipeline-analytics/_stub.js +2 -2
- package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-DFq-lnbD.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-HjnmptAc.mjs} +2 -2
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-YNYqWfWY.mjs +26 -0
- package/dist/pipeline-analytics/{_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-DQTr4r2P.mjs → _virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-OPayQG8i.mjs} +1 -1
- package/dist/pipeline-analytics/{hostInit-Dog0wpFI.mjs → hostInit-BjUFFpLS.mjs} +2 -2
- package/dist/pipeline-analytics/index.js +109 -2
- package/dist/pipeline-analytics/index.mjs +109 -2
- package/dist/pipeline-analytics/remoteEntry.js +1 -1
- package/package.json +1 -1
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-YDf26qsN.mjs +0 -26
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.2.650] - 2026-10-28
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- A Correct/Wrong tap on a notification whose track has already been discarded now still saves a training frame from the recording, into the Notification verdicts collection.
|
|
15
|
+
|
|
10
16
|
## [1.2.649] - 2026-10-28
|
|
11
17
|
|
|
12
18
|
### Changed
|
|
@@ -5645,7 +5645,7 @@ var ZodIssueCode = {
|
|
|
5645
5645
|
var ZodFirstPartyTypeKind;
|
|
5646
5646
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5647
5647
|
//#endregion
|
|
5648
|
-
//#region ../types/dist/sleep-
|
|
5648
|
+
//#region ../types/dist/sleep-BAvUCi_2.mjs
|
|
5649
5649
|
/**
|
|
5650
5650
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5651
5651
|
* window to float samples (D455).
|
|
@@ -9078,6 +9078,7 @@ var CAP_NAMES = Object.freeze([
|
|
|
9078
9078
|
"image-settings",
|
|
9079
9079
|
"integrations",
|
|
9080
9080
|
"intercom",
|
|
9081
|
+
"ir-transmitter",
|
|
9081
9082
|
"keychain",
|
|
9082
9083
|
"keychain-admin",
|
|
9083
9084
|
"lawn-mower-control",
|
|
@@ -10325,6 +10326,11 @@ Object.freeze({
|
|
|
10325
10326
|
"path": "batteryPower",
|
|
10326
10327
|
"valueType": "number"
|
|
10327
10328
|
},
|
|
10329
|
+
{
|
|
10330
|
+
"path": "powerSource",
|
|
10331
|
+
"valueType": "enum",
|
|
10332
|
+
"enumValues": ["mains", "battery"]
|
|
10333
|
+
},
|
|
10328
10334
|
{
|
|
10329
10335
|
"path": "desiccantLeftDays",
|
|
10330
10336
|
"valueType": "number"
|
|
@@ -10910,7 +10916,7 @@ Object.freeze({
|
|
|
10910
10916
|
* can answer "may a rule actuate this?" without importing the schema barrel
|
|
10911
10917
|
* (~144MB RSS per runner, D28).
|
|
10912
10918
|
*
|
|
10913
|
-
* Coverage:
|
|
10919
|
+
* Coverage: 96 device-scoped capabilities.
|
|
10914
10920
|
*/
|
|
10915
10921
|
var DEVICE_SCOPED_CAPS = new Set([
|
|
10916
10922
|
"accessories",
|
|
@@ -10960,6 +10966,7 @@ var DEVICE_SCOPED_CAPS = new Set([
|
|
|
10960
10966
|
"image",
|
|
10961
10967
|
"image-settings",
|
|
10962
10968
|
"intercom",
|
|
10969
|
+
"ir-transmitter",
|
|
10963
10970
|
"lawn-mower-control",
|
|
10964
10971
|
"lock-control",
|
|
10965
10972
|
"media-player",
|
|
@@ -11053,7 +11060,7 @@ function sleep(ms) {
|
|
|
11053
11060
|
return new Promise((resolve) => setTimeout(resolve, Math.max(0, ms)));
|
|
11054
11061
|
}
|
|
11055
11062
|
//#endregion
|
|
11056
|
-
//#region ../types/dist/err-msg-
|
|
11063
|
+
//#region ../types/dist/err-msg-BCdlR2Li.mjs
|
|
11057
11064
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
11058
11065
|
DeviceType["Camera"] = "camera";
|
|
11059
11066
|
DeviceType["Hub"] = "hub";
|
|
@@ -11399,6 +11406,9 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
11399
11406
|
/** Fallback when the notifier service name doesn't match a known
|
|
11400
11407
|
* pattern. */
|
|
11401
11408
|
DeviceRole["GenericNotifier"] = "generic-notifier";
|
|
11409
|
+
/** Emits a pulse train (infrared or RF) on request — the `ir-transmitter`
|
|
11410
|
+
* cap. A `DeviceType.Generic` device. */
|
|
11411
|
+
DeviceRole["IrTransmitter"] = "ir-transmitter";
|
|
11402
11412
|
return DeviceRole;
|
|
11403
11413
|
}({});
|
|
11404
11414
|
/**
|
|
@@ -11412,7 +11422,7 @@ function errMsg(err) {
|
|
|
11412
11422
|
return String(err);
|
|
11413
11423
|
}
|
|
11414
11424
|
//#endregion
|
|
11415
|
-
//#region ../types/dist/composition-
|
|
11425
|
+
//#region ../types/dist/composition-DpFv_J6D.mjs
|
|
11416
11426
|
/**
|
|
11417
11427
|
* Deterministic SHA-256 hash of an arbitrary serialisable value. The
|
|
11418
11428
|
* canonical form sorts object keys alphabetically at every depth so two
|
|
@@ -44996,6 +45006,17 @@ var LlmProfileSchema = object({
|
|
|
44996
45006
|
* field in its editor only when its descriptor lists it in `profileFields`. */
|
|
44997
45007
|
topK: number().int().positive().optional(),
|
|
44998
45008
|
maxTokens: number().int().positive().optional(),
|
|
45009
|
+
/** How hard the model "thinks" before it answers. Omitted = the model's own
|
|
45010
|
+
* default. `off` matters for structured output: a thinking model can spend
|
|
45011
|
+
* the whole completion on reasoning and return an empty `content`. Carried
|
|
45012
|
+
* only by the wires that have it — a kind offers the field in its editor
|
|
45013
|
+
* only when its descriptor lists it in `profileFields`. */
|
|
45014
|
+
reasoningEffort: _enum([
|
|
45015
|
+
"off",
|
|
45016
|
+
"low",
|
|
45017
|
+
"medium",
|
|
45018
|
+
"high"
|
|
45019
|
+
]).optional(),
|
|
44999
45020
|
/** Prompt context window. Advisory for cloud kinds (they enforce their own). */
|
|
45000
45021
|
contextLength: number().int().positive().optional(),
|
|
45001
45022
|
/** Default system prompt. A caller's `system` REPLACES it (never appends —
|
|
@@ -45034,6 +45055,7 @@ var LlmProfileFieldSchema = _enum([
|
|
|
45034
45055
|
"topP",
|
|
45035
45056
|
"topK",
|
|
45036
45057
|
"maxTokens",
|
|
45058
|
+
"reasoningEffort",
|
|
45037
45059
|
"contextLength",
|
|
45038
45060
|
"systemPrompt",
|
|
45039
45061
|
"timeoutMs",
|
|
@@ -61749,6 +61771,56 @@ DeviceType.Button, method(object({ deviceId: number().int().nonnegative() }), _v
|
|
|
61749
61771
|
auth: "protected"
|
|
61750
61772
|
});
|
|
61751
61773
|
/**
|
|
61774
|
+
* A pulse train in signed microseconds: mark (+) first, then space (-), strictly
|
|
61775
|
+
* alternating, no zeros, 2..1024 entries.
|
|
61776
|
+
*/
|
|
61777
|
+
var IrTimingsSchema = array(number().int()).min(2).max(1024).superRefine((timings, ctx) => {
|
|
61778
|
+
timings.forEach((value, index) => {
|
|
61779
|
+
const expectMark = index % 2 === 0;
|
|
61780
|
+
if (value === 0 || value > 0 !== expectMark) ctx.addIssue({
|
|
61781
|
+
code: "custom",
|
|
61782
|
+
message: `timing ${index} must be a non-zero ${expectMark ? "mark (positive)" : "space (negative)"}`,
|
|
61783
|
+
path: [index]
|
|
61784
|
+
});
|
|
61785
|
+
});
|
|
61786
|
+
});
|
|
61787
|
+
/** Per-command transmit options. Every key is optional; a transmitter applies what it can. */
|
|
61788
|
+
var TransmitSettingsSchema = object({
|
|
61789
|
+
carrierHz: number().int().positive().optional(),
|
|
61790
|
+
dutyCyclePercent: number().int().min(1).max(100).optional(),
|
|
61791
|
+
repeat: number().int().min(0).max(20).optional(),
|
|
61792
|
+
repeatDelayMs: number().int().min(0).optional()
|
|
61793
|
+
});
|
|
61794
|
+
/** The setting keys a transmitter may declare as settable (`getInfo.settable`). */
|
|
61795
|
+
var TransmitSettingKeySchema = _enum([
|
|
61796
|
+
"carrierHz",
|
|
61797
|
+
"dutyCyclePercent",
|
|
61798
|
+
"repeat",
|
|
61799
|
+
"repeatDelayMs"
|
|
61800
|
+
]);
|
|
61801
|
+
var IrMediumSchema = _enum(["ir", "rf"]);
|
|
61802
|
+
var IrSendResultSchema = object({
|
|
61803
|
+
ok: literal(true),
|
|
61804
|
+
/** Settings the transmitter could not apply; the train was still sent. */
|
|
61805
|
+
ignoredSettings: array(string())
|
|
61806
|
+
});
|
|
61807
|
+
var IrTransmitterInfoSchema = object({
|
|
61808
|
+
media: array(IrMediumSchema),
|
|
61809
|
+
settable: array(TransmitSettingKeySchema),
|
|
61810
|
+
maxTimings: number().int().positive()
|
|
61811
|
+
});
|
|
61812
|
+
DeviceType.Generic, method(object({
|
|
61813
|
+
deviceId: number().int().nonnegative(),
|
|
61814
|
+
timings: IrTimingsSchema,
|
|
61815
|
+
settings: TransmitSettingsSchema.optional()
|
|
61816
|
+
}), IrSendResultSchema, {
|
|
61817
|
+
kind: "mutation",
|
|
61818
|
+
auth: "protected"
|
|
61819
|
+
}), method(object({ deviceId: number().int().nonnegative() }), IrTransmitterInfoSchema, {
|
|
61820
|
+
kind: "query",
|
|
61821
|
+
auth: "protected"
|
|
61822
|
+
});
|
|
61823
|
+
/**
|
|
61752
61824
|
* `calendar-source` — collection cap exposing per-provider calendars and
|
|
61753
61825
|
* their events. Every addon that contributes calendars (Home Assistant,
|
|
61754
61826
|
* a future Google Calendar addon, …) registers a provider here. The hub
|
|
@@ -67924,9 +67996,14 @@ var PetFeederStatusSchema = object({
|
|
|
67924
67996
|
* (`device_class: problem`, on = low). True when the tank reports empty,
|
|
67925
67997
|
* or, on a dual-hopper model, when EITHER hopper is empty. */
|
|
67926
67998
|
lowFood: boolean(),
|
|
67927
|
-
/** Battery charge 0..100 (%).
|
|
67928
|
-
*
|
|
67999
|
+
/** Battery charge 0..100 (%). On a feeder running on `mains` this is the
|
|
68000
|
+
* BACKUP battery's charge, not the power source. Null when the device has
|
|
68001
|
+
* no battery reading. */
|
|
67929
68002
|
batteryPower: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
68003
|
+
/** What the feeder is powered from right now: `mains` (plugged in, the
|
|
68004
|
+
* battery is only a backup) or `battery`. Null when the device does not
|
|
68005
|
+
* report it. */
|
|
68006
|
+
powerSource: _enum(["mains", "battery"]).nullable(),
|
|
67930
68007
|
/**
|
|
67931
68008
|
* Desiccant life remaining, stored in seconds (duration base, D944).
|
|
67932
68009
|
* Providers convert from the days the feeder reports. Null when the
|
|
@@ -78801,6 +78878,20 @@ Object.freeze({
|
|
|
78801
78878
|
access: "create",
|
|
78802
78879
|
role: "viewer"
|
|
78803
78880
|
},
|
|
78881
|
+
"irTransmitter.getInfo": {
|
|
78882
|
+
capName: "ir-transmitter",
|
|
78883
|
+
capScope: "device",
|
|
78884
|
+
addonId: null,
|
|
78885
|
+
access: "view",
|
|
78886
|
+
role: "viewer"
|
|
78887
|
+
},
|
|
78888
|
+
"irTransmitter.send": {
|
|
78889
|
+
capName: "ir-transmitter",
|
|
78890
|
+
capScope: "device",
|
|
78891
|
+
addonId: null,
|
|
78892
|
+
access: "create",
|
|
78893
|
+
role: "viewer"
|
|
78894
|
+
},
|
|
78804
78895
|
"keychain.delete": {
|
|
78805
78896
|
capName: "keychain",
|
|
78806
78897
|
capScope: "system",
|
|
@@ -86424,6 +86515,11 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
86424
86515
|
icon: "circle-dot"
|
|
86425
86516
|
}]
|
|
86426
86517
|
},
|
|
86518
|
+
"ir-transmitter": {
|
|
86519
|
+
scope: "device",
|
|
86520
|
+
noun: t("IR / RF transmitter", "Trasmettitore IR / RF"),
|
|
86521
|
+
notOperatorFacing: { send: "a raw pulse train is not something an operator composes in an automation; the remote that owns the command table sends it" }
|
|
86522
|
+
},
|
|
86427
86523
|
control: {
|
|
86428
86524
|
scope: "device",
|
|
86429
86525
|
noun: t("Control", "Controllo"),
|
|
@@ -90143,6 +90239,16 @@ Object.freeze({
|
|
|
90143
90239
|
form: "single",
|
|
90144
90240
|
optional: false
|
|
90145
90241
|
}],
|
|
90242
|
+
"irTransmitter.getInfo": [{
|
|
90243
|
+
name: "deviceId",
|
|
90244
|
+
form: "single",
|
|
90245
|
+
optional: false
|
|
90246
|
+
}],
|
|
90247
|
+
"irTransmitter.send": [{
|
|
90248
|
+
name: "deviceId",
|
|
90249
|
+
form: "single",
|
|
90250
|
+
optional: false
|
|
90251
|
+
}],
|
|
90146
90252
|
"keychain.deleteDeviceScope": [{
|
|
90147
90253
|
name: "deviceId",
|
|
90148
90254
|
form: "single",
|
|
@@ -96737,6 +96843,22 @@ function armRemovalReconcile(opts) {
|
|
|
96737
96843
|
timer.unref?.();
|
|
96738
96844
|
return () => clearInterval(timer);
|
|
96739
96845
|
}
|
|
96846
|
+
discriminatedUnion("kind", [object({
|
|
96847
|
+
kind: literal("raw"),
|
|
96848
|
+
timings: array(number().int()),
|
|
96849
|
+
settings: TransmitSettingsSchema.optional()
|
|
96850
|
+
}), object({
|
|
96851
|
+
kind: literal("pronto"),
|
|
96852
|
+
code: string()
|
|
96853
|
+
})]);
|
|
96854
|
+
object({
|
|
96855
|
+
manufacturer: string().optional(),
|
|
96856
|
+
supportedModels: array(string()).optional(),
|
|
96857
|
+
supportedController: string().optional(),
|
|
96858
|
+
commandsEncoding: string(),
|
|
96859
|
+
delay: number().nonnegative().optional(),
|
|
96860
|
+
commands: record(string(), unknown())
|
|
96861
|
+
});
|
|
96740
96862
|
//#endregion
|
|
96741
96863
|
//#region src/pipeline-analytics/cluster-model-pin.ts
|
|
96742
96864
|
/**
|
|
@@ -5676,7 +5676,7 @@ var ZodIssueCode = {
|
|
|
5676
5676
|
var ZodFirstPartyTypeKind;
|
|
5677
5677
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5678
5678
|
//#endregion
|
|
5679
|
-
//#region ../types/dist/sleep-
|
|
5679
|
+
//#region ../types/dist/sleep-BAvUCi_2.mjs
|
|
5680
5680
|
/**
|
|
5681
5681
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5682
5682
|
* window to float samples (D455).
|
|
@@ -9109,6 +9109,7 @@ var CAP_NAMES = Object.freeze([
|
|
|
9109
9109
|
"image-settings",
|
|
9110
9110
|
"integrations",
|
|
9111
9111
|
"intercom",
|
|
9112
|
+
"ir-transmitter",
|
|
9112
9113
|
"keychain",
|
|
9113
9114
|
"keychain-admin",
|
|
9114
9115
|
"lawn-mower-control",
|
|
@@ -10356,6 +10357,11 @@ Object.freeze({
|
|
|
10356
10357
|
"path": "batteryPower",
|
|
10357
10358
|
"valueType": "number"
|
|
10358
10359
|
},
|
|
10360
|
+
{
|
|
10361
|
+
"path": "powerSource",
|
|
10362
|
+
"valueType": "enum",
|
|
10363
|
+
"enumValues": ["mains", "battery"]
|
|
10364
|
+
},
|
|
10359
10365
|
{
|
|
10360
10366
|
"path": "desiccantLeftDays",
|
|
10361
10367
|
"valueType": "number"
|
|
@@ -10941,7 +10947,7 @@ Object.freeze({
|
|
|
10941
10947
|
* can answer "may a rule actuate this?" without importing the schema barrel
|
|
10942
10948
|
* (~144MB RSS per runner, D28).
|
|
10943
10949
|
*
|
|
10944
|
-
* Coverage:
|
|
10950
|
+
* Coverage: 96 device-scoped capabilities.
|
|
10945
10951
|
*/
|
|
10946
10952
|
var DEVICE_SCOPED_CAPS = new Set([
|
|
10947
10953
|
"accessories",
|
|
@@ -10991,6 +10997,7 @@ var DEVICE_SCOPED_CAPS = new Set([
|
|
|
10991
10997
|
"image",
|
|
10992
10998
|
"image-settings",
|
|
10993
10999
|
"intercom",
|
|
11000
|
+
"ir-transmitter",
|
|
10994
11001
|
"lawn-mower-control",
|
|
10995
11002
|
"lock-control",
|
|
10996
11003
|
"media-player",
|
|
@@ -11084,7 +11091,7 @@ function sleep(ms) {
|
|
|
11084
11091
|
return new Promise((resolve) => setTimeout(resolve, Math.max(0, ms)));
|
|
11085
11092
|
}
|
|
11086
11093
|
//#endregion
|
|
11087
|
-
//#region ../types/dist/err-msg-
|
|
11094
|
+
//#region ../types/dist/err-msg-BCdlR2Li.mjs
|
|
11088
11095
|
var DeviceType = /* @__PURE__ */ function(DeviceType) {
|
|
11089
11096
|
DeviceType["Camera"] = "camera";
|
|
11090
11097
|
DeviceType["Hub"] = "hub";
|
|
@@ -11430,6 +11437,9 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
11430
11437
|
/** Fallback when the notifier service name doesn't match a known
|
|
11431
11438
|
* pattern. */
|
|
11432
11439
|
DeviceRole["GenericNotifier"] = "generic-notifier";
|
|
11440
|
+
/** Emits a pulse train (infrared or RF) on request — the `ir-transmitter`
|
|
11441
|
+
* cap. A `DeviceType.Generic` device. */
|
|
11442
|
+
DeviceRole["IrTransmitter"] = "ir-transmitter";
|
|
11433
11443
|
return DeviceRole;
|
|
11434
11444
|
}({});
|
|
11435
11445
|
/**
|
|
@@ -11443,7 +11453,7 @@ function errMsg(err) {
|
|
|
11443
11453
|
return String(err);
|
|
11444
11454
|
}
|
|
11445
11455
|
//#endregion
|
|
11446
|
-
//#region ../types/dist/composition-
|
|
11456
|
+
//#region ../types/dist/composition-DpFv_J6D.mjs
|
|
11447
11457
|
/**
|
|
11448
11458
|
* Deterministic SHA-256 hash of an arbitrary serialisable value. The
|
|
11449
11459
|
* canonical form sorts object keys alphabetically at every depth so two
|
|
@@ -45027,6 +45037,17 @@ var LlmProfileSchema = object({
|
|
|
45027
45037
|
* field in its editor only when its descriptor lists it in `profileFields`. */
|
|
45028
45038
|
topK: number().int().positive().optional(),
|
|
45029
45039
|
maxTokens: number().int().positive().optional(),
|
|
45040
|
+
/** How hard the model "thinks" before it answers. Omitted = the model's own
|
|
45041
|
+
* default. `off` matters for structured output: a thinking model can spend
|
|
45042
|
+
* the whole completion on reasoning and return an empty `content`. Carried
|
|
45043
|
+
* only by the wires that have it — a kind offers the field in its editor
|
|
45044
|
+
* only when its descriptor lists it in `profileFields`. */
|
|
45045
|
+
reasoningEffort: _enum([
|
|
45046
|
+
"off",
|
|
45047
|
+
"low",
|
|
45048
|
+
"medium",
|
|
45049
|
+
"high"
|
|
45050
|
+
]).optional(),
|
|
45030
45051
|
/** Prompt context window. Advisory for cloud kinds (they enforce their own). */
|
|
45031
45052
|
contextLength: number().int().positive().optional(),
|
|
45032
45053
|
/** Default system prompt. A caller's `system` REPLACES it (never appends —
|
|
@@ -45065,6 +45086,7 @@ var LlmProfileFieldSchema = _enum([
|
|
|
45065
45086
|
"topP",
|
|
45066
45087
|
"topK",
|
|
45067
45088
|
"maxTokens",
|
|
45089
|
+
"reasoningEffort",
|
|
45068
45090
|
"contextLength",
|
|
45069
45091
|
"systemPrompt",
|
|
45070
45092
|
"timeoutMs",
|
|
@@ -61780,6 +61802,56 @@ DeviceType.Button, method(object({ deviceId: number().int().nonnegative() }), _v
|
|
|
61780
61802
|
auth: "protected"
|
|
61781
61803
|
});
|
|
61782
61804
|
/**
|
|
61805
|
+
* A pulse train in signed microseconds: mark (+) first, then space (-), strictly
|
|
61806
|
+
* alternating, no zeros, 2..1024 entries.
|
|
61807
|
+
*/
|
|
61808
|
+
var IrTimingsSchema = array(number().int()).min(2).max(1024).superRefine((timings, ctx) => {
|
|
61809
|
+
timings.forEach((value, index) => {
|
|
61810
|
+
const expectMark = index % 2 === 0;
|
|
61811
|
+
if (value === 0 || value > 0 !== expectMark) ctx.addIssue({
|
|
61812
|
+
code: "custom",
|
|
61813
|
+
message: `timing ${index} must be a non-zero ${expectMark ? "mark (positive)" : "space (negative)"}`,
|
|
61814
|
+
path: [index]
|
|
61815
|
+
});
|
|
61816
|
+
});
|
|
61817
|
+
});
|
|
61818
|
+
/** Per-command transmit options. Every key is optional; a transmitter applies what it can. */
|
|
61819
|
+
var TransmitSettingsSchema = object({
|
|
61820
|
+
carrierHz: number().int().positive().optional(),
|
|
61821
|
+
dutyCyclePercent: number().int().min(1).max(100).optional(),
|
|
61822
|
+
repeat: number().int().min(0).max(20).optional(),
|
|
61823
|
+
repeatDelayMs: number().int().min(0).optional()
|
|
61824
|
+
});
|
|
61825
|
+
/** The setting keys a transmitter may declare as settable (`getInfo.settable`). */
|
|
61826
|
+
var TransmitSettingKeySchema = _enum([
|
|
61827
|
+
"carrierHz",
|
|
61828
|
+
"dutyCyclePercent",
|
|
61829
|
+
"repeat",
|
|
61830
|
+
"repeatDelayMs"
|
|
61831
|
+
]);
|
|
61832
|
+
var IrMediumSchema = _enum(["ir", "rf"]);
|
|
61833
|
+
var IrSendResultSchema = object({
|
|
61834
|
+
ok: literal(true),
|
|
61835
|
+
/** Settings the transmitter could not apply; the train was still sent. */
|
|
61836
|
+
ignoredSettings: array(string())
|
|
61837
|
+
});
|
|
61838
|
+
var IrTransmitterInfoSchema = object({
|
|
61839
|
+
media: array(IrMediumSchema),
|
|
61840
|
+
settable: array(TransmitSettingKeySchema),
|
|
61841
|
+
maxTimings: number().int().positive()
|
|
61842
|
+
});
|
|
61843
|
+
DeviceType.Generic, method(object({
|
|
61844
|
+
deviceId: number().int().nonnegative(),
|
|
61845
|
+
timings: IrTimingsSchema,
|
|
61846
|
+
settings: TransmitSettingsSchema.optional()
|
|
61847
|
+
}), IrSendResultSchema, {
|
|
61848
|
+
kind: "mutation",
|
|
61849
|
+
auth: "protected"
|
|
61850
|
+
}), method(object({ deviceId: number().int().nonnegative() }), IrTransmitterInfoSchema, {
|
|
61851
|
+
kind: "query",
|
|
61852
|
+
auth: "protected"
|
|
61853
|
+
});
|
|
61854
|
+
/**
|
|
61783
61855
|
* `calendar-source` — collection cap exposing per-provider calendars and
|
|
61784
61856
|
* their events. Every addon that contributes calendars (Home Assistant,
|
|
61785
61857
|
* a future Google Calendar addon, …) registers a provider here. The hub
|
|
@@ -67955,9 +68027,14 @@ var PetFeederStatusSchema = object({
|
|
|
67955
68027
|
* (`device_class: problem`, on = low). True when the tank reports empty,
|
|
67956
68028
|
* or, on a dual-hopper model, when EITHER hopper is empty. */
|
|
67957
68029
|
lowFood: boolean(),
|
|
67958
|
-
/** Battery charge 0..100 (%).
|
|
67959
|
-
*
|
|
68030
|
+
/** Battery charge 0..100 (%). On a feeder running on `mains` this is the
|
|
68031
|
+
* BACKUP battery's charge, not the power source. Null when the device has
|
|
68032
|
+
* no battery reading. */
|
|
67960
68033
|
batteryPower: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
68034
|
+
/** What the feeder is powered from right now: `mains` (plugged in, the
|
|
68035
|
+
* battery is only a backup) or `battery`. Null when the device does not
|
|
68036
|
+
* report it. */
|
|
68037
|
+
powerSource: _enum(["mains", "battery"]).nullable(),
|
|
67961
68038
|
/**
|
|
67962
68039
|
* Desiccant life remaining, stored in seconds (duration base, D944).
|
|
67963
68040
|
* Providers convert from the days the feeder reports. Null when the
|
|
@@ -78832,6 +78909,20 @@ Object.freeze({
|
|
|
78832
78909
|
access: "create",
|
|
78833
78910
|
role: "viewer"
|
|
78834
78911
|
},
|
|
78912
|
+
"irTransmitter.getInfo": {
|
|
78913
|
+
capName: "ir-transmitter",
|
|
78914
|
+
capScope: "device",
|
|
78915
|
+
addonId: null,
|
|
78916
|
+
access: "view",
|
|
78917
|
+
role: "viewer"
|
|
78918
|
+
},
|
|
78919
|
+
"irTransmitter.send": {
|
|
78920
|
+
capName: "ir-transmitter",
|
|
78921
|
+
capScope: "device",
|
|
78922
|
+
addonId: null,
|
|
78923
|
+
access: "create",
|
|
78924
|
+
role: "viewer"
|
|
78925
|
+
},
|
|
78835
78926
|
"keychain.delete": {
|
|
78836
78927
|
capName: "keychain",
|
|
78837
78928
|
capScope: "system",
|
|
@@ -86455,6 +86546,11 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
86455
86546
|
icon: "circle-dot"
|
|
86456
86547
|
}]
|
|
86457
86548
|
},
|
|
86549
|
+
"ir-transmitter": {
|
|
86550
|
+
scope: "device",
|
|
86551
|
+
noun: t("IR / RF transmitter", "Trasmettitore IR / RF"),
|
|
86552
|
+
notOperatorFacing: { send: "a raw pulse train is not something an operator composes in an automation; the remote that owns the command table sends it" }
|
|
86553
|
+
},
|
|
86458
86554
|
control: {
|
|
86459
86555
|
scope: "device",
|
|
86460
86556
|
noun: t("Control", "Controllo"),
|
|
@@ -90174,6 +90270,16 @@ Object.freeze({
|
|
|
90174
90270
|
form: "single",
|
|
90175
90271
|
optional: false
|
|
90176
90272
|
}],
|
|
90273
|
+
"irTransmitter.getInfo": [{
|
|
90274
|
+
name: "deviceId",
|
|
90275
|
+
form: "single",
|
|
90276
|
+
optional: false
|
|
90277
|
+
}],
|
|
90278
|
+
"irTransmitter.send": [{
|
|
90279
|
+
name: "deviceId",
|
|
90280
|
+
form: "single",
|
|
90281
|
+
optional: false
|
|
90282
|
+
}],
|
|
90177
90283
|
"keychain.deleteDeviceScope": [{
|
|
90178
90284
|
name: "deviceId",
|
|
90179
90285
|
form: "single",
|
|
@@ -96768,6 +96874,22 @@ function armRemovalReconcile(opts) {
|
|
|
96768
96874
|
timer.unref?.();
|
|
96769
96875
|
return () => clearInterval(timer);
|
|
96770
96876
|
}
|
|
96877
|
+
discriminatedUnion("kind", [object({
|
|
96878
|
+
kind: literal("raw"),
|
|
96879
|
+
timings: array(number().int()),
|
|
96880
|
+
settings: TransmitSettingsSchema.optional()
|
|
96881
|
+
}), object({
|
|
96882
|
+
kind: literal("pronto"),
|
|
96883
|
+
code: string()
|
|
96884
|
+
})]);
|
|
96885
|
+
object({
|
|
96886
|
+
manufacturer: string().optional(),
|
|
96887
|
+
supportedModels: array(string()).optional(),
|
|
96888
|
+
supportedController: string().optional(),
|
|
96889
|
+
commandsEncoding: string(),
|
|
96890
|
+
delay: number().nonnegative().optional(),
|
|
96891
|
+
commands: record(string(), unknown())
|
|
96892
|
+
});
|
|
96771
96893
|
//#endregion
|
|
96772
96894
|
//#region src/pipeline-analytics/cluster-model-pin.ts
|
|
96773
96895
|
/**
|
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_clip_model_registry = require("../clip-model-registry-
|
|
5
|
+
const require_clip_model_registry = require("../clip-model-registry-CC7pvitG.js");
|
|
6
6
|
let node_fs = require("node:fs");
|
|
7
7
|
node_fs = require_clip_model_registry.__toESM(node_fs);
|
|
8
8
|
let node_path = require("node:path");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $i as BaseAddon, _i as resolvePoolMemoryPolicy, _r as embeddingRequirementsUnavailableError, a as CLIP_EMBEDDING_STEP_ID, fa as normalizeNodeId, gr as embeddingRequirementsFailedError, i as CLIP_TEXT_MODELS, l as resolveClusterModelPin, mr as embeddingModelFailedError, n as DEFAULT_CLIP_MODEL, ni as parseProcStatus, pr as embeddingEncoderCapability, r as CLIP_IMAGE_MODELS, t as BUILTIN_CLIP_MODELS, tn as PoolMemoryWatchdog } from "../clip-model-registry-
|
|
1
|
+
import { $i as BaseAddon, _i as resolvePoolMemoryPolicy, _r as embeddingRequirementsUnavailableError, a as CLIP_EMBEDDING_STEP_ID, fa as normalizeNodeId, gr as embeddingRequirementsFailedError, i as CLIP_TEXT_MODELS, l as resolveClusterModelPin, mr as embeddingModelFailedError, n as DEFAULT_CLIP_MODEL, ni as parseProcStatus, pr as embeddingEncoderCapability, r as CLIP_IMAGE_MODELS, t as BUILTIN_CLIP_MODELS, tn as PoolMemoryWatchdog } from "../clip-model-registry-B_mY0hd7.mjs";
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
3
|
import * as fs from "node:fs";
|
|
4
4
|
import * as path$1 from "node:path";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { a as e, i as t, n, o as r, r as i, t as a } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react__loadShare__.js-Cx9AsA5q.mjs";
|
|
2
2
|
import { t as o } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-B3Wx5J80.mjs";
|
|
3
|
-
import { a as s, c, d as l, f as u, i as d, l as f, m as p, n as m, o as h, p as g, r as _, s as v, t as y, u as b } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-
|
|
3
|
+
import { a as s, c, d as l, f as u, i as d, l as f, m as p, n as m, o as h, p as g, r as _, s as v, t as y, u as b } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-OPayQG8i.mjs";
|
|
4
4
|
import { n as x, t as S } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-CkwmHEi0.mjs";
|
|
5
|
-
import { t as C } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-
|
|
5
|
+
import { t as C } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-YNYqWfWY.mjs";
|
|
6
6
|
//#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
|
|
7
7
|
var w = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), T = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), E = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), D = (e) => {
|
|
8
8
|
let t = E(e);
|
|
@@ -18,7 +18,7 @@ var e = {
|
|
|
18
18
|
},
|
|
19
19
|
"@camstack/types": {
|
|
20
20
|
name: "@camstack/types",
|
|
21
|
-
version: "1.2.
|
|
21
|
+
version: "1.2.438",
|
|
22
22
|
scope: ["default"],
|
|
23
23
|
loaded: !1,
|
|
24
24
|
from: "addon_pipeline_analytics_widgets",
|
|
@@ -33,7 +33,7 @@ var e = {
|
|
|
33
33
|
},
|
|
34
34
|
"@camstack/ui-library": {
|
|
35
35
|
name: "@camstack/ui-library",
|
|
36
|
-
version: "1.2.
|
|
36
|
+
version: "1.2.346",
|
|
37
37
|
scope: ["default"],
|
|
38
38
|
loaded: !1,
|
|
39
39
|
from: "addon_pipeline_analytics_widgets",
|