@camstack/addon-pipeline 1.2.326 → 1.2.328

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 (39) hide show
  1. package/THIRD_PARTY_MODELS.md +49 -43
  2. package/dist/audio-analyzer/index.js +2 -2
  3. package/dist/audio-analyzer/index.mjs +2 -2
  4. package/dist/{default-detection-model-WnGDQAQh.js → default-detection-model-1SadEKsW.js} +120 -61
  5. package/dist/{default-detection-model-Bu4So71h.mjs → default-detection-model-CMeVTcPZ.mjs} +120 -61
  6. package/dist/detection-pipeline/index.js +49 -9
  7. package/dist/detection-pipeline/index.mjs +49 -9
  8. package/dist/{dist-BuU8Y4o1.mjs → dist-Bpub2VcJ.mjs} +584 -396
  9. package/dist/{dist-BTBbIGSC.js → dist-wJO7mXeO.js} +631 -395
  10. package/dist/motion-wasm/index.js +1 -1
  11. package/dist/motion-wasm/index.mjs +1 -1
  12. package/dist/{node-UK2v2ZSw.js → node-BCrqaejt.js} +1 -1
  13. package/dist/{node-inZFYgkm.mjs → node-BjCSgD4M.mjs} +1 -1
  14. package/dist/pipeline-runner/index.js +253 -87
  15. package/dist/pipeline-runner/index.mjs +253 -88
  16. package/dist/{process-memory-DbSOL63T.mjs → process-memory-BaKQ8u2G.mjs} +1 -1
  17. package/dist/{process-memory-BfDlwJc4.js → process-memory-iUJuTpXs.js} +1 -1
  18. package/dist/recorder/index.js +9 -8
  19. package/dist/recorder/index.mjs +9 -8
  20. package/dist/{segment-demux-js-CMj020zz.mjs → segment-demux-js-C5ez9LYG.mjs} +1 -1
  21. package/dist/{segment-demux-js-C1GXgxZ0.js → segment-demux-js-Opx6Hv9G.js} +1 -1
  22. package/dist/session-decode/decode-worker-main.js +13 -21
  23. package/dist/session-decode/decode-worker-main.mjs +13 -21
  24. package/dist/stream-broker/_stub.js +1 -1
  25. package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-qHD9Dl1z.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-B94LgsV0.mjs} +3 -3
  26. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BPWYf4_O.mjs +26 -0
  27. package/dist/stream-broker/demux-worker-child.js +1 -1
  28. package/dist/stream-broker/demux-worker-child.mjs +1 -1
  29. package/dist/stream-broker/{hostInit-BgWrKrQn.mjs → hostInit-xOx7AvgW.mjs} +3 -3
  30. package/dist/stream-broker/index.js +6 -5
  31. package/dist/stream-broker/index.mjs +6 -5
  32. package/dist/stream-broker/remoteEntry.js +1 -1
  33. package/package.json +1 -1
  34. package/python/inference_pool.py +38 -121
  35. package/python/postprocessors/scrfd.py +2 -0
  36. package/python/postprocessors/test_bird_edgetpu.py +124 -0
  37. package/python/postprocessors/testdata/bird_classifier_int8_outputs.json +1 -0
  38. package/python/test_inference_pool_static_batch.py +2 -4
  39. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-NkeMtp-v.mjs +0 -26
@@ -12600,6 +12600,480 @@ var ClipSearchStrictnessSchema = _enum([
12600
12600
  "balanced",
12601
12601
  "strict"
12602
12602
  ]);
