@camstack/types 1.2.303 → 1.2.304

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.
package/dist/addon.js CHANGED
@@ -137,8 +137,7 @@ var CAP_INPUT_DEFAULTS = Object.freeze({
137
137
  "setSlotBinding": { "binding": { "__nested__": {
138
138
  "enabled": true,
139
139
  "template": "${value}",
140
- "maxDecimals": 1,
141
- "fallbackText": ""
140
+ "maxDecimals": 1
142
141
  } } },
143
142
  "upsertTemplate": { "template": { "__nested__": {
144
143
  "bindings": [],
package/dist/addon.mjs CHANGED
@@ -136,8 +136,7 @@ var CAP_INPUT_DEFAULTS = Object.freeze({
136
136
  "setSlotBinding": { "binding": { "__nested__": {
137
137
  "enabled": true,
138
138
  "template": "${value}",
139
- "maxDecimals": 1,
140
- "fallbackText": ""
139
+ "maxDecimals": 1
141
140
  } } },
142
141
  "upsertTemplate": { "template": { "__nested__": {
143
142
  "bindings": [],
@@ -150,7 +150,7 @@ export declare const CustomModelDescriptorSchema: z.ZodObject<{
150
150
  }>>;
151
151
  optimization: z.ZodOptional<z.ZodEnum<{
152
152
  standard: "standard";
153
- fast: "fast";
153
+ test: "test";
154
154
  }>>;
155
155
  resolution: z.ZodOptional<z.ZodNumber>;
156
156
  }, z.core.$strip>>;
@@ -329,7 +329,7 @@ export declare const customModelRegistryCapability: {
329
329
  }>>;
330
330
  optimization: z.ZodOptional<z.ZodEnum<{
331
331
  standard: "standard";
332
- fast: "fast";
332
+ test: "test";
333
333
  }>>;
334
334
  resolution: z.ZodOptional<z.ZodNumber>;
335
335
  }, z.core.$strip>>;
@@ -260,7 +260,7 @@ export declare const modelConvertCapability: {
260
260
  }>>;
261
261
  optimization: z.ZodOptional<z.ZodEnum<{
262
262
  standard: "standard";
263
- fast: "fast";
263
+ test: "test";
264
264
  }>>;
265
265
  resolution: z.ZodOptional<z.ZodNumber>;
266
266
  }, z.core.$strip>>;
@@ -9,9 +9,15 @@ import { type InferProvider } from './capability-definition.js';
9
9
  * needs the Moleculer broker + the deploy-stage registry, which a forked addon
10
10
  * can't reach. `addon-model-studio` drives it via `ctx.api` and owns the
11
11
  * per-node availability map.
12
+ *
13
+ * The destination is `targetNodeId`, NOT `nodeId`. Cap routers and the
14
+ * Moleculer tRPC link strip an input field named `nodeId` and use it as a
15
+ * route pin (resolve the provider ON that node). Naming the destination
16
+ * `nodeId` routed the call to the agent — which does not host this
17
+ * singleton — and handed the provider an input with the destination missing.
12
18
  */
13
19
  export declare const ModelDistributeInputSchema: z.ZodObject<{
14
- nodeId: z.ZodString;
20
+ targetNodeId: z.ZodString;
15
21
  modelId: z.ZodString;
16
22
  format: z.ZodEnum<{
17
23
  onnx: "onnx";
@@ -152,7 +158,7 @@ export declare const ModelDistributeInputSchema: z.ZodObject<{
152
158
  }>>;
153
159
  optimization: z.ZodOptional<z.ZodEnum<{
154
160
  standard: "standard";
155
- fast: "fast";
161
+ test: "test";
156
162
  }>>;
157
163
  resolution: z.ZodOptional<z.ZodNumber>;
158
164
  }, z.core.$strip>>;
@@ -195,7 +201,7 @@ export declare const modelDistributorCapability: {
195
201
  readonly internal: true;
196
202
  readonly methods: {
197
203
  readonly distributeModel: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
198
- nodeId: z.ZodString;
204
+ targetNodeId: z.ZodString;
199
205
  modelId: z.ZodString;
200
206
  format: z.ZodEnum<{
201
207
  onnx: "onnx";
@@ -336,7 +342,7 @@ export declare const modelDistributorCapability: {
336
342
  }>>;
337
343
  optimization: z.ZodOptional<z.ZodEnum<{
338
344
  standard: "standard";
339
- fast: "fast";
345
+ test: "test";
340
346
  }>>;
341
347
  resolution: z.ZodOptional<z.ZodNumber>;
342
348
  }, z.core.$strip>>;
@@ -57,6 +57,7 @@ export declare const OsdTemplateBindingSchema: z.ZodObject<{
57
57
  valuePath: z.ZodString;
58
58
  displayUnit: z.ZodOptional<z.ZodString>;
59
59
  maxDecimals: z.ZodDefault<z.ZodNumber>;
60
+ valueMap: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
60
61
  }, z.core.$strip>;
61
62
  export type OsdTemplateBinding = z.infer<typeof OsdTemplateBindingSchema>;
62
63
  /**
@@ -76,6 +77,7 @@ export declare const OsdNamedTemplateSchema: z.ZodObject<{
76
77
  valuePath: z.ZodString;
77
78
  displayUnit: z.ZodOptional<z.ZodString>;
78
79
  maxDecimals: z.ZodDefault<z.ZodNumber>;
80
+ valueMap: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
79
81
  }, z.core.$strip>>>;
80
82
  parser: z.ZodDefault<z.ZodString>;
81
83
  }, z.core.$strip>;
@@ -131,9 +133,7 @@ export declare const OsdSlotBindingSchema: z.ZodObject<{
131
133
  templateId: z.ZodString;
132
134
  }, z.core.$strip>], "kind">;
133
135
  template: z.ZodDefault<z.ZodString>;
134
- maxCharacters: z.ZodOptional<z.ZodNumber>;
135
136
  maxDecimals: z.ZodDefault<z.ZodNumber>;
136
- unitLabel: z.ZodOptional<z.ZodString>;
137
137
  valueMap: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
138
138
  schedule: z.ZodOptional<z.ZodObject<{
139
139
  windows: z.ZodArray<z.ZodObject<{
@@ -280,7 +280,6 @@ export declare const OsdSlotBindingSchema: z.ZodObject<{
280
280
  confirmWindowSec: z.ZodOptional<z.ZodNumber>;
281
281
  }, z.core.$strip>>;
282
282
  }, z.core.$strip>>;
283
- fallbackText: z.ZodDefault<z.ZodString>;
284
283
  }, z.core.$strip>;
285
284
  export type OsdSlotBinding = z.infer<typeof OsdSlotBindingSchema>;
286
285
  /** One camera slot, as the operator sees it: firmware truth + our binding. */
@@ -320,9 +319,7 @@ export declare const OsdSlotViewSchema: z.ZodObject<{
320
319
  templateId: z.ZodString;
321
320
  }, z.core.$strip>], "kind">;
322
321
  template: z.ZodDefault<z.ZodString>;
323
- maxCharacters: z.ZodOptional<z.ZodNumber>;
324
322
  maxDecimals: z.ZodDefault<z.ZodNumber>;
325
- unitLabel: z.ZodOptional<z.ZodString>;
326
323
  valueMap: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
327
324
  schedule: z.ZodOptional<z.ZodObject<{
328
325
  windows: z.ZodArray<z.ZodObject<{
@@ -469,7 +466,6 @@ export declare const OsdSlotViewSchema: z.ZodObject<{
469
466
  confirmWindowSec: z.ZodOptional<z.ZodNumber>;
470
467
  }, z.core.$strip>>;
471
468
  }, z.core.$strip>>;
472
- fallbackText: z.ZodDefault<z.ZodString>;
473
469
  }, z.core.$strip>>;
474
470
  }, z.core.$strip>;
475
471
  export type OsdSlotView = z.infer<typeof OsdSlotViewSchema>;
@@ -581,9 +577,7 @@ export declare const osdManagerCapability: {
581
577
  templateId: z.ZodString;
582
578
  }, z.core.$strip>], "kind">;
583
579
  template: z.ZodDefault<z.ZodString>;
584
- maxCharacters: z.ZodOptional<z.ZodNumber>;
585
580
  maxDecimals: z.ZodDefault<z.ZodNumber>;
586
- unitLabel: z.ZodOptional<z.ZodString>;
587
581
  valueMap: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
588
582
  schedule: z.ZodOptional<z.ZodObject<{
589
583
  windows: z.ZodArray<z.ZodObject<{
@@ -730,7 +724,6 @@ export declare const osdManagerCapability: {
730
724
  confirmWindowSec: z.ZodOptional<z.ZodNumber>;
731
725
  }, z.core.$strip>>;
732
726
  }, z.core.$strip>>;
733
- fallbackText: z.ZodDefault<z.ZodString>;
734
727
  }, z.core.$strip>>;
735
728
  }, z.core.$strip>>;
736
729
  }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
@@ -861,9 +854,7 @@ export declare const osdManagerCapability: {
861
854
  templateId: z.ZodString;
862
855
  }, z.core.$strip>], "kind">;
863
856
  template: z.ZodDefault<z.ZodString>;
864
- maxCharacters: z.ZodOptional<z.ZodNumber>;
865
857
  maxDecimals: z.ZodDefault<z.ZodNumber>;
866
- unitLabel: z.ZodOptional<z.ZodString>;
867
858
  valueMap: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
868
859
  schedule: z.ZodOptional<z.ZodObject<{
869
860
  windows: z.ZodArray<z.ZodObject<{
@@ -1010,7 +1001,6 @@ export declare const osdManagerCapability: {
1010
1001
  confirmWindowSec: z.ZodOptional<z.ZodNumber>;
1011
1002
  }, z.core.$strip>>;
1012
1003
  }, z.core.$strip>>;
1013
- fallbackText: z.ZodDefault<z.ZodString>;
1014
1004
  }, z.core.$strip>;
1015
1005
  }, z.core.$strip>, z.ZodObject<{
1016
1006
  slot: z.ZodObject<{
@@ -1049,9 +1039,7 @@ export declare const osdManagerCapability: {
1049
1039
  templateId: z.ZodString;
1050
1040
  }, z.core.$strip>], "kind">;
1051
1041
  template: z.ZodDefault<z.ZodString>;
1052
- maxCharacters: z.ZodOptional<z.ZodNumber>;
1053
1042
  maxDecimals: z.ZodDefault<z.ZodNumber>;
1054
- unitLabel: z.ZodOptional<z.ZodString>;
1055
1043
  valueMap: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1056
1044
  schedule: z.ZodOptional<z.ZodObject<{
1057
1045
  windows: z.ZodArray<z.ZodObject<{
@@ -1198,7 +1186,6 @@ export declare const osdManagerCapability: {
1198
1186
  confirmWindowSec: z.ZodOptional<z.ZodNumber>;
1199
1187
  }, z.core.$strip>>;
1200
1188
  }, z.core.$strip>>;
1201
- fallbackText: z.ZodDefault<z.ZodString>;
1202
1189
  }, z.core.$strip>>;
1203
1190
  }, z.core.$strip>;
1204
1191
  render: z.ZodObject<{
@@ -1269,9 +1256,7 @@ export declare const osdManagerCapability: {
1269
1256
  templateId: z.ZodString;
1270
1257
  }, z.core.$strip>], "kind">;
1271
1258
  template: z.ZodDefault<z.ZodString>;
1272
- maxCharacters: z.ZodOptional<z.ZodNumber>;
1273
1259
  maxDecimals: z.ZodDefault<z.ZodNumber>;
1274
- unitLabel: z.ZodOptional<z.ZodString>;
1275
1260
  valueMap: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1276
1261
  schedule: z.ZodOptional<z.ZodObject<{
1277
1262
  windows: z.ZodArray<z.ZodObject<{
@@ -1418,7 +1403,6 @@ export declare const osdManagerCapability: {
1418
1403
  confirmWindowSec: z.ZodOptional<z.ZodNumber>;
1419
1404
  }, z.core.$strip>>;
1420
1405
  }, z.core.$strip>>;
1421
- fallbackText: z.ZodDefault<z.ZodString>;
1422
1406
  }, z.core.$strip>>;
1423
1407
  }, z.core.$strip>, z.ZodObject<{
1424
1408
  slotId: z.ZodString;
@@ -1468,6 +1452,7 @@ export declare const osdManagerCapability: {
1468
1452
  valuePath: z.ZodString;
1469
1453
  displayUnit: z.ZodOptional<z.ZodString>;
1470
1454
  maxDecimals: z.ZodDefault<z.ZodNumber>;
1455
+ valueMap: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1471
1456
  }, z.core.$strip>>>;
1472
1457
  parser: z.ZodDefault<z.ZodString>;
1473
1458
  }, z.core.$strip>>;
@@ -1490,6 +1475,7 @@ export declare const osdManagerCapability: {
1490
1475
  valuePath: z.ZodString;
1491
1476
  displayUnit: z.ZodOptional<z.ZodString>;
1492
1477
  maxDecimals: z.ZodDefault<z.ZodNumber>;
1478
+ valueMap: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1493
1479
  }, z.core.$strip>>>;
1494
1480
  parser: z.ZodDefault<z.ZodString>;
1495
1481
  }, z.core.$strip>;
@@ -1507,6 +1493,7 @@ export declare const osdManagerCapability: {
1507
1493
  valuePath: z.ZodString;
1508
1494
  displayUnit: z.ZodOptional<z.ZodString>;
1509
1495
  maxDecimals: z.ZodDefault<z.ZodNumber>;
1496
+ valueMap: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1510
1497
  }, z.core.$strip>>>;
1511
1498
  parser: z.ZodDefault<z.ZodString>;
1512
1499
  }, z.core.$strip>;
