@camstack/types 1.2.313 → 1.2.315

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.
@@ -32,6 +32,7 @@ export declare const CustomModelDescriptorSchema: z.ZodObject<{
32
32
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
33
33
  python: "python";
34
34
  }>>>>;
35
+ revision: z.ZodOptional<z.ZodString>;
35
36
  }, z.core.$strip>>;
36
37
  coreml: z.ZodOptional<z.ZodObject<{
37
38
  url: z.ZodString;
@@ -41,6 +42,7 @@ export declare const CustomModelDescriptorSchema: z.ZodObject<{
41
42
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
42
43
  python: "python";
43
44
  }>>>>;
45
+ revision: z.ZodOptional<z.ZodString>;
44
46
  }, z.core.$strip>>;
45
47
  openvino: z.ZodOptional<z.ZodObject<{
46
48
  url: z.ZodString;
@@ -50,6 +52,7 @@ export declare const CustomModelDescriptorSchema: z.ZodObject<{
50
52
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
51
53
  python: "python";
52
54
  }>>>>;
55
+ revision: z.ZodOptional<z.ZodString>;
53
56
  }, z.core.$strip>>;
54
57
  tflite: z.ZodOptional<z.ZodObject<{
55
58
  url: z.ZodString;
@@ -59,6 +62,7 @@ export declare const CustomModelDescriptorSchema: z.ZodObject<{
59
62
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
60
63
  python: "python";
61
64
  }>>>>;
65
+ revision: z.ZodOptional<z.ZodString>;
62
66
  }, z.core.$strip>>;
63
67
  pt: z.ZodOptional<z.ZodObject<{
64
68
  url: z.ZodString;
@@ -68,6 +72,7 @@ export declare const CustomModelDescriptorSchema: z.ZodObject<{
68
72
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
69
73
  python: "python";
70
74
  }>>>>;
75
+ revision: z.ZodOptional<z.ZodString>;
71
76
  }, z.core.$strip>>;
72
77
  gguf: z.ZodOptional<z.ZodObject<{
73
78
  url: z.ZodString;
@@ -77,6 +82,7 @@ export declare const CustomModelDescriptorSchema: z.ZodObject<{
77
82
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
78
83
  python: "python";
79
84
  }>>>>;
85
+ revision: z.ZodOptional<z.ZodString>;
80
86
  }, z.core.$strip>>;
81
87
  }, z.core.$strip>;
82
88
  inputSize: z.ZodObject<{
@@ -108,6 +114,12 @@ export declare const CustomModelDescriptorSchema: z.ZodObject<{
108
114
  }>>;
109
115
  postprocessor: z.ZodOptional<z.ZodCustom<import("../index.js").PostprocessorType, import("../index.js").PostprocessorType>>;
110
116
  defaultConfidence: z.ZodOptional<z.ZodNumber>;
117
+ defaultClassFloors: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
118
+ gpuInferencePrecision: z.ZodOptional<z.ZodEnum<{
119
+ f32: "f32";
120
+ f16: "f16";
121
+ }>>;
122
+ suppliedLabelFloors: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
111
123
  faceAlignment: z.ZodOptional<z.ZodBoolean>;
112
124
  extraFiles: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
113
125
  url: z.ZodString;
@@ -242,6 +254,7 @@ export declare const customModelRegistryCapability: {
242
254
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
243
255
  python: "python";
244
256
  }>>>>;
257
+ revision: z.ZodOptional<z.ZodString>;
245
258
  }, z.core.$strip>>;
246
259
  coreml: z.ZodOptional<z.ZodObject<{
247
260
  url: z.ZodString;
@@ -251,6 +264,7 @@ export declare const customModelRegistryCapability: {
251
264
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
252
265
  python: "python";
253
266
  }>>>>;
267
+ revision: z.ZodOptional<z.ZodString>;
254
268
  }, z.core.$strip>>;
255
269
  openvino: z.ZodOptional<z.ZodObject<{
256
270
  url: z.ZodString;
@@ -260,6 +274,7 @@ export declare const customModelRegistryCapability: {
260
274
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
261
275
  python: "python";
262
276
  }>>>>;
277
+ revision: z.ZodOptional<z.ZodString>;
263
278
  }, z.core.$strip>>;
264
279
  tflite: z.ZodOptional<z.ZodObject<{
265
280
  url: z.ZodString;
@@ -269,6 +284,7 @@ export declare const customModelRegistryCapability: {
269
284
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
270
285
  python: "python";
271
286
  }>>>>;
287
+ revision: z.ZodOptional<z.ZodString>;
272
288
  }, z.core.$strip>>;
273
289
  pt: z.ZodOptional<z.ZodObject<{
274
290
  url: z.ZodString;
@@ -278,6 +294,7 @@ export declare const customModelRegistryCapability: {
278
294
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
279
295
  python: "python";
280
296
  }>>>>;
297
+ revision: z.ZodOptional<z.ZodString>;
281
298
  }, z.core.$strip>>;
282
299
  gguf: z.ZodOptional<z.ZodObject<{
283
300
  url: z.ZodString;
@@ -287,6 +304,7 @@ export declare const customModelRegistryCapability: {
287
304
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
288
305
  python: "python";
289
306
  }>>>>;
307
+ revision: z.ZodOptional<z.ZodString>;
290
308
  }, z.core.$strip>>;
