@camstack/addon-training 0.1.46 → 0.1.48

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 (40) hide show
  1. package/dist/{MaskShapeCanvas-Kfg9dl6B.mjs → MaskShapeCanvas-HNL0xNpy.mjs} +229 -228
  2. package/dist/MotionZonesSettings-B1g6IUfQ.mjs +291 -0
  3. package/dist/PrivacyMaskSettings-D4WRZZeD.mjs +339 -0
  4. package/dist/{ReactKonva-DGuYUN0L.mjs → ReactKonva-DzGysLZQ.mjs} +28 -28
  5. package/dist/SceneMonitorEditor-pYZfyXtn.mjs +825 -0
  6. package/dist/_stub.js +11524 -10177
  7. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_training_page-BaP91ViK.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_training_page-BclY1R96.mjs} +4 -4
  8. package/dist/_virtual_mf___mfe_internal__addon_training_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BVsoOuTM.mjs +26 -0
  9. package/dist/{_virtual_mf___mfe_internal__addon_training_page__loadShare__react__loadShare__.js-DeDbF7NI.mjs → _virtual_mf___mfe_internal__addon_training_page__loadShare__react__loadShare__.js-CEvdvp1T.mjs} +1 -1
  10. package/dist/addon-training.css +1 -1
  11. package/dist/{chevron-right-D3StkdcR.mjs → chevron-right-cA8Hucbi.mjs} +1 -1
  12. package/dist/{createLucideIcon-CPP1Jzoz.mjs → createLucideIcon-C0bBNRpC.mjs} +8 -8
  13. package/dist/{dist-BkEnS7-I.js → dist-DxTjO9kC.js} +198 -5
  14. package/dist/{dist-CcO4XtoH.mjs → dist-GI2KEl-e.mjs} +198 -5
  15. package/dist/{grid-2x2-Yngdckwo.mjs → grid-2x2-CHuMzRxF.mjs} +1 -1
  16. package/dist/{hostInit-wQjEMX_J.mjs → hostInit-BHX8oN7K.mjs} +3 -3
  17. package/dist/{icons-C4_Ji5S0.mjs → icons-BwkaMam3.mjs} +9 -9
  18. package/dist/index.js +1 -1
  19. package/dist/{mic-off-DPNSd6G7.mjs → mic-off-2uHAsVtR.mjs} +1 -1
  20. package/dist/orchestrator/training.addon.js +1 -1
  21. package/dist/orchestrator/training.addon.mjs +1 -1
  22. package/dist/{player-overlays-D14TtzYY.mjs → player-overlays-B4V_uIvb.mjs} +25 -25
  23. package/dist/providers/modal/training-modal.addon.js +1 -1
  24. package/dist/providers/modal/training-modal.addon.mjs +1 -1
  25. package/dist/remoteEntry.js +1 -1
  26. package/dist/{responsive-BLkfTned.mjs → responsive-1iwc-rj2.mjs} +26 -26
  27. package/dist/{rotate-ccw-Dak-lXgZ.mjs → rotate-ccw-Cu6tGrgG.mjs} +1 -1
  28. package/dist/scene-monitor-copy-Cqfs4Vng.mjs +176 -0
  29. package/dist/{settings-2-Cgiv3kQb.mjs → settings-2-xV0I5Y5U.mjs} +1 -1
  30. package/dist/{square-B_679zIX.mjs → square-ZPUterXM.mjs} +1 -1
  31. package/dist/{trash-2-DC8LDYlI.mjs → trash-2-BKfuhsgY.mjs} +1 -1
  32. package/dist/ui-text-CqJgUCKX.mjs +34 -0
  33. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-DNOZs2VX.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-D5OhZIRm.mjs} +1 -1
  34. package/dist/{zoom-out-BJoVDYa3.mjs → zoom-out-DDZCsqkQ.mjs} +1 -1
  35. package/package.json +1 -1
  36. package/dist/MotionZonesSettings-D6Lcv5P6.mjs +0 -292
  37. package/dist/PrivacyMaskSettings-BoMc1LXD.mjs +0 -348
  38. package/dist/SceneMonitorEditor-BiLUxNnT.mjs +0 -810
  39. package/dist/_virtual_mf___mfe_internal__addon_training_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CyW0FqIn.mjs +0 -26
  40. package/dist/scene-monitor-copy-DX2u-htD.mjs +0 -136