@@ -52,6 +52,7 @@ export declare const OsdOverlaySchema: z.ZodObject<{
52
52
  "bottom-right": "bottom-right";
53
53
  }>>>;
54
54
  readOnly: z.ZodOptional<z.ZodBoolean>;
55
+ maxCharacters: z.ZodOptional<z.ZodNumber>;
55
56
  }, z.core.$strip>;
56
57
  export type OsdOverlay = z.infer<typeof OsdOverlaySchema>;
57
58
  export declare const OsdStatusSchema: z.ZodObject<{
@@ -83,6 +84,7 @@ export declare const OsdStatusSchema: z.ZodObject<{
83
84
  "bottom-right": "bottom-right";
84
85
  }>>>;
85
86
  readOnly: z.ZodOptional<z.ZodBoolean>;
87
+ maxCharacters: z.ZodOptional<z.ZodNumber>;
86
88
  }, z.core.$strip>>>;
87
89
  }, z.core.$strip>;
88
90
  export type OsdStatus = z.infer<typeof OsdStatusSchema>;
@@ -163,6 +165,7 @@ export declare const osdCapability: {
163
165
  "bottom-right": "bottom-right";
164
166
  }>>>;
165
167
  readOnly: z.ZodOptional<z.ZodBoolean>;
168
+ maxCharacters: z.ZodOptional<z.ZodNumber>;
166
169
  }, z.core.$strip>>>;
