@camstack/addon-model-studio 1.1.208 → 1.1.209

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (20) hide show
  1. package/dist/MotionZonesSettings-DPVW36SY.mjs +310 -0
  2. package/dist/{PrivacyMaskSettings-BR1W0Jdz.mjs → PrivacyMaskSettings-CE3p-uMG.mjs} +5 -5
  3. package/dist/{SceneMonitorEditor-C2hv7m4b.mjs → SceneMonitorEditor-B0ZWDpU7.mjs} +285 -285
  4. package/dist/_stub.js +6463 -5786
  5. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-BXiGIO9F.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-CXndlwsf.mjs} +3 -3
  6. package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DMYNiT-L.mjs +26 -0
  7. package/dist/addon-model-studio.css +1 -1
  8. package/dist/{hostInit-BjI6ZGeQ.mjs → hostInit-DpDYa2D-.mjs} +2 -2
  9. package/dist/model-studio.addon.js +292 -9
  10. package/dist/model-studio.addon.mjs +292 -9
  11. package/dist/{player-overlays-DyvbN32a.mjs → player-overlays-B06LE_Gr.mjs} +5 -5
  12. package/dist/remoteEntry.js +1 -1
  13. package/dist/{responsive-B85nuotM.mjs → responsive-BV0NkBXa.mjs} +3 -3
  14. package/dist/{scene-monitor-copy-DY98vLAG.mjs → scene-monitor-copy-BEsrfWnh.mjs} +1 -1
  15. package/dist/{square-CqTd_dbN.mjs → square-1mDEdKJ6.mjs} +1 -1
  16. package/dist/{trash-2-CwTAu8_U.mjs → trash-2-BJYsA9Vu.mjs} +1 -1
  17. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-CejkP6cN.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-CmWc3NQd.mjs} +1 -1
  18. package/package.json +1 -1
  19. package/dist/MotionZonesSettings-CfPlD9DG.mjs +0 -310
  20. package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CVVm4Mi7.mjs +0 -26
@@ -11099,7 +11099,53 @@ var ModelFormatEntrySchema = object({
11099
11099
  /** Multi-file payload (directory members or sibling files). */
11100
11100
  files: array(string()).readonly().optional(),
11101
11101
  /** Runtime(s) that can use this format. If omitted, inferred from ModelFormat key */
11102
- runtimes: array(_enum(["python"])).readonly().optional()
11102
+ runtimes: array(_enum(["python"])).readonly().optional(),
11103
+ /**
11104
+ * Content revision of the artefact, for one hosted OFF the CamStack mirror.
11105
+ * A format on the mirror leaves it unset: its revision (the sha256 of its
11106
+ * weight file) comes from the downloader's generated table, kept in step
11107
+ * with the mirror by `scripts/check-hosted-model-revisions.ts` (D744). A
11108
+ * node records the revision it downloaded next to the file
11109
+ * (`<file>.revision`); a copy with no record or a different one is stale
11110
+ * unless its weight file hashes to the revision, and a stale copy is
11111
+ * downloaded again, the old one serving until the new one is complete. No
11112
+ * revision at all ⇒ a file on disk is current, whatever it holds (D743).
11113
+ */
11114
+ revision: string().min(1).optional()
11115
+ });
11116
+ /**
11117
+ * What a node holds for one (model, format) (D746). `current` is a complete
11118
+ * copy at its catalog revision — exactly what `downloaded: true` means.
11119
+ * `stale` is bytes on disk that are not (yet) proven current under D743/D744:
11120
+ * no or a different revision record, or a missing sibling. `missing` is no
11121
+ * copy. `downloaded` alone folds `stale` into "not downloaded", which hid
11122
+ * reclaimable bytes and a copy about to be replaced.
11123
+ */
11124
+ var ModelOnDiskStateSchema = _enum([
11125
+ "current",
11126
+ "stale",
11127
+ "missing"
11128
+ ]);
11129
+ /**
11130
+ * The numeric precision of one format's BUILD (D746) — reported only when the
11131
+ * build states it (file-name token, an INT8 variant, an EdgeTPU compile, a
11132
+ * CamStack Core ML export). Absent means "not stated", never "fp32".
11133
+ */
11134
+ var ModelFormatPrecisionSchema = _enum([
11135
+ "fp32",
11136
+ "fp16",
11137
+ "int8"
11138
+ ]);
11139
+ /**
11140
+ * One format of one model as a node's `pipelineExecutor.getSchema` reports it.
11141
+ * `onDisk` / `precision` are optional for version skew: a runner that predates
11142
+ * them omits them, and a reader falls back to `downloaded`.
11143
+ */
11144
+ var PipelineModelFormatStatusSchema = object({
11145
+ downloaded: boolean(),
11146
+ sizeMB: number(),
11147
+ onDisk: ModelOnDiskStateSchema.optional(),
11148
+ precision: ModelFormatPrecisionSchema.optional()
11103
11149
  });
