@camstack/addon-post-analysis 1.2.661 → 1.2.662
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 +7 -0
- package/dist/{clip-model-registry-RvEPUqvS.js → clip-model-registry-C3N1NpST.js} +191 -30
- package/dist/{clip-model-registry-CVajwmEk.mjs → clip-model-registry-ELaSS9jq.mjs} +191 -30
- 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-CwKrui6c.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-BvOlyiL9.mjs} +2 -2
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-D4zkNcgf.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-vaatUWY6.mjs +26 -0
- package/dist/pipeline-analytics/{hostInit-DR75U6YM.mjs → hostInit-BjZchMMh.mjs} +2 -2
- package/dist/pipeline-analytics/index.js +177 -5
- package/dist/pipeline-analytics/index.mjs +177 -5
- package/dist/pipeline-analytics/remoteEntry.js +1 -1
- package/package.json +2 -2
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BDKliSzv.mjs +0 -26
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-BGdtpHOa.mjs +0 -26
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.2.662] - 2026-11-01
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- An appliance that finishes its cycle now notifies by default as "<Device> ha terminato dopo N minuti", and the text can carry the energy used
|
|
15
|
+
- The appliance finish notification reads the recorded run, so duration and energy survive a restart.
|
|
16
|
+
|
|
10
17
|
## [1.2.661] - 2026-11-01
|
|
11
18
|
|
|
12
19
|
### Changed
|
|
@@ -30,7 +30,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
30
30
|
}) : target, mod));
|
|
31
31
|
//#endregion
|
|
32
32
|
let node_crypto = require("node:crypto");
|
|
33
|
-
//#region ../types/dist/event-category-
|
|
33
|
+
//#region ../types/dist/event-category-BmPm98n0.mjs
|
|
34
34
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
35
35
|
EventCategory["SystemBoot"] = "system.boot";
|
|
36
36
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -514,6 +514,10 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
514
514
|
EventCategory["RunningStarted"] = "running.started";
|
|
515
515
|
/** Mirrors `runningStateCapability.events.onFinished`. */
|
|
516
516
|
EventCategory["RunningFinished"] = "running.finished";
|
|
517
|
+
/** Mirrors `deviceRunsCapability.events.onRunOpened` - a durable run record opened. */
|
|
518
|
+
EventCategory["DeviceRunOpened"] = "device-run.opened";
|
|
519
|
+
/** Mirrors `deviceRunsCapability.events.onRunClosed` - a durable run record closed. */
|
|
520
|
+
EventCategory["DeviceRunClosed"] = "device-run.closed";
|
|
517
521
|
/**
|
|
518
522
|
* Cap event fired by every device that registers the `event-emitter`
|
|
519
523
|
* capability. Mirrors `eventEmitterCapability.events.onEvent`. Carries
|
|
@@ -6052,7 +6056,7 @@ var ZodIssueCode = {
|
|
|
6052
6056
|
var ZodFirstPartyTypeKind;
|
|
6053
6057
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
6054
6058
|
//#endregion
|
|
6055
|
-
//#region ../types/dist/sleep-
|
|
6059
|
+
//#region ../types/dist/sleep-BKzhQTSm.mjs
|
|
6056
6060
|
/**
|
|
6057
6061
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
6058
6062
|
* window to float samples (D455).
|
|
@@ -9818,6 +9822,7 @@ var CAP_NAMES = Object.freeze([
|
|
|
9818
9822
|
"device-ops",
|
|
9819
9823
|
"device-provider",
|
|
9820
9824
|
"device-removal-hook",
|
|
9825
|
+
"device-runs",
|
|
9821
9826
|
"device-state",
|
|
9822
9827
|
"device-status",
|
|
9823
9828
|
"dishwasher",
|
|
@@ -11764,7 +11769,7 @@ Object.freeze({
|
|
|
11764
11769
|
* can answer "may a rule actuate this?" without importing the schema barrel
|
|
11765
11770
|
* (~144MB RSS per runner, D28).
|
|
11766
11771
|
*
|
|
11767
|
-
* Coverage:
|
|
11772
|
+
* Coverage: 99 device-scoped capabilities.
|
|
11768
11773
|
*/
|
|
11769
11774
|
var DEVICE_SCOPED_CAPS = new Set([
|
|
11770
11775
|
"accessories",
|
|
@@ -11796,6 +11801,7 @@ var DEVICE_SCOPED_CAPS = new Set([
|
|
|
11796
11801
|
"device-discovery",
|
|
11797
11802
|
"device-extension",
|
|
11798
11803
|
"device-ops",
|
|
11804
|
+
"device-runs",
|
|
11799
11805
|
"device-status",
|
|
11800
11806
|
"dishwasher",
|
|
11801
11807
|
"doorbell",
|
|
@@ -20982,6 +20988,14 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
20982
20988
|
}
|
|
20983
20989
|
} }
|
|
20984
20990
|
},
|
|
20991
|
+
"device-runs": {
|
|
20992
|
+
scope: "device",
|
|
20993
|
+
noun: t("Runs", "Esecuzioni"),
|
|
20994
|
+
events: {
|
|
20995
|
+
onRunOpened: { notOperatorFacing: "the durable record of a run that the running-state start flip already announces" },
|
|
20996
|
+
onRunClosed: { notOperatorFacing: "the durable record of a run that the running-state finish flip already announces" }
|
|
20997
|
+
}
|
|
20998
|
+
},
|
|
20985
20999
|
update: {
|
|
20986
21000
|
scope: "device",
|
|
20987
21001
|
noun: t("Firmware update", "Aggiornamento firmware"),
|
|
@@ -49352,6 +49366,101 @@ method(object({ deviceId: number().int() }), array(SeriesInfoSchema).readonly())
|
|
|
49352
49366
|
kind: "mutation",
|
|
49353
49367
|
auth: "admin"
|
|
49354
49368
|
});
|
|
49369
|
+
/**
|
|
49370
|
+
* device-runs - the durable record of ONE run of a device: a washing cycle, a
|
|
49371
|
+
* dishwasher cycle, later a mow or a clean (D992).
|
|
49372
|
+
*
|
|
49373
|
+
* A run is a DOCUMENT (opened at one instant, closed at another, carrying what
|
|
49374
|
+
* was measured over it), never a sample - device-history keeps the numbers over
|
|
49375
|
+
* time and its `device-runs` provider keeps these documents beside them, because
|
|
49376
|
+
* the energy of a run is a question about device-history's own series. The
|
|
49377
|
+
* record is written from the `running-state` flip on `DeviceStateChanged`; it
|
|
49378
|
+
* survives a restart (the open row is on disk) and a missed flip (boot compares
|
|
49379
|
+
* the open rows against the live snapshots).
|
|
49380
|
+
*
|
|
49381
|
+
* Every measurement is `number | null` and `null` means "could not be
|
|
49382
|
+
* measured", never `0` (D393). A run closed by the boot reconcile because the
|
|
49383
|
+
* device stopped while nobody was watching has `outcome: 'unknown'`.
|
|
49384
|
+
*/
|
|
49385
|
+
var DeviceRunKindSchema = _enum([
|
|
49386
|
+
"appliance",
|
|
49387
|
+
"mower",
|
|
49388
|
+
"vacuum"
|
|
49389
|
+
]);
|
|
49390
|
+
var DeviceRunStateSchema = _enum(["open", "closed"]);
|
|
49391
|
+
var DeviceRunOutcomeSchema = _enum([
|
|
49392
|
+
"completed",
|
|
49393
|
+
"aborted",
|
|
49394
|
+
"error",
|
|
49395
|
+
"unknown"
|
|
49396
|
+
]);
|
|
49397
|
+
/** What opened or closed the run. `reconcile` is the boot comparison against live state. */
|
|
49398
|
+
var DeviceRunSourceSchema = _enum([
|
|
49399
|
+
"running-state",
|
|
49400
|
+
"activity",
|
|
49401
|
+
"reconcile"
|
|
49402
|
+
]);
|
|
49403
|
+
/** How the energy of a run was obtained; `null` when it could not be. */
|
|
49404
|
+
var DeviceRunEnergyMethodSchema = _enum(["counter-delta", "history-integral"]);
|
|
49405
|
+
var DeviceRunPhaseSchema = object({
|
|
49406
|
+
phase: string(),
|
|
49407
|
+
at: number()
|
|
49408
|
+
});
|
|
49409
|
+
/** The kind-specific block; a later phase adds a branch, nothing else changes. */
|
|
49410
|
+
var DeviceRunDetailSchema = discriminatedUnion("kind", [object({
|
|
49411
|
+
kind: literal("appliance"),
|
|
49412
|
+
/** kWh used over the run. */
|
|
49413
|
+
energyKwh: number().nullable().meta(readingMeta("energy")),
|
|
49414
|
+
energyMethod: DeviceRunEnergyMethodSchema.nullable(),
|
|
49415
|
+
/** Highest power seen while the run was open. */
|
|
49416
|
+
peakW: number().nullable().meta(readingMeta("power")),
|
|
49417
|
+
/** Time-weighted mean power while the run was open. */
|
|
49418
|
+
avgW: number().nullable().meta(readingMeta("power")),
|
|
49419
|
+
/** The program the appliance said it ran when the run opened. */
|
|
49420
|
+
program: string().nullable(),
|
|
49421
|
+
remainingAtStartSec: number().nullable().meta(readingMeta("duration")),
|
|
49422
|
+
/** The last phase the device reported before the run closed. */
|
|
49423
|
+
finalPhase: string().nullable(),
|
|
49424
|
+
/**
|
|
49425
|
+
* The meter's energy counter when the run opened; `null` when the meter had
|
|
49426
|
+
* not said (or the run was opened late, by the boot reconcile). It lives in
|
|
49427
|
+
* the row so a run that outlives a restart still ends with `end - start`.
|
|
49428
|
+
*/
|
|
49429
|
+
energyStartKwh: number().nullable().meta(readingMeta("energy")),
|
|
49430
|
+
/** Milliseconds of power readings behind `avgW` - the weight a restart resumes the mean with. */
|
|
49431
|
+
powerObservedMs: number()
|
|
49432
|
+
})]);
|
|
49433
|
+
var DeviceRunSchema = object({
|
|
49434
|
+
/** `${deviceId}:${startedAt}`. */
|
|
49435
|
+
runId: string(),
|
|
49436
|
+
deviceId: number().int(),
|
|
49437
|
+
kind: DeviceRunKindSchema,
|
|
49438
|
+
state: DeviceRunStateSchema,
|
|
49439
|
+
startedAt: number(),
|
|
49440
|
+
endedAt: number().nullable(),
|
|
49441
|
+
durationMs: number().nullable(),
|
|
49442
|
+
outcome: DeviceRunOutcomeSchema.nullable(),
|
|
49443
|
+
startSource: DeviceRunSourceSchema,
|
|
49444
|
+
endSource: DeviceRunSourceSchema.nullable(),
|
|
49445
|
+
/** Where the device's running bit came from (`running-state.source`); `null` when it did not say. */
|
|
49446
|
+
runningSource: _enum(["native", "assigned"]).nullable(),
|
|
49447
|
+
phases: array(DeviceRunPhaseSchema),
|
|
49448
|
+
detail: DeviceRunDetailSchema
|
|
49449
|
+
});
|
|
49450
|
+
DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, method(object({
|
|
49451
|
+
deviceId: number().int(),
|
|
49452
|
+
outcome: DeviceRunOutcomeSchema.optional(),
|
|
49453
|
+
atFrom: number().optional(),
|
|
49454
|
+
atTo: number().optional(),
|
|
49455
|
+
limit: number().int().positive().max(200).default(50),
|
|
49456
|
+
cursor: string().optional()
|
|
49457
|
+
}), object({
|
|
49458
|
+
runs: array(DeviceRunSchema).readonly(),
|
|
49459
|
+
nextCursor: string().nullable()
|
|
49460
|
+
})), method(object({
|
|
49461
|
+
deviceId: number().int(),
|
|
49462
|
+
runId: string()
|
|
49463
|
+
}), DeviceRunSchema.nullable()), method(object({ deviceId: number().int() }), DeviceRunSchema.nullable());
|
|
49355
49464
|
var DeviceCaStatusSchema = discriminatedUnion("state", [
|
|
49356
49465
|
object({ state: literal("absent") }),
|
|
49357
49466
|
object({
|
|
@@ -49487,8 +49596,8 @@ method(object({}), object({
|
|
|
49487
49596
|
});
|
|
49488
49597
|
var KeychainKeySourceSchema = object({
|
|
49489
49598
|
kind: _enum([
|
|
49490
|
-
"
|
|
49491
|
-
"previous-
|
|
49599
|
+
"mounted-file",
|
|
49600
|
+
"previous-mounted-file",
|
|
49492
49601
|
"platform",
|
|
49493
49602
|
"default-file"
|
|
49494
49603
|
]),
|
|
@@ -67997,10 +68106,7 @@ method(object({ nodeId: string().optional() }).optional(), array(AddonListItemSc
|
|
|
67997
68106
|
}), InstallPackageResultSchema, {
|
|
67998
68107
|
kind: "mutation",
|
|
67999
68108
|
auth: "admin"
|
|
68000
|
-
}), method(object({
|
|
68001
|
-
kind: "mutation",
|
|
68002
|
-
auth: "admin"
|
|
68003
|
-
}), method(_void(), boolean()), method(_void(), array(unknown()).readonly()), method(object({
|
|
68109
|
+
}), method(object({
|
|
68004
68110
|
packageName: string().min(1),
|
|
68005
68111
|
nodeId: string().optional(),
|
|
68006
68112
|
everywhere: boolean().optional()
|
|
@@ -83612,13 +83718,6 @@ Object.freeze({
|
|
|
83612
83718
|
access: "view",
|
|
83613
83719
|
role: "admin"
|
|
83614
83720
|
},
|
|
83615
|
-
"addons.installFromWorkspace": {
|
|
83616
|
-
capName: "addons",
|
|
83617
|
-
capScope: "system",
|
|
83618
|
-
addonId: null,
|
|
83619
|
-
access: "create",
|
|
83620
|
-
role: "admin"
|
|
83621
|
-
},
|
|
83622
83721
|
"addons.installPackage": {
|
|
83623
83722
|
capName: "addons",
|
|
83624
83723
|
capScope: "system",
|
|
@@ -83626,13 +83725,6 @@ Object.freeze({
|
|
|
83626
83725
|
access: "create",
|
|
83627
83726
|
role: "admin"
|
|
83628
83727
|
},
|
|
83629
|
-
"addons.isWorkspaceAvailable": {
|
|
83630
|
-
capName: "addons",
|
|
83631
|
-
capScope: "system",
|
|
83632
|
-
addonId: null,
|
|
83633
|
-
access: "view",
|
|
83634
|
-
role: "admin"
|
|
83635
|
-
},
|
|
83636
83728
|
"addons.list": {
|
|
83637
83729
|
capName: "addons",
|
|
83638
83730
|
capScope: "system",
|
|
@@ -83682,13 +83774,6 @@ Object.freeze({
|
|
|
83682
83774
|
access: "view",
|
|
83683
83775
|
role: "admin"
|
|
83684
83776
|
},
|
|
83685
|
-
"addons.listWorkspacePackages": {
|
|
83686
|
-
capName: "addons",
|
|
83687
|
-
capScope: "system",
|
|
83688
|
-
addonId: null,
|
|
83689
|
-
access: "view",
|
|
83690
|
-
role: "admin"
|
|
83691
|
-
},
|
|
83692
83777
|
"addons.onAddonLogs": {
|
|
83693
83778
|
capName: "addons",
|
|
83694
83779
|
capScope: "system",
|
|
@@ -86356,6 +86441,27 @@ Object.freeze({
|
|
|
86356
86441
|
access: "create",
|
|
86357
86442
|
role: "admin"
|
|
86358
86443
|
},
|
|
86444
|
+
"deviceRuns.getCurrentRun": {
|
|
86445
|
+
capName: "device-runs",
|
|
86446
|
+
capScope: "device",
|
|
86447
|
+
addonId: null,
|
|
86448
|
+
access: "view",
|
|
86449
|
+
role: "viewer"
|
|
86450
|
+
},
|
|
86451
|
+
"deviceRuns.getRun": {
|
|
86452
|
+
capName: "device-runs",
|
|
86453
|
+
capScope: "device",
|
|
86454
|
+
addonId: null,
|
|
86455
|
+
access: "view",
|
|
86456
|
+
role: "viewer"
|
|
86457
|
+
},
|
|
86458
|
+
"deviceRuns.listRuns": {
|
|
86459
|
+
capName: "device-runs",
|
|
86460
|
+
capScope: "device",
|
|
86461
|
+
addonId: null,
|
|
86462
|
+
access: "view",
|
|
86463
|
+
role: "viewer"
|
|
86464
|
+
},
|
|
86359
86465
|
"deviceState.claimFields": {
|
|
86360
86466
|
capName: "device-state",
|
|
86361
86467
|
capScope: "system",
|
|
@@ -94561,6 +94667,21 @@ Object.freeze({
|
|
|
94561
94667
|
form: "single",
|
|
94562
94668
|
optional: false
|
|
94563
94669
|
}],
|
|
94670
|
+
"deviceRuns.getCurrentRun": [{
|
|
94671
|
+
name: "deviceId",
|
|
94672
|
+
form: "single",
|
|
94673
|
+
optional: false
|
|
94674
|
+
}],
|
|
94675
|
+
"deviceRuns.getRun": [{
|
|
94676
|
+
name: "deviceId",
|
|
94677
|
+
form: "single",
|
|
94678
|
+
optional: false
|
|
94679
|
+
}],
|
|
94680
|
+
"deviceRuns.listRuns": [{
|
|
94681
|
+
name: "deviceId",
|
|
94682
|
+
form: "single",
|
|
94683
|
+
optional: false
|
|
94684
|
+
}],
|
|
94564
94685
|
"deviceState.claimFields": [{
|
|
94565
94686
|
name: "deviceId",
|
|
94566
94687
|
form: "single",
|
|
@@ -99098,6 +99219,46 @@ var NC_TEMPLATE_VARS = [
|
|
|
99098
99219
|
fields: [...RULE_TEXT],
|
|
99099
99220
|
kinds: ["sensor"]
|
|
99100
99221
|
},
|
|
99222
|
+
{
|
|
99223
|
+
name: "duration",
|
|
99224
|
+
label: "Cycle duration",
|
|
99225
|
+
description: "How long a finished appliance cycle ran, e.g. \"52 minutes\" or \"1 h 12 min\"; empty when the start is unknown.",
|
|
99226
|
+
example: "52 minuti",
|
|
99227
|
+
group: "sensor",
|
|
99228
|
+
families: ["rule"],
|
|
99229
|
+
fields: [...RULE_TEXT],
|
|
99230
|
+
kinds: ["sensor"]
|
|
99231
|
+
},
|
|
99232
|
+
{
|
|
99233
|
+
name: "energy",
|
|
99234
|
+
label: "Cycle energy",
|
|
99235
|
+
description: "Energy an appliance used over its finished cycle, e.g. \"0.84 kWh\"; empty without a power meter.",
|
|
99236
|
+
example: "0,84 kWh",
|
|
99237
|
+
group: "sensor",
|
|
99238
|
+
families: ["rule"],
|
|
99239
|
+
fields: [...RULE_TEXT],
|
|
99240
|
+
kinds: ["sensor"]
|
|
99241
|
+
},
|
|
99242
|
+
{
|
|
99243
|
+
name: "afterDuration",
|
|
99244
|
+
label: "\"after <duration>\" fragment",
|
|
99245
|
+
description: "Leading space included; empty when the cycle duration is unknown.",
|
|
99246
|
+
example: " dopo 52 minuti",
|
|
99247
|
+
group: "sensor",
|
|
99248
|
+
families: ["rule"],
|
|
99249
|
+
fields: [...RULE_TEXT],
|
|
99250
|
+
kinds: ["sensor"]
|
|
99251
|
+
},
|
|
99252
|
+
{
|
|
99253
|
+
name: "usedEnergy",
|
|
99254
|
+
label: "\"used <energy>\" fragment",
|
|
99255
|
+
description: "Leading space included; empty when the energy is unknown.",
|
|
99256
|
+
example: " e ha consumato 0,84 kWh",
|
|
99257
|
+
group: "sensor",
|
|
99258
|
+
families: ["rule"],
|
|
99259
|
+
fields: [...RULE_TEXT],
|
|
99260
|
+
kinds: ["sensor"]
|
|
99261
|
+
},
|
|
99101
99262
|
{
|
|
99102
99263
|
name: "ai",
|
|
99103
99264
|
label: "AI sentence",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
|
-
//#region ../types/dist/event-category-
|
|
2
|
+
//#region ../types/dist/event-category-BmPm98n0.mjs
|
|
3
3
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4
4
|
EventCategory["SystemBoot"] = "system.boot";
|
|
5
5
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -483,6 +483,10 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
483
483
|
EventCategory["RunningStarted"] = "running.started";
|
|
484
484
|
/** Mirrors `runningStateCapability.events.onFinished`. */
|
|
485
485
|
EventCategory["RunningFinished"] = "running.finished";
|
|
486
|
+
/** Mirrors `deviceRunsCapability.events.onRunOpened` - a durable run record opened. */
|
|
487
|
+
EventCategory["DeviceRunOpened"] = "device-run.opened";
|
|
488
|
+
/** Mirrors `deviceRunsCapability.events.onRunClosed` - a durable run record closed. */
|
|
489
|
+
EventCategory["DeviceRunClosed"] = "device-run.closed";
|
|
486
490
|
/**
|
|
487
491
|
* Cap event fired by every device that registers the `event-emitter`
|
|
488
492
|
* capability. Mirrors `eventEmitterCapability.events.onEvent`. Carries
|
|
@@ -6021,7 +6025,7 @@ var ZodIssueCode = {
|
|
|
6021
6025
|
var ZodFirstPartyTypeKind;
|
|
6022
6026
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
6023
6027
|
//#endregion
|
|
6024
|
-
//#region ../types/dist/sleep-
|
|
6028
|
+
//#region ../types/dist/sleep-BKzhQTSm.mjs
|
|
6025
6029
|
/**
|
|
6026
6030
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
6027
6031
|
* window to float samples (D455).
|
|
@@ -9787,6 +9791,7 @@ var CAP_NAMES = Object.freeze([
|
|
|
9787
9791
|
"device-ops",
|
|
9788
9792
|
"device-provider",
|
|
9789
9793
|
"device-removal-hook",
|
|
9794
|
+
"device-runs",
|
|
9790
9795
|
"device-state",
|
|
9791
9796
|
"device-status",
|
|
9792
9797
|
"dishwasher",
|
|
@@ -11733,7 +11738,7 @@ Object.freeze({
|
|
|
11733
11738
|
* can answer "may a rule actuate this?" without importing the schema barrel
|
|
11734
11739
|
* (~144MB RSS per runner, D28).
|
|
11735
11740
|
*
|
|
11736
|
-
* Coverage:
|
|
11741
|
+
* Coverage: 99 device-scoped capabilities.
|
|
11737
11742
|
*/
|
|
11738
11743
|
var DEVICE_SCOPED_CAPS = new Set([
|
|
11739
11744
|
"accessories",
|
|
@@ -11765,6 +11770,7 @@ var DEVICE_SCOPED_CAPS = new Set([
|
|
|
11765
11770
|
"device-discovery",
|
|
11766
11771
|
"device-extension",
|
|
11767
11772
|
"device-ops",
|
|
11773
|
+
"device-runs",
|
|
11768
11774
|
"device-status",
|
|
11769
11775
|
"dishwasher",
|
|
11770
11776
|
"doorbell",
|
|
@@ -20951,6 +20957,14 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
20951
20957
|
}
|
|
20952
20958
|
} }
|
|
20953
20959
|
},
|
|
20960
|
+
"device-runs": {
|
|
20961
|
+
scope: "device",
|
|
20962
|
+
noun: t("Runs", "Esecuzioni"),
|
|
20963
|
+
events: {
|
|
20964
|
+
onRunOpened: { notOperatorFacing: "the durable record of a run that the running-state start flip already announces" },
|
|
20965
|
+
onRunClosed: { notOperatorFacing: "the durable record of a run that the running-state finish flip already announces" }
|
|
20966
|
+
}
|
|
20967
|
+
},
|
|
20954
20968
|
update: {
|
|
20955
20969
|
scope: "device",
|
|
20956
20970
|
noun: t("Firmware update", "Aggiornamento firmware"),
|
|
@@ -49321,6 +49335,101 @@ method(object({ deviceId: number().int() }), array(SeriesInfoSchema).readonly())
|
|
|
49321
49335
|
kind: "mutation",
|
|
49322
49336
|
auth: "admin"
|
|
49323
49337
|
});
|
|
49338
|
+
/**
|
|
49339
|
+
* device-runs - the durable record of ONE run of a device: a washing cycle, a
|
|
49340
|
+
* dishwasher cycle, later a mow or a clean (D992).
|
|
49341
|
+
*
|
|
49342
|
+
* A run is a DOCUMENT (opened at one instant, closed at another, carrying what
|
|
49343
|
+
* was measured over it), never a sample - device-history keeps the numbers over
|
|
49344
|
+
* time and its `device-runs` provider keeps these documents beside them, because
|
|
49345
|
+
* the energy of a run is a question about device-history's own series. The
|
|
49346
|
+
* record is written from the `running-state` flip on `DeviceStateChanged`; it
|
|
49347
|
+
* survives a restart (the open row is on disk) and a missed flip (boot compares
|
|
49348
|
+
* the open rows against the live snapshots).
|
|
49349
|
+
*
|
|
49350
|
+
* Every measurement is `number | null` and `null` means "could not be
|
|
49351
|
+
* measured", never `0` (D393). A run closed by the boot reconcile because the
|
|
49352
|
+
* device stopped while nobody was watching has `outcome: 'unknown'`.
|
|
49353
|
+
*/
|
|
49354
|
+
var DeviceRunKindSchema = _enum([
|
|
49355
|
+
"appliance",
|
|
49356
|
+
"mower",
|
|
49357
|
+
"vacuum"
|
|
49358
|
+
]);
|
|
49359
|
+
var DeviceRunStateSchema = _enum(["open", "closed"]);
|
|
49360
|
+
var DeviceRunOutcomeSchema = _enum([
|
|
49361
|
+
"completed",
|
|
49362
|
+
"aborted",
|
|
49363
|
+
"error",
|
|
49364
|
+
"unknown"
|
|
49365
|
+
]);
|
|
49366
|
+
/** What opened or closed the run. `reconcile` is the boot comparison against live state. */
|
|
49367
|
+
var DeviceRunSourceSchema = _enum([
|
|
49368
|
+
"running-state",
|
|
49369
|
+
"activity",
|
|
49370
|
+
"reconcile"
|
|
49371
|
+
]);
|
|
49372
|
+
/** How the energy of a run was obtained; `null` when it could not be. */
|
|
49373
|
+
var DeviceRunEnergyMethodSchema = _enum(["counter-delta", "history-integral"]);
|
|
49374
|
+
var DeviceRunPhaseSchema = object({
|
|
49375
|
+
phase: string(),
|
|
49376
|
+
at: number()
|
|
49377
|
+
});
|
|
49378
|
+
/** The kind-specific block; a later phase adds a branch, nothing else changes. */
|
|
49379
|
+
var DeviceRunDetailSchema = discriminatedUnion("kind", [object({
|
|
49380
|
+
kind: literal("appliance"),
|
|
49381
|
+
/** kWh used over the run. */
|
|
49382
|
+
energyKwh: number().nullable().meta(readingMeta("energy")),
|
|
49383
|
+
energyMethod: DeviceRunEnergyMethodSchema.nullable(),
|
|
49384
|
+
/** Highest power seen while the run was open. */
|
|
49385
|
+
peakW: number().nullable().meta(readingMeta("power")),
|
|
49386
|
+
/** Time-weighted mean power while the run was open. */
|
|
49387
|
+
avgW: number().nullable().meta(readingMeta("power")),
|
|
49388
|
+
/** The program the appliance said it ran when the run opened. */
|
|
49389
|
+
program: string().nullable(),
|
|
49390
|
+
remainingAtStartSec: number().nullable().meta(readingMeta("duration")),
|
|
49391
|
+
/** The last phase the device reported before the run closed. */
|
|
49392
|
+
finalPhase: string().nullable(),
|
|
49393
|
+
/**
|
|
49394
|
+
* The meter's energy counter when the run opened; `null` when the meter had
|
|
49395
|
+
* not said (or the run was opened late, by the boot reconcile). It lives in
|
|
49396
|
+
* the row so a run that outlives a restart still ends with `end - start`.
|
|
49397
|
+
*/
|
|
49398
|
+
energyStartKwh: number().nullable().meta(readingMeta("energy")),
|
|
49399
|
+
/** Milliseconds of power readings behind `avgW` - the weight a restart resumes the mean with. */
|
|
49400
|
+
powerObservedMs: number()
|
|
49401
|
+
})]);
|
|
49402
|
+
var DeviceRunSchema = object({
|
|
49403
|
+
/** `${deviceId}:${startedAt}`. */
|
|
49404
|
+
runId: string(),
|
|
49405
|
+
deviceId: number().int(),
|
|
49406
|
+
kind: DeviceRunKindSchema,
|
|
49407
|
+
state: DeviceRunStateSchema,
|
|
49408
|
+
startedAt: number(),
|
|
49409
|
+
endedAt: number().nullable(),
|
|
49410
|
+
durationMs: number().nullable(),
|
|
49411
|
+
outcome: DeviceRunOutcomeSchema.nullable(),
|
|
49412
|
+
startSource: DeviceRunSourceSchema,
|
|
49413
|
+
endSource: DeviceRunSourceSchema.nullable(),
|
|
49414
|
+
/** Where the device's running bit came from (`running-state.source`); `null` when it did not say. */
|
|
49415
|
+
runningSource: _enum(["native", "assigned"]).nullable(),
|
|
49416
|
+
phases: array(DeviceRunPhaseSchema),
|
|
49417
|
+
detail: DeviceRunDetailSchema
|
|
49418
|
+
});
|
|
49419
|
+
DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, method(object({
|
|
49420
|
+
deviceId: number().int(),
|
|
49421
|
+
outcome: DeviceRunOutcomeSchema.optional(),
|
|
49422
|
+
atFrom: number().optional(),
|
|
49423
|
+
atTo: number().optional(),
|
|
49424
|
+
limit: number().int().positive().max(200).default(50),
|
|
49425
|
+
cursor: string().optional()
|
|
49426
|
+
}), object({
|
|
49427
|
+
runs: array(DeviceRunSchema).readonly(),
|
|
49428
|
+
nextCursor: string().nullable()
|
|
49429
|
+
})), method(object({
|
|
49430
|
+
deviceId: number().int(),
|
|
49431
|
+
runId: string()
|
|
49432
|
+
}), DeviceRunSchema.nullable()), method(object({ deviceId: number().int() }), DeviceRunSchema.nullable());
|
|
49324
49433
|
var DeviceCaStatusSchema = discriminatedUnion("state", [
|
|
49325
49434
|
object({ state: literal("absent") }),
|
|
49326
49435
|
object({
|
|
@@ -49456,8 +49565,8 @@ method(object({}), object({
|
|
|
49456
49565
|
});
|
|
49457
49566
|
var KeychainKeySourceSchema = object({
|
|
49458
49567
|
kind: _enum([
|
|
49459
|
-
"
|
|
49460
|
-
"previous-
|
|
49568
|
+
"mounted-file",
|
|
49569
|
+
"previous-mounted-file",
|
|
49461
49570
|
"platform",
|
|
49462
49571
|
"default-file"
|
|
49463
49572
|
]),
|
|
@@ -67966,10 +68075,7 @@ method(object({ nodeId: string().optional() }).optional(), array(AddonListItemSc
|
|
|
67966
68075
|
}), InstallPackageResultSchema, {
|
|
67967
68076
|
kind: "mutation",
|
|
67968
68077
|
auth: "admin"
|
|
67969
|
-
}), method(object({
|
|
67970
|
-
kind: "mutation",
|
|
67971
|
-
auth: "admin"
|
|
67972
|
-
}), method(_void(), boolean()), method(_void(), array(unknown()).readonly()), method(object({
|
|
68078
|
+
}), method(object({
|
|
67973
68079
|
packageName: string().min(1),
|
|
67974
68080
|
nodeId: string().optional(),
|
|
67975
68081
|
everywhere: boolean().optional()
|
|
@@ -83581,13 +83687,6 @@ Object.freeze({
|
|
|
83581
83687
|
access: "view",
|
|
83582
83688
|
role: "admin"
|
|
83583
83689
|
},
|
|
83584
|
-
"addons.installFromWorkspace": {
|
|
83585
|
-
capName: "addons",
|
|
83586
|
-
capScope: "system",
|
|
83587
|
-
addonId: null,
|
|
83588
|
-
access: "create",
|
|
83589
|
-
role: "admin"
|
|
83590
|
-
},
|
|
83591
83690
|
"addons.installPackage": {
|
|
83592
83691
|
capName: "addons",
|
|
83593
83692
|
capScope: "system",
|
|
@@ -83595,13 +83694,6 @@ Object.freeze({
|
|
|
83595
83694
|
access: "create",
|
|
83596
83695
|
role: "admin"
|
|
83597
83696
|
},
|
|
83598
|
-
"addons.isWorkspaceAvailable": {
|
|
83599
|
-
capName: "addons",
|
|
83600
|
-
capScope: "system",
|
|
83601
|
-
addonId: null,
|
|
83602
|
-
access: "view",
|
|
83603
|
-
role: "admin"
|
|
83604
|
-
},
|
|
83605
83697
|
"addons.list": {
|
|
83606
83698
|
capName: "addons",
|
|
83607
83699
|
capScope: "system",
|
|
@@ -83651,13 +83743,6 @@ Object.freeze({
|
|
|
83651
83743
|
access: "view",
|
|
83652
83744
|
role: "admin"
|
|
83653
83745
|
},
|
|
83654
|
-
"addons.listWorkspacePackages": {
|
|
83655
|
-
capName: "addons",
|
|
83656
|
-
capScope: "system",
|
|
83657
|
-
addonId: null,
|
|
83658
|
-
access: "view",
|
|
83659
|
-
role: "admin"
|
|
83660
|
-
},
|
|
83661
83746
|
"addons.onAddonLogs": {
|
|
83662
83747
|
capName: "addons",
|
|
83663
83748
|
capScope: "system",
|
|
@@ -86325,6 +86410,27 @@ Object.freeze({
|
|
|
86325
86410
|
access: "create",
|
|
86326
86411
|
role: "admin"
|
|
86327
86412
|
},
|
|
86413
|
+
"deviceRuns.getCurrentRun": {
|
|
86414
|
+
capName: "device-runs",
|
|
86415
|
+
capScope: "device",
|
|
86416
|
+
addonId: null,
|
|
86417
|
+
access: "view",
|
|
86418
|
+
role: "viewer"
|
|
86419
|
+
},
|
|
86420
|
+
"deviceRuns.getRun": {
|
|
86421
|
+
capName: "device-runs",
|
|
86422
|
+
capScope: "device",
|
|
86423
|
+
addonId: null,
|
|
86424
|
+
access: "view",
|
|
86425
|
+
role: "viewer"
|
|
86426
|
+
},
|
|
86427
|
+
"deviceRuns.listRuns": {
|
|
86428
|
+
capName: "device-runs",
|
|
86429
|
+
capScope: "device",
|
|
86430
|
+
addonId: null,
|
|
86431
|
+
access: "view",
|
|
86432
|
+
role: "viewer"
|
|
86433
|
+
},
|
|
86328
86434
|
"deviceState.claimFields": {
|
|
86329
86435
|
capName: "device-state",
|
|
86330
86436
|
capScope: "system",
|
|
@@ -94530,6 +94636,21 @@ Object.freeze({
|
|
|
94530
94636
|
form: "single",
|
|
94531
94637
|
optional: false
|
|
94532
94638
|
}],
|
|
94639
|
+
"deviceRuns.getCurrentRun": [{
|
|
94640
|
+
name: "deviceId",
|
|
94641
|
+
form: "single",
|
|
94642
|
+
optional: false
|
|
94643
|
+
}],
|
|
94644
|
+
"deviceRuns.getRun": [{
|
|
94645
|
+
name: "deviceId",
|
|
94646
|
+
form: "single",
|
|
94647
|
+
optional: false
|
|
94648
|
+
}],
|
|
94649
|
+
"deviceRuns.listRuns": [{
|
|
94650
|
+
name: "deviceId",
|
|
94651
|
+
form: "single",
|
|
94652
|
+
optional: false
|
|
94653
|
+
}],
|
|
94533
94654
|
"deviceState.claimFields": [{
|
|
94534
94655
|
name: "deviceId",
|
|
94535
94656
|
form: "single",
|
|
@@ -99067,6 +99188,46 @@ var NC_TEMPLATE_VARS = [
|
|
|
99067
99188
|
fields: [...RULE_TEXT],
|
|
99068
99189
|
kinds: ["sensor"]
|
|
99069
99190
|
},
|
|
99191
|
+
{
|
|
99192
|
+
name: "duration",
|
|
99193
|
+
label: "Cycle duration",
|
|
99194
|
+
description: "How long a finished appliance cycle ran, e.g. \"52 minutes\" or \"1 h 12 min\"; empty when the start is unknown.",
|
|
99195
|
+
example: "52 minuti",
|
|
99196
|
+
group: "sensor",
|
|
99197
|
+
families: ["rule"],
|
|
99198
|
+
fields: [...RULE_TEXT],
|
|
99199
|
+
kinds: ["sensor"]
|
|
99200
|
+
},
|
|
99201
|
+
{
|
|
99202
|
+
name: "energy",
|
|
99203
|
+
label: "Cycle energy",
|
|
99204
|
+
description: "Energy an appliance used over its finished cycle, e.g. \"0.84 kWh\"; empty without a power meter.",
|
|
99205
|
+
example: "0,84 kWh",
|
|
99206
|
+
group: "sensor",
|
|
99207
|
+
families: ["rule"],
|
|
99208
|
+
fields: [...RULE_TEXT],
|
|
99209
|
+
kinds: ["sensor"]
|
|
99210
|
+
},
|
|
99211
|
+
{
|
|
99212
|
+
name: "afterDuration",
|
|
99213
|
+
label: "\"after <duration>\" fragment",
|
|
99214
|
+
description: "Leading space included; empty when the cycle duration is unknown.",
|
|
99215
|
+
example: " dopo 52 minuti",
|
|
99216
|
+
group: "sensor",
|
|
99217
|
+
families: ["rule"],
|
|
99218
|
+
fields: [...RULE_TEXT],
|
|
99219
|
+
kinds: ["sensor"]
|
|
99220
|
+
},
|
|
99221
|
+
{
|
|
99222
|
+
name: "usedEnergy",
|
|
99223
|
+
label: "\"used <energy>\" fragment",
|
|
99224
|
+
description: "Leading space included; empty when the energy is unknown.",
|
|
99225
|
+
example: " e ha consumato 0,84 kWh",
|
|
99226
|
+
group: "sensor",
|
|
99227
|
+
families: ["rule"],
|
|
99228
|
+
fields: [...RULE_TEXT],
|
|
99229
|
+
kinds: ["sensor"]
|
|
99230
|
+
},
|
|
99070
99231
|
{
|
|
99071
99232
|
name: "ai",
|
|
99072
99233
|
label: "AI sentence",
|
|
@@ -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-C3N1NpST.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 { Si as resolvePoolMemoryPolicy, _a as normalizeNodeId, _r as embeddingModelFailedError, a as CLIP_EMBEDDING_STEP_ID, br as embeddingRequirementsUnavailableError, gr as embeddingEncoderCapability, i as CLIP_TEXT_MODELS, l as resolveClusterModelPin, n as DEFAULT_CLIP_MODEL, r as CLIP_IMAGE_MODELS, ra as BaseAddon, rn as PoolMemoryWatchdog, si as parseProcStatus, t as BUILTIN_CLIP_MODELS, yr as embeddingRequirementsFailedError } from "../clip-model-registry-
|
|
1
|
+
import { Si as resolvePoolMemoryPolicy, _a as normalizeNodeId, _r as embeddingModelFailedError, a as CLIP_EMBEDDING_STEP_ID, br as embeddingRequirementsUnavailableError, gr as embeddingEncoderCapability, i as CLIP_TEXT_MODELS, l as resolveClusterModelPin, n as DEFAULT_CLIP_MODEL, r as CLIP_IMAGE_MODELS, ra as BaseAddon, rn as PoolMemoryWatchdog, si as parseProcStatus, t as BUILTIN_CLIP_MODELS, yr as embeddingRequirementsFailedError } from "../clip-model-registry-ELaSS9jq.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";
|