@camstack/addon-admin-ui 1.2.282 → 1.2.284

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 (81) hide show
  1. package/dist/assets/{AddonCollectionPage-C41ahYnq.js → AddonCollectionPage-CXcws9Ap.js} +1 -1
  2. package/dist/assets/{Addons-UQRLWq-M.js → Addons-Am4Ma6tM.js} +1 -1
  3. package/dist/assets/{AdminTabs-CpQbj28-.js → AdminTabs-B4r4_qzn.js} +1 -1
  4. package/dist/assets/{AiProfiles-BDpR5Zjm.js → AiProfiles-emNvA5-L.js} +1 -1
  5. package/dist/assets/{BrokerForm-WSSiR6NF.js → BrokerForm-BpOTdyd1.js} +1 -1
  6. package/dist/assets/{Build-Dq_Vzukn.js → Build-Iajzv5kj.js} +3 -3
  7. package/dist/assets/{Capabilities-DCEoWW4v.js → Capabilities-1rGOLGyU.js} +1 -1
  8. package/dist/assets/{CapabilityBadges-CUpaNgpx.js → CapabilityBadges-CgkKzML7.js} +1 -1
  9. package/dist/assets/{Cluster-Dcepfp8p.js → Cluster-C-mMjSCK.js} +1 -1
  10. package/dist/assets/{Data-BYvoMa20.js → Data-D3y6_J_1.js} +1 -1
  11. package/dist/assets/{DetectionIntelligence--9BTfSrZ.js → DetectionIntelligence-CaCu4B7I.js} +1 -1
  12. package/dist/assets/{DeviceAggregateSection-BOGOkTC5.js → DeviceAggregateSection-DcIo3RFI.js} +1 -1
  13. package/dist/assets/{DeviceDetail-DVWohEu7.js → DeviceDetail-vceqhR-b.js} +2 -2
  14. package/dist/assets/{Devices-B64RBNTR.js → Devices-C5H9f4KD.js} +1 -1
  15. package/dist/assets/{EmbedPlayerPage-D550P91k.js → EmbedPlayerPage-NDGfVYVd.js} +1 -1
  16. package/dist/assets/{Events-rK6pn7gF.js → Events-2MW2hjFA.js} +1 -1
  17. package/dist/assets/{FormBuilder-BsOMcdea.js → FormBuilder-DW6FY8U_.js} +1 -1
  18. package/dist/assets/{Identity-DT2MmM4w.js → Identity-BeydBt10.js} +1 -1
  19. package/dist/assets/{IntegrationDetail-NKJ9YRrY.js → IntegrationDetail-CvQeg9Da.js} +1 -1
  20. package/dist/assets/{Integrations-Dygh_eNW.js → Integrations-BMsIWeNj.js} +1 -1
  21. package/dist/assets/{Integrations-B2I2SYac.js → Integrations-Cjp2M1B8.js} +1 -1
  22. package/dist/assets/{Locations-B9ml53xE.js → Locations-CRF1aLQH.js} +2 -2
  23. package/dist/assets/{Logs-Bx9qyu-s.js → Logs-B8HnuYTj.js} +1 -1
  24. package/dist/assets/{ModelLicenses-Du0BH9fU.js → ModelLicenses-D1rzuRCC.js} +1 -1
  25. package/dist/assets/{MotionZonesSettings-DJ7DuhLH.js → MotionZonesSettings-BpPHWhZ3.js} +1 -1
  26. package/dist/assets/{MyAccess-vVt-fGeF.js → MyAccess-CR5L1X7u.js} +1 -1
  27. package/dist/assets/{Network-BjASg-Xy.js → Network-BhrsGm9e.js} +1 -1
  28. package/dist/assets/{NodeAddonsSettingsPanel-CRRDX2kq.js → NodeAddonsSettingsPanel-UAuyaACm.js} +1 -1
  29. package/dist/assets/{NodeInferenceDevices-DO5aRsVD.js → NodeInferenceDevices-ueUcLqXE.js} +1 -1
  30. package/dist/assets/{Notifications-DdN2WP93.js → Notifications-CwGBSbgg.js} +1 -1
  31. package/dist/assets/{Pipeline-Cix9lkey.js → Pipeline-DnZAnDyY.js} +1 -1
  32. package/dist/assets/{Plates-RVwjCEIv.js → Plates-DCW4oEec.js} +1 -1
  33. package/dist/assets/{PrivacyMaskSettings-DmTA0EJN.js → PrivacyMaskSettings-D83UQCmB.js} +1 -1
  34. package/dist/assets/{ProviderIcon-Bim83TUd.js → ProviderIcon-Pvvi_07M.js} +1 -1
  35. package/dist/assets/{Recordings-5K-zo8vf.js → Recordings-D5lB1IJO.js} +1 -1
  36. package/dist/assets/{ScanNetworkModal-IogUZg0o.js → ScanNetworkModal-DVRNg7NO.js} +1 -1
  37. package/dist/assets/{SceneMonitorEditor-Cu_trPov.js → SceneMonitorEditor-C6qqDgld.js} +1 -1
  38. package/dist/assets/{Scenes-B3iizrWG.js → Scenes-DVI8Koo9.js} +1 -1
  39. package/dist/assets/{Settings-CfNnbep4.js → Settings-D3TIACkC.js} +1 -1
  40. package/dist/assets/{Showroom-BtiNa497.js → Showroom-DwThvOh-.js} +1 -1
  41. package/dist/assets/{StorageLocationsPanel-BrQvRgF_.js → StorageLocationsPanel-S5snUeKT.js} +1 -1
  42. package/dist/assets/{Terminal-ZDgstKPT.js → Terminal-CnG8wds8.js} +1 -1
  43. package/dist/assets/{Viewer-IXYH3zF3.js → Viewer-BJdIE1i4.js} +1 -1
  44. package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-sBqEuczr.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-BFragMtN.js} +1 -1
  45. package/dist/assets/{archive-BUwIK2_v.js → archive-DBAfK3bc.js} +1 -1
  46. package/dist/assets/{authed-media-qBhStfQ2.js → authed-media-Bpcf7b74.js} +1 -1
  47. package/dist/assets/{boxes-CFd6go4l.js → boxes-BHl2F5pX.js} +1 -1
  48. package/dist/assets/circle-slash-BwstX18x.js +1 -0
  49. package/dist/assets/{debounced-invalidate-xPcQ6xCk.js → debounced-invalidate-B2BYTnq2.js} +1 -1
  50. package/dist/assets/{device-integration-icon-C1eI_y3a.js → device-integration-icon-CwGzYHYd.js} +1 -1
  51. package/dist/assets/{dist-7dMhsJAB.js → dist-Cppwbx1F.js} +1 -1
  52. package/dist/assets/dist-DtgTqD-i.js +349 -0
  53. package/dist/assets/{face-bbox-DJt--EQN.js → face-bbox-DQslrKz6.js} +1 -1
  54. package/dist/assets/{hard-drive-download-Dm12kU5g.js → hard-drive-download-CfXMoKij.js} +1 -1
  55. package/dist/assets/{hostInit-DJ2KGDMG.js → hostInit-BwMESc8b.js} +1 -1
  56. package/dist/assets/{index-D8tEEPuX.js → index-Z2ys0qqD.js} +3 -3
  57. package/dist/assets/{layers-BuZ0Jegs.js → layers-DwlXc7oR.js} +1 -1
  58. package/dist/assets/{location-owned-usage-D7NEnb_y.js → location-owned-usage-DfqFmqXQ.js} +1 -1
  59. package/dist/assets/{mf-entry-bootstrap-0-a66e2ac8.js → mf-entry-bootstrap-0-f10e6470.js} +2 -2
  60. package/dist/assets/{player-overlays-CDP3-DZr.js → player-overlays-MQdyoV0z.js} +1 -1
  61. package/dist/assets/remoteEntry-0P-pnrLw.js +1 -0
  62. package/dist/assets/{send-Bshqlo1y.js → send-CUSKjqzF.js} +1 -1
  63. package/dist/assets/{settings-2-D8GrrXpz.js → settings-2-xBPqUjzm.js} +1 -1
  64. package/dist/assets/{square-check-big-s1Uohkql.js → square-check-big-PPvaShDH.js} +1 -1
  65. package/dist/assets/src-DY4uPDwP.js +349 -0
  66. package/dist/assets/{src-DW-IfTs0.js → src-h0f03S1D.js} +8 -8
  67. package/dist/assets/{use-scenes-feed-DXsa48a7.js → use-scenes-feed-Te-hNsaE.js} +1 -1
  68. package/dist/assets/{use-stationary-objects-BgNqhJa_.js → use-stationary-objects-PlMCaW7S.js} +1 -1
  69. package/dist/assets/useEventInvalidation-HCQPWIa1.js +1 -0
  70. package/dist/assets/{useNodeUrlSelection-B2p-ghcr.js → useNodeUrlSelection-Dpv1NkjK.js} +1 -1
  71. package/dist/assets/user-round-CwRpM6Qf.js +1 -0
  72. package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-C1x8yNIs.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-BTVkdCJ3.js} +2 -2
  73. package/dist/index.html +5 -5
  74. package/dist/server/addon.js +95 -48
  75. package/package.json +1 -1
  76. package/dist/assets/circle-slash-BnhDidT7.js +0 -1
  77. package/dist/assets/dist-BKJDiKuy.js +0 -349
  78. package/dist/assets/remoteEntry-LjA3rols.js +0 -1
  79. package/dist/assets/src-CudQqbgk.js +0 -349
  80. package/dist/assets/useEventInvalidation-BT8EAEqH.js +0 -1
  81. package/dist/assets/user-round-UsDrnY7R.js +0 -1