291
309
  }, z.core.$strip>;
292
310
  inputSize: z.ZodObject<{
@@ -318,6 +336,12 @@ export declare const customModelRegistryCapability: {
318
336
  }>>;
319
337
  postprocessor: z.ZodOptional<z.ZodCustom<import("../index.js").PostprocessorType, import("../index.js").PostprocessorType>>;
320
338
  defaultConfidence: z.ZodOptional<z.ZodNumber>;
339
+ defaultClassFloors: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
340
+ gpuInferencePrecision: z.ZodOptional<z.ZodEnum<{
341
+ f32: "f32";
342
+ f16: "f16";
343
+ }>>;
344
+ suppliedLabelFloors: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
321
345
  faceAlignment: z.ZodOptional<z.ZodBoolean>;
322
346
  extraFiles: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
323
347
  url: z.ZodString;
@@ -142,6 +142,7 @@ export declare const modelConvertCapability: {
142
142
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
143
143
  python: "python";
144
144
  }>>>>;
145
+ revision: z.ZodOptional<z.ZodString>;
145
146
  }, z.core.$strip>>;
146
147
  coreml: z.ZodOptional<z.ZodObject<{
147
148
  url: z.ZodString;
@@ -151,6 +152,7 @@ export declare const modelConvertCapability: {
151
152
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
152
153
  python: "python";
153
154
  }>>>>;
155
+ revision: z.ZodOptional<z.ZodString>;
154
156
  }, z.core.$strip>>;
155
157
  openvino: z.ZodOptional<z.ZodObject<{
156
158
  url: z.ZodString;
@@ -160,6 +162,7 @@ export declare const modelConvertCapability: {
160
162
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
161
163
  python: "python";
162
164
  }>>>>;
165
+ revision: z.ZodOptional<z.ZodString>;
163
166
  }, z.core.$strip>>;
164
167
  tflite: z.ZodOptional<z.ZodObject<{
165
168
  url: z.ZodString;
@@ -169,6 +172,7 @@ export declare const modelConvertCapability: {
169
172
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
170
173
  python: "python";
171
174
  }>>>>;
175
+ revision: z.ZodOptional<z.ZodString>;
172
176
  }, z.core.$strip>>;
173
177
  pt: z.ZodOptional<z.ZodObject<{
174
178
  url: z.ZodString;
@@ -178,6 +182,7 @@ export declare const modelConvertCapability: {
178
182
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
179
183
  python: "python";
180
184
  }>>>>;
185
+ revision: z.ZodOptional<z.ZodString>;
181
186
  }, z.core.$strip>>;
182
187
  gguf: z.ZodOptional<z.ZodObject<{
183
188
  url: z.ZodString;
@@ -187,6 +192,7 @@ export declare const modelConvertCapability: {
187
192
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
188
193
  python: "python";
189
194
  }>>>>;
195
+ revision: z.ZodOptional<z.ZodString>;
190
196
  }, z.core.$strip>>;
191
197
  }, z.core.$strip>;
192
198
  inputSize: z.ZodObject<{
@@ -218,6 +224,12 @@ export declare const modelConvertCapability: {
218
224
  }>>;
219
225
  postprocessor: z.ZodOptional<z.ZodCustom<import("../index.js").PostprocessorType, import("../index.js").PostprocessorType>>;
220
226
  defaultConfidence: z.ZodOptional<z.ZodNumber>;
227
+ defaultClassFloors: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
228
+ gpuInferencePrecision: z.ZodOptional<z.ZodEnum<{
229
+ f32: "f32";
230
+ f16: "f16";
231
+ }>>;
232
+ suppliedLabelFloors: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
221
233
  faceAlignment: z.ZodOptional<z.ZodBoolean>;
222
234
  extraFiles: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
223
235
  url: z.ZodString;
@@ -40,6 +40,7 @@ export declare const ModelDistributeInputSchema: z.ZodObject<{
40
40
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
41
41
  python: "python";
42
42
  }>>>>;
43
+ revision: z.ZodOptional<z.ZodString>;
43
44
  }, z.core.$strip>>;
44
45
  coreml: z.ZodOptional<z.ZodObject<{
45
46
  url: z.ZodString;
@@ -49,6 +50,7 @@ export declare const ModelDistributeInputSchema: z.ZodObject<{
49
50
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
50
51
  python: "python";
51
52
  }>>>>;
53
+ revision: z.ZodOptional<z.ZodString>;
52
54
  }, z.core.$strip>>;
53
55
  openvino: z.ZodOptional<z.ZodObject<{
54
56
  url: z.ZodString;
@@ -58,6 +60,7 @@ export declare const ModelDistributeInputSchema: z.ZodObject<{
58
60
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
59
61
  python: "python";
60
62
  }>>>>;
63
+ revision: z.ZodOptional<z.ZodString>;
61
64
  }, z.core.$strip>>;
62
65
  tflite: z.ZodOptional<z.ZodObject<{
63
66
  url: z.ZodString;
@@ -67,6 +70,7 @@ export declare const ModelDistributeInputSchema: z.ZodObject<{
67
70
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
68
71
  python: "python";
69
72
  }>>>>;
73
+ revision: z.ZodOptional<z.ZodString>;
70
74
  }, z.core.$strip>>;
