@camstack/addon-post-analysis 1.2.330 → 1.2.332

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.
@@ -11521,11 +11521,11 @@ var ModelVariantGroupSchema = object({
11521
11521
  /** Quantization axis. Omit ⇒ the fp32 base build. */
11522
11522
  precision: _enum(["fp32", "int8"]).optional(),
11523
11523
  /**
11524
- * Speed-optimization axis. Omit ⇒ the standard build. `fast` marks a
11525
- * latency-optimized export (e.g. ReLU-activation variant) — the slot the
11526
- * future performance variants plug into.
11524
+ * Training / latency-variant axis. Omit ⇒ the standard build. `test` marks
11525
+ * an alternate training of the same family (Scrypted `relu_test`); chip
11526
+ * label is "Test".
11527
11527
  */
11528
- optimization: _enum(["standard", "fast"]).optional(),
11528
+ optimization: _enum(["standard", "test"]).optional(),
11529
11529
  /**
11530
11530
  * Input-resolution axis (square input side, px). Omit ⇒ the family's native
11531
11531
  * resolution (640 for yolo26). Reduced-input builds (320 / 256) are a big,
@@ -11548,9 +11548,10 @@ var ModelProviderIdSchema = _enum([
11548
11548
  * are per upstream. A persisted custom-model row written when this field was a
11549
11549
  * string still parses — the string is lifted into `{ weights }`.
11550
11550
  *
11551
- * Every licence surface (the admin "Models and licenses" page,
11552
- * `THIRD_PARTY_MODELS.md`, the Hugging Face model table) is GENERATED from
11553
- * these records by `scripts/gen-model-licenses.ts` (D661).
11551
+ * Every machine licence surface (`THIRD_PARTY_MODELS.md`, the Hugging Face
11552
+ * model table) is GENERATED from these records by
11553
+ * `scripts/gen-model-licenses.ts` (D661). Operator-facing docs live in
11554
+ * `camstack/docs` → `/docs/detection/models`.
11554
11555
  */
11555
11556
  var ModelLicenseSchema = preprocess((value) => typeof value === "string" ? { weights: value } : value, object({
11556
11557
  /** SPDX id of the WEIGHTS' terms, a `LicenseRef-*` for non-SPDX terms, or `UNKNOWN`. */
@@ -18385,7 +18386,7 @@ method(object({
18385
18386
  timeoutMs: 6e5
18386
18387
  });
18387
18388
  method(object({
18388
- nodeId: string(),
18389
+ targetNodeId: string(),
18389
18390
  modelId: string(),
18390
18391
  format: _enum(MODEL_FORMATS),
18391
18392
  entry: ModelCatalogEntrySchema
@@ -23248,39 +23249,19 @@ var CLUSTER_MODEL_SCOPED_STEPS = [{
23248
23249
  label: "Face recognition model",
23249
23250
  defaultModelId: "auraface-r100",
23250
23251
  indexName: "the enrolled face gallery",
23251
- options: [
23252
- {
23253
- id: "auraface-r100",
23254
- label: "AuraFace R100"
23255
- },
23256
- {
23257
- id: "arcface-r100",
23258
- label: "ArcFace (ResNet34)"
23259
- },
23260
- {
23261
- id: "inception-resnet-v1",
23262
- label: "Inception ResNet V1"
23263
- }
23264
- ]
23252
+ options: [{
23253
+ id: "auraface-r100",
23254
+ label: "AuraFace R100"
23255
+ }]
23265
23256
  }, {
23266
23257
  stepId: "clip-embedding",
23267
23258
  label: "Semantic search model",
23268
- defaultModelId: "mobileclip-s1",
23259
+ defaultModelId: "siglip2-b16-224",
23269
23260
  indexName: "the object semantic-search index",
23270
- options: [
23271
- {
23272
- id: "mobileclip-s1",
23273
- label: "MobileCLIP S1"
23274
- },
23275
- {
23276
- id: "mobileclip-s2",
23277
- label: "MobileCLIP S2"
23278
- },
23279
- {
23280
- id: "siglip2-b16-224",
23281
- label: "SigLIP2 B/16 (Apache-2.0)"
23282
- }
23283
- ]
23261
+ options: [{
23262
+ id: "siglip2-b16-224",
23263
+ label: "SigLIP2 B/16 (Apache-2.0)"
23264
+ }]
23284
23265
  }];
23285
23266
  /**
23286
23267
  * The settings key holding one step's cluster model choice.
@@ -36576,7 +36557,13 @@ var OsdStatusSchema = object({ overlays: array(object({
36576
36557
  */
36577
36558
  availablePositions: array(OsdPositionEnum).readonly(),
36578
36559
  /** Firmware does not allow editing the `text` field (e.g. timestamp). */
36579
- readOnly: boolean().optional()
36560
+ readOnly: boolean().optional(),
36561
+ /**
36562
+ * Firmware text ceiling for this overlay. Absent = no known limit.
36563
+ * The OSD manager truncates here on every write — never stores its own
36564
+ * copy on the binding.
36565
+ */
36566
+ maxCharacters: number().int().positive().optional()
36580
36567
  })).readonly() });
36581
36568
  var OsdOverlayPatchSchema = object({
36582
36569
  enabled: boolean().optional(),
@@ -36627,7 +36614,9 @@ var OsdTemplateBindingSchema = object({
36627
36614
  valuePath: string().min(1).max(64),
36628
36615
  /** Convert TO this unit at render (`tryConvertUnit`). Absent = source unit. */
36629
36616
  displayUnit: string().max(16).optional(),
36630
- maxDecimals: number().int().min(0).max(4).default(1)
36617
+ maxDecimals: number().int().min(0).max(4).default(1),
36618
+ /** Raw value → display text (same shape as slot binding). Empty string hides. */
36619
+ valueMap: record(string(), string()).optional()
36631
36620
  });
36632
36621
  /**
36633
36622
  * A named template: bindings (alias → leaf field) + a parser that
@@ -36677,18 +36666,11 @@ var OsdSlotBindingSchema = object({
36677
36666
  source: OsdSourceSchema,
36678
36667
  /** `${value}` and `${unit}` are substituted; every occurrence. */
36679
36668
  template: string().max(96).default("${value}"),
36680
- /** Truncate with an ellipsis past this length. Absent = no limit. */
36681
- maxCharacters: number().int().min(4).max(64).optional(),
36682
36669
  /**
36683
36670
  * Decimal places for a numeric value. `0` yields an integer — the
36684
36671
  * documented workaround for firmwares that reject `.` in overlay text.
36685
36672
  */
36686
36673
  maxDecimals: number().int().min(0).max(4).default(1),
36687
- /**
36688
- * Appended via `${unit}` when no unit conversion produces a label.
36689
- * Prefer `source.displayUnit` for converted device-state values.
36690
- */
36691
- unitLabel: string().max(8).optional(),
36692
36674
  /** Raw value → display text, e.g. `{"true":"MOTION","false":""}`. */
36693
36675
  valueMap: record(string(), string()).optional(),
36694
36676
  /** Time windows in which the slot is shown. Absent = always. */
@@ -36697,9 +36679,7 @@ var OsdSlotBindingSchema = object({
36697
36679
  * Display gate, in the notification centre's condition vocabulary.
36698
36680
  * Only the keys reported by `getConditionSupport` are accepted.
36699
36681
  */
36700
- conditions: NcConditionsSchema.optional(),
36701
- /** Rendered when the gate is closed or the value unreadable. Empty = hide. */
36702
- fallbackText: string().max(64).default("")
36682
+ conditions: NcConditionsSchema.optional()
36703
36683
  });
36704
36684
  /** One camera slot, as the operator sees it: firmware truth + our binding. */
36705
36685
  var OsdSlotViewSchema = object({
@@ -56016,7 +55996,7 @@ var NC_TEMPLATE_VARS = [
56016
55996
  {
56017
55997
  name: "devices",
56018
55998
  label: "Devices",
56019
- description: "node-inference-unavailable: the affected cameras, comma-joined. Alarm arm / refusal: HOW MANY devices are armed (or open).",
55999
+ description: "node-inference-unavailable: the affected cameras, comma-joined. Alarm arm / arming / refusal: HOW MANY devices are armed (or open).",
56020
56000
  example: "Ingresso, Garage",
56021
56001
  group: "system",
56022
56002
  families: ["rule"],
@@ -56025,6 +56005,7 @@ var NC_TEMPLATE_VARS = [
56025
56005
  systemEventKinds: [
56026
56006
  "node-inference-unavailable",
56027
56007
  "alarm-armed",
56008
+ "alarm-arming",
56028
56009
  "alarm-arm-refused"
56029
56010
  ]
56030
56011
  },
@@ -56245,18 +56226,18 @@ var NC_TEMPLATE_VARS = [
56245
56226
  {
56246
56227
  name: "rules",
56247
56228
  label: "Covering rules",
56248
- description: "How many enabled rules the armed mode gates.",
56229
+ description: "How many enabled rules the armed / arming mode gates.",
56249
56230
  example: "2",
56250
56231
  group: "system",
56251
56232
  families: ["rule"],
56252
56233
  fields: [...RULE_TEXT],
56253
56234
  kinds: ["system"],
56254
- systemEventKinds: ["alarm-armed"]
56235
+ systemEventKinds: ["alarm-armed", "alarm-arming"]
56255
56236
  },
56256
56237
  {
56257
56238
  name: "names",
56258
56239
  label: "Device names",
56259
- description: "Armed: the devices armed. Arming: the devices this mode cannot arm. Refusal: the open sensors.",
56240
+ description: "Armed / arming: the Active devices (or every skipped name when none are Active). Refusal: the open sensors.",
56260
56241
  example: "Ingresso, Garage",
56261
56242
  group: "system",
56262
56243
  families: ["rule"],
@@ -56277,7 +56258,29 @@ var NC_TEMPLATE_VARS = [
56277
56258
  families: ["rule"],
56278
56259
  fields: [...RULE_TEXT],
56279
56260
  kinds: ["system"],
56280
- systemEventKinds: ["alarm-armed"]
56261
+ systemEventKinds: ["alarm-armed", "alarm-arming"]
56262
+ },
56263
+ {
56264
+ name: "active",
56265
+ label: "Active count",
56266
+ description: "How many named devices the armed / arming mode is watching (title: n attivi / n active).",
56267
+ example: "3",
56268
+ group: "system",
56269
+ families: ["rule"],
56270
+ fields: [...RULE_TEXT],
56271
+ kinds: ["system"],
56272
+ systemEventKinds: ["alarm-armed", "alarm-arming"]
56273
+ },
56274
+ {
56275
+ name: "skipped",
56276
+ label: "Skipped count",
56277
+ description: "How many named devices the mode cannot arm — muted, detection off, offline (title: m saltati).",
56278
+ example: "1",
56279
+ group: "system",
56280
+ families: ["rule"],
56281
+ fields: [...RULE_TEXT],
56282
+ kinds: ["system"],
56283
+ systemEventKinds: ["alarm-armed", "alarm-arming"]
56281
56284
  },
56282
56285
  {
56283
56286
  name: "bypassedNames",
@@ -57954,23 +57957,8 @@ async function readClusterModelPinStrict(api, stepId) {
57954
57957
  reason: choice.reason
57955
57958
  };
57956
57959
  }
57957
- var APPLE_MOBILECLIP_AMLR = {
57958
- weights: "LicenseRef-Apple-AMLR",
57959
- code: "MIT",
57960
- upstream: {
57961
- name: "Apple ml-mobileclip",
57962
- url: "https://github.com/apple/ml-mobileclip"
57963
- },
57964
- url: "https://github.com/apple/ml-mobileclip/blob/main/LICENSE_MODELS",
57965
- attribution: "Apple Machine Learning Research Model is licensed under the Apple Machine Learning Research Model License Agreement.",
57966
- modifications: "model derivative: vision encoders converted to OpenVINO IR and CoreML FP16",
57967
- hosting: "camstack-hf",
57968
- nonCommercial: true
57969
- };
57970
- var APPLE_MOBILECLIP_TEXT_AMLR = {
57971
- ...APPLE_MOBILECLIP_AMLR,
57972
- modifications: "model derivative: text encoders quantised to INT8 ONNX and converted to OpenVINO IR"
57973
- };
57960
+ //#endregion
57961
+ //#region src/embedding-encoder/catalogs/model-licenses.ts
57974
57962
  var SIGLIP2_APACHE = {
57975
57963
  weights: "Apache-2.0",
57976
57964
  code: "Apache-2.0",
@@ -57996,13 +57984,11 @@ var SIGLIP2_TEXT_APACHE = {
57996
57984
  var HF_REPO = "camstack/camstack-models";
57997
57985
  var hf = (path) => hfModelUrl(HF_REPO, path);
57998
57986
  /**
57999
- * The text tower's tokenizer, in HF `tokenizers` format, hosted next to every
58000
- * text-encoder onnx (`.../onnx/tokenizer.json`) and fetched as a sibling file so
58001
- * it lands beside the model. Each model folder hosts ITS OWN (MobileCLIP: the
58002
- * CLIP BPE, vocab 49408; SigLIP2: Gemma SentencePiece, 256k, lower-casing).
57987
+ * SigLIP2's tokenizer (HF `tokenizers` format, Gemma SentencePiece, 256k,
57988
+ * lower-casing), hosted next to the text-encoder onnx and fetched as a sibling
57989
+ * file so it lands beside the model. It has its own file name on purpose: see
57990
+ * `ClipModelMeta.tokenizerFile`.
58003
57991
  */
58004
- var TOKENIZER_FILE = "tokenizer.json";
58005
- /** SigLIP2's tokenizer — a DIFFERENT file name on purpose: see `ClipModelMeta.tokenizerFile`. */
58006
57992
  var SIGLIP2_TOKENIZER_FILE = "camstack-siglip2-b16-224-tokenizer.json";
58007
57993
  var ovFormat = (url, sizeMB) => {
58008
57994
  const base = url.split("/").pop() ?? "";
@@ -58015,195 +58001,75 @@ var ovFormat = (url, sizeMB) => {
58015
58001
  };
58016
58002
  };
58017
58003
  /**
58018
- * Files inside an .mlpackage directory bundle.
58019
- * Must be fetched alongside the package root when isDirectory is true.
58020
- */
58021
- var MLPACKAGE_FILES = [
58022
- "Manifest.json",
58023
- "Data/com.apple.CoreML/model.mlmodel",
58024
- "Data/com.apple.CoreML/weights/weight.bin"
58025
- ];
58026
- /**
58027
- * The MobileCLIP feature-space contract (D649 — see `clip-model.ts` in
58028
- * `@camstack/types`). S1 and S2 share the historical 512-d `object-clip` index,
58029
- * separated by each row's `modelId`; the CLIP BPE window is 77 tokens padded
58030
- * with 0; 0.2 is the floor the search always shipped with, measured to keep 96%
58031
- * of matched COCO caption-image pairs on S1.
58032
- */
58033
- var mobileclipMeta = (textModelId) => ({
58034
- textModelId,
58035
- embeddingDim: 512,
58036
- vectorIndex: "object-clip",
58037
- tokenizerFile: TOKENIZER_FILE,
58038
- contextLength: 77,
58039
- padId: 0,
58040
- searchMinScore: .2
58041
- });
58042
- /**
58043
- * SigLIP2 B/16-224 (D649). 768-d, so its OWN index; a 64-token Gemma
58044
- * SentencePiece window padded with 0 (the hosted `tokenizer.json` lower-cases,
58045
- * see `scripts/build-siglip2-model.py`). The floor is SIGLIP2_SEARCH_MIN_SCORE.
58046
- */
58047
- var SIGLIP2_META = {
58048
- textModelId: "siglip2-b16-224-text",
58049
- embeddingDim: 768,
58050
- vectorIndex: "object-clip-siglip2-b16-224",
58051
- tokenizerFile: SIGLIP2_TOKENIZER_FILE,
58052
- contextLength: 64,
58053
- padId: 0,
58054
- searchMinScore: .1
58055
- };
58056
- /**
58057
58004
  * NO onnx vision builds, deliberately (2026-08-21). The int8 ONNX vision
58058
58005
  * exports were measured misaligned with the text encoders (matched image↔text
58059
58006
  * cosine ≈ 0.01 vs ≈ 0.22 for the fp16 openvino/coreml builds) — see the
58060
58007
  * catalog note in `addon-pipeline/.../model-catalogs.ts`. The image-encode leg
58061
58008
  * that consumed them here (`embeddingEncoder.encode` → PythonRawTensorEngine)
58062
- * is retired with them: its only caller discarded the vector, and its
58063
- * `preprocessForClip` applied OpenAI mean/std that MobileCLIP never used.
58064
- * S0 was retired the same day (measured worst of the family on fleet crops).
58065
- */
58066
- var CLIP_IMAGE_MODELS = [
58067
- {
58068
- id: "mobileclip-s1",
58069
- license: APPLE_MOBILECLIP_AMLR,
58070
- name: "MobileCLIP S1",
58071
- description: "Apple MobileCLIP S1 — balanced vision encoder, 512-dim, 256×256 (fp16 OpenVINO/CoreML)",
58072
- inputSize: {
58073
- width: 256,
58074
- height: 256
58075
- },
58076
- labels: [],
58077
- inputNormalization: "none",
58078
- clip: mobileclipMeta("mobileclip-s1-text"),
58079
- formats: {
58080
- openvino: ovFormat(hf("clip/mobileclip-s1/openvino/camstack-mobileclip-s1-vision.xml"), 55),
58081
- coreml: {
58082
- url: hf("clip/mobileclip-s1/coreml/camstack-mobileclip-s1-vision.mlpackage"),
58083
- sizeMB: 65,
58084
- isDirectory: true,
58085
- files: [...MLPACKAGE_FILES],
58086
- runtimes: ["python"]
58087
- }
58088
- }
58089
- },
58090
- {
58091
- id: "mobileclip-s2",
58092
- license: APPLE_MOBILECLIP_AMLR,
58093
- name: "MobileCLIP S2",
58094
- description: "Apple MobileCLIP S2 — high-accuracy vision encoder, 512-dim, 256×256 (fp16 OpenVINO/CoreML)",
58095
- inputSize: {
58096
- width: 256,
58097
- height: 256
58098
- },
58099
- labels: [],
58100
- inputNormalization: "none",
58101
- clip: mobileclipMeta("mobileclip-s2-text"),
58102
- formats: {
58103
- openvino: ovFormat(hf("clip/mobileclip-s2/openvino/camstack-mobileclip-s2-vision.xml"), 90),
58104
- coreml: {
58105
- url: hf("clip/mobileclip-s2/coreml/camstack-mobileclip-s2-vision.mlpackage"),
58106
- sizeMB: 110,
58107
- isDirectory: true,
58108
- files: [...MLPACKAGE_FILES],
58109
- runtimes: ["python"]
58110
- }
58111
- }
58112
- },
58113
- {
58114
- id: "siglip2-b16-224",
58115
- license: SIGLIP2_APACHE,
58116
- name: "SigLIP2 B/16",
58117
- description: "Google SigLIP2 base, patch 16, 224×224 — Apache-2.0 vision encoder, 768-dim (fp16 OpenVINO/CoreML)",
58118
- inputSize: {
58119
- width: 224,
58120
- height: 224
58121
- },
58122
- labels: [],
58123
- inputNormalization: "none",
58124
- clip: SIGLIP2_META,
58125
- formats: {
58126
- openvino: ovFormat(hf("clip/siglip2/openvino/camstack-siglip2-b16-224-vision.xml"), 186),
58127
- coreml: {
58128
- url: hf("clip/siglip2/coreml/camstack-siglip2-b16-224-vision.mlpackage"),
58129
- sizeMB: 185,
58130
- isDirectory: true,
58131
- files: [...MLPACKAGE_FILES],
58132
- runtimes: ["python"]
58133
- }
58009
+ * is retired with them.
58010
+ *
58011
+ * SigLIP2 is the SOLE survivor: MobileCLIP S0/S1/S2 (Apple AMLR, non-commercial)
58012
+ * left the catalog and the cluster for good (D703).
58013
+ */
58014
+ var CLIP_IMAGE_MODELS = [{
58015
+ id: "siglip2-b16-224",
58016
+ license: SIGLIP2_APACHE,
58017
+ name: "SigLIP2 B/16",
58018
+ description: "Google SigLIP2 base, patch 16, 224×224 — Apache-2.0 vision encoder, 768-dim (fp16 OpenVINO/CoreML)",
58019
+ inputSize: {
58020
+ width: 224,
58021
+ height: 224
58022
+ },
58023
+ labels: [],
58024
+ inputNormalization: "none",
58025
+ clip: {
58026
+ textModelId: "siglip2-b16-224-text",
58027
+ embeddingDim: 768,
58028
+ vectorIndex: "object-clip-siglip2-b16-224",
58029
+ tokenizerFile: SIGLIP2_TOKENIZER_FILE,
58030
+ contextLength: 64,
58031
+ padId: 0,
58032
+ searchMinScore: .1
58033
+ },
58034
+ formats: {
58035
+ openvino: ovFormat(hf("clip/siglip2/openvino/camstack-siglip2-b16-224-vision.xml"), 186),
58036
+ coreml: {
58037
+ url: hf("clip/siglip2/coreml/camstack-siglip2-b16-224-vision.mlpackage"),
58038
+ sizeMB: 185,
58039
+ isDirectory: true,
58040
+ files: [...[
58041
+ "Manifest.json",
58042
+ "Data/com.apple.CoreML/model.mlmodel",
58043
+ "Data/com.apple.CoreML/weights/weight.bin"
58044
+ ]],
58045
+ runtimes: ["python"]
58134
58046
  }
58135
58047
  }
58136
- ];
58137
- /**
58138
- * The int8 TEXT onnx encoders are healthy — unlike the retired int8 vision
58139
- * exports. Verified 2026-08-21: the live search path (fp16 openvino vision
58140
- * vectors ⋅ int8 onnx text queries) ranks correctly on the real index, and the
58141
- * local cross-check aligns them with the fp16 vision space (cos ≈ 0.22 on
58142
- * matched pairs).
58143
- */
58144
- var CLIP_TEXT_MODELS = [
58145
- {
58146
- id: "mobileclip-s1-text",
58147
- license: APPLE_MOBILECLIP_TEXT_AMLR,
58148
- name: "MobileCLIP S1 Text Encoder",
58149
- description: "Text encoder for MobileCLIP S1, 512-dim, int8 quantized (61 MB)",
58150
- inputSize: {
58151
- width: 0,
58152
- height: 0
58153
- },
58154
- labels: [],
58155
- formats: {
58156
- onnx: {
58157
- url: hf("clip/mobileclip-s1/onnx/camstack-mobileclip-s1-text.onnx"),
58158
- sizeMB: 61,
58159
- files: [TOKENIZER_FILE]
58160
- },
58161
- openvino: ovFormat(hf("clip/mobileclip-s1/openvino/camstack-mobileclip-s1-text.xml"), 121)
58162
- }
58163
- },
58164
- {
58165
- id: "mobileclip-s2-text",
58166
- license: APPLE_MOBILECLIP_TEXT_AMLR,
58167
- name: "MobileCLIP S2 Text Encoder",
58168
- description: "Text encoder for MobileCLIP S2, 512-dim, int8 quantized (61 MB)",
58169
- inputSize: {
58170
- width: 0,
58171
- height: 0
58172
- },
58173
- labels: [],
58174
- formats: {
58175
- onnx: {
58176
- url: hf("clip/mobileclip-s2/onnx/camstack-mobileclip-s2-text.onnx"),
58177
- sizeMB: 61,
58178
- files: [TOKENIZER_FILE]
58179
- },
58180
- openvino: ovFormat(hf("clip/mobileclip-s2/openvino/camstack-mobileclip-s2-text.xml"), 121)
58181
- }
58182
- },
58183
- {
58184
- id: "siglip2-b16-224-text",
58185
- license: SIGLIP2_TEXT_APACHE,
58186
- name: "SigLIP2 B/16 Text Encoder",
58187
- description: "Text encoder for SigLIP2 B/16, 768-dim, fp16 (565 MB)",
58188
- inputSize: {
58189
- width: 0,
58190
- height: 0
58048
+ }];
58049
+ /** The text tower of the one CLIP model (fp16 onnx, aligned with the fp16 vision space). */
58050
+ var CLIP_TEXT_MODELS = [{
58051
+ id: "siglip2-b16-224-text",
58052
+ license: SIGLIP2_TEXT_APACHE,
58053
+ name: "SigLIP2 B/16 Text Encoder",
58054
+ description: "Text encoder for SigLIP2 B/16, 768-dim, fp16 (565 MB)",
58055
+ inputSize: {
58056
+ width: 0,
58057
+ height: 0
58058
+ },
58059
+ labels: [],
58060
+ formats: {
58061
+ onnx: {
58062
+ url: hf("clip/siglip2/onnx/camstack-siglip2-b16-224-text.onnx"),
58063
+ sizeMB: 565,
58064
+ files: [SIGLIP2_TOKENIZER_FILE]
58191
58065
  },
58192
- labels: [],
58193
- formats: {
58194
- onnx: {
58195
- url: hf("clip/siglip2/onnx/camstack-siglip2-b16-224-text.onnx"),
58196
- sizeMB: 565,
58197
- files: [SIGLIP2_TOKENIZER_FILE]
58198
- },
58199
- openvino: ovFormat(hf("clip/siglip2/openvino/camstack-siglip2-b16-224-text.xml"), 565)
58200
- }
58066
+ openvino: ovFormat(hf("clip/siglip2/openvino/camstack-siglip2-b16-224-text.xml"), 565)
58201
58067
  }
58202
- ];
58068
+ }];
58203
58069
  //#endregion
58204
58070
  //#region src/shared/clip/clip-model-registry.ts
58205
58071
  /** The model in force when nobody has chosen — the cluster row's default. */
58206
- var DEFAULT_CLIP_MODEL = "mobileclip-s1";
58072
+ var DEFAULT_CLIP_MODEL = "siglip2-b16-224";
58207
58073
  /**
58208
58074
  * Build a registry from catalog entries. Throws when two models share an index
58209
58075
  * at different dimensions: that is a catalog defect, and the vector store would