@camstack/addon-osd-manager 0.1.173 → 0.1.175

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 (18) hide show
  1. package/dist/{MotionZonesSettings-Defmk1_y.mjs → MotionZonesSettings-CLHuPFP2.mjs} +2 -2
  2. package/dist/{PrivacyMaskSettings-BvoZqvLa.mjs → PrivacyMaskSettings-msEoZGV4.mjs} +4 -4
  3. package/dist/{SceneMonitorEditor-BpGYI0fJ.mjs → SceneMonitorEditor-CDMTyPOI.mjs} +3 -3
  4. package/dist/_stub.js +10 -10
  5. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-CDfzrXpG.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_osd_manager_page-BOWRi4wx.mjs} +4 -4
  6. package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-C2RynBx0.mjs +26 -0
  7. package/dist/{hostInit-kFlrSCmy.mjs → hostInit-B0oLGxE3.mjs} +3 -3
  8. package/dist/index.js +213 -65
  9. package/dist/index.mjs +213 -65
  10. package/dist/{player-overlays-DyRrf3TB.mjs → player-overlays-Ci5aBEqV.mjs} +1 -1
  11. package/dist/remoteEntry.js +1 -1
  12. package/dist/{responsive-DN_ft4Sw.mjs → responsive-D83cn_B2.mjs} +1 -1
  13. package/dist/{scene-monitor-copy-oZ4tEpuB.mjs → scene-monitor-copy-T37cA01e.mjs} +1 -1
  14. package/dist/{square-DDimePix.mjs → square-BBks-LOA.mjs} +1 -1
  15. package/dist/{trash-2-BA-4lwFu.mjs → trash-2-B4ohh3xr.mjs} +1 -1
  16. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-BOqFnQMX.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_osd_manager_page__remoteEntry_js-C0g1t6Aa.mjs} +1 -1
  17. package/package.json +1 -1
  18. package/dist/_virtual_mf___mfe_internal__addon_osd_manager_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BS5tM9oN.mjs +0 -26
package/dist/index.js CHANGED
@@ -10566,57 +10566,15 @@ var ClipSearchStrictnessSchema = _enum([
10566
10566
  "balanced",
10567
10567
  "strict"
10568
10568
  ]);
10569
- new Set([
10570
- {
10571
- id: "person",
10572
- name: "Person"
10573
- },
10574
- {
10575
- id: "vehicle",
10576
- name: "Vehicle"
10577
- },
10578
- {
10579
- id: "animal",
10580
- name: "Animal"
10581
- },
10582
- {
10583
- id: "package",
10584
- name: "Package"
10585
- }
10586
- ].map((l) => l.id));
10587
- var COCO_TO_MACRO = {
10588
- mapping: {
10589
- person: "person",
10590
- bicycle: "vehicle",
10591
- car: "vehicle",
10592
- motorcycle: "vehicle",
10593
- airplane: "vehicle",
10594
- bus: "vehicle",
10595
- train: "vehicle",
10596
- truck: "vehicle",
10597
- boat: "vehicle",
10598
- bird: "animal",
10599
- cat: "animal",
10600
- dog: "animal",
10601
- horse: "animal",
10602
- sheep: "animal",
10603
- cow: "animal",
10604
- elephant: "animal",
10605
- bear: "animal",
10606
- zebra: "animal",
10607
- giraffe: "animal",
10608
- suitcase: "package",
10609
- backpack: "package",
10610
- handbag: "package"
10611
- },
10612
- preserveOriginal: false
10613
- };
10614
- /** Steps a root detector may declare it fills. */
10615
- var FILLABLE_STEP_IDS = [
10569
+ /** Steps whose effect a root label can BE. */
10570
+ var LABEL_SUPPLY_STEP_IDS = [
10616
10571
  "animal-classifier",
10617
10572
  "vehicle-classifier",
10618
10573
  "package-detection"
10619
10574
  ];
10575
+ /** Steps whose box a root detection can BE. */
10576
+ var CROP_SUPPLY_STEP_IDS = ["plate-detection", "face-detection"];
10577
+ [...LABEL_SUPPLY_STEP_IDS, ...CROP_SUPPLY_STEP_IDS];
10620
10578
  var MODEL_FORMATS = [
10621
10579
  "onnx",
10622
10580
  "coreml",
@@ -10749,12 +10707,35 @@ var ModelLicenseSchema = preprocess((value) => typeof value === "string" ? { wei
10749
10707
  /** True when the weights or their data forbid commercial use. */
10750
10708
  nonCommercial: boolean().optional()
10751
10709
  }));
10752
- /** One `fillsClassifierEffects` entry — see `ModelCatalogEntry.fillsClassifierEffects`. */
10753
- var FillsClassifierEffectSchema = object({
10754
- stepId: _enum(FILLABLE_STEP_IDS),
10710
+ /**
10711
+ * One step a ROOT detector can supply from its own output (D730) — see
10712
+ * `ModelCatalogEntry.suppliesSteps`.
10713
+ *
10714
+ * - `label`: the root's raw class IS the step's answer. `labelToEffect` maps
10715
+ * the root's label to the step's vocabulary; `uncovered` is the vocabulary
10716
+ * the root cannot produce (shown as unavailable, never a blocker).
10717
+ * - `crop`: the root draws the box the step would have found (`license_plate`
10718
+ * for plate-detection, `face` for face-detection). The box becomes a detail
10719
+ * child of the `parentMacro` detection that contains it — never a track.
10720
+ */
10721
+ var RootStepSupplySchema = discriminatedUnion("kind", [object({
10722
+ kind: literal("label"),
10723
+ stepId: _enum(LABEL_SUPPLY_STEP_IDS),
10755
10724
  labelToEffect: record(string(), string()),
10756
10725
  uncovered: array(string()).readonly()
10757
- });
10726
+ }), object({
10727
+ kind: literal("crop"),
10728
+ stepId: _enum(CROP_SUPPLY_STEP_IDS),
10729
+ rootLabels: array(string()).readonly(),
10730
+ parentMacro: _enum(["vehicle", "person"]),
10731
+ childClass: _enum(["plate", "face"]),
10732
+ /**
10733
+ * The root's smaller input side, stamped on read by `rootSuppliesOf` from
10734
+ * the model entry — what a step's `minRootInputPx` gate judges. Never
10735
+ * stored by an import.
10736
+ */
10737
+ rootInputPx: number().int().positive().optional()
10738
+ })]);
10758
10739
  var ModelCatalogEntrySchema = object({
10759
10740
  id: string(),
10760
10741
  name: string(),
@@ -10881,15 +10862,15 @@ var ModelCatalogEntrySchema = object({
10881
10862
  */
10882
10863
  classMap: DetectionCatalogClassMapSchema.optional(),
10883
10864
  /**
10884
- * The pipeline steps this ROOT detector already does the work of (D715):
10885
- * its labels name the effect the step exists to produce (`deer` for
10886
- * `animal-classifier`, `package` for `package-detection`). Derived from the
10887
- * labelmap by `deriveClassifierFills`, never hand-written; a COCO model
10888
- * declares none. Whether a declaration is honoured is the step's own
10889
- * `labelLink` policy (`resolveLabelLink`). `labelToEffect` values are in
10890
- * `FILLABLE_STEP_VOCABULARIES` (guard `check-label-link-vocabulary`).
10865
+ * The pipeline steps this ROOT detector can supply from its own output
10866
+ * (D730): its labels name a step's effect (`deer` for `animal-classifier`)
10867
+ * or draw a step's box (`license_plate` for `plate-detection`). Computed at
10868
+ * import from THIS model's labelmap by `deriveRootSupplies`, never written
10869
+ * by hand and never assumed per family; a row without it is derived on read
10870
+ * (`rootSuppliesOf`). Whether a camera uses it is the step's own
10871
+ * `useRootModel` flag (`resolveRootSupply`).
10891
10872
  */
10892
- fillsClassifierEffects: array(FillsClassifierEffectSchema).readonly().optional(),
10873
+ suppliesSteps: array(RootStepSupplySchema).readonly().optional(),
10893
10874
  /**
10894
10875
  * The model's CLIP feature-space contract (text encoder, dimension, vector
10895
10876
  * index, token window, search floor) — see `clip-model.ts`. Present ONLY on a
@@ -20477,6 +20458,51 @@ var notificationOutputCapability = {
20477
20458
  })
20478
20459
  }
20479
20460
  };
20461
+ new Set([
20462
+ {
20463
+ id: "person",
20464
+ name: "Person"
20465
+ },
20466
+ {
20467
+ id: "vehicle",
20468
+ name: "Vehicle"
20469
+ },
20470
+ {
20471
+ id: "animal",
20472
+ name: "Animal"
20473
+ },
20474
+ {
20475
+ id: "package",
20476
+ name: "Package"
20477
+ }
20478
+ ].map((l) => l.id));
20479
+ var COCO_TO_MACRO = {
20480
+ mapping: {
20481
+ person: "person",
20482
+ bicycle: "vehicle",
20483
+ car: "vehicle",
20484
+ motorcycle: "vehicle",
20485
+ airplane: "vehicle",
20486
+ bus: "vehicle",
20487
+ train: "vehicle",
20488
+ truck: "vehicle",
20489
+ boat: "vehicle",
20490
+ bird: "animal",
20491
+ cat: "animal",
20492
+ dog: "animal",
20493
+ horse: "animal",
20494
+ sheep: "animal",
20495
+ cow: "animal",
20496
+ elephant: "animal",
20497
+ bear: "animal",
20498
+ zebra: "animal",
20499
+ giraffe: "animal",
20500
+ suitcase: "package",
20501
+ backpack: "package",
20502
+ handbag: "package"
20503
+ },
20504
+ preserveOriginal: false
20505
+ };
20480
20506
  var AUDIO_MACRO_LABELS = [
20481
20507
  {
20482
20508
  id: "speech",
@@ -21272,6 +21298,8 @@ var NcSystemEventKindSchema = _enum([
21272
21298
  "stream-offline",
21273
21299
  "node-online",
21274
21300
  "node-offline",
21301
+ "node-restarting",
21302
+ "node-updating",
21275
21303
  "node-inference-unavailable",
21276
21304
  "detection-blind",
21277
21305
  "addon-crash-loop",
@@ -22665,6 +22693,14 @@ var NC_CONDITION_CATALOG = [
22665
22693
  value: "node-offline",
22666
22694
  label: "Node offline"
22667
22695
  },
22696
+ {
22697
+ value: "node-restarting",
22698
+ label: "Node restarting"
22699
+ },
22700
+ {
22701
+ value: "node-updating",
22702
+ label: "Node updating (restart imminent)"
22703
+ },
22668
22704
  {
22669
22705
  value: "node-inference-unavailable",
22670
22706
  label: "Node has no usable inference device"
@@ -22917,7 +22953,7 @@ var NC_CONDITION_CATALOG = [
22917
22953
  operator: "in",
22918
22954
  appliesTo: ["immediate", "track-end"],
22919
22955
  phase: "P1",
22920
- description: "Only recognised people. Selecting NOBODY means every identity in the face gallery; selecting some narrows to those. Matched on the gallery id, so renaming a person does not break the rule. On Immediate delivery the name must already be known when an event is written — choose Immediate, grouped to wait for it (D692)."
22956
+ description: "Only recognised people. Selecting NOBODY means every identity in the face gallery; selecting some narrows to those. Matched on the gallery id, so renaming a person does not break the rule. On Immediate delivery the name must already be known when an event is written — choose Immediate, grouped to wait for it."
22921
22957
  },
22922
22958
  {
22923
22959
  id: "plates",
@@ -27201,6 +27237,34 @@ var pipelineAnalyticsCapability = {
27201
27237
  }
27202
27238
  };
27203
27239
  /**
27240
+ * A root model's boxes standing in for one crop-kind step's own inference
27241
+ * (D730) — see `runPipeline.suppliedRoot`.
27242
+ */
27243
+ var SuppliedRootOutputSchema = object({
27244
+ stepId: string(),
27245
+ /** The root model that drew the boxes — stamped on the result. */
27246
+ modelId: string(),
27247
+ detections: array(object({
27248
+ /** `[x1, y1, x2, y2]` in the pixels of the call's image. */
27249
+ bbox: tuple([
27250
+ number(),
27251
+ number(),
27252
+ number(),
27253
+ number()
27254
+ ]),
27255
+ score: number(),
27256
+ /**
27257
+ * Five facial landmarks in the same pixels — a face the step's own
27258
+ * detector already re-found inside a root face box (D730), so its
27259
+ * embedder child aligns it exactly as it aligns any detected face.
27260
+ */
27261
+ landmarks: array(object({
27262
+ x: number(),
27263
+ y: number()
27264
+ })).optional()
27265
+ })).min(1)
27266
+ });
27267
+ /**
27204
27268
  * Reference to the frame's retained NATIVE surface + the parent crop's placement
27205
27269
  * within the frame, so the executor can re-cut a leaf child ROI at native
27206
27270
  * resolution on the detail plane. See the `runPipeline` `nativeCropRef` field.
@@ -27331,7 +27395,7 @@ var PipelineModelOptionSchema = object({
27331
27395
  legacy: boolean().optional(),
27332
27396
  provider: ModelProviderIdSchema.optional(),
27333
27397
  defaultConfidence: number().optional(),
27334
- fillsClassifierEffects: array(FillsClassifierEffectSchema).readonly().optional()
27398
+ suppliesSteps: array(RootStepSupplySchema).readonly().optional()
27335
27399
  });
27336
27400
  var ConfigFieldBridge = custom();
27337
27401
  var PipelineAddonSchemaSchema = object({
@@ -27735,7 +27799,16 @@ var pipelineExecutorCapability = {
27735
27799
  * `device-not-servable`), and nothing reaches the camera's live
27736
27800
  * trace stream. Absent ⇒ unchanged behaviour.
27737
27801
  */
27738
- replay: literal(true).optional()
27802
+ replay: literal(true).optional(),
27803
+ /**
27804
+ * Root-supplied detections for the tree's ROOT step (D730). Set by
27805
+ * `runDetailSubtree` when the camera's root model supplies a crop-kind
27806
+ * step (a Frigate+ `license_plate` for `plate-detection`): the step is
27807
+ * NOT inferred, these boxes are its output, and its children (the plate
27808
+ * reader) run on them through their own crop policy. Boxes are in the
27809
+ * PIXELS of the image this call carries. Absent ⇒ the root step runs.
27810
+ */
27811
+ suppliedRoot: SuppliedRootOutputSchema.optional()
27739
27812
  }), PipelineRunResultBridge, { kind: "mutation" }),
27740
27813
  /**
27741
27814
  * Batched run — N raw frames packed into one cap call. The provider
@@ -29048,7 +29121,22 @@ var pipelineRunnerCapability = {
29048
29121
  */
29049
29122
  cropJpeg: string().optional(),
29050
29123
  parent: DetailParentSchema,
29051
- steps: array(string()).optional()
29124
+ steps: array(string()).optional(),
29125
+ /**
29126
+ * The camera's root model already drew this step's boxes (D730): a
29127
+ * `license_plate` inside the parent vehicle. The named step is NOT
29128
+ * inferred — these FRAME-space boxes are its output — and its
29129
+ * requested children (the plate reader) run on them. Absent ⇒ every
29130
+ * requested step infers as before.
29131
+ */
29132
+ supplied: object({
29133
+ stepId: string(),
29134
+ modelId: string(),
29135
+ boxes: array(object({
29136
+ bbox: NativeCropBboxSchema,
29137
+ score: number()
29138
+ })).min(1)
29139
+ }).optional()
29052
29140
  }), object({ details: array(DetailResultSchema) }).nullable(), { kind: "mutation" }),