71
75
  pt: z.ZodOptional<z.ZodObject<{
72
76
  url: z.ZodString;
@@ -76,6 +80,7 @@ export declare const ModelDistributeInputSchema: z.ZodObject<{
76
80
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
77
81
  python: "python";
78
82
  }>>>>;
83
+ revision: z.ZodOptional<z.ZodString>;
79
84
  }, z.core.$strip>>;
80
85
  gguf: z.ZodOptional<z.ZodObject<{
81
86
  url: z.ZodString;
@@ -85,6 +90,7 @@ export declare const ModelDistributeInputSchema: z.ZodObject<{
85
90
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
86
91
  python: "python";
87
92
  }>>>>;
93
+ revision: z.ZodOptional<z.ZodString>;
88
94
  }, z.core.$strip>>;
89
95
  }, z.core.$strip>;
90
96
  inputSize: z.ZodObject<{
@@ -116,6 +122,12 @@ export declare const ModelDistributeInputSchema: z.ZodObject<{
116
122
  }>>;
117
123
  postprocessor: z.ZodOptional<z.ZodCustom<import("../index.js").PostprocessorType, import("../index.js").PostprocessorType>>;
118
124
  defaultConfidence: z.ZodOptional<z.ZodNumber>;
125
+ defaultClassFloors: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
126
+ gpuInferencePrecision: z.ZodOptional<z.ZodEnum<{
127
+ f32: "f32";
128
+ f16: "f16";
129
+ }>>;
130
+ suppliedLabelFloors: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
119
131
  faceAlignment: z.ZodOptional<z.ZodBoolean>;
120
132
  extraFiles: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
121
133
  url: z.ZodString;
@@ -255,6 +267,7 @@ export declare const modelDistributorCapability: {
255
267
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
256
268
  python: "python";
257
269
  }>>>>;
270
+ revision: z.ZodOptional<z.ZodString>;
258
271
  }, z.core.$strip>>;
259
272
  coreml: z.ZodOptional<z.ZodObject<{
260
273
  url: z.ZodString;
@@ -264,6 +277,7 @@ export declare const modelDistributorCapability: {
264
277
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
265
278
  python: "python";
266
279
  }>>>>;
280
+ revision: z.ZodOptional<z.ZodString>;
267
281
  }, z.core.$strip>>;
268
282
  openvino: z.ZodOptional<z.ZodObject<{
269
283
  url: z.ZodString;
@@ -273,6 +287,7 @@ export declare const modelDistributorCapability: {
273
287
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
274
288
  python: "python";
275
289
  }>>>>;
290
+ revision: z.ZodOptional<z.ZodString>;
276
291
  }, z.core.$strip>>;
277
292
  tflite: z.ZodOptional<z.ZodObject<{
278
293
  url: z.ZodString;
@@ -282,6 +297,7 @@ export declare const modelDistributorCapability: {
282
297
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
283
298
  python: "python";
284
299
  }>>>>;
300
+ revision: z.ZodOptional<z.ZodString>;
285
301
  }, z.core.$strip>>;
286
302
  pt: z.ZodOptional<z.ZodObject<{
287
303
  url: z.ZodString;
@@ -291,6 +307,7 @@ export declare const modelDistributorCapability: {
291
307
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
292
308
  python: "python";
293
309
  }>>>>;
310
+ revision: z.ZodOptional<z.ZodString>;
294
311
  }, z.core.$strip>>;
295
312
  gguf: z.ZodOptional<z.ZodObject<{
296
313
  url: z.ZodString;
@@ -300,6 +317,7 @@ export declare const modelDistributorCapability: {
300
317
  runtimes: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodEnum<{
301
318
  python: "python";
302
319
  }>>>>;
320
+ revision: z.ZodOptional<z.ZodString>;
303
321
  }, z.core.$strip>>;
304
322
  }, z.core.$strip>;
