@camstack/addon-post-analysis 1.2.624 → 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.
Files changed (15) hide show
  1. package/dist/{clip-model-registry-BpS_EthX.mjs → clip-model-registry-BmPWAiiw.mjs} +195 -118
  2. package/dist/{clip-model-registry-WENnCB-u.js → clip-model-registry-Bz5VWLtO.js} +195 -118
  3. package/dist/embedding-encoder/index.js +1 -1
  4. package/dist/embedding-encoder/index.mjs +1 -1
  5. package/dist/pipeline-analytics/_stub.js +2 -2
  6. package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-B3M-0LC0.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-u9k_8R7t.mjs} +3 -3
  7. 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
  8. 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
  9. package/dist/pipeline-analytics/{hostInit-BqU6Q1wQ.mjs → hostInit-Bx3x53tR.mjs} +3 -3
  10. package/dist/pipeline-analytics/index.js +206 -222
  11. package/dist/pipeline-analytics/index.mjs +206 -222
  12. package/dist/pipeline-analytics/remoteEntry.js +1 -1
  13. package/package.json +1 -1
  14. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DBuMgPh6.mjs +0 -26
  15. 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-BpS_EthX.mjs";
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 vacuum TANK band, as a system-event subject (D642).
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. The BODY VARIANT names the tank in the reader's
28380
- * language — the params are frozen before the language is known, so the tank's
28381
- * name cannot be a param; `tank` carries the stable token for a custom
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: `tank:${String(input.deviceId)}:${input.tank}`,
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 = NC_TANK_KEYS.find((key) => input.subject === `tank:${String(deviceId)}:${key}`);
29402
- if (tank === void 0) return null;
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 vacuum tank, from a device's `vacuum-control` slice (D642).
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 = `tank:${String(deviceId)}:${tank.key}`;
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.items) this.deviceAlerts.observeConsumable(consumables.deviceId, item);
57157
- return;
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-B3M-0LC0.mjs")).catch((e) => {
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.624",
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",