@@ -5371,7 +5371,7 @@ var ZodIssueCode = {
5371
5371
  var ZodFirstPartyTypeKind;
5372
5372
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5373
5373
  //#endregion
5374
- //#region ../types/dist/sleep-jkRQgtSc.mjs
5374
+ //#region ../types/dist/sleep-E6eD4yQS.mjs
5375
5375
  /**
5376
5376
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5377
5377
  * window to float samples (D455).
@@ -6927,6 +6927,10 @@ var ProfileRtspEntrySchema = object({
6927
6927
  codec: string().optional(),
6928
6928
  resolution: CamStreamResolutionSchema.optional()
6929
6929
  });
6930
+ object({
6931
+ field: string().min(1),
6932
+ on: literal("advance")
6933
+ });
6930
6934
  /**
6931
6935
  * Output schema shared by the contribution + live methods.
6932
6936
  *
@@ -7414,7 +7418,43 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
7414
7418
  return DeviceRole;
7415
7419
  }({});
7416
7420
  //#endregion
7417
- //#region ../types/dist/composition-CPFIlFfw.mjs
7421
+ //#region ../types/dist/composition-D5BQywfe.mjs
7422
+ /**
7423
+ * LA tabella "quale booleano di questo tipo di device conta come ALTO", e il
7424
+ * valutatore puro del suo FRONTE.
7425
+ *
7426
+ * Viveva dentro il builtin virtual-doorbell
7427
+ * (`@camstack/system` — `builtins/doorbell/trigger-engine.ts`) e i suoi
7428
+ * predicati erano privati al modulo. Il recorder ne ha bisogno per il trigger
7429
+ * `RecordingTriggers.sensorDeviceIds`: copiarla avrebbe creato la SECONDA
7430
+ * tabella, che diverge alla prima cap aggiunta e il cui sintomo — "il sensore
7431
+ * fa suonare il campanello ma non registra" — è esattamente D62. Quindi si
7432
+ * SPOSTA qui e il doorbell la ri-esporta.
7433
+ *
7434
+ * ⚠ NON è `DEVICE_STATE_READERS` (`catalogs/device-state-vocabulary.ts`), e le
7435
+ * due non vanno unificate: quella risponde a "qual è la PAROLA di stato per una
7436
+ * regola" (e include `presence`, `cover`, `alarm-panel`), questa a "qual è il
7437
+ * booleano il cui FRONTE conta". Vocabolari deliberatamente diversi.
7438
+ */
7439
+ /**
7440
+ * Known binary / switch source caps → the boolean slice field whose
7441
+ * false→true rise counts as ACTIVE. Every entry is "fire on active".
7442
+ * Sensors whose "active" reading is not a plain boolean (presence's string
7443
+ * state, connectivity's connected flag) are deliberately excluded — a
7444
+ * reconnect is not a doorbell press, and it is not a recording either.
7445
+ */
7446
+ var SOURCE_CAP_ACTIVE_FIELD = {
7447
+ contact: "entryOpen",
7448
+ binary: "on",
7449
+ switch: "on",
7450
+ motion: "detected",
7451
+ flood: "flooded",
7452
+ gas: "detected",
7453
+ smoke: "detected",
7454
+ "carbon-monoxide": "detected",
7455
+ vibration: "detected",
7456
+ tamper: "tampered"
7457
+ };
7418
7458
  /**
7419
7459
  * Error types for the safe expression engine. Two distinct classes so callers
7420
7460
  * can tell a compile-time (grammar) failure from a runtime (evaluation)
@@ -7612,6 +7652,20 @@ var table = {
7612
7652
  const present = args.flatMap((a, i) => a === null ? [] : [asFiniteNumber(a, "latest", i)]);
7613
7653
  return present.length === 0 ? null : finiteResult(Math.max(...present), "latest");
7614
7654
  }
7655
+ },
7656
+ rose: {
7657
+ minArgs: 2,
7658
+ maxArgs: 3,
7659
+ apply: () => {
7660
+ throw new ExpressionEvalError("rose: stateful evaluation context is required");
7661
+ }
7662
+ },
7663
+ count: {
7664
+ minArgs: 1,
7665
+ maxArgs: 1,
7666
+ apply: () => {
7667
+ throw new ExpressionEvalError("count: stateful evaluation context is required");
7668
+ }
7615
7669
  }
7616
7670
  };
7617
7671
  Object.freeze(Object.assign(Object.create(null), table));
@@ -8126,6 +8180,7 @@ var CompositionItemEntrySchema = object({
8126
8180
  var CompositionFeatureSchema = discriminatedUnion("kind", [object({
8127
8181
  kind: literal("fields"),
8128
8182
  cap: string().min(1),
8183
+ enabled: boolean().optional(),
8129
8184
  fields: record(string().min(1), CompositionFieldSourceSchema).refine((fields) => Object.keys(fields).length <= 32, { message: `at most 32 fields per capability` }),
8130
8185
  /**
8131
8186
  * Items of the cap's item array, keyed by item key (D663). Naming `items`
@@ -8137,6 +8192,7 @@ var CompositionFeatureSchema = discriminatedUnion("kind", [object({
8137
8192
  }), object({
8138
8193
  kind: literal("passthrough"),
8139
8194
  cap: string().min(1),
8195
+ enabled: boolean().optional(),
8140
8196
  source: CompositionSourceRefSchema
8141
8197
  })]);
8142
8198
  var CompositionSchema = object({
@@ -12770,6 +12826,15 @@ DeviceType.Camera, method(object({ deviceId: number().int().nonnegative() }), ar
12770
12826
  }),
12771
12827
  lastChangedAt: number()
12772
12828
  });
12829
+ EventCategory.DoorbellOnPressed;
12830
+ var CompositionEventPlanSchema = object({
12831
+ featureIndex: number().int().nonnegative(),
12832
+ cap: string(),
12833
+ eventName: string(),
12834
+ category: _enum(EventCategory),
12835
+ stateField: string(),
12836
+ fieldKey: string()
12837
+ });
12773
12838
  /** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.celsius`. */
12774
12839
  var CompositionProblemSchema = object({
12775
12840
  code: _enum([
@@ -12819,12 +12884,14 @@ var CompositionUnavailableModeSchema = _enum([
12819
12884
  ]);
12820
12885
  /**
12821
12886
  * `derived` reads a source · `clock` reads only `now`, recomputed when a sibling
12822
- * field of its cap changes value · `constant` reads nothing, computed once.
12887
+ * field of its cap changes value · `constant` reads nothing, computed once ·
12888
+ * `accumulator` advances from the target's seed/current output.
12823
12889
  */
12824
12890
  var CompositionFieldRoleSchema = _enum([
12825
12891
  "derived",
12826
12892
  "clock",
12827
- "constant"
12893
+ "constant",
12894
+ "accumulator"
12828
12895
  ]);
12829
12896
  /** The item a planned field belongs to; its `path` is then the dotted path INSIDE the item. */
12830
12897
  var CompositionFieldItemSchema = object({
@@ -12860,6 +12927,7 @@ var CompositionFeatureModeSchema = _enum([
12860
12927
  "replace"
12861
12928
  ]);
12862
12929
  var CompositionFeaturePlanSchema = object({
12930
+ /** Index in the stored feature array; disabled features are omitted rather than re-indexed. */
12863
12931
  featureIndex: number().int().nonnegative(),
12864
12932
  cap: string(),
12865
12933
  mode: CompositionFeatureModeSchema
@@ -12868,7 +12936,8 @@ var CompositionValidationSchema = object({
12868
12936
  ok: boolean(),
12869
12937
  problems: array(CompositionProblemSchema),
12870
12938
  fields: array(CompositionFieldPlanSchema),
12871
- features: array(CompositionFeaturePlanSchema)
12939
+ features: array(CompositionFeaturePlanSchema),
12940
+ events: array(CompositionEventPlanSchema)
12872
12941
  });
12873
12942
  /**
12874
12943
  * Mirrors `CoreBlockStatus`, pinned by `core-blocks-source.spec.ts`. `degraded`:
@@ -26323,42 +26392,6 @@ DeviceType.Camera, method(object({
26323
26392
  kind: "query",
26324
26393
  auth: "protected"
26325
26394
  });
26326
- /**
26327
- * LA tabella "quale booleano di questo tipo di device conta come ALTO", e il
26328
- * valutatore puro del suo FRONTE.
26329
- *
26330
- * Viveva dentro il builtin virtual-doorbell
26331
- * (`@camstack/system` — `builtins/doorbell/trigger-engine.ts`) e i suoi
26332
- * predicati erano privati al modulo. Il recorder ne ha bisogno per il trigger
26333
- * `RecordingTriggers.sensorDeviceIds`: copiarla avrebbe creato la SECONDA
26334
- * tabella, che diverge alla prima cap aggiunta e il cui sintomo — "il sensore
26335
- * fa suonare il campanello ma non registra" — è esattamente D62. Quindi si
26336
- * SPOSTA qui e il doorbell la ri-esporta.
26337
- *
26338
- * ⚠ NON è `DEVICE_STATE_READERS` (`catalogs/device-state-vocabulary.ts`), e le
26339
- * due non vanno unificate: quella risponde a "qual è la PAROLA di stato per una
26340
- * regola" (e include `presence`, `cover`, `alarm-panel`), questa a "qual è il
26341
- * booleano il cui FRONTE conta". Vocabolari deliberatamente diversi.
26342
- */
26343
- /**
26344
- * Known binary / switch source caps → the boolean slice field whose
26345
- * false→true rise counts as ACTIVE. Every entry is "fire on active".
26346
- * Sensors whose "active" reading is not a plain boolean (presence's string
26347
- * state, connectivity's connected flag) are deliberately excluded — a
26348
- * reconnect is not a doorbell press, and it is not a recording either.
26349
- */
26350
- var SOURCE_CAP_ACTIVE_FIELD = {
26351
- contact: "entryOpen",
26352
- binary: "on",
26353
- switch: "on",
26354
- motion: "detected",
26355
- flood: "flooded",
26356
- gas: "detected",
26357
- smoke: "detected",
26358
- "carbon-monoxide": "detected",
26359
- vibration: "detected",
26360
- tamper: "tampered"
26361
- };
26362
26395
  object({
26363
26396
  /** Ms epoch of the last press. null = never observed since this provider started. */
26364
26397
  lastPressedAt: number().nullable(),
@@ -32330,12 +32363,21 @@ var RecordingStorageUsageSchema = object({
32330
32363
  */
32331
32364
  devicesRead: _enum(["archive", "unavailable"]).optional(),
32332
32365
  /**
32366
+ * Is the `archive` answer WHOLE (D674): the hour ledger loaded without
32367
+ * hitting its row cap, and at least one location resolved? Only then may a
32368
+ * camera ABSENT from `devices[]` be read as "no footage" — and only then is a
32369
+ * row's `oldestMs` the archive's oldest rather than the oldest of a fraction.
32370
+ * OPTIONAL: a recorder predating D674 omits it, and a consumer must read the
32371
+ * absence as `false`. A retention floor is a delete; it never guesses.
32372
+ */
32373
+ complete: boolean().optional(),
32374
+ /**
32333
32375
  * Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
32334
- * of the payload without it: the hub serves this method through a BAKED
32335
- * router, so a hub whose framework train predates a change to this array
32336
- * strips it out of an answer a newer recorder happily produced. A UI that
32337
- * dereferences it unconditionally crashes the whole Storage page over a
32338
- * missing disk bar.
32376
+ * of the payload without it: a recorder that could not build it omits it. A
32377
+ * UI that dereferences it unconditionally crashes the whole Storage page over
32378
+ * a missing disk bar. (The hub's cap routers pass output through unvalidated
32379
+ * since 2026-07-11 — `cap-router-builder.ts` — so a newer recorder's fields
32380
+ * are not stripped by an older hub.)
32339
32381
  */
32340
32382
  locations: array(RecordingLocationUsageSchema).optional()
32341
32383
  });
@@ -35106,7 +35148,12 @@ Object.freeze({
35106
35148
  number: {
35107
35149
  kind: "fixed",
35108
35150
  result: ["number", "null"]
35109
- }
35151
+ },
35152
+ rose: {
35153
+ kind: "fixed",
35154
+ result: ["number", "null"]
35155
+ },
35156
+ count: NUMBER
35110
35157
  });
35111
35158
  `${COMPOSED_DEVICE_STABLE_ID_PREFIX}`;
35112
35159
  /**
@@ -46596,7 +46643,7 @@ var AdminUIAddon = class extends BaseAddon {
46596
46643
  capability: adminUiCapability,
46597
46644
  provider: {
46598
46645
  getStaticDir: async () => ({ staticDir: resolveAdminUiDistDir() }),
46599
- getVersion: async () => ({ version: "1.2.282" })
46646
+ getVersion: async () => ({ version: "1.2.284" })
46600
46647
  }
46601
46648
  }];
46602
46649
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-admin-ui",
3
- "version": "1.2.282",
3
+ "version": "1.2.284",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Admin UI — Vite frontend build and server-side addon",
@@ -1 +0,0 @@
1
- import{yt as e}from"./player-overlays-CDP3-DZr.js";var t=e(`circle-slash`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`9`,x2:`15`,y1:`15`,y2:`9`,key:`1dfufj`}]]);export{t};