@camstack/addon-post-analysis 1.2.623 → 1.2.625
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/{clip-model-registry-C58fyELd.mjs → clip-model-registry-BmPWAiiw.mjs} +195 -124
- package/dist/{clip-model-registry-KKT83z9U.js → clip-model-registry-Bz5VWLtO.js} +195 -124
- 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-_ahOxwNA.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-u9k_8R7t.mjs} +3 -3
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-yap5surJ.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-Dh58k_r9.mjs +26 -0
- package/dist/pipeline-analytics/{hostInit-CdRVx4vF.mjs → hostInit-Bx3x53tR.mjs} +3 -3
- package/dist/pipeline-analytics/index.js +206 -222
- package/dist/pipeline-analytics/index.mjs +206 -222
- 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-V5-s2hmZ.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-B1HZu0i3.mjs +0 -26
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as MediaFileKindEnum, $i as defineCustomActions, $n as cosineSimilarity$1, $r as plateGalleryCapability, $t as OpsLogEntrySchema, A as DeclaredDevices, Ai as systemEventFamilyProblems, An as activateAlarmProfile, Ar as isEventKindLabelKey, At as NcAlarmSensorsInputSchema, B as FULL_IMAGE_BBOX, Bi as DEFAULT_FIRST_SIGHTING_FRESHNESS_MS, Bn as applySecureOnArmEdit, Br as isVectorIndexDimConflict, Bt as NcRuleUpdateInputSchema, C as ClearTrackRelationResultSchema, Ca as EventCategory, Ci as storageOccupancyCapability, Cn as TimelapseRulePatchSchema, Cr as isAlertEpisodeOpen, Ct as NC_SNOOZE_MAX_MINUTES, D as DEFAULT_TIMELAPSE_PREVIEW_TEXT, Di as summarizeReview, Dn as TrackRelationSchema, Dr as isDefaultAlarmProfileId, Dt as NC_TEMPLATE_VARS, E as DEFAULT_EVENT_COLOR, Ei as subjectPathSvgPoints, En as TrackRelationKindSchema, Er as isAudioClassName, Et as NC_TAXONOMY, F as EVENT_DENSITY_BATCH_MAX, Fi as templateVarsFor, Fn as alertEpisodeKind, Fr as isRetiredClearKey, Ft as NcRuleActionSchema, G as ListTrackRelationsResultSchema, Gi as errMsg, Gn as buildEventKindDescriptor, Gr as ncMediaPolicyError, Gt as NcSnoozeSuppressedSchema, H as LABEL_SUPPLY_MACRO, Hi as evaluateSensorEdge, Hn as assertTimelapseCadences, Hr as linkedStepOf, Ht as NcSharedSequenceSchema, I as EVENT_KIND_BY_CAP, Ii as vectorDimFromBase64, In as alertEpisodePayload, Ir as isRootSuppliableStepId, It as NcRuleInputSchema, J as MAX_BIRTH_DECISION_RECORDS, Ji as InvalidRecordError, Jn as calendarEventLocalSpan, Jr as occupancyScope, Jt as NcTaxonomySchema, K as LockStateSchema, Ki as BaseAddon, Kn as buildSubjectPath, Kr as normalizeNcMediaPolicy, Kt as NcStateSummarySectionIdSchema, L as EVENT_OWNER_TYPES, Li as viewerLinkBaseOf, Ln as applyBlockingEdit, Lr as isScheduleActive, Lt as NcRulePatchSchema, M as EMBEDDING_MODEL_FAILED, Mi as systemEventSummaryScheduleOf, Mn as alarmDeviceSecureOnArm, Mr as isKnownTemplateVar, Mt as NcAlarmSettingsPatchSchema, N as EMBEDDING_REQUIREMENTS_FAILED, Ni as systemEventSummarySplitOf, Nn as alarmPanelCapability, Nr as isLabelSupplyStepId, Nt as NcConditionDescriptorSchema, O as DETECTION_MACRO_CLASSES, Oi as syncActiveAlarmProfileSettings, On as TrackSideSchema, Or as isDetectionMacroClass, Ot as NcAlarmConfigSchema, P as EMBEDDING_REQUIREMENTS_UNAVAILABLE, Pi as templateCarriesSummary, Pn as alertEpisodeId, Pr as isMediaOwnerType, Pt as NcConditionsSchema, Q as MOTION_CLOSE_AFTER_MS, Qi as customAction, Qn as coreBlockIdFromAddonId, Qr as pipelineAnalyticsCapability, Qt as OPS_LOG_DEFAULT_LIMIT, R as EXPORT_DENSE_MAX_RANGES, Ri as withSystemEventClasses, Rn as applyModeDelaysEdits, Rr as isSystemDelivery, Rt as NcRuleSchema, S as ClearTrackRelationInputSchema, Sa as unknown, Si as startMoverUnderClearance, Sn as TimelapseRuleInputSchema, Sr as isAlarmControllableCap, St as NC_SENSOR_TRANSITION_KINDS, T as DEFAULT_DETAIL_CROP_CONVENTION, Ti as subjectPathSampleFromBox, Tn as TrackPuritySchema, Tr as isAppLinkBase, Tt as NC_TANK_SYSTEM_EVENT_KINDS, U as LabelAttributionSchema, Ui as isSourceCap, Un as audioMetricsCapability, Ur as mayWriteToLocation, Ut as NcSnoozeInputSchema, V as FailureCounters, Vi as canonicalHash, Vn as armRemovalReconcile, Vr as kebabToCamel, Vt as NcScheduleSchema, W as ListTrackRelationsInputSchema, Wi as DeviceType, Wn as audioModeOf, Wr as memoizePinnedFfmpeg, Wt as NcSnoozeSchema, X as MAX_TRACK_PURITIES, Xi as RECORD_QUERY_MAX, Xn as cloneAlarmSettings, Xt as NcTemplatePreviewSchema, Y as MAX_BIRTH_LATENCY_PROXY_MS, Yi as RECORD_MAX_DATA_BYTES, Yn as classifyRetrainReview, Yr as parseAlertEpisodePayload, Yt as NcTemplatePreviewInputSchema, Z as MAX_TRACK_RELATIONS, Zi as createEvent, Zn as consumableLowPercentOf, Zr as pickFaceRescoreIntervalMinutes, Zt as NcTemplateVarDescriptorSchema, _ as BIRTH_DECISION_DEFAULT_LIMIT, _a as strictObject, _i as ruleKindOf, _n as SetTrackPurityInputSchema, _r as evictionPolicyOfLocation, _t as NC_CONSUMABLE_SYSTEM_EVENT_KINDS, a as CLIP_EMBEDDING_STEP_ID, aa as sleep$1, ai as resolveClipSearchMinScore, an as RetrainOriginSchema, ar as describeSystemEventDeliveryProblem, at as NC_ALARM_NOTIFY_FIELDS, b as BucketAccumulator, ba as tuple, bi as sensorRaisedOf, bn as TIMELAPSE_DENSE_FLOOR_SEC, br as gifDeriveSpeed, bt as NC_GROUPING_MAX_SEC, c as readClusterModelPinStrict, ca as array, ci as resolveModeNotifyPolicy, cn as SCENE_CONFIRM_DEFAULT_TIMEOUT_MS, cr as deviceRemovalHookCapability, ct as NC_AUDIO_CONFIRM_HITS_DEFAULT, d as APPEARANCE_BLOCKS, da as literal, di as retrainRevisionConflictMessage, dn as SCENE_DEFAULT_OBSERVATION_SPACING_SEC, dr as embeddingRefusalOf, dt as NC_CLIP_PRE_ROLL_DEFAULT_SEC, ea as defineRecordKinds, ei as projectSubjectPath, er as createAlarmProfile, et as MotionTriggeredBySchema, f as APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT, fa as looseObject, fi as rootSupplyServes, fn as SCENE_DEFAULT_QUIET_SECONDS, ft as NC_CLIP_RETENTION_MAX_SEC, g as ArchivedDebugNoteSchema, ga as record, gi as ruleGroupingApplies, gn as SceneMonitorSchema, gr as eventKindLabel, gt as NC_CONSUMABLE_LOW_PERCENT_DEFAULT, h as AlarmArmModeSchema, ha as partialRecord, hi as ruleDeviceCompatCapQueries, hn as SCENE_RESET_RECAPTURES, hr as ensureAlarmProfiles, ht as NC_CONFIRM_DEFAULT_TIMEOUT_MS, ii as renameAlarmProfile, in as RetrainDismissedSchema, ir as deriveRecordingMode, it as NC_ALARM_DELAY_MAX_SEC, j as DetectionSourceSchema, ji as systemEventFilterApplies, jn as addonWidgetsSourceCapability, jr as isEventOwnerType, jt as NcAlarmSensorsSchema, k as DETECTION_PIPELINE_CAP_NAME, ki as systemEventDeliveryProblems, kn as TrackSourceSchema, kr as isDrawableSubjectPath, kt as NcAlarmPostTriggeredActionSchema, l as resolveClusterModelPin, la as boolean, li as resolveNcMediaImage, ln as SCENE_DEFAULT_ANCHOR_THRESHOLD, lt as NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT, m as AUDIO_MACRO_LABELS, ma as object, mi as ruleBelongsToAlarm$1, mn as SCENE_DIVERGED, mr as encodeVectorBase64, mt as NC_CONFIRM_DEFAULT_MAX_IMAGE_PX, na as isDeviceScopedCap, ni as readMotionTriggeredBy, nn as RECORDING_SOURCE_CAMSTACK_ADDON, nr as deriveDetailCropRect, nt as NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC, o as CLUSTER_MODEL_OWNER_ADDON_ID, oa as ZodObject, oi as resolveLocationMode, on as RetrainStatusSchema, or as describeSystemEventFamilyProblem, ot as NC_ALARM_SYSTEM_EVENT_KINDS, p as ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT, pa as number, pi as ruleAutoTriggersAlarm, pn as SCENE_DEFAULT_UNCOVERED_POLICY, pt as NC_CONDITION_CATALOG, q as MAX_ARCHIVED_DEBUG_NOTES, qi as CamProfileSchema, qn as buildViewerLink, qr as notificationRulesCapability, qt as NcSystemEventKindSchema, ra as nodePin, ri as readTimelapseGeneratedAt, rn as RebuildObjectEmbeddingsRefusalSchema, rr as derivePostTriggeredAction, rt as NC_ALARM_DELAY_FIELDS, s as FACE_EMBEDDING_STEP_ID, sa as _enum, si as resolveModeDelays, sn as SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX, sr as deviceAttentionKind, st as NC_ALARM_TRIGGERED_MAX_SEC, t as BUILTIN_CLIP_MODELS, ta as hydrateSchema, ti as readDeviceStateFrom, tn as RECORDING_EXPORT_MAX_READ_BYTES, tr as deleteAlarmProfile, tt as NC_ALARM_DEFAULT_PROFILE_ID, u as APPEARANCE_BIN_COUNT, ua as discriminatedUnion, un as SCENE_DEFAULT_CHECK_INTERVAL_SEC, ut as NC_CLIP_POST_ROLL_DEFAULT_SEC, v as BaseDevice, va as string, vi as sceneMonitorCapability, vn as SetTrackPurityResultSchema, vr as faceGalleryCapability, vt as NC_DEFAULT_SNOOZE_MINUTES, w as CoverStateSchema, wi as subKindsOf, wn as TimelapseRuleSchema, wr as isAlertEpisodeSeverity, wt as NC_SYSTEM_EVENT_KIND_GROUP_SPECS, x as COCO_TO_MACRO, xa as union, xi as servedTemplateVars, xn as TRACK_RELATIONS_DEFAULT_LIMIT, xr as gifFromMp4Args, xt as NC_GROUPING_MIN_SEC, y as BirthDecisionRecordSchema, ya as templateLiteral, yi as secureActuationFor, yn as SetTrackRelationInputSchema, yr as failureContributionCapability, yt as NC_GROUPING_DEFAULT_SEC, z as FIRST_LEVEL_MACRO_CLASSES, zi as zoneAnalyticsCapability, zn as applyNonBlockingEdit, zr as isSystemEventSummaryRule, zt as NcRuleTargetSchema } from "../clip-model-registry-
|
|
1
|
+
import { $ as MediaFileKindEnum, $i as defineCustomActions, $n as cosineSimilarity$1, $r as plateGalleryCapability, $t as OpsLogEntrySchema, A as DeclaredDevices, Ai as systemEventFamilyProblems, An as activateAlarmProfile, Ar as isEventKindLabelKey, At as NcAlarmSensorsInputSchema, B as FULL_IMAGE_BBOX, Bi as DEFAULT_FIRST_SIGHTING_FRESHNESS_MS, Bn as applySecureOnArmEdit, Br as isVectorIndexDimConflict, Bt as NcRuleUpdateInputSchema, C as ClearTrackRelationResultSchema, Ca as EventCategory, Ci as storageOccupancyCapability, Cn as TimelapseRulePatchSchema, Cr as isAlertEpisodeOpen, Ct as NC_SNOOZE_MAX_MINUTES, D as DEFAULT_TIMELAPSE_PREVIEW_TEXT, Di as summarizeReview, Dn as TrackRelationSchema, Dr as isDefaultAlarmProfileId, Dt as NC_TEMPLATE_VARS, E as DEFAULT_EVENT_COLOR, Ei as subjectPathSvgPoints, En as TrackRelationKindSchema, Er as isAudioClassName, Et as NC_TAXONOMY, F as EVENT_DENSITY_BATCH_MAX, Fi as templateVarsFor, Fn as alertEpisodeKind, Fr as isRetiredClearKey, Ft as NcRuleActionSchema, G as ListTrackRelationsResultSchema, Gi as errMsg, Gn as buildEventKindDescriptor, Gr as ncMediaPolicyError, Gt as NcSnoozeSuppressedSchema, H as LABEL_SUPPLY_MACRO, Hi as evaluateSensorEdge, Hn as assertTimelapseCadences, Hr as linkedStepOf, Ht as NcSharedSequenceSchema, I as EVENT_KIND_BY_CAP, Ii as vectorDimFromBase64, In as alertEpisodePayload, Ir as isRootSuppliableStepId, It as NcRuleInputSchema, J as MAX_BIRTH_DECISION_RECORDS, Ji as InvalidRecordError, Jn as calendarEventLocalSpan, Jr as occupancyScope, Jt as NcTaxonomySchema, K as LockStateSchema, Ki as BaseAddon, Kn as buildSubjectPath, Kr as normalizeNcMediaPolicy, Kt as NcStateSummarySectionIdSchema, L as EVENT_OWNER_TYPES, Li as viewerLinkBaseOf, Ln as applyBlockingEdit, Lr as isScheduleActive, Lt as NcRulePatchSchema, M as EMBEDDING_MODEL_FAILED, Mi as systemEventSummaryScheduleOf, Mn as alarmDeviceSecureOnArm, Mr as isKnownTemplateVar, Mt as NcAlarmSettingsPatchSchema, N as EMBEDDING_REQUIREMENTS_FAILED, Ni as systemEventSummarySplitOf, Nn as alarmPanelCapability, Nr as isLabelSupplyStepId, Nt as NcConditionDescriptorSchema, O as DETECTION_MACRO_CLASSES, Oi as syncActiveAlarmProfileSettings, On as TrackSideSchema, Or as isDetectionMacroClass, Ot as NcAlarmConfigSchema, P as EMBEDDING_REQUIREMENTS_UNAVAILABLE, Pi as templateCarriesSummary, Pn as alertEpisodeId, Pr as isMediaOwnerType, Pt as NcConditionsSchema, Q as MOTION_CLOSE_AFTER_MS, Qi as customAction, Qn as coreBlockIdFromAddonId, Qr as pipelineAnalyticsCapability, Qt as OPS_LOG_DEFAULT_LIMIT, R as EXPORT_DENSE_MAX_RANGES, Ri as withSystemEventClasses, Rn as applyModeDelaysEdits, Rr as isSystemDelivery, Rt as NcRuleSchema, S as ClearTrackRelationInputSchema, Sa as unknown, Si as startMoverUnderClearance, Sn as TimelapseRuleInputSchema, Sr as isAlarmControllableCap, St as NC_SENSOR_TRANSITION_KINDS, T as DEFAULT_DETAIL_CROP_CONVENTION, Ti as subjectPathSampleFromBox, Tn as TrackPuritySchema, Tr as isAppLinkBase, Tt as NC_TANK_SYSTEM_EVENT_KINDS, U as LabelAttributionSchema, Ui as isSourceCap, Un as audioMetricsCapability, Ur as mayWriteToLocation, Ut as NcSnoozeInputSchema, V as FailureCounters, Vi as canonicalHash, Vn as armRemovalReconcile, Vr as kebabToCamel, Vt as NcScheduleSchema, W as ListTrackRelationsInputSchema, Wi as DeviceType, Wn as audioModeOf, Wr as memoizePinnedFfmpeg, Wt as NcSnoozeSchema, X as MAX_TRACK_PURITIES, Xi as RECORD_QUERY_MAX, Xn as cloneAlarmSettings, Xt as NcTemplatePreviewSchema, Y as MAX_BIRTH_LATENCY_PROXY_MS, Yi as RECORD_MAX_DATA_BYTES, Yn as classifyRetrainReview, Yr as parseAlertEpisodePayload, Yt as NcTemplatePreviewInputSchema, Z as MAX_TRACK_RELATIONS, Zi as createEvent, Zn as consumableLowPercentOf, Zr as pickFaceRescoreIntervalMinutes, Zt as NcTemplateVarDescriptorSchema, _ as BIRTH_DECISION_DEFAULT_LIMIT, _a as strictObject, _i as ruleKindOf, _n as SetTrackPurityInputSchema, _r as evictionPolicyOfLocation, _t as NC_CONSUMABLE_SYSTEM_EVENT_KINDS, a as CLIP_EMBEDDING_STEP_ID, aa as sleep$1, ai as resolveClipSearchMinScore, an as RetrainOriginSchema, ar as describeSystemEventDeliveryProblem, at as NC_ALARM_NOTIFY_FIELDS, b as BucketAccumulator, ba as tuple, bi as sensorRaisedOf, bn as TIMELAPSE_DENSE_FLOOR_SEC, br as gifDeriveSpeed, bt as NC_GROUPING_MAX_SEC, c as readClusterModelPinStrict, ca as array, ci as resolveModeNotifyPolicy, cn as SCENE_CONFIRM_DEFAULT_TIMEOUT_MS, cr as deviceRemovalHookCapability, ct as NC_AUDIO_CONFIRM_HITS_DEFAULT, d as APPEARANCE_BLOCKS, da as literal, di as retrainRevisionConflictMessage, dn as SCENE_DEFAULT_OBSERVATION_SPACING_SEC, dr as embeddingRefusalOf, dt as NC_CLIP_PRE_ROLL_DEFAULT_SEC, ea as defineRecordKinds, ei as projectSubjectPath, er as createAlarmProfile, et as MotionTriggeredBySchema, f as APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT, fa as looseObject, fi as rootSupplyServes, fn as SCENE_DEFAULT_QUIET_SECONDS, ft as NC_CLIP_RETENTION_MAX_SEC, g as ArchivedDebugNoteSchema, ga as record, gi as ruleGroupingApplies, gn as SceneMonitorSchema, gr as eventKindLabel, gt as NC_CONSUMABLE_LOW_PERCENT_DEFAULT, h as AlarmArmModeSchema, ha as partialRecord, hi as ruleDeviceCompatCapQueries, hn as SCENE_RESET_RECAPTURES, hr as ensureAlarmProfiles, ht as NC_CONFIRM_DEFAULT_TIMEOUT_MS, ii as renameAlarmProfile, in as RetrainDismissedSchema, ir as deriveRecordingMode, it as NC_ALARM_DELAY_MAX_SEC, j as DetectionSourceSchema, ji as systemEventFilterApplies, jn as addonWidgetsSourceCapability, jr as isEventOwnerType, jt as NcAlarmSensorsSchema, k as DETECTION_PIPELINE_CAP_NAME, ki as systemEventDeliveryProblems, kn as TrackSourceSchema, kr as isDrawableSubjectPath, kt as NcAlarmPostTriggeredActionSchema, l as resolveClusterModelPin, la as boolean, li as resolveNcMediaImage, ln as SCENE_DEFAULT_ANCHOR_THRESHOLD, lt as NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT, m as AUDIO_MACRO_LABELS, ma as object, mi as ruleBelongsToAlarm$1, mn as SCENE_DIVERGED, mr as encodeVectorBase64, mt as NC_CONFIRM_DEFAULT_MAX_IMAGE_PX, na as isDeviceScopedCap, ni as readMotionTriggeredBy, nn as RECORDING_SOURCE_CAMSTACK_ADDON, nr as deriveDetailCropRect, nt as NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC, o as CLUSTER_MODEL_OWNER_ADDON_ID, oa as ZodObject, oi as resolveLocationMode, on as RetrainStatusSchema, or as describeSystemEventFamilyProblem, ot as NC_ALARM_SYSTEM_EVENT_KINDS, p as ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT, pa as number, pi as ruleAutoTriggersAlarm, pn as SCENE_DEFAULT_UNCOVERED_POLICY, pt as NC_CONDITION_CATALOG, q as MAX_ARCHIVED_DEBUG_NOTES, qi as CamProfileSchema, qn as buildViewerLink, qr as notificationRulesCapability, qt as NcSystemEventKindSchema, ra as nodePin, ri as readTimelapseGeneratedAt, rn as RebuildObjectEmbeddingsRefusalSchema, rr as derivePostTriggeredAction, rt as NC_ALARM_DELAY_FIELDS, s as FACE_EMBEDDING_STEP_ID, sa as _enum, si as resolveModeDelays, sn as SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX, sr as deviceAttentionKind, st as NC_ALARM_TRIGGERED_MAX_SEC, t as BUILTIN_CLIP_MODELS, ta as hydrateSchema, ti as readDeviceStateFrom, tn as RECORDING_EXPORT_MAX_READ_BYTES, tr as deleteAlarmProfile, tt as NC_ALARM_DEFAULT_PROFILE_ID, u as APPEARANCE_BIN_COUNT, ua as discriminatedUnion, un as SCENE_DEFAULT_CHECK_INTERVAL_SEC, ut as NC_CLIP_POST_ROLL_DEFAULT_SEC, v as BaseDevice, va as string, vi as sceneMonitorCapability, vn as SetTrackPurityResultSchema, vr as faceGalleryCapability, vt as NC_DEFAULT_SNOOZE_MINUTES, w as CoverStateSchema, wi as subKindsOf, wn as TimelapseRuleSchema, wr as isAlertEpisodeSeverity, wt as NC_SYSTEM_EVENT_KIND_GROUP_SPECS, x as COCO_TO_MACRO, xa as union, xi as servedTemplateVars, xn as TRACK_RELATIONS_DEFAULT_LIMIT, xr as gifFromMp4Args, xt as NC_GROUPING_MIN_SEC, y as BirthDecisionRecordSchema, ya as templateLiteral, yi as secureActuationFor, yn as SetTrackRelationInputSchema, yr as failureContributionCapability, yt as NC_GROUPING_DEFAULT_SEC, z as FIRST_LEVEL_MACRO_CLASSES, zi as zoneAnalyticsCapability, zn as applyNonBlockingEdit, zr as isSystemEventSummaryRule, zt as NcRuleTargetSchema } from "../clip-model-registry-BmPWAiiw.mjs";
|
|
2
2
|
import { t as __exportAll } from "../embedding-encoder/index.mjs";
|
|
3
3
|
import * as fs$1 from "node:fs";
|
|
4
4
|
import { createWriteStream, promises } from "node:fs";
|
|
@@ -26010,6 +26010,83 @@ function deriveConsumableBand(input) {
|
|
|
26010
26010
|
return value <= input.thresholdPercent ? "low" : "normal";
|
|
26011
26011
|
}
|
|
26012
26012
|
//#endregion
|
|
26013
|
+
//#region src/notification-center/alerts/tank-band.ts
|
|
26014
|
+
/**
|
|
26015
|
+
* A TANK reduced to the only thing worth storing: its band (D642).
|
|
26016
|
+
*
|
|
26017
|
+
* A tank is a `supply` or `waste` item of a device's `consumables` slice
|
|
26018
|
+
* (D915 — before it, the four vacuum tanks lived on `vacuum-control`): a
|
|
26019
|
+
* vacuum's clean water, dirty water, detergent and dust bin, a dishwasher's
|
|
26020
|
+
* salt and rinse aid. `consumable-routing.ts` narrows the item's status to the
|
|
26021
|
+
* band vocabulary below. The operator asked for them to notify like
|
|
26022
|
+
* consumables: a supply running low, a waste tank full.
|
|
26023
|
+
*
|
|
26024
|
+
* ## The verdict is the provider's
|
|
26025
|
+
*
|
|
26026
|
+
* A tank's `status` is the device's own sensor (`ok` | `low` | `full`),
|
|
26027
|
+
* and it is the ONLY thing judged. The hub has no threshold for a tank level:
|
|
26028
|
+
* the rule for thresholds is that they belong to whoever generates the event,
|
|
26029
|
+
* and a tank that says `low` has already decided. A tank that reports only a
|
|
26030
|
+
* `level` is therefore not judged at all (`null`) rather than judged against a
|
|
26031
|
+
* number the hub would have to invent.
|
|
26032
|
+
*
|
|
26033
|
+
* ## `null` is the third answer, and it is not `normal`
|
|
26034
|
+
*
|
|
26035
|
+
* An unknown status says nothing — it neither opens nor closes an episode, for
|
|
26036
|
+
* the reason `battery-band.ts` gives: a reading nobody took is not evidence
|
|
26037
|
+
* that anything changed.
|
|
26038
|
+
*
|
|
26039
|
+
* Pure. No clock, no I/O.
|
|
26040
|
+
*/
|
|
26041
|
+
/**
|
|
26042
|
+
* The tanks with a sentence of their own (`system.device-tank-*.body.<key>`),
|
|
26043
|
+
* by their item key — the four a vacuum reports. Any other tank (salt, rinse
|
|
26044
|
+
* aid, …) is worded by its label (`body.item`).
|
|
26045
|
+
*/
|
|
26046
|
+
var NC_TANK_KEYS = [
|
|
26047
|
+
"cleanWater",
|
|
26048
|
+
"dirtyWater",
|
|
26049
|
+
"detergent",
|
|
26050
|
+
"dustBin"
|
|
26051
|
+
];
|
|
26052
|
+
function isNamedTankKey(key) {
|
|
26053
|
+
return NC_TANK_KEYS.some((k) => k === key);
|
|
26054
|
+
}
|
|
26055
|
+
/**
|
|
26056
|
+
* How long a tank change must HOLD before it counts (D642 review M2).
|
|
26057
|
+
*
|
|
26058
|
+
* A float switch sloshing at the edge of `low` / `full` flips its status back
|
|
26059
|
+
* and forth while the robot moves; each flip is a durable transition, and
|
|
26060
|
+
* without a hold each one is a raise and a recovery on the operator's phone.
|
|
26061
|
+
* One minute is two reload ticks: long enough to outlast a slosh, short enough
|
|
26062
|
+
* that a genuinely full dust bin is said within a minute and a half.
|
|
26063
|
+
*/
|
|
26064
|
+
var NC_TANK_HOLD_MS = 6e4;
|
|
26065
|
+
function deriveTankBand(reading) {
|
|
26066
|
+
switch (reading.status) {
|
|
26067
|
+
case "low": return "low";
|
|
26068
|
+
case "full": return "full";
|
|
26069
|
+
case "ok": return "normal";
|
|
26070
|
+
case null: return null;
|
|
26071
|
+
}
|
|
26072
|
+
}
|
|
26073
|
+
/** `tank:<deviceId>:<key>` — the subject of one tank's episode. */
|
|
26074
|
+
function tankSubject(deviceId, key) {
|
|
26075
|
+
return `tank:${String(deviceId)}:${key}`;
|
|
26076
|
+
}
|
|
26077
|
+
/** The parts of a tank subject, or `null` when it is not one. */
|
|
26078
|
+
function parseTankSubject(subject) {
|
|
26079
|
+
const match = /^tank:(\d+):(.+)$/.exec(subject);
|
|
26080
|
+
if (match === null) return null;
|
|
26081
|
+
const deviceId = Number(match[1]);
|
|
26082
|
+
const key = match[2];
|
|
26083
|
+
if (!Number.isSafeInteger(deviceId) || key === void 0) return null;
|
|
26084
|
+
return {
|
|
26085
|
+
deviceId,
|
|
26086
|
+
key
|
|
26087
|
+
};
|
|
26088
|
+
}
|
|
26089
|
+
//#endregion
|
|
26013
26090
|
//#region src/notification-center/device-directory.ts
|
|
26014
26091
|
/**
|
|
26015
26092
|
* WHO a device id is — the mirrored directory the system-event intake reads.
|
|
@@ -28372,26 +28449,28 @@ function incomingFromConsumableBand(input) {
|
|
|
28372
28449
|
});
|
|
28373
28450
|
}
|
|
28374
28451
|
/**
|
|
28375
|
-
* A
|
|
28452
|
+
* A TANK band, as a system-event subject (D642, D915).
|
|
28376
28453
|
*
|
|
28377
28454
|
* Built like {@link incomingFromConsumableBand}: `tank:<deviceId>:<tank>` is
|
|
28378
28455
|
* one subject per tank (the dust bin's alert must not cancel the clean water's),
|
|
28379
|
-
* and the recovery keeps it.
|
|
28380
|
-
* language — the params are frozen before the
|
|
28381
|
-
* name cannot be a param; `tank` carries the
|
|
28382
|
-
* template.
|
|
28456
|
+
* and the recovery keeps it. For the four named vacuum tanks the BODY VARIANT
|
|
28457
|
+
* names the tank in the reader's language — the params are frozen before the
|
|
28458
|
+
* language is known, so the tank's name cannot be a param; `tank` carries the
|
|
28459
|
+
* stable token for a custom template. Any other tank (a dishwasher's salt, …)
|
|
28460
|
+
* is worded by the provider's label through `body.item`.
|
|
28383
28461
|
*/
|
|
28384
28462
|
function incomingFromTankBand(input) {
|
|
28385
28463
|
const kind = input.band === "low" ? "device-tank-low" : input.band === "full" ? "device-tank-full" : "device-tank-normal";
|
|
28386
28464
|
return systemSubject({
|
|
28387
28465
|
facts: input.facts,
|
|
28388
28466
|
kind,
|
|
28389
|
-
subject:
|
|
28467
|
+
subject: tankSubject(input.deviceId, input.tank),
|
|
28390
28468
|
titleKey: `system.${kind}.title`,
|
|
28391
|
-
bodyKey: `system.${kind}.body.${input.tank}`,
|
|
28469
|
+
bodyKey: isNamedTankKey(input.tank) ? `system.${kind}.body.${input.tank}` : `system.${kind}.body.item`,
|
|
28392
28470
|
textParams: {
|
|
28393
28471
|
...deviceTextParams(input.deviceId, input.identity),
|
|
28394
|
-
tank: input.tank
|
|
28472
|
+
tank: input.tank,
|
|
28473
|
+
item: input.label ?? input.tank
|
|
28395
28474
|
},
|
|
28396
28475
|
deviceId: input.deviceId,
|
|
28397
28476
|
...input.identity !== void 0 ? { deviceType: input.identity.type } : {}
|
|
@@ -29276,91 +29355,6 @@ function deliveryForKind(kind) {
|
|
|
29276
29355
|
return kind;
|
|
29277
29356
|
}
|
|
29278
29357
|
//#endregion
|
|
29279
|
-
//#region src/notification-center/alerts/tank-band.ts
|
|
29280
|
-
/**
|
|
29281
|
-
* A vacuum TANK reduced to the only thing worth storing: its band (D642).
|
|
29282
|
-
*
|
|
29283
|
-
* The `vacuum-control` slice carries four tanks — clean water, dirty water,
|
|
29284
|
-
* detergent, dust bin — each `null` when the hardware has none, else
|
|
29285
|
-
* `{ level, status }`. The operator asked for them to notify like consumables:
|
|
29286
|
-
* clean water / detergent running low, dirty water / dust bin full.
|
|
29287
|
-
*
|
|
29288
|
-
* ## The verdict is the provider's
|
|
29289
|
-
*
|
|
29290
|
-
* A tank's `status` is the device's own float switch (`ok` | `low` | `full`),
|
|
29291
|
-
* and it is the ONLY thing judged. The hub has no threshold for a tank level:
|
|
29292
|
-
* the rule for thresholds is that they belong to whoever generates the event,
|
|
29293
|
-
* and a tank that says `low` has already decided. A tank that reports only a
|
|
29294
|
-
* `level` is therefore not judged at all (`null`) rather than judged against a
|
|
29295
|
-
* number the hub would have to invent.
|
|
29296
|
-
*
|
|
29297
|
-
* ## `null` is the third answer, and it is not `normal`
|
|
29298
|
-
*
|
|
29299
|
-
* An unknown status says nothing — it neither opens nor closes an episode, for
|
|
29300
|
-
* the reason `battery-band.ts` gives: a reading nobody took is not evidence
|
|
29301
|
-
* that anything changed.
|
|
29302
|
-
*
|
|
29303
|
-
* Pure. No clock, no I/O.
|
|
29304
|
-
*/
|
|
29305
|
-
/** The four tanks `vacuum-control` names, by their slice field. */
|
|
29306
|
-
var NC_TANK_KEYS = [
|
|
29307
|
-
"cleanWater",
|
|
29308
|
-
"dirtyWater",
|
|
29309
|
-
"detergent",
|
|
29310
|
-
"dustBin"
|
|
29311
|
-
];
|
|
29312
|
-
/**
|
|
29313
|
-
* How long a tank change must HOLD before it counts (D642 review M2).
|
|
29314
|
-
*
|
|
29315
|
-
* A float switch sloshing at the edge of `low` / `full` flips its status back
|
|
29316
|
-
* and forth while the robot moves; each flip is a durable transition, and
|
|
29317
|
-
* without a hold each one is a raise and a recovery on the operator's phone.
|
|
29318
|
-
* One minute is two reload ticks: long enough to outlast a slosh, short enough
|
|
29319
|
-
* that a genuinely full dust bin is said within a minute and a half.
|
|
29320
|
-
*/
|
|
29321
|
-
var NC_TANK_HOLD_MS = 6e4;
|
|
29322
|
-
function deriveTankBand(reading) {
|
|
29323
|
-
switch (reading.status) {
|
|
29324
|
-
case "low": return "low";
|
|
29325
|
-
case "full": return "full";
|
|
29326
|
-
case "ok": return "normal";
|
|
29327
|
-
case null: return null;
|
|
29328
|
-
}
|
|
29329
|
-
}
|
|
29330
|
-
function isRecord$2(value) {
|
|
29331
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
29332
|
-
}
|
|
29333
|
-
function tankStatusOf(value) {
|
|
29334
|
-
return value === "ok" || value === "low" || value === "full" ? value : null;
|
|
29335
|
-
}
|
|
29336
|
-
/**
|
|
29337
|
-
* A `device.state-changed` payload carrying a `vacuum-control` slice, reduced
|
|
29338
|
-
* to its tanks. `null` for any other cap. A tank the hardware does not have
|
|
29339
|
-
* (`null`) is skipped; a malformed field reads as unknown, never as a
|
|
29340
|
-
* fabricated verdict (D393: absent is not zero).
|
|
29341
|
-
*/
|
|
29342
|
-
function vacuumTanksOf(data) {
|
|
29343
|
-
if (data["capName"] !== "vacuum-control") return null;
|
|
29344
|
-
const deviceId = data["deviceId"];
|
|
29345
|
-
const slice = data["slice"];
|
|
29346
|
-
if (typeof deviceId !== "number" || !isRecord$2(slice)) return null;
|
|
29347
|
-
const tanks = [];
|
|
29348
|
-
for (const key of NC_TANK_KEYS) {
|
|
29349
|
-
const raw = slice[key];
|
|
29350
|
-
if (!isRecord$2(raw)) continue;
|
|
29351
|
-
const level = raw["level"];
|
|
29352
|
-
tanks.push({
|
|
29353
|
-
key,
|
|
29354
|
-
level: typeof level === "number" && Number.isFinite(level) ? level : null,
|
|
29355
|
-
status: tankStatusOf(raw["status"])
|
|
29356
|
-
});
|
|
29357
|
-
}
|
|
29358
|
-
return tanks.length === 0 ? null : {
|
|
29359
|
-
deviceId,
|
|
29360
|
-
tanks
|
|
29361
|
-
};
|
|
29362
|
-
}
|
|
29363
|
-
//#endregion
|
|
29364
29358
|
//#region src/notification-center/alerts/open-alert.ts
|
|
29365
29359
|
/**
|
|
29366
29360
|
* The raise of an episode whose reading has not arrived since the restart —
|
|
@@ -29398,13 +29392,13 @@ function unmeasuredEpisode(input) {
|
|
|
29398
29392
|
thresholdPercent: parts.thresholdPercent,
|
|
29399
29393
|
identity
|
|
29400
29394
|
});
|
|
29401
|
-
const tank =
|
|
29402
|
-
if (tank ===
|
|
29395
|
+
const tank = parseTankSubject(input.subject);
|
|
29396
|
+
if (tank === null || tank.deviceId !== deviceId) return null;
|
|
29403
29397
|
return incomingFromTankBand({
|
|
29404
29398
|
facts,
|
|
29405
29399
|
deviceId,
|
|
29406
29400
|
band: input.detail === "full" ? "full" : "low",
|
|
29407
|
-
tank,
|
|
29401
|
+
tank: tank.key,
|
|
29408
29402
|
identity
|
|
29409
29403
|
});
|
|
29410
29404
|
}
|
|
@@ -29481,7 +29475,7 @@ function deriveBatteryBand(input) {
|
|
|
29481
29475
|
* slice that already arrives on `device.state-changed`;
|
|
29482
29476
|
* - **consumable band** — `consumable@<threshold>:<deviceId>:<key>`, one
|
|
29483
29477
|
* episode per item per threshold a RULE asks for (D642);
|
|
29484
|
-
* - **tank band** — `tank:<deviceId>:<tank>`, a vacuum's tanks, judged on the
|
|
29478
|
+
* - **tank band** — `tank:<deviceId>:<tank>`, a supply / waste item (a vacuum's tanks, a dishwasher's salt), judged on the
|
|
29485
29479
|
* provider's own verdict (D642);
|
|
29486
29480
|
* - **the reminder tick** — the operator's "how often do you say it again".
|
|
29487
29481
|
*
|
|
@@ -29632,7 +29626,8 @@ var NcDeviceAlerts = class {
|
|
|
29632
29626
|
for (const thresholdPercent of thresholds) this.judgeConsumable(deviceId, item, thresholdPercent, settings);
|
|
29633
29627
|
}
|
|
29634
29628
|
/**
|
|
29635
|
-
* ONE
|
|
29629
|
+
* ONE tank — a `supply` / `waste` item of a device's `consumables` slice
|
|
29630
|
+
* (D642; read from `consumables` since D915, `consumable-routing.ts`).
|
|
29636
29631
|
*
|
|
29637
29632
|
* The provider's verdict is the band (`tank-band.ts`); an unknown status
|
|
29638
29633
|
* leaves everything untouched, an open episode included.
|
|
@@ -29640,7 +29635,7 @@ var NcDeviceAlerts = class {
|
|
|
29640
29635
|
observeTank(deviceId, tank) {
|
|
29641
29636
|
const band = deriveTankBand(tank);
|
|
29642
29637
|
if (band === null) return;
|
|
29643
|
-
const subject =
|
|
29638
|
+
const subject = tankSubject(deviceId, tank.key);
|
|
29644
29639
|
this.lastTank.set(subject, {
|
|
29645
29640
|
deviceId,
|
|
29646
29641
|
tank
|
|
@@ -29651,6 +29646,7 @@ var NcDeviceAlerts = class {
|
|
|
29651
29646
|
deviceId,
|
|
29652
29647
|
band: alerting ? band : "normal",
|
|
29653
29648
|
tank: tank.key,
|
|
29649
|
+
...tank.label !== void 0 ? { label: tank.label } : {},
|
|
29654
29650
|
identity: this.deps.lookup(deviceId)
|
|
29655
29651
|
}), band === "normal" ? void 0 : band);
|
|
29656
29652
|
}
|
|
@@ -29923,6 +29919,7 @@ var NcDeviceAlerts = class {
|
|
|
29923
29919
|
deviceId: tank.deviceId,
|
|
29924
29920
|
band: tankBand,
|
|
29925
29921
|
tank: tank.tank.key,
|
|
29922
|
+
...tank.tank.label !== void 0 ? { label: tank.tank.label } : {},
|
|
29926
29923
|
identity: this.deps.lookup(tank.deviceId)
|
|
29927
29924
|
});
|
|
29928
29925
|
const battery = this.lastReading.get(subject);
|
|
@@ -30058,6 +30055,107 @@ function tagsOf(subject) {
|
|
|
30058
30055
|
return deviceId !== void 0 ? { tags: { deviceId } } : {};
|
|
30059
30056
|
}
|
|
30060
30057
|
//#endregion
|
|
30058
|
+
//#region src/notification-center/alerts/consumable-routing.ts
|
|
30059
|
+
function wearStatus(status) {
|
|
30060
|
+
switch (status) {
|
|
30061
|
+
case "replace":
|
|
30062
|
+
case "low":
|
|
30063
|
+
case "empty": return "replace";
|
|
30064
|
+
case "ok": return "ok";
|
|
30065
|
+
default: return null;
|
|
30066
|
+
}
|
|
30067
|
+
}
|
|
30068
|
+
function supplyStatus(status) {
|
|
30069
|
+
switch (status) {
|
|
30070
|
+
case "low":
|
|
30071
|
+
case "empty":
|
|
30072
|
+
case "replace": return "low";
|
|
30073
|
+
case "ok":
|
|
30074
|
+
case "full": return "ok";
|
|
30075
|
+
default: return null;
|
|
30076
|
+
}
|
|
30077
|
+
}
|
|
30078
|
+
function wasteStatus(status) {
|
|
30079
|
+
switch (status) {
|
|
30080
|
+
case "full":
|
|
30081
|
+
case "replace": return "full";
|
|
30082
|
+
case "ok":
|
|
30083
|
+
case "low":
|
|
30084
|
+
case "empty": return "ok";
|
|
30085
|
+
default: return null;
|
|
30086
|
+
}
|
|
30087
|
+
}
|
|
30088
|
+
/** Which family judges this item, and the reading that family reads. */
|
|
30089
|
+
function routeConsumableItem(raw) {
|
|
30090
|
+
const { key, label, level } = raw;
|
|
30091
|
+
if (raw.kind === "supply" || raw.kind === "waste") return {
|
|
30092
|
+
family: "tank",
|
|
30093
|
+
tank: {
|
|
30094
|
+
key,
|
|
30095
|
+
label,
|
|
30096
|
+
level,
|
|
30097
|
+
status: raw.kind === "supply" ? supplyStatus(raw.status) : wasteStatus(raw.status)
|
|
30098
|
+
}
|
|
30099
|
+
};
|
|
30100
|
+
return {
|
|
30101
|
+
family: "consumable",
|
|
30102
|
+
item: {
|
|
30103
|
+
key,
|
|
30104
|
+
label,
|
|
30105
|
+
level,
|
|
30106
|
+
status: wearStatus(raw.status)
|
|
30107
|
+
}
|
|
30108
|
+
};
|
|
30109
|
+
}
|
|
30110
|
+
function isRecord$2(value) {
|
|
30111
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
30112
|
+
}
|
|
30113
|
+
/**
|
|
30114
|
+
* A `device.state-changed` carrying a `consumables` slice, routed by family;
|
|
30115
|
+
* `null` for any other event, a malformed slice or an empty list.
|
|
30116
|
+
*
|
|
30117
|
+
* An item is kept only when it carries a usable `key` — the subject is built
|
|
30118
|
+
* from it. `level` and `status` are each optional; an item with NEITHER is
|
|
30119
|
+
* still returned, because deciding that it has told us nothing belongs to the
|
|
30120
|
+
* band derivation and not to a parser (D393: absent is not zero).
|
|
30121
|
+
*/
|
|
30122
|
+
function consumablesSliceOf(event) {
|
|
30123
|
+
if (event.category !== "device.state-changed") return null;
|
|
30124
|
+
const data = event.data;
|
|
30125
|
+
if (data["capName"] !== "consumables") return null;
|
|
30126
|
+
const deviceId = data["deviceId"];
|
|
30127
|
+
const slice = data["slice"];
|
|
30128
|
+
if (typeof deviceId !== "number" || !isRecord$2(slice)) return null;
|
|
30129
|
+
const rawItems = slice["items"];
|
|
30130
|
+
if (!Array.isArray(rawItems)) return null;
|
|
30131
|
+
const consumables = [];
|
|
30132
|
+
const tanks = [];
|
|
30133
|
+
for (const entry of rawItems) {
|
|
30134
|
+
if (!isRecord$2(entry)) continue;
|
|
30135
|
+
const key = entry["key"];
|
|
30136
|
+
if (typeof key !== "string" || key.length === 0) continue;
|
|
30137
|
+
const label = entry["label"];
|
|
30138
|
+
const level = entry["level"];
|
|
30139
|
+
const status = entry["status"];
|
|
30140
|
+
const kind = entry["kind"];
|
|
30141
|
+
const routed = routeConsumableItem({
|
|
30142
|
+
key,
|
|
30143
|
+
label: typeof label === "string" && label.length > 0 ? label : key,
|
|
30144
|
+
level: typeof level === "number" && Number.isFinite(level) ? level : null,
|
|
30145
|
+
status: typeof status === "string" ? status : null,
|
|
30146
|
+
kind: typeof kind === "string" ? kind : void 0
|
|
30147
|
+
});
|
|
30148
|
+
if (routed.family === "tank") tanks.push(routed.tank);
|
|
30149
|
+
else consumables.push(routed.item);
|
|
30150
|
+
}
|
|
30151
|
+
if (consumables.length === 0 && tanks.length === 0) return null;
|
|
30152
|
+
return {
|
|
30153
|
+
deviceId,
|
|
30154
|
+
consumables,
|
|
30155
|
+
tanks
|
|
30156
|
+
};
|
|
30157
|
+
}
|
|
30158
|
+
//#endregion
|
|
30061
30159
|
//#region src/notification-center/device-removal.ts
|
|
30062
30160
|
/** The kinds whose rows can be about a device. */
|
|
30063
30161
|
var NC_DEVICE_ROW_KINDS = [
|
|
@@ -30848,6 +30946,9 @@ var en_default = {
|
|
|
30848
30946
|
"system.device-tank-low.body.dustBin": "The dust bin on {{deviceName}} is running low",
|
|
30849
30947
|
"system.device-tank-full.body.dustBin": "The dust bin on {{deviceName}} is full",
|
|
30850
30948
|
"system.device-tank-normal.body.dustBin": "The dust bin on {{deviceName}} is OK again",
|
|
30949
|
+
"system.device-tank-low.body.item": "{{item}} on {{deviceName}} is running low",
|
|
30950
|
+
"system.device-tank-full.body.item": "{{item}} on {{deviceName}} is full",
|
|
30951
|
+
"system.device-tank-normal.body.item": "{{item}} on {{deviceName}} is OK again",
|
|
30851
30952
|
"system.camera-online.title": "Device online",
|
|
30852
30953
|
"system.camera-online.body": "Device {{deviceName}} is online",
|
|
30853
30954
|
"system.camera-offline.title": "Device offline",
|
|
@@ -31249,6 +31350,9 @@ var it_default = {
|
|
|
31249
31350
|
"system.device-tank-low.body.dustBin": "Il contenitore della polvere di {{deviceName}} è quasi vuoto",
|
|
31250
31351
|
"system.device-tank-full.body.dustBin": "Il contenitore della polvere di {{deviceName}} è pieno",
|
|
31251
31352
|
"system.device-tank-normal.body.dustBin": "Il contenitore della polvere di {{deviceName}} è di nuovo a posto",
|
|
31353
|
+
"system.device-tank-low.body.item": "{{item}} di {{deviceName}} sta finendo",
|
|
31354
|
+
"system.device-tank-full.body.item": "{{item}} di {{deviceName}} è pieno",
|
|
31355
|
+
"system.device-tank-normal.body.item": "{{item}} di {{deviceName}} è di nuovo a posto",
|
|
31252
31356
|
"system.camera-online.title": "Dispositivo online",
|
|
31253
31357
|
"system.camera-online.body": "Il dispositivo {{deviceName}} è online",
|
|
31254
31358
|
"system.camera-offline.title": "Dispositivo offline",
|
|
@@ -54182,52 +54286,6 @@ function batterySliceOf(event) {
|
|
|
54182
54286
|
};
|
|
54183
54287
|
}
|
|
54184
54288
|
/**
|
|
54185
|
-
* A `device.state-changed` carrying a CONSUMABLES slice, reduced to the items
|
|
54186
|
-
* the band derivation reads.
|
|
54187
|
-
*
|
|
54188
|
-
* Same tap as the battery's: `DeviceStateChanged` is already subscribed, so
|
|
54189
|
-
* every `consumables` write already arrives here and was simply dropped. No
|
|
54190
|
-
* new bus category and no producer change.
|
|
54191
|
-
*
|
|
54192
|
-
* An item is kept only when it carries a usable `key` — the subject is built
|
|
54193
|
-
* from it, and an item with no key could not be told apart from its sibling.
|
|
54194
|
-
* `level` and `status` are each optional; an item with NEITHER is still
|
|
54195
|
-
* returned, because deciding that it has told us nothing belongs to
|
|
54196
|
-
* `deriveConsumableBand` and not to a parser (D393: absent is not zero, and
|
|
54197
|
-
* the parser is not the place that judges).
|
|
54198
|
-
*/
|
|
54199
|
-
function consumablesSliceOf(event) {
|
|
54200
|
-
if (event.category !== "device.state-changed") return null;
|
|
54201
|
-
const data = event.data;
|
|
54202
|
-
if (data["capName"] !== "consumables") return null;
|
|
54203
|
-
const deviceId = data["deviceId"];
|
|
54204
|
-
const slice = data["slice"];
|
|
54205
|
-
if (typeof deviceId !== "number") return null;
|
|
54206
|
-
if (typeof slice !== "object" || slice === null || Array.isArray(slice)) return null;
|
|
54207
|
-
const rawItems = slice["items"];
|
|
54208
|
-
if (!Array.isArray(rawItems)) return null;
|
|
54209
|
-
const items = [];
|
|
54210
|
-
for (const entry of rawItems) {
|
|
54211
|
-
if (typeof entry !== "object" || entry === null || Array.isArray(entry)) continue;
|
|
54212
|
-
const row = entry;
|
|
54213
|
-
const key = row["key"];
|
|
54214
|
-
if (typeof key !== "string" || key.length === 0) continue;
|
|
54215
|
-
const level = row["level"];
|
|
54216
|
-
const status = row["status"];
|
|
54217
|
-
const label = row["label"];
|
|
54218
|
-
items.push({
|
|
54219
|
-
key,
|
|
54220
|
-
label: typeof label === "string" && label.length > 0 ? label : key,
|
|
54221
|
-
level: typeof level === "number" ? level : null,
|
|
54222
|
-
status: status === "ok" || status === "replace" ? status : null
|
|
54223
|
-
});
|
|
54224
|
-
}
|
|
54225
|
-
return items.length === 0 ? null : {
|
|
54226
|
-
deviceId,
|
|
54227
|
-
items
|
|
54228
|
-
};
|
|
54229
|
-
}
|
|
54230
|
-
/**
|
|
54231
54289
|
* What `getAlarmConfig` answers on a node with no panel.
|
|
54232
54290
|
*
|
|
54233
54291
|
* The DEFAULTS, not zeroes: paired with `deviceId: null` this tells a client
|
|
@@ -57153,12 +57211,8 @@ var NotificationCenter = class {
|
|
|
57153
57211
|
}
|
|
57154
57212
|
const consumables = consumablesSliceOf(event);
|
|
57155
57213
|
if (consumables !== null) {
|
|
57156
|
-
for (const item of consumables.
|
|
57157
|
-
|
|
57158
|
-
}
|
|
57159
|
-
const tanks = event.category === "device.state-changed" ? vacuumTanksOf(event.data) : null;
|
|
57160
|
-
if (tanks !== null) {
|
|
57161
|
-
for (const tank of tanks.tanks) this.deviceAlerts.observeTank(tanks.deviceId, tank);
|
|
57214
|
+
for (const item of consumables.consumables) this.deviceAlerts.observeConsumable(consumables.deviceId, item);
|
|
57215
|
+
for (const tank of consumables.tanks) this.deviceAlerts.observeTank(consumables.deviceId, tank);
|
|
57162
57216
|
return;
|
|
57163
57217
|
}
|
|
57164
57218
|
const lookup = this.deviceDirectory.lookup();
|
|
@@ -107131,24 +107185,6 @@ Object.freeze({
|
|
|
107131
107185
|
"path": "powerState",
|
|
107132
107186
|
"valueType": "string"
|
|
107133
107187
|
},
|
|
107134
|
-
{
|
|
107135
|
-
"path": "saltLevel",
|
|
107136
|
-
"valueType": "enum",
|
|
107137
|
-
"enumValues": [
|
|
107138
|
-
"ok",
|
|
107139
|
-
"low",
|
|
107140
|
-
"empty"
|
|
107141
|
-
]
|
|
107142
|
-
},
|
|
107143
|
-
{
|
|
107144
|
-
"path": "rinseAidLevel",
|
|
107145
|
-
"valueType": "enum",
|
|
107146
|
-
"enumValues": [
|
|
107147
|
-
"ok",
|
|
107148
|
-
"low",
|
|
107149
|
-
"empty"
|
|
107150
|
-
]
|
|
107151
|
-
},
|
|
107152
107188
|
{
|
|
107153
107189
|
"path": "filterCleaningDue",
|
|
107154
107190
|
"valueType": "boolean"
|
|
@@ -108174,58 +108210,6 @@ Object.freeze({
|
|
|
108174
108210
|
"path": "fanSpeed",
|
|
108175
108211
|
"valueType": "string"
|
|
108176
108212
|
},
|
|
108177
|
-
{
|
|
108178
|
-
"path": "cleanWater.level",
|
|
108179
|
-
"valueType": "number"
|
|
108180
|
-
},
|
|
108181
|
-
{
|
|
108182
|
-
"path": "cleanWater.status",
|
|
108183
|
-
"valueType": "enum",
|
|
108184
|
-
"enumValues": [
|
|
108185
|
-
"ok",
|
|
108186
|
-
"low",
|
|
108187
|
-
"full"
|
|
108188
|
-
]
|
|
108189
|
-
},
|
|
108190
|
-
{
|
|
108191
|
-
"path": "dirtyWater.level",
|
|
108192
|
-
"valueType": "number"
|
|
108193
|
-
},
|
|
108194
|
-
{
|
|
108195
|
-
"path": "dirtyWater.status",
|
|
108196
|
-
"valueType": "enum",
|
|
108197
|
-
"enumValues": [
|
|
108198
|
-
"ok",
|
|
108199
|
-
"low",
|
|
108200
|
-
"full"
|
|
108201
|
-
]
|
|
108202
|
-
},
|
|
108203
|
-
{
|
|
108204
|
-
"path": "detergent.level",
|
|
108205
|
-
"valueType": "number"
|
|
108206
|
-
},
|
|
108207
|
-
{
|
|
108208
|
-
"path": "detergent.status",
|
|
108209
|
-
"valueType": "enum",
|
|
108210
|
-
"enumValues": [
|
|
108211
|
-
"ok",
|
|
108212
|
-
"low",
|
|
108213
|
-
"full"
|
|
108214
|
-
]
|
|
108215
|
-
},
|
|
108216
|
-
{
|
|
108217
|
-
"path": "dustBin.level",
|
|
108218
|
-
"valueType": "number"
|
|
108219
|
-
},
|
|
108220
|
-
{
|
|
108221
|
-
"path": "dustBin.status",
|
|
108222
|
-
"valueType": "enum",
|
|
108223
|
-
"enumValues": [
|
|
108224
|
-
"ok",
|
|
108225
|
-
"low",
|
|
108226
|
-
"full"
|
|
108227
|
-
]
|
|
108228
|
-
},
|
|
108229
108213
|
{
|
|
108230
108214
|
"path": "progressPercent",
|
|
108231
108215
|
"valueType": "number"
|
|
@@ -30,7 +30,7 @@ async function d(e) {
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
async function f() {
|
|
33
|
-
return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-
|
|
33
|
+
return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-u9k_8R7t.mjs")).catch((e) => {
|
|
34
34
|
throw l = void 0, e;
|
|
35
35
|
}), l;
|
|
36
36
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-post-analysis",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.625",
|
|
4
4
|
"description": "Post-Analysis bundle — enrichment, embedding-encoder, pipeline-analytics. Multi-entry npm package shipping addons that consume pipeline output.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|