camstack 1.1.0 → 1.1.1

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.
@@ -14522,7 +14522,7 @@ function date4(params) {
14522
14522
  // ../../node_modules/zod/v4/classic/external.js
14523
14523
  config(en_default());
14524
14524
 
14525
- // ../types/dist/sleep-B1dKJAMJ.mjs
14525
+ // ../types/dist/sleep-BV7rLc6Y.mjs
14526
14526
  var WELL_KNOWN_TABS = [
14527
14527
  {
14528
14528
  id: "overview",
@@ -15272,6 +15272,13 @@ var wiringHealthSnapshotSchema = external_exports.object({
15272
15272
  unreachable: external_exports.number()
15273
15273
  })
15274
15274
  });
15275
+ var LabelDefinitionSchema = external_exports.object({
15276
+ id: external_exports.string(),
15277
+ name: external_exports.string(),
15278
+ category: external_exports.string().optional(),
15279
+ description: external_exports.string().optional(),
15280
+ icon: external_exports.string().optional()
15281
+ });
15275
15282
  var MODEL_FORMATS = [
15276
15283
  "onnx",
15277
15284
  "coreml",
@@ -15279,6 +15286,99 @@ var MODEL_FORMATS = [
15279
15286
  "tflite",
15280
15287
  "pt"
15281
15288
  ];
15289
+ var ModelFormatEntrySchema = external_exports.object({
15290
+ url: external_exports.string(),
15291
+ sizeMB: external_exports.number(),
15292
+ /** Whether this format is a directory bundle (e.g., .mlpackage) rather than a single file */
15293
+ isDirectory: external_exports.boolean().optional(),
15294
+ /** Multi-file payload (directory members or sibling files). */
15295
+ files: external_exports.array(external_exports.string()).readonly().optional(),
15296
+ /** Runtime(s) that can use this format. If omitted, inferred from ModelFormat key */
15297
+ runtimes: external_exports.array(external_exports.enum(["node", "python"])).readonly().optional()
15298
+ });
15299
+ var ModelExtraFileSchema = external_exports.object({
15300
+ url: external_exports.string(),
15301
+ filename: external_exports.string(),
15302
+ sizeMB: external_exports.number()
15303
+ });
15304
+ var ModelFormatsSchema = external_exports.object({
15305
+ onnx: ModelFormatEntrySchema.optional(),
15306
+ coreml: ModelFormatEntrySchema.optional(),
15307
+ openvino: ModelFormatEntrySchema.optional(),
15308
+ tflite: ModelFormatEntrySchema.optional(),
15309
+ pt: ModelFormatEntrySchema.optional()
15310
+ });
15311
+ var ModelCatalogEntrySchema = external_exports.object({
15312
+ id: external_exports.string(),
15313
+ name: external_exports.string(),
15314
+ description: external_exports.string(),
15315
+ formats: ModelFormatsSchema,
15316
+ inputSize: external_exports.object({
15317
+ width: external_exports.number(),
15318
+ height: external_exports.number()
15319
+ }),
15320
+ labels: external_exports.array(LabelDefinitionSchema).readonly(),
15321
+ inputLayout: external_exports.enum(["nchw", "nhwc"]).optional(),
15322
+ inputNormalization: external_exports.enum([
15323
+ "zero-one",
15324
+ "imagenet",
15325
+ "none"
15326
+ ]).optional(),
15327
+ preprocessMode: external_exports.enum(["letterbox", "resize"]).optional(),
15328
+ /**
15329
+ * When true, the executor produces a landmark-aligned crop (similarity warp
15330
+ * onto the canonical template) before this step runs, instead of a plain
15331
+ * axis-aligned bbox crop. Required for face-recognition embedders (ArcFace):
15332
+ * their embeddings are only discriminative on an aligned input. The face
15333
+ * detector that produced the parent detail must emit 5 landmarks.
15334
+ */
15335
+ faceAlignment: external_exports.boolean().optional(),
15336
+ /**
15337
+ * Auxiliary files required at runtime (labels JSON, charset dict, etc.).
15338
+ * Downloaded into the same modelsDir alongside the model file.
15339
+ */
15340
+ extraFiles: external_exports.array(ModelExtraFileSchema).readonly().optional()
15341
+ });
15342
+ var ConvertTargetSchema = external_exports.discriminatedUnion("format", [external_exports.object({
15343
+ format: external_exports.literal("openvino"),
15344
+ precisions: external_exports.array(external_exports.enum(["fp16", "int8"])).min(1).readonly()
15345
+ }), external_exports.object({ format: external_exports.literal("coreml") })]);
15346
+ var ModelConvertMetadataSchema = external_exports.object({
15347
+ id: external_exports.string().regex(/^[a-zA-Z0-9._-]+$/),
15348
+ name: external_exports.string(),
15349
+ labels: external_exports.array(LabelDefinitionSchema).readonly(),
15350
+ inputSize: external_exports.object({
15351
+ width: external_exports.number(),
15352
+ height: external_exports.number()
15353
+ }),
15354
+ inputLayout: external_exports.enum(["nchw", "nhwc"]).optional(),
15355
+ inputNormalization: external_exports.enum([
15356
+ "zero-one",
15357
+ "imagenet",
15358
+ "none"
15359
+ ]).optional(),
15360
+ preprocessMode: external_exports.enum(["letterbox", "resize"]).optional(),
15361
+ outputFormat: external_exports.enum([
15362
+ "yolo",
15363
+ "ssd",
15364
+ "embedding",
15365
+ "classification",
15366
+ "ocr",
15367
+ "segmentation"
15368
+ ]),
15369
+ faceAlignment: external_exports.boolean().optional()
15370
+ });
15371
+ var ConvertArtifactSchema = external_exports.object({
15372
+ format: external_exports.enum(MODEL_FORMATS),
15373
+ precision: external_exports.enum(["fp16", "int8"]).optional(),
15374
+ sizeMB: external_exports.number(),
15375
+ validated: external_exports.boolean(),
15376
+ files: external_exports.array(external_exports.string()).readonly()
15377
+ });
15378
+ var ConvertResultSchema = external_exports.object({
15379
+ entry: ModelCatalogEntrySchema,
15380
+ artifacts: external_exports.array(ConvertArtifactSchema).readonly()
15381
+ });
15282
15382
  var RecordingWeekdaySchema = external_exports.number().int().min(0).max(6);
15283
15383
  var HHMM = /^([01]\d|2[0-3]):[0-5]\d$/;
15284
15384
  var RecordingScheduleSchema = external_exports.discriminatedUnion("kind", [external_exports.object({ kind: external_exports.literal("always") }), external_exports.object({
@@ -22079,6 +22179,58 @@ var addonWidgetsCapability = {
22079
22179
  mode: "singleton",
22080
22180
  methods: { listWidgets: method(external_exports.void(), external_exports.array(EnrichedWidgetMetadataSchema).readonly()) }
22081
22181
  };
22182
+ var CustomModelDescriptorSchema = external_exports.object({
22183
+ stepId: external_exports.string(),
22184
+ entry: ModelCatalogEntrySchema
22185
+ });
22186
+ var customModelRegistryCapability = {
22187
+ name: "custom-model-registry",
22188
+ scope: "system",
22189
+ mode: "collection",
22190
+ internal: true,
22191
+ methods: { listModels: method(external_exports.void(), external_exports.array(CustomModelDescriptorSchema).readonly()) }
22192
+ };
22193
+ var ModelDistributeInputSchema = external_exports.object({
22194
+ nodeId: external_exports.string(),
22195
+ modelId: external_exports.string(),
22196
+ format: external_exports.enum(MODEL_FORMATS),
22197
+ entry: ModelCatalogEntrySchema
22198
+ });
22199
+ var ModelDistributeResultSchema = external_exports.object({
22200
+ ok: external_exports.boolean(),
22201
+ /** sha256 of the staged tarball (empty for a hub-local no-op). */
22202
+ sha256: external_exports.string(),
22203
+ bytes: external_exports.number(),
22204
+ /** The target node's modelsDir the artifact landed in. */
22205
+ path: external_exports.string()
22206
+ });
22207
+ var modelDistributorCapability = {
22208
+ name: "model-distributor",
22209
+ scope: "system",
22210
+ mode: "singleton",
22211
+ internal: true,
22212
+ methods: { distributeModel: method(ModelDistributeInputSchema, ModelDistributeResultSchema, {
22213
+ kind: "mutation",
22214
+ auth: "admin"
22215
+ }) }
22216
+ };
22217
+ var ModelConvertInputSchema = external_exports.object({
22218
+ sourceUrl: external_exports.string(),
22219
+ metadata: ModelConvertMetadataSchema,
22220
+ targets: external_exports.array(ConvertTargetSchema).min(1).readonly(),
22221
+ calibrationRef: external_exports.string().optional(),
22222
+ sessionId: external_exports.string().optional()
22223
+ });
22224
+ var modelConvertCapability = {
22225
+ name: "model-convert",
22226
+ scope: "system",
22227
+ mode: "singleton",
22228
+ internal: true,
22229
+ methods: { convert: method(ModelConvertInputSchema, ConvertResultSchema, {
22230
+ kind: "mutation",
22231
+ auth: "admin"
22232
+ }) }
22233
+ };
22082
22234
  var AddonHttpRouteSchema = external_exports.object({
22083
22235
  method: external_exports.enum([
22084
22236
  "GET",
@@ -28148,6 +28300,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
28148
28300
  addonId: null,
28149
28301
  access: "create"
28150
28302
  },
28303
+ "customModelRegistry.listModels": {
28304
+ capName: "custom-model-registry",
28305
+ capScope: "system",
28306
+ addonId: null,
28307
+ access: "view"
28308
+ },
28151
28309
  "decoder.createSession": {
28152
28310
  capName: "decoder",
28153
28311
  capScope: "system",
@@ -29372,6 +29530,18 @@ var METHOD_ACCESS_MAP = Object.freeze({
29372
29530
  addonId: null,
29373
29531
  access: "view"
29374
29532
  },
29533
+ "modelConvert.convert": {
29534
+ capName: "model-convert",
29535
+ capScope: "system",
29536
+ addonId: null,
29537
+ access: "create"
29538
+ },
29539
+ "modelDistributor.distributeModel": {
29540
+ capName: "model-distributor",
29541
+ capScope: "system",
29542
+ addonId: null,
29543
+ access: "create"
29544
+ },
29375
29545
  "motion.isDetected": {
29376
29546
  capName: "motion",
29377
29547
  capScope: "device",
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runDiscover
4
- } from "./chunk-4LGWRIPN.js";
4
+ } from "./chunk-FMTBDGJS.js";
5
5
  import "./chunk-K3NQKI34.js";
6
6
 
7
7
  // src/cli.ts
@@ -608,7 +608,7 @@ function isUnknown(_value) {
608
608
  return true;
609
609
  }
610
610
  async function resolveServerInteractive(presetNamespace) {
611
- const { discoverNodes, resolveHubFromDiscovered } = await import("./discover-DFIDPNMF.js");
611
+ const { discoverNodes, resolveHubFromDiscovered } = await import("./discover-NJY5BEXP.js");
612
612
  if (presetNamespace) {
613
613
  const spinner4 = clack.spinner();
614
614
  spinner4.start(`Discovering hub on LAN (namespace "${presetNamespace}")`);
@@ -3,7 +3,7 @@ import {
3
3
  discoverNodes,
4
4
  resolveHubFromDiscovered,
5
5
  runDiscover
6
- } from "./chunk-4LGWRIPN.js";
6
+ } from "./chunk-FMTBDGJS.js";
7
7
  import "./chunk-K3NQKI34.js";
8
8
  export {
9
9
  discoverNodes,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "camstack",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "description": "CLI tool for managing and running CamStack server",
5
5
  "keywords": [
6
6
  "camstack",