11104
11150
  /**
11105
11151
  * Extra file that must be downloaded alongside the model (e.g., labels JSON, dict.txt).
@@ -23791,7 +23837,7 @@ var FrameRefSchema = object({
23791
23837
  timestamp: number(),
23792
23838
  capturedAt: number().optional()
23793
23839
  });
23794
- var ModelFormatSchema$1 = _enum([
23840
+ var ModelFormatSchema$2 = _enum([
23795
23841
  "onnx",
23796
23842
  "coreml",
23797
23843
  "openvino",
@@ -23809,7 +23855,7 @@ var PipelineSlotSchema = _enum([
23809
23855
  var PipelineEngineChoiceSchema = object({
23810
23856
  runtime: literal("python"),
23811
23857
  backend: string(),
23812
- format: ModelFormatSchema$1,
23858
+ format: ModelFormatSchema$2,
23813
23859
  device: string().optional()
23814
23860
  });
23815
23861
  /**
@@ -23866,10 +23912,7 @@ var PipelineTemplateSchema$1 = object({
23866
23912
  var PipelineModelOptionSchema = object({
23867
23913
  id: string(),
23868
23914
  name: string(),
23869
- formats: record(string(), object({
23870
- downloaded: boolean(),
23871
- sizeMB: number()
23872
- })),
23915
+ formats: record(string(), PipelineModelFormatStatusSchema),
23873
23916
  group: ModelVariantGroupSchema.optional(),
23874
23917
  legacy: boolean().optional(),
23875
23918
  provider: ModelProviderIdSchema.optional(),
@@ -24036,6 +24079,22 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
24036
24079
  }), {
24037
24080
  kind: "mutation",
24038
24081
  auth: "admin"
24082
+ }), method(object({
24083
+ nodeId: string(),
24084
+ deviceIds: array(number()).readonly().optional(),
24085
+ dryRun: boolean()
24086
+ }), object({
24087
+ entries: array(object({
24088
+ deviceId: number(),
24089
+ keys: array(string()).readonly()
24090
+ })).readonly(),
24091
+ refused: array(object({
24092
+ deviceId: number(),
24093
+ reason: string()
24094
+ })).readonly()
24095
+ }), {
24096
+ kind: "mutation",
24097
+ auth: "admin"
24039
24098
  }), method(object({ nodeId: string() }), object({ unhealthy: array(object({
24040
24099
  /** `<backend>:<device>`, e.g. `openvino:gpu`. */
24041
24100
  deviceKey: string(),