305
323
  inputSize: z.ZodObject<{
@@ -331,6 +349,12 @@ export declare const modelDistributorCapability: {
331
349
  }>>;
332
350
  postprocessor: z.ZodOptional<z.ZodCustom<import("../index.js").PostprocessorType, import("../index.js").PostprocessorType>>;
333
351
  defaultConfidence: z.ZodOptional<z.ZodNumber>;
352
+ defaultClassFloors: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
353
+ gpuInferencePrecision: z.ZodOptional<z.ZodEnum<{
354
+ f32: "f32";
355
+ f16: "f16";
356
+ }>>;
357
+ suppliedLabelFloors: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
334
358
  faceAlignment: z.ZodOptional<z.ZodBoolean>;
335
359
  extraFiles: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
336
360
  url: z.ZodString;
@@ -50,3 +50,23 @@ export interface FrigateLabelFields {
50
50
  * does not list.
51
51
  */
52
52
  export declare function frigateLabelFields(labels: readonly string[]): FrigateLabelFields;
53
+ /**
54
+ * Per-class confidence-floor defaults of an imported stock Frigate detector
55
+ * (D738): its per-detection `min_score` default, 0.5, for every class. Its
56
+ * track-level `threshold` (the median of a track's recent scores) has no
57
+ * counterpart in CamStack's per-detection floors and is not carried.
58
+ */
59
+ export declare const FRIGATE_STOCK_CLASS_FLOORS: Readonly<Record<string, number>>;
60
+ /**
61
+ * Per-class floor defaults of an imported Frigate+ detector (D738): the
62
+ * documented starting `min_score` values for Frigate+ models, which score
63
+ * higher than the stock ones (person 0.65, car 0.65, cat 0.65, dog 0.70). The
64
+ * macro `animal` takes the lower of its classes, so no class is cut above its
65
+ * documented value.
66
+ */
67
+ export declare const FRIGATE_PLUS_CLASS_FLOORS: Readonly<Record<string, number>>;
68
+ /**
69
+ * The `defaultClassFloors` an imported Frigate entry carries: the import's
70
+ * own, when it states them, else the defaults of its kind. A fresh object.
71
+ */
72
+ export declare function frigateDefaultClassFloors(kind: 'stock' | 'plus', carried?: Readonly<Record<string, number>>): Record<string, number>;
package/dist/index.d.ts CHANGED
@@ -152,7 +152,7 @@ export * from './device-extension/index.js';
152
152
  export * from './composition/index.js';
153
153
  export { APPLE_SA_TO_MACRO, AUDIO_MACRO_LABELS, getAudioMacroClassIds, mapAudioLabelToMacro, YAMNET_TO_MACRO, } from './catalogs/audio-classmap.js';
154
154
  export { COCO_80_LABELS, COCO_TO_MACRO, DETECTION_MACRO_CLASSES, isDetectionMacroClass, MACRO_LABELS, } from './catalogs/coco-classmap.js';
155
- export { buildFrigateClassMap, type ClassMapMacroTarget, FRIGATE_PLUS_TO_MACRO, FRIGATE_PLUS_UNMAPPED_LABELS, type FrigateLabelFields, frigateLabelFields, } from './catalogs/frigate-plus-classmap.js';
155
+ export { buildFrigateClassMap, type ClassMapMacroTarget, FRIGATE_PLUS_CLASS_FLOORS, FRIGATE_PLUS_TO_MACRO, FRIGATE_PLUS_UNMAPPED_LABELS, FRIGATE_STOCK_CLASS_FLOORS, frigateDefaultClassFloors, type FrigateLabelFields, frigateLabelFields, } from './catalogs/frigate-plus-classmap.js';
156
156
  export { allowedSuppliedEffect, containingParentIndex, CROP_SUPPLY_SOURCES, CROP_SUPPLY_STEP_IDS, type CropSupplySource, type CropSupplyStepId, deriveMaskSupplies, deriveRootSupplies, describeRootSupplies, describeRootSupply, isLabelSupplyStepId, isRootSuppliableStepId, LABEL_SUPPLY_MACRO, LABEL_SUPPLY_STEP_IDS, LABEL_SUPPLY_VOCABULARIES, type LabelSupplyStepId, LINKED_LABEL_STEP_PREFIX, linkedLabelStepId, MASK_EMITTING_POSTPROCESSORS, MASK_SUPPLY_STEP_IDS, type MaskSupplyStepId, linkedStepOf, readUseRootModel, resolveRootSupply, ROOT_CHILD_CONTAINMENT_MIN, ROOT_SUPPLIABLE_STEP_IDS, rootSuppliesOf, rootSupplyServes, type RootSuppliableStepId, type RootSupplyInactiveReason, type RootSupplyState, type RootSupplyStepDefaults, type SupplyBox, type SupplyClassMap, supplyFor, USE_ROOT_MODEL_DEFAULTS, USE_ROOT_MODEL_SETTING_KEY, } from './catalogs/root-model-supply.js';
157
157
  export { DEVICE_STATE_READERS, readDeviceStateFrom, stateVocabularyFor, } from './catalogs/device-state-vocabulary.js';
158
158
  export { colorForKind, DEFAULT_EVENT_COLOR, EVENT_TAXONOMY, type EventTaxonomyCategory, type EventTaxonomyEntry, type EventTaxonomyLevel, getTaxonomyEntry, subKindsOf, TAXONOMY_COLORS, } from './catalogs/event-taxonomy.js';
@@ -267,6 +267,7 @@ export { hubMotionNativeProvider, readHubMotionDetected, readHubMotionStatus, }
267
267
  export { type ProviderMotionData, ProviderMotionDataSchema, providerMotionEvent, } from './pipeline/provider-motion.js';
268
268
  export { type FormatRunnableModel, stepModelRunsOnFormat, } from './pipeline/step-format-runnable.js';
269
269
  export { isRemovedModelId, REMOVED_MODEL_IDS } from './pipeline/removed-model-ids.js';
270
+ export { applyModelBoundSettings, clearModelBoundOverrides, clearModelBoundSetting, hasModelBoundOverrides, type InapplicableModelBoundOverride, modelBindingKey, type ModelBoundSettingsBag, type ModelBoundSettingSource, type ModelBoundSettingState, resolveModelBoundSetting, writeModelBoundSetting, } from './pipeline/model-bound-settings.js';
270
271
  export { deriveRootFaceRefineRect, ROOT_FACE_REFINE_INPUT_PX, ROOT_FACE_REFINE_SCALE, } from './pipeline/root-face-crop.js';
271
272
  export { DEFAULT_DETAIL_CROP_CONVENTION, DETAIL_CROP_PADDING_FIELD, DETAIL_CROP_PADDING_KEY, DETAIL_CROP_SECTION_ID, DETAIL_CROP_SQUARE_KEY, type DetailCropConvention, DetailCropConventionSchema, type DetailCropRect, deriveDetailCropRect, FULL_IMAGE_BBOX, type HydratedSettingsSection, type HydratedSettingsView, pickDetailCropConvention, readDetailCropConvention, } from './pipeline/detail-crop.js';
272
273
  export { DEFAULT_NATIVE_LEASE_SETTINGS, NATIVE_LEASE_ACTIVITY_FIELD, NATIVE_LEASE_ACTIVITY_KEY, NATIVE_LEASE_ADMISSION_FIELD, NATIVE_LEASE_ADMISSION_KEY, NATIVE_LEASE_BUDGET_FIELD, NATIVE_LEASE_BUDGET_KEY, NATIVE_LEASE_HOLD_FIELD, NATIVE_LEASE_HOLD_KEY, NATIVE_LEASE_SCENE_BUDGET_FIELD, NATIVE_LEASE_SCENE_BUDGET_KEY, NATIVE_LEASE_SECTION_ID, NATIVE_LEASE_TILE_BUDGET_FIELD, NATIVE_LEASE_TILE_BUDGET_KEY, type NativeLeaseAdmission, NativeLeaseAdmissionSchema, type NativeLeaseKnob, type NativeLeaseNumberKnob, type NativeLeaseSettings, type NativeLeaseSettingsOverride, NativeLeaseSettingsSchema, pickNativeLeaseOverride, readNativeLeaseOverride, } from './pipeline/native-lease.js';
package/dist/index.js CHANGED
@@ -5716,7 +5716,16 @@ var ModelFormatEntrySchema = zod.z.object({
5716
5716
  /** Multi-file payload (directory members or sibling files). */
5717
5717
  files: zod.z.array(zod.z.string()).readonly().optional(),
5718
5718
  /** Runtime(s) that can use this format. If omitted, inferred from ModelFormat key */
5719
- runtimes: zod.z.array(zod.z.enum(["python"])).readonly().optional()
5719
+ runtimes: zod.z.array(zod.z.enum(["python"])).readonly().optional(),
5720
+ /**
5721
+ * Content revision of the hosted artefact. Set it, or change it, whenever
5722
+ * the bytes at `url` are replaced in place (same path, new content). A node
5723
+ * records the revision it downloaded next to the file
5724
+ * (`<file>.revision`); a copy with no record or a different one is stale
5725
+ * and is downloaded again, the old copy serving until the new one is
5726
+ * complete. Omitted ⇒ a file on disk is current, whatever it holds (D743).
5727
+ */
5728
+ revision: zod.z.string().min(1).optional()
5720
5729
  });
5721
5730
  /**
5722
5731
  * Extra file that must be downloaded alongside the model (e.g., labels JSON, dict.txt).
@@ -5947,6 +5956,35 @@ var ModelCatalogEntrySchema = zod.z.object({
5947
5956
  */
5948
5957
  defaultConfidence: zod.z.number().min(0).max(1).optional(),
5949
5958
  /**
5959
+ * Per-MODEL default of the per-class confidence floors (`minConfidence<Macro>`
5960
+ * on a detector step), keyed by macro class: `{ person: 0.45 }`. A class
5961
+ * absent here runs at the step slider's global default. The same row shape
5962
+ * the floor measurement produces (`model-floors.json`: modelId → floors), so
5963
+ * a measured table is copied in as-is. An operator override is bound to the
5964
+ * model it was made for and does not survive a model change (D738). A custom
5965
+ * / imported model may declare it; without it, the global defaults apply.
5966
+ */
5967
+ defaultClassFloors: zod.z.record(zod.z.string(), zod.z.number().min(0).max(1)).optional(),
5968
+ /**
5969
+ * The inference precision this model's OpenVINO IR needs on an Intel GPU.
5970
+ * Absent ⇒ the device default (f16 on a GPU). Set to `'f32'` for an FP32 IR
5971
+ * that produces invalid output at f16 — measured 2026-10-07 for YOLO26
5972
+ * base IRs (`yolo26s`: 0 true / 146 false positives; `yolo26m*`: NaN
5973
+ * scores) on the Core Ultra iGPU and the N100. Threaded to the pool as
5974
+ * `PoolModelConfig.gpuInferencePrecision`; the pool sets
5975
+ * INFERENCE_PRECISION_HINT on a GPU only. Costs ~60% latency on the GPU.
5976
+ */
5977
+ gpuInferencePrecision: zod.z.enum(["f32", "f16"]).optional(),
5978
+ /**
5979
+ * ROOT detectors only: per supplied step (`animal-classifier`, …), the
5980
+ * minimum DETECTION score from which this root's own fine label (species,
5981
+ * vehicle type — D736 root supply) is taken (D741). Below it the detection
5982
+ * keeps its macro class without the fine label. `1` = never take it from
5983
+ * this root. Absent ⇒ no floor beyond the macro floor. The supplied step's
5984
+ * `minConfidence` slider, bound to the ROOT model, overrides it.
5985
+ */
5986
+ suppliedLabelFloors: zod.z.record(zod.z.string(), zod.z.number().min(0).max(1)).optional(),
5987
+ /**
5950
5988
  * When true, the executor produces a landmark-aligned crop (similarity warp
5951
5989
  * onto the canonical template) before this step runs, instead of a plain
5952
5990
  * axis-aligned bbox crop. Required for face-recognition embedders (ArcFace):
@@ -48603,6 +48641,37 @@ function frigateLabelFields(labels) {
48603
48641
  suppliesSteps: supplies
48604
48642
  } : { classMap };
48605
48643
  }
48644
+ /**
48645
+ * Per-class confidence-floor defaults of an imported stock Frigate detector
48646
+ * (D738): its per-detection `min_score` default, 0.5, for every class. Its
48647
+ * track-level `threshold` (the median of a track's recent scores) has no
48648
+ * counterpart in CamStack's per-detection floors and is not carried.
48649
+ */
48650
+ var FRIGATE_STOCK_CLASS_FLOORS = Object.freeze({
48651
+ person: .5,
48652
+ vehicle: .5,
48653
+ animal: .5
48654
+ });
48655
+ /**
48656
+ * Per-class floor defaults of an imported Frigate+ detector (D738): the
48657
+ * documented starting `min_score` values for Frigate+ models, which score
48658
+ * higher than the stock ones (person 0.65, car 0.65, cat 0.65, dog 0.70). The
48659
+ * macro `animal` takes the lower of its classes, so no class is cut above its
48660
+ * documented value.
48661
+ */
48662
+ var FRIGATE_PLUS_CLASS_FLOORS = Object.freeze({
48663
+ person: .65,
48664
+ vehicle: .65,
48665
+ animal: .65
48666
+ });
48667
+ /**
48668
+ * The `defaultClassFloors` an imported Frigate entry carries: the import's
48669
+ * own, when it states them, else the defaults of its kind. A fresh object.
48670
+ */
48671
+ function frigateDefaultClassFloors(kind, carried) {
48672
+ if (carried !== void 0) return { ...carried };
48673
+ return { ...kind === "plus" ? FRIGATE_PLUS_CLASS_FLOORS : FRIGATE_STOCK_CLASS_FLOORS };
48674
+ }
48606
48675
  //#endregion
48607
48676
  //#region src/catalogs/device-state-vocabulary.ts
48608
48677
  /**
@@ -71773,6 +71842,131 @@ function isRemovedModelId(stepId, modelId) {
71773
71842
  return REMOVED_MODEL_IDS[stepId]?.includes(modelId) ?? false;
71774
71843
  }
71775
71844
  //#endregion
71845
+ //#region src/pipeline/model-bound-settings.ts
71846
+ /**
71847
+ * Model-bound step settings (D738): an operator value that is only meaningful
71848
+ * for ONE model, stored together with that model's id.
71849
+ *
71850
+ * The per-class confidence floors are the case it exists for. A score is a
71851
+ * property of one detector's output scale — on this hub the median score of a
71852
+ * correct person was 0.78 on `yolov9m-320-int8`, 0.68 on `yolo26s-320-int8`,
71853
+ * 0.40 on `yolo26n-320-int8` and 0.89 on `yolo26s` (640) — so a floor tuned on
71854
+ * one model is wrong on the next. The DEFAULT of such a field belongs to the
71855
+ * model (the catalog entry); an operator OVERRIDE belongs to the model it was
71856
+ * made for.
71857
+ *
71858
+ * The binding is checked at READ time against the model that RUNS, never
71859
+ * enforced by a write on the model-change path: a model can change without any
71860
+ * operator write at all (an unpinned root follows the elected device's
71861
+ * hardware-aware default, D736), and an event-driven reset could be dropped
71862
+ * (events are telemetry, D8/D11). So:
71863
+ *
71864
+ * effective = override when the stored binding names the running model
71865
+ * | override when no binding is stored (a legacy / programmatic
71866
+ * value — it applies to whatever runs, as before D738)
71867
+ * | the running model's default, when it declares one
71868
+ * | the field's global default.
71869
+ *
71870
+ * Storage shape: the value stays a plain number under its own key (every
71871
+ * reader of the raw settings bag keeps working), and the binding is a SIBLING
71872
+ * key, {@link modelBindingKey}. Both are flat so the shallow per-key merges of
71873
+ * the settings layers (node fold, camera override) carry a value and its
71874
+ * binding together whenever one layer writes both — which every writer here
71875
+ * does.
71876
+ *
71877
+ * Lives in the bare `@camstack/types` entry, which every addon bundles, so the
71878
+ * runner (`addon-pipeline`) and the editors (`ui-library`, `addon-admin-ui`)
71879
+ * apply the same rule.
71880
+ */
71881
+ /** Suffix of the sibling key that names the model a stored value was made for. */
71882
+ var MODEL_BINDING_SUFFIX = "ModelId";
71883
+ /** `minConfidencePerson` → `minConfidencePersonModelId`. */
71884
+ function modelBindingKey(key) {
71885
+ return `${key}${MODEL_BINDING_SUFFIX}`;
71886
+ }
71887
+ /** The model a stored value was made for, or `undefined` when unbound. */
71888
+ function storedBinding(settings, key) {
71889
+ const binding = settings?.[modelBindingKey(key)];
71890
+ return typeof binding === "string" && binding.length > 0 ? binding : void 0;
71891
+ }
71892
+ /**
71893
+ * The effective value of `key` for the model that runs (`runningModelId`,
71894
+ * `undefined` when unknown — it then matches no binding).
71895
+ */
71896
+ function resolveModelBoundSetting(settings, key, runningModelId, modelDefault, globalDefault) {
71897
+ const stored = settings?.[key];
71898
+ const binding = storedBinding(settings, key);
71899
+ if (stored !== void 0 && binding === void 0) return {
71900
+ value: stored,
71901
+ source: "override"
71902
+ };
71903
+ if (stored !== void 0 && binding !== void 0 && binding === runningModelId) return {
71904
+ value: stored,
71905
+ source: "override",
71906
+ boundModelId: binding
71907
+ };
71908
+ const inapplicable = stored !== void 0 && binding !== void 0 ? { inapplicableOverride: {
71909
+ value: stored,
71910
+ modelId: binding
71911
+ } } : {};
71912
+ if (modelDefault !== void 0) return {
71913
+ value: modelDefault,
71914
+ source: "model-default",
71915
+ ...inapplicable
71916
+ };
71917
+ return {
71918
+ value: globalDefault,
71919
+ source: "global-default",
71920
+ ...inapplicable
71921
+ };
71922
+ }
71923
+ /**
71924
+ * The OPERATOR layer of a step's settings as the running model sees it: every
71925
+ * model-bound value made for another model is removed (so the default
71926
+ * underneath — the running model's — wins the merge), and every binding key is
71927
+ * stripped. Unbound values are kept. Returns a fresh object; `undefined` stays
71928
+ * `undefined`.
71929
+ */
71930
+ function applyModelBoundSettings(settings, boundKeys, runningModelId) {
71931
+ if (settings === void 0) return void 0;
71932
+ const out = { ...settings };
71933
+ for (const key of boundKeys) {
71934
+ const binding = storedBinding(settings, key);
71935
+ if (binding !== void 0 && binding !== runningModelId) delete out[key];
71936
+ delete out[modelBindingKey(key)];
71937
+ }
71938
+ return out;
71939
+ }
71940
+ /** Store `value` for `key`, made for `modelId`. Returns a fresh object. */
71941
+ function writeModelBoundSetting(settings, key, value, modelId) {
71942
+ return {
71943
+ ...settings,
71944
+ [key]: value,
71945
+ [modelBindingKey(key)]: modelId
71946
+ };
71947
+ }
71948
+ /** Remove an override and its binding — "reset to the model default". */
71949
+ function clearModelBoundSetting(settings, key) {
71950
+ const out = { ...settings };
71951
+ delete out[key];
71952
+ delete out[modelBindingKey(key)];
71953
+ return out;
71954
+ }
71955
+ /** True when any of `boundKeys` has an override IN FORCE for `modelId`. */
71956
+ function hasModelBoundOverrides(settings, boundKeys, modelId) {
71957
+ return boundKeys.some((key) => resolveModelBoundSetting(settings, key, modelId, void 0, void 0).source === "override");
71958
+ }
71959
+ /**
71960
+ * "Reset thresholds to model defaults": remove every override of `boundKeys`
71961
+ * that is in force for `modelId` (bound to it, or unbound), with its binding —
71962
+ * one result, so the editor writes it in one save. An override stored for
71963
+ * ANOTHER model is kept: it is not in force here, and it applies again when
71964
+ * that model runs.
71965
+ */
71966
+ function clearModelBoundOverrides(settings, boundKeys, modelId) {
71967
+ return boundKeys.reduce((acc, key) => resolveModelBoundSetting(acc, key, modelId, void 0, void 0).source === "override" ? clearModelBoundSetting(acc, key) : acc, { ...settings });
71968
+ }
71969
+ //#endregion
71776
71970
  //#region src/pipeline/root-face-crop.ts
71777
71971
  /** Side of the square, as a multiple of the face box's longer side. */
71778
71972
  var ROOT_FACE_REFINE_SCALE = 1.6;
@@ -74451,8 +74645,10 @@ exports.FEEDER_EXAMPLE_ADDON_ID = FEEDER_EXAMPLE_ADDON_ID;
74451
74645
  exports.FEEDER_EXAMPLE_HA_DEVICE_ID = FEEDER_EXAMPLE_HA_DEVICE_ID;
74452
74646
  exports.FFMPEG_PATH_ENV = require_composition.FFMPEG_PATH_ENV;
74453
74647
  exports.FIRST_LEVEL_MACRO_CLASSES = FIRST_LEVEL_MACRO_CLASSES;
74648
+ exports.FRIGATE_PLUS_CLASS_FLOORS = FRIGATE_PLUS_CLASS_FLOORS;
74454
74649
  exports.FRIGATE_PLUS_TO_MACRO = FRIGATE_PLUS_TO_MACRO;
74455
74650
  exports.FRIGATE_PLUS_UNMAPPED_LABELS = FRIGATE_PLUS_UNMAPPED_LABELS;
74651
+ exports.FRIGATE_STOCK_CLASS_FLOORS = FRIGATE_STOCK_CLASS_FLOORS;
74456
74652
  exports.FULL_IMAGE_BBOX = FULL_IMAGE_BBOX;
74457
74653
  exports.FailureContributionSchema = FailureContributionSchema;
74458
74654
  exports.FailureCounters = FailureCounters;
@@ -75442,6 +75638,7 @@ exports.ambientLightSensorCapability = ambientLightSensorCapability;
75442
75638
  exports.applyBlockingEdit = applyBlockingEdit;
75443
75639
  exports.applyModeDelaysEdits = applyModeDelaysEdits;
75444
75640
  exports.applyModeDeviceListEdit = applyModeDeviceListEdit;
75641
+ exports.applyModelBoundSettings = applyModelBoundSettings;
75445
75642
  exports.applyNonBlockingEdit = applyNonBlockingEdit;
75446
75643
  exports.applySecureOnArmEdit = applySecureOnArmEdit;
75447
75644
  exports.asBoolean = require_sleep.asBoolean;
@@ -75506,6 +75703,8 @@ exports.checkRoleAddress = checkRoleAddress;
75506
75703
  exports.classifyBearerPrincipal = classifyBearerPrincipal;
75507
75704
  exports.classifyStream = classifyStream;
75508
75705
  exports.classifyStreams = classifyStreams;
75706
+ exports.clearModelBoundOverrides = clearModelBoundOverrides;
75707
+ exports.clearModelBoundSetting = clearModelBoundSetting;
75509
75708
  exports.climateControlCapability = climateControlCapability;
75510
75709
  exports.clipExportFailure = clipExportFailure;
75511
75710
  exports.clipExportFailureOf = clipExportFailureOf;
@@ -75694,6 +75893,7 @@ exports.formatForRuntime = formatForRuntime;
75694
75893
  exports.formatMediaOwnerKey = formatMediaOwnerKey;
75695
75894
  exports.formatMinutes = formatMinutes;
75696
75895
  exports.formatParkedFor = formatParkedFor;
75896
+ exports.frigateDefaultClassFloors = frigateDefaultClassFloors;
75697
75897
  exports.frigateLabelFields = frigateLabelFields;
75698
75898
  exports.gasCapability = gasCapability;
75699
75899
  exports.gbToBytes = gbToBytes;
@@ -75706,6 +75906,7 @@ exports.getTaxonomyEntry = getTaxonomyEntry;
75706
75906
  exports.gifDeriveSpeed = gifDeriveSpeed;
75707
75907
  exports.gifFilterComplex = gifFilterComplex;
75708
75908
  exports.gifFromMp4Args = gifFromMp4Args;
75909
+ exports.hasModelBoundOverrides = hasModelBoundOverrides;
75709
75910
  exports.hasMotionTrigger = hasMotionTrigger;
75710
75911
  exports.hfModelUrl = hfModelUrl;
75711
75912
  exports.htmlToText = htmlToText;
@@ -75828,6 +76029,7 @@ exports.migrateLegacyDeviceSignalConfig = migrateLegacyDeviceSignalConfig;
75828
76029
  exports.minutesToTimeOfDay = minutesToTimeOfDay;
75829
76030
  exports.modeMayRead = modeMayRead;
75830
76031
  exports.modeMayWrite = modeMayWrite;
76032
+ exports.modelBindingKey = modelBindingKey;
75831
76033
  exports.modelConvertCapability = modelConvertCapability;
75832
76034
  exports.modelDistributorCapability = modelDistributorCapability;
75833
76035
  exports.modelFormatForRuntime = modelFormatForRuntime;
@@ -75967,6 +76169,7 @@ exports.resolveLocationMode = resolveLocationMode;
75967
76169
  exports.resolveMethodAuth = resolveMethodAuth;
75968
76170
  exports.resolveModeDelays = resolveModeDelays;
75969
76171
  exports.resolveModeNotifyPolicy = resolveModeNotifyPolicy;
76172
+ exports.resolveModelBoundSetting = resolveModelBoundSetting;
75970
76173
  exports.resolveMutate = resolveMutate;
75971
76174
  exports.resolveNotificationTapAddress = resolveNotificationTapAddress;
75972
76175
  exports.resolvePoolMemoryPolicy = resolvePoolMemoryPolicy;
@@ -76127,6 +76330,7 @@ exports.wiringNodeHealthSchema = wiringNodeHealthSchema;
76127
76330
  exports.wiringProbeKindSchema = wiringProbeKindSchema;
76128
76331
  exports.wiringProbeResultSchema = wiringProbeResultSchema;
76129
76332
  exports.withLocationMode = withLocationMode;
76333
+ exports.writeModelBoundSetting = writeModelBoundSetting;
76130
76334
  exports.zodEntriesToConfigUI = zodEntriesToConfigUI;
76131
76335
  exports.zoneAnalyticsCapability = zoneAnalyticsCapability;
76132
76336
  exports.zoneRulesCapability = zoneRulesCapability;