167
170
  }, z.core.$strip>;
168
171
  }, z.core.$strip>;
@@ -198,6 +201,7 @@ export declare const osdCapability: {
198
201
  "bottom-right": "bottom-right";
199
202
  }>>>;
200
203
  readOnly: z.ZodOptional<z.ZodBoolean>;
204
+ maxCharacters: z.ZodOptional<z.ZodNumber>;
201
205
  }, z.core.$strip>>>;
202
206
  }, z.core.$strip>;
203
207
  readonly kind: "command-driven";
@@ -192,7 +192,7 @@ declare const PipelineModelOptionSchema: z.ZodObject<{
192
192
  }>>;
193
193
  optimization: z.ZodOptional<z.ZodEnum<{
194
194
  standard: "standard";
195
- fast: "fast";
195
+ test: "test";
196
196
  }>>;
197
197
  resolution: z.ZodOptional<z.ZodNumber>;
198
198
  }, z.core.$strip>>;
@@ -240,7 +240,7 @@ declare const PipelineAddonSchemaSchema: z.ZodObject<{
240
240
  }>>;
241
241
  optimization: z.ZodOptional<z.ZodEnum<{
242
242
  standard: "standard";
243
- fast: "fast";
243
+ test: "test";
244
244
  }>>;
245
245
  resolution: z.ZodOptional<z.ZodNumber>;
246
246
  }, z.core.$strip>>;
@@ -313,7 +313,7 @@ declare const PipelineSlotSchemaSchema: z.ZodObject<{
313
313
  }>>;
314
314
  optimization: z.ZodOptional<z.ZodEnum<{
315
315
  standard: "standard";
316
- fast: "fast";
316
+ test: "test";
317
317
  }>>;
318
318
  resolution: z.ZodOptional<z.ZodNumber>;
319
319
  }, z.core.$strip>>;
@@ -422,7 +422,7 @@ declare const PipelineSchemaSchema: z.ZodObject<{
422
422
  }>>;
423
423
  optimization: z.ZodOptional<z.ZodEnum<{
424
424
  standard: "standard";
425
- fast: "fast";
425
+ test: "test";
426
426
  }>>;
427
427
  resolution: z.ZodOptional<z.ZodNumber>;
428
428
  }, z.core.$strip>>;
@@ -777,7 +777,7 @@ export declare const pipelineExecutorCapability: {
777
777
  }>>;
778
778
  optimization: z.ZodOptional<z.ZodEnum<{
779
779
  standard: "standard";
780
- fast: "fast";
780
+ test: "test";
781
781
  }>>;
782
782
  resolution: z.ZodOptional<z.ZodNumber>;
783
783
  }, z.core.$strip>>;
