@camstack/addon-training 0.1.76 → 0.1.78

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 (21) hide show
  1. package/dist/{MotionZonesSettings-D5qNBXG6.mjs → MotionZonesSettings-jORey4uC.mjs} +2 -2
  2. package/dist/{PrivacyMaskSettings-D-DPswdN.mjs → PrivacyMaskSettings-P24unULW.mjs} +2 -2
  3. package/dist/{SceneMonitorEditor-DtRIp_YE.mjs → SceneMonitorEditor-CkLN8Kee.mjs} +1 -1
  4. package/dist/_stub.js +5535 -5309
  5. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_training_page-CHXpYatD.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_training_page-BbQzUVOo.mjs} +3 -3
  6. package/dist/_virtual_mf___mfe_internal__addon_training_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DiRkx0UL.mjs +26 -0
  7. package/dist/addon-training.css +1 -1
  8. package/dist/{dist-BWgu_wcI.js → dist-CKiSDi2Y.js} +183 -95
  9. package/dist/{dist-B_SLRS5u.mjs → dist-DeD2tKQ2.mjs} +183 -95
  10. package/dist/{hostInit-B52B1CB4.mjs → hostInit-ndHJ_k8s.mjs} +2 -2
  11. package/dist/index.js +1 -1
  12. package/dist/orchestrator/training.addon.js +1 -1
  13. package/dist/orchestrator/training.addon.mjs +1 -1
  14. package/dist/{player-overlays-DpkZn9vj.mjs → player-overlays-CD0eup2L.mjs} +1 -1
  15. package/dist/providers/modal/training-modal.addon.js +1 -1
  16. package/dist/providers/modal/training-modal.addon.mjs +1 -1
  17. package/dist/remoteEntry.js +1 -1
  18. package/dist/{responsive-rqNDO6E-.mjs → responsive-CBG3O0ME.mjs} +1 -1
  19. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-B3b43ydO.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-X4iAyyQb.mjs} +1 -1
  20. package/package.json +1 -1
  21. package/dist/_virtual_mf___mfe_internal__addon_training_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DoK4LRXI.mjs +0 -26
@@ -1,5 +1,5 @@
1
1
  import "node:crypto";
2
- //#region ../types/dist/event-category-fDPduoeC.mjs
2
+ //#region ../types/dist/event-category-Ceif8n-v.mjs
3
3
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
4
4
  EventCategory["SystemBoot"] = "system.boot";
5
5
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -471,6 +471,10 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
471
471
  * on the device detail page.
472
472
  */
473
473
  EventCategory["DoorbellOnPressed"] = "doorbell.onPressed";
474
+ /** Mirrors `runningStateCapability.events.onStarted`. */
475
+ EventCategory["RunningStarted"] = "running.started";
476
+ /** Mirrors `runningStateCapability.events.onFinished`. */
477
+ EventCategory["RunningFinished"] = "running.finished";
474
478
  /**
475
479
  * Cap event fired by every device that registers the `event-emitter`
476
480
  * capability. Mirrors `eventEmitterCapability.events.onEvent`. Carries
@@ -5563,7 +5567,7 @@ var ZodIssueCode = {
5563
5567
  var ZodFirstPartyTypeKind;
5564
5568
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5565
5569
  //#endregion
5566
- //#region ../types/dist/sleep-CHIEEJkY.mjs
5570
+ //#region ../types/dist/sleep-CYfIZzGv.mjs
5567
5571
  /**
5568
5572
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5569
5573
  * window to float samples (D455).
@@ -5902,7 +5906,7 @@ Object.fromEntries([
5902
5906
  * `hydrateSchema` to skip the `value` injection for structural-only fields.
5903
5907
  */
5904
5908
  function isValuelessField(field) {
5905
- return field.type === "separator" || field.type === "info" || field.type === "qr-code" || field.type === "button" || field.type === "object-array" || field.type === "widget" || field.type === "addon-action-button" || field.type === "device-action-button";
5909
+ return field.type === "separator" || field.type === "info" || field.type === "qr-code" || field.type === "button" || field.type === "object-array" || field.type === "widget" || field.type === "addon-action-button" || field.type === "device-action-button" || field.type === "account-sign-in" || field.type === "secret-presence";
5906
5910
  }