12603
+ var COCO_80_LABELS = [
12604
+ {
12605
+ id: "person",
12606
+ name: "Person"
12607
+ },
12608
+ {
12609
+ id: "bicycle",
12610
+ name: "Bicycle"
12611
+ },
12612
+ {
12613
+ id: "car",
12614
+ name: "Car"
12615
+ },
12616
+ {
12617
+ id: "motorcycle",
12618
+ name: "Motorcycle"
12619
+ },
12620
+ {
12621
+ id: "airplane",
12622
+ name: "Airplane"
12623
+ },
12624
+ {
12625
+ id: "bus",
12626
+ name: "Bus"
12627
+ },
12628
+ {
12629
+ id: "train",
12630
+ name: "Train"
12631
+ },
12632
+ {
12633
+ id: "truck",
12634
+ name: "Truck"
12635
+ },
12636
+ {
12637
+ id: "boat",
12638
+ name: "Boat"
12639
+ },
12640
+ {
12641
+ id: "traffic light",
12642
+ name: "Traffic Light"
12643
+ },
12644
+ {
12645
+ id: "fire hydrant",
12646
+ name: "Fire Hydrant"
12647
+ },
12648
+ {
12649
+ id: "stop sign",
12650
+ name: "Stop Sign"
12651
+ },
12652
+ {
12653
+ id: "parking meter",
12654
+ name: "Parking Meter"
12655
+ },
12656
+ {
12657
+ id: "bench",
12658
+ name: "Bench"
12659
+ },
12660
+ {
12661
+ id: "bird",
12662
+ name: "Bird"
12663
+ },
12664
+ {
12665
+ id: "cat",
12666
+ name: "Cat"
12667
+ },
12668
+ {
12669
+ id: "dog",
12670
+ name: "Dog"
12671
+ },
12672
+ {
12673
+ id: "horse",
12674
+ name: "Horse"
12675
+ },
12676
+ {
12677
+ id: "sheep",
12678
+ name: "Sheep"
12679
+ },
12680
+ {
12681
+ id: "cow",
12682
+ name: "Cow"
12683
+ },
12684
+ {
12685
+ id: "elephant",
12686
+ name: "Elephant"
12687
+ },
12688
+ {
12689
+ id: "bear",
12690
+ name: "Bear"
12691
+ },
12692
+ {
12693
+ id: "zebra",
12694
+ name: "Zebra"
12695
+ },
12696
+ {
12697
+ id: "giraffe",
12698
+ name: "Giraffe"
12699
+ },
12700
+ {
12701
+ id: "backpack",
12702
+ name: "Backpack"
12703
+ },
12704
+ {
12705
+ id: "umbrella",
12706
+ name: "Umbrella"
12707
+ },
12708
+ {
12709
+ id: "handbag",
12710
+ name: "Handbag"
12711
+ },
12712
+ {
12713
+ id: "tie",
12714
+ name: "Tie"
12715
+ },
12716
+ {
12717
+ id: "suitcase",
12718
+ name: "Suitcase"
12719
+ },
12720
+ {
12721
+ id: "frisbee",
12722
+ name: "Frisbee"
12723
+ },
12724
+ {
12725
+ id: "skis",
12726
+ name: "Skis"
12727
+ },
12728
+ {
12729
+ id: "snowboard",
12730
+ name: "Snowboard"
12731
+ },
12732
+ {
12733
+ id: "sports ball",
12734
+ name: "Sports Ball"
12735
+ },
12736
+ {
12737
+ id: "kite",
12738
+ name: "Kite"
12739
+ },
12740
+ {
12741
+ id: "baseball bat",
12742
+ name: "Baseball Bat"
12743
+ },
12744
+ {
12745
+ id: "baseball glove",
12746
+ name: "Baseball Glove"
12747
+ },
12748
+ {
12749
+ id: "skateboard",
12750
+ name: "Skateboard"
12751
+ },
12752
+ {
12753
+ id: "surfboard",
12754
+ name: "Surfboard"
12755
+ },
12756
+ {
12757
+ id: "tennis racket",
12758
+ name: "Tennis Racket"
12759
+ },
12760
+ {
12761
+ id: "bottle",
12762
+ name: "Bottle"
12763
+ },
12764
+ {
12765
+ id: "wine glass",
12766
+ name: "Wine Glass"
12767
+ },
12768
+ {
12769
+ id: "cup",
12770
+ name: "Cup"
12771
+ },
12772
+ {
12773
+ id: "fork",
12774
+ name: "Fork"
12775
+ },
12776
+ {
12777
+ id: "knife",
12778
+ name: "Knife"
12779
+ },
12780
+ {
12781
+ id: "spoon",
12782
+ name: "Spoon"
12783
+ },
12784
+ {
12785
+ id: "bowl",
12786
+ name: "Bowl"
12787
+ },
12788
+ {
12789
+ id: "banana",
12790
+ name: "Banana"
12791
+ },
12792
+ {
12793
+ id: "apple",
12794
+ name: "Apple"
12795
+ },
12796
+ {
12797
+ id: "sandwich",
12798
+ name: "Sandwich"
12799
+ },
12800
+ {
12801
+ id: "orange",
12802
+ name: "Orange"
12803
+ },
12804
+ {
12805
+ id: "broccoli",
12806
+ name: "Broccoli"
12807
+ },
12808
+ {
12809
+ id: "carrot",
12810
+ name: "Carrot"
12811
+ },
12812
+ {
12813
+ id: "hot dog",
12814
+ name: "Hot Dog"
12815
+ },
12816
+ {
12817
+ id: "pizza",
12818
+ name: "Pizza"
12819
+ },
12820
+ {
12821
+ id: "donut",
12822
+ name: "Donut"
12823
+ },
12824
+ {
12825
+ id: "cake",
12826
+ name: "Cake"
12827
+ },
12828
+ {
12829
+ id: "chair",
12830
+ name: "Chair"
12831
+ },
12832
+ {
12833
+ id: "couch",
12834
+ name: "Couch"
12835
+ },
12836
+ {
12837
+ id: "potted plant",
12838
+ name: "Potted Plant"
12839
+ },
12840
+ {
12841
+ id: "bed",
12842
+ name: "Bed"
12843
+ },
12844
+ {
12845
+ id: "dining table",
12846
+ name: "Dining Table"
12847
+ },
12848
+ {
12849
+ id: "toilet",
12850
+ name: "Toilet"
12851
+ },
12852
+ {
12853
+ id: "tv",
12854
+ name: "TV"
12855
+ },
12856
+ {
12857
+ id: "laptop",
12858
+ name: "Laptop"
12859
+ },
12860
+ {
12861
+ id: "mouse",
12862
+ name: "Mouse"
12863
+ },
12864
+ {
12865
+ id: "remote",
12866
+ name: "Remote"
12867
+ },
12868
+ {
12869
+ id: "keyboard",
12870
+ name: "Keyboard"
12871
+ },
12872
+ {
12873
+ id: "cell phone",
12874
+ name: "Cell Phone"
12875
+ },
12876
+ {
12877
+ id: "microwave",
12878
+ name: "Microwave"
12879
+ },
12880
+ {
12881
+ id: "oven",
12882
+ name: "Oven"
12883
+ },
12884
+ {
12885
+ id: "toaster",
12886
+ name: "Toaster"
12887
+ },
12888
+ {
12889
+ id: "sink",
12890
+ name: "Sink"
12891
+ },
12892
+ {
12893
+ id: "refrigerator",
12894
+ name: "Refrigerator"
12895
+ },
12896
+ {
12897
+ id: "book",
12898
+ name: "Book"
12899
+ },
12900
+ {
12901
+ id: "clock",
12902
+ name: "Clock"
12903
+ },
12904
+ {
12905
+ id: "vase",
12906
+ name: "Vase"
12907
+ },
12908
+ {
12909
+ id: "scissors",
12910
+ name: "Scissors"
12911
+ },
12912
+ {
12913
+ id: "teddy bear",
12914
+ name: "Teddy Bear"
12915
+ },
12916
+ {
12917
+ id: "hair drier",
12918
+ name: "Hair Drier"
12919
+ },
12920
+ {
12921
+ id: "toothbrush",
12922
+ name: "Toothbrush"
12923
+ }
12924
+ ];
12925
+ new Set([
12926
+ {
12927
+ id: "person",
12928
+ name: "Person"
12929
+ },
12930
+ {
12931
+ id: "vehicle",
12932
+ name: "Vehicle"
12933
+ },
12934
+ {
12935
+ id: "animal",
12936
+ name: "Animal"
12937
+ },
12938
+ {
12939
+ id: "package",
12940
+ name: "Package"
12941
+ }
12942
+ ].map((l) => l.id));
12943
+ var COCO_TO_MACRO = {
12944
+ mapping: {
12945
+ person: "person",
12946
+ bicycle: "vehicle",
12947
+ car: "vehicle",
12948
+ motorcycle: "vehicle",
12949
+ airplane: "vehicle",
12950
+ bus: "vehicle",
12951
+ train: "vehicle",
12952
+ truck: "vehicle",
12953
+ boat: "vehicle",
12954
+ bird: "animal",
12955
+ cat: "animal",
12956
+ dog: "animal",
12957
+ horse: "animal",
12958
+ sheep: "animal",
12959
+ cow: "animal",
12960
+ elephant: "animal",
12961
+ bear: "animal",
12962
+ zebra: "animal",
12963
+ giraffe: "animal",
12964
+ suitcase: "package",
12965
+ backpack: "package",
12966
+ handbag: "package"
12967
+ },
12968
+ preserveOriginal: false
12969
+ };
12970
+ /** Steps a root detector may declare it fills. */
12971
+ var FILLABLE_STEP_IDS = [
12972
+ "animal-classifier",
12973
+ "vehicle-classifier",
12974
+ "package-detection"
12975
+ ];
12976
+ /** Narrow a step id to a fillable one — type guard, not a cast. */
12977
+ function isFillableStepId(value) {
12978
+ return FILLABLE_STEP_IDS.some((id) => id === value);
12979
+ }
12980
+ /**
12981
+ * The EFFECT vocabulary of each fillable step: exactly the strings the step
12982
+ * itself emits, in its own spelling. A linked label is one of these and nothing
12983
+ * else, so a tier-1 value means the same thing whichever writer produced it.
12984
+ *
12985
+ * - `animal-classifier`: the PRIMARY model's `-labels.json` (Open Images V7,
12986
+ * 8 classes) — also the species allow-list the step offers.
12987
+ * - `vehicle-classifier`: `vehicle-type-v1-labels.json`, capitalised as the
12988
+ * model emits them (the classifier writes `winner.class` verbatim).
12989
+ * - `package-detection`: its one output class.
12990
+ *
12991
+ * `scripts/check-label-link-vocabulary.ts` fails the build if a model entry's
12992
+ * `labelToEffect` names anything outside this table.
12993
+ */
12994
+ var FILLABLE_STEP_VOCABULARIES = {
12995
+ "animal-classifier": [
12996
+ "bird",
12997
+ "cat",
12998
+ "cow",
12999
+ "deer",
13000
+ "dog",
13001
+ "horse",
13002
+ "sheep",
13003
+ "squirrel"
13004
+ ],
13005
+ "vehicle-classifier": [
13006
+ "Ambulance",
13007
+ "Bicycle",
13008
+ "Bus",
13009
+ "Car",
13010
+ "Motorcycle",
13011
+ "Taxi",
13012
+ "Truck",
13013
+ "Van"
13014
+ ],
13015
+ "package-detection": ["package"]
13016
+ };
13017
+ /** The macro a detection must carry for the step to apply to it. */
13018
+ var FILLABLE_STEP_MACRO = {
13019
+ "animal-classifier": "animal",
13020
+ "vehicle-classifier": "vehicle",
13021
+ "package-detection": "package"
13022
+ };
13023
+ /** The policy values of a step's `labelLink` setting. */
13024
+ var LABEL_LINK_POLICIES = ["run", "skip-when-filled"];
13025
+ /** Absent setting ⇒ this. It changes nothing unless the root model declares a fill. */
13026
+ var DEFAULT_LABEL_LINK_POLICY = "skip-when-filled";
13027
+ /** The step-settings key the policy is stored under (DeviceStepConfig.settings). */
13028
+ var LABEL_LINK_SETTING_KEY = "labelLink";
13029
+ /** `ScoredLabel.stepId` prefix of a label the detector wrote for a step. */
13030
+ var LINKED_LABEL_STEP_PREFIX = "detector-link:";
13031
+ /** `detector-link:<stepId>` — the attribution of a linked label. */
13032
+ function linkedLabelStepId(stepId) {
13033
+ return `${LINKED_LABEL_STEP_PREFIX}${stepId}`;
13034
+ }
13035
+ /** The step a linked label stands in for, or `undefined` for any other attribution. */
13036
+ function linkedStepOf(attributionStepId) {
13037
+ if (attributionStepId === void 0) return void 0;
13038
+ if (!attributionStepId.startsWith("detector-link:")) return void 0;
13039
+ const stepId = attributionStepId.slice(14);
13040
+ return isFillableStepId(stepId) ? stepId : void 0;
13041
+ }
13042
+ /** Read the `labelLink` policy off a step's settings bag; anything else ⇒ the default. */
13043
+ function readLabelLinkPolicy(settings) {
13044
+ const raw = settings?.[LABEL_LINK_SETTING_KEY];
13045
+ return LABEL_LINK_POLICIES.find((p) => p === raw) ?? "skip-when-filled";
13046
+ }
13047
+ /**
13048
+ * Decide the writer of one filled effect for one camera.
13049
+ *
13050
+ * - The step is not running (disabled, or not in the camera's tree): the
13051
+ * detector is the only writer — authoritative, nothing to skip.
13052
+ * - The step runs, the policy is `skip-when-filled` and every coverage gap is
13053
+ * switched off in `enabledClasses`: the detector is authoritative and the
13054
+ * step is skipped.
13055
+ * - Otherwise the step runs and is the writer; the linked label is a score-0
13056
+ * fallback.
13057
+ */
13058
+ function resolveLabelLink(fill, step) {
13059
+ const policy = readLabelLinkPolicy(step?.settings);
13060
+ const rawEnabled = step?.settings?.["enabledClasses"];
13061
+ const allowList = Array.isArray(rawEnabled) && rawEnabled.length > 0 ? rawEnabled.filter((v) => typeof v === "string") : null;
13062
+ const openGaps = fill.uncovered.filter((g) => allowList === null || allowList.includes(g));
13063
+ if (step === void 0 || !step.enabled) return {
13064
+ authoritative: true,
13065
+ skip: false,
13066
+ policy,
13067
+ openGaps
13068
+ };
13069
+ const skip = policy === "skip-when-filled" && openGaps.length === 0;
13070
+ return {
13071
+ authoritative: skip,
13072
+ skip,
13073
+ policy,
13074
+ openGaps
13075
+ };
13076
+ }
12603
13077
  var MODEL_FORMATS = [
12604
13078
  "onnx",
12605
13079
  "coreml",
@@ -12745,6 +13219,12 @@ var ModelLicenseSchema = preprocess((value) => typeof value === "string" ? { wei
12745
13219
  /** True when the weights or their data forbid commercial use. */
12746
13220
  nonCommercial: boolean().optional()
12747
13221
  }));