@@ -408,11 +408,11 @@ export declare const EgressEncodeSchema: z.ZodObject<{
408
408
  gopFrames: z.ZodOptional<z.ZodNumber>;
409
409
  bf: z.ZodOptional<z.ZodNumber>;
410
410
  preset: z.ZodOptional<z.ZodEnum<{
411
- fast: "fast";
412
411
  ultrafast: "ultrafast";
413
412
  superfast: "superfast";
414
413
  veryfast: "veryfast";
415
414
  faster: "faster";
415
+ fast: "fast";
416
416
  medium: "medium";
417
417
  }>>;
418
418
  tune: z.ZodOptional<z.ZodEnum<{
@@ -480,11 +480,11 @@ export declare const EgressTranscodeRequestSchema: z.ZodObject<{
480
480
  gopFrames: z.ZodOptional<z.ZodNumber>;
481
481
  bf: z.ZodOptional<z.ZodNumber>;
482
482
  preset: z.ZodOptional<z.ZodEnum<{
483
- fast: "fast";
484
483
  ultrafast: "ultrafast";
485
484
  superfast: "superfast";
486
485
  veryfast: "veryfast";
487
486
  faster: "faster";
487
+ fast: "fast";
488
488
  medium: "medium";
489
489
  }>>;
490
490
  tune: z.ZodOptional<z.ZodEnum<{
@@ -630,11 +630,11 @@ export declare const streamBrokerCapability: {
630
630
  gopFrames: z.ZodOptional<z.ZodNumber>;
631
631
  bf: z.ZodOptional<z.ZodNumber>;
632
632
  preset: z.ZodOptional<z.ZodEnum<{
633
- fast: "fast";
634
633
  ultrafast: "ultrafast";
635
634
  superfast: "superfast";
636
635
  veryfast: "veryfast";
637
636
  faster: "faster";
637
+ fast: "fast";
638
638
  medium: "medium";
639
639
  }>>;
640
640
  tune: z.ZodOptional<z.ZodEnum<{
@@ -1183,11 +1183,11 @@ export declare const streamBrokerCapability: {
1183
1183
  gopFrames: z.ZodOptional<z.ZodNumber>;
1184
1184
  bf: z.ZodOptional<z.ZodNumber>;
1185
1185
  preset: z.ZodOptional<z.ZodEnum<{
1186
- fast: "fast";
1187
1186
  ultrafast: "ultrafast";
1188
1187
  superfast: "superfast";
1189
1188
  veryfast: "veryfast";
1190
1189
  faster: "faster";
1190
+ fast: "fast";
1191
1191
  medium: "medium";
1192
1192
  }>>;
1193
1193
  tune: z.ZodOptional<z.ZodEnum<{
@@ -30,11 +30,11 @@ export declare const VideoEncodeSchema: z.ZodObject<{
30
30
  gopFrames: z.ZodOptional<z.ZodNumber>;
31
31
  bf: z.ZodOptional<z.ZodNumber>;
32
32
  preset: z.ZodOptional<z.ZodEnum<{
33
- fast: "fast";
34
33
  ultrafast: "ultrafast";
35
34
  superfast: "superfast";
36
35
  veryfast: "veryfast";
37
36
  faster: "faster";
37
+ fast: "fast";
38
38
  medium: "medium";
39
39
  }>>;
40
40
  tune: z.ZodOptional<z.ZodEnum<{
@@ -78,11 +78,11 @@ export declare const EncodeProfileSchema: z.ZodObject<{
78
78
  gopFrames: z.ZodOptional<z.ZodNumber>;
79
79
  bf: z.ZodOptional<z.ZodNumber>;
80
80
  preset: z.ZodOptional<z.ZodEnum<{
81
- fast: "fast";
82
81
  ultrafast: "ultrafast";
83
82
  superfast: "superfast";
84
83
  veryfast: "veryfast";
85
84
  faster: "faster";
85
+ fast: "fast";
86
86
  medium: "medium";
87
87
  }>>;
88
88
  tune: z.ZodOptional<z.ZodEnum<{
package/dist/index.js CHANGED
@@ -5148,7 +5148,7 @@ function tierLabel(family, baseName) {
5148
5148
  }
5149
5149
  function variantLabel(precision, optimization) {
5150
5150
  const parts = [];
5151
- if (optimization === "fast") parts.push("Fast");
5151
+ if (optimization === "test") parts.push("Test");
5152
5152
  parts.push(precision === "int8" ? "Int8" : "Standard");
5153
5153
  return parts.join(" · ");
5154
5154
  }
@@ -5172,7 +5172,7 @@ var PRECISION_ORDER = ["fp32", "int8"];
5172
5172
  /**
5173
5173
  * Fold a flat catalog into the `family → tier → variant` tree. Deterministic
5174
5174
  * ordering: tiers by the canonical size ladder (unknown tiers appended
5175
- * alphabetically), variants standard-before-int8 and fast last.
5175
+ * alphabetically), variants standard-before-int8 and test last.
5176
5176
  */
5177
5177
  function buildModelVariantGroups(models) {
5178
5178
  const byFamily = /* @__PURE__ */ new Map();
@@ -5203,7 +5203,7 @@ function buildModelVariantGroups(models) {
5203
5203
  };
5204
5204
  }).toSorted((a, b) => {
5205
5205
  if (a.resolution !== b.resolution) return (b.resolution ?? Infinity) - (a.resolution ?? Infinity);
5206
- if (a.optimization !== b.optimization) return a.optimization === "fast" ? 1 : -1;
5206
+ if (a.optimization !== b.optimization) return a.optimization === "test" ? 1 : -1;
5207
5207
  return PRECISION_ORDER.indexOf(a.precision) - PRECISION_ORDER.indexOf(b.precision);
5208
5208
  });
5209
5209
  const base = options.find((o) => o.precision === "fp32" && o.optimization === "standard") ?? options[0];
@@ -5416,11 +5416,11 @@ var ModelVariantGroupSchema = zod.z.object({
5416
5416
  /** Quantization axis. Omit ⇒ the fp32 base build. */
5417
5417
  precision: zod.z.enum(["fp32", "int8"]).optional(),
5418
5418
  /**
5419
- * Speed-optimization axis. Omit ⇒ the standard build. `fast` marks a
5420
- * latency-optimized export (e.g. ReLU-activation variant) — the slot the
5421
- * future performance variants plug into.
5419
+ * Training / latency-variant axis. Omit ⇒ the standard build. `test` marks
5420
+ * an alternate training of the same family (Scrypted `relu_test`); chip
5421
+ * label is "Test".
5422
5422
  */
5423
- optimization: zod.z.enum(["standard", "fast"]).optional(),
5423
+ optimization: zod.z.enum(["standard", "test"]).optional(),
5424
5424
  /**
5425
5425
  * Input-resolution axis (square input side, px). Omit ⇒ the family's native
5426
5426
  * resolution (640 for yolo26). Reduced-input builds (320 / 256) are a big,
@@ -5495,9 +5495,10 @@ var ModelLicenseRecordSchema = zod.z.object({
5495
5495
  * are per upstream. A persisted custom-model row written when this field was a
5496
5496
  * string still parses — the string is lifted into `{ weights }`.
5497
5497
  *
5498
- * Every licence surface (the admin "Models and licenses" page,
5499
- * `THIRD_PARTY_MODELS.md`, the Hugging Face model table) is GENERATED from
5500
- * these records by `scripts/gen-model-licenses.ts` (D661).
5498
+ * Every machine licence surface (`THIRD_PARTY_MODELS.md`, the Hugging Face
5499
+ * model table) is GENERATED from these records by
5500
+ * `scripts/gen-model-licenses.ts` (D661). Operator-facing docs live in
5501
+ * `camstack/docs` → `/docs/detection/models`.
5501
5502
  */
5502
5503
  var ModelLicenseSchema = zod.z.preprocess((value) => typeof value === "string" ? { weights: value } : value, ModelLicenseRecordSchema);
5503
5504
  var ModelCatalogEntrySchema = zod.z.object({
@@ -17345,9 +17346,15 @@ var modelConvertCapability = {
17345
17346
  * needs the Moleculer broker + the deploy-stage registry, which a forked addon
17346
17347
  * can't reach. `addon-model-studio` drives it via `ctx.api` and owns the
17347
17348
  * per-node availability map.
17349
+ *
17350
+ * The destination is `targetNodeId`, NOT `nodeId`. Cap routers and the
17351
+ * Moleculer tRPC link strip an input field named `nodeId` and use it as a
17352
+ * route pin (resolve the provider ON that node). Naming the destination
17353
+ * `nodeId` routed the call to the agent — which does not host this
17354
+ * singleton — and handed the provider an input with the destination missing.
17348
17355
  */
17349
17356
  var ModelDistributeInputSchema = zod.z.object({
17350
- nodeId: zod.z.string(),
17357
+ targetNodeId: zod.z.string(),
17351
17358
  modelId: zod.z.string(),
17352
17359
  format: zod.z.enum(MODEL_FORMATS),
17353
17360
  entry: ModelCatalogEntrySchema
@@ -22793,39 +22800,19 @@ var CLUSTER_MODEL_SCOPED_STEPS = [{
22793
22800
  label: "Face recognition model",
22794
22801
  defaultModelId: "auraface-r100",
22795
22802
  indexName: "the enrolled face gallery",
22796
- options: [
22797
- {
22798
- id: "auraface-r100",
22799
- label: "AuraFace R100"
22800
- },
22801
- {
22802
- id: "arcface-r100",
22803
- label: "ArcFace (ResNet34)"
22804
- },
22805
- {
22806
- id: "inception-resnet-v1",
22807
- label: "Inception ResNet V1"
22808
- }
22809
- ]
22803
+ options: [{
22804
+ id: "auraface-r100",
22805
+ label: "AuraFace R100"
22806
+ }]
22810
22807
  }, {
22811
22808
  stepId: "clip-embedding",
22812
22809
  label: "Semantic search model",
22813
- defaultModelId: "mobileclip-s1",
22810
+ defaultModelId: "siglip2-b16-224",
22814
22811
  indexName: "the object semantic-search index",
22815
- options: [
22816
- {
22817
- id: "mobileclip-s1",
22818
- label: "MobileCLIP S1"
22819
- },
22820
- {
22821
- id: "mobileclip-s2",
22822
- label: "MobileCLIP S2"
22823
- },
22824
- {
22825
- id: "siglip2-b16-224",
22826
- label: "SigLIP2 B/16 (Apache-2.0)"
22827
- }
22828
- ]
22812
+ options: [{
22813
+ id: "siglip2-b16-224",
22814
+ label: "SigLIP2 B/16 (Apache-2.0)"
22815
+ }]
22829
22816
  }];
22830
22817
  /**
22831
22818
  * Store identity of the cluster row inside `pipeline-orchestrator`'s GLOBAL
@@ -39434,7 +39421,13 @@ var OsdOverlaySchema = zod.z.object({
39434
39421
  */
39435
39422
  availablePositions: zod.z.array(OsdPositionEnum).readonly(),
39436
39423
  /** Firmware does not allow editing the `text` field (e.g. timestamp). */
39437
- readOnly: zod.z.boolean().optional()
39424
+ readOnly: zod.z.boolean().optional(),
39425
+ /**
39426
+ * Firmware text ceiling for this overlay. Absent = no known limit.
39427
+ * The OSD manager truncates here on every write — never stores its own
39428
+ * copy on the binding.
39429
+ */
39430
+ maxCharacters: zod.z.number().int().positive().optional()
39438
39431
  });
39439
39432
  var OsdStatusSchema = zod.z.object({ overlays: zod.z.array(OsdOverlaySchema).readonly() });
39440
39433
  var OsdOverlayPatchSchema = zod.z.object({
@@ -39552,7 +39545,9 @@ var OsdTemplateBindingSchema = zod.z.object({
39552
39545
  valuePath: zod.z.string().min(1).max(64),
39553
39546
  /** Convert TO this unit at render (`tryConvertUnit`). Absent = source unit. */
39554
39547
  displayUnit: zod.z.string().max(16).optional(),
39555
- maxDecimals: zod.z.number().int().min(0).max(4).default(1)
39548
+ maxDecimals: zod.z.number().int().min(0).max(4).default(1),
39549
+ /** Raw value → display text (same shape as slot binding). Empty string hides. */
39550
+ valueMap: zod.z.record(zod.z.string(), zod.z.string()).optional()
39556
39551
  });
39557
39552
  /**
39558
39553
  * A named template: bindings (alias → leaf field) + a parser that
@@ -39602,18 +39597,11 @@ var OsdSlotBindingSchema = zod.z.object({
39602
39597
  source: OsdSourceSchema,
39603
39598
  /** `${value}` and `${unit}` are substituted; every occurrence. */
39604
39599
  template: zod.z.string().max(96).default("${value}"),
39605
- /** Truncate with an ellipsis past this length. Absent = no limit. */
39606
- maxCharacters: zod.z.number().int().min(4).max(64).optional(),
39607
39600
  /**
39608
39601
  * Decimal places for a numeric value. `0` yields an integer — the
39609
39602
  * documented workaround for firmwares that reject `.` in overlay text.
39610
39603
  */
39611
39604
  maxDecimals: zod.z.number().int().min(0).max(4).default(1),
39612
- /**
39613
- * Appended via `${unit}` when no unit conversion produces a label.
39614
- * Prefer `source.displayUnit` for converted device-state values.
39615
- */
39616
- unitLabel: zod.z.string().max(8).optional(),
39617
39605
  /** Raw value → display text, e.g. `{"true":"MOTION","false":""}`. */
39618
39606
  valueMap: zod.z.record(zod.z.string(), zod.z.string()).optional(),
39619
39607
  /** Time windows in which the slot is shown. Absent = always. */
@@ -39622,9 +39610,7 @@ var OsdSlotBindingSchema = zod.z.object({
39622
39610
  * Display gate, in the notification centre's condition vocabulary.
39623
39611
  * Only the keys reported by `getConditionSupport` are accepted.
39624
39612
  */
39625
- conditions: NcConditionsSchema.optional(),
39626
- /** Rendered when the gate is closed or the value unreadable. Empty = hide. */
39627
- fallbackText: zod.z.string().max(64).default("")
39613
+ conditions: NcConditionsSchema.optional()
39628
39614
  });
39629
39615
  /** One camera slot, as the operator sees it: firmware truth + our binding. */
39630
39616
  var OsdSlotViewSchema = zod.z.object({
@@ -68835,7 +68821,7 @@ var NC_TEMPLATE_VARS = [
68835
68821
  {
68836
68822
  name: "devices",
68837
68823
  label: "Devices",
68838
- description: "node-inference-unavailable: the affected cameras, comma-joined. Alarm arm / refusal: HOW MANY devices are armed (or open).",
68824
+ description: "node-inference-unavailable: the affected cameras, comma-joined. Alarm arm / arming / refusal: HOW MANY devices are armed (or open).",
68839
68825
  example: "Ingresso, Garage",
68840
68826
  group: "system",
68841
68827
  families: ["rule"],
@@ -68844,6 +68830,7 @@ var NC_TEMPLATE_VARS = [
68844
68830
  systemEventKinds: [
68845
68831
  "node-inference-unavailable",
68846
68832
  "alarm-armed",
68833
+ "alarm-arming",
68847
68834
  "alarm-arm-refused"
68848
68835
  ]
68849
68836
  },
@@ -69064,18 +69051,18 @@ var NC_TEMPLATE_VARS = [
69064
69051
  {
69065
69052
  name: "rules",
69066
69053
  label: "Covering rules",
69067
- description: "How many enabled rules the armed mode gates.",
69054
+ description: "How many enabled rules the armed / arming mode gates.",
69068
69055
  example: "2",
69069
69056
  group: "system",
69070
69057
  families: ["rule"],
69071
69058
  fields: [...RULE_TEXT],
69072
69059
  kinds: ["system"],
69073
- systemEventKinds: ["alarm-armed"]
69060
+ systemEventKinds: ["alarm-armed", "alarm-arming"]
69074
69061
  },
69075
69062
  {
69076
69063
  name: "names",
69077
69064
  label: "Device names",
69078
- description: "Armed: the devices armed. Arming: the devices this mode cannot arm. Refusal: the open sensors.",
69065
+ description: "Armed / arming: the Active devices (or every skipped name when none are Active). Refusal: the open sensors.",
69079
69066
  example: "Ingresso, Garage",
69080
69067
  group: "system",
69081
69068
  families: ["rule"],
@@ -69096,7 +69083,29 @@ var NC_TEMPLATE_VARS = [
69096
69083
  families: ["rule"],
69097
69084
  fields: [...RULE_TEXT],
69098
69085
  kinds: ["system"],
69099
- systemEventKinds: ["alarm-armed"]
69086
+ systemEventKinds: ["alarm-armed", "alarm-arming"]
69087
+ },
69088
+ {
69089
+ name: "active",
69090
+ label: "Active count",
69091
+ description: "How many named devices the armed / arming mode is watching (title: n attivi / n active).",
69092
+ example: "3",
69093
+ group: "system",
69094
+ families: ["rule"],
69095
+ fields: [...RULE_TEXT],
69096
+ kinds: ["system"],
69097
+ systemEventKinds: ["alarm-armed", "alarm-arming"]
69098
+ },
69099
+ {
69100
+ name: "skipped",
69101
+ label: "Skipped count",
69102
+ description: "How many named devices the mode cannot arm — muted, detection off, offline (title: m saltati).",
69103
+ example: "1",
69104
+ group: "system",
69105
+ families: ["rule"],
69106
+ fields: [...RULE_TEXT],
69107
+ kinds: ["system"],
69108
+ systemEventKinds: ["alarm-armed", "alarm-arming"]
69100
69109
  },
69101
69110
  {
69102
69111
  name: "bypassedNames",
package/dist/index.mjs CHANGED
@@ -5147,7 +5147,7 @@ function tierLabel(family, baseName) {
5147
5147
  }
5148
5148
  function variantLabel(precision, optimization) {
5149
5149
  const parts = [];
5150
- if (optimization === "fast") parts.push("Fast");
5150
+ if (optimization === "test") parts.push("Test");
5151
5151
  parts.push(precision === "int8" ? "Int8" : "Standard");
5152
5152
  return parts.join(" · ");
5153
5153
  }
@@ -5171,7 +5171,7 @@ var PRECISION_ORDER = ["fp32", "int8"];
5171
5171
  /**
5172
5172
  * Fold a flat catalog into the `family → tier → variant` tree. Deterministic
5173
5173
  * ordering: tiers by the canonical size ladder (unknown tiers appended
5174
- * alphabetically), variants standard-before-int8 and fast last.
5174
+ * alphabetically), variants standard-before-int8 and test last.
5175
5175
  */
5176
5176
  function buildModelVariantGroups(models) {
5177
5177
  const byFamily = /* @__PURE__ */ new Map();
@@ -5202,7 +5202,7 @@ function buildModelVariantGroups(models) {
5202
5202
  };
5203
5203
  }).toSorted((a, b) => {
5204
5204
  if (a.resolution !== b.resolution) return (b.resolution ?? Infinity) - (a.resolution ?? Infinity);
5205
- if (a.optimization !== b.optimization) return a.optimization === "fast" ? 1 : -1;
5205
+ if (a.optimization !== b.optimization) return a.optimization === "test" ? 1 : -1;
5206
5206
  return PRECISION_ORDER.indexOf(a.precision) - PRECISION_ORDER.indexOf(b.precision);
5207
5207
  });
5208
5208
  const base = options.find((o) => o.precision === "fp32" && o.optimization === "standard") ?? options[0];
@@ -5415,11 +5415,11 @@ var ModelVariantGroupSchema = z.object({
5415
5415
  /** Quantization axis. Omit ⇒ the fp32 base build. */
5416
5416
  precision: z.enum(["fp32", "int8"]).optional(),
5417
5417
  /**
5418
- * Speed-optimization axis. Omit ⇒ the standard build. `fast` marks a
5419
- * latency-optimized export (e.g. ReLU-activation variant) — the slot the
5420
- * future performance variants plug into.
5418
+ * Training / latency-variant axis. Omit ⇒ the standard build. `test` marks
5419
+ * an alternate training of the same family (Scrypted `relu_test`); chip
5420
+ * label is "Test".
5421
5421
  */
5422
- optimization: z.enum(["standard", "fast"]).optional(),
5422
+ optimization: z.enum(["standard", "test"]).optional(),
5423
5423
  /**
5424
5424
  * Input-resolution axis (square input side, px). Omit ⇒ the family's native
5425
5425
  * resolution (640 for yolo26). Reduced-input builds (320 / 256) are a big,
@@ -5494,9 +5494,10 @@ var ModelLicenseRecordSchema = z.object({
5494
5494
  * are per upstream. A persisted custom-model row written when this field was a
5495
5495
  * string still parses — the string is lifted into `{ weights }`.
5496
5496
  *
5497
- * Every licence surface (the admin "Models and licenses" page,
5498
- * `THIRD_PARTY_MODELS.md`, the Hugging Face model table) is GENERATED from
5499
- * these records by `scripts/gen-model-licenses.ts` (D661).
5497
+ * Every machine licence surface (`THIRD_PARTY_MODELS.md`, the Hugging Face
5498
+ * model table) is GENERATED from these records by
5499
+ * `scripts/gen-model-licenses.ts` (D661). Operator-facing docs live in
5500
+ * `camstack/docs` → `/docs/detection/models`.
5500
5501
  */
5501
5502
  var ModelLicenseSchema = z.preprocess((value) => typeof value === "string" ? { weights: value } : value, ModelLicenseRecordSchema);
5502
5503
  var ModelCatalogEntrySchema = z.object({
@@ -17344,9 +17345,15 @@ var modelConvertCapability = {
17344
17345
  * needs the Moleculer broker + the deploy-stage registry, which a forked addon
17345
17346
  * can't reach. `addon-model-studio` drives it via `ctx.api` and owns the
17346
17347
  * per-node availability map.
17348
+ *
17349
+ * The destination is `targetNodeId`, NOT `nodeId`. Cap routers and the
17350
+ * Moleculer tRPC link strip an input field named `nodeId` and use it as a
17351
+ * route pin (resolve the provider ON that node). Naming the destination
17352
+ * `nodeId` routed the call to the agent — which does not host this
17353
+ * singleton — and handed the provider an input with the destination missing.
17347
17354
  */
17348
17355
  var ModelDistributeInputSchema = z.object({
17349
- nodeId: z.string(),
17356
+ targetNodeId: z.string(),
17350
17357
  modelId: z.string(),
17351
17358
  format: z.enum(MODEL_FORMATS),
17352
17359
  entry: ModelCatalogEntrySchema
@@ -22792,39 +22799,19 @@ var CLUSTER_MODEL_SCOPED_STEPS = [{
22792
22799
  label: "Face recognition model",
22793
22800
  defaultModelId: "auraface-r100",
22794
22801
  indexName: "the enrolled face gallery",
22795
- options: [
22796
- {
22797
- id: "auraface-r100",
22798
- label: "AuraFace R100"
22799
- },
22800
- {
22801
- id: "arcface-r100",
22802
- label: "ArcFace (ResNet34)"
22803
- },
22804
- {
22805
- id: "inception-resnet-v1",
22806
- label: "Inception ResNet V1"
22807
- }
22808
- ]
22802
+ options: [{
22803
+ id: "auraface-r100",
22804
+ label: "AuraFace R100"
22805
+ }]
22809
22806
  }, {
22810
22807
  stepId: "clip-embedding",
22811
22808
  label: "Semantic search model",
22812
- defaultModelId: "mobileclip-s1",
22809
+ defaultModelId: "siglip2-b16-224",
22813
22810
  indexName: "the object semantic-search index",
22814
- options: [
22815
- {
22816
- id: "mobileclip-s1",
22817
- label: "MobileCLIP S1"
22818
- },
22819
- {
22820
- id: "mobileclip-s2",
22821
- label: "MobileCLIP S2"
22822
- },
22823
- {
22824
- id: "siglip2-b16-224",
22825
- label: "SigLIP2 B/16 (Apache-2.0)"
22826
- }
22827
- ]
22811
+ options: [{
22812
+ id: "siglip2-b16-224",
22813
+ label: "SigLIP2 B/16 (Apache-2.0)"
22814
+ }]
22828
22815
  }];
22829
22816
  /**
22830
22817
  * Store identity of the cluster row inside `pipeline-orchestrator`'s GLOBAL
@@ -39433,7 +39420,13 @@ var OsdOverlaySchema = z.object({
39433
39420
  */
39434
39421
  availablePositions: z.array(OsdPositionEnum).readonly(),
39435
39422
  /** Firmware does not allow editing the `text` field (e.g. timestamp). */
39436
- readOnly: z.boolean().optional()
39423
+ readOnly: z.boolean().optional(),
39424
+ /**
39425
+ * Firmware text ceiling for this overlay. Absent = no known limit.
39426
+ * The OSD manager truncates here on every write — never stores its own
39427
+ * copy on the binding.
39428
+ */
39429
+ maxCharacters: z.number().int().positive().optional()
39437
39430
  });
39438
39431
  var OsdStatusSchema = z.object({ overlays: z.array(OsdOverlaySchema).readonly() });
39439
39432
  var OsdOverlayPatchSchema = z.object({
@@ -39551,7 +39544,9 @@ var OsdTemplateBindingSchema = z.object({
39551
39544
  valuePath: z.string().min(1).max(64),
39552
39545
  /** Convert TO this unit at render (`tryConvertUnit`). Absent = source unit. */
39553
39546
  displayUnit: z.string().max(16).optional(),
39554
- maxDecimals: z.number().int().min(0).max(4).default(1)
39547
+ maxDecimals: z.number().int().min(0).max(4).default(1),
39548
+ /** Raw value → display text (same shape as slot binding). Empty string hides. */
39549
+ valueMap: z.record(z.string(), z.string()).optional()
39555
39550
  });
39556
39551
  /**
39557
39552
  * A named template: bindings (alias → leaf field) + a parser that
@@ -39601,18 +39596,11 @@ var OsdSlotBindingSchema = z.object({
39601
39596
  source: OsdSourceSchema,
39602
39597
  /** `${value}` and `${unit}` are substituted; every occurrence. */
39603
39598
  template: z.string().max(96).default("${value}"),
39604
- /** Truncate with an ellipsis past this length. Absent = no limit. */
39605
- maxCharacters: z.number().int().min(4).max(64).optional(),
39606
39599
  /**
39607
39600
  * Decimal places for a numeric value. `0` yields an integer — the
39608
39601
  * documented workaround for firmwares that reject `.` in overlay text.
39609
39602
  */
39610
39603
  maxDecimals: z.number().int().min(0).max(4).default(1),
39611
- /**
39612
- * Appended via `${unit}` when no unit conversion produces a label.
39613
- * Prefer `source.displayUnit` for converted device-state values.
39614
- */
39615
- unitLabel: z.string().max(8).optional(),
39616
39604
  /** Raw value → display text, e.g. `{"true":"MOTION","false":""}`. */
39617
39605
  valueMap: z.record(z.string(), z.string()).optional(),
39618
39606
  /** Time windows in which the slot is shown. Absent = always. */
@@ -39621,9 +39609,7 @@ var OsdSlotBindingSchema = z.object({
39621
39609
  * Display gate, in the notification centre's condition vocabulary.
39622
39610
  * Only the keys reported by `getConditionSupport` are accepted.
39623
39611
  */
39624
- conditions: NcConditionsSchema.optional(),
39625
- /** Rendered when the gate is closed or the value unreadable. Empty = hide. */
39626
- fallbackText: z.string().max(64).default("")
39612
+ conditions: NcConditionsSchema.optional()
39627
39613
  });
39628
39614
  /** One camera slot, as the operator sees it: firmware truth + our binding. */
39629
39615
  var OsdSlotViewSchema = z.object({
@@ -68834,7 +68820,7 @@ var NC_TEMPLATE_VARS = [
68834
68820
  {
68835
68821
  name: "devices",
68836
68822
  label: "Devices",
68837
- description: "node-inference-unavailable: the affected cameras, comma-joined. Alarm arm / refusal: HOW MANY devices are armed (or open).",
68823
+ description: "node-inference-unavailable: the affected cameras, comma-joined. Alarm arm / arming / refusal: HOW MANY devices are armed (or open).",
68838
68824
  example: "Ingresso, Garage",
68839
68825
  group: "system",
68840
68826
  families: ["rule"],
@@ -68843,6 +68829,7 @@ var NC_TEMPLATE_VARS = [
68843
68829
  systemEventKinds: [
68844
68830
  "node-inference-unavailable",
68845
68831
  "alarm-armed",
68832
+ "alarm-arming",
68846
68833
  "alarm-arm-refused"
68847
68834
  ]
68848
68835
  },
@@ -69063,18 +69050,18 @@ var NC_TEMPLATE_VARS = [
69063
69050
  {
69064
69051
  name: "rules",
69065
69052
  label: "Covering rules",
69066
- description: "How many enabled rules the armed mode gates.",
69053
+ description: "How many enabled rules the armed / arming mode gates.",
69067
69054
  example: "2",
69068
69055
  group: "system",
69069
69056
  families: ["rule"],
69070
69057
  fields: [...RULE_TEXT],
69071
69058
  kinds: ["system"],
69072
- systemEventKinds: ["alarm-armed"]
69059
+ systemEventKinds: ["alarm-armed", "alarm-arming"]
69073
69060
  },
69074
69061
  {
69075
69062
  name: "names",
69076
69063
  label: "Device names",
69077
- description: "Armed: the devices armed. Arming: the devices this mode cannot arm. Refusal: the open sensors.",
69064
+ description: "Armed / arming: the Active devices (or every skipped name when none are Active). Refusal: the open sensors.",
69078
69065
  example: "Ingresso, Garage",
69079
69066
  group: "system",
69080
69067
  families: ["rule"],
@@ -69095,7 +69082,29 @@ var NC_TEMPLATE_VARS = [
69095
69082
  families: ["rule"],
69096
69083
  fields: [...RULE_TEXT],
69097
69084
  kinds: ["system"],
69098
- systemEventKinds: ["alarm-armed"]
69085
+ systemEventKinds: ["alarm-armed", "alarm-arming"]
69086
+ },
69087
+ {
69088
+ name: "active",
69089
+ label: "Active count",
69090
+ description: "How many named devices the armed / arming mode is watching (title: n attivi / n active).",
69091
+ example: "3",
69092
+ group: "system",
69093
+ families: ["rule"],
69094
+ fields: [...RULE_TEXT],
69095
+ kinds: ["system"],
69096
+ systemEventKinds: ["alarm-armed", "alarm-arming"]
69097
+ },
69098
+ {
69099
+ name: "skipped",
69100
+ label: "Skipped count",
69101
+ description: "How many named devices the mode cannot arm — muted, detection off, offline (title: m saltati).",
69102
+ example: "1",
69103
+ group: "system",
69104
+ families: ["rule"],
69105
+ fields: [...RULE_TEXT],
69106
+ kinds: ["system"],
69107
+ systemEventKinds: ["alarm-armed", "alarm-arming"]
69099
69108
  },
69100
69109
  {
69101
69110
  name: "bypassedNames",
@@ -15,7 +15,7 @@
15
15
  */
16
16
  import type { ModelFormat } from './models.js';
17
17
  export type VariantPrecision = 'fp32' | 'int8';
18
- export type VariantOptimization = 'standard' | 'fast';
18
+ export type VariantOptimization = 'standard' | 'test';
19
19
  /**
20
20
  * Minimal structural shape the grouped selector needs. Both the full
21
21
  * `ModelCatalogEntry` (config UI) and the reduced `PipelineModelOption`
@@ -74,7 +74,7 @@ export interface ModelVariantFamily {
74
74
  /**
75
75
  * Fold a flat catalog into the `family → tier → variant` tree. Deterministic
76
76
  * ordering: tiers by the canonical size ladder (unknown tiers appended
77
- * alphabetically), variants standard-before-int8 and fast last.
77
+ * alphabetically), variants standard-before-int8 and test last.
78
78
  */
79
79
  export declare function buildModelVariantGroups(models: readonly ModelVariantSource[]): readonly ModelVariantFamily[];
80
80
  /**
@@ -115,7 +115,7 @@ export declare const ModelVariantGroupSchema: z.ZodObject<{
115
115
  }>>;
116
116
  optimization: z.ZodOptional<z.ZodEnum<{
117
117
  standard: "standard";
118
- fast: "fast";
118
+ test: "test";
119
119
  }>>;
120
120
  resolution: z.ZodOptional<z.ZodNumber>;
121
121
  }, z.core.$strip>;
@@ -155,9 +155,10 @@ export type ModelHosting = (typeof MODEL_HOSTING)[number];
155
155
  * are per upstream. A persisted custom-model row written when this field was a
156
156
  * string still parses — the string is lifted into `{ weights }`.
157
157
  *
158
- * Every licence surface (the admin "Models and licenses" page,
159
- * `THIRD_PARTY_MODELS.md`, the Hugging Face model table) is GENERATED from
160
- * these records by `scripts/gen-model-licenses.ts` (D661).
158
+ * Every machine licence surface (`THIRD_PARTY_MODELS.md`, the Hugging Face
159
+ * model table) is GENERATED from these records by
160
+ * `scripts/gen-model-licenses.ts` (D661). Operator-facing docs live in
161
+ * `camstack/docs` → `/docs/detection/models`.
161
162
  */
162
163
  export declare const ModelLicenseSchema: z.ZodPreprocess<z.ZodObject<{
163
164
  weights: z.ZodString;
@@ -313,7 +314,7 @@ export declare const ModelCatalogEntrySchema: z.ZodObject<{
313
314
  }>>;
314
315
  optimization: z.ZodOptional<z.ZodEnum<{
315
316
  standard: "standard";
316
- fast: "fast";
317
+ test: "test";
317
318
  }>>;
318
319
  resolution: z.ZodOptional<z.ZodNumber>;
319
320
  }, z.core.$strip>>;
@@ -585,7 +586,7 @@ export declare const ConvertResultSchema: z.ZodObject<{
585
586
  }>>;
586
587
  optimization: z.ZodOptional<z.ZodEnum<{
587
588
  standard: "standard";
588
- fast: "fast";
589
+ test: "test";
589
590
  }>>;
590
591
  resolution: z.ZodOptional<z.ZodNumber>;
591
592
  }, z.core.$strip>>;
@@ -18,7 +18,7 @@ export interface IPipelineStep {
18
18
  */
19
19
  getConfigSchema(model?: ModelCatalogEntry): readonly ConfigField[];
20
20
  }
21
- export type PostprocessorType = 'yolo' | 'ssd' | 'rfdetr' | 'yolonas' | 'yolo-seg' | 'scrfd' | 'yunet' | 'arcface' | 'clip' | 'softmax' | 'ctc' | 'plate-slots' | 'saliency' | 'yamnet';
21
+ export type PostprocessorType = 'yolo' | 'ssd' | 'rfdetr' | 'yolonas' | 'yolo-seg' | 'scrfd' | 'yunet' | 'yolo-split-dfl' | 'arcface' | 'clip' | 'softmax' | 'ctc' | 'plate-slots' | 'saliency' | 'yamnet';
22
22
  export interface StepDefinition {
23
23
  /** Unique step identifier (e.g., 'object-detection', 'face-detection') */
24
24
  readonly id: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/types",
3
- "version": "1.2.303",
3
+ "version": "1.2.304",
4
4
  "description": "Shared types, interfaces, and model catalogs for the CamStack detection ecosystem",
5
5
  "keywords": [
6
6
  "camstack",