@@ -24072,11 +24131,11 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
24072
24131
  }), PipelineTemplateSchema$1, { kind: "mutation" }), method(object({ id: string() }), _void(), { kind: "mutation" }), method(_void(), InferenceCapabilitiesBridge), method(object({ addonId: string() }), ModelAvailabilityListBridge), method(object({
24073
24132
  addonId: string(),
24074
24133
  modelId: string(),
24075
- format: ModelFormatSchema$1
24134
+ format: ModelFormatSchema$2
24076
24135
  }), DownloadModelResultSchema, { kind: "mutation" }), method(object({
24077
24136
  addonId: string(),
24078
24137
  modelId: string(),
24079
- format: ModelFormatSchema$1
24138
+ format: ModelFormatSchema$2
24080
24139
  }), object({ success: literal(true) }), { kind: "mutation" }), method(object({
24081
24140
  steps: array(PipelineStepInputSchema).min(1),
24082
24141
  frame: FrameInputSchema.optional(),
@@ -24233,6 +24292,204 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
24233
24292
  filename: string().optional(),
24234
24293
  settings: record(string(), unknown()).optional()
24235
24294
  }), AudioTestResultSchema, { kind: "mutation" }), method(_void(), ConfigUISchemaNullableBridge);
24295
+ /**
24296
+ * The wire shapes of the Best settings plan and apply (D745), used by the
24297
+ * `pipeline-orchestrator` cap. The recommender's own types
24298
+ * (`recommend.ts`, `demand.ts`) are the TS face of the same data; these
24299
+ * schemas are what crosses the cap boundary.
24300
+ */
24301
+ var ModelFormatSchema$1 = _enum(MODEL_FORMATS);
24302
+ var HardwareClassIdSchema = _enum([
24303
+ "intel-core-ultra",
24304
+ "intel-n-series",
24305
+ "apple-m-base",
24306
+ "apple-m-pro",
24307
+ "unknown"
24308
+ ]);
24309
+ var AcceleratorKindSchema = _enum([
24310
+ "intel-npu",
24311
+ "intel-igpu",
24312
+ "x86-cpu",
24313
+ "arm-cpu",
24314
+ "apple-ane",
24315
+ "coral"
24316
+ ]);
24317
+ var RecommendationReasonSchema = discriminatedUnion("kind", [
24318
+ object({
24319
+ kind: literal("fits"),
24320
+ utilisation: number()
24321
+ }),
24322
+ object({
24323
+ kind: literal("tie-faster"),
24324
+ over: string(),
24325
+ recallDelta: number()
24326
+ }),
24327
+ object({
24328
+ kind: literal("stepped-down"),
24329
+ from: string(),
24330
+ to: string(),
24331
+ limitedBy: string()
24332
+ }),
24333
+ object({
24334
+ kind: literal("no-fit-lightest"),
24335
+ utilisation: number()
24336
+ }),
24337
+ object({
24338
+ kind: literal("derived-latency"),
24339
+ modelId: string()
24340
+ }),
24341
+ object({
24342
+ kind: literal("estimated-load"),
24343
+ observedForMs: number().nullable()
24344
+ }),
24345
+ object({ kind: literal("cpu-device") }),
24346
+ object({ kind: literal("coral-untouched") }),
24347
+ object({ kind: literal("device-disabled") }),
24348
+ object({ kind: literal("device-unavailable") }),
24349
+ object({ kind: literal("node-offline") }),
24350
+ object({ kind: literal("no-hardware-facts") }),
24351
+ object({
24352
+ kind: literal("no-measured-data"),
24353
+ hardwareClass: HardwareClassIdSchema
24354
+ }),
24355
+ object({
24356
+ kind: literal("no-family-build"),
24357
+ format: ModelFormatSchema$1
24358
+ })
24359
+ ]);
24360
+ var DeviceDemandSchema = object({
24361
+ nodeId: string(),
24362
+ deviceKey: string(),
24363
+ demandFps: number(),
24364
+ maxCameraFps: number(),
24365
+ alwaysOnCameras: number(),
24366
+ onMotionSessions: number(),
24367
+ onMotionSource: _enum([
24368
+ "observed-24h",
24369
+ "estimate",
24370
+ "none"
24371
+ ]),
24372
+ observedForMs: number().nullable()
24373
+ });
24374
+ var DeviceModelChoiceSchema = object({
24375
+ modelId: string(),
24376
+ p50Ms: number(),
24377
+ fps: number(),
24378
+ measured: boolean(),
24379
+ utilisation: number(),
24380
+ personRecall: number()
24381
+ });
24382
+ var DeviceRecommendationSchema = object({
24383
+ deviceKey: string(),
24384
+ accelerator: AcceleratorKindSchema.nullable(),
24385
+ enabled: boolean(),
24386
+ available: boolean(),
24387
+ demand: DeviceDemandSchema.nullable(),
24388
+ chosen: DeviceModelChoiceSchema.nullable(),
24389
+ reasons: array(RecommendationReasonSchema).readonly()
24390
+ });
24391
+ var NodeRecommendationSchema = object({
24392
+ nodeId: string(),
24393
+ reachable: boolean(),
24394
+ hardwareClass: HardwareClassIdSchema.nullable(),
24395
+ cpuModel: string().nullable(),
24396
+ skipped: boolean(),
24397
+ acceleratorModelId: string().nullable(),
24398
+ devices: array(DeviceRecommendationSchema).readonly(),
24399
+ reasons: array(RecommendationReasonSchema).readonly()
24400
+ });
24401
+ var ModelPinChangeSchema = object({
24402
+ stepId: string(),
24403
+ before: string().nullable(),
24404
+ after: string().nullable()
24405
+ });
24406
+ var NodeDeviceChangeSchema = object({
24407
+ nodeId: string(),
24408
+ deviceKey: string(),
24409
+ madeExplicit: boolean(),
24410
+ modelPins: array(ModelPinChangeSchema).readonly(),
24411
+ thresholds: array(object({
24412
+ stepId: string(),
24413
+ keys: array(string()).readonly()
24414
+ })).readonly()
24415
+ });
24416
+ var CameraOverrideClearSchema = object({
24417
+ deviceId: number(),
24418
+ source: _enum(["step-override", "wholesale"]),
24419
+ nodeId: string(),
24420
+ deviceKey: string().nullable(),
24421
+ stepId: string(),
24422
+ modelIdBefore: string().nullable(),
24423
+ keys: array(string()).readonly()
24424
+ });
24425
+ var DetectorStoreClearSchema = object({
24426
+ deviceId: number(),
24427
+ keys: array(string()).readonly()
24428
+ });
24429
+ var BestSettingsWarningSchema = discriminatedUnion("kind", [
24430
+ object({
24431
+ kind: literal("detector-store-cluster-wide"),
24432
+ skippedNodes: array(string()).readonly()
24433
+ }),
24434
+ object({
24435
+ kind: literal("detector-store-unreadable"),
24436
+ error: string()
24437
+ }),
24438
+ object({
24439
+ kind: literal("coral-enabled"),
24440
+ nodeId: string(),
24441
+ deviceKey: string()
24442
+ })
24443
+ ]);
24444
+ var BestSettingsOptionsSchema = object({
24445
+ /** Share of each accelerator's throughput kept free (0.3–0.5). */
24446
+ headroom: number().min(.3).max(.5).default(.4) });
24447
+ var BestSettingsPlanSchema = object({
24448
+ /** Hash of everything the apply will write — the apply refuses a different one. */
24449
+ planHash: string(),
24450
+ family: literal("yolov9"),
24451
+ headroom: number(),
24452
+ generatedAt: number(),
24453
+ nodes: array(NodeRecommendationSchema).readonly(),
24454
+ nodeChanges: array(NodeDeviceChangeSchema).readonly(),
24455
+ cameraClears: array(CameraOverrideClearSchema).readonly(),
24456
+ detectorStoreClears: array(DetectorStoreClearSchema).readonly(),
24457
+ warnings: array(BestSettingsWarningSchema).readonly()
24458
+ });
24459
+ var BestSettingsApplyInputSchema = object({
24460
+ planHash: string(),
24461
+ headroom: number().min(.3).max(.5).default(.4)
24462
+ });
24463
+ var BestSettingsPhaseResultSchema = object({
24464
+ phase: _enum([
24465
+ "download",
24466
+ "camera-overrides",
24467
+ "detector-thresholds",
24468
+ "node-models",
24469
+ "redispatch"
24470
+ ]),
24471
+ ok: boolean(),
24472
+ detail: string()
24473
+ });
24474
+ var BestSettingsApplyResultSchema = discriminatedUnion("kind", [
24475
+ object({
24476
+ kind: literal("applied"),
24477
+ planHash: string(),
24478
+ phases: array(BestSettingsPhaseResultSchema).readonly()
24479
+ }),
24480
+ object({
24481
+ kind: literal("aborted"),
24482
+ phases: array(BestSettingsPhaseResultSchema).readonly()
24483
+ }),
24484
+ object({
24485
+ kind: literal("stale"),
24486
+ plan: BestSettingsPlanSchema
24487
+ }),
24488
+ object({
24489
+ kind: literal("refused"),
24490
+ reason: _enum(["apply-in-progress"])
24491
+ })
24492
+ ]);
24236
24493
  object({
24237
24494
  activeCameras: number(),
24238
24495
  throttledCameras: number(),
@@ -25959,6 +26216,9 @@ method(object({
25959
26216
  }), {
25960
26217
  kind: "mutation",
25961
26218
  auth: "admin"
26219
+ }), method(BestSettingsOptionsSchema, BestSettingsPlanSchema, { auth: "admin" }), method(BestSettingsApplyInputSchema, BestSettingsApplyResultSchema, {
26220
+ kind: "mutation",
26221
+ auth: "admin"
25962
26222
  }), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
25963
26223
  deviceId: number(),
25964
26224
  addonId: string(),
@@ -41632,6 +41892,12 @@ Object.freeze({
41632
41892
  addonId: null,
41633
41893
  access: "delete"
41634
41894
  },
41895
+ "pipelineExecutor.clearModelBoundDeviceOverrides": {
41896
+ capName: "pipeline-executor",
41897
+ capScope: "system",
41898
+ addonId: null,
41899
+ access: "delete"
41900
+ },
41635
41901
  "pipelineExecutor.deleteModel": {
41636
41902
  capName: "pipeline-executor",
41637
41903
  capScope: "system",
@@ -41848,6 +42114,12 @@ Object.freeze({
41848
42114
  addonId: null,
41849
42115
  access: "view"
41850
42116
  },
42117
+ "pipelineOrchestrator.applyBestSettings": {
42118
+ capName: "pipeline-orchestrator",
42119
+ capScope: "system",
42120
+ addonId: null,
42121
+ access: "create"
42122
+ },
41851
42123
  "pipelineOrchestrator.applyDeviceSettingsPatch": {
41852
42124
  capName: "pipeline-orchestrator",
41853
42125
  capScope: "system",
@@ -42022,6 +42294,12 @@ Object.freeze({
42022
42294
  addonId: null,
42023
42295
  access: "create"
42024
42296
  },
42297
+ "pipelineOrchestrator.planBestSettings": {
42298
+ capName: "pipeline-orchestrator",
42299
+ capScope: "system",
42300
+ addonId: null,
42301
+ access: "view"
42302
+ },
42025
42303
  "pipelineOrchestrator.rebalance": {
42026
42304
  capName: "pipeline-orchestrator",
42027
42305
  capScope: "system",
@@ -47444,6 +47722,11 @@ Object.freeze({
47444
47722
  form: "single",
47445
47723
  optional: false
47446
47724
  }],
47725
+ "pipelineExecutor.clearModelBoundDeviceOverrides": [{
47726
+ name: "deviceIds",
47727
+ form: "array",
47728
+ optional: true
47729
+ }],
47447
47730
  "pipelineExecutor.runPipeline": [{
47448
47731
  name: "deviceId",
47449
47732
  form: "single",