13222
+ /** One `fillsClassifierEffects` entry — see `ModelCatalogEntry.fillsClassifierEffects`. */
13223
+ var FillsClassifierEffectSchema = object({
13224
+ stepId: _enum(FILLABLE_STEP_IDS),
13225
+ labelToEffect: record(string(), string()),
13226
+ uncovered: array(string()).readonly()
13227
+ });
12748
13228
  var ModelCatalogEntrySchema = object({
12749
13229
  id: string(),
12750
13230
  name: string(),
@@ -12871,6 +13351,16 @@ var ModelCatalogEntrySchema = object({
12871
13351
  */
12872
13352
  classMap: DetectionCatalogClassMapSchema.optional(),
12873
13353
  /**
13354
+ * The pipeline steps this ROOT detector already does the work of (D715):
13355
+ * its labels name the effect the step exists to produce (`deer` for
13356
+ * `animal-classifier`, `package` for `package-detection`). Derived from the
13357
+ * labelmap by `deriveClassifierFills`, never hand-written; a COCO model
13358
+ * declares none. Whether a declaration is honoured is the step's own
13359
+ * `labelLink` policy (`resolveLabelLink`). `labelToEffect` values are in
13360
+ * `FILLABLE_STEP_VOCABULARIES` (guard `check-label-link-vocabulary`).
13361
+ */
13362
+ fillsClassifierEffects: array(FillsClassifierEffectSchema).readonly().optional(),
13363
+ /**
12874
13364
  * The model's CLIP feature-space contract (text encoder, dimension, vector
12875
13365
  * index, token window, search floor) — see `clip-model.ts`. Present ONLY on a
12876
13366
  * CLIP image encoder; its absence is what "not a CLIP model" means to the
@@ -16744,7 +17234,7 @@ var detectionPipelineCapability = {
16744
17234
  * This matters here more than anywhere else in the repo, because every provider
16745
17235
  * that knows a device's host knows its PASSWORD too: `{ host, port, username,
16746
17236
  * password }` sit in one object on Hikvision, Amcrest, Reolink and ONVIF alike,
16747
- * and `http://admin:hunter2@192.168.x.x/` is a URL a browser accepts. The
17237
+ * and `http://admin:hunter2@192.168.60.139/` is a URL a browser accepts. The
16748
17238
  * camera's own page will ask for its own login. That is correct, and pre-
16749
17239
  * filling it is the operator's business, not ours.
16750
17240
  *
@@ -20365,373 +20855,6 @@ method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSche
20365
20855
  kind: "mutation",
20366
20856
  auth: "admin"
20367
20857
  });
20368
- var COCO_80_LABELS = [
20369
- {
20370
- id: "person",
20371
- name: "Person"
20372
- },
20373
- {
20374
- id: "bicycle",
20375
- name: "Bicycle"
20376
- },
20377
- {
20378
- id: "car",
20379
- name: "Car"
20380
- },
20381
- {
20382
- id: "motorcycle",
20383
- name: "Motorcycle"
20384
- },
20385
- {
20386
- id: "airplane",
20387
- name: "Airplane"
20388
- },
20389
- {
20390
- id: "bus",
20391
- name: "Bus"
20392
- },
20393
- {
20394
- id: "train",
20395
- name: "Train"
20396
- },
20397
- {
20398
- id: "truck",
20399
- name: "Truck"
20400
- },
20401
- {
20402
- id: "boat",
20403
- name: "Boat"
20404
- },
20405
- {
20406
- id: "traffic light",
20407
- name: "Traffic Light"
20408
- },
20409
- {
20410
- id: "fire hydrant",
20411
- name: "Fire Hydrant"
20412
- },
20413
- {
20414
- id: "stop sign",
20415
- name: "Stop Sign"
20416
- },
20417
- {
20418
- id: "parking meter",
20419
- name: "Parking Meter"
20420
- },
20421
- {
20422
- id: "bench",
20423
- name: "Bench"
20424
- },
20425
- {
20426
- id: "bird",
20427
- name: "Bird"
20428
- },
20429
- {
20430
- id: "cat",
20431
- name: "Cat"
20432
- },
20433
- {
20434
- id: "dog",
20435
- name: "Dog"
20436
- },
20437
- {
20438
- id: "horse",
20439
- name: "Horse"
20440
- },
20441
- {
20442
- id: "sheep",
20443
- name: "Sheep"
20444
- },
20445
- {
20446
- id: "cow",
20447
- name: "Cow"
20448
- },
20449
- {
20450
- id: "elephant",
20451
- name: "Elephant"
20452
- },
20453
- {
20454
- id: "bear",
20455
- name: "Bear"
20456
- },
20457
- {
20458
- id: "zebra",
20459
- name: "Zebra"
20460
- },
20461
- {
20462
- id: "giraffe",
20463
- name: "Giraffe"
20464
- },
20465
- {
20466
- id: "backpack",
20467
- name: "Backpack"
20468
- },
20469
- {
20470
- id: "umbrella",
20471
- name: "Umbrella"
20472
- },
20473
- {
20474
- id: "handbag",
20475
- name: "Handbag"
20476
- },
20477
- {
20478
- id: "tie",
20479
- name: "Tie"
20480
- },
20481
- {
20482
- id: "suitcase",
20483
- name: "Suitcase"
20484
- },
20485
- {
20486
- id: "frisbee",
20487
- name: "Frisbee"
20488
- },
20489
- {
20490
- id: "skis",
20491
- name: "Skis"
20492
- },
20493
- {
20494
- id: "snowboard",
20495
- name: "Snowboard"
20496
- },
20497
- {
20498
- id: "sports ball",
20499
- name: "Sports Ball"
20500
- },
20501
- {
20502
- id: "kite",
20503
- name: "Kite"
20504
- },
20505
- {
20506
- id: "baseball bat",
20507
- name: "Baseball Bat"
20508
- },
20509
- {
20510
- id: "baseball glove",
20511
- name: "Baseball Glove"
20512
- },
20513
- {
20514
- id: "skateboard",
20515
- name: "Skateboard"
20516
- },
20517
- {
20518
- id: "surfboard",
20519
- name: "Surfboard"
20520
- },
20521
- {
20522
- id: "tennis racket",
20523
- name: "Tennis Racket"
20524
- },
20525
- {
20526
- id: "bottle",
20527
- name: "Bottle"
20528
- },
20529
- {
20530
- id: "wine glass",
20531
- name: "Wine Glass"
20532
- },
20533
- {
20534
- id: "cup",
20535
- name: "Cup"
20536
- },
20537
- {
20538
- id: "fork",
20539
- name: "Fork"
20540
- },
20541
- {
20542
- id: "knife",
20543
- name: "Knife"
20544
- },
20545
- {
20546
- id: "spoon",
20547
- name: "Spoon"
20548
- },
20549
- {
20550
- id: "bowl",
20551
- name: "Bowl"
20552
- },
20553
- {
20554
- id: "banana",
20555
- name: "Banana"
20556
- },
20557
- {
20558
- id: "apple",
20559
- name: "Apple"
20560
- },
20561
- {
20562
- id: "sandwich",
20563
- name: "Sandwich"
20564
- },
20565
- {
20566
- id: "orange",
20567
- name: "Orange"
20568
- },
20569
- {
20570
- id: "broccoli",
20571
- name: "Broccoli"
20572
- },
20573
- {
20574
- id: "carrot",
20575
- name: "Carrot"
20576
- },
20577
- {
20578
- id: "hot dog",
20579
- name: "Hot Dog"
20580
- },
20581
- {
20582
- id: "pizza",
20583
- name: "Pizza"
20584
- },
20585
- {
20586
- id: "donut",
20587
- name: "Donut"
20588
- },
20589
- {
20590
- id: "cake",
20591
- name: "Cake"
20592
- },
20593
- {
20594
- id: "chair",
20595
- name: "Chair"
20596
- },
20597
- {
20598
- id: "couch",
20599
- name: "Couch"
20600
- },
20601
- {
20602
- id: "potted plant",
20603
- name: "Potted Plant"
20604
- },
20605
- {
20606
- id: "bed",
20607
- name: "Bed"
20608
- },
20609
- {
20610
- id: "dining table",
20611
- name: "Dining Table"
20612
- },
20613
- {
20614
- id: "toilet",
20615
- name: "Toilet"
20616
- },
20617
- {
20618
- id: "tv",
20619
- name: "TV"
20620
- },
20621
- {
20622
- id: "laptop",
20623
- name: "Laptop"
20624
- },
20625
- {
20626
- id: "mouse",
20627
- name: "Mouse"
20628
- },
20629
- {
20630
- id: "remote",
20631
- name: "Remote"
20632
- },
20633
- {
20634
- id: "keyboard",
20635
- name: "Keyboard"
20636
- },
20637
- {
20638
- id: "cell phone",
20639
- name: "Cell Phone"
20640
- },
20641
- {
20642
- id: "microwave",
20643
- name: "Microwave"
20644
- },
20645
- {
20646
- id: "oven",
20647
- name: "Oven"
20648
- },
20649
- {
20650
- id: "toaster",
20651
- name: "Toaster"
20652
- },
20653
- {
20654
- id: "sink",
20655
- name: "Sink"
20656
- },
20657
- {
20658
- id: "refrigerator",
20659
- name: "Refrigerator"
20660
- },
20661
- {
20662
- id: "book",
20663
- name: "Book"
20664
- },
20665
- {
20666
- id: "clock",
20667
- name: "Clock"
20668
- },
20669
- {
20670
- id: "vase",
20671
- name: "Vase"
20672
- },
20673
- {
20674
- id: "scissors",
20675
- name: "Scissors"
20676
- },
20677
- {
20678
- id: "teddy bear",
20679
- name: "Teddy Bear"
20680
- },
20681
- {
20682
- id: "hair drier",
20683
- name: "Hair Drier"
20684
- },
20685
- {
20686
- id: "toothbrush",
20687
- name: "Toothbrush"
20688
- }
20689
- ];
20690
- new Set([
20691
- {
20692
- id: "person",
20693
- name: "Person"
20694
- },
20695
- {
20696
- id: "vehicle",
20697
- name: "Vehicle"
20698
- },
20699
- {
20700
- id: "animal",
20701
- name: "Animal"
20702
- },
20703
- {
20704
- id: "package",
20705
- name: "Package"
20706
- }
20707
- ].map((l) => l.id));
20708
- var COCO_TO_MACRO = {
20709
- mapping: {
20710
- person: "person",
20711
- bicycle: "vehicle",
20712
- car: "vehicle",
20713
- motorcycle: "vehicle",
20714
- airplane: "vehicle",
20715
- bus: "vehicle",
20716
- train: "vehicle",
20717
- truck: "vehicle",
20718
- boat: "vehicle",
20719
- bird: "animal",
20720
- cat: "animal",
20721
- dog: "animal",
20722
- horse: "animal",
20723
- sheep: "animal",
20724
- cow: "animal",
20725
- elephant: "animal",
20726
- bear: "animal",
20727
- zebra: "animal",
20728
- giraffe: "animal",
20729
- suitcase: "package",
20730
- backpack: "package",
20731
- handbag: "package"
20732
- },
20733
- preserveOriginal: false
20734
- };
20735
20858
  var AUDIO_MACRO_LABELS = [
20736
20859
  {
20737
20860
  id: "speech",
@@ -22591,8 +22714,9 @@ var NcRuleSchema = NcRuleInputSchema.extend({
22591
22714
  disabledTargetIds: array(string()).default([])
22592
22715
  });
22593
22716
  /**
22594
- * The state-summary SECTIONS (D647 / D698): the D637 kind groups that report a
22595
- * still-true state. `backups-exports` and `alarm` are not sections — a completed
22717
+ * The state-summary SECTIONS (D647 / D698 / D708): the D637 kind groups that
22718
+ * report a still-true state. `addons` is the crash-looped addons only and
22719
+ * `addon-updates` the addons that are behind (D708 split them). `backups-exports` and `alarm` are not sections — a completed
22596
22720
  * job is not an open state, and the alarm stays instant.
22597
22721
  */
22598
22722
  var NcStateSummarySectionIdSchema = _enum([
@@ -22604,6 +22728,7 @@ var NcStateSummarySectionIdSchema = _enum([
22604
22728
  "detection-blind",
22605
22729
  "nodes",
22606
22730
  "addons",
22731
+ "addon-updates",
22607
22732
  "updates"
22608
22733
  ]);
22609
22734
  /** One section of a previewed state summary. `unavailable` = its state could not be read. */
@@ -23084,7 +23209,19 @@ var NcAlarmModeDelaysListSchema = array(object({
23084
23209
  * When this mode may be armed. Absent / null = always allowed (same as a
23085
23210
  * rule with no `schedule`). Evaluated with {@link isScheduleActive}.
23086
23211
  */
23087
- schedule: NcScheduleSchema.optional()
23212
+ schedule: NcScheduleSchema.optional(),
23213
+ /**
23214
+ * D706: while this mode's ENTRY DELAY runs, do the alarm rules' own pushes go out (as an
23215
+ * intrusion naming the locations)? Absent = false — the entry-delay notification is the
23216
+ * only one, and the matches ride the triggered notification's mosaic (D705).
23217
+ */
23218
+ notifyDuringEntryDelay: boolean().optional(),
23219
+ /**
23220
+ * D706: notify "watched again" when a sensor this arm bypassed closes and opens again.
23221
+ * Absent = false (logged, not sent). Even when true it is not sent when that same sensor
23222
+ * is the one that starts the entry delay — the entry-delay notification already names it.
23223
+ */
23224
+ notifySensorRewatched: boolean().optional()
23088
23225
  })).max(8).refine(uniqueModes, { message: "modeDelays: at most one entry per arm mode" });
23089
23226
  var NcAlarmModeDelaysEditListSchema = array(object({
23090
23227
  mode: AlarmArmModeSchema,
@@ -23093,7 +23230,11 @@ var NcAlarmModeDelaysEditListSchema = array(object({
23093
23230
  triggeredDurationSec: NcAlarmTriggeredSecSchema.nullable().optional(),
23094
23231
  postTriggeredAction: NcAlarmPostTriggeredActionSchema.nullable().optional(),
23095
23232
  /** Set a schedule, or `null` to clear (mode always allowed again). */
23096
- schedule: NcScheduleSchema.nullable().optional()
23233
+ schedule: NcScheduleSchema.nullable().optional(),
23234
+ /** D706: set the switch, or `null` to clear it (back to the default, false). */
23235
+ notifyDuringEntryDelay: boolean().nullable().optional(),
23236
+ /** D706: set the switch, or `null` to clear it (back to the default, false). */
23237
+ notifySensorRewatched: boolean().nullable().optional()
23097
23238
  })).max(8).refine(uniqueModes, { message: "modeDelays: at most one edit per arm mode" });
23098
23239
  /** One switch of the alarm table: put ONE device on, or take it off, ONE mode's list. */
23099
23240
  var NcAlarmNonBlockingEditSchema = object({
@@ -26168,7 +26309,8 @@ var PipelineModelOptionSchema = object({
26168
26309
  group: ModelVariantGroupSchema.optional(),
26169
26310
  legacy: boolean().optional(),
26170
26311
  provider: ModelProviderIdSchema.optional(),
26171
- defaultConfidence: number().optional()
26312
+ defaultConfidence: number().optional(),
26313
+ fillsClassifierEffects: array(FillsClassifierEffectSchema).readonly().optional()
26172
26314
  });
26173
26315
  var ConfigFieldBridge = custom();
26174
26316
  var PipelineAddonSchemaSchema = object({
@@ -27157,6 +27299,22 @@ var MotionSourceEnum = _enum([
27157
27299
  "device-activity"
27158
27300
  ]);
27159
27301
  /**
27302
+ * What opened an on-motion detection SESSION: the motion source that passed the
27303
+ * camera's `motionSources` gate, and what raised it (the camera itself, or a
27304
+ * sensor the operator attached — D672). `sensorName` is the attached sensor's
27305
+ * device name as the orchestrator's camera-sensors resolution last read it;
27306
+ * absent when unknown or when the camera itself triggered.
27307
+ *
27308
+ * Carried on the session attach ONLY so the runner's `DetectionPhaseTransition`
27309
+ * can say what started the session (D672 rule 11, amended 2026-10-06). The
27310
+ * runner never decides anything on it.
27311
+ */
27312
+ var SessionTriggerSchema = object({
27313
+ source: MotionSourceEnum,
27314
+ triggeredBy: MotionTriggeredBySchema,
27315
+ sensorName: string().optional()
27316
+ });
27317
+ /**
27160
27318
  * List of motion sources active on a camera. Empty array is valid:
27161
27319
  * "no source" — happens for battery cams without firmware motion when
27162
27320
  * the operator hasn't opted into the SW analyzer (would hold the
@@ -27408,6 +27566,14 @@ var RunnerCameraConfigSchema = object({
27408
27566
  */
27409
27567
  motionSources: MotionSourcesSchema.default(["analyzer"]),
27410
27568
  /**
27569
+ * What opened this attach, on a SESSION attach only (see
27570
+ * {@link SessionTriggerSchema}). OPTIONAL with no default: absent on a
27571
+ * standing attach, an occupancy burst, a re-dispatch with no motion event
27572
+ * behind it, and every attach from an orchestrator older than the field — the
27573
+ * runner then names no source on the phase event.
27574
+ */
27575
+ sessionTrigger: SessionTriggerSchema.optional(),
27576
+ /**
27411
27577
  * WHICH root detector runs for this camera. The detection counterpart of
27412
27578
  * {@link motionSources}, same shape and same discipline: a per-camera list
27413
27579
  * of sources the system understands, vendor-agnostic, owned here.
@@ -34298,7 +34464,7 @@ var LocalInterfaceSchema = object({
34298
34464
  name: string(),
34299
34465
  family: _enum(["IPv4", "IPv6"]),
34300
34466
  address: string(),
34301
- /** CIDR shorthand (e.g. `192.168.x.x/24`). Empty when OS doesn't expose. */
34467
+ /** CIDR shorthand (e.g. `192.168.10.10/24`). Empty when OS doesn't expose. */
34302
34468
  cidr: string(),
34303
34469
  /** OS netmask. Stable across calls so the SDK can hash on it. */
34304
34470
  netmask: string(),
@@ -34352,7 +34518,8 @@ var ConnectionEndpointSchema = object({
34352
34518
  "lan-ipv4",
34353
34519
  "lan-ipv6",
34354
34520
  "public",
34355
- "loopback"
34521
+ "loopback",
34522
+ "app-link"
34356
34523
  ]),
34357
34524
  /**
34358
34525
  * Originating-interface kind — `lan`/`wifi`/`docker`/`vpn`/`other`/
@@ -34421,15 +34588,27 @@ var GetConnectionEndpointsResultSchema = object({
34421
34588
  localPort: AdvertisedLocalPortSchema
34422
34589
  });
34423
34590
  /**
34424
- * The chosen outbound endpoint for notification artifacts. `baseUrl: null` =
34425
- * AUTO (resolved from the candidate ranking at send time); `resolved` reports
34426
- * what AUTO currently picks, so the UI can show the effective value either way.
34591
+ * The address flagged for notification links. `baseUrl: null` = AUTO, which
34592
+ * since D709 is the CamStack app link; `resolved` reports the effective value,
34593
+ * so the UI can show it either way.
34427
34594
  */
34428
34595
  var NotificationEndpointSchema = object({
34429
34596
  /** The operator's explicit choice, or null for AUTO. */
34430
34597
  baseUrl: string().nullable(),
34431
- /** What the ranking currently resolves to (null when nothing is reachable). */
34432
- resolved: string().nullable()
34598
+ /**
34599
+ * The effective flagged address: the explicit choice, else (AUTO) the
34600
+ * CamStack app link `https://camstack.zentik.app` (D709). A pre-D709 hub
34601
+ * answered the public tunnel / mesh here, or null.
34602
+ */
34603
+ resolved: string().nullable(),
34604
+ /**
34605
+ * The hub origin an app link carries as `hub=` (D709): the hub's best
34606
+ * public HTTPS address — the tunnel, then the mesh (Tailscale MagicDNS) —
34607
+ * picked from this cap's own palette by `pickAppLinkHub`. `null` when the
34608
+ * hub advertises neither; the app link is then minted without `hub=`.
34609
+ * Absent on a pre-D709 hub.
34610
+ */
34611
+ appLinkHub: string().nullable()
34433
34612
  });
34434
34613
  /**
34435
34614
  * The URLs the SDK / viewer should race for API access. `baseUrls` empty =
@@ -34483,7 +34662,11 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
34483
34662
  * Pass `'https'` when the caller is itself loaded over HTTPS
34484
34663
  * to avoid mixed-content blocks in the browser. The public
34485
34664
  * tunnel always emits `https://` regardless. */
34486
- scheme: _enum(["http", "https"]).optional()
34665
+ scheme: _enum(["http", "https"]).optional(),
34666
+ /** Append the CamStack app link entry (`kind: 'app-link'`, D709) —
34667
+ * an address notification links can be flagged with, not a hub
34668
+ * route. Default `false`: racers and rankers never see it. */
34669
+ includeAppLink: boolean().optional()
34487
34670
  }), GetConnectionEndpointsResultSchema), method(_void(), NotificationEndpointSchema), method(object({ baseUrl: string().nullable() }), NotificationEndpointSchema, { kind: "mutation" }), method(_void(), ViewerEndpointsSchema), method(object({ baseUrls: array(string()).readonly() }), ViewerEndpointsSchema, { kind: "mutation" }), method(_void(), AllowedAddressesSchema), method(AllowedAddressesSchema, object({ success: literal(true) }), { kind: "mutation" }), method(_void(), AllowedAddressesSchema, { kind: "mutation" }), method(_void(), TlsStatusSchema), method(object({ reason: string().optional() }), TlsStatusSchema, {
34488
34671
  kind: "mutation",
34489
34672
  auth: "admin"
@@ -34744,7 +34927,7 @@ var MeshPeerSchema = object({
34744
34927
  tags: array(string()).readonly(),
34745
34928
  /** True when the peer advertises itself as an exit-node candidate. */
34746
34929
  exitNodeOption: boolean(),
34747
- /** Subnet routes the peer advertises (e.g. `["192.168.x.x/24"]`). */
34930
+ /** Subnet routes the peer advertises (e.g. `["192.168.10.0/24"]`). */
34748
34931
  advertisedRoutes: array(string()).readonly(),
34749
34932
  /** Owner account login (e.g. `foo@example.com`). Null for tagged peers. */
34750
34933
  userLogin: string().nullable(),
@@ -52076,12 +52259,14 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
52076
52259
  {
52077
52260
  id: "addons",
52078
52261
  family: "system",
52079
- label: "Addons",
52080
- kinds: [
52081
- "addon-crash-loop",
52082
- "addon-update-available",
52083
- "addon-updated"
52084
- ]
52262
+ label: "Addons stopped",
52263
+ kinds: ["addon-crash-loop"]
52264
+ },
52265
+ {
52266
+ id: "addon-updates",
52267
+ family: "system",
52268
+ label: "Addon updates",
52269
+ kinds: ["addon-update-available", "addon-updated"]
52085
52270
  },
52086
52271
  {
52087
52272
  id: "updates",
@@ -52241,13 +52426,15 @@ var STATE_SUMMARY_SECTION_VARS = [
52241
52426
  },
52242
52427
  {
52243
52428
  name: "summaryAddons",
52244
- label: "Summary: addons",
52245
- example: "@camstack/addon-recorder 1.2.3 → 1.2.4",
52246
- kinds: [
52247
- "addon-crash-loop",
52248
- "addon-update-available",
52249
- "addon-updated"
52250
- ]
52429
+ label: "Summary: addons stopped",
52430
+ example: "hub — recorder stopped after repeated crashes",
52431
+ kinds: ["addon-crash-loop"]
52432
+ },
52433
+ {
52434
+ name: "summaryAddonUpdates",
52435
+ label: "Summary: addon updates",
52436
+ example: "hub:\n• @camstack/addon-recorder 1.2.3 → 1.2.4",
52437
+ kinds: ["addon-update-available", "addon-updated"]
52251
52438
  },
52252
52439
  {
52253
52440
  name: "summaryUpdates",
@@ -52331,6 +52518,7 @@ var STATE_SUMMARY_VARS = [
52331
52518
  [...RULE_BODY_ONLY],
52332
52519
  [...RULE_TEXT],
52333
52520
  ([...RULE_TEXT], [...DEVICE_EVENTS]),
52521
+ ([...RULE_TEXT], [...COMBINED_ALARM]),
52334
52522
  ([...RULE_TEXT], [...DEVICE_EVENTS]),
52335
52523
  ([...RULE_TEXT], [...BATTERY, ...CONSUMABLE]),
52336
52524
  ([...RULE_TEXT], [...CONSUMABLE]),
@@ -53928,4 +54116,4 @@ function enumerateInferenceDevices(hw) {
53928
54116
  return out;
53929
54117
  }
53930
54118
  //#endregion
53931
- export { declareLogChannel as $, stripRetiredBandPreBufferSec as $t, PoolMemoryWatchdog as A, sleep as An, overlayClusterStepSettings as At, VISIT_MERGE_GAP_MS as B, record as Bn, recordingExportCapability as Bt, ExportRecordSchema as C, isEvent as Cn, maskUrlCredentials as Ct, NativeLeaseAdmissionSchema as D, parseJsonUnknown as Dn, migrateLegacyDeviceSignalConfig as Dt, HF_BASE_URL as E, nodePin as En, memoizePinnedFfmpeg as Et, RECORDING_SOURCE_CAMSTACK_ADDON as F, lazy as Fn, pipelineExecutorCapability as Ft, audioKindId as G, resolveLocationMode as Gt, addonWidgetsSourceCapability as H, union as Hn, resolveClusterStepModelId as Ht, RecordingConfigSchema as I, literal as In, pipelineRunnerCapability as It, cameraStreamsCapability as J, runtimeDevices as Jt, batteryCapability as K, resolvePoolMemoryPolicy as Kt, RecordingSignalStatusSchema as L, number as Ln, rankStreams as Lt, RATE_CONTROL_TIGHT as M, array as Mn, pickClusterStepSettings as Mt, RECORDING_EXPORT_MAX_READ_BYTES as N, boolean as Nn, pickDetailCropConvention as Nt, NativeLeaseSettingsSchema as O, parseProfileBrokerId as On, modeMayWrite as Ot, RECORDING_SOURCE_CAMSTACK as P, discriminatedUnion as Pn, pickNativeLeaseOverride as Pt, createLogChannelsProvider as Q, streamBrokerCapability as Qt, RingBuffer as R, object as Rn, recordingArchiveCapability as Rt, EncodeProfileSchema as S, hydrateSchema as Sn, mapAudioLabelToMacro as St, G711_SCALE_CORRECTION_DB as T, makeSourceBrokerId as Tn, mayWriteToLocation as Tt, audioAnalysisCapability as U, EventCategory as Un, resolveCreateExportSubject as Ut, YAMNET_TO_MACRO as V, string as Vn, recordingSignalCapability as Vt, audioAnalyzerCapability as W, resolveEgressDecodeHwAccel as Wt, clipExportFailureOf as X, storageEvictableCapability as Xt, clipExportFailure as Y, stepModelRunsOnFormat as Yt, createHwAccelCache as Z, storageOccupancyCapability as Zt, DEFAULT_EVENTS_BAND_BUFFER_SEC as _, audioChunkBytesPerSample as _n, hfModelUrl as _t, BackgroundRunRegistry as a, Fmp4BoxSplitter as an, egressTranscodeSharingKey as at, EVENT_OWNER_TYPES as b, defineCustomActions as bn, loadContributionCapability as bt, CLIP_STILL_REASON_CODE_HEADER as c, invocationFromEncodeProfile as cn, evaluateZoneRules as ct, CLUSTER_MODEL_SCOPED_STEPS as d, DeviceType as dn, exportSubjectOf as dt, supportedRuntimes as en, defaultDeviceFor as et, COCO_80_LABELS as f, errMsg as fn, failureContributionCapability as ft, DEFAULT_DETAIL_CROP_CONVENTION as g, CamProfileSchema as gn, gifFromMp4Args as gt, DEFAULT_CLUSTER_STEP_SETTINGS as h, CAM_PROFILE_ORDER as hn, gifDeriveSpeed as ht, AUDIO_MACRO_LABELS as i, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as in, detectionPipelineCapability as it, RATE_CONTROL_RELAXED as j, _enum as jn, parseProcStatus as jt, OpsLogEntrySchema as k, selectAssignedProfileSlots as kn, motionDetectionCapability as kt, CLIP_STILL_REASON_HEADER as l, isSoftwareDecode as ln, evictionPolicyForMode as lt, DEFAULT_AUDIO_ANALYZER_CONFIG as m, BaseAddon as mn, gbToBytes as mt, APPLE_SA_TO_MACRO as n, webrtcSessionCapability as nn, deriveDetailCropRect as nt, BatteryStatusSchema as o, buildFfmpegArgs as on, egressTransportFromRequest as ot, COCO_TO_MACRO as p, BOOT_RECOVERY_BACKOFF_MS as pn, ffmpegRate as pt, cameraOwnsMotionViaSensor as q, resolveRecordingProfiles as qt, AUDIO_BACKEND_CHOICES as r, AUDIO_PRESETS as rn, deriveRecordingMode as rt, CLIP_BROKER_PACED_RATES as s, evaluateSensorEdge as sn, enumerateInferenceDevices as st, APPEARANCE_BLOCKS as t, videoclipsCapability as tn, deriveBatteryPresence as tt, CLIP_STREAM_TRANSPORT_HEADER as u, DeviceFeature as un, evictionPolicyOfLocation as ut, DEFAULT_NATIVE_LEASE_SETTINGS as v, createEvent as vn, inferModelProvider as vt, FailureCounters as w, makeProfileBrokerId as wn, mayReadLocation as wt, EVENT_PAD_MS as x, expandAudioChunkToF32le as xn, logChannelsCapability as xt, DEVICE_BACKEND_TO_FORMAT as y, customAction as yn, isFirstLevelMacroClass as yt, VIDEOCLIPS_MAX_OFFER_BYTES as z, preprocess as zn, recordingCapability as zt };
54119
+ export { cameraStreamsCapability as $, resolveLocationMode as $t, LABEL_LINK_POLICIES as A, hydrateSchema as An, maskUrlCredentials as At, RECORDING_SOURCE_CAMSTACK_ADDON as B, array as Bn, pickDetailCropConvention as Bt, EncodeProfileSchema as C, CAM_PROFILE_ORDER as Cn, inferModelProvider as Ct, FailureCounters as D, customAction as Dn, loadContributionCapability as Dt, FILLABLE_STEP_VOCABULARIES as E, createEvent as En, linkedStepOf as Et, PoolMemoryWatchdog as F, parseJsonUnknown as Fn, modeMayWrite as Ft, VISIT_MERGE_GAP_MS as G, number as Gn, recordingArchiveCapability as Gt, RecordingSignalStatusSchema as H, discriminatedUnion as Hn, pipelineExecutorCapability as Ht, RATE_CONTROL_RELAXED as I, parseProfileBrokerId as In, motionDetectionCapability as It, audioAnalysisCapability as J, record as Jn, recordingSignalCapability as Jt, YAMNET_TO_MACRO as K, object as Kn, recordingCapability as Kt, RATE_CONTROL_TIGHT as L, selectAssignedProfileSlots as Ln, overlayClusterStepSettings as Lt, NativeLeaseAdmissionSchema as M, makeProfileBrokerId as Mn, mayWriteToLocation as Mt, NativeLeaseSettingsSchema as N, makeSourceBrokerId as Nn, memoizePinnedFfmpeg as Nt, G711_SCALE_CORRECTION_DB as O, defineCustomActions as On, logChannelsCapability as Ot, OpsLogEntrySchema as P, nodePin as Pn, migrateLegacyDeviceSignalConfig as Pt, cameraOwnsMotionViaSensor as Q, resolveLabelLink as Qt, RECORDING_EXPORT_MAX_READ_BYTES as R, sleep as Rn, parseProcStatus as Rt, EVENT_PAD_MS as S, BaseAddon as Sn, hfModelUrl as St, FILLABLE_STEP_MACRO as T, audioChunkBytesPerSample as Tn, linkedLabelStepId as Tt, RingBuffer as U, lazy as Un, pipelineRunnerCapability as Ut, RecordingConfigSchema as V, boolean as Vn, pickNativeLeaseOverride as Vt, VIDEOCLIPS_MAX_OFFER_BYTES as W, literal as Wn, rankStreams as Wt, audioKindId as X, union as Xn, resolveCreateExportSubject as Xt, audioAnalyzerCapability as Y, string as Yn, resolveClusterStepModelId as Yt, batteryCapability as Z, EventCategory as Zn, resolveEgressDecodeHwAccel as Zt, DEFAULT_EVENTS_BAND_BUFFER_SEC as _, isSoftwareDecode as _n, failureContributionCapability as _t, BackgroundRunRegistry as a, storageOccupancyCapability as an, defaultDeviceFor as at, DEVICE_BACKEND_TO_FORMAT as b, errMsg as bn, gifDeriveSpeed as bt, CLIP_STILL_REASON_CODE_HEADER as c, supportedRuntimes as cn, deriveRecordingMode as ct, CLUSTER_MODEL_SCOPED_STEPS as d, AUDIO_PRESETS as dn, egressTransportFromRequest as dt, resolvePoolMemoryPolicy as en, clipExportFailure as et, COCO_80_LABELS as f, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as fn, enumerateInferenceDevices as ft, DEFAULT_DETAIL_CROP_CONVENTION as g, invocationFromEncodeProfile as gn, exportSubjectOf as gt, DEFAULT_CLUSTER_STEP_SETTINGS as h, evaluateSensorEdge as hn, evictionPolicyOfLocation as ht, AUDIO_MACRO_LABELS as i, storageEvictableCapability as in, declareLogChannel as it, LABEL_LINK_SETTING_KEY as j, isEvent as jn, mayReadLocation as jt, HF_BASE_URL as k, expandAudioChunkToF32le as kn, mapAudioLabelToMacro as kt, CLIP_STILL_REASON_HEADER as l, videoclipsCapability as ln, detectionPipelineCapability as lt, DEFAULT_AUDIO_ANALYZER_CONFIG as m, buildFfmpegArgs as mn, evictionPolicyForMode as mt, APPLE_SA_TO_MACRO as n, runtimeDevices as nn, createHwAccelCache as nt, BatteryStatusSchema as o, streamBrokerCapability as on, deriveBatteryPresence as ot, COCO_TO_MACRO as p, Fmp4BoxSplitter as pn, evaluateZoneRules as pt, addonWidgetsSourceCapability as q, preprocess as qn, recordingExportCapability as qt, AUDIO_BACKEND_CHOICES as r, stepModelRunsOnFormat as rn, createLogChannelsProvider as rt, CLIP_BROKER_PACED_RATES as s, stripRetiredBandPreBufferSec as sn, deriveDetailCropRect as st, APPEARANCE_BLOCKS as t, resolveRecordingProfiles as tn, clipExportFailureOf as tt, CLIP_STREAM_TRANSPORT_HEADER as u, webrtcSessionCapability as un, egressTranscodeSharingKey as ut, DEFAULT_LABEL_LINK_POLICY as v, DeviceFeature as vn, ffmpegRate as vt, ExportRecordSchema as w, CamProfileSchema as wn, isFirstLevelMacroClass as wt, EVENT_OWNER_TYPES as x, BOOT_RECOVERY_BACKOFF_MS as xn, gifFromMp4Args as xt, DEFAULT_NATIVE_LEASE_SETTINGS as y, DeviceType as yn, gbToBytes as yt, RECORDING_SOURCE_CAMSTACK as z, _enum as zn, pickClusterStepSettings as zt };