@camstack/addon-post-analysis 1.2.662 → 1.2.663

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 (16) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/{clip-model-registry-ELaSS9jq.mjs → clip-model-registry-CwXJyrLg.mjs} +34002 -33152
  3. package/dist/{clip-model-registry-C3N1NpST.js → clip-model-registry-Cz8LWYwU.js} +34002 -33152
  4. package/dist/embedding-encoder/index.js +1 -1
  5. package/dist/embedding-encoder/index.mjs +1 -1
  6. package/dist/pipeline-analytics/_stub.js +2 -2
  7. package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-BvOlyiL9.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-jPBj20ez.mjs} +2 -2
  8. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Be6bZvOS.mjs +26 -0
  9. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-B5Bw-VHt.mjs +26 -0
  10. package/dist/pipeline-analytics/{hostInit-BjZchMMh.mjs → hostInit-DOdK6KJ5.mjs} +2 -2
  11. package/dist/pipeline-analytics/index.js +215 -27
  12. package/dist/pipeline-analytics/index.mjs +215 -27
  13. package/dist/pipeline-analytics/remoteEntry.js +1 -1
  14. package/package.json +2 -2
  15. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-D4zkNcgf.mjs +0 -26
  16. 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 +0 -26
@@ -1,4 +1,4 @@
1
- import { $ as MAX_TRACK_RELATIONS, $i as DEFAULT_FIRST_SIGHTING_FRESHNESS_MS, $n as bundledCamstack, $r as normalizeNcAction, $t as NcTemplateVarDescriptorSchema, A as DETECTION_MACRO_CLASSES, Aa as strictObject, Ai as sceneMonitorCapability, An as TrackPuritySchema, Ar as isAlertEpisodeOpen, At as NcAlarmConfigSchema, B as EXPORT_DENSE_MAX_RANGES, Bi as sunTimes, Bn as alertEpisodeKind, Br as isLabelSupplyStepId, Bt as NcRuleSchema, C as COCO_TO_MACRO, Ca as discriminatedUnion, Ci as retrainRevisionConflictMessage, Cn as SetTrackRelationInputSchema, Cr as eventKindLabel, Ct as NC_GROUPING_MIN_SEC, D as DEFAULT_DETAIL_CROP_CONVENTION, Da as object, Di as ruleDeviceCompatCapQueries, Dn as TimelapseRulePatchSchema, Dr as gifDeriveSpeed, Dt as NC_SYSTEM_EVENT_KIND_GROUP_SPECS, E as CoverStateSchema, Ea as number, Ei as ruleBelongsToAlarm$1, En as TimelapseRuleInputSchema, Er as failureContributionCapability, Et as NC_STATE_SUMMARY_SECTION_IDS, F as EMBEDDING_REQUIREMENTS_FAILED, Fa as unknown, Fi as storageOccupancyCapability, Fn as activateAlarmProfile, Fr as isDetectionMacroClass, Ft as NcConditionDescriptorSchema, G as LabelAttributionSchema, Gi as systemEventSummaryScheduleOf, Gn as applySecureOnArmEdit, Gr as isSystemDelivery, Gt as NcSnoozeInputSchema, H as FULL_IMAGE_BBOX, Hi as systemEventDeliveryProblems, Hn as applyBlockingEdit, Hr as isRetiredClearKey, Ht as NcRuleUpdateInputSchema, I as EMBEDDING_REQUIREMENTS_UNAVAILABLE, Ia as DeviceType, Ii as subKindsOf, In as addonWidgetsSourceCapability, Ir as isDrawableSubjectPath, It as NcConditionsSchema, J as LockStateSchema, Ji as templateVarsFor, Jn as audioMetricsCapability, Jr as kebabToCamel, Jt as NcStateSummarySectionIdSchema, K as ListTrackRelationsInputSchema, Ki as systemEventSummarySplitOf, Kn as armRemovalReconcile, Kr as isSystemEventSummaryRule, Kt as NcSnoozeSchema, L as EVENT_DENSITY_BATCH_MAX, La as errMsg, Li as subjectPathSampleFromBox, Ln as alarmDeviceSecureOnArm, Lr as isEventKindLabelKey, Lt as NcRuleActionSchema, M as DeclaredDevices, Ma as templateLiteral, Mi as sensorRaisedOf, Mn as TrackRelationSchema, Mr as isAppLinkBase, Mt as NcAlarmSensorsInputSchema, N as DetectionSourceSchema, Na as tuple, Ni as servedTemplateVars, Nn as TrackSideSchema, Nr as isAudioClassName, Nt as NcAlarmSensorsSchema, O as DEFAULT_EVENT_COLOR, Oa as partialRecord, Oi as ruleGroupingApplies, On as TimelapseRuleSchema, Or as gifFromMp4Args, Ot as NC_TAXONOMY, P as EMBEDDING_MODEL_FAILED, Pa as union, Pi as startMoverUnderClearance, Pn as TrackSourceSchema, Pr as isDefaultAlarmProfileId, Pt as NcAlarmSettingsPatchSchema, Q as MAX_TRACK_PURITIES, Qi as zoneAnalyticsCapability, Qn as buildViewerLink, Qr as ncMediaPolicyError, Qt as NcTemplatePreviewSchema, R as EVENT_KIND_BY_CAP, Ra as EventCategory, Ri as subjectPathSvgPoints, Rn as alarmPanelCapability, Rr as isEventOwnerType, Rt as NcRuleInputSchema, S as BucketAccumulator, Sa as boolean, Sn as SetTrackPurityResultSchema, Sr as ensureAlarmProfiles, St as NC_GROUPING_MAX_SEC, T as ClearTrackRelationResultSchema, Ta as looseObject, Ti as ruleAutoTriggersAlarm, Tn as TRACK_RELATIONS_DEFAULT_LIMIT, Tr as faceGalleryCapability, Tt as NC_SNOOZE_MAX_MINUTES, U as FailureCounters, Ui as systemEventFamilyProblems, Un as applyModeDelaysEdits, Ur as isRootSuppliableStepId, Ut as NcScheduleSchema, V as FIRST_LEVEL_MACRO_CLASSES, Vi as syncActiveAlarmProfileSettings, Vn as alertEpisodePayload, Vr as isMediaOwnerType, Vt as NcRuleTargetSchema, W as LABEL_SUPPLY_MACRO, Wi as systemEventFilterApplies, Wn as applyNonBlockingEdit, Wr as isScheduleActive, Wt as NcSharedSequenceSchema, X as MAX_BIRTH_DECISION_RECORDS, Xi as viewerLinkBaseOf, Xn as buildEventKindDescriptor, Xr as mayWriteToLocation, Xt as NcTaxonomySchema, Y as MAX_ARCHIVED_DEBUG_NOTES, Yi as vectorDimFromBase64, Yn as audioModeOf, Yr as linkedStepOf, Yt as NcSystemEventKindSchema, Z as MAX_BIRTH_LATENCY_PROXY_MS, Zi as withSystemEventClasses, Zn as buildSubjectPath, Zr as memoizePinnedFfmpeg, Zt as NcTemplatePreviewInputSchema, _ as AlarmArmModeSchema, _i as resolveDeliveryParams, _n as SCENE_DEFAULT_UNCOVERED_POLICY, _t as NC_CONFIRM_DEFAULT_TIMEOUT_MS, a as CLIP_EMBEDDING_STEP_ID, aa as CamProfileSchema, ai as paletteResultSchema, an as RECORDING_SOURCE_CAMSTACK_ADDON, ar as coreBlockIdFromAddonId, at as NC_ALARM_DELAY_FIELDS, b as BaseDevice, ba as _enum, bi as resolveModeNotifyPolicy, bn as SceneMonitorSchema, bt as NC_DEFAULT_SNOOZE_MINUTES, c as readClusterModelPinStrict, ca as RECORD_QUERY_MAX, ci as pickFaceRescoreIntervalMinutes, cn as RetrainOriginSchema, cr as deleteAlarmProfile, ct as NC_ALARM_SYSTEM_EVENT_KINDS, d as APPEARANCE_BIN_COUNT, da as defineAddonMigrations, di as projectSubjectPath, dn as SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX, dr as deriveRecordingMode, dt as NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT, ea as canonicalHash, ei as normalizeNcCapTarget, en as OPS_LOG_DEFAULT_LIMIT, er as calendarEventLocalSpan, et as MOTION_CLOSE_AFTER_MS, f as APPEARANCE_BLOCKS, fa as defineCustomActions, fi as readDeviceStateFrom, fn as SCENE_CONFIRM_DEFAULT_TIMEOUT_MS, fr as describeSystemEventDeliveryProblem, ft as NC_CLIP_POST_ROLL_DEFAULT_SEC, g as ActionTargetResolver, ga as nodePin, gi as resolveClipSearchMinScore, gn as SCENE_DEFAULT_QUIET_SECONDS, gt as NC_CONFIRM_DEFAULT_MAX_IMAGE_PX, h as AUDIO_MACRO_LABELS, ha as isDeviceScopedCap, hi as renameAlarmProfile, hn as SCENE_DEFAULT_OBSERVATION_SPACING_SEC, hr as deviceRemovalHookCapability, ht as NC_CONDITION_CATALOG, ia as CAP_ADVANCE_FIELDS, ii as paintHex, in as RECORDING_EXPORT_MAX_READ_BYTES, ir as consumableLowPercentOf, it as NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC, j as DETECTION_PIPELINE_CAP_NAME, ja as string, ji as secureActuationFor, jn as TrackRelationKindSchema, jr as isAlertEpisodeSeverity, jt as NcAlarmPostTriggeredActionSchema, k as DEFAULT_TIMELAPSE_PREVIEW_TEXT, ka as record, ki as ruleKindOf, kn as TrackPlacementSchema, kr as isAlarmControllableCap, kt as NC_TEMPLATE_VARS, l as resolveClusterModelPin, la as createEvent, li as pipelineAnalyticsCapability, ln as RetrainStatusSchema, lr as deriveDetailCropRect, lt as NC_ALARM_TRIGGERED_MAX_SEC, m as ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT, ma as hydrateSchema, mi as readTimelapseGeneratedAt, mn as SCENE_DEFAULT_CHECK_INTERVAL_SEC, mr as deviceAttentionKind, mt as NC_CLIP_RETENTION_MAX_SEC, na as isSourceCap, ni as notificationRulesCapability, nn as PackageLlmVerdictSchema, nr as cloneAlarmSettings, nt as MotionTriggeredBySchema, o as CLUSTER_MODEL_OWNER_ADDON_ID, oa as InvalidRecordError, oi as parseAlertEpisodePayload, on as RebuildObjectEmbeddingsRefusalSchema, or as cosineSimilarity$1, ot as NC_ALARM_DELAY_MAX_SEC, p as APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT, pa as defineRecordKinds, pi as readMotionTriggeredBy, pn as SCENE_DEFAULT_ANCHOR_THRESHOLD, pr as describeSystemEventFamilyProblem, pt as NC_CLIP_PRE_ROLL_DEFAULT_SEC, q as ListTrackRelationsResultSchema, qi as templateCarriesSummary, qn as assertTimelapseCadences, qr as isVectorIndexDimConflict, qt as NcSnoozeSuppressedSchema, ra as BaseAddon, ri as occupancyScope, rr as consumableFormOf, rt as NC_ALARM_DEFAULT_PROFILE_ID, s as FACE_EMBEDDING_STEP_ID, sa as RECORD_MAX_DATA_BYTES, sn as RetrainDismissedSchema, sr as createAlarmProfile, st as NC_ALARM_NOTIFY_FIELDS, t as BUILTIN_CLIP_MODELS, ta as evaluateSensorEdge, ti as normalizeNcMediaPolicy, tn as OpsLogEntrySchema, tr as classifyRetrainReview, tt as MediaFileKindEnum, u as ACTION_TARGET_INVALIDATION_EVENTS, ua as customAction, ui as plateGalleryCapability, un as RetrainVerdictSubjectSchema, ur as derivePostTriggeredAction, ut as NC_AUDIO_CONFIRM_HITS_DEFAULT, v as ArchivedDebugNoteSchema, va as sleep$1, vi as resolveLocationMode, vn as SCENE_DIVERGED, vr as embeddingRefusalOf, vt as NC_CONSUMABLE_LOW_PERCENT_DEFAULT, w as ClearTrackRelationInputSchema, wa as literal, wi as rootSupplyServes, wn as TIMELAPSE_DENSE_FLOOR_SEC, wr as evictionPolicyOfLocation, wt as NC_SENSOR_TRANSITION_KINDS, x as BirthDecisionRecordSchema, xa as array, xi as resolveNcMediaImage, xn as SetTrackPurityInputSchema, xr as encodeVectorBase64, xt as NC_GROUPING_DEFAULT_SEC, y as BIRTH_DECISION_DEFAULT_LIMIT, ya as ZodObject, yi as resolveModeDelays, yn as SCENE_RESET_RECAPTURES, yt as NC_CONSUMABLE_SYSTEM_EVENT_KINDS, z as EVENT_OWNER_TYPES, zi as summarizeReview, zn as alertEpisodeId, zr as isKnownTemplateVar, zt as NcRulePatchSchema } from "../clip-model-registry-ELaSS9jq.mjs";
1
+ import { $ as MAX_TRACK_RELATIONS, $i as DEFAULT_FIRST_SIGHTING_FRESHNESS_MS, $n as bundledCamstack, $r as normalizeNcAction, $t as NcTemplateVarDescriptorSchema, A as DETECTION_MACRO_CLASSES, Aa as strictObject, Ai as sceneMonitorCapability, An as TrackPuritySchema, Ar as isAlertEpisodeOpen, At as NcAlarmConfigSchema, B as EXPORT_DENSE_MAX_RANGES, Bi as sunTimes, Bn as alertEpisodeKind, Br as isLabelSupplyStepId, Bt as NcRuleSchema, C as COCO_TO_MACRO, Ca as discriminatedUnion, Ci as retrainRevisionConflictMessage, Cn as SetTrackRelationInputSchema, Cr as eventKindLabel, Ct as NC_GROUPING_MIN_SEC, D as DEFAULT_DETAIL_CROP_CONVENTION, Da as object, Di as ruleDeviceCompatCapQueries, Dn as TimelapseRulePatchSchema, Dr as gifDeriveSpeed, Dt as NC_SYSTEM_EVENT_KIND_GROUP_SPECS, E as CoverStateSchema, Ea as number, Ei as ruleBelongsToAlarm$1, En as TimelapseRuleInputSchema, Er as failureContributionCapability, Et as NC_STATE_SUMMARY_SECTION_IDS, F as EMBEDDING_REQUIREMENTS_FAILED, Fa as unknown, Fi as storageOccupancyCapability, Fn as activateAlarmProfile, Fr as isDetectionMacroClass, Ft as NcConditionDescriptorSchema, G as LabelAttributionSchema, Gi as systemEventSummaryScheduleOf, Gn as applySecureOnArmEdit, Gr as isSystemDelivery, Gt as NcSnoozeInputSchema, H as FULL_IMAGE_BBOX, Hi as systemEventDeliveryProblems, Hn as applyBlockingEdit, Hr as isRetiredClearKey, Ht as NcRuleUpdateInputSchema, I as EMBEDDING_REQUIREMENTS_UNAVAILABLE, Ia as DeviceType, Ii as subKindsOf, In as addonWidgetsSourceCapability, Ir as isDrawableSubjectPath, It as NcConditionsSchema, J as LockStateSchema, Ji as templateVarsFor, Jn as audioMetricsCapability, Jr as kebabToCamel, Jt as NcStateSummarySectionIdSchema, K as ListTrackRelationsInputSchema, Ki as systemEventSummarySplitOf, Kn as armRemovalReconcile, Kr as isSystemEventSummaryRule, Kt as NcSnoozeSchema, L as EVENT_DENSITY_BATCH_MAX, La as errMsg, Li as subjectPathSampleFromBox, Ln as alarmDeviceSecureOnArm, Lr as isEventKindLabelKey, Lt as NcRuleActionSchema, M as DeclaredDevices, Ma as templateLiteral, Mi as sensorRaisedOf, Mn as TrackRelationSchema, Mr as isAppLinkBase, Mt as NcAlarmSensorsInputSchema, N as DetectionSourceSchema, Na as tuple, Ni as servedTemplateVars, Nn as TrackSideSchema, Nr as isAudioClassName, Nt as NcAlarmSensorsSchema, O as DEFAULT_EVENT_COLOR, Oa as partialRecord, Oi as ruleGroupingApplies, On as TimelapseRuleSchema, Or as gifFromMp4Args, Ot as NC_TAXONOMY, P as EMBEDDING_MODEL_FAILED, Pa as union, Pi as startMoverUnderClearance, Pn as TrackSourceSchema, Pr as isDefaultAlarmProfileId, Pt as NcAlarmSettingsPatchSchema, Q as MAX_TRACK_PURITIES, Qi as zoneAnalyticsCapability, Qn as buildViewerLink, Qr as ncMediaPolicyError, Qt as NcTemplatePreviewSchema, R as EVENT_KIND_BY_CAP, Ra as EventCategory, Ri as subjectPathSvgPoints, Rn as alarmPanelCapability, Rr as isEventOwnerType, Rt as NcRuleInputSchema, S as BucketAccumulator, Sa as boolean, Sn as SetTrackPurityResultSchema, Sr as ensureAlarmProfiles, St as NC_GROUPING_MAX_SEC, T as ClearTrackRelationResultSchema, Ta as looseObject, Ti as ruleAutoTriggersAlarm, Tn as TRACK_RELATIONS_DEFAULT_LIMIT, Tr as faceGalleryCapability, Tt as NC_SNOOZE_MAX_MINUTES, U as FailureCounters, Ui as systemEventFamilyProblems, Un as applyModeDelaysEdits, Ur as isRootSuppliableStepId, Ut as NcScheduleSchema, V as FIRST_LEVEL_MACRO_CLASSES, Vi as syncActiveAlarmProfileSettings, Vn as alertEpisodePayload, Vr as isMediaOwnerType, Vt as NcRuleTargetSchema, W as LABEL_SUPPLY_MACRO, Wi as systemEventFilterApplies, Wn as applyNonBlockingEdit, Wr as isScheduleActive, Wt as NcSharedSequenceSchema, X as MAX_BIRTH_DECISION_RECORDS, Xi as viewerLinkBaseOf, Xn as buildEventKindDescriptor, Xr as mayWriteToLocation, Xt as NcTaxonomySchema, Y as MAX_ARCHIVED_DEBUG_NOTES, Yi as vectorDimFromBase64, Yn as audioModeOf, Yr as linkedStepOf, Yt as NcSystemEventKindSchema, Z as MAX_BIRTH_LATENCY_PROXY_MS, Zi as withSystemEventClasses, Zn as buildSubjectPath, Zr as memoizePinnedFfmpeg, Zt as NcTemplatePreviewInputSchema, _ as AlarmArmModeSchema, _i as resolveDeliveryParams, _n as SCENE_DEFAULT_UNCOVERED_POLICY, _t as NC_CONFIRM_DEFAULT_TIMEOUT_MS, a as CLIP_EMBEDDING_STEP_ID, aa as CamProfileSchema, ai as paletteResultSchema, an as RECORDING_SOURCE_CAMSTACK_ADDON, ar as coreBlockIdFromAddonId, at as NC_ALARM_DELAY_FIELDS, b as BaseDevice, ba as _enum, bi as resolveModeNotifyPolicy, bn as SceneMonitorSchema, bt as NC_DEFAULT_SNOOZE_MINUTES, c as readClusterModelPinStrict, ca as RECORD_QUERY_MAX, ci as pickFaceRescoreIntervalMinutes, cn as RetrainOriginSchema, cr as deleteAlarmProfile, ct as NC_ALARM_SYSTEM_EVENT_KINDS, d as APPEARANCE_BIN_COUNT, da as defineAddonMigrations, di as projectSubjectPath, dn as SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX, dr as deriveRecordingMode, dt as NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT, ea as canonicalHash, ei as normalizeNcCapTarget, en as OPS_LOG_DEFAULT_LIMIT, er as calendarEventLocalSpan, et as MOTION_CLOSE_AFTER_MS, f as APPEARANCE_BLOCKS, fa as defineCustomActions, fi as readDeviceStateFrom, fn as SCENE_CONFIRM_DEFAULT_TIMEOUT_MS, fr as describeSystemEventDeliveryProblem, ft as NC_CLIP_POST_ROLL_DEFAULT_SEC, g as ActionTargetResolver, ga as nodePin, gi as resolveClipSearchMinScore, gn as SCENE_DEFAULT_QUIET_SECONDS, gt as NC_CONFIRM_DEFAULT_MAX_IMAGE_PX, h as AUDIO_MACRO_LABELS, ha as isDeviceScopedCap, hi as renameAlarmProfile, hn as SCENE_DEFAULT_OBSERVATION_SPACING_SEC, hr as deviceRemovalHookCapability, ht as NC_CONDITION_CATALOG, ia as CAP_ADVANCE_FIELDS, ii as paintHex, in as RECORDING_EXPORT_MAX_READ_BYTES, ir as consumableLowPercentOf, it as NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC, j as DETECTION_PIPELINE_CAP_NAME, ja as string, ji as secureActuationFor, jn as TrackRelationKindSchema, jr as isAlertEpisodeSeverity, jt as NcAlarmPostTriggeredActionSchema, k as DEFAULT_TIMELAPSE_PREVIEW_TEXT, ka as record, ki as ruleKindOf, kn as TrackPlacementSchema, kr as isAlarmControllableCap, kt as NC_TEMPLATE_VARS, l as resolveClusterModelPin, la as createEvent, li as pipelineAnalyticsCapability, ln as RetrainStatusSchema, lr as deriveDetailCropRect, lt as NC_ALARM_TRIGGERED_MAX_SEC, m as ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT, ma as hydrateSchema, mi as readTimelapseGeneratedAt, mn as SCENE_DEFAULT_CHECK_INTERVAL_SEC, mr as deviceAttentionKind, mt as NC_CLIP_RETENTION_MAX_SEC, na as isSourceCap, ni as notificationRulesCapability, nn as PackageLlmVerdictSchema, nr as cloneAlarmSettings, nt as MotionTriggeredBySchema, o as CLUSTER_MODEL_OWNER_ADDON_ID, oa as InvalidRecordError, oi as parseAlertEpisodePayload, on as RebuildObjectEmbeddingsRefusalSchema, or as cosineSimilarity$1, ot as NC_ALARM_DELAY_MAX_SEC, p as APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT, pa as defineRecordKinds, pi as readMotionTriggeredBy, pn as SCENE_DEFAULT_ANCHOR_THRESHOLD, pr as describeSystemEventFamilyProblem, pt as NC_CLIP_PRE_ROLL_DEFAULT_SEC, q as ListTrackRelationsResultSchema, qi as templateCarriesSummary, qn as assertTimelapseCadences, qr as isVectorIndexDimConflict, qt as NcSnoozeSuppressedSchema, ra as BaseAddon, ri as occupancyScope, rr as consumableFormOf, rt as NC_ALARM_DEFAULT_PROFILE_ID, s as FACE_EMBEDDING_STEP_ID, sa as RECORD_MAX_DATA_BYTES, sn as RetrainDismissedSchema, sr as createAlarmProfile, st as NC_ALARM_NOTIFY_FIELDS, t as BUILTIN_CLIP_MODELS, ta as evaluateSensorEdge, ti as normalizeNcMediaPolicy, tn as OpsLogEntrySchema, tr as classifyRetrainReview, tt as MediaFileKindEnum, u as ACTION_TARGET_INVALIDATION_EVENTS, ua as customAction, ui as plateGalleryCapability, un as RetrainVerdictSubjectSchema, ur as derivePostTriggeredAction, ut as NC_AUDIO_CONFIRM_HITS_DEFAULT, v as ArchivedDebugNoteSchema, va as sleep$1, vi as resolveLocationMode, vn as SCENE_DIVERGED, vr as embeddingRefusalOf, vt as NC_CONSUMABLE_LOW_PERCENT_DEFAULT, w as ClearTrackRelationInputSchema, wa as literal, wi as rootSupplyServes, wn as TIMELAPSE_DENSE_FLOOR_SEC, wr as evictionPolicyOfLocation, wt as NC_SENSOR_TRANSITION_KINDS, x as BirthDecisionRecordSchema, xa as array, xi as resolveNcMediaImage, xn as SetTrackPurityInputSchema, xr as encodeVectorBase64, xt as NC_GROUPING_DEFAULT_SEC, y as BIRTH_DECISION_DEFAULT_LIMIT, ya as ZodObject, yi as resolveModeDelays, yn as SCENE_RESET_RECAPTURES, yt as NC_CONSUMABLE_SYSTEM_EVENT_KINDS, z as EVENT_OWNER_TYPES, zi as summarizeReview, zn as alertEpisodeId, zr as isKnownTemplateVar, zt as NcRulePatchSchema } from "../clip-model-registry-CwXJyrLg.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";
@@ -70695,6 +70695,7 @@ Object.freeze({
70695
70695
  "pageSize": 50
70696
70696
  } },