29053
29141
  /**
29054
29142
  * Run ONE enrichment step against caller-supplied pixels, with NO camera
@@ -37892,6 +37980,27 @@ var ViewerEndpointsSchema = object({
37892
37980
  /** What the ranking currently resolves to (may be empty if nothing is up). */
37893
37981
  resolved: array(string()).readonly()
37894
37982
  });
37983
+ /**
37984
+ * One audience's hub address (see `hub-address.ts`): the operator's stored
37985
+ * override, the address in use, and where it came from.
37986
+ */
37987
+ var HubAddressSnapshotSchema = object({
37988
+ /** The operator's override, or null for automatic. */
37989
+ override: string().nullable(),
37990
+ /** The address in use, or null when nothing qualifies (never loopback). */
37991
+ resolved: string().nullable(),
37992
+ source: _enum([
37993
+ "override",
37994
+ "auto",
37995
+ "none"
37996
+ ])
37997
+ });
37998
+ var HubAddressesSchema = object({
37999
+ /** "Hub address for agents" — agents' bundle/model pulls, LAN devices. */
38000
+ cluster: HubAddressSnapshotSchema,
38001
+ /** "Public address for sign-in links" — e-mail links, OIDC, WebAuthn, OAuth2. */
38002
+ browser: HubAddressSnapshotSchema
38003
+ });
37895
38004
  var AllowedAddressesSchema = object({
37896
38005
  /**
37897
38006
  * Allowlist of interface addresses operators have explicitly opted
@@ -38024,6 +38133,26 @@ var localNetworkCapability = {
38024
38133
  */
38025
38134
  setViewerEndpoints: method(object({ baseUrls: array(string()).readonly() }), ViewerEndpointsSchema, { kind: "mutation" }),
38026
38135
  /**
38136
+ * The hub's address for each audience — agents (`cluster`) and sign-in
38137
+ * links (`browser`) — as every consumer must read it: the operator's
38138
+ * override when set, else the automatic pick from this cap's palette,
38139
+ * never loopback. The ONE answer to "at which address is this hub
38140
+ * reached?"; there is no environment variable for it.
38141
+ */
38142
+ getHubAddresses: method(_void(), HubAddressesSchema),
38143
+ /**
38144
+ * Set or clear (`baseUrl: null`) one audience's override. Validated: an
38145
+ * http(s) origin with a host, no credentials, no path, never loopback —
38146
+ * an invalid value is refused with the reason, nothing is stored.
38147
+ */
38148
+ setHubAddress: method(object({
38149
+ audience: _enum(["cluster", "browser"]),
38150
+ baseUrl: string().nullable()
38151
+ }), HubAddressesSchema, {
38152
+ kind: "mutation",
38153
+ auth: "admin"
38154
+ }),
38155
+ /**
38027
38156
  * Read the operator's allowlist. Empty = "auto" (no filter). Used
38028
38157
  * by the admin UI's address selector to seed its checkbox state.
38029
38158
  */
@@ -38578,7 +38707,8 @@ var MotionStatusSchema = object({
38578
38707
  * writes this slice (not even a boot seed), and neither does the runner's
38579
38708
  * phase machine: its phase is "a session is attached" for every on-motion
38580
38709
  * session, not motion, and it now has its own `DetectionPhaseTransition`.
38581
- * A provider's `isDetected` answers from the hub's slice.
38710
+ * A provider's `isDetected` and `getStatus` answer from the hub's slice
38711
+ * (`hubMotionNativeProvider`).
38582
38712
  * - **Sensors** (Home Assistant binary sensors, Homematic, Matter, Alexa
38583
38713
  * imports) — the provider pushes both edges itself, from the upstream
38584
38714
  * system's own state change. That is the sensor's own fact.
@@ -49173,6 +49303,12 @@ Object.freeze({
49173
49303
  addonId: null,
49174
49304
  access: "view"
49175
49305
  },
49306
+ "localNetwork.getHubAddresses": {
49307
+ capName: "local-network",
49308
+ capScope: "system",
49309
+ addonId: null,
49310
+ access: "view"
49311
+ },
49176
49312
  "localNetwork.getNotificationEndpoint": {
49177
49313
  capName: "local-network",
49178
49314
  capScope: "system",
@@ -49227,6 +49363,12 @@ Object.freeze({
49227
49363
  addonId: null,
49228
49364
  access: "create"
49229
49365
  },
49366
+ "localNetwork.setHubAddress": {
49367
+ capName: "local-network",
49368
+ capScope: "system",
49369
+ addonId: null,
49370
+ access: "create"
49371
+ },
49230
49372
  "localNetwork.setNotificationEndpoint": {
49231
49373
  capName: "local-network",
49232
49374
  capScope: "system",
@@ -57802,6 +57944,8 @@ new Map(Object.entries({
57802
57944
  "detection-blind": "device-events",
57803
57945
  "node-online": "system",
57804
57946
  "node-offline": "system",
57947
+ "node-restarting": "system",
57948
+ "node-updating": "system",
57805
57949
  "node-inference-unavailable": "system",
57806
57950
  "addon-crash-loop": "system",
57807
57951
  "addon-update-available": "system",
@@ -57879,6 +58023,7 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
57879
58023
  kinds: [
57880
58024
  "node-offline",
57881
58025
  "node-online",
58026
+ "node-restarting",
57882
58027
  "node-inference-unavailable"
57883
58028
  ]
57884
58029
  },
@@ -57900,6 +58045,7 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
57900
58045
  label: "Server & container updates",
57901
58046
  kinds: [
57902
58047
  "server-update-available",
58048
+ "node-updating",
57903
58049
  "server-updated",
57904
58050
  "wrapper-update-available"
57905
58051
  ]
@@ -58127,6 +58273,7 @@ var STATE_SUMMARY_SECTION_VARS = [
58127
58273
  kinds: [
58128
58274
  "node-offline",
58129
58275
  "node-online",
58276
+ "node-restarting",
58130
58277
  "node-inference-unavailable"
58131
58278
  ]
58132
58279
  },
@@ -58148,6 +58295,7 @@ var STATE_SUMMARY_SECTION_VARS = [
58148
58295
  example: "server 1.2.377 → 1.2.378",
58149
58296
  kinds: [
58150
58297
  "server-update-available",
58298
+ "node-updating",
58151
58299
  "server-updated",
58152
58300
  "wrapper-update-available"
58153
58301
  ]
@@ -58180,7 +58328,7 @@ var STATE_SUMMARY_VARS = [
58180
58328
  {
58181
58329
  name: "summarySection",
58182
58330
  label: "Summary: this section",
58183
- description: "The section a per-section summary row is about (D698); on a summary sent as one message, every section it reports, comma-separated.",
58331
+ description: "The section a per-section summary row is about; on a summary sent as one message, every section it reports, comma-separated.",
58184
58332
  example: "Batterie scariche",
58185
58333
  group: "system",
58186
58334
  families: ["rule"],