@camstack/addon-post-analysis 1.2.303 → 1.2.305

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 (14) hide show
  1. package/dist/{clip-model-registry-BtY4fS3d.mjs → clip-model-registry-EA6x7Vd5.mjs} +131 -19
  2. package/dist/{clip-model-registry-CQIBimj5.js → clip-model-registry-t2ey3w0B.js} +166 -18
  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-DVMLLink.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-yOiRjNnR.mjs} +2 -2
  7. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CieM-gpB.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-DJR5XsVb.mjs → _virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-B8qeS8Da.mjs} +1 -1
  9. package/dist/pipeline-analytics/{hostInit-DRjMNOyG.mjs → hostInit-6Km5THPt.mjs} +2 -2
  10. package/dist/pipeline-analytics/index.js +6431 -2793
  11. package/dist/pipeline-analytics/index.mjs +6471 -2836
  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-m9iqcykg.mjs +0 -26
@@ -11236,6 +11236,28 @@ var FailureCounters = class {
11236
11236
  this.counters.clear();
11237
11237
  }
11238
11238
  };
11239
+ var APPEARANCE_BIN_COUNT = 96;
11240
+ var APPEARANCE_BLOCKS = {
11241
+ upperHs: [0, 32],
11242
+ upperV: [32, 40],
11243
+ upperGrad: [40, 48],
11244
+ lowerHs: [48, 80],
11245
+ lowerV: [80, 88],
11246
+ lowerGrad: [88, 96]
11247
+ };
11248
+ /**
11249
+ * Whether appearance may influence anything at all (D683 §3.2, fix round 1
11250
+ * ruling 2026-09-30 on the Task 10 cost-bench STOP): OFF until the
11251
+ * descriptor is calibrated on tapes that carry it (Task 23, review M9).
11252
+ *
11253
+ * This is the ONE authority both addons read — never two settings that
11254
+ * could disagree (CLAUDE.md D62). The tracker's `TrackerV2Config.appearanceResolvesAmbiguity`
11255
+ * default reads it (`addon-post-analysis/pipeline/tracker-v2/types.ts`); the
11256
+ * runner's cost gate reads it too (`addon-pipeline/pipeline-runner/appearance-attach.ts`),
11257
+ * short-circuiting BEFORE any crop, resample or descriptor is computed, so a
11258
+ * disabled camera costs nothing extra per frame.
11259
+ */
11260
+ var APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT = false;
11239
11261
  var ClipModelMetaSchema = object({
11240
11262
  /** The paired text encoder's catalog id (the embedding-encoder's text catalog). */
11241
11263
  textModelId: string().min(1),
@@ -19654,8 +19676,14 @@ var NcSensorTransitionSchema = _enum(["raised", "cleared"]);
19654
19676
  /** Admin-zone membership condition (zone IDs as stamped by the ZoneEngine). */
19655
19677
  var NcZoneConditionSchema = object({
19656
19678
  ids: array(string().min(1)).min(1),
19657
- /** Quantifier over `ids` — at least one / every one visited. */
19658
- match: _enum(["any", "all"]).default("any")
19679
+ /**
19680
+ * LEGACY quantifier over `ids`. Absent = `any` (at least one visited), which
19681
+ * is what both editors mean and all they write since D690: "all of" was
19682
+ * removed from the editors because on an immediate rule it asked one
19683
+ * detection to stand in every zone at once. Still ACCEPTED, and `all` still
19684
+ * evaluated, so a stored rule keeps parsing and meaning what it meant.
19685
+ */
19686
+ match: _enum(["any", "all"]).optional()
19659
19687
  });
19660
19688
  /**
19661
19689
  * The P1 condition set — a flat AND of groups; absent group = pass;
@@ -20968,7 +20996,7 @@ var NC_CONDITION_CATALOG = [
20968
20996
  "package-event"
20969
20997
  ],
20970
20998
  phase: "P1",
20971
- description: "Admin zone ids; quantifier any/all over the visited set."
20999
+ description: "The zones the subject must be in (included) or never in (excluded)."
20972
21000
  },
20973
21001
  {
20974
21002
  id: "zonesExclude",
@@ -20991,29 +21019,24 @@ var NC_CONDITION_CATALOG = [
20991
21019
  options: [
20992
21020
  {
20993
21021
  value: "",
20994
- label: "Not set — entering",
20995
- hint: "Entries, and every detection that is not a crossing at all. Exits are excluded. This is what a rule without a crossing condition already does, and choosing it writes nothing to the rule."
20996
- },
20997
- {
20998
- value: "enter",
20999
- label: "Entered a zone",
21000
- hint: "The same matches as \"not set\", stated explicitly: entries and non-crossing detections pass, exits do not."
21022
+ label: "Entering",
21023
+ hint: "Entries and ordinary movement; never an exit."
21001
21024
  },
21002
21025
  {
21003
21026
  value: "exit",
21004
- label: "Left a zone",
21005
- hint: "ONLY an exit crossing. A detection that is not a crossing fails, so this rule cannot fire on ordinary movement — pair it with the zones the subject must have left. Also matches a tripwire crossed against its drawn direction."
21027
+ label: "Leaving",
21028
+ hint: "Only an exit from a zone."
21006
21029
  },
21007
21030
  {
21008
21031
  value: "any",
21009
- label: "Entered or left",
21010
- hint: "No direction filter: entries, exits and non-crossing detections alike. This is the only choice that adds exits to what the rule already matched."
21032
+ label: "Entering or leaving",
21033
+ hint: "Entries, exits and ordinary movement."
21011
21034
  }
21012
21035
  ],
21013
21036
  operator: "in",
21014
21037
  appliesTo: ["immediate"],
21015
21038
  phase: "P1",
21016
- description: "Direction of the zone crossing: enter (the default, and what every rule authored before this did) / exit / any. An exit rule matches only crossings."
21039
+ description: "Which way the subject crosses the zone."
21017
21040
  },
21018
21041
  {
21019
21042
  id: "labelEquals",
@@ -21150,7 +21173,7 @@ var NC_CONDITION_CATALOG = [
21150
21173
  "package-event"
21151
21174
  ],
21152
21175
  phase: "P3",
21153
- description: "Only fire while a scene is matched (the baseline is what we see) or diverged (it demonstrably is not) — “tell me about a person at the door, but only while the bin is still out”. A scene that cannot judge, or one this hub has not read yet, does NOT fire."
21176
+ description: "Only fire while a scene is matched or diverged."
21154
21177
  },
21155
21178
  {
21156
21179
  id: "sensorKinds",
@@ -24460,13 +24483,19 @@ var pipelineAnalyticsCapability = {
24460
24483
  *
24461
24484
  * Operator-driven from the DI Events page (batch delete). Routes through
24462
24485
  * the same widened track-deletion cascade (design §5.2).
24486
+ *
24487
+ * `sparedMediaIds` (D683 Task 14): media rows the cascade LEFT because a
24488
+ * live stationary entry vouches for them (its key frame, owned by a track
24489
+ * that moved and was kept). Released when the entry retires. Optional:
24490
+ * absent from a provider that predates it.
24463
24491
  */
24464
24492
  deleteTracks: method(object({
24465
24493
  deviceId: number(),
24466
24494
  trackIds: array(string()).min(1)
24467
24495
  }), object({
24468
24496
  deleted: number().int(),
24469
- failed: array(string()).readonly()
24497
+ failed: array(string()).readonly(),
24498
+ sparedMediaIds: array(number().int()).readonly().optional()
24470
24499
  }), {
24471
24500
  kind: "mutation",
24472
24501
  auth: "admin"
@@ -27176,7 +27205,42 @@ var SetCameraSensorsInputSchema = object({
27176
27205
  /** `null` removes the attachment: the camera goes back to `not-configured`. */
27177
27206
  config: CameraSensorsConfigSchema.nullable()
27178
27207
  });
27179
- method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
27208
+ /**
27209
+ * Why an early occupancy look (D691) was not scheduled.
27210
+ *
27211
+ * - `unknown-camera` — no session was ever dispatched for it, so there is no
27212
+ * node and no config to attach a burst with.
27213
+ * - `out-of-range` — the ask is negative or further out than the orchestrator
27214
+ * will hold a timer for; the parked-object cadence is the answer there.
27215
+ * - `no-burst-producer` — this build has no burst producer at all.
27216
+ * - `already-looked` — this camera's ONE early look since its last session has
27217
+ * been spent. A look's own burst can re-arm a flickering flip, and a look
27218
+ * per arm would chain a burst every ~30 s forever (review H2); the next
27219
+ * real session re-arms the budget.
27220
+ */
27221
+ var OccupancyLookRefusalSchema = _enum([
27222
+ "unknown-camera",
27223
+ "out-of-range",
27224
+ "no-burst-producer",
27225
+ "already-looked"
27226
+ ]);
27227
+ method(object({
27228
+ deviceId: number().int().nonnegative(),
27229
+ /** How long from NOW until the pending flip's sustain window ends. RELATIVE,
27230
+ * so the caller's clock and the orchestrator's never have to agree. */
27231
+ afterMs: number().finite(),
27232
+ /** Why, for the log. */
27233
+ reason: string()
27234
+ }), object({
27235
+ scheduled: boolean(),
27236
+ /** When `scheduled`: how long until the burst is dialled. */
27237
+ dueInMs: number().optional(),
27238
+ /** When not `scheduled`: why. */
27239
+ refusedBecause: OccupancyLookRefusalSchema.optional()
27240
+ }), {
27241
+ kind: "mutation",
27242
+ auth: "admin"
27243
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
27180
27244
  kind: "mutation",
27181
27245
  auth: "admin"
27182
27246
  }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
@@ -48338,6 +48402,12 @@ Object.freeze({
48338
48402
  addonId: null,
48339
48403
  access: "delete"
48340
48404
  },
48405
+ "pipelineOrchestrator.requestOccupancyLook": {
48406
+ capName: "pipeline-orchestrator",
48407
+ capScope: "system",
48408
+ addonId: null,
48409
+ access: "create"
48410
+ },
48341
48411
  "pipelineOrchestrator.resetNodePipelineDefaults": {
48342
48412
  capName: "pipeline-orchestrator",
48343
48413
  capScope: "system",
@@ -52130,6 +52200,11 @@ Object.freeze({
52130
52200
  form: "single",
52131
52201
  optional: false
52132
52202
  }],
52203
+ "pipelineOrchestrator.requestOccupancyLook": [{
52204
+ name: "deviceId",
52205
+ form: "single",
52206
+ optional: false
52207
+ }],
52133
52208
  "pipelineOrchestrator.resolvePipeline": [{
52134
52209
  name: "deviceId",
52135
52210
  form: "single",
@@ -52961,6 +53036,12 @@ function audioModeOf(value) {
52961
53036
  if (value.dbThreshold !== void 0) return "level";
52962
53037
  return null;
52963
53038
  }
53039
+ /** The taxonomy group the class picker appends the audio kinds under. */
53040
+ var AUDIO_GROUP_KEY = "audio";
53041
+ /** An audio kind (`audio-*`) — the one prefix every sound class carries. */
53042
+ function isAudioClassName(name) {
53043
+ return name.trim().toLowerCase().startsWith(`${AUDIO_GROUP_KEY}-`);
53044
+ }
52964
53045
  new Set(["devices", "classes"]);
52965
53046
  /**
52966
53047
  * WHICH narrowing filter speaks about WHICH system-event kind — one predicate,
@@ -54470,6 +54551,37 @@ function templateCarriesSummary(body) {
54470
54551
  if (body === void 0 || body.trim().length === 0) return true;
54471
54552
  return SUMMARY_CONTENT_VAR.test(body);
54472
54553
  }
54554
+ new Set([
54555
+ "disarmed",
54556
+ "armed_home",
54557
+ "armed_away",
54558
+ "armed_night",
54559
+ "armed_vacation",
54560
+ "armed_custom_bypass",
54561
+ "arming",
54562
+ "disarming",
54563
+ "pending",
54564
+ "triggered",
54565
+ "open",
54566
+ "opening",
54567
+ "closing",
54568
+ "closed",
54569
+ "stopped",
54570
+ "locked",
54571
+ "unlocked",
54572
+ "locking",
54573
+ "unlocking",
54574
+ "jammed",
54575
+ "on",
54576
+ "off",
54577
+ "home",
54578
+ "not_home",
54579
+ "matched",
54580
+ "diverged",
54581
+ "unknown",
54582
+ "latched",
54583
+ "live"
54584
+ ]);
54473
54585
  /**
54474
54586
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
54475
54587
  *
@@ -55743,4 +55855,4 @@ function buildClipModelRegistry(entries) {
55743
55855
  /** The built-in catalog's registry. */
55744
55856
  var BUILTIN_CLIP_MODELS = buildClipModelRegistry(CLIP_IMAGE_MODELS);
55745
55857
  //#endregion
55746
- export { NC_CLIP_RETENTION_MAX_SEC as $, subKindsOf as $n, TrackPuritySchema as $t, EVENT_KIND_BY_CAP as A, isScheduleActive as An, object as Ar, PoolMemoryWatchdog as At, MAX_ARCHIVED_DEBUG_NOTES as B, pipelineAnalyticsCapability as Bn, SCENE_DEFAULT_QUIET_SECONDS as Bt, DETECTION_PIPELINE_CAP_NAME as C, failureContributionCapability as Cn, sleep as Cr, NcSystemEventKindSchema as Ct, EMBEDDING_REQUIREMENTS_FAILED as D, isEventOwnerType as Dn, discriminatedUnion as Dr, NcTemplateVarDescriptorSchema as Dt, EMBEDDING_MODEL_FAILED as E, isDetectionMacroClass as En, boolean as Er, NcTemplatePreviewSchema as Et, FailureCounters as F, mayWriteToLocation as Fn, tuple as Fr, SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX as Ft, MOTION_CLOSE_AFTER_MS as G, resolveClipSearchMinScore as Gn, SetTrackPurityInputSchema as Gt, MAX_BIRTH_LATENCY_PROXY_MS as H, readDeviceStateFrom as Hn, SCENE_DIVERGED as Ht, LabelAttributionSchema as I, memoizePinnedFfmpeg as In, union as Ir, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as It, NC_ALARM_SYSTEM_EVENT_KINDS as J, ruleBelongsToAlarm as Jn, TIMELAPSE_DENSE_FLOOR_SEC as Jt, MediaFileKindEnum as K, resolveLocationMode as Kn, SetTrackPurityResultSchema as Kt, ListTrackRelationsInputSchema as L, notificationRulesCapability as Ln, unknown as Lr, SCENE_DEFAULT_ANCHOR_THRESHOLD as Lt, EXPORT_DENSE_MAX_RANGES as M, isSystemEventSummaryRule as Mn, record as Mr, RECORDING_SOURCE_CAMSTACK_ADDON as Mt, FIRST_LEVEL_MACRO_CLASSES as N, isVectorIndexDimConflict as Nn, strictObject as Nr, RebuildObjectEmbeddingsRefusalSchema as Nt, EMBEDDING_REQUIREMENTS_UNAVAILABLE as O, isKnownTemplateVar as On, literal as Or, OPS_LOG_DEFAULT_LIMIT as Ot, FULL_IMAGE_BBOX as P, kebabToCamel as Pn, string as Pr, RetrainStatusSchema as Pt, NC_CLIP_PRE_ROLL_DEFAULT_SEC as Q, storageOccupancyCapability as Qn, TimelapseRuleSchema as Qt, ListTrackRelationsResultSchema as R, occupancyScope as Rn, EventCategory as Rr, SCENE_DEFAULT_CHECK_INTERVAL_SEC as Rt, DETECTION_MACRO_CLASSES as S, faceGalleryCapability as Sn, normalizeNodeId as Sr, NcSnoozeSuppressedSchema as St, DetectionSourceSchema as T, gifFromMp4Args as Tn, array as Tr, NcTemplatePreviewInputSchema as Tt, MAX_TRACK_PURITIES as U, readMotionTriggeredBy as Un, SCENE_RESET_RECAPTURES as Ut, MAX_BIRTH_DECISION_RECORDS as V, plateGalleryCapability as Vn, SCENE_DEFAULT_UNCOVERED_POLICY as Vt, MAX_TRACK_RELATIONS as W, readTimelapseGeneratedAt as Wn, SceneMonitorSchema as Wt, NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT as X, sensorRaisedOf as Xn, TimelapseRuleInputSchema as Xt, NC_AUDIO_CONFIRM_HITS_DEFAULT as Y, sceneMonitorCapability as Yn, TRACK_RELATIONS_DEFAULT_LIMIT as Yt, NC_CLIP_POST_ROLL_DEFAULT_SEC as Z, servedTemplateVars as Zn, TimelapseRulePatchSchema as Zt, ClearTrackRelationInputSchema as _, embeddingRefusalOf as _n, customAction as _r, NcRuleTargetSchema as _t, CLIP_EMBEDDING_STEP_ID as a, alarmPanelCapability as an, templateVarsFor as ar, NC_SNOOZE_MAX_MINUTES as at, DEFAULT_EVENT_COLOR as b, encodeVectorBase64 as bn, isDeviceScopedCap as br, NcSnoozeInputSchema as bt, resolveClusterModelPin as c, audioModeOf as cn, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as cr, NC_TAXONOMY as ct, AlarmArmModeSchema as d, cosineSimilarity as dn, isSourceCap as dr, NcAlarmSettingsPatchSchema as dt, TrackRelationKindSchema as en, systemEventDeliveryProblems as er, NC_CONDITION_CATALOG as et, ArchivedDebugNoteSchema as f, deriveRecordingMode as fn, DeviceType as fr, NcConditionDescriptorSchema as ft, COCO_TO_MACRO as g, embeddingModelFailedError as gn, createEvent as gr, NcRuleSchema as gt, BirthDecisionRecordSchema as h, embeddingEncoderCapability as hn, CamProfileSchema as hr, NcRulePatchSchema as ht, CLIP_TEXT_MODELS as i, addonWidgetsSourceCapability as in, templateCarriesSummary as ir, NC_SENSOR_TRANSITION_KINDS as it, EVENT_OWNER_TYPES as j, isSystemDelivery as jn, partialRecord as jr, RECORDING_EXPORT_MAX_READ_BYTES as jt, EVENT_DENSITY_BATCH_MAX as k, isMediaOwnerType as kn, number as kr, OpsLogEntrySchema as kt, ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT as l, buildEventKindDescriptor as ln, canonicalHash as lr, NC_TEMPLATE_VARS as lt, BaseDevice as m, describeSystemEventFamilyProblem as mn, BaseAddon as mr, NcRuleInputSchema as mt, DEFAULT_CLIP_MODEL as n, TrackSideSchema as nn, systemEventFilterApplies as nr, NC_CONSUMABLE_SYSTEM_EVENT_KINDS as nt, FACE_EMBEDDING_STEP_ID as o, assertTimelapseCadences as on, vectorDimFromBase64 as or, NC_SYSTEM_EVENT_KIND_GROUP_SPECS as ot, BIRTH_DECISION_DEFAULT_LIMIT as p, describeSystemEventDeliveryProblem as pn, errMsg as pr, NcConditionsSchema as pt, MotionTriggeredBySchema as q, resolvePoolMemoryPolicy as qn, SetTrackRelationInputSchema as qt, CLIP_IMAGE_MODELS as r, TrackSourceSchema as rn, systemEventSummaryScheduleOf as rr, NC_DEFAULT_SNOOZE_MINUTES as rt, readClusterModelPinStrict as s, audioMetricsCapability as sn, zoneAnalyticsCapability as sr, NC_TANK_SYSTEM_EVENT_KINDS as st, BUILTIN_CLIP_MODELS as t, TrackRelationSchema as tn, systemEventFamilyProblems as tr, NC_CONSUMABLE_LOW_PERCENT_DEFAULT as tt, AUDIO_MACRO_LABELS as u, consumableLowPercentOf as un, evaluateSensorEdge as ur, NcAlarmConfigSchema as ut, ClearTrackRelationResultSchema as v, embeddingRequirementsFailedError as vn, defineCustomActions as vr, NcRuleUpdateInputSchema as vt, DeclaredDevices as w, gifDeriveSpeed as wn, _enum as wr, NcTaxonomySchema as wt, DEFAULT_TIMELAPSE_PREVIEW_TEXT as x, evictionPolicyOfLocation as xn, nodePin as xr, NcSnoozeSchema as xt, CoverStateSchema as y, embeddingRequirementsUnavailableError as yn, hydrateSchema as yr, NcScheduleSchema as yt, LockStateSchema as z, parseProcStatus as zn, SCENE_DEFAULT_OBSERVATION_SPACING_SEC as zt };
55858
+ export { NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT as $, sceneMonitorCapability as $n, TimelapseRuleInputSchema as $t, EMBEDDING_REQUIREMENTS_FAILED as A, isDetectionMacroClass as An, array as Ar, NcTemplateVarDescriptorSchema as At, ListTrackRelationsInputSchema as B, memoizePinnedFfmpeg as Bn, string as Br, SCENE_DEFAULT_ANCHOR_THRESHOLD as Bt, DEFAULT_EVENT_COLOR as C, encodeVectorBase64 as Cn, hydrateSchema as Cr, NcSnoozeInputSchema as Ct, DeclaredDevices as D, gifDeriveSpeed as Dn, sleep as Dr, NcTaxonomySchema as Dt, DETECTION_PIPELINE_CAP_NAME as E, failureContributionCapability as En, normalizeNodeId as Er, NcSystemEventKindSchema as Et, EXPORT_DENSE_MAX_RANGES as F, isSystemDelivery as Fn, number as Fr, RECORDING_SOURCE_CAMSTACK_ADDON as Ft, MAX_BIRTH_LATENCY_PROXY_MS as G, plateGalleryCapability as Gn, SCENE_DIVERGED as Gt, LockStateSchema as H, occupancyScope as Hn, union as Hr, SCENE_DEFAULT_OBSERVATION_SPACING_SEC as Ht, FIRST_LEVEL_MACRO_CLASSES as I, isSystemEventSummaryRule as In, object as Ir, RebuildObjectEmbeddingsRefusalSchema as It, MOTION_CLOSE_AFTER_MS as J, readTimelapseGeneratedAt as Jn, SetTrackPurityInputSchema as Jt, MAX_TRACK_PURITIES as K, readDeviceStateFrom as Kn, SCENE_RESET_RECAPTURES as Kt, FULL_IMAGE_BBOX as L, isVectorIndexDimConflict as Ln, partialRecord as Lr, RetrainStatusSchema as Lt, EVENT_DENSITY_BATCH_MAX as M, isKnownTemplateVar as Mn, discriminatedUnion as Mr, OpsLogEntrySchema as Mt, EVENT_KIND_BY_CAP as N, isMediaOwnerType as Nn, literal as Nr, PoolMemoryWatchdog as Nt, DetectionSourceSchema as O, gifFromMp4Args as On, ZodObject as Or, NcTemplatePreviewInputSchema as Ot, EVENT_OWNER_TYPES as P, isScheduleActive as Pn, looseObject as Pr, RECORDING_EXPORT_MAX_READ_BYTES as Pt, NC_AUDIO_CONFIRM_HITS_DEFAULT as Q, ruleBelongsToAlarm as Qn, TRACK_RELATIONS_DEFAULT_LIMIT as Qt, FailureCounters as R, kebabToCamel as Rn, record as Rr, SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX as Rt, CoverStateSchema as S, embeddingRequirementsUnavailableError as Sn, defineCustomActions as Sr, NcScheduleSchema as St, DETECTION_MACRO_CLASSES as T, faceGalleryCapability as Tn, nodePin as Tr, NcSnoozeSuppressedSchema as Tt, MAX_ARCHIVED_DEBUG_NOTES as U, parseProcStatus as Un, unknown as Ur, SCENE_DEFAULT_QUIET_SECONDS as Ut, ListTrackRelationsResultSchema as V, notificationRulesCapability as Vn, tuple as Vr, SCENE_DEFAULT_CHECK_INTERVAL_SEC as Vt, MAX_BIRTH_DECISION_RECORDS as W, pipelineAnalyticsCapability as Wn, EventCategory as Wr, SCENE_DEFAULT_UNCOVERED_POLICY as Wt, MotionTriggeredBySchema as X, resolveLocationMode as Xn, SetTrackRelationInputSchema as Xt, MediaFileKindEnum as Y, resolveClipSearchMinScore as Yn, SetTrackPurityResultSchema as Yt, NC_ALARM_SYSTEM_EVENT_KINDS as Z, resolvePoolMemoryPolicy as Zn, TIMELAPSE_DENSE_FLOOR_SEC as Zt, BaseDevice as _, describeSystemEventFamilyProblem as _n, errMsg as _r, NcRuleInputSchema as _t, CLIP_EMBEDDING_STEP_ID as a, TrackSideSchema as an, systemEventFamilyProblems as ar, NC_CONSUMABLE_SYSTEM_EVENT_KINDS as at, ClearTrackRelationInputSchema as b, embeddingRefusalOf as bn, createEvent as br, NcRuleTargetSchema as bt, resolveClusterModelPin as c, alarmPanelCapability as cn, templateCarriesSummary as cr, NC_SNOOZE_MAX_MINUTES as ct, APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT as d, audioModeOf as dn, zoneAnalyticsCapability as dr, NC_TAXONOMY as dt, TimelapseRulePatchSchema as en, sensorRaisedOf as er, NC_CLIP_POST_ROLL_DEFAULT_SEC as et, ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT as f, buildEventKindDescriptor as fn, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as fr, NC_TEMPLATE_VARS as ft, BIRTH_DECISION_DEFAULT_LIMIT as g, describeSystemEventDeliveryProblem as gn, DeviceType as gr, NcConditionsSchema as gt, ArchivedDebugNoteSchema as h, deriveRecordingMode as hn, isSourceCap as hr, NcConditionDescriptorSchema as ht, CLIP_TEXT_MODELS as i, TrackRelationSchema as in, systemEventDeliveryProblems as ir, NC_CONSUMABLE_LOW_PERCENT_DEFAULT as it, EMBEDDING_REQUIREMENTS_UNAVAILABLE as j, isEventOwnerType as jn, boolean as jr, OPS_LOG_DEFAULT_LIMIT as jt, EMBEDDING_MODEL_FAILED as k, isAudioClassName as kn, _enum as kr, NcTemplatePreviewSchema as kt, APPEARANCE_BIN_COUNT as l, assertTimelapseCadences as ln, templateVarsFor as lr, NC_SYSTEM_EVENT_KIND_GROUP_SPECS as lt, AlarmArmModeSchema as m, cosineSimilarity as mn, evaluateSensorEdge as mr, NcAlarmSettingsPatchSchema as mt, DEFAULT_CLIP_MODEL as n, TrackPuritySchema as nn, storageOccupancyCapability as nr, NC_CLIP_RETENTION_MAX_SEC as nt, FACE_EMBEDDING_STEP_ID as o, TrackSourceSchema as on, systemEventFilterApplies as or, NC_DEFAULT_SNOOZE_MINUTES as ot, AUDIO_MACRO_LABELS as p, consumableLowPercentOf as pn, canonicalHash as pr, NcAlarmConfigSchema as pt, MAX_TRACK_RELATIONS as q, readMotionTriggeredBy as qn, SceneMonitorSchema as qt, CLIP_IMAGE_MODELS as r, TrackRelationKindSchema as rn, subKindsOf as rr, NC_CONDITION_CATALOG as rt, readClusterModelPinStrict as s, addonWidgetsSourceCapability as sn, systemEventSummaryScheduleOf as sr, NC_SENSOR_TRANSITION_KINDS as st, BUILTIN_CLIP_MODELS as t, TimelapseRuleSchema as tn, servedTemplateVars as tr, NC_CLIP_PRE_ROLL_DEFAULT_SEC as tt, APPEARANCE_BLOCKS as u, audioMetricsCapability as un, vectorDimFromBase64 as ur, NC_TANK_SYSTEM_EVENT_KINDS as ut, BirthDecisionRecordSchema as v, embeddingEncoderCapability as vn, BaseAddon as vr, NcRulePatchSchema as vt, DEFAULT_TIMELAPSE_PREVIEW_TEXT as w, evictionPolicyOfLocation as wn, isDeviceScopedCap as wr, NcSnoozeSchema as wt, ClearTrackRelationResultSchema as x, embeddingRequirementsFailedError as xn, customAction as xr, NcRuleUpdateInputSchema as xt, COCO_TO_MACRO as y, embeddingModelFailedError as yn, CamProfileSchema as yr, NcRuleSchema as yt, LabelAttributionSchema as z, mayWriteToLocation as zn, strictObject as zr, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as zt };
@@ -11267,6 +11267,28 @@ var FailureCounters = class {
11267
11267
  this.counters.clear();
11268
11268
  }
11269
11269
  };
11270
+ var APPEARANCE_BIN_COUNT = 96;
11271
+ var APPEARANCE_BLOCKS = {
11272
+ upperHs: [0, 32],
11273
+ upperV: [32, 40],
11274
+ upperGrad: [40, 48],
11275
+ lowerHs: [48, 80],
11276
+ lowerV: [80, 88],
11277
+ lowerGrad: [88, 96]
11278
+ };
11279
+ /**
11280
+ * Whether appearance may influence anything at all (D683 §3.2, fix round 1
11281
+ * ruling 2026-09-30 on the Task 10 cost-bench STOP): OFF until the
11282
+ * descriptor is calibrated on tapes that carry it (Task 23, review M9).
11283
+ *
11284
+ * This is the ONE authority both addons read — never two settings that
11285
+ * could disagree (CLAUDE.md D62). The tracker's `TrackerV2Config.appearanceResolvesAmbiguity`
11286
+ * default reads it (`addon-post-analysis/pipeline/tracker-v2/types.ts`); the
11287
+ * runner's cost gate reads it too (`addon-pipeline/pipeline-runner/appearance-attach.ts`),
11288
+ * short-circuiting BEFORE any crop, resample or descriptor is computed, so a
11289
+ * disabled camera costs nothing extra per frame.
11290
+ */
11291
+ var APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT = false;
11270
11292
  var ClipModelMetaSchema = object({
11271
11293
  /** The paired text encoder's catalog id (the embedding-encoder's text catalog). */
11272
11294
  textModelId: string().min(1),
@@ -19685,8 +19707,14 @@ var NcSensorTransitionSchema = _enum(["raised", "cleared"]);
19685
19707
  /** Admin-zone membership condition (zone IDs as stamped by the ZoneEngine). */
19686
19708
  var NcZoneConditionSchema = object({
19687
19709
  ids: array(string().min(1)).min(1),
19688
- /** Quantifier over `ids` — at least one / every one visited. */
19689
- match: _enum(["any", "all"]).default("any")
19710
+ /**
19711
+ * LEGACY quantifier over `ids`. Absent = `any` (at least one visited), which
19712
+ * is what both editors mean and all they write since D690: "all of" was
19713
+ * removed from the editors because on an immediate rule it asked one
19714
+ * detection to stand in every zone at once. Still ACCEPTED, and `all` still
19715
+ * evaluated, so a stored rule keeps parsing and meaning what it meant.
19716
+ */
19717
+ match: _enum(["any", "all"]).optional()
19690
19718
  });
19691
19719
  /**
19692
19720
  * The P1 condition set — a flat AND of groups; absent group = pass;
@@ -20999,7 +21027,7 @@ var NC_CONDITION_CATALOG = [
20999
21027
  "package-event"
21000
21028
  ],
21001
21029
  phase: "P1",
21002
- description: "Admin zone ids; quantifier any/all over the visited set."
21030
+ description: "The zones the subject must be in (included) or never in (excluded)."
21003
21031
  },
21004
21032
  {
21005
21033
  id: "zonesExclude",
@@ -21022,29 +21050,24 @@ var NC_CONDITION_CATALOG = [
21022
21050
  options: [
21023
21051
  {
21024
21052
  value: "",
21025
- label: "Not set — entering",
21026
- hint: "Entries, and every detection that is not a crossing at all. Exits are excluded. This is what a rule without a crossing condition already does, and choosing it writes nothing to the rule."
21027
- },
21028
- {
21029
- value: "enter",
21030
- label: "Entered a zone",
21031
- hint: "The same matches as \"not set\", stated explicitly: entries and non-crossing detections pass, exits do not."
21053
+ label: "Entering",
21054
+ hint: "Entries and ordinary movement; never an exit."
21032
21055
  },
21033
21056
  {
21034
21057
  value: "exit",
21035
- label: "Left a zone",
21036
- hint: "ONLY an exit crossing. A detection that is not a crossing fails, so this rule cannot fire on ordinary movement — pair it with the zones the subject must have left. Also matches a tripwire crossed against its drawn direction."
21058
+ label: "Leaving",
21059
+ hint: "Only an exit from a zone."
21037
21060
  },
21038
21061
  {
21039
21062
  value: "any",
21040
- label: "Entered or left",
21041
- hint: "No direction filter: entries, exits and non-crossing detections alike. This is the only choice that adds exits to what the rule already matched."
21063
+ label: "Entering or leaving",
21064
+ hint: "Entries, exits and ordinary movement."
21042
21065
  }
21043
21066
  ],
21044
21067
  operator: "in",
21045
21068
  appliesTo: ["immediate"],
21046
21069
  phase: "P1",
21047
- description: "Direction of the zone crossing: enter (the default, and what every rule authored before this did) / exit / any. An exit rule matches only crossings."
21070
+ description: "Which way the subject crosses the zone."
21048
21071
  },
21049
21072
  {
21050
21073
  id: "labelEquals",
@@ -21181,7 +21204,7 @@ var NC_CONDITION_CATALOG = [
21181
21204
  "package-event"
21182
21205
  ],
21183
21206
  phase: "P3",
21184
- description: "Only fire while a scene is matched (the baseline is what we see) or diverged (it demonstrably is not) — “tell me about a person at the door, but only while the bin is still out”. A scene that cannot judge, or one this hub has not read yet, does NOT fire."
21207
+ description: "Only fire while a scene is matched or diverged."
21185
21208
  },
21186
21209
  {
21187
21210
  id: "sensorKinds",
@@ -24491,13 +24514,19 @@ var pipelineAnalyticsCapability = {
24491
24514
  *
24492
24515
  * Operator-driven from the DI Events page (batch delete). Routes through
24493
24516
  * the same widened track-deletion cascade (design §5.2).
24517
+ *
24518
+ * `sparedMediaIds` (D683 Task 14): media rows the cascade LEFT because a
24519
+ * live stationary entry vouches for them (its key frame, owned by a track
24520
+ * that moved and was kept). Released when the entry retires. Optional:
24521
+ * absent from a provider that predates it.
24494
24522
  */
24495
24523
  deleteTracks: method(object({
24496
24524
  deviceId: number(),
24497
24525
  trackIds: array(string()).min(1)
24498
24526
  }), object({
24499
24527
  deleted: number().int(),
24500
- failed: array(string()).readonly()
24528
+ failed: array(string()).readonly(),
24529
+ sparedMediaIds: array(number().int()).readonly().optional()
24501
24530
  }), {
24502
24531
  kind: "mutation",
24503
24532
  auth: "admin"
@@ -27207,7 +27236,42 @@ var SetCameraSensorsInputSchema = object({
27207
27236
  /** `null` removes the attachment: the camera goes back to `not-configured`. */
27208
27237
  config: CameraSensorsConfigSchema.nullable()
27209
27238
  });
27210
- method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
27239
+ /**
27240
+ * Why an early occupancy look (D691) was not scheduled.
27241
+ *
27242
+ * - `unknown-camera` — no session was ever dispatched for it, so there is no
27243
+ * node and no config to attach a burst with.
27244
+ * - `out-of-range` — the ask is negative or further out than the orchestrator
27245
+ * will hold a timer for; the parked-object cadence is the answer there.
27246
+ * - `no-burst-producer` — this build has no burst producer at all.
27247
+ * - `already-looked` — this camera's ONE early look since its last session has
27248
+ * been spent. A look's own burst can re-arm a flickering flip, and a look
27249
+ * per arm would chain a burst every ~30 s forever (review H2); the next
27250
+ * real session re-arms the budget.
27251
+ */
27252
+ var OccupancyLookRefusalSchema = _enum([
27253
+ "unknown-camera",
27254
+ "out-of-range",
27255
+ "no-burst-producer",
27256
+ "already-looked"
27257
+ ]);
27258
+ method(object({
27259
+ deviceId: number().int().nonnegative(),
27260
+ /** How long from NOW until the pending flip's sustain window ends. RELATIVE,
27261
+ * so the caller's clock and the orchestrator's never have to agree. */
27262
+ afterMs: number().finite(),
27263
+ /** Why, for the log. */
27264
+ reason: string()
27265
+ }), object({
27266
+ scheduled: boolean(),
27267
+ /** When `scheduled`: how long until the burst is dialled. */
27268
+ dueInMs: number().optional(),
27269
+ /** When not `scheduled`: why. */
27270
+ refusedBecause: OccupancyLookRefusalSchema.optional()
27271
+ }), {
27272
+ kind: "mutation",
27273
+ auth: "admin"
27274
+ }), method(StorageMigrationLeaseInputSchema, object({ paused: literal(true) }), {
27211
27275
  kind: "mutation",
27212
27276
  auth: "admin"
27213
27277
  }), method(StorageMigrationLeaseInputSchema, object({ resumed: literal(true) }), {
@@ -48369,6 +48433,12 @@ Object.freeze({
48369
48433
  addonId: null,
48370
48434
  access: "delete"
48371
48435
  },
48436
+ "pipelineOrchestrator.requestOccupancyLook": {
48437
+ capName: "pipeline-orchestrator",
48438
+ capScope: "system",
48439
+ addonId: null,
48440
+ access: "create"
48441
+ },
48372
48442
  "pipelineOrchestrator.resetNodePipelineDefaults": {
48373
48443
  capName: "pipeline-orchestrator",
48374
48444
  capScope: "system",
@@ -52161,6 +52231,11 @@ Object.freeze({
52161
52231
  form: "single",
52162
52232
  optional: false
52163
52233
  }],
52234
+ "pipelineOrchestrator.requestOccupancyLook": [{
52235
+ name: "deviceId",
52236
+ form: "single",
52237
+ optional: false
52238
+ }],
52164
52239
  "pipelineOrchestrator.resolvePipeline": [{
52165
52240
  name: "deviceId",
52166
52241
  form: "single",
@@ -52992,6 +53067,12 @@ function audioModeOf(value) {
52992
53067
  if (value.dbThreshold !== void 0) return "level";
52993
53068
  return null;
52994
53069
  }
53070
+ /** The taxonomy group the class picker appends the audio kinds under. */
53071
+ var AUDIO_GROUP_KEY = "audio";
53072
+ /** An audio kind (`audio-*`) — the one prefix every sound class carries. */
53073
+ function isAudioClassName(name) {
53074
+ return name.trim().toLowerCase().startsWith(`${AUDIO_GROUP_KEY}-`);
53075
+ }
52995
53076
  new Set(["devices", "classes"]);
52996
53077
  /**
52997
53078
  * WHICH narrowing filter speaks about WHICH system-event kind — one predicate,
@@ -54501,6 +54582,37 @@ function templateCarriesSummary(body) {
54501
54582
  if (body === void 0 || body.trim().length === 0) return true;
54502
54583
  return SUMMARY_CONTENT_VAR.test(body);
54503
54584
  }
54585
+ new Set([
54586
+ "disarmed",
54587
+ "armed_home",
54588
+ "armed_away",
54589
+ "armed_night",
54590
+ "armed_vacation",
54591
+ "armed_custom_bypass",
54592
+ "arming",
54593
+ "disarming",
54594
+ "pending",
54595
+ "triggered",
54596
+ "open",
54597
+ "opening",
54598
+ "closing",
54599
+ "closed",
54600
+ "stopped",
54601
+ "locked",
54602
+ "unlocked",
54603
+ "locking",
54604
+ "unlocking",
54605
+ "jammed",
54606
+ "on",
54607
+ "off",
54608
+ "home",
54609
+ "not_home",
54610
+ "matched",
54611
+ "diverged",
54612
+ "unknown",
54613
+ "latched",
54614
+ "live"
54615
+ ]);
54504
54616
  /**
54505
54617
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
54506
54618
  *
@@ -55774,6 +55886,24 @@ function buildClipModelRegistry(entries) {
55774
55886
  /** The built-in catalog's registry. */
55775
55887
  var BUILTIN_CLIP_MODELS = buildClipModelRegistry(CLIP_IMAGE_MODELS);
55776
55888
  //#endregion
55889
+ Object.defineProperty(exports, "APPEARANCE_BIN_COUNT", {
55890
+ enumerable: true,
55891
+ get: function() {
55892
+ return APPEARANCE_BIN_COUNT;
55893
+ }
55894
+ });
55895
+ Object.defineProperty(exports, "APPEARANCE_BLOCKS", {
55896
+ enumerable: true,
55897
+ get: function() {
55898
+ return APPEARANCE_BLOCKS;
55899
+ }
55900
+ });
55901
+ Object.defineProperty(exports, "APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT", {
55902
+ enumerable: true,
55903
+ get: function() {
55904
+ return APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT;
55905
+ }
55906
+ });
55777
55907
  Object.defineProperty(exports, "ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT", {
55778
55908
  enumerable: true,
55779
55909
  get: function() {
@@ -56458,6 +56588,12 @@ Object.defineProperty(exports, "TrackSourceSchema", {
56458
56588
  return TrackSourceSchema;
56459
56589
  }
56460
56590
  });
56591
+ Object.defineProperty(exports, "ZodObject", {
56592
+ enumerable: true,
56593
+ get: function() {
56594
+ return ZodObject;
56595
+ }
56596
+ });
56461
56597
  Object.defineProperty(exports, "__exportAll", {
56462
56598
  enumerable: true,
56463
56599
  get: function() {
@@ -56668,6 +56804,12 @@ Object.defineProperty(exports, "hydrateSchema", {
56668
56804
  return hydrateSchema;
56669
56805
  }
56670
56806
  });
56807
+ Object.defineProperty(exports, "isAudioClassName", {
56808
+ enumerable: true,
56809
+ get: function() {
56810
+ return isAudioClassName;
56811
+ }
56812
+ });
56671
56813
  Object.defineProperty(exports, "isDetectionMacroClass", {
56672
56814
  enumerable: true,
56673
56815
  get: function() {
@@ -56740,6 +56882,12 @@ Object.defineProperty(exports, "literal", {
56740
56882
  return literal;
56741
56883
  }
56742
56884
  });
56885
+ Object.defineProperty(exports, "looseObject", {
56886
+ enumerable: true,
56887
+ get: function() {
56888
+ return looseObject;
56889
+ }
56890
+ });
56743
56891
  Object.defineProperty(exports, "mayWriteToLocation", {
56744
56892
  enumerable: true,
56745
56893
  get: function() {
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_clip_model_registry = require("../clip-model-registry-CQIBimj5.js");
5
+ const require_clip_model_registry = require("../clip-model-registry-t2ey3w0B.js");
6
6
  let node_fs = require("node:fs");
7
7
  node_fs = require_clip_model_registry.__toESM(node_fs);
8
8
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { At as PoolMemoryWatchdog, Sr as normalizeNodeId, a as CLIP_EMBEDDING_STEP_ID, c as resolveClusterModelPin, gn as embeddingModelFailedError, hn as embeddingEncoderCapability, i as CLIP_TEXT_MODELS, mr as BaseAddon, n as DEFAULT_CLIP_MODEL, qn as resolvePoolMemoryPolicy, r as CLIP_IMAGE_MODELS, t as BUILTIN_CLIP_MODELS, vn as embeddingRequirementsFailedError, yn as embeddingRequirementsUnavailableError, zn as parseProcStatus } from "../clip-model-registry-BtY4fS3d.mjs";
1
+ import { Er as normalizeNodeId, Nt as PoolMemoryWatchdog, Sn as embeddingRequirementsUnavailableError, Un as parseProcStatus, Zn as resolvePoolMemoryPolicy, a as CLIP_EMBEDDING_STEP_ID, c as resolveClusterModelPin, i as CLIP_TEXT_MODELS, n as DEFAULT_CLIP_MODEL, r as CLIP_IMAGE_MODELS, t as BUILTIN_CLIP_MODELS, vn as embeddingEncoderCapability, vr as BaseAddon, xn as embeddingRequirementsFailedError, yn as embeddingModelFailedError } from "../clip-model-registry-EA6x7Vd5.mjs";
2
2
  import { createRequire } from "node:module";
3
3
  import * as fs from "node:fs";
4
4
  import * as path$1 from "node:path";
@@ -1,8 +1,8 @@
1
1
  import { a as e, i as t, n, o as r, r as i, t as a } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react__loadShare__.js-C0AuF9av.mjs";
2
2
  import { t as o } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-B3Wx5J80.mjs";
3
- import { a as s, i as c, n as l, o as u, r as d, s as f, t as p } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-DJR5XsVb.mjs";
3
+ import { a as s, i as c, n as l, o as u, r as d, s as f, t as p } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-B8qeS8Da.mjs";
4
4
  import { n as m, r as h, t as g } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-Bm-iyjmq.mjs";
5
- import { t as _ } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-m9iqcykg.mjs";
5
+ import { t as _ } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CieM-gpB.mjs";
6
6
  //#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
7
7
  var v = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), y = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), b = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), x = (e) => {
8
8
  let t = b(e);
@@ -18,7 +18,7 @@ var e = {
18
18
  },
19
19
  "@camstack/types": {
20
20
  name: "@camstack/types",
21
- version: "1.2.278",
21
+ version: "1.2.280",
22
22
  scope: ["default"],
23
23
  loaded: !1,
24
24
  from: "addon_pipeline_analytics_widgets",
@@ -33,7 +33,7 @@ var e = {
33
33
  },
34
34
  "@camstack/ui-library": {
35
35
  name: "@camstack/ui-library",
36
- version: "1.2.216",
36
+ version: "1.2.217",
37
37
  scope: ["default"],
38
38
  loaded: !1,
39
39
  from: "addon_pipeline_analytics_widgets",