70697
70697
  "device-runs": { "listRuns": { "limit": 50 } },
70698
+ "fan-presets": { "capturePreset": { "steps": [] } },
70698
70699
  "llm": { "upsertProfile": { "profile": { "__nested__": {
70699
70700
  "timeoutMs": 6e4,
70700
70701
  "connectTimeoutMs": 1e4,
@@ -70935,6 +70936,10 @@ Object.freeze({
70935
70936
  "speed": 2
70936
70937
  }
70937
70938
  },
70939
+ "system": { "debugWatch": {
70940
+ "channels": [],
70941
+ "deviceIds": []
70942
+ } },
70938
70943
  "terminal-session": { "pullOutput": { "waitMs": 0 } },
70939
70944
  "training": {
70940
70945
  "planJob": { "selection": { "__nested__": { "workState": "complete" } } },
@@ -70981,6 +70986,7 @@ Object.freeze({
70981
70986
  ],
70982
70987
  "device-removal-hook": ["listDeviceData"],
70983
70988
  "failure-contribution": ["list"],
70989
+ "integration-instances": ["listInstances"],
70984
70990
  "llm": [
70985
70991
  "getDefaults",
70986
70992
  "getUsage",
@@ -71022,6 +71028,7 @@ Object.freeze({
71022
71028
  "listSupportedEntityKinds",
71023
71029
  "unexposeEntity"
71024
71030
  ],
71031
+ "integration-instances": ["testInstance"],
71025
71032
  "log-destination": [
71026
71033
  "cancelRead",
71027
71034
  "describeRead",
@@ -85120,6 +85127,9 @@ async function renderMosaic(request, logger) {
85120
85127
  * one composition are decisions about the set, and none of them belongs in a
85121
85128
  * shelf that photographs one camera for an absence.
85122
85129
  *
85130
+ * A SLEEPING battery camera is woken by one forced capture when the rule leaves
85131
+ * it allowed (D998) — bounded, once per gap per camera, never by a poll.
85132
+ *
85123
85133
  * Two reads can only ever ADD a camera back, never take one away on their own
85124
85134
  * failure (D49): a wrapper-state read (run in parallel with the capture) that
85125
85135
  * misses or throws keeps the tile, and a freshness read that misses or throws
@@ -85133,6 +85143,15 @@ var NC_LINKED_CAMERA_PREFIX = "nc-linked:";
85133
85143
  function isLinkedStillId(id) {
85134
85144
  return id.startsWith(NC_LINKED_MOSAIC_PREFIX) || id.startsWith(NC_LINKED_CAMERA_PREFIX);
85135
85145
  }
85146
+ /**
85147
+ * D998 — the one forced capture that wakes a sleeping battery camera for a
85148
+ * sensor notification: the bound it may take, the pause between re-polls of a
85149
+ * camera another wake already started, and the gap per camera before it is
85150
+ * woken again (a flapping contact must not drain a battery).
85151
+ */
85152
+ var NC_LINKED_WAKE_CAPTURE_TIMEOUT_MS = 15e3;
85153
+ var NC_LINKED_WAKE_POLL_MS = 1e3;
85154
+ var NC_LINKED_WAKE_MIN_GAP_MS = 6e4;
85136
85155
  /** Per camera — the marker's own bound (`SENSOR_MARKER_SNAPSHOT_TIMEOUT_MS`). */
85137
85156
  var SENSOR_LINKED_CAPTURE_TIMEOUT_MS = 2500;
85138
85157
  /** The capture-free wrapper-state read, per camera. It runs IN PARALLEL with
@@ -85165,11 +85184,14 @@ var NcLinkedStillShelf = class {
85165
85184
  deps;
85166
85185
  sets = /* @__PURE__ */ new Map();
85167
85186
  owners = /* @__PURE__ */ new Map();
85187
+ /** setId → when its in-flight wake gives up (the dispatcher waits that long). */
85188
+ pendingWakes = /* @__PURE__ */ new Map();
85189
+ lastWakeAt = /* @__PURE__ */ new Map();
85168
85190
  constructor(deps) {
85169
85191
  this.deps = deps;
85170
85192
  }
85171
85193
  /** SYNCHRONOUS: the evaluation that follows names these owners. */
85172
- captureSet(sensorId, cameraIds, atMs) {
85194
+ captureSet(sensorId, cameraIds, atMs, options = { wakeSleeping: false }) {
85173
85195
  const now = this.deps.now();
85174
85196
  this.prune(now);
85175
85197
  const setId = randomUUID();
@@ -85197,7 +85219,7 @@ var NcLinkedStillShelf = class {
85197
85219
  camera: cameraId
85198
85220
  });
85199
85221
  });
85200
- this.run(setId, stills, atMs, now).catch((err) => {
85222
+ this.run(setId, stills, atMs, now, options).catch((err) => {
85201
85223
  this.deps.logger.warn("sensor notification pictures failed — it ships text-only", {
85202
85224
  tags: { deviceId: sensorId },
85203
85225
  meta: { error: String(err) }
@@ -85205,6 +85227,15 @@ var NcLinkedStillShelf = class {
85205
85227
  });
85206
85228
  return stills;
85207
85229
  }
85230
+ /**
85231
+ * While a wake of one of this owner's cameras is in flight: the instant it
85232
+ * gives up (its bound plus one poll). `undefined` otherwise — the dispatcher
85233
+ * then keeps its ordinary still-wait.
85234
+ */
85235
+ pendingUntil(ownerId) {
85236
+ const ref = this.owners.get(ownerId);
85237
+ return ref === void 0 ? void 0 : this.pendingWakes.get(ref.setId);
85238
+ }
85208
85239
  /** `undefined` = not an owner this shelf minted (or pruned); `[]` = nothing (yet). */
85209
85240
  get(ownerId) {
85210
85241
  const ref = this.owners.get(ownerId);
@@ -85226,20 +85257,37 @@ var NcLinkedStillShelf = class {
85226
85257
  clear() {
85227
85258
  this.sets.clear();
85228
85259
  this.owners.clear();
85260
+ this.pendingWakes.clear();
85229
85261
  }
85230
- async run(setId, stills, atMs, startedAt) {
85231
- const results = await Promise.all(stills.cameraIds.map((id) => this.captureOne(id, startedAt)));
85262
+ async run(setId, stills, atMs, startedAt, options) {
85263
+ const ctx = {
85264
+ setId,
85265
+ sensorId: stills.sensorId,
85266
+ startedAt,
85267
+ options
85268
+ };
85269
+ let results;
85270
+ try {
85271
+ results = await Promise.all(stills.cameraIds.map((id) => this.captureOne(id, ctx)));
85272
+ } finally {
85273
+ this.pendingWakes.delete(setId);
85274
+ }
85232
85275
  const judged = await this.judgeFreshness(stills.sensorId, results, atMs);
85233
85276
  for (const r of judged) this.logTile(stills.sensorId, r);
85234
85277
  const landed = judged.filter(isLandedTile);
85235
85278
  const composed = await this.compose(stills.sensorId, landed, atMs);
85236
85279
  const undrawable = landed.length - composed.drawn;
85280
+ const woken = judged.filter((r) => r.woken === true).map((r) => r.cameraId);
85237
85281
  this.deps.logger.info(composed.mosaic.length === 0 ? "sensor notification has no linked picture — it ships text-only" : "sensor notification pictures ready", {
85238
85282
  tags: { deviceId: stills.sensorId },
85239
85283
  meta: {
85240
85284
  cameras: stills.cameraIds.length,
85241
85285
  landed: composed.drawn,
85242
85286
  ...undrawable > 0 ? { undrawable } : {},
85287
+ ...woken.length > 0 ? {
85288
+ woken,
85289
+ waitedMs: this.deps.now() - startedAt
85290
+ } : {},
85243
85291
  dropped: Object.fromEntries(judged.filter((r) => r.outcome !== "landed").map((r) => [String(r.cameraId), r.outcome])),
85244
85292
  tookMs: this.deps.now() - startedAt
85245
85293
  }
@@ -85252,21 +85300,25 @@ var NcLinkedStillShelf = class {
85252
85300
  mosaic: composed.mosaic
85253
85301
  });
85254
85302
  }
85255
- async captureOne(cameraId, startedAt) {
85256
- const took = () => this.deps.now() - startedAt;
85303
+ async captureOne(cameraId, ctx) {
85304
+ const took = () => this.deps.now() - ctx.startedAt;
85257
85305
  if (this.deps.isOnline(cameraId) === false) return {
85258
85306
  cameraId,
85259
85307
  outcome: "excluded",
85260
85308
  reason: "offline",
85261
85309
  tookMs: took()
85262
85310
  };
85263
- const [verdict, capture] = await Promise.all([this.wrapperVerdict(cameraId), this.captureStill(cameraId)]);
85264
- if (verdict.reason !== null) return {
85311
+ const [verdict, capture] = await Promise.all([this.wrapperVerdict(cameraId), this.captureStill(cameraId, false, SENSOR_LINKED_CAPTURE_TIMEOUT_MS)]);
85312
+ const excluded = (reason) => ({
85265
85313
  cameraId,
85266
85314
  outcome: "excluded",
85267
- reason: verdict.reason,
85315
+ reason,
85268
85316
  tookMs: took()
85269
- };
85317
+ });
85318
+ if (verdict.reason === "sleeping") return this.wakeOne(cameraId, ctx);
85319
+ if (verdict.reason === "waking" && ctx.options.wakeSleeping) return this.awaitWaking(cameraId, ctx);
85320
+ if (verdict.reason === "unreachable" && ctx.options.wakeSleeping) return excluded("wake-skipped:unreachable");
85321
+ if (verdict.reason !== null) return excluded(verdict.reason);
85270
85322
  return {
85271
85323
  cameraId,
85272
85324
  ...capture,
@@ -85274,9 +85326,84 @@ var NcLinkedStillShelf = class {
85274
85326
  tookMs: took()
85275
85327
  };
85276
85328
  }
85277
- async captureStill(cameraId) {
85329
+ /** D998: one forced capture, by the rule's leave, at most once per gap per camera. */
85330
+ async wakeOne(cameraId, ctx) {
85331
+ const took = () => this.deps.now() - ctx.startedAt;
85332
+ const skipped = (reason) => ({
85333
+ cameraId,
85334
+ outcome: "excluded",
85335
+ reason,
85336
+ tookMs: took()
85337
+ });
85338
+ if (!ctx.options.wakeSleeping) return skipped("wake-skipped:policy");
85339
+ const last = this.lastWakeAt.get(cameraId);
85340
+ if (last !== void 0 && ctx.startedAt - last < NC_LINKED_WAKE_MIN_GAP_MS) return skipped("wake-skipped:recent-wake");
85341
+ this.lastWakeAt.set(cameraId, ctx.startedAt);
85342
+ this.markPending(ctx);
85343
+ this.deps.logger.info("linked battery camera woken for the sensor notification", {
85344
+ tags: { deviceId: cameraId },
85345
+ meta: {
85346
+ sensorId: ctx.sensorId,
85347
+ ruleIds: ctx.options.ruleIds ?? [],
85348
+ boundMs: NC_LINKED_WAKE_CAPTURE_TIMEOUT_MS
85349
+ }
85350
+ });
85351
+ const capture = await this.captureStill(cameraId, true, NC_LINKED_WAKE_CAPTURE_TIMEOUT_MS);
85352
+ return {
85353
+ cameraId,
85354
+ ...this.asWakeResult(capture),
85355
+ woken: true,
85356
+ tookMs: took()
85357
+ };
85358
+ }
85359
+ /** A camera another wake already started: never forced, re-polled within the bound. */
85360
+ async awaitWaking(cameraId, ctx) {
85361
+ const took = () => this.deps.now() - ctx.startedAt;
85362
+ this.markPending(ctx);
85363
+ const polls = Math.floor(NC_LINKED_WAKE_CAPTURE_TIMEOUT_MS / NC_LINKED_WAKE_POLL_MS);
85364
+ for (let i = 0; i < polls; i++) {
85365
+ await new Promise((resolve) => setTimeout(resolve, NC_LINKED_WAKE_POLL_MS));
85366
+ const verdict = await this.wrapperVerdict(cameraId);
85367
+ if (verdict.reason === "waking") continue;
85368
+ if (verdict.reason !== null) return {
85369
+ cameraId,
85370
+ outcome: "excluded",
85371
+ reason: verdict.reason,
85372
+ tookMs: took()
85373
+ };
85374
+ const capture = await this.captureStill(cameraId, false, SENSOR_LINKED_CAPTURE_TIMEOUT_MS);
85375
+ return {
85376
+ cameraId,
85377
+ ...this.asWakeResult(capture),
85378
+ woken: true,
85379
+ tookMs: took()
85380
+ };
85381
+ }
85382
+ return {
85383
+ cameraId,
85384
+ outcome: "wake-timeout",
85385
+ woken: true,
85386
+ tookMs: took()
85387
+ };
85388
+ }
85389
+ markPending(ctx) {
85390
+ const until = ctx.startedAt + NC_LINKED_WAKE_CAPTURE_TIMEOUT_MS + NC_LINKED_WAKE_POLL_MS;
85391
+ this.pendingWakes.set(ctx.setId, Math.max(this.pendingWakes.get(ctx.setId) ?? 0, until));
85392
+ }
85393
+ /** A wake that brought nothing back names itself, not the generic `empty`. */
85394
+ asWakeResult(capture) {
85395
+ if (capture.outcome === "timeout") return {
85396
+ ...capture,
85397
+ outcome: "wake-timeout"
85398
+ };
85399
+ return capture.outcome === "empty" || capture.outcome === "error" && capture.reason !== "undecodable" ? {
85400
+ ...capture,
85401
+ outcome: "wake-refused"
85402
+ } : capture;
85403
+ }
85404
+ async captureStill(cameraId, force, timeoutMs) {
85278
85405
  try {
85279
- const shot = await withTimeout$2(this.deps.getSnapshot(cameraId), SENSOR_LINKED_CAPTURE_TIMEOUT_MS, "snapshot cap");
85406
+ const shot = await withTimeout$2(force ? this.deps.getSnapshot(cameraId, { force: true }) : this.deps.getSnapshot(cameraId), timeoutMs, "snapshot cap");
85280
85407
  if (shot === null || shot.base64.length === 0) return { outcome: "empty" };
85281
85408
  const jpeg = await this.decodableStill(Buffer.from(shot.base64, "base64"));
85282
85409
  if (jpeg === null) return {
@@ -86835,6 +86962,13 @@ var NC_RECORDED_FOOTAGE_WAIT_MS = 3e4;
86835
86962
  var NC_STILL_WAIT_MS = 3e3;
86836
86963
  var NC_STILL_WAIT_INTERVAL_MS = 500;
86837
86964
  /**
86965
+ * D998 — the longest a sensor notification holds for a linked battery camera
86966
+ * that is being woken (`stillDeadline`). A `sent` row is final, so the picture
86967
+ * cannot follow the push: it is waited for here, bounded, or never attached.
86968
+ * Owners with no wake in flight keep {@link NC_STILL_WAIT_MS}.
86969
+ */
86970
+ var NC_LINKED_WAKE_WAIT_MS = 15e3;
86971
+ /**
86838
86972
  * How far a still's OWN instant may sit from the trigger and still count as
86839
86973
  * being ABOUT the trigger, for a `delivery: 'immediate'` rule.
86840
86974
  *
@@ -88051,7 +88185,15 @@ var NcDispatcher = class {
88051
88185
  const firstLook = groupTiles !== null ? null : await this.resolveAttachment(entry, canStillGainMedia(entry) ? "trigger-only" : "any");
88052
88186
  const footagePending = this.renderFootage(entry);
88053
88187
  const mosaic = groupView !== void 0 && groupTiles !== null ? await this.groupedMosaic(entry, groupView, groupTiles) : null;
88054
- const still = mosaic !== null ? mosaic.attachment : firstLook !== null || entry.payload.media === "none" ? firstLook : await this.waitForStill(entry);
88188
+ let waitedMs = 0;
88189
+ let still;
88190
+ if (mosaic !== null) still = mosaic.attachment;
88191
+ else if (firstLook !== null || entry.payload.media === "none") still = firstLook;
88192
+ else {
88193
+ const waited = await this.waitForStill(entry);
88194
+ still = waited.still;
88195
+ waitedMs = waited.waitedMs;
88196
+ }
88055
88197
  const grouped = groupView !== void 0 && groupMembers !== null ? {
88056
88198
  windowKey: groupView.key,
88057
88199
  members: groupView.members.length,
@@ -88076,6 +88218,7 @@ var NcDispatcher = class {
88076
88218
  recordKind: entry.recordKind,
88077
88219
  recordId: entry.recordId,
88078
88220
  policy: entry.payload.media,
88221
+ waitedMs,
88079
88222
  ...entry.payload.mediaImage !== void 0 ? { image: entry.payload.mediaImage } : {},
88080
88223
  ...memberTrackIds.length > 1 ? { memberTrackIds } : {},
88081
88224
  owners: [...entry.payload.subject.eventId !== void 0 ? [`object:${entry.payload.subject.eventId}`] : [], ...entry.payload.subject.trackId !== void 0 ? [`track:${entry.payload.subject.trackId}`] : []]
@@ -88102,7 +88245,13 @@ var NcDispatcher = class {
88102
88245
  const subject = entry.payload.subject;
88103
88246
  const out = [];
88104
88247
  for (const { ownerId, cameraId } of subject.extraStills ?? []) {
88105
- const file = await this.linkedStillFile(entry, ownerId, cameraId);
88248
+ let file = await this.linkedStillFile(entry, ownerId, cameraId);
88249
+ for (let polls = 0; file === void 0 && polls < NC_LINKED_WAKE_WAIT_MS / NC_STILL_WAIT_INTERVAL_MS; polls += 1) {
88250
+ const deadline = this.deps.stillDeadline?.(ownerId);
88251
+ if (deadline === void 0 || this.now() >= deadline) break;
88252
+ await this.sleep(NC_STILL_WAIT_INTERVAL_MS);
88253
+ file = await this.linkedStillFile(entry, ownerId, cameraId);
88254
+ }
88106
88255
  const bytes = file === void 0 ? null : decodeStillBytes(file.base64);
88107
88256
  if (file === void 0 || bytes === null) {
88108
88257
  this.deps.logger.info("linked camera picture missing at send — skipped", {
@@ -88589,11 +88738,19 @@ var NcDispatcher = class {
88589
88738
  */
88590
88739
  async waitForStill(entry) {
88591
88740
  const subject = entry.payload.subject;
88592
- if (this.now() - subject.timestamp > NC_STILL_WAIT_MAX_AGE_MS) return this.resolveAttachment(entry, "any");
88593
- if (subject.eventId === void 0 && subject.trackId === void 0) return null;
88594
- const attempts = Math.floor(NC_STILL_WAIT_MS / NC_STILL_WAIT_INTERVAL_MS);
88595
- for (let i = 0; i < attempts; i += 1) {
88741
+ if (this.now() - subject.timestamp > NC_STILL_WAIT_MAX_AGE_MS) return {
88742
+ still: await this.resolveAttachment(entry, "any"),
88743
+ waitedMs: 0
88744
+ };
88745
+ if (subject.eventId === void 0 && subject.trackId === void 0) return {
88746
+ still: null,
88747
+ waitedMs: 0
88748
+ };
88749
+ const startedAt = this.now();
88750
+ let waitedMs = 0;
88751
+ for (let i = 0; waitedMs < this.stillWaitBoundMs(entry, startedAt); i += 1) {
88596
88752
  await this.sleep(NC_STILL_WAIT_INTERVAL_MS);
88753
+ waitedMs += NC_STILL_WAIT_INTERVAL_MS;
88597
88754
  const still = await this.resolveAttachment(entry, "trigger-only");
88598
88755
  if (still !== null) {
88599
88756
  this.deps.logger.info("the still landed during the bounded wait", {
@@ -88605,10 +88762,32 @@ var NcDispatcher = class {
88605
88762
  kind: still.name
88606
88763
  }
88607
88764
  });
88608
- return still;
88765
+ return {
88766
+ still,
88767
+ waitedMs
88768
+ };
88609
88769
  }
88610
88770
  }
88611
- return this.resolveAttachment(entry, "any");
88771
+ return {
88772
+ still: await this.resolveAttachment(entry, "any"),
88773
+ waitedMs
88774
+ };
88775
+ }
88776
+ /**
88777
+ * How long this row's still poll may run: {@link NC_STILL_WAIT_MS}, or — while
88778
+ * the shelf says a linked camera of this row is being woken — until that
88779
+ * wake gives up, at most {@link NC_LINKED_WAKE_WAIT_MS} (D998).
88780
+ */
88781
+ stillWaitBoundMs(entry, startedAt) {
88782
+ const subject = entry.payload.subject;
88783
+ const owners = [...subject.trackId !== void 0 ? [subject.trackId] : [], ...(subject.extraStills ?? []).map((extra) => extra.ownerId)];
88784
+ let deadline;
88785
+ for (const ownerId of owners) {
88786
+ const until = this.deps.stillDeadline?.(ownerId);
88787
+ if (until !== void 0 && (deadline === void 0 || until > deadline)) deadline = until;
88788
+ }
88789
+ if (deadline === void 0) return NC_STILL_WAIT_MS;
88790
+ return Math.max(NC_STILL_WAIT_MS, Math.min(NC_LINKED_WAKE_WAIT_MS, deadline - startedAt));
88612
88791
  }
88613
88792
  /**
88614
88793
  * The grouped MOSAIC (D692 §6.2): one tile per member, at most
@@ -88756,8 +88935,8 @@ var NcDispatcher = class {
88756
88935
  return ts !== void 0 && this.now() - ts <= NC_STILL_WAIT_MAX_AGE_MS;
88757
88936
  });
88758
88937
  await look("trigger-only", pollable());
88759
- const attempts = Math.floor(NC_STILL_WAIT_MS / NC_STILL_WAIT_INTERVAL_MS);
88760
- for (let i = 0; i < attempts && pollable().length > 0; i += 1) {
88938
+ const startedAt = this.now();
88939
+ for (let waited = 0; waited < this.stillWaitBoundMs(entry, startedAt) && pollable().length > 0; waited += NC_STILL_WAIT_INTERVAL_MS) {
88761
88940
  await this.sleep(NC_STILL_WAIT_INTERVAL_MS);
88762
88941
  await look("trigger-only", pollable());
88763
88942
  }
@@ -104277,7 +104456,7 @@ function beginLinkedStills(host, request) {
104277
104456
  if (rowCameraIds.length > 0 && rowShown.length === 0) return void 0;
104278
104457
  const shown = host.unmutedCameras(cameraIds);
104279
104458
  const involved = [sensorId, ...rowShown];
104280
- if (!host.rules.listEnabled("device-event").some((rule) => {
104459
+ const wanting = host.rules.listEnabled("device-event").filter((rule) => {
104281
104460
  if (ruleShipsNoStill(rule)) return false;
104282
104461
  if (!deviceEventRuleMayFireOnKind(rule, sensorKind, sensorRaised)) return false;
104283
104462
  const excluded = rule.conditions.devicesExclude;
@@ -104288,9 +104467,14 @@ function beginLinkedStills(host, request) {
104288
104467
  })) return false;
104289
104468
  const devices = rule.conditions.devices;
104290
104469
  return devices === void 0 || devices.length === 0 || devices.some((id) => involved.includes(id));
104291
- })) return void 0;
104470
+ });
104471
+ if (wanting.length === 0) return void 0;
104472
+ const wakeSleeping = wanting.some((rule) => rule.media?.wakeSleepingCamera !== false);
104292
104473
  for (const cameraId of cameraIds) if (!shown.includes(cameraId)) host.reportLinkedCameraMuted(cameraId, sensorId);
104293
- return shown.length > 0 ? shelf.captureSet(sensorId, shown, atMs) : void 0;
104474
+ return shown.length > 0 ? shelf.captureSet(sensorId, shown, atMs, {
104475
+ wakeSleeping,
104476
+ ruleIds: wanting.map((rule) => rule.id)
104477
+ }) : void 0;
104294
104478
  }
104295
104479
  /**
104296
104480
  * A muted camera left out of a linked set — one INFO line per camera per
@@ -107013,6 +107197,7 @@ var NotificationCenter = class {
107013
107197
  ...deps.dispatcher,
107014
107198
  logger: this.logger.child("dispatch"),
107015
107199
  texts: this.texts,
107200
+ stillDeadline: (ownerId) => isLinkedStillId(ownerId) ? this.linkedStills?.pendingUntil(ownerId) : void 0,
107016
107201
  getMediaForOwner: async (ownerKind, ownerId, eventScope) => {
107017
107202
  const held = isSyntheticId(ownerId) ? this.syntheticMedia.get(ownerId) : void 0;
107018
107203
  if (held !== void 0) return held.files;
@@ -109596,7 +109781,10 @@ var BuildNotificationCenter = class extends BuildNotificationCenterBase {
109596
109781
  },
109597
109782
  readAlerts: () => api.alerts.list.query({ limit: 5e3 }),
109598
109783
  emitBusEvent: (event) => this.ctx.eventBus.emit(event),
109599
- getSnapshot: (deviceId) => api.snapshot.getSnapshot.query({ deviceId }),
109784
+ getSnapshot: (deviceId, opts) => api.snapshot.getSnapshot.query(opts?.force === true ? {
109785
+ deviceId,
109786
+ force: true
109787
+ } : { deviceId }),
109600
109788
  recognitionOutlook: ({ deviceId, trackId, className, labelKind, now }) => recognitionOutlook({
109601
109789
  className,
109602
109790
  ...labelKind !== void 0 ? { labelKind } : {},
@@ -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-BvOlyiL9.mjs")).catch((e) => {
33
+ return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-jPBj20ez.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.662",
3
+ "version": "1.2.663",
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",
@@ -138,7 +138,7 @@
138
138
  }
139
139
  ],
140
140
  "requires": {
141
- "server": ">=1.2.729"
141
+ "server": ">=1.2.740"
142
142
  }
143
143
  },
144
144
  "scripts": {