@@ -5387,7 +5387,7 @@ var ZodIssueCode = {
5387
5387
  var ZodFirstPartyTypeKind;
5388
5388
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5389
5389
  //#endregion
5390
- //#region ../types/dist/sleep-DAX0-2v9.mjs
5390
+ //#region ../types/dist/sleep-DRqxtc0C.mjs
5391
5391
  /**
5392
5392
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5393
5393
  * window to float samples (D455).
@@ -8155,8 +8155,12 @@ method(object({ deviceId: number() }), array(StreamSourceEntrySchema)), method(o
8155
8155
  kind: "mutation",
8156
8156
  auth: "admin"
8157
8157
  }), method(object({ deviceId: number() }), unknown().nullable()), method(object({ deviceId: number() }), RawStateResultSchema.nullable(), { auth: "protected" });
8158
+ object({
8159
+ code: string().regex(/^[a-z][a-z0-9-]*(\.[a-z0-9-]+)+$/),
8160
+ params: record(string(), union([string(), number()])).optional()
8161
+ });
8158
8162
  //#endregion
8159
- //#region ../types/dist/err-msg-DX6i_MY4.mjs
8163
+ //#region ../types/dist/err-msg-DLerKiVO.mjs
8160
8164
  var DeviceType = /* @__PURE__ */ function(DeviceType) {
8161
8165
  DeviceType["Camera"] = "camera";
8162
8166
  DeviceType["Hub"] = "hub";
@@ -8406,6 +8410,22 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
8406
8410
  DeviceRole["Nightvision"] = "nightvision";
8407
8411
  DeviceRole["PrivacyMask"] = "privacy-mask";
8408
8412
  DeviceRole["Doorbell"] = "doorbell";
8413
+ /** Interior blind / shade / roller blind. HA `device_class: blind|shade`. */
8414
+ DeviceRole["CoverBlind"] = "cover-blind";
8415
+ /** Exterior roller shutter. HA `device_class: shutter`; Homematic BROLL. */
8416
+ DeviceRole["CoverShutter"] = "cover-shutter";
8417
+ /** Exterior awning. HA `device_class: awning`. */
8418
+ DeviceRole["CoverAwning"] = "cover-awning";
8419
+ /** Curtain / drape. HA `device_class: curtain`. */
8420
+ DeviceRole["CoverCurtain"] = "cover-curtain";
8421
+ /** Garage door. HA `device_class: garage`. A security actuator: exports gate it. */
8422
+ DeviceRole["CoverGarage"] = "cover-garage";
8423
+ /** Gate. HA `device_class: gate`. A security actuator: exports gate it. */
8424
+ DeviceRole["CoverGate"] = "cover-gate";
8425
+ /** Door. HA `device_class: door`. A security actuator: exports gate it. */
8426
+ DeviceRole["CoverDoor"] = "cover-door";
8427
+ /** Window. HA `device_class: window`. */
8428
+ DeviceRole["CoverWindow"] = "cover-window";
8409
8429
  /** Virtual HA toggle (input_boolean.*) — distinguishable from a
8410
8430
  * real Switch device for UI rendering / export adapters. */
8411
8431
  DeviceRole["BinaryHelper"] = "binary-helper";
@@ -8476,7 +8496,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
8476
8496
  return DeviceRole;
8477
8497
  }({});
8478
8498
  //#endregion
8479
- //#region ../types/dist/composition-C-WpVYTX.mjs
8499
+ //#region ../types/dist/composition-EQ9Ok0Ee.mjs
8480
8500
  /**
8481
8501
  * The ffmpeg build every CamStack node downloads, per platform and arch.
8482
8502
  *
@@ -12171,6 +12191,8 @@ var ConvertResultSchema = object({
12171
12191
  })).readonly()
12172
12192
  });
12173
12193
  _enum(["new-session", "step-up"]);
12194
+ /** The languages the hub's app landing pages are written in (D858). */
12195
+ var AppPageLangSchema = _enum(["en", "it"]);
12174
12196
  /** How a native app starts one login method (D858), as `auth.listLoginMethods` reports it. */
12175
12197
  var AppLoginPathSchema = discriminatedUnion("kind", [object({ kind: literal("native") }), object({
12176
12198
  kind: literal("browser"),
@@ -12684,7 +12706,9 @@ var ConfigTabDeclarationSchema = object({
12684
12706
  var ConfigSectionWithValuesSchema = object({
12685
12707
  id: string(),
12686
12708
  title: string(),
12709
+ titleKey: string().optional(),
12687
12710
  description: string().optional(),
12711
+ descriptionKey: string().optional(),
12688
12712
  style: _enum(["card", "accordion"]).optional(),
12689
12713
  defaultCollapsed: boolean().optional(),
12690
12714
  columns: union([
@@ -15910,6 +15934,9 @@ method(object({
15910
15934
  }), method(object({ refs: RefListSchema }), KeychainResolveResultSchema, { auth: "admin" }), method(object({ refs: RefListSchema }), object({ deleted: number().int() }), {
15911
15935
  kind: "mutation",
15912
15936
  auth: "admin"
15937
+ }), method(object({ deviceId: number().int() }), object({ refs: array(string()).readonly() }), {
15938
+ kind: "mutation",
15939
+ auth: "admin"
15913
15940
  }), method(object({}), array(KeychainSecretMetaSchema).readonly(), { auth: "admin" }), method(object({}), KeychainStateSchema, { auth: "admin" });
15914
15941
  /**
15915
15942
  * device-history — the ONE mechanism for numeric history (D850).
@@ -37313,6 +37340,38 @@ var DeviceRegisterPayloadSchema = object({
37313
37340
  * omits it and the keyword backstop applies. */
37314
37341
  secretConfigPaths: array(string()).optional()
37315
37342
  });
37343
+ /** One deleted device, kept by device-manager so an addon that missed the
37344
+ * deletion can still learn of it (D865). Written by the delete path ONLY. */
37345
+ var DeviceTombstoneSchema = object({
37346
+ deviceId: number().int().positive(),
37347
+ /** Epoch ms the device was deleted. */
37348
+ deletedAt: number(),
37349
+ /** The addon that owned the device when it was deleted. */
37350
+ providerAddonId: string()
37351
+ });
37352
+ /** Data held for one device that device-manager no longer knows. */
37353
+ var OrphanDeviceDataSchema = object({
37354
+ deviceId: number().int().positive(),
37355
+ /** Rows/files per store (`<addonId>:<store>`). */
37356
+ stores: record(string(), number().int().nonnegative())
37357
+ });
37358
+ var CleanupDeletedDevicesResultSchema = object({
37359
+ /**
37360
+ * `skipped` — the absence check could not be trusted (a device-list read
37361
+ * failed or the two reads disagreed); nothing was listed or deleted.
37362
+ * `dry-run` — `devices` is what a confirmed run would delete.
37363
+ * `cleaned` — `devices` is what was deleted.
37364
+ */
37365
+ status: _enum([
37366
+ "skipped",
37367
+ "dry-run",
37368
+ "cleaned"
37369
+ ]),
37370
+ reason: string().nullable(),
37371
+ devices: array(OrphanDeviceDataSchema),
37372
+ /** Implementers that could not be asked (their stores are not in `devices`). */
37373
+ unreachable: array(string())
37374
+ });
37316
37375
  var DeviceRemovePayloadSchema = object({ deviceId: number() });
37317
37376
  var DevicePersistConfigPayloadSchema = object({
37318
37377
  deviceId: number(),
@@ -37551,6 +37610,9 @@ method(object({
37551
37610
  }), method(object({ deviceId: number() }), object({ success: literal(true) }), {
37552
37611
  kind: "mutation",
37553
37612
  auth: "admin"
37613
+ }), method(object({ sinceMs: number() }), array(DeviceTombstoneSchema).readonly(), { auth: "admin" }), method(object({ confirm: boolean() }), CleanupDeletedDevicesResultSchema, {
37614
+ kind: "mutation",
37615
+ auth: "admin"
37554
37616
  }), method(object({ integrationId: string() }), object({ removed: number() }), {
37555
37617
  kind: "mutation",
37556
37618
  auth: "admin"
@@ -38013,6 +38075,72 @@ method(object({
38013
38075
  auth: "admin"
38014
38076
  });
38015
38077
  /**
38078
+ * `device-removal-hook` — the reliable way an addon learns a device was DELETED,
38079
+ * so it can delete what it keeps for that device (D865).
38080
+ *
38081
+ * ## Why an event was not enough
38082
+ *
38083
+ * `DeviceUnregistered` is telemetry and may be dropped (D8, D11). An addon that
38084
+ * hung its per-device clean-up on it left durable garbage whenever the event was
38085
+ * lost, the addon was down, or it was restarting at that moment — footage,
38086
+ * analytics rows and settings of device 4483 outlived the device. Loss of this
38087
+ * signal corrupts durable state, so it travels by RPC with a recorded fact
38088
+ * behind it (D8: "if loss would corrupt durable state, use RPC plus a reconcile").
38089
+ *
38090
+ * ## The three pieces
38091
+ *
38092
+ * 1. device-manager records a TOMBSTONE per deleted device
38093
+ * (`deviceManager.listDeletedSince`). The tombstone is written by the delete
38094
+ * path only — a device that is unregistered, offline or whose provider is
38095
+ * restarting is NOT deleted and gets none.
38096
+ * 2. After a delete, device-manager calls `onDeviceRemoved` on EVERY provider of
38097
+ * this collection, one by one, with bounded retries, logged.
38098
+ * 3. An implementer that was down asks `deviceManager.listDeletedSince` at start
38099
+ * (and periodically) and runs its own `onDeviceRemoved` for each tombstone it
38100
+ * may have missed. Reconcile is driven by tombstones, never by "the device is
38101
+ * not in the current list": a failed or partial list read must not destroy data.
38102
+ *
38103
+ * ## Contract for an implementer
38104
+ *
38105
+ * - **Idempotent.** It is called again by a retry, by a reconcile and by the
38106
+ * admin cleanup of data that predates tombstones. A device with nothing left
38107
+ * answers zero counts.
38108
+ * - **One key per store** in `counts`, deleted rows/files per store, so the log
38109
+ * line and the admin dry run can say where the data was.
38110
+ * - **Training datasets are NOT device data** and are never deleted by a hook.
38111
+ * - **Per-device SETTINGS are not hooked.** Configuration lives in the standard
38112
+ * per-device store (`ctx.settings.*DeviceStore`), which device-manager clears
38113
+ * for every addon centrally at delete time. This hook is for device DATA
38114
+ * that is not settings: footage, event media, analytics rows, history.
38115
+ * - A provider that cannot tell is allowed to throw; the caller retries it.
38116
+ *
38117
+ * `listDeviceData` is the read side of the admin "Clean data of deleted devices"
38118
+ * action: which device ids this addon holds data for, and how much per store. It
38119
+ * never deletes. device-manager decides which of those ids are absent from the
38120
+ * fleet, from TWO consistent reads of the device list (D49).
38121
+ */
38122
+ /** What a hook is told about the deletion. */
38123
+ var DeviceRemovedInputSchema = object({
38124
+ deviceId: number().int().positive(),
38125
+ /** Epoch ms the device was deleted (the tombstone's `deletedAt`). */
38126
+ deletedAt: number(),
38127
+ /** The addon that owned the device, as device-manager last knew it. */
38128
+ providerAddonId: string()
38129
+ });
38130
+ /** Rows/files/refs deleted, per store this implementer owns. */
38131
+ var DeviceRemovedResultSchema = object({ counts: record(string(), number().int().nonnegative()) });
38132
+ /** One (store, device) pair an implementer holds data for. */
38133
+ var DeviceDataEntrySchema = object({
38134
+ store: string(),
38135
+ deviceId: number().int().positive(),
38136
+ /** Rows (or files) held for the device in the store. */
38137
+ count: number().int().nonnegative()
38138
+ });
38139
+ method(DeviceRemovedInputSchema, DeviceRemovedResultSchema, {
38140
+ kind: "mutation",
38141
+ auth: "admin"
38142
+ }), method(_void(), array(DeviceDataEntrySchema).readonly(), { auth: "admin" });
38143
+ /**
38016
38144
  * `failure-contribution` — the capability an addon reports its OWN losses
38017
38145
  * through, per camera, with the denominator attached. It stores nothing.
38018
38146
  *
@@ -49573,7 +49701,9 @@ var SsoBridgeClaimsSchema = object({
49573
49701
  codeChallenge: string(),
49574
49702
  state: string(),
49575
49703
  purpose: _enum(["new-session", "step-up"]),
49576
- redirect: string()
49704
+ redirect: string(),
49705
+ /** The page language the app asked for (D858); the confirm page speaks it. */
49706
+ lang: _enum(["en", "it"]).optional()
49577
49707
  }).optional()
49578
49708
  });
49579
49709
  method(object({
@@ -58937,6 +59067,21 @@ DeviceType.Switch, DeviceType.Siren, DeviceType.Light, method(object({
58937
59067
  on: boolean(),
58938
59068
  lastChangedAt: number()
58939
59069
  });
59070
+ /** C0 controls, DEL and the C1 range: none of them belongs in a name. */
59071
+ function hasControlCharacter(value) {
59072
+ for (const char of value) {
59073
+ const code = char.codePointAt(0) ?? 0;
59074
+ if (code <= 31 || code >= 127 && code <= 159) return true;
59075
+ }
59076
+ return false;
59077
+ }
59078
+ string().transform((value) => value.trim()).pipe(string().min(1, "The server name cannot be empty").max(48, `The server name is at most 48 characters`).refine((value) => !hasControlCharacter(value), { message: "The server name cannot contain control characters" }));
59079
+ /** What every reader gets: the name to show, and whether the hub chose it itself. */
59080
+ var ServerNameInfoSchema = object({
59081
+ name: string(),
59082
+ /** `true` when nobody named the hub: `name` is the machine hostname. */
59083
+ isDefault: boolean()
59084
+ });
58940
59085
  /**
58941
59086
  * system — system-scoped singleton capability exposing hub-level
58942
59087
  * health, feature flags, network interface enumeration, and the
@@ -58966,6 +59111,12 @@ var FeatureManifestSchema = object({
58966
59111
  backup: boolean(),
58967
59112
  repl: boolean()
58968
59113
  });
59114
+ /**
59115
+ * `system.info`: the feature flags plus the hub's human name (D861). The name is
59116
+ * `{ name, isDefault }` — `isDefault: true` means nobody named the hub and `name`
59117
+ * is the machine hostname.
59118
+ */
59119
+ var SystemInfoSchema = FeatureManifestSchema.extend({ serverName: ServerNameInfoSchema });
58969
59120
  var HealthStatusSchema = object({
58970
59121
  status: literal("ok"),
58971
59122
  uptime: number()
@@ -59438,7 +59589,7 @@ var LoggingSettingsStateSchema = object({
59438
59589
  opsLogRetentionDays: number().int().min(0),
59439
59590
  persisted: boolean()
59440
59591
  });
59441
- method(_void(), FeatureManifestSchema), method(_void(), HealthStatusSchema), method(_void(), FeatureManifestSchema), method(_void(), array(NetworkAddressSchema).readonly()), method(_void(), unknown().nullable(), { auth: "admin" }), method(record(string(), unknown()), _null(), {
59592
+ method(_void(), SystemInfoSchema), method(_void(), HealthStatusSchema), method(_void(), FeatureManifestSchema), method(_void(), array(NetworkAddressSchema).readonly()), method(_void(), unknown().nullable(), { auth: "admin" }), method(record(string(), unknown()), _null(), {
59442
59593
  kind: "mutation",
59443
59594
  auth: "admin"
59444
59595
  }), method(_void(), _void(), {
@@ -62589,6 +62740,12 @@ Object.freeze({
62589
62740
  addonId: null,
62590
62741
  access: "create"
62591
62742
  },
62743
+ "deviceManager.cleanupDeletedDevicesData": {
62744
+ capName: "device-manager",
62745
+ capScope: "system",
62746
+ addonId: null,
62747
+ access: "create"
62748
+ },
62592
62749
  "deviceManager.createDevice": {
62593
62750
  capName: "device-manager",
62594
62751
  capScope: "system",
@@ -62769,6 +62926,12 @@ Object.freeze({
62769
62926
  addonId: null,
62770
62927
  access: "view"
62771
62928
  },
62929
+ "deviceManager.listDeletedSince": {
62930
+ capName: "device-manager",
62931
+ capScope: "system",
62932
+ addonId: null,
62933
+ access: "view"
62934
+ },
62772
62935
  "deviceManager.listDeviceIdsByCaps": {
62773
62936
  capName: "device-manager",
62774
62937
  capScope: "system",
@@ -63177,6 +63340,18 @@ Object.freeze({
63177
63340
  addonId: null,
63178
63341
  access: "create"
63179
63342
  },
63343
+ "deviceRemovalHook.listDeviceData": {
63344
+ capName: "device-removal-hook",
63345
+ capScope: "system",
63346
+ addonId: null,
63347
+ access: "view"
63348
+ },
63349
+ "deviceRemovalHook.onDeviceRemoved": {
63350
+ capName: "device-removal-hook",
63351
+ capScope: "system",
63352
+ addonId: null,
63353
+ access: "create"
63354
+ },
63180
63355
  "deviceState.claimFields": {
63181
63356
  capName: "device-state",
63182
63357
  capScope: "system",
@@ -63609,6 +63784,12 @@ Object.freeze({
63609
63784
  addonId: null,
63610
63785
  access: "delete"
63611
63786
  },
63787
+ "keychain.deleteDeviceScope": {
63788
+ capName: "keychain",
63789
+ capScope: "system",
63790
+ addonId: null,
63791
+ access: "delete"
63792
+ },
63612
63793
  "keychain.getState": {
63613
63794
  capName: "keychain",
63614
63795
  capScope: "system",
@@ -69621,6 +69802,11 @@ Object.freeze({
69621
69802
  form: "single",
69622
69803
  optional: false
69623
69804
  }],
69805
+ "deviceRemovalHook.onDeviceRemoved": [{
69806
+ name: "deviceId",
69807
+ form: "single",
69808
+ optional: false
69809
+ }],
69624
69810
  "deviceState.claimFields": [{
69625
69811
  name: "deviceId",
69626
69812
  form: "single",
@@ -69810,6 +69996,11 @@ Object.freeze({
69810
69996
  form: "single",
69811
69997
  optional: false
69812
69998
  }],
69999
+ "keychain.deleteDeviceScope": [{
70000
+ name: "deviceId",
70001
+ form: "single",
70002
+ optional: false
70003
+ }],
69813
70004
  "lawnMowerControl.dock": [{
69814
70005
  name: "deviceId",
69815
70006
  form: "single",
@@ -72158,6 +72349,8 @@ new Set([
72158
72349
  "audio-tools",
72159
72350
  "audio-silence"
72160
72351
  ]);
72352
+ AppPageLangSchema.options;
72353
+ record(string().min(1), string());
72161
72354
  /**
72162
72355
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
72163
72356
  *
@@ -1,4 +1,4 @@
1
- import { t as e } from "./createLucideIcon-CPP1Jzoz.mjs";
1
+ import { t as e } from "./createLucideIcon-C0bBNRpC.mjs";
2
2
  var t = e("grid-2x2", [
3
3
  ["path", {
4
4
  d: "M12 3v18",
@@ -36,7 +36,7 @@ async function r() {
36
36
  }
37
37
  },
38
38
  "@camstack/types": {
39
- version: "1.2.372",
39
+ version: "1.2.374",
40
40
  scope: "default",
41
41
  shareConfig: {
42
42
  singleton: !0,
@@ -45,7 +45,7 @@ async function r() {
45
45
  }
46
46
  },
47
47
  "@camstack/sdk": {
48
- version: "1.2.131",
48
+ version: "1.2.132",
49
49
  scope: "default",
50
50
  shareConfig: {
51
51
  singleton: !0,
@@ -81,7 +81,7 @@ async function r() {
81
81
  }
82
82
  },
83
83
  "@camstack/ui-library": {
84
- version: "1.2.290",
84
+ version: "1.2.292",
85
85
  scope: "default",
86
86
  shareConfig: {
87
87
  singleton: !0,
@@ -1,12 +1,12 @@
1
- import { t as e } from "./createLucideIcon-CPP1Jzoz.mjs";
2
- import { $ as t, $n as n, $t as r, A as i, An as a, At as o, B as s, Bn as c, Bt as l, C as u, Cn as d, Ct as f, D as p, Dn as m, Dt as h, E as g, En as _, Et as v, F as y, Fn as b, Ft as x, G as S, Gn as C, Gt as w, H as T, Hn as E, Ht as D, I as O, In as k, It as A, J as j, Jn as M, Jt as N, K as P, Kn as F, Kt as I, L, Ln as R, Lt as z, M as B, Mn as V, Mt as H, N as U, Nn as W, Nt as G, O as K, On as q, Ot as J, P as Y, Pn as X, Pt as Z, Q, Qn as $, Qt as ee, R as te, Rn as ne, Rt as re, S as ie, Sn as ae, St as oe, T as se, Tn as ce, Tt as le, U as ue, Un as de, Ut as fe, V as pe, Vn as me, Vt as he, W as ge, Wn as _e, Wt as ve, X as ye, Xn as be, Xt as xe, Y as Se, Yn as Ce, Yt as we, Z as Te, Zn as Ee, Zt as De, _ as Oe, _n as ke, _t as Ae, a as je, an as Me, ar as Ne, at as Pe, b as Fe, bn as Ie, bt as Le, c as Re, cn as ze, cr as Be, ct as Ve, d as He, dn as Ue, dr as We, dt as Ge, en as Ke, er as qe, et as Je, f as Ye, fn as Xe, fr as Ze, ft as Qe, g as $e, gn as et, gt as tt, h as nt, hn as rt, ht as it, i as at, in as ot, ir as st, it as ct, j as lt, jn as ut, jt as dt, k as ft, kn as pt, kt as mt, l as ht, ln as gt, lr as _t, lt as vt, m as yt, mn as bt, mt as xt, n as St, nn as Ct, nr as wt, nt as Tt, o as Et, on as Dt, or as Ot, ot as kt, p as At, pn as jt, pt as Mt, q as Nt, qn as Pt, qt as Ft, r as It, rn as Lt, rr as Rt, rt as zt, s as Bt, sn as Vt, sr as Ht, st as Ut, t as Wt, tn as Gt, tr as Kt, tt as qt, u as Jt, un as Yt, ur as Xt, ut as Zt, v as Qt, vn as $t, vt as en, w as tn, wn as nn, wt as rn, x as an, xn as on, xt as sn, y as cn, yn as ln, yt as un, z as dn, zn as fn, zt as pn } from "./zoom-out-BJoVDYa3.mjs";
3
- import { n as mn, r as hn, t as gn } from "./rotate-ccw-Dak-lXgZ.mjs";
4
- import { n as _n, t as vn } from "./chevron-right-D3StkdcR.mjs";
5
- import { n as yn, r as bn, t as xn } from "./square-B_679zIX.mjs";
6
- import { t as Sn } from "./grid-2x2-Yngdckwo.mjs";
7
- import { n as Cn, t as wn } from "./mic-off-DPNSd6G7.mjs";
8
- import { t as Tn } from "./settings-2-Cgiv3kQb.mjs";
9
- import { t as En } from "./trash-2-DC8LDYlI.mjs";
1
+ import { t as e } from "./createLucideIcon-C0bBNRpC.mjs";
2
+ import { $ as t, $n as n, $t as r, A as i, An as a, At as o, B as s, Bn as c, Bt as l, C as u, Cn as d, Ct as f, D as p, Dn as m, Dt as h, E as g, En as _, Et as v, F as y, Fn as b, Ft as x, G as S, Gn as C, Gt as w, H as T, Hn as E, Ht as D, I as O, In as k, It as A, J as j, Jn as M, Jt as N, K as P, Kn as F, Kt as I, L, Ln as R, Lt as z, M as B, Mn as V, Mt as H, N as U, Nn as W, Nt as G, O as K, On as q, Ot as J, P as Y, Pn as X, Pt as Z, Q, Qn as $, Qt as ee, R as te, Rn as ne, Rt as re, S as ie, Sn as ae, St as oe, T as se, Tn as ce, Tt as le, U as ue, Un as de, Ut as fe, V as pe, Vn as me, Vt as he, W as ge, Wn as _e, Wt as ve, X as ye, Xn as be, Xt as xe, Y as Se, Yn as Ce, Yt as we, Z as Te, Zn as Ee, Zt as De, _ as Oe, _n as ke, _t as Ae, a as je, an as Me, ar as Ne, at as Pe, b as Fe, bn as Ie, bt as Le, c as Re, cn as ze, cr as Be, ct as Ve, d as He, dn as Ue, dr as We, dt as Ge, en as Ke, er as qe, et as Je, f as Ye, fn as Xe, fr as Ze, ft as Qe, g as $e, gn as et, gt as tt, h as nt, hn as rt, ht as it, i as at, in as ot, ir as st, it as ct, j as lt, jn as ut, jt as dt, k as ft, kn as pt, kt as mt, l as ht, ln as gt, lr as _t, lt as vt, m as yt, mn as bt, mt as xt, n as St, nn as Ct, nr as wt, nt as Tt, o as Et, on as Dt, or as Ot, ot as kt, p as At, pn as jt, pt as Mt, q as Nt, qn as Pt, qt as Ft, r as It, rn as Lt, rr as Rt, rt as zt, s as Bt, sn as Vt, sr as Ht, st as Ut, t as Wt, tn as Gt, tr as Kt, tt as qt, u as Jt, un as Yt, ur as Xt, ut as Zt, v as Qt, vn as $t, vt as en, w as tn, wn as nn, wt as rn, x as an, xn as on, xt as sn, y as cn, yn as ln, yt as un, z as dn, zn as fn, zt as pn } from "./zoom-out-DDZCsqkQ.mjs";
3
+ import { n as mn, r as hn, t as gn } from "./rotate-ccw-Cu6tGrgG.mjs";
4
+ import { n as _n, t as vn } from "./chevron-right-cA8Hucbi.mjs";
5
+ import { n as yn, r as bn, t as xn } from "./square-ZPUterXM.mjs";
6
+ import { t as Sn } from "./grid-2x2-CHuMzRxF.mjs";
7
+ import { n as Cn, t as wn } from "./mic-off-2uHAsVtR.mjs";
8
+ import { t as Tn } from "./settings-2-xV0I5Y5U.mjs";
9
+ import { t as En } from "./trash-2-BKfuhsgY.mjs";
10
10
  var Dn = e("a-arrow-down", [
11
11
  ["path", {
12
12
  d: "m14 12 4 4 4-4",
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- require("./dist-BkEnS7-I.js");
2
+ require("./dist-DxTjO9kC.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,4 +1,4 @@
1
- import { t as e } from "./createLucideIcon-CPP1Jzoz.mjs";
1
+ import { t as e } from "./createLucideIcon-C0bBNRpC.mjs";
2
2
  var t = e("hexagon", [["path", {
3
3
  d: "M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z",
4
4
  key: "yt0hxn"
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_dist = require("../dist-BkEnS7-I.js");
2
+ const require_dist = require("../dist-DxTjO9kC.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, n as TrainingJobSchema, o as parseTrainingEventLine, r as TrainingJobSpecSchema, s as trainingCapability, t as TRAINING_JOB_SCHEMA } from "../dist-CcO4XtoH.mjs";
1
+ import { a as addonPagesSourceCapability, i as TrainingResultSchema, l as BaseAddon, n as TrainingJobSchema, o as parseTrainingEventLine, r as TrainingJobSpecSchema, s as trainingCapability, t as TRAINING_JOB_SCHEMA } from "../dist-GI2KEl-e.mjs";
2
2
  import path from "node:path";
3
3
  import { createHash } from "node:crypto";
4
4
  import { createReadStream } from "node:fs";
@@ -1,59 +1,59 @@
1
- import { S as e, _ as t, l as n, u as r } from "./_virtual_mf___mfe_internal__addon_training_page__loadShare__react__loadShare__.js-DeDbF7NI.mjs";
2
- import { n as i, t as a } from "./chevron-right-D3StkdcR.mjs";
3
- import { y as o } from "./responsive-BLkfTned.mjs";
4
- import { n as s, r as c, t as l } from "./_virtual_mf___mfe_internal__addon_training_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-DnrbBvrw.mjs";
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
+ 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
+ import { n as s, t as c } from "./chevron-right-cA8Hucbi.mjs";
4
+ import { h as l } from "./responsive-1iwc-rj2.mjs";
5
5
  //#region ../ui-library/src/composites/widget-panel.tsx
6
- e();
7
- function u({ title: e, icon: n, headerRight: r, collapsible: o = !1, defaultOpen: u = !0, bodyClassName: d = "p-3", children: f }) {
8
- let [p, m] = t(u), h = !o || p, g = /* @__PURE__ */ c(l, { children: [/* @__PURE__ */ c("span", {
6
+ n();
7
+ function u({ title: e, icon: t, headerRight: n, collapsible: l = !1, defaultOpen: u = !0, bodyClassName: d = "p-3", children: f }) {
8
+ let [p, m] = r(u), h = !l || p, g = /* @__PURE__ */ a(o, { children: [/* @__PURE__ */ a("span", {
9
9
  className: "flex items-center gap-2 text-xs font-semibold uppercase tracking-wider text-foreground",
10
- children: [n, e]
11
- }), o ? s(p ? i : a, { className: "h-3.5 w-3.5 text-foreground-subtle" }) : r] }), _ = `px-4 py-2 flex items-center justify-between ${h ? "border-b border-border" : ""}`;
12
- return /* @__PURE__ */ c("div", {
10
+ children: [t, e]
11
+ }), l ? i(p ? s : c, { className: "h-3.5 w-3.5 text-foreground-subtle" }) : n] }), _ = `px-4 py-2 flex items-center justify-between ${h ? "border-b border-border" : ""}`;
12
+ return /* @__PURE__ */ a("div", {
13
13
  className: "rounded-lg border border-border bg-surface overflow-hidden",
14
- children: [o ? /* @__PURE__ */ s("button", {
14
+ children: [l ? /* @__PURE__ */ i("button", {
15
15
  type: "button",
16
16
  onClick: () => m((e) => !e),
17
17
  className: `w-full text-left ${_}`,
18
18
  children: g
19
- }) : /* @__PURE__ */ s("div", {
19
+ }) : /* @__PURE__ */ i("div", {
20
20
  className: _,
21
21
  children: g
22
- }), h ? /* @__PURE__ */ s("div", {
22
+ }), h ? /* @__PURE__ */ i("div", {
23
23
  className: d,
24
24
  children: f
25
25
  }) : null]
26
26
  });
27
27
  }
28
28
  function d({ label: e, icon: t, children: n, footer: r }) {
29
- return /* @__PURE__ */ c("div", {
29
+ return /* @__PURE__ */ a("div", {
30
30
  className: "min-w-0 rounded-lg border border-border bg-surface p-2 sm:p-2.5",
31
31
  children: [
32
- /* @__PURE__ */ c("div", {
32
+ /* @__PURE__ */ a("div", {
33
33
  className: "mb-0.5 flex min-w-0 items-center gap-1.5 text-[10px] uppercase tracking-wider text-foreground-subtle",
34
- children: [t, /* @__PURE__ */ s("span", {
34
+ children: [t, /* @__PURE__ */ i("span", {
35
35
  className: "min-w-0 truncate",
36
36
  children: e
37
37
  })]
38
38
  }),
39
- /* @__PURE__ */ s("div", {
39
+ /* @__PURE__ */ i("div", {
40
40
  className: "truncate text-lg font-semibold leading-tight text-foreground",
41
41
  children: n
42
42
  }),
43
- r == null ? null : /* @__PURE__ */ s("div", {
43
+ r == null ? null : /* @__PURE__ */ i("div", {
44
44
  className: "mt-0.5 truncate text-[10px] text-foreground-subtle",
45
45
  children: r
46
46
  })
47
47
  ]
48
48
  });
49
49
  }
50
- e(), o("camstack:player-overlays-state", null);
51
- var f = o("camstack:player-overlays-actions", null);
52
- function p(e) {
53
- let t = n(f);
54
- r(() => {
55
- if (!(!t || !e)) return t.setLayer(e), () => t.removeLayer(e.id);
56
- }, [t, e]);
50
+ n(), l("camstack:player-overlays-state", null);
51
+ var f = l("camstack:player-overlays-actions", null);
52
+ function p(n) {
53
+ let r = t(f);
54
+ e(() => {
55
+ if (!(!r || !n)) return r.setLayer(n), () => r.removeLayer(n.id);
56
+ }, [r, n]);
57
57
  }
58
58
  //#endregion
59
59
  export { d as n, u as r, p as t };
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_dist = require("../../dist-BkEnS7-I.js");
2
+ const require_dist = require("../../dist-DxTjO9kC.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 { _ as number, b as string, c as trainingProviderCapability, d as arrayItemFieldPath, f as globalSecretScope, g as boolean, h as toSecretFieldView, l as BaseAddon, m as isSecretMarker, p as isSecretClear, u as SECRET_CLEAR, v as object, y as record } from "../../dist-CcO4XtoH.mjs";
1
+ import { _ as number, b as string, c as trainingProviderCapability, d as arrayItemFieldPath, f as globalSecretScope, g as boolean, h as toSecretFieldView, l as BaseAddon, m as isSecretMarker, p as isSecretClear, u as SECRET_CLEAR, v as object, y as record } from "../../dist-GI2KEl-e.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-DNOZs2VX.mjs";
1
+ import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-D5OhZIRm.mjs";
2
2
  export { t as get, e as init };
@@ -1,62 +1,62 @@
1
- import { S as e, _ as t, c as n, l as r, m as i, t as a, u as o, v as s } from "./_virtual_mf___mfe_internal__addon_training_page__loadShare__react__loadShare__.js-DeDbF7NI.mjs";
2
- import { y as c } from "./_virtual_mf___mfe_internal__addon_training_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CyW0FqIn.mjs";
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";
3
2
  import "./_virtual_mf___mfe_internal__addon_training_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-DnrbBvrw.mjs";
3
+ import { y as c } from "./_virtual_mf___mfe_internal__addon_training_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BVsoOuTM.mjs";
4
4
  //#region ../ui-library/src/lib/shared-context.ts
5
- e();
5
+ o();
6
6
  function l(e, t) {
7
- if (typeof globalThis > "u") return a(t);
7
+ if (typeof globalThis > "u") return i(t);
8
8
  let n = globalThis.__camstackSharedContexts, r = n ?? /* @__PURE__ */ new Map();
9
9
  n || (globalThis.__camstackSharedContexts = r);
10
- let i = r.get(e);
11
- if (i) return i;
12
- let o = a(t);
10
+ let a = r.get(e);
11
+ if (a) return a;
12
+ let o = i(t);
13
13
  return r.set(e, o), o;
14
14
  }
15
15
  //#endregion
16
16
  //#region ../ui-library/src/contexts/system-context.tsx
17
- e();
17
+ o();
18
18
  var u = l("camstack:system", null);
19
19
  function d() {
20
- let e = r(u);
20
+ let e = a(u);
21
21
  if (!e) throw Error("useSystem(): no <SystemProvider> in tree");
22
22
  return e;
23
23
  }
24
24
  //#endregion
25
25
  //#region ../ui-library/src/hooks/use-device-proxy.ts
26
- e();
26
+ o();
27
27
  var f = "capability.binding-changed";
28
- function p(e, n) {
29
- let [r, a] = t(null);
30
- return o(() => {
31
- if (n === null) {
28
+ function p(e, r) {
29
+ let [i, a] = s(null);
30
+ return t(() => {
31
+ if (r === null) {
32
32
  a(null);
33
33
  return;
34
34
  }
35
- let t = !1, r = async () => {
35
+ let t = !1, n = async () => {
36
36
  try {
37
- let r = await e.deviceManager.getBindings.query({ deviceId: n });
38
- t || a(r);
37
+ let n = await e.deviceManager.getBindings.query({ deviceId: r });
38
+ t || a(n);
39
39
  } catch {
40
40
  t || a((e) => e);
41
41
  }
42
42
  };
43
- r();
43
+ n();
44
44
  let i = e.live?.onEvent.subscribe({ category: f }, { onData: (e) => {
45
45
  let t = e.data?.source;
46
46
  if (!t) {
47
- r();
47
+ n();
48
48
  return;
49
49
  }
50
- t.type === "device" && t.id === n && r();
50
+ t.type === "device" && t.id === r && n();
51
51
  } });
52
52
  return () => {
53
53
  t = !0, i?.unsubscribe();
54
54
  };
55
- }, [e, n]), i(() => r ? c(e, r) : null, [e, r]);
55
+ }, [e, r]), n(() => i ? c(e, i) : null, [e, i]);
56
56
  }
57
- function m(e) {
58
- let t = n((t) => e ? e.subscribe(() => t()) : () => void 0, [e]), r = n(() => e?.value, [e]);
59
- return s(t, r, r);
57
+ function m(t) {
58
+ let n = r((e) => t ? t.subscribe(() => e()) : () => void 0, [t]), i = r(() => t?.value, [t]);
59
+ return e(n, i, i);
60
60
  }
61
61
  function h(e, t, n) {
62
62
  let r = p(e, t);
@@ -79,6 +79,6 @@ function _(e) {
79
79
  }
80
80
  //#endregion
81
81
  //#region ../ui-library/src/lib/responsive.ts
82
- var v = "rounded-lg border border-border bg-surface overflow-hidden", y = "border-b border-border px-3 sm:px-4 py-1.5 sm:py-2", b = "p-2 sm:p-3 lg:p-4", x = "grid grid-cols-2 sm:grid-cols-2 lg:grid-cols-4", S = "flex min-w-0 flex-col gap-0.5 py-1.5 sm:flex-row sm:items-center", C = "min-w-0 text-[11px] leading-tight text-foreground-subtle sm:w-32 sm:shrink-0 sm:pr-2", w = "flex w-full min-w-0 items-center gap-1 sm:flex-1", T = "min-w-0 break-all text-xs text-foreground sm:truncate", E = "text-[10px] sm:text-[11px] font-semibold text-foreground uppercase tracking-wider", D = "text-[10px] text-foreground-subtle", O = "inline-flex items-center gap-1 rounded-full border px-1.5 py-0.5 text-[10px] font-medium transition-colors", k = "border-primary/50 bg-primary/15 text-primary", A = "border-border bg-surface text-foreground-subtle hover:bg-surface-hover";
82
+ var v = "rounded-lg border border-border bg-surface overflow-hidden", y = "border-b border-border px-3 sm:px-4 py-1.5 sm:py-2", b = "p-2 sm:p-3 lg:p-4", x = "grid grid-cols-2 sm:grid-cols-2 lg:grid-cols-4", S = "text-[10px] sm:text-[11px] font-semibold text-foreground uppercase tracking-wider", C = "text-[10px] text-foreground-subtle", w = "inline-flex items-center gap-1 rounded-full border px-1.5 py-0.5 text-[10px] font-medium transition-colors", T = "border-primary/50 bg-primary/15 text-primary", E = "border-border bg-surface text-foreground-subtle hover:bg-surface-hover";
83
83
  //#endregion
84
- export { m as _, b as a, S as c, T as d, D as f, h as g, p as h, x as i, C as l, _ as m, O as n, v as o, E as p, A as r, y as s, k as t, w as u, d as v, l as y };
84
+ export { b as a, C as c, p as d, h as f, l as h, x as i, S as l, d as m, w as n, v as o, m as p, E as r, y as s, T as t, _ as u };
@@ -1,4 +1,4 @@
1
- import { t as e } from "./createLucideIcon-CPP1Jzoz.mjs";
1
+ import { t as e } from "./createLucideIcon-C0bBNRpC.mjs";
2
2
  var t = e("camera", [["path", {
3
3
  d: "M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z",
4
4
  key: "18u6gg"