5907
5911
  function hydrateSchema(schema, values, options = {}) {
5908
5912
  return {
@@ -9111,7 +9115,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
9111
9115
  return DeviceRole;
9112
9116
  }({});
9113
9117
  //#endregion
9114
- //#region ../types/dist/composition-CB6PMT9p.mjs
9118
+ //#region ../types/dist/composition-xz-ud5EQ.mjs
9115
9119
  /**
9116
9120
  * The ffmpeg build every CamStack node downloads, per platform and arch.
9117
9121
  *
@@ -9412,6 +9416,20 @@ var table = {
9412
9416
  apply: () => {
9413
9417
  throw new ExpressionEvalError("count: stateful evaluation context is required");
9414
9418
  }
9419
+ },
9420
+ dwell: {
9421
+ minArgs: 3,
9422
+ maxArgs: 3,
9423
+ apply: () => {
9424
+ throw new ExpressionEvalError("dwell: stateful evaluation context is required");
9425
+ }
9426
+ },
9427
+ latchedAt: {
9428
+ minArgs: 1,
9429
+ maxArgs: 1,
9430
+ apply: () => {
9431
+ throw new ExpressionEvalError("latchedAt: stateful evaluation context is required");
9432
+ }
9415
9433
  }
9416
9434
  };
9417
9435
  Object.freeze(Object.assign(Object.create(null), table));
@@ -16290,7 +16308,15 @@ Object.freeze({
16290
16308
  kind: "fixed",
16291
16309
  result: ["number", "null"]
16292
16310
  },
16293
- count: NUMBER
16311
+ count: NUMBER,
16312
+ dwell: {
16313
+ kind: "fixed",
16314
+ result: ["boolean", "null"]
16315
+ },
16316
+ latchedAt: {
16317
+ kind: "fixed",
16318
+ result: ["number", "null"]
16319
+ }
16294
16320
  });
16295
16321
  `${COMPOSED_DEVICE_STABLE_ID_PREFIX}`;
16296
16322
  /**
@@ -42484,9 +42510,6 @@ var NcSystemEventKindSchema = _enum([
42484
42510
  "device-battery-normal",
42485
42511
  "device-consumable-low",
42486
42512
  "device-consumable-normal",
42487
- "device-tank-low",
42488
- "device-tank-full",
42489
- "device-tank-normal",
42490
42513
  "stream-online",
42491
42514
  "stream-offline",
42492
42515
  "node-online",
@@ -42533,13 +42556,14 @@ var NcSystemEventKindSchema = _enum([
42533
42556
  "camera-enabled"
42534
42557
  ]);
42535
42558
  /** The legacy tail of {@link NcSystemEventKindSchema} — see its docblock. */
42536
- var NC_LEGACY_SYSTEM_EVENT_KINDS = new Set([
42559
+ var NC_LEGACY_SYSTEM_EVENT_KINDS = [
42537
42560
  "camera-online",
42538
42561
  "camera-offline",
42539
42562
  "camera-disabled",
42540
42563
  "camera-enabled"
42541
- ]);
42542
- NcSystemEventKindSchema.options.filter((kind) => !NC_LEGACY_SYSTEM_EVENT_KINDS.has(kind));
42564
+ ];
42565
+ var NC_LEGACY_SYSTEM_EVENT_KIND_SET = new Set(NC_LEGACY_SYSTEM_EVENT_KINDS);
42566
+ NcSystemEventKindSchema.options.filter((kind) => !NC_LEGACY_SYSTEM_EVENT_KIND_SET.has(kind));
42543
42567
  /**
42544
42568
  * The panel's transitions, as ONE list.
42545
42569
  *
@@ -43658,18 +43682,11 @@ var NcRuleSchema = NcRuleInputSchema.extend({
43658
43682
  */
43659
43683
  disabledTargetIds: array(string()).default([])
43660
43684
  });
43661
- /**
43662
- * The state-summary SECTIONS (D647 / D698 / D708): the D637 kind groups that
43663
- * report a still-true state. `addons` is the crash-looped addons only and
43664
- * `addon-updates` the addons that are behind (D708 split them). `backups-exports` and `alarm` are not sections — a completed
43665
- * job is not an open state, and the alarm stays instant.
43666
- */
43667
43685
  var NcStateSummarySectionIdSchema = _enum([
43668
43686
  "device-state",
43669
43687
  "streams",
43670
43688
  "battery",
43671
43689
  "consumables",
43672
- "tanks",
43673
43690
  "detection-blind",
43674
43691
  "nodes",
43675
43692
  "addons",
@@ -44970,6 +44987,18 @@ Object.freeze({
44970
44987
  reason: "camera sensor mappings not loaded"
44971
44988
  });
44972
44989
  /**
44990
+ * What the vision model must answer before a package event is emitted
44991
+ * when a packages rule has "Confirm with the LLM" on.
44992
+ *
44993
+ * `package` is the verdict. `confidence` is 0..1. `reason` is the model's
44994
+ * one-line explanation, stored on the event so a drop is not silent.
44995
+ */
44996
+ var PackageLlmVerdictSchema = object({
44997
+ package: boolean(),
44998
+ confidence: number().min(0).max(1),
44999
+ reason: string().min(1)
45000
+ });
45001
+ /**
44973
45002
  * A model choice has a SCOPE, and a scope change has a workflow.
44974
45003
  *
44975
45004
  * ## The two scopes
@@ -45906,6 +45935,21 @@ var ObjectEventSchema = object({
45906
45935
  * pick-up written before D684 — UNKNOWN, never 0 and never `timestamp`.
45907
45936
  */
45908
45937
  observedAt: number().optional(),
45938
+ /**
45939
+ * The delivery was emitted without a vision-model yes (D931).
45940
+ *
45941
+ * Set only when the packages rule asked for an LLM confirm and the model
45942
+ * was unreachable, timed out, or answered something that did not parse.
45943
+ * A notification reads it so it can say "possible" instead of a definite
45944
+ * delivery. Absent on every other row, and on a confirm that said yes.
45945
+ */
45946
+ packagePossible: boolean().optional(),
45947
+ /**
45948
+ * The vision model's verdict, when a packages rule asked for one and the
45949
+ * model answered the schema (D931). A "no" never becomes a row — the
45950
+ * detector drops it and logs the reason. Present on a yes.
45951
+ */
45952
+ packageLlmVerdict: PackageLlmVerdictSchema.optional(),
45909
45953
  /** The parent track's key-event importance [0,1], propagated to every object
45910
45954
  * event of the track (so an event row can be sorted by importance without a
45911
45955
  * track join). Absent on legacy rows / before the track was scored. */
@@ -48113,11 +48157,18 @@ var KeptReasonSchema = _enum(["custom-pin"]);
48113
48157
  * Where a choice's latency came from (D791): this node's own benchmark
48114
48158
  * result, or the hardware-class table. Measured on the node beats the table.
48115
48159
  */
48116
- var LatencySourceSchema = discriminatedUnion("kind", [object({ kind: literal("table") }), object({
48117
- kind: literal("node-benchmark"),
48118
- resultId: string(),
48119
- measuredAtMs: number()
48120
- })]);
48160
+ var LatencySourceSchema = discriminatedUnion("kind", [
48161
+ object({ kind: literal("table") }),
48162
+ object({
48163
+ kind: literal("node-benchmark"),
48164
+ resultId: string(),
48165
+ measuredAtMs: number()
48166
+ }),
48167
+ object({
48168
+ kind: literal("estimated"),
48169
+ estimatedFrom: HardwareClassIdSchema
48170
+ })
48171
+ ]);
48121
48172
  var DeviceModelChoiceSchema = object({
48122
48173
  modelId: string(),
48123
48174
  p50Ms: number(),
@@ -48125,6 +48176,11 @@ var DeviceModelChoiceSchema = object({
48125
48176
  measured: boolean(),
48126
48177
  /** Absent on a plan from before D791 — read as the table. */
48127
48178
  source: LatencySourceSchema.optional(),
48179
+ /**
48180
+ * The measured class this latency was scaled from (D930). Absent when the
48181
+ * cell is the table or a node benchmark.
48182
+ */
48183
+ estimatedFrom: HardwareClassIdSchema.optional(),
48128
48184
  /** Parallel sessions at the camera rate with the headroom kept free: ⌊fps × (1 − headroom) / camera fps⌋. */
48129
48185
  capacitySessions: number(),
48130
48186
  personRecall: number()
@@ -58354,6 +58410,30 @@ includeCrops: boolean().optional() }).optional(), array(VehicleSchema).readonly(
58354
58410
  kind: "mutation",
58355
58411
  auth: "admin"
58356
58412
  });
58413
+ var CORE_ULTRA_265K_IGPU_CLOCK_MHZ = 2e3;
58414
+ var positiveOrNull = number().nullable().transform((value) => value !== null && Number.isFinite(value) && value > 0 ? value : null);
58415
+ var textOrNull = string().nullable().transform((value) => value !== null && value.trim() !== "" ? value : null);
58416
+ var PrecisionGopsSchema = object({
58417
+ int8: positiveOrNull,
58418
+ fp16: positiveOrNull
58419
+ });
58420
+ /** What one accelerator device reported. Every failed query is null. */
58421
+ var AcceleratorComputeSchema = object({
58422
+ deviceKey: string(),
58423
+ fullDeviceName: textOrNull,
58424
+ executionUnits: positiveOrNull,
58425
+ clockMHz: positiveOrNull,
58426
+ gops: PrecisionGopsSchema.nullable(),
58427
+ architecture: textOrNull,
58428
+ npuName: textOrNull,
58429
+ tops: positiveOrNull,
58430
+ vendor: textOrNull,
58431
+ webgpuArchitecture: textOrNull,
58432
+ webgpuDevice: textOrNull,
58433
+ computeUnits: positiveOrNull
58434
+ });
58435
+ object({ accelerators: array(AcceleratorComputeSchema).nullable() });
58436
+ 64 * CORE_ULTRA_265K_IGPU_CLOCK_MHZ;
58357
58437
  var ModelFormatSchema = _enum(MODEL_FORMATS);
58358
58438
  var HwAccelBackendInputSchema = _enum([
58359
58439
  "videotoolbox",
@@ -58467,7 +58547,12 @@ var HardwareInfoSchema = object({
58467
58547
  availableRAM_MB: number(),
58468
58548
  gpu: GpuInfoSchema.nullable(),
58469
58549
  npu: NpuInfoSchema.nullable(),
58470
- coral: CoralInfoSchema.nullable().optional()
58550
+ coral: CoralInfoSchema.nullable().optional(),
58551
+ /**
58552
+ * Per-accelerator compute (D930). Omitted by a node that has not probed it.
58553
+ * `null` fields inside an entry are a failed query, never a zero.
58554
+ */
58555
+ accelerators: array(AcceleratorComputeSchema).readonly().optional()
58471
58556
  });
58472
58557
  var PlatformScoreSchema = object({
58473
58558
  runtime: literal("python"),
@@ -59000,6 +59085,22 @@ DeviceType.Camera, method(object({ deviceId: number() }), PtzAutotrackStatusSche
59000
59085
  deviceId: number(),
59001
59086
  status: PtzAutotrackStatusSchema
59002
59087
  });
59088
+ var RunningStateSourceSchema = _enum(["native", "assigned"]);
59089
+ object({
59090
+ /** null = unknown — never coerced to false (D393). */
59091
+ running: boolean().nullable(),
59092
+ /** Epoch ms the current boolean began; null while `running` is null. */
59093
+ since: number().nullable(),
59094
+ source: RunningStateSourceSchema,
59095
+ phase: string().nullable(),
59096
+ lastFetchedAt: number()
59097
+ });
59098
+ object({
59099
+ deviceId: number(),
59100
+ since: number().nullable(),
59101
+ phase: string().nullable()
59102
+ });
59103
+ Object.values(DeviceType);
59003
59104
  DeviceType.Camera, DeviceType.Sensor, DeviceType.Switch, method(object({ deviceId: number().int().nonnegative() }), object({ success: literal(true) }), {
59004
59105
  kind: "mutation",
59005
59106
  auth: "admin"
@@ -60839,7 +60940,20 @@ var ZoneRuleSchema = object({
60839
60940
  * Defaults to `true` so operators creating a rule via the UI
60840
60941
  * see it active immediately.
60841
60942
  */
60842
- enabled: boolean().default(true)
60943
+ enabled: boolean().default(true),
60944
+ /**
60945
+ * Package stage only. When true, a package candidate may open from a
60946
+ * scene difference in this rule's zone after a person leaves. The
60947
+ * package model, when it boxes something overlapping, is extra evidence
60948
+ * and is not the gate. Absent or false keeps today's model path.
60949
+ */
60950
+ detectBySceneDifference: boolean().optional(),
60951
+ /**
60952
+ * Package stage only. When true, a promoted package is shown to the
60953
+ * `llm` cap before the delivery event is emitted. Absent or false emits
60954
+ * as today. Usable with or without `detectBySceneDifference`.
60955
+ */
60956
+ confirmWithLlm: boolean().optional()
60843
60957
  });
60844
60958
  array(ZoneRuleSchema).readonly();
60845
60959
  object({
@@ -70383,6 +70497,13 @@ Object.freeze({
70383
70497
  access: "create",
70384
70498
  role: "admin"
70385
70499
  },
70500
+ "runningState.getStatus": {
70501
+ capName: "running-state",
70502
+ capScope: "device",
70503
+ addonId: null,
70504
+ access: "view",
70505
+ role: "viewer"
70506
+ },
70386
70507
  "sceneMonitor.captureReference": {
70387
70508
  capName: "scene-monitor",
70388
70509
  capScope: "device",
@@ -75097,6 +75218,32 @@ var APPLIANCE_CAP_VOCABULARY = {
75097
75218
  }],
75098
75219
  events: { onSent: { notOperatorFacing: "a delivery receipt of a send this system made — not a fact about the world" } }
75099
75220
  },
75221
+ "running-state": {
75222
+ scope: "device",
75223
+ noun: t("Running", "In funzione"),
75224
+ state: [{
75225
+ kind: "boolean",
75226
+ field: "running",
75227
+ label: t("Running", "In funzione"),
75228
+ whenTrue: t("When {device} starts", "Quando {device} inizia"),
75229
+ whenFalse: t("When {device} finishes", "Quando {device} finisce"),
75230
+ icon: "play"
75231
+ }],
75232
+ events: {
75233
+ onStarted: {
75234
+ category: EventCategory.RunningStarted,
75235
+ label: t("Started running", "Ha iniziato a funzionare"),
75236
+ phrase: t("When {device} starts running", "Quando {device} inizia a funzionare"),
75237
+ icon: "play"
75238
+ },
75239
+ onFinished: {
75240
+ category: EventCategory.RunningFinished,
75241
+ label: t("Finished", "Ha finito"),
75242
+ phrase: t("When {device} finishes", "Quando {device} finisce"),
75243
+ icon: "square"
75244
+ }
75245
+ }
75246
+ },
75100
75247
  update: {
75101
75248
  scope: "device",
75102
75249
  noun: t("Firmware update", "Aggiornamento firmware"),
@@ -78637,6 +78784,11 @@ Object.freeze({
78637
78784
  form: "single",
78638
78785
  optional: true
78639
78786
  }],
78787
+ "runningState.getStatus": [{
78788
+ name: "deviceId",
78789
+ form: "single",
78790
+ optional: false
78791
+ }],
78640
78792
  "sceneMonitor.captureReference": [{
78641
78793
  name: "deviceId",
78642
78794
  form: "single",
@@ -79187,40 +79339,7 @@ var NC_AUDIO_DEFAULTS = {
79187
79339
  samplingSeconds: 10
79188
79340
  };
79189
79341
  new Set(["devices", "classes"]);
79190
- /**
79191
- * WHICH narrowing filter speaks about WHICH system-event kind — one predicate,
79192
- * consumed by the rule ENGINE and by every rule EDITOR.
79193
- *
79194
- * ── The failure this file exists for ───────────────────────────────────────
79195
- * `NcSystemEventConditionSchema` carries four optional narrowing lists
79196
- * (`deviceIds`, `deviceTypes`, `nodeIds`, `packageNames`) beside a required
79197
- * `kinds` gate. They are not four filters over one vocabulary: each belongs to
79198
- * a FAMILY of kinds and is meaningless outside it. A node going away has no
79199
- * device type; a completed export has no package; `stream-offline` deliberately
79200
- * carries no device type at all (a stream belongs to a camera by construction).
79201
- *
79202
- * The engine applied all four to every kind, so a filter from one family failed
79203
- * a kind from another family CLOSED. The operator's live rule "Eventi di
79204
- * sistema" selected eleven kinds and set `deviceTypes: ['camera']` — the only
79205
- * way to say "only my cameras" about the two liveness kinds — and NINE of the
79206
- * eleven silently stopped being deliverable. Four days of history contained
79207
- * `device-online` and `device-offline` and nothing else, across a window in
79208
- * which agents were restarted and addons were updated.
79209
- *
79210
- * Both editors already computed this scoping, to decide which filter boxes to
79211
- * render; the cap's own docblock already promised it ("Narrow a `device-*` kind
79212
- * to these device TYPES"). Only the engine disagreed, and it disagreed in the
79213
- * destructive direction. So the rule is stated ONCE, here, and the engine and
79214
- * the editors are readers of it rather than three independent authors.
79215
- *
79216
- * ── The direction ─────────────────────────────────────────────────────────
79217
- * Out of family ⇒ the filter is IGNORED, never fail-closed. An editor that
79218
- * hides a box has already told the operator this filter does not speak about
79219
- * these kinds, so honouring it as an exclusion contradicts the only
79220
- * explanation the operator was ever given. Inside its family the filter still
79221
- * narrows, and still fails CLOSED on a subject that cannot produce the identity
79222
- * it tests (a device the mirror cannot name is not evidence of a camera).
79223
- */
79342
+ new Set(NC_LEGACY_SYSTEM_EVENT_KINDS);
79224
79343
  /**
79225
79344
  * Every filter, for the callers that must cover all of them (guards, tests).
79226
79345
  *
@@ -79246,9 +79365,6 @@ new Map(Object.entries({
79246
79365
  "device-battery-normal": "device-events",
79247
79366
  "device-consumable-low": "device-events",
79248
79367
  "device-consumable-normal": "device-events",
79249
- "device-tank-low": "device-events",
79250
- "device-tank-full": "device-events",
79251
- "device-tank-normal": "device-events",
79252
79368
  "stream-online": "device-events",
79253
79369
  "stream-offline": "device-events",
79254
79370
  "detection-blind": "device-events",
@@ -79325,16 +79441,6 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
79325
79441
  label: "Consumables",
79326
79442
  kinds: ["device-consumable-low", "device-consumable-normal"]
79327
79443
  },
79328
- {
79329
- id: "tanks",
79330
- family: "device-events",
79331
- label: "Tanks",
79332
- kinds: [
79333
- "device-tank-low",
79334
- "device-tank-full",
79335
- "device-tank-normal"
79336
- ]
79337
- },
79338
79444
  {
79339
79445
  id: "detection-blind",
79340
79446
  family: "device-events",
@@ -79492,11 +79598,6 @@ var RULE_BODY_ONLY = ["body"];
79492
79598
  var RULE_TEXT = ["title", "body"];
79493
79599
  var BATTERY = ["device-battery-low", "device-battery-normal"];
79494
79600
  var CONSUMABLE = ["device-consumable-low", "device-consumable-normal"];
79495
- var TANK = [
79496
- "device-tank-low",
79497
- "device-tank-full",
79498
- "device-tank-normal"
79499
- ];
79500
79601
  var ALERT_EPISODE = [
79501
79602
  "alert-critical",
79502
79603
  "alert-error",
@@ -79528,7 +79629,6 @@ var DEVICE_EVENTS = [
79528
79629
  "device-enabled",
79529
79630
  ...BATTERY,
79530
79631
  ...CONSUMABLE,
79531
- ...TANK,
79532
79632
  "stream-online",
79533
79633
  "stream-offline",
79534
79634
  "detection-blind",
@@ -79574,12 +79674,6 @@ var STATE_SUMMARY_SECTION_VARS = [
79574
79674
  example: "Robot — filter 10 %",
79575
79675
  kinds: CONSUMABLE
79576
79676
  },
79577
- {
79578
- name: "summaryTanks",
79579
- label: "Summary: tanks",
79580
- example: "Robot — clean water low",
79581
- kinds: TANK
79582
- },
79583
79677
  {
79584
79678
  name: "summaryDetection",
79585
79679
  label: "Summary: cameras detecting nothing",
@@ -79695,8 +79789,7 @@ var STATE_SUMMARY_VARS = [
79695
79789
  ([...RULE_TEXT], [...COMBINED_ALARM]),
79696
79790
  ([...RULE_TEXT], [...DEVICE_EVENTS]),
79697
79791
  ([...RULE_TEXT], [...BATTERY, ...CONSUMABLE]),
79698
- ([...RULE_TEXT], [...CONSUMABLE, ...TANK]),
79699
- ([...RULE_TEXT], [...TANK]),
79792
+ ([...RULE_TEXT], [...CONSUMABLE]),
79700
79793
  [...RULE_TEXT],
79701
79794
  ([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
79702
79795
  ([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
@@ -79800,15 +79893,6 @@ new Map([
79800
79893
  snapshotLabel: "Consumables low now",
79801
79894
  snapshotSection: "consumables"
79802
79895
  },
79803
- {
79804
- id: "tanks",
79805
- family: "device-events",
79806
- label: "Tanks (low or full / back to normal)",
79807
- bad: ["device-tank-low", "device-tank-full"],
79808
- recovery: ["device-tank-normal"],
79809
- snapshotLabel: "Tanks low or full now",
79810
- snapshotSection: "tanks"
79811
- },
79812
79896
  {
79813
79897
  id: "motion-noise",
79814
79898
  family: "device-events",
@@ -80210,6 +80294,10 @@ TimelapseRuleInputSchema.extend({
80210
80294
  updatedAt: number()
80211
80295
  });
80212
80296
  MotionOnMotionChangedDataSchema.omit({ triggeredBy: true });
80297
+ Object.freeze({
80298
+ person: .8,
80299
+ vehicle: .8
80300
+ });
80213
80301
  object({
80214
80302
  /**
80215
80303
  * Fraction of the box's own size added on EACH side before cutting.
@@ -36,7 +36,7 @@ async function r() {
36
36
  }
37
37
  },
38
38
  "@camstack/types": {
39
- version: "1.2.404",
39
+ version: "1.2.406",
40
40
  scope: "default",
41
41
  shareConfig: {
42
42
  singleton: !0,
@@ -81,7 +81,7 @@ async function r() {
81
81
  }
82
82
  },
83
83
  "@camstack/ui-library": {
84
- version: "1.2.319",
84
+ version: "1.2.321",
85
85
  scope: "default",
86
86
  shareConfig: {
87
87
  singleton: !0,
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- require("./dist-BWgu_wcI.js");
2
+ require("./dist-CKiSDi2Y.js");
3
3
  const require_orchestrator_training_addon = require("./orchestrator/training.addon.js");
4
4
  const require_providers_modal_training_modal_addon = require("./providers/modal/training-modal.addon.js");
5
5
  //#region src/providers/fake/fake-provider.ts
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_dist = require("../dist-BWgu_wcI.js");
2
+ const require_dist = require("../dist-CKiSDi2Y.js");
3
3
  let node_path = require("node:path");
4
4
  node_path = require_dist.__toESM(node_path);
5
5
  let node_crypto = require("node:crypto");
@@ -1,4 +1,4 @@
1
- import { a as addonPagesSourceCapability, i as TrainingResultSchema, l as BaseAddon, m as defineRecordKinds, n as TrainingJobSchema, o as parseTrainingEventLine, r as TrainingJobSpecSchema, s as trainingCapability, t as TRAINING_JOB_SCHEMA, u as RECORD_MAX_DATA_BYTES } from "../dist-B_SLRS5u.mjs";
1
+ import { a as addonPagesSourceCapability, i as TrainingResultSchema, l as BaseAddon, m as defineRecordKinds, n as TrainingJobSchema, o as parseTrainingEventLine, r as TrainingJobSpecSchema, s as trainingCapability, t as TRAINING_JOB_SCHEMA, u as RECORD_MAX_DATA_BYTES } from "../dist-DeD2tKQ2.mjs";
2
2
  import path from "node:path";
3
3
  import { createHash } from "node:crypto";
4
4
  import { createReadStream } from "node:fs";
@@ -1,7 +1,7 @@
1
1
  import { d as e, u as t, w as n, y as r } from "./_virtual_mf___mfe_internal__addon_training_page__loadShare__react__loadShare__.js-CEvdvp1T.mjs";
2
2
  import { n as i, r as a, t as o } from "./_virtual_mf___mfe_internal__addon_training_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-DnrbBvrw.mjs";
3
3
  import { n as s, t as c } from "./chevron-right-cA8Hucbi.mjs";
4
- import { h as l } from "./responsive-rqNDO6E-.mjs";
4
+ import { h as l } from "./responsive-CBG3O0ME.mjs";
5
5
  //#region ../ui-library/src/composites/widget-panel.tsx
6
6
  n();
7
7
  function u({ title: e, icon: t, headerRight: n, collapsible: l = !1, defaultOpen: u = !0, open: d, onOpenChange: f, bodyClassName: p = "p-3", children: m }) {
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_dist = require("../../dist-BWgu_wcI.js");
2
+ const require_dist = require("../../dist-CKiSDi2Y.js");
3
3
  let node_path = require("node:path");
4
4
  node_path = require_dist.__toESM(node_path, 1);
5
5
  let node_crypto = require("node:crypto");
@@ -1,4 +1,4 @@
1
- import { C as record, S as object, _ as isSecretClear, b as boolean, c as trainingProviderCapability, d as SECRET_CLEAR, f as arrayItemFieldPath, g as globalSecretScope, h as entryBody, l as BaseAddon, p as defineEntryKind, v as isSecretMarker, w as string, x as number, y as toSecretFieldView } from "../../dist-B_SLRS5u.mjs";
1
+ import { C as record, S as object, _ as isSecretClear, b as boolean, c as trainingProviderCapability, d as SECRET_CLEAR, f as arrayItemFieldPath, g as globalSecretScope, h as entryBody, l as BaseAddon, p as defineEntryKind, v as isSecretMarker, w as string, x as number, y as toSecretFieldView } from "../../dist-DeD2tKQ2.mjs";
2
2
  import { createRequire } from "node:module";
3
3
  import path, { dirname, posix } from "node:path";
4
4
  import { createHash, createPrivateKey, createPublicKey, createSign, randomBytes, randomUUID } from "node:crypto";
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-B3b43ydO.mjs";
1
+ import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-X4iAyyQb.mjs";
2
2
  export { t as get, e as init };
@@ -1,6 +1,6 @@
1
1
  import { b as e, d as t, g as n, l as r, n as i, u as a, w as o, y as s } from "./_virtual_mf___mfe_internal__addon_training_page__loadShare__react__loadShare__.js-CEvdvp1T.mjs";
2
2
  import "./_virtual_mf___mfe_internal__addon_training_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-DnrbBvrw.mjs";
3
- import { S as c } from "./_virtual_mf___mfe_internal__addon_training_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DoK4LRXI.mjs";
3
+ import { C as c } from "./_virtual_mf___mfe_internal__addon_training_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DiRkx0UL.mjs";
4
4
  //#region ../ui-library/src/lib/shared-context.ts
5
5
  o();
6
6
  function l(e, t) {
@@ -2762,7 +2762,7 @@ async function or(e) {
2762
2762
  }
2763
2763
  }
2764
2764
  async function sr() {
2765
- return ir ||= or(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_training_page-CHXpYatD.mjs")).catch((e) => {
2765
+ return ir ||= or(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_training_page-BbQzUVOo.mjs")).catch((e) => {
2766
2766
  throw ir = void 0, e;
2767
2767
  }), ir;
2768
2768
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-training",
3
- "version": "0.1.76",
3
+ "version": "0.1.78",
4
4
  "description": "Cloud training for CamStack: fine-tune the root detector on your own frames, on your own GPU-cloud account",
5
5
  "keywords": [
6
6
  "camstack",