@camstack/addon-post-analysis 1.2.652 → 1.2.654
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/dist/{clip-model-registry-BrazZJvr.mjs → clip-model-registry-BX6j2lnF.mjs} +997 -147
- package/dist/{clip-model-registry-Bz1uQvQ8.js → clip-model-registry-CFQBxtE2.js} +997 -147
- 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-D6DnF6Vk.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-Vag6rhEh.mjs} +2 -2
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BUwWKfHC.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-DXQUFp7P.mjs +26 -0
- package/dist/pipeline-analytics/{hostInit-DtrcY1yz.mjs → hostInit-CnvnZsmk.mjs} +2 -2
- package/dist/pipeline-analytics/index.js +293 -15
- package/dist/pipeline-analytics/index.mjs +293 -15
- 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-BKMr4IqL.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-CtNyIYsM.mjs +0 -26
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as MediaFileKindEnum, $i as BaseAddon, $n as cloneAlarmSettings, $r as paintHex, $t as OpsLogEntrySchema, A as DeclaredDevices, Aa as unknown, Ai as storageOccupancyCapability, An as TrackSideSchema, Ar as isAudioClassName, At as NcAlarmSensorsInputSchema, B as FULL_IMAGE_BBOX, Bi as systemEventSummarySplitOf, Bn as applyModeDelaysEdits, Br as isRootSuppliableStepId, Bt as NcRuleUpdateInputSchema, C as ClearTrackRelationResultSchema, Ca as partialRecord, Ci as ruleGroupingApplies, Cn as TimelapseRuleInputSchema, Cr as failureContributionCapability, Ct as NC_SNOOZE_MAX_MINUTES, D as DEFAULT_TIMELAPSE_PREVIEW_TEXT, Da as templateLiteral, Di as sensorRaisedOf, Dn as TrackPuritySchema, Dr as isAlertEpisodeOpen, Dt as NC_TEMPLATE_VARS, E as DEFAULT_EVENT_COLOR, Ea as string, Ei as secureActuationFor, En as TrackPlacementSchema, Er as isAlarmControllableCap, Et as NC_TAXONOMY, F as EVENT_DENSITY_BATCH_MAX, Fi as syncActiveAlarmProfileSettings, Fn as alarmPanelCapability, Fr as isEventOwnerType, Ft as NcRuleActionSchema, G as ListTrackRelationsResultSchema, Gi as withSystemEventClasses, Gn as audioMetricsCapability, Gr as kebabToCamel, Gt as NcSnoozeSuppressedSchema, H as LABEL_SUPPLY_MACRO, Hi as templateVarsFor, Hn as applySecureOnArmEdit, Hr as isSystemDelivery, Ht as NcSharedSequenceSchema, I as EVENT_KIND_BY_CAP, Ii as systemEventDeliveryProblems, In as alertEpisodeId, Ir as isKnownTemplateVar, It as NcRuleInputSchema, J as MAX_BIRTH_DECISION_RECORDS, Ji as canonicalHash, Jn as buildSubjectPath, Jr as memoizePinnedFfmpeg, Jt as NcTaxonomySchema, K as LockStateSchema, Ki as zoneAnalyticsCapability, Kn as audioModeOf, Kr as linkedStepOf, Kt as NcStateSummarySectionIdSchema, L as EVENT_OWNER_TYPES, Li as systemEventFamilyProblems, Ln as alertEpisodeKind, Lr as isLabelSupplyStepId, Lt as NcRulePatchSchema, M as EMBEDDING_MODEL_FAILED, Mi as subjectPathSampleFromBox, Mn as activateAlarmProfile, Mr as isDetectionMacroClass, Mt as NcAlarmSettingsPatchSchema, N as EMBEDDING_REQUIREMENTS_FAILED, Ni as subjectPathSvgPoints, Nn as addonWidgetsSourceCapability, Nr as isDrawableSubjectPath, Nt as NcConditionDescriptorSchema, O as DETECTION_MACRO_CLASSES, Oa as tuple, Oi as servedTemplateVars, On as TrackRelationKindSchema, Or as isAlertEpisodeSeverity, Ot as NcAlarmConfigSchema, P as EMBEDDING_REQUIREMENTS_UNAVAILABLE, Pi as summarizeReview, Pn as alarmDeviceSecureOnArm, Pr as isEventKindLabelKey, Pt as NcConditionsSchema, Q as MOTION_CLOSE_AFTER_MS, Qi as errMsg, Qn as classifyRetrainReview, Qr as occupancyScope, Qt as OPS_LOG_DEFAULT_LIMIT, R as EXPORT_DENSE_MAX_RANGES, Ri as systemEventFilterApplies, Rn as alertEpisodePayload, Rr as isMediaOwnerType, Rt as NcRuleSchema, S as ClearTrackRelationInputSchema, Sa as object, Si as ruleDeviceCompatCapQueries, Sn as TRACK_RELATIONS_DEFAULT_LIMIT, Sr as faceGalleryCapability, St as NC_SENSOR_TRANSITION_KINDS, T as DEFAULT_DETAIL_CROP_CONVENTION, Ta as strictObject, Ti as sceneMonitorCapability, Tn as TimelapseRuleSchema, Tr as gifFromMp4Args, Tt as NC_SYSTEM_EVENT_KIND_GROUP_SPECS, U as LabelAttributionSchema, Ui as vectorDimFromBase64, Un as armRemovalReconcile, Ur as isSystemEventSummaryRule, Ut as NcSnoozeInputSchema, V as FailureCounters, Vi as templateCarriesSummary, Vn as applyNonBlockingEdit, Vr as isScheduleActive, Vt as NcScheduleSchema, W as ListTrackRelationsInputSchema, Wi as viewerLinkBaseOf, Wn as assertTimelapseCadences, Wr as isVectorIndexDimConflict, Wt as NcSnoozeSchema, X as MAX_TRACK_PURITIES, Xi as isSourceCap, Xn as bundledCamstack, Xr as normalizeNcMediaPolicy, Xt as NcTemplatePreviewSchema, Y as MAX_BIRTH_LATENCY_PROXY_MS, Yi as evaluateSensorEdge, Yn as buildViewerLink, Yr as ncMediaPolicyError, Yt as NcTemplatePreviewInputSchema, Z as MAX_TRACK_RELATIONS, Zi as DeviceType, Zn as calendarEventLocalSpan, Zr as notificationRulesCapability, Zt as NcTemplateVarDescriptorSchema, _ as BIRTH_DECISION_DEFAULT_LIMIT, _a as boolean, _n as SceneMonitorSchema, _t as NC_CONSUMABLE_SYSTEM_EVENT_KINDS, a as CLIP_EMBEDDING_STEP_ID, aa as createEvent, ai as plateGalleryCapability, an as RetrainDismissedSchema, ar as deleteAlarmProfile, at as NC_ALARM_NOTIFY_FIELDS, b as BucketAccumulator, ba as looseObject, bi as ruleAutoTriggersAlarm, bn as SetTrackRelationInputSchema, br as eventKindLabel, bt as NC_GROUPING_MAX_SEC, c as readClusterModelPinStrict, ca as defineRecordKinds, ci as readMotionTriggeredBy, cn as SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX, cr as deriveRecordingMode, ct as NC_AUDIO_CONFIRM_HITS_DEFAULT, d as APPEARANCE_BLOCKS, da as nodePin, di as resolveClipSearchMinScore, dn as SCENE_DEFAULT_CHECK_INTERVAL_SEC, dr as deviceAttentionKind, dt as NC_CLIP_PRE_ROLL_DEFAULT_SEC, ea as CAP_ADVANCE_FIELDS, ei as paletteResultSchema, en as PackageLlmVerdictSchema, er as consumableFormOf, et as MotionTriggeredBySchema, f as APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT, fi as resolveDeliveryParams, fn as SCENE_DEFAULT_OBSERVATION_SPACING_SEC, fr as deviceRemovalHookCapability, ft as NC_CLIP_RETENTION_MAX_SEC, g as ArchivedDebugNoteSchema, ga as array, gi as resolveNcMediaImage, gn as SCENE_RESET_RECAPTURES, gt as NC_CONSUMABLE_LOW_PERCENT_DEFAULT, h as AlarmArmModeSchema, ha as _enum, hi as resolveModeNotifyPolicy, hn as SCENE_DIVERGED, hr as embeddingRefusalOf, ht as NC_CONFIRM_DEFAULT_TIMEOUT_MS, ia as RECORD_QUERY_MAX, ii as pipelineAnalyticsCapability, in as RebuildObjectEmbeddingsRefusalSchema, ir as createAlarmProfile, it as NC_ALARM_DELAY_MAX_SEC, j as DetectionSourceSchema, ja as EventCategory, ji as subKindsOf, jn as TrackSourceSchema, jr as isDefaultAlarmProfileId, jt as NcAlarmSensorsSchema, k as DETECTION_PIPELINE_CAP_NAME, ka as union, ki as startMoverUnderClearance, kn as TrackRelationSchema, kr as isAppLinkBase, kt as NcAlarmPostTriggeredActionSchema, l as resolveClusterModelPin, la as hydrateSchema, li as readTimelapseGeneratedAt, ln as SCENE_CONFIRM_DEFAULT_TIMEOUT_MS, lr as describeSystemEventDeliveryProblem, lt as NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT, m as AUDIO_MACRO_LABELS, ma as ZodObject, mi as resolveModeDelays, mn as SCENE_DEFAULT_UNCOVERED_POLICY, mt as NC_CONFIRM_DEFAULT_MAX_IMAGE_PX, na as InvalidRecordError, nn as RECORDING_EXPORT_MAX_READ_BYTES, nr as coreBlockIdFromAddonId, nt as NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC, o as CLUSTER_MODEL_OWNER_ADDON_ID, oa as customAction, oi as projectSubjectPath, on as RetrainOriginSchema, or as deriveDetailCropRect, ot as NC_ALARM_SYSTEM_EVENT_KINDS, p as ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT, pa as sleep$1, pi as resolveLocationMode, pn as SCENE_DEFAULT_QUIET_SECONDS, pt as NC_CONDITION_CATALOG, q as MAX_ARCHIVED_DEBUG_NOTES, qi as DEFAULT_FIRST_SIGHTING_FRESHNESS_MS, qn as buildEventKindDescriptor, qr as mayWriteToLocation, qt as NcSystemEventKindSchema, ra as RECORD_MAX_DATA_BYTES, ri as pickFaceRescoreIntervalMinutes, rn as RECORDING_SOURCE_CAMSTACK_ADDON, rr as cosineSimilarity$1, rt as NC_ALARM_DELAY_FIELDS, s as FACE_EMBEDDING_STEP_ID, sa as defineCustomActions, si as readDeviceStateFrom, sn as RetrainStatusSchema, sr as derivePostTriggeredAction, st as NC_ALARM_TRIGGERED_MAX_SEC, t as BUILTIN_CLIP_MODELS, ta as CamProfileSchema, ti as parseAlertEpisodePayload, tr as consumableLowPercentOf, tt as NC_ALARM_DEFAULT_PROFILE_ID, u as APPEARANCE_BIN_COUNT, ua as isDeviceScopedCap, ui as renameAlarmProfile, un as SCENE_DEFAULT_ANCHOR_THRESHOLD, ur as describeSystemEventFamilyProblem, ut as NC_CLIP_POST_ROLL_DEFAULT_SEC, v as BaseDevice, va as discriminatedUnion, vi as retrainRevisionConflictMessage, vn as SetTrackPurityInputSchema, vr as encodeVectorBase64, vt as NC_DEFAULT_SNOOZE_MINUTES, w as CoverStateSchema, wa as record, wi as ruleKindOf, wn as TimelapseRulePatchSchema, wr as gifDeriveSpeed, wt as NC_STATE_SUMMARY_SECTION_IDS, x as COCO_TO_MACRO, xa as number, xi as ruleBelongsToAlarm$1, xn as TIMELAPSE_DENSE_FLOOR_SEC, xr as evictionPolicyOfLocation, xt as NC_GROUPING_MIN_SEC, y as BirthDecisionRecordSchema, ya as literal, yi as rootSupplyServes, yn as SetTrackPurityResultSchema, yr as ensureAlarmProfiles, yt as NC_GROUPING_DEFAULT_SEC, z as FIRST_LEVEL_MACRO_CLASSES, zi as systemEventSummaryScheduleOf, zn as applyBlockingEdit, zr as isRetiredClearKey, zt as NcRuleTargetSchema } from "../clip-model-registry-
|
|
1
|
+
import { $ as MediaFileKindEnum, $i as BaseAddon, $n as cloneAlarmSettings, $r as paintHex, $t as OpsLogEntrySchema, A as DeclaredDevices, Aa as unknown, Ai as storageOccupancyCapability, An as TrackSideSchema, Ar as isAudioClassName, At as NcAlarmSensorsInputSchema, B as FULL_IMAGE_BBOX, Bi as systemEventSummarySplitOf, Bn as applyModeDelaysEdits, Br as isRootSuppliableStepId, Bt as NcRuleUpdateInputSchema, C as ClearTrackRelationResultSchema, Ca as partialRecord, Ci as ruleGroupingApplies, Cn as TimelapseRuleInputSchema, Cr as failureContributionCapability, Ct as NC_SNOOZE_MAX_MINUTES, D as DEFAULT_TIMELAPSE_PREVIEW_TEXT, Da as templateLiteral, Di as sensorRaisedOf, Dn as TrackPuritySchema, Dr as isAlertEpisodeOpen, Dt as NC_TEMPLATE_VARS, E as DEFAULT_EVENT_COLOR, Ea as string, Ei as secureActuationFor, En as TrackPlacementSchema, Er as isAlarmControllableCap, Et as NC_TAXONOMY, F as EVENT_DENSITY_BATCH_MAX, Fi as syncActiveAlarmProfileSettings, Fn as alarmPanelCapability, Fr as isEventOwnerType, Ft as NcRuleActionSchema, G as ListTrackRelationsResultSchema, Gi as withSystemEventClasses, Gn as audioMetricsCapability, Gr as kebabToCamel, Gt as NcSnoozeSuppressedSchema, H as LABEL_SUPPLY_MACRO, Hi as templateVarsFor, Hn as applySecureOnArmEdit, Hr as isSystemDelivery, Ht as NcSharedSequenceSchema, I as EVENT_KIND_BY_CAP, Ii as systemEventDeliveryProblems, In as alertEpisodeId, Ir as isKnownTemplateVar, It as NcRuleInputSchema, J as MAX_BIRTH_DECISION_RECORDS, Ji as canonicalHash, Jn as buildSubjectPath, Jr as memoizePinnedFfmpeg, Jt as NcTaxonomySchema, K as LockStateSchema, Ki as zoneAnalyticsCapability, Kn as audioModeOf, Kr as linkedStepOf, Kt as NcStateSummarySectionIdSchema, L as EVENT_OWNER_TYPES, Li as systemEventFamilyProblems, Ln as alertEpisodeKind, Lr as isLabelSupplyStepId, Lt as NcRulePatchSchema, M as EMBEDDING_MODEL_FAILED, Mi as subjectPathSampleFromBox, Mn as activateAlarmProfile, Mr as isDetectionMacroClass, Mt as NcAlarmSettingsPatchSchema, N as EMBEDDING_REQUIREMENTS_FAILED, Ni as subjectPathSvgPoints, Nn as addonWidgetsSourceCapability, Nr as isDrawableSubjectPath, Nt as NcConditionDescriptorSchema, O as DETECTION_MACRO_CLASSES, Oa as tuple, Oi as servedTemplateVars, On as TrackRelationKindSchema, Or as isAlertEpisodeSeverity, Ot as NcAlarmConfigSchema, P as EMBEDDING_REQUIREMENTS_UNAVAILABLE, Pi as summarizeReview, Pn as alarmDeviceSecureOnArm, Pr as isEventKindLabelKey, Pt as NcConditionsSchema, Q as MOTION_CLOSE_AFTER_MS, Qi as errMsg, Qn as classifyRetrainReview, Qr as occupancyScope, Qt as OPS_LOG_DEFAULT_LIMIT, R as EXPORT_DENSE_MAX_RANGES, Ri as systemEventFilterApplies, Rn as alertEpisodePayload, Rr as isMediaOwnerType, Rt as NcRuleSchema, S as ClearTrackRelationInputSchema, Sa as object, Si as ruleDeviceCompatCapQueries, Sn as TRACK_RELATIONS_DEFAULT_LIMIT, Sr as faceGalleryCapability, St as NC_SENSOR_TRANSITION_KINDS, T as DEFAULT_DETAIL_CROP_CONVENTION, Ta as strictObject, Ti as sceneMonitorCapability, Tn as TimelapseRuleSchema, Tr as gifFromMp4Args, Tt as NC_SYSTEM_EVENT_KIND_GROUP_SPECS, U as LabelAttributionSchema, Ui as vectorDimFromBase64, Un as armRemovalReconcile, Ur as isSystemEventSummaryRule, Ut as NcSnoozeInputSchema, V as FailureCounters, Vi as templateCarriesSummary, Vn as applyNonBlockingEdit, Vr as isScheduleActive, Vt as NcScheduleSchema, W as ListTrackRelationsInputSchema, Wi as viewerLinkBaseOf, Wn as assertTimelapseCadences, Wr as isVectorIndexDimConflict, Wt as NcSnoozeSchema, X as MAX_TRACK_PURITIES, Xi as isSourceCap, Xn as bundledCamstack, Xr as normalizeNcMediaPolicy, Xt as NcTemplatePreviewSchema, Y as MAX_BIRTH_LATENCY_PROXY_MS, Yi as evaluateSensorEdge, Yn as buildViewerLink, Yr as ncMediaPolicyError, Yt as NcTemplatePreviewInputSchema, Z as MAX_TRACK_RELATIONS, Zi as DeviceType, Zn as calendarEventLocalSpan, Zr as notificationRulesCapability, Zt as NcTemplateVarDescriptorSchema, _ as BIRTH_DECISION_DEFAULT_LIMIT, _a as boolean, _n as SceneMonitorSchema, _t as NC_CONSUMABLE_SYSTEM_EVENT_KINDS, a as CLIP_EMBEDDING_STEP_ID, aa as createEvent, ai as plateGalleryCapability, an as RetrainDismissedSchema, ar as deleteAlarmProfile, at as NC_ALARM_NOTIFY_FIELDS, b as BucketAccumulator, ba as looseObject, bi as ruleAutoTriggersAlarm, bn as SetTrackRelationInputSchema, br as eventKindLabel, bt as NC_GROUPING_MAX_SEC, c as readClusterModelPinStrict, ca as defineRecordKinds, ci as readMotionTriggeredBy, cn as SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX, cr as deriveRecordingMode, ct as NC_AUDIO_CONFIRM_HITS_DEFAULT, d as APPEARANCE_BLOCKS, da as nodePin, di as resolveClipSearchMinScore, dn as SCENE_DEFAULT_CHECK_INTERVAL_SEC, dr as deviceAttentionKind, dt as NC_CLIP_PRE_ROLL_DEFAULT_SEC, ea as CAP_ADVANCE_FIELDS, ei as paletteResultSchema, en as PackageLlmVerdictSchema, er as consumableFormOf, et as MotionTriggeredBySchema, f as APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT, fi as resolveDeliveryParams, fn as SCENE_DEFAULT_OBSERVATION_SPACING_SEC, fr as deviceRemovalHookCapability, ft as NC_CLIP_RETENTION_MAX_SEC, g as ArchivedDebugNoteSchema, ga as array, gi as resolveNcMediaImage, gn as SCENE_RESET_RECAPTURES, gt as NC_CONSUMABLE_LOW_PERCENT_DEFAULT, h as AlarmArmModeSchema, ha as _enum, hi as resolveModeNotifyPolicy, hn as SCENE_DIVERGED, hr as embeddingRefusalOf, ht as NC_CONFIRM_DEFAULT_TIMEOUT_MS, ia as RECORD_QUERY_MAX, ii as pipelineAnalyticsCapability, in as RebuildObjectEmbeddingsRefusalSchema, ir as createAlarmProfile, it as NC_ALARM_DELAY_MAX_SEC, j as DetectionSourceSchema, ja as EventCategory, ji as subKindsOf, jn as TrackSourceSchema, jr as isDefaultAlarmProfileId, jt as NcAlarmSensorsSchema, k as DETECTION_PIPELINE_CAP_NAME, ka as union, ki as startMoverUnderClearance, kn as TrackRelationSchema, kr as isAppLinkBase, kt as NcAlarmPostTriggeredActionSchema, l as resolveClusterModelPin, la as hydrateSchema, li as readTimelapseGeneratedAt, ln as SCENE_CONFIRM_DEFAULT_TIMEOUT_MS, lr as describeSystemEventDeliveryProblem, lt as NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT, m as AUDIO_MACRO_LABELS, ma as ZodObject, mi as resolveModeDelays, mn as SCENE_DEFAULT_UNCOVERED_POLICY, mt as NC_CONFIRM_DEFAULT_MAX_IMAGE_PX, na as InvalidRecordError, nn as RECORDING_EXPORT_MAX_READ_BYTES, nr as coreBlockIdFromAddonId, nt as NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC, o as CLUSTER_MODEL_OWNER_ADDON_ID, oa as customAction, oi as projectSubjectPath, on as RetrainOriginSchema, or as deriveDetailCropRect, ot as NC_ALARM_SYSTEM_EVENT_KINDS, p as ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT, pa as sleep$1, pi as resolveLocationMode, pn as SCENE_DEFAULT_QUIET_SECONDS, pt as NC_CONDITION_CATALOG, q as MAX_ARCHIVED_DEBUG_NOTES, qi as DEFAULT_FIRST_SIGHTING_FRESHNESS_MS, qn as buildEventKindDescriptor, qr as mayWriteToLocation, qt as NcSystemEventKindSchema, ra as RECORD_MAX_DATA_BYTES, ri as pickFaceRescoreIntervalMinutes, rn as RECORDING_SOURCE_CAMSTACK_ADDON, rr as cosineSimilarity$1, rt as NC_ALARM_DELAY_FIELDS, s as FACE_EMBEDDING_STEP_ID, sa as defineCustomActions, si as readDeviceStateFrom, sn as RetrainStatusSchema, sr as derivePostTriggeredAction, st as NC_ALARM_TRIGGERED_MAX_SEC, t as BUILTIN_CLIP_MODELS, ta as CamProfileSchema, ti as parseAlertEpisodePayload, tr as consumableLowPercentOf, tt as NC_ALARM_DEFAULT_PROFILE_ID, u as APPEARANCE_BIN_COUNT, ua as isDeviceScopedCap, ui as renameAlarmProfile, un as SCENE_DEFAULT_ANCHOR_THRESHOLD, ur as describeSystemEventFamilyProblem, ut as NC_CLIP_POST_ROLL_DEFAULT_SEC, v as BaseDevice, va as discriminatedUnion, vi as retrainRevisionConflictMessage, vn as SetTrackPurityInputSchema, vr as encodeVectorBase64, vt as NC_DEFAULT_SNOOZE_MINUTES, w as CoverStateSchema, wa as record, wi as ruleKindOf, wn as TimelapseRulePatchSchema, wr as gifDeriveSpeed, wt as NC_STATE_SUMMARY_SECTION_IDS, x as COCO_TO_MACRO, xa as number, xi as ruleBelongsToAlarm$1, xn as TIMELAPSE_DENSE_FLOOR_SEC, xr as evictionPolicyOfLocation, xt as NC_GROUPING_MIN_SEC, y as BirthDecisionRecordSchema, ya as literal, yi as rootSupplyServes, yn as SetTrackPurityResultSchema, yr as ensureAlarmProfiles, yt as NC_GROUPING_DEFAULT_SEC, z as FIRST_LEVEL_MACRO_CLASSES, zi as systemEventSummaryScheduleOf, zn as applyBlockingEdit, zr as isRetiredClearKey, zt as NcRuleTargetSchema } from "../clip-model-registry-BX6j2lnF.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";
|
|
@@ -9055,6 +9055,7 @@ var en_default = {
|
|
|
9055
9055
|
"system.node-offline.body.agent": "Agent {{nodeName}} is offline",
|
|
9056
9056
|
"system.node-offline.body.agent.connection-lost": "Agent {{nodeName}} lost its connection to the hub",
|
|
9057
9057
|
"system.node-offline.body.agent.shutdown": "Agent {{nodeName}} shut down",
|
|
9058
|
+
"system.node-offline.body.agent.updating": "Agent {{nodeName}} went offline while updating and has not come back after {{graceMin}} minutes",
|
|
9058
9059
|
"system.node-inference-unavailable.title": "Node cannot infer — {{nodeId}}",
|
|
9059
9060
|
"system.node-inference-unavailable.body": "Node {{nodeId}} can no longer run inference — every enabled device is unavailable ({{devices}}). It will not receive cameras until one returns.",
|
|
9060
9061
|
"system.addon-crash-loop.title": "Addon crash-loop — {{nodeId}}",
|
|
@@ -9459,6 +9460,7 @@ var it_default = {
|
|
|
9459
9460
|
"system.node-offline.body.agent": "L'agent {{nodeName}} è offline",
|
|
9460
9461
|
"system.node-offline.body.agent.connection-lost": "L'agent {{nodeName}} ha perso la connessione con l'hub",
|
|
9461
9462
|
"system.node-offline.body.agent.shutdown": "L'agent {{nodeName}} si è spento",
|
|
9463
|
+
"system.node-offline.body.agent.updating": "L'agent {{nodeName}} è andato offline durante un aggiornamento e non è tornato dopo {{graceMin}} minuti",
|
|
9462
9464
|
"system.node-inference-unavailable.title": "Nodo senza inferenza — {{nodeId}}",
|
|
9463
9465
|
"system.node-inference-unavailable.body": "Il nodo {{nodeId}} non può più eseguire inferenza — tutti i dispositivi abilitati non sono disponibili ({{devices}}). Non riceverà camere finché uno non torna disponibile.",
|
|
9464
9466
|
"system.addon-crash-loop.title": "Crash-loop addon — {{nodeId}}",
|
|
@@ -54626,6 +54628,12 @@ var FrameState = class {
|
|
|
54626
54628
|
* per 5 minutes, not one per governor round (the wedge re-sights all
|
|
54627
54629
|
* night; ~300 identical lines would bury the log it exists to serve). */
|
|
54628
54630
|
packageOversizeLogAt = /* @__PURE__ */ new Map();
|
|
54631
|
+
/**
|
|
54632
|
+
* The newest frame the package path held per camera — the picture a parcel
|
|
54633
|
+
* promoted from a raw look is stored from (`package-still-capture.ts`). The
|
|
54634
|
+
* scene path concludes without a frame of its own, so it reads this.
|
|
54635
|
+
*/
|
|
54636
|
+
packageLookFrames = /* @__PURE__ */ new Map();
|
|
54629
54637
|
/** Reasons logged on the previous package look — episode helper for drops. */
|
|
54630
54638
|
packageLookDropReasons = /* @__PURE__ */ new Map();
|
|
54631
54639
|
};
|
|
@@ -58930,6 +58938,89 @@ function sweepOne(deps, deviceId) {
|
|
|
58930
58938
|
if (outcome.departed.length > 0 || outcome.departedWithoutActivity.length > 0 || outcome.expired.length > 0) deps.onOutcome(deviceId, outcome, deps.now);
|
|
58931
58939
|
}
|
|
58932
58940
|
//#endregion
|
|
58941
|
+
//#region src/pipeline-analytics/pipeline/package/package-still-capture.ts
|
|
58942
|
+
/** A held look frame older than this is not the parcel's picture any more. */
|
|
58943
|
+
var PACKAGE_LOOK_FRAME_MAX_AGE_MS = 15e3;
|
|
58944
|
+
async function jpegOf(reply) {
|
|
58945
|
+
if (reply.tier === "ram-fullframe") return "preview-only";
|
|
58946
|
+
if (reply.jpegBytes !== void 0 && reply.jpegBytes.byteLength > 0) return reply.jpegBytes;
|
|
58947
|
+
if (reply.bytes !== void 0 && reply.bytes.length === reply.width * reply.height * 3) return encodeRgbCropToJpeg(reply.bytes, reply.width, reply.height);
|
|
58948
|
+
return "empty-frame";
|
|
58949
|
+
}
|
|
58950
|
+
/**
|
|
58951
|
+
* The entry carrying its still's `keyFrameMediaId`, or the entry unchanged when
|
|
58952
|
+
* it already had one or none could be stored (said, with the reason).
|
|
58953
|
+
*/
|
|
58954
|
+
async function withParcelStill(input) {
|
|
58955
|
+
const { entry, logger } = input;
|
|
58956
|
+
if (entry.keyFrameMediaId !== void 0) return entry;
|
|
58957
|
+
const miss = (reason, detail) => {
|
|
58958
|
+
logger.warn("package still NOT stored — the delivery ships without a picture of the parcel", {
|
|
58959
|
+
tags: { deviceId: entry.deviceId },
|
|
58960
|
+
meta: {
|
|
58961
|
+
entryId: entry.id,
|
|
58962
|
+
reason,
|
|
58963
|
+
...detail !== void 0 ? { error: detail } : {}
|
|
58964
|
+
}
|
|
58965
|
+
});
|
|
58966
|
+
return entry;
|
|
58967
|
+
};
|
|
58968
|
+
if (input.handle === null) return miss("no-frame-handle");
|
|
58969
|
+
if (input.writer === null) return miss("no-media-store");
|
|
58970
|
+
try {
|
|
58971
|
+
const reply = await input.query({
|
|
58972
|
+
handle: input.handle,
|
|
58973
|
+
bbox: {
|
|
58974
|
+
x: 0,
|
|
58975
|
+
y: 0,
|
|
58976
|
+
w: entry.frameWidth,
|
|
58977
|
+
h: entry.frameHeight
|
|
58978
|
+
},
|
|
58979
|
+
acceptJpegBytes: true,
|
|
58980
|
+
encodeJpeg: true,
|
|
58981
|
+
pin: nodePin(input.handle.nodeId)
|
|
58982
|
+
});
|
|
58983
|
+
if (reply === null) return miss("native-miss");
|
|
58984
|
+
const jpeg = await jpegOf(reply);
|
|
58985
|
+
if (typeof jpeg === "string") return miss(jpeg);
|
|
58986
|
+
const keyFrameMediaId = await input.writer.putReplacing({
|
|
58987
|
+
deviceId: entry.deviceId,
|
|
58988
|
+
ownerKind: "track",
|
|
58989
|
+
ownerId: entry.id,
|
|
58990
|
+
kind: "keyFrame",
|
|
58991
|
+
timestamp: input.timestamp,
|
|
58992
|
+
data: Buffer.from(jpeg),
|
|
58993
|
+
subjectBox: {
|
|
58994
|
+
x: entry.bbox.x,
|
|
58995
|
+
y: entry.bbox.y,
|
|
58996
|
+
w: entry.bbox.w,
|
|
58997
|
+
h: entry.bbox.h,
|
|
58998
|
+
frameWidth: entry.frameWidth,
|
|
58999
|
+
frameHeight: entry.frameHeight
|
|
59000
|
+
}
|
|
59001
|
+
});
|
|
59002
|
+
return {
|
|
59003
|
+
...entry,
|
|
59004
|
+
keyFrameMediaId
|
|
59005
|
+
};
|
|
59006
|
+
} catch (err) {
|
|
59007
|
+
return miss("write-failed", errMsg(err));
|
|
59008
|
+
}
|
|
59009
|
+
}
|
|
59010
|
+
/**
|
|
59011
|
+
* One promotion, in the order that matters: the still is stored FIRST, then the
|
|
59012
|
+
* detector emits `delivered` — the notification centre reads the still when the
|
|
59013
|
+
* event arrives, so a picture written after it is a picture nobody sees.
|
|
59014
|
+
*/
|
|
59015
|
+
async function promoteWithStill(input) {
|
|
59016
|
+
const entry = await withParcelStill(input);
|
|
59017
|
+
await input.detector.onStationaryChange({
|
|
59018
|
+
phase: "appeared",
|
|
59019
|
+
entry,
|
|
59020
|
+
timestamp: input.entry.becameStationaryAt
|
|
59021
|
+
});
|
|
59022
|
+
}
|
|
59023
|
+
//#endregion
|
|
58933
59024
|
//#region src/pipeline-analytics/pipeline/person-over-vehicle.ts
|
|
58934
59025
|
/**
|
|
58935
59026
|
* How much of the PERSON box must sit inside a vehicle box to be counted.
|
|
@@ -70419,7 +70510,12 @@ Object.freeze({
|
|
|
70419
70510
|
"listSupportedEntityKinds"
|
|
70420
70511
|
],
|
|
70421
70512
|
"device-extension": ["listSlots", "listSources"],
|
|
70422
|
-
"device-provider": [
|
|
70513
|
+
"device-provider": [
|
|
70514
|
+
"classifyDiscoveryHits",
|
|
70515
|
+
"discoverDevices",
|
|
70516
|
+
"getDevices",
|
|
70517
|
+
"getDiscoveryModes"
|
|
70518
|
+
],
|
|
70423
70519
|
"device-removal-hook": ["listDeviceData"],
|
|
70424
70520
|
"failure-contribution": ["list"],
|
|
70425
70521
|
"llm": [
|
|
@@ -90178,13 +90274,17 @@ var DeviceLivenessHoldoff = class {
|
|
|
90178
90274
|
rememberIfAbsent(subject, state) {
|
|
90179
90275
|
if (!this.lastNotified.has(subject)) this.lastNotified.set(subject, state);
|
|
90180
90276
|
}
|
|
90181
|
-
/**
|
|
90182
|
-
|
|
90277
|
+
/**
|
|
90278
|
+
* A real ledger flip. Starts / resets the trailing timer. `delayMs` replaces
|
|
90279
|
+
* the default delay for THIS arm only (a node's planned-update grace).
|
|
90280
|
+
*/
|
|
90281
|
+
arm(subject, incoming, delayMs) {
|
|
90282
|
+
const delay = delayMs ?? this.delayMs;
|
|
90183
90283
|
this.pending.set(subject, incoming);
|
|
90184
90284
|
this.trackDeparture(subject, incoming);
|
|
90185
90285
|
const existing = this.timers.get(subject);
|
|
90186
90286
|
if (existing !== void 0) this.cancel(existing);
|
|
90187
|
-
if (
|
|
90287
|
+
if (delay <= 0) {
|
|
90188
90288
|
this.timers.delete(subject);
|
|
90189
90289
|
this.fire(subject);
|
|
90190
90290
|
return;
|
|
@@ -90192,7 +90292,7 @@ var DeviceLivenessHoldoff = class {
|
|
|
90192
90292
|
const id = this.schedule(() => {
|
|
90193
90293
|
this.timers.delete(subject);
|
|
90194
90294
|
this.fire(subject);
|
|
90195
|
-
},
|
|
90295
|
+
}, delay);
|
|
90196
90296
|
this.timers.set(subject, id);
|
|
90197
90297
|
}
|
|
90198
90298
|
dispose() {
|
|
@@ -92839,6 +92939,71 @@ var NcRuleStore = class NcRuleStore {
|
|
|
92839
92939
|
}
|
|
92840
92940
|
};
|
|
92841
92941
|
//#endregion
|
|
92942
|
+
//#region src/notification-center/planned-update-window.ts
|
|
92943
|
+
/**
|
|
92944
|
+
* A node that ANNOUNCED an update is expected to go offline — the window that
|
|
92945
|
+
* says so lives here.
|
|
92946
|
+
*
|
|
92947
|
+
* `system.restarting` becomes `node-updating` / `node-restarting`; the centre
|
|
92948
|
+
* records the announcement per node (RAM, refreshed by the event, never by a
|
|
92949
|
+
* read — D49). An offline for that node inside {@link PLANNED_UPDATE_OFFLINE_GRACE_MS}
|
|
92950
|
+
* of the announcement is held for the whole window instead of the usual 60 s
|
|
92951
|
+
* hold-off: back in time means no offline notification at all, not back means
|
|
92952
|
+
* one offline that says it happened during an update. A lost announcement
|
|
92953
|
+
* (events may be dropped, D8) simply behaves as before.
|
|
92954
|
+
*/
|
|
92955
|
+
/** How long after an announcement an offline is held, and how long the announcement counts. */
|
|
92956
|
+
var PLANNED_UPDATE_OFFLINE_GRACE_MS = 10 * 6e4;
|
|
92957
|
+
var NC_PLANNED_UPDATE_NODES_MAX = 256;
|
|
92958
|
+
var NcPlannedUpdateWindow = class {
|
|
92959
|
+
graceMs;
|
|
92960
|
+
/** Insertion-ordered: the oldest node is evicted first. */
|
|
92961
|
+
announcedAt = /* @__PURE__ */ new Map();
|
|
92962
|
+
/** When an offline was put on hold, per node. */
|
|
92963
|
+
heldAt = /* @__PURE__ */ new Map();
|
|
92964
|
+
constructor(graceMs = PLANNED_UPDATE_OFFLINE_GRACE_MS) {
|
|
92965
|
+
this.graceMs = graceMs;
|
|
92966
|
+
}
|
|
92967
|
+
get windowMs() {
|
|
92968
|
+
return this.graceMs;
|
|
92969
|
+
}
|
|
92970
|
+
get graceMinutes() {
|
|
92971
|
+
return Math.round(this.graceMs / 6e4);
|
|
92972
|
+
}
|
|
92973
|
+
/** Feed every system subject the intake accepted; only the two announcements are kept. */
|
|
92974
|
+
observe(system, atMs) {
|
|
92975
|
+
if (system.kind !== "node-updating" && system.kind !== "node-restarting") return;
|
|
92976
|
+
const nodeId = system.nodeId;
|
|
92977
|
+
if (nodeId === void 0) return;
|
|
92978
|
+
this.announcedAt.delete(nodeId);
|
|
92979
|
+
this.announcedAt.set(nodeId, atMs);
|
|
92980
|
+
while (this.announcedAt.size > NC_PLANNED_UPDATE_NODES_MAX) {
|
|
92981
|
+
const oldest = this.announcedAt.keys().next();
|
|
92982
|
+
if (oldest.done === true) break;
|
|
92983
|
+
this.announcedAt.delete(oldest.value);
|
|
92984
|
+
}
|
|
92985
|
+
}
|
|
92986
|
+
/** True when the node announced an update no longer than the window ago. */
|
|
92987
|
+
isPlanned(nodeId, atMs) {
|
|
92988
|
+
const at = this.announcedAt.get(nodeId);
|
|
92989
|
+
return at !== void 0 && atMs - at <= this.graceMs;
|
|
92990
|
+
}
|
|
92991
|
+
/** An offline was put on hold for this node. */
|
|
92992
|
+
hold(nodeId, atMs) {
|
|
92993
|
+
this.heldAt.set(nodeId, atMs);
|
|
92994
|
+
}
|
|
92995
|
+
/**
|
|
92996
|
+
* The node is back: seconds the held offline lasted, or `null` when no offline
|
|
92997
|
+
* was held, or its window already ran out (the offline was sent).
|
|
92998
|
+
*/
|
|
92999
|
+
release(nodeId, atMs) {
|
|
93000
|
+
const at = this.heldAt.get(nodeId);
|
|
93001
|
+
if (at === void 0) return null;
|
|
93002
|
+
this.heldAt.delete(nodeId);
|
|
93003
|
+
return atMs - at < this.graceMs ? Math.round((atMs - at) / 1e3) : null;
|
|
93004
|
+
}
|
|
93005
|
+
};
|
|
93006
|
+
//#endregion
|
|
92842
93007
|
//#region src/notification-center/restart-supersede.ts
|
|
92843
93008
|
/** How many landings are remembered — one per node per update, so a fleet's worth. */
|
|
92844
93009
|
var NC_UPDATE_LANDINGS_MAX = 256;
|
|
@@ -97148,6 +97313,15 @@ var NcSystemStateLedger = class {
|
|
|
97148
97313
|
closeLegacyStreamKeys() {
|
|
97149
97314
|
this.closeWhere("legacy-stream-keys", (row) => row.key.startsWith("stream:") && !DEVICE_STREAM_KEY.test(row.key), "legacy-stream-key");
|
|
97150
97315
|
}
|
|
97316
|
+
/**
|
|
97317
|
+
* Is this device switched off RIGHT NOW (an open `device-disabled` row)?
|
|
97318
|
+
* D62: the switch outranks the device's liveness and its streams — a device
|
|
97319
|
+
* somebody turned off is reported off, never as offline. `false` while the
|
|
97320
|
+
* store has never answered (unknown is never "disabled").
|
|
97321
|
+
*/
|
|
97322
|
+
isDeviceDisabled(deviceId) {
|
|
97323
|
+
return (this.openRows() ?? []).some((row) => row.kind === "device-disabled" && row.deviceId === deviceId);
|
|
97324
|
+
}
|
|
97151
97325
|
/** The open rows, or `null` while the store has never answered. */
|
|
97152
97326
|
openRows() {
|
|
97153
97327
|
return this.deps.rows.answered() ? this.deps.rows.all() : null;
|
|
@@ -97654,6 +97828,7 @@ function readRaw(section, ports, nowMs) {
|
|
|
97654
97828
|
reason: UNREAD_STATE
|
|
97655
97829
|
};
|
|
97656
97830
|
const items = [];
|
|
97831
|
+
const switchedOff = new Set(state.flatMap((row) => row.kind === "device-disabled" && row.deviceId !== void 0 ? [row.deviceId] : []));
|
|
97657
97832
|
if (section === "device-state" || section === "nodes") {
|
|
97658
97833
|
const liveness = ports.liveness();
|
|
97659
97834
|
if (liveness === null) return {
|
|
@@ -97663,10 +97838,14 @@ function readRaw(section, ports, nowMs) {
|
|
|
97663
97838
|
for (const row of liveness) {
|
|
97664
97839
|
if (row.state !== "offline" || nowMs - row.updatedAt < ports.livenessHoldoffMs) continue;
|
|
97665
97840
|
const item = livenessItem(row, ports.lookup);
|
|
97666
|
-
if (item
|
|
97841
|
+
if (item === null || item.section !== section) continue;
|
|
97842
|
+
const id = item.subject.deviceId;
|
|
97843
|
+
if (id !== void 0 && switchedOff.has(id)) continue;
|
|
97844
|
+
items.push(item);
|
|
97667
97845
|
}
|
|
97668
97846
|
}
|
|
97669
97847
|
for (const row of state) {
|
|
97848
|
+
if (row.kind === "stream-offline" && row.deviceId !== void 0 && switchedOff.has(row.deviceId)) continue;
|
|
97670
97849
|
const item = stateItem(row, ports.lookup, ports.nodes);
|
|
97671
97850
|
if (item.section === section) items.push(item);
|
|
97672
97851
|
}
|
|
@@ -101799,6 +101978,7 @@ function onSystemEvent(host, event) {
|
|
|
101799
101978
|
const system = incoming.subject.systemEvent;
|
|
101800
101979
|
if (system !== void 0) host.stateSummary.observeSystem(system, host.now());
|
|
101801
101980
|
if (system !== void 0) host.updateLandings.observe(system, host.now());
|
|
101981
|
+
if (system !== void 0) host.plannedUpdates.observe(system, host.now());
|
|
101802
101982
|
const observation = system !== void 0 ? ledgeredLiveness(system) : null;
|
|
101803
101983
|
if (observation !== null) {
|
|
101804
101984
|
const previous = host.liveness.stateOf(observation.subject);
|
|
@@ -101825,17 +102005,86 @@ function onSystemEvent(host, event) {
|
|
|
101825
102005
|
});
|
|
101826
102006
|
return;
|
|
101827
102007
|
}
|
|
101828
|
-
if (
|
|
102008
|
+
if (isNodeLivenessKind(observation.kind) && system !== void 0) {
|
|
102009
|
+
armNodeLiveness(host, holdoff, observation.subject, incoming, system);
|
|
102010
|
+
return;
|
|
102011
|
+
}
|
|
102012
|
+
if (isDeviceLivenessKind(observation.kind)) {
|
|
102013
|
+
if (dropSwitchedOff(host, system)) return;
|
|
101829
102014
|
holdoff.arm(observation.subject, incoming);
|
|
101830
102015
|
return;
|
|
101831
102016
|
}
|
|
101832
102017
|
} else if (system !== void 0 && (system.kind.startsWith("device-") || system.kind.startsWith("stream-"))) {
|
|
101833
102018
|
if (host.lastSystemLiveness.get(system.subject) === system.kind) return;
|
|
101834
102019
|
host.lastSystemLiveness.set(system.subject, system.kind);
|
|
102020
|
+
if (dropSwitchedOff(host, system)) return;
|
|
101835
102021
|
}
|
|
101836
102022
|
host.consumeEvent(incoming);
|
|
101837
102023
|
}
|
|
101838
102024
|
/**
|
|
102025
|
+
* D62: a device the operator switched off is reported off, never offline. Its
|
|
102026
|
+
* `device-offline` / `stream-offline` is dropped (and said) while an open
|
|
102027
|
+
* `device-disabled` row exists — the broker of a disabled device stopping is
|
|
102028
|
+
* the switch working, not an outage. The memory of the flip is already kept.
|
|
102029
|
+
*/
|
|
102030
|
+
function dropSwitchedOff(host, system) {
|
|
102031
|
+
if (system === void 0 || system.deviceId === void 0) return false;
|
|
102032
|
+
if (system.kind !== "device-offline" && system.kind !== "stream-offline") return false;
|
|
102033
|
+
if (!host.stateSummary.ledger.isDeviceDisabled(system.deviceId)) return false;
|
|
102034
|
+
host.logger.debug("offline not notified — the device is switched off (D62)", {
|
|
102035
|
+
tags: { deviceId: system.deviceId },
|
|
102036
|
+
meta: {
|
|
102037
|
+
kind: system.kind,
|
|
102038
|
+
subject: system.subject
|
|
102039
|
+
}
|
|
102040
|
+
});
|
|
102041
|
+
return true;
|
|
102042
|
+
}
|
|
102043
|
+
/**
|
|
102044
|
+
* Arm a node liveness flip. An OFFLINE of a node that announced an update is
|
|
102045
|
+
* held for the whole planned-update window and worded as such if it is still
|
|
102046
|
+
* sent; the node's return inside the window is logged and sends nothing (the
|
|
102047
|
+
* hold-off sees the state bounce back to the one last notified).
|
|
102048
|
+
*/
|
|
102049
|
+
function armNodeLiveness(host, holdoff, subject, incoming, system) {
|
|
102050
|
+
const nodeId = system.nodeId;
|
|
102051
|
+
const now = host.now();
|
|
102052
|
+
if (nodeId === void 0) {
|
|
102053
|
+
holdoff.arm(subject, incoming);
|
|
102054
|
+
return;
|
|
102055
|
+
}
|
|
102056
|
+
const window = host.plannedUpdates;
|
|
102057
|
+
if (system.kind === "node-offline" && window.isPlanned(nodeId, now)) {
|
|
102058
|
+
window.hold(nodeId, now);
|
|
102059
|
+
holdoff.arm(subject, withPlannedUpdateWording(incoming, system, window.graceMinutes), window.windowMs);
|
|
102060
|
+
return;
|
|
102061
|
+
}
|
|
102062
|
+
if (system.kind === "node-online") {
|
|
102063
|
+
const backAfterSec = window.release(nodeId, now);
|
|
102064
|
+
if (backAfterSec !== null) host.logger.info(`node ${nodeId}: offline suppressed: planned update, back after ${backAfterSec}s`, { meta: {
|
|
102065
|
+
nodeId,
|
|
102066
|
+
backAfterSec
|
|
102067
|
+
} });
|
|
102068
|
+
}
|
|
102069
|
+
holdoff.arm(subject, incoming);
|
|
102070
|
+
}
|
|
102071
|
+
function withPlannedUpdateWording(incoming, system, graceMin) {
|
|
102072
|
+
return {
|
|
102073
|
+
...incoming,
|
|
102074
|
+
subject: {
|
|
102075
|
+
...incoming.subject,
|
|
102076
|
+
systemEvent: {
|
|
102077
|
+
...system,
|
|
102078
|
+
bodyKey: "system.node-offline.body.agent.updating",
|
|
102079
|
+
textParams: {
|
|
102080
|
+
...system.textParams,
|
|
102081
|
+
graceMin: String(graceMin)
|
|
102082
|
+
}
|
|
102083
|
+
}
|
|
102084
|
+
}
|
|
102085
|
+
};
|
|
102086
|
+
}
|
|
102087
|
+
/**
|
|
101839
102088
|
* One edge of an alert episode, from the bus or from the reconcile. The
|
|
101840
102089
|
* ledger decides whether it is news; only news reaches the rules.
|
|
101841
102090
|
*/
|
|
@@ -105654,6 +105903,7 @@ var NotificationCenter = class {
|
|
|
105654
105903
|
stateSummary;
|
|
105655
105904
|
/** Every `server-updated` heard, so a stale `node-updating` is not sent after it (D723). */
|
|
105656
105905
|
updateLandings = new NcUpdateLandings();
|
|
105906
|
+
plannedUpdates = new NcPlannedUpdateWindow();
|
|
105657
105907
|
/** States the `deviceState` rule gate reads. Refreshed on the reload tick;
|
|
105658
105908
|
* read with no I/O on the persist hook. */
|
|
105659
105909
|
deviceStates;
|
|
@@ -107046,6 +107296,9 @@ var NotificationCenter = class {
|
|
|
107046
107296
|
get timelapseRules() {
|
|
107047
107297
|
return self.timelapseRules;
|
|
107048
107298
|
},
|
|
107299
|
+
get plannedUpdates() {
|
|
107300
|
+
return self.plannedUpdates;
|
|
107301
|
+
},
|
|
107049
107302
|
get updateLandings() {
|
|
107050
107303
|
return self.updateLandings;
|
|
107051
107304
|
},
|
|
@@ -112978,7 +113231,10 @@ var PackageDropDetector = class {
|
|
|
112978
113231
|
}
|
|
112979
113232
|
if (outcome.kind === "yes") {
|
|
112980
113233
|
this.reportLlmSilence(this.llmSilence.noteAnswered(entry.deviceId), tags);
|
|
112981
|
-
return {
|
|
113234
|
+
return {
|
|
113235
|
+
packageLlmVerdict: outcome.verdict,
|
|
113236
|
+
confirmElapsedMs: latencyMs
|
|
113237
|
+
};
|
|
112982
113238
|
}
|
|
112983
113239
|
this.dropUncertain(entry, tags, outcome.reason, latencyMs);
|
|
112984
113240
|
return null;
|
|
@@ -113170,10 +113426,12 @@ var PackageDropDetector = class {
|
|
|
113170
113426
|
}
|
|
113171
113427
|
const llm = await this.llmFields(entry, rules, hitZones, tags);
|
|
113172
113428
|
if (llm === null) return;
|
|
113429
|
+
const { confirmElapsedMs, ...llmRowFields } = llm;
|
|
113430
|
+
const rowTimestamp = timestamp + (confirmElapsedMs ?? 0);
|
|
113173
113431
|
const draft = {
|
|
113174
113432
|
kind: "object",
|
|
113175
113433
|
deviceId: entry.deviceId,
|
|
113176
|
-
timestamp,
|
|
113434
|
+
timestamp: rowTimestamp,
|
|
113177
113435
|
source: "pipeline",
|
|
113178
113436
|
idempotencyKey,
|
|
113179
113437
|
trackId: entry.sourceTrackId ?? entry.id,
|
|
@@ -113192,7 +113450,7 @@ var PackageDropDetector = class {
|
|
|
113192
113450
|
frameHeight: entry.frameHeight,
|
|
113193
113451
|
...entry.keyFrameMediaId !== void 0 ? { mediaId: entry.keyFrameMediaId } : {},
|
|
113194
113452
|
importance: PACKAGE_IMPORTANCE,
|
|
113195
|
-
...
|
|
113453
|
+
...llmRowFields
|
|
113196
113454
|
};
|
|
113197
113455
|
const rowId = await this.deps.events.insertObject(draft);
|
|
113198
113456
|
if (rowId === null) {
|
|
@@ -113223,7 +113481,7 @@ var PackageDropDetector = class {
|
|
|
113223
113481
|
w: entry.bbox.w,
|
|
113224
113482
|
h: entry.bbox.h
|
|
113225
113483
|
},
|
|
113226
|
-
timestamp
|
|
113484
|
+
timestamp: rowTimestamp
|
|
113227
113485
|
});
|
|
113228
113486
|
this.deps.logger.info("package delivered — all 5 gates passed", {
|
|
113229
113487
|
tags: { deviceId: entry.deviceId },
|
|
@@ -113234,6 +113492,7 @@ var PackageDropDetector = class {
|
|
|
113234
113492
|
zoneIds: hitZones,
|
|
113235
113493
|
dwellMs,
|
|
113236
113494
|
areaFrac: Number(minAreaFrac.toFixed(5)),
|
|
113495
|
+
...confirmElapsedMs !== void 0 ? { footageAnchorShiftMs: confirmElapsedMs } : {},
|
|
113237
113496
|
...entry.confidence !== void 0 ? { confidence: entry.confidence } : {}
|
|
113238
113497
|
}
|
|
113239
113498
|
});
|
|
@@ -123765,6 +124024,7 @@ var PipelineAnalyticsAddon = class PipelineAnalyticsAddon extends BaseAddon {
|
|
|
123765
124024
|
this.frameState.lastNonPackageActivityAt.delete(data.deviceId);
|
|
123766
124025
|
this.frameState.packageCollectors.forgetDevice(data.deviceId);
|
|
123767
124026
|
this.frameState.packageOversizeLogAt.delete(data.deviceId);
|
|
124027
|
+
this.frameState.packageLookFrames.delete(data.deviceId);
|
|
123768
124028
|
this.frameState.packageLookDropReasons.delete(data.deviceId);
|
|
123769
124029
|
this.overlayState.clearDevice(data.deviceId);
|
|
123770
124030
|
this.frameState.overlaySynthesisWarnAt.delete(data.deviceId);
|
|
@@ -123788,6 +124048,7 @@ var PipelineAnalyticsAddon = class PipelineAnalyticsAddon extends BaseAddon {
|
|
|
123788
124048
|
this.frameState.lastNonPackageActivityAt.delete(deviceId);
|
|
123789
124049
|
this.frameState.packageCollectors.forgetDevice(deviceId);
|
|
123790
124050
|
this.frameState.packageOversizeLogAt.delete(deviceId);
|
|
124051
|
+
this.frameState.packageLookFrames.delete(deviceId);
|
|
123791
124052
|
this.frameState.packageLookDropReasons.delete(deviceId);
|
|
123792
124053
|
this.overlayState.clearDevice(deviceId);
|
|
123793
124054
|
this.frameState.overlaySynthesisWarnAt.delete(deviceId);
|
|
@@ -126770,6 +127031,10 @@ var PipelineAnalyticsAddon = class PipelineAnalyticsAddon extends BaseAddon {
|
|
|
126770
127031
|
runPackageStillness(input) {
|
|
126771
127032
|
if (this.packageDropDetector === null) return;
|
|
126772
127033
|
const tags = { deviceId: input.deviceId };
|
|
127034
|
+
if (input.frameHandle !== null) this.frameState.packageLookFrames.set(input.deviceId, {
|
|
127035
|
+
handle: input.frameHandle,
|
|
127036
|
+
at: input.timestamp
|
|
127037
|
+
});
|
|
126773
127038
|
for (const t of input.tracked) {
|
|
126774
127039
|
if (input.packageClasses.has(t.className)) continue;
|
|
126775
127040
|
if (!isDelivererInPackageZone(t.zones, input.packageZoneIds)) continue;
|
|
@@ -127003,10 +127268,23 @@ var PipelineAnalyticsAddon = class PipelineAnalyticsAddon extends BaseAddon {
|
|
|
127003
127268
|
...entry.confidence !== void 0 ? { confidence: entry.confidence } : {}
|
|
127004
127269
|
}
|
|
127005
127270
|
});
|
|
127006
|
-
this.
|
|
127007
|
-
|
|
127271
|
+
const lookFrame = this.frameState.packageLookFrames.get(input.deviceId);
|
|
127272
|
+
promoteWithStill({
|
|
127008
127273
|
entry,
|
|
127009
|
-
timestamp:
|
|
127274
|
+
handle: lookFrame !== void 0 && input.timestamp - lookFrame.at <= PACKAGE_LOOK_FRAME_MAX_AGE_MS ? lookFrame.handle : null,
|
|
127275
|
+
timestamp: lookFrame?.at ?? input.timestamp,
|
|
127276
|
+
query: (request) => this.queryPackageSceneCrop(request),
|
|
127277
|
+
writer: this.mediaStore,
|
|
127278
|
+
logger: this.ctx.logger,
|
|
127279
|
+
detector: this.packageDropDetector
|
|
127280
|
+
}).catch((err) => {
|
|
127281
|
+
this.ctx.logger.warn("package promotion failed", {
|
|
127282
|
+
tags,
|
|
127283
|
+
meta: {
|
|
127284
|
+
entryId: entry.id,
|
|
127285
|
+
error: err instanceof Error ? err.message : String(err)
|
|
127286
|
+
}
|
|
127287
|
+
});
|
|
127010
127288
|
});
|
|
127011
127289
|
}
|
|
127012
127290
|
for (const entry of outcome.departed) {
|
|
@@ -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-Vag6rhEh.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.654",
|
|
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",
|