@camstack/addon-training 0.1.43 → 0.1.45

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-YpCetvNg.mjs → MotionZonesSettings-XzsKyqsB.mjs} +2 -2
  2. package/dist/{PrivacyMaskSettings-DJ34xZMc.mjs → PrivacyMaskSettings-BIVtbhpL.mjs} +2 -2
  3. package/dist/{SceneMonitorEditor-ChyCoZy6.mjs → SceneMonitorEditor-BdXyBsiC.mjs} +1 -1
  4. package/dist/_stub.js +3958 -3958
  5. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_training_page-B5F2D49H.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_training_page-C96pI_Rk.mjs} +3 -3
  6. package/dist/_virtual_mf___mfe_internal__addon_training_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-D6zlMXZo.mjs +26 -0
  7. package/dist/{dist-ZBXOtBdC.js → dist-BkEnS7-I.js} +363 -11
  8. package/dist/{dist-C7yODd9D.mjs → dist-CcO4XtoH.mjs} +363 -11
  9. package/dist/{hostInit-Ci39xaf6.mjs → hostInit-CbFhe3-_.mjs} +2 -2
  10. package/dist/index.js +1 -1
  11. package/dist/orchestrator/training.addon.js +1 -1
  12. package/dist/orchestrator/training.addon.mjs +1 -1
  13. package/dist/{player-overlays-CLkmW1-R.mjs → player-overlays-CbBz3FEH.mjs} +1 -1
  14. package/dist/providers/modal/training-modal.addon.js +1 -1
  15. package/dist/providers/modal/training-modal.addon.mjs +1 -1
  16. package/dist/remoteEntry.js +1 -1
  17. package/dist/{responsive-DaJFlnYN.mjs → responsive-5vpaGGPe.mjs} +1 -1
  18. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-Cp9TxI8g.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-CN6k5r8V.mjs} +1 -1
  19. package/package.json +1 -1
  20. package/dist/_virtual_mf___mfe_internal__addon_training_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BH6lTdjB.mjs +0 -26
@@ -5387,7 +5387,7 @@ var ZodIssueCode = {
5387
5387
  var ZodFirstPartyTypeKind;
5388
5388
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5389
5389
  //#endregion
5390
- //#region ../types/dist/sleep-BBF1iXUi.mjs
5390
+ //#region ../types/dist/sleep-DAX0-2v9.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).
@@ -12170,6 +12170,12 @@ var ConvertResultSchema = object({
12170
12170
  files: array(string()).readonly()
12171
12171
  })).readonly()
12172
12172
  });
12173
+ _enum(["new-session", "step-up"]);
12174
+ /** How a native app starts one login method (D858), as `auth.listLoginMethods` reports it. */
12175
+ var AppLoginPathSchema = discriminatedUnion("kind", [object({ kind: literal("native") }), object({
12176
+ kind: literal("browser"),
12177
+ startPath: string().startsWith("/")
12178
+ })]);
12173
12179
  /**
12174
12180
  * Device certificates (D855) — the wire contract shared by the hub, the admin
12175
12181
  * UI and the native viewer.
@@ -12329,7 +12335,9 @@ object({
12329
12335
  signature: literal(DEVICE_CERT_SIGNATURE),
12330
12336
  messageVersion: literal(DEVICE_SIGNATURE_MESSAGE_VERSION),
12331
12337
  /** Which clients can execute it: a native app silently, a browser with a non-extractable WebCrypto key. */
12332
- clients: array(_enum(["native", "web"]))
12338
+ clients: array(_enum(["native", "web"])),
12339
+ /** The app executes it itself, silently (D858). */
12340
+ app: AppLoginPathSchema.nullable()
12333
12341
  });
12334
12342
  var ExpressionBindingSourceSchema = union([
12335
12343
  object({
@@ -15903,6 +15911,208 @@ method(object({
15903
15911
  kind: "mutation",
15904
15912
  auth: "admin"
15905
15913
  }), method(object({}), array(KeychainSecretMetaSchema).readonly(), { auth: "admin" }), method(object({}), KeychainStateSchema, { auth: "admin" });
15914
+ /**
15915
+ * device-history — the ONE mechanism for numeric history (D850).
15916
+ *
15917
+ * A device value is recorded because its capability says so (the `history`
15918
+ * block of a `*.cap.ts`, captured hub-side from `DeviceStateChanged`); any
15919
+ * other series is DECLARED by the addon that produces it and fed with points
15920
+ * (`record`) or closed five-minute buckets (`recordBuckets`). Rollups 5m / 1h /
15921
+ * 1d are computed here and nowhere else. Storage is `history.db` (D851).
15922
+ *
15923
+ * Who the PRODUCER is: `declareSeries`, `record` and `recordBuckets` are owner
15924
+ * checked against the `callerAddonId` the transport stamps into a call that
15925
+ * crossed a process (never in an input schema, so a session cannot supply it).
15926
+ * A call with no stamp is refused `not-owner`. The methods are `admin` so a
15927
+ * non-admin session never reaches them; an addon's `ctx.api` call bypasses the
15928
+ * tier by design.
15929
+ */
15930
+ /** Whose history: a real device, or a cluster node (load, memory). */
15931
+ var DeviceHistorySubjectSchema = discriminatedUnion("kind", [object({
15932
+ kind: literal("device"),
15933
+ deviceId: number().int()
15934
+ }), object({
15935
+ kind: literal("node"),
15936
+ nodeId: string().min(1)
15937
+ })]);
15938
+ var DeviceHistoryKindSchema = _enum([
15939
+ "gauge",
15940
+ "counter",
15941
+ "boolean"
15942
+ ]);
15943
+ var DeviceHistoryResolutionSchema = _enum([
15944
+ "raw",
15945
+ "5m",
15946
+ "1h",
15947
+ "1d"
15948
+ ]);
15949
+ /** Why a producer's point or bucket was not stored. Counted, never silent (D391). */
15950
+ var DeviceHistoryRefusalReasonSchema = _enum([
15951
+ "undeclared",
15952
+ "not-owner",
15953
+ "opted-out",
15954
+ "not-a-real-device",
15955
+ "rate",
15956
+ "ingest-mismatch",
15957
+ "out-of-range"
15958
+ ]);
15959
+ var RefusalSchema = object({
15960
+ key: string(),
15961
+ reason: DeviceHistoryRefusalReasonSchema,
15962
+ count: number().int()
15963
+ });
15964
+ var IngestResultSchema = object({
15965
+ accepted: number().int(),
15966
+ refused: array(RefusalSchema).readonly()
15967
+ });
15968
+ var SeriesInfoSchema = object({
15969
+ key: string(),
15970
+ scope: string(),
15971
+ kind: DeviceHistoryKindSchema,
15972
+ /** `null` is unknown (a `unitFrom` series whose device does not state a unit right now), never a guess. */
15973
+ unit: string().nullable(),
15974
+ displayName: string(),
15975
+ source: _enum(["cap", "addon"]),
15976
+ firstTs: number(),
15977
+ lastTs: number()
15978
+ });
15979
+ var QueryPointSchema = object({
15980
+ /** Raw: the point's time. Rollup: the bucket start. */
15981
+ t: number(),
15982
+ samples: number().int(),
15983
+ /** `sum / samples`. */
15984
+ mean: number().nullable(),
15985
+ /** Time-weighted mean (`tw_sum / tw_ms`); `null` for bucket-ingested series. For a boolean: the fraction of time true. */
15986
+ twMean: number().nullable(),
15987
+ min: number(),
15988
+ max: number(),
15989
+ /** `null` is unknown, never zero (D393). */
15990
+ last: number().nullable()
15991
+ });
15992
+ var QuerySeriesSchema = object({
15993
+ scope: string(),
15994
+ /** The last point STRICTLY BEFORE `from` in the chosen tier, so a step chart can start at the held value. */
15995
+ before: object({
15996
+ t: number(),
15997
+ value: number().nullable()
15998
+ }).nullable(),
15999
+ points: array(QueryPointSchema).readonly()
16000
+ });
16001
+ /** The window part of a query, shared by the device and node forms. */
16002
+ var QueryWindowShape = {
16003
+ key: string(),
16004
+ scope: string().optional(),
16005
+ from: number(),
16006
+ to: number(),
16007
+ resolution: union([DeviceHistoryResolutionSchema, literal("auto")]).default("auto"),
16008
+ maxPoints: number().int().positive().max(5e3).default(1e3)
16009
+ };
16010
+ var QueryResultSchema = object({
16011
+ resolution: DeviceHistoryResolutionSchema,
16012
+ series: array(QuerySeriesSchema).readonly(),
16013
+ truncated: boolean()
16014
+ });
16015
+ var TierStatusSchema = object({
16016
+ tier: DeviceHistoryResolutionSchema,
16017
+ /** `null` until the first background count answered. */
16018
+ rows: number().int().nullable(),
16019
+ /** `rows` times a fixed per-row estimate — approximate, labelled so. */
16020
+ approxBytes: number().nullable(),
16021
+ countedAt: number().nullable()
16022
+ });
16023
+ /** Operator/diagnostic view: rows per tier, last runs, refusals and drops since boot. */
16024
+ var DeviceHistoryStatusSchema = object({
16025
+ startedAt: number(),
16026
+ /** The store is declared, series loaded and the first reconcile has answered. */
16027
+ ready: boolean(),
16028
+ series: number().int(),
16029
+ metrics: number().int(),
16030
+ optedOutDevices: number().int(),
16031
+ tiers: array(TierStatusSchema).readonly(),
16032
+ capture: object({
16033
+ eventsSeen: number().int(),
16034
+ pointsEmitted: number().int(),
16035
+ pointsWritten: number().int(),
16036
+ pointsDropped: number().int(),
16037
+ bufferDepth: number().int(),
16038
+ trailingEmitted: number().int(),
16039
+ reconciledPoints: number().int(),
16040
+ reconcileRuns: number().int(),
16041
+ reconcileFailures: number().int(),
16042
+ lastReconcileAt: number().nullable(),
16043
+ lastFlushAt: number().nullable(),
16044
+ flushFailures: number().int(),
16045
+ skipped: record(string(), number().int())
16046
+ }),
16047
+ ingest: object({
16048
+ accepted: number().int(),
16049
+ refused: record(string(), number().int())
16050
+ }),
16051
+ rollup: object({
16052
+ last5mAt: number().nullable(),
16053
+ last1hAt: number().nullable(),
16054
+ last1dAt: number().nullable(),
16055
+ errors: number().int(),
16056
+ dirty5m: number().int(),
16057
+ dirty1h: number().int(),
16058
+ dirty1d: number().int()
16059
+ }),
16060
+ retention: object({
16061
+ lastRunAt: number().nullable(),
16062
+ deleted: record(string(), number().int()),
16063
+ purgedSeries: number().int()
16064
+ }),
16065
+ directory: object({
16066
+ devices: number().int(),
16067
+ lastRefreshAt: number().nullable()
16068
+ })
16069
+ });
16070
+ method(object({ deviceId: number().int() }), array(SeriesInfoSchema).readonly()), method(object({ nodeId: string().min(1) }), array(SeriesInfoSchema).readonly(), { auth: "admin" }), method(object({
16071
+ deviceId: number().int(),
16072
+ ...QueryWindowShape
16073
+ }), QueryResultSchema), method(object({
16074
+ nodeId: string().min(1),
16075
+ ...QueryWindowShape
16076
+ }), QueryResultSchema, { auth: "admin" }), method(object({
16077
+ name: string().regex(/^[a-z0-9-]+$/),
16078
+ subjectKind: _enum(["device", "node"]),
16079
+ kind: DeviceHistoryKindSchema,
16080
+ unit: string().optional(),
16081
+ displayName: string().min(1),
16082
+ ingest: _enum(["points", "buckets"])
16083
+ }), object({ key: string() }), {
16084
+ kind: "mutation",
16085
+ auth: "admin"
16086
+ }), method(object({ points: array(object({
16087
+ key: string(),
16088
+ subject: DeviceHistorySubjectSchema,
16089
+ scope: string().default(""),
16090
+ ts: number(),
16091
+ value: number()
16092
+ })).max(5e3) }), IngestResultSchema, {
16093
+ kind: "mutation",
16094
+ auth: "admin"
16095
+ }), method(object({ buckets: array(object({
16096
+ key: string(),
16097
+ subject: DeviceHistorySubjectSchema,
16098
+ scope: string().default(""),
16099
+ bucketStart: number(),
16100
+ samples: number().int().positive(),
16101
+ sum: number(),
16102
+ min: number(),
16103
+ max: number(),
16104
+ last: number().nullable(),
16105
+ lastTs: number().nullable()
16106
+ })).max(5e3) }), IngestResultSchema, {
16107
+ kind: "mutation",
16108
+ auth: "admin"
16109
+ }), method(object({ deviceId: number().int() }), object({ enabled: boolean() })), method(object({
16110
+ deviceId: number().int(),
16111
+ enabled: boolean()
16112
+ }), object({ enabled: boolean() }), {
16113
+ kind: "mutation",
16114
+ auth: "admin"
16115
+ }), method(object({}), DeviceHistoryStatusSchema, { auth: "admin" });
15906
16116
  var DeviceCaStatusSchema = discriminatedUnion("state", [
15907
16117
  object({ state: literal("absent") }),
15908
16118
  object({
@@ -16020,6 +16230,9 @@ method(object({}), object({
16020
16230
  }), {
16021
16231
  kind: "mutation",
16022
16232
  auth: "admin"
16233
+ }), method(object({}), object({ ok: literal(true) }), {
16234
+ kind: "mutation",
16235
+ auth: "admin"
16023
16236
  }), method(object({
16024
16237
  certPem: string().min(1),
16025
16238
  caCertPem: string().min(1),
@@ -38767,7 +38980,13 @@ var LoginMethodContributionSchema = discriminatedUnion("kind", [
38767
38980
  * `beginExternalLink` offer exactly the redirect methods that set this,
38768
38981
  * whatever their id. Absent / false — a login button only.
38769
38982
  */
38770
- linkable: boolean().optional()
38983
+ linkable: boolean().optional(),
38984
+ /**
38985
+ * How a NATIVE app starts this method (D858): `{ kind: 'browser', startPath }`
38986
+ * when the route understands the app flow query (`app=1&code_challenge=…`),
38987
+ * `null`/absent when there is no app path - the app hides the method.
38988
+ */
38989
+ app: AppLoginPathSchema.nullable().optional()
38771
38990
  }),
38772
38991
  object({
38773
38992
  kind: literal("widget"),
@@ -38779,7 +38998,9 @@ var LoginMethodContributionSchema = discriminatedUnion("kind", [
38779
38998
  bundle: string(),
38780
38999
  /** MF remote descriptor — `{ remoteName, exposedModule, componentKey }`. */
38781
39000
  remote: WidgetRemoteSchema,
38782
- stage: LoginStageEnum
39001
+ stage: LoginStageEnum,
39002
+ /** Widgets are web ceremonies: no native app path (D858). Absent reads as `null`. */
39003
+ app: AppLoginPathSchema.nullable().optional()
38783
39004
  }),
38784
39005
  object({
38785
39006
  kind: literal("passkey"),
@@ -38791,7 +39012,9 @@ var LoginMethodContributionSchema = discriminatedUnion("kind", [
38791
39012
  /** Effective WebAuthn RP ID (`resolveRpID()`) — the shell gates visibility on it. */
38792
39013
  rpId: string(),
38793
39014
  /** Effective expected origin (`resolveOrigin()`), null when unconfigured. */
38794
- origin: string().nullable()
39015
+ origin: string().nullable(),
39016
+ /** Set by the hub for the primary arm; a second-factor passkey has no app path (D858). */
39017
+ app: AppLoginPathSchema.nullable().optional()
38795
39018
  })
38796
39019
  ]);
38797
39020
  method(_void(), array(LoginMethodContributionSchema).readonly());
@@ -39301,7 +39524,21 @@ var NetworkEndpointSchema = object({
39301
39524
  url: string(),
39302
39525
  hostname: string(),
39303
39526
  port: number(),
39304
- protocol: _enum(["http", "https"])
39527
+ protocol: _enum(["http", "https"]),
39528
+ /**
39529
+ * Whether this address survives a restart of its provider. `false` = it is
39530
+ * re-issued every time (a Quick tunnel's random `*.trycloudflare.com`); the
39531
+ * hub never selects such an address AUTOMATICALLY for a role (D860), though
39532
+ * it stays visible and an operator may still flag it. Absent = stable: every
39533
+ * provider except a Quick tunnel owns a name that does not change.
39534
+ */
39535
+ stable: boolean().optional()
39536
+ });
39537
+ object({
39538
+ url: string(),
39539
+ /** Mirrors {@link NetworkEndpointSchema} `stable`; absent = stable. */
39540
+ stable: boolean().optional(),
39541
+ updated: boolean().optional()
39305
39542
  });
39306
39543
  var NetworkAccessStatusSchema = object({
39307
39544
  connected: boolean(),
@@ -49324,7 +49561,20 @@ var SsoBridgeClaimsSchema = object({
49324
49561
  * request to present the matching cookie — a login bridge is useless in
49325
49562
  * any other browser.
49326
49563
  */
49327
- browserBinding: string().optional()
49564
+ browserBinding: string().optional(),
49565
+ /**
49566
+ * The native app that started this sign-in (D858): its PKCE challenge,
49567
+ * `state`, purpose and allow-listed return URL, copied from the server-side
49568
+ * pending OIDC state. A bridge carrying it is finished ONLY at
49569
+ * `/api/auth/sso/finish-app` (which mints a handoff code, never a web
49570
+ * session); `/api/auth/sso/finish` refuses it.
49571
+ */
49572
+ app: object({
49573
+ codeChallenge: string(),
49574
+ state: string(),
49575
+ purpose: _enum(["new-session", "step-up"]),
49576
+ redirect: string()
49577
+ }).optional()
49328
49578
  });
49329
49579
  method(object({
49330
49580
  claims: SsoBridgeClaimsSchema,
@@ -51530,7 +51780,12 @@ var SearchResultSchema = object({
51530
51780
  publishedAt: string(),
51531
51781
  author: string(),
51532
51782
  installed: boolean(),
51533
- installedVersion: string().optional()
51783
+ installedVersion: string().optional(),
51784
+ /**
51785
+ * Capability names the package's addons declare (from its published
51786
+ * manifest). `null` = the registry lookup failed — unknown, never `[]` (D393).
51787
+ */
51788
+ capabilities: array(string()).readonly().nullable()
51534
51789
  });
51535
51790
  var AutoUpdateSettingsSchema = object({
51536
51791
  channel: ChannelSchema,
@@ -51692,7 +51947,11 @@ method(object({ nodeId: string().optional() }).optional(), array(AddonListItemSc
51692
51947
  }), method(object({ packageName: string().optional() }), PackageInstallationsSchema, { auth: "admin" }), method(_void(), ReloadPackagesResultSchema, {
51693
51948
  kind: "mutation",
51694
51949
  auth: "admin"
51695
- }), method(object({ query: string().optional() }), array(SearchResultSchema)), method(object({ nodeId: string().optional() }), array(PackageUpdateSchema).readonly(), { auth: "admin" }), method(object({
51950
+ }), method(object({
51951
+ query: string().optional(),
51952
+ /** Only packages whose addons declare this capability (unknown ones excluded). */
51953
+ capability: string().optional()
51954
+ }), array(SearchResultSchema)), method(object({ nodeId: string().optional() }), array(PackageUpdateSchema).readonly(), { auth: "admin" }), method(object({
51696
51955
  name: string().min(1),
51697
51956
  version: string().optional(),
51698
51957
  nodeId: string().optional()
@@ -54100,7 +54359,13 @@ var ConnectionEndpointSchema = object({
54100
54359
  * calls so the client can sort even if the cap returns a new
54101
54360
  * ordering between polls.
54102
54361
  */
54103
- priority: number()
54362
+ priority: number(),
54363
+ /**
54364
+ * `false` = the address changes on its own (a Quick tunnel, re-issued on
54365
+ * every respawn). Automatic role resolution skips it (D860); an explicit
54366
+ * operator flag still honours it. Absent = stable.
54367
+ */
54368
+ stable: boolean().optional()
54104
54369
  });
54105
54370
  /**
54106
54371
  * Where the advertised local port came from. Ordered most → least
@@ -54729,7 +54994,7 @@ var MotionOnMotionChangedDataSchema = object({
54729
54994
  /** Who started it (D672). Absent = the camera itself. Only `onboard` carries `sensor`. */
54730
54995
  triggeredBy: MotionTriggeredBySchema.optional()
54731
54996
  });
54732
- DeviceType.Camera, DeviceType.Sensor, method(object({ deviceId: number() }), boolean());
54997
+ DeviceType.Camera, DeviceType.Sensor, method(object({ deviceId: number() }), boolean()), DeviceType.Camera;
54733
54998
  object({
54734
54999
  enabled: boolean(),
54735
55000
  /** Ms epoch of the last operator-driven change. */
@@ -62186,6 +62451,66 @@ Object.freeze({
62186
62451
  addonId: null,
62187
62452
  access: "create"
62188
62453
  },
62454
+ "deviceHistory.declareSeries": {
62455
+ capName: "device-history",
62456
+ capScope: "system",
62457
+ addonId: null,
62458
+ access: "create"
62459
+ },
62460
+ "deviceHistory.getDeviceEnabled": {
62461
+ capName: "device-history",
62462
+ capScope: "system",
62463
+ addonId: null,
62464
+ access: "view"
62465
+ },
62466
+ "deviceHistory.getStatus": {
62467
+ capName: "device-history",
62468
+ capScope: "system",
62469
+ addonId: null,
62470
+ access: "view"
62471
+ },
62472
+ "deviceHistory.listNodeSeries": {
62473
+ capName: "device-history",
62474
+ capScope: "system",
62475
+ addonId: null,
62476
+ access: "view"
62477
+ },
62478
+ "deviceHistory.listSeries": {
62479
+ capName: "device-history",
62480
+ capScope: "system",
62481
+ addonId: null,
62482
+ access: "view"
62483
+ },
62484
+ "deviceHistory.query": {
62485
+ capName: "device-history",
62486
+ capScope: "system",
62487
+ addonId: null,
62488
+ access: "view"
62489
+ },
62490
+ "deviceHistory.queryNode": {
62491
+ capName: "device-history",
62492
+ capScope: "system",
62493
+ addonId: null,
62494
+ access: "view"
62495
+ },
62496
+ "deviceHistory.record": {
62497
+ capName: "device-history",
62498
+ capScope: "system",
62499
+ addonId: null,
62500
+ access: "create"
62501
+ },
62502
+ "deviceHistory.recordBuckets": {
62503
+ capName: "device-history",
62504
+ capScope: "system",
62505
+ addonId: null,
62506
+ access: "create"
62507
+ },
62508
+ "deviceHistory.setDeviceEnabled": {
62509
+ capName: "device-history",
62510
+ capScope: "system",
62511
+ addonId: null,
62512
+ access: "create"
62513
+ },
62189
62514
  "deviceManager.addLocation": {
62190
62515
  capName: "device-manager",
62191
62516
  capScope: "system",
@@ -64250,6 +64575,12 @@ Object.freeze({
64250
64575
  addonId: null,
64251
64576
  access: "create"
64252
64577
  },
64578
+ "nodeCertificates.forgetHub": {
64579
+ capName: "node-certificates",
64580
+ capScope: "system",
64581
+ addonId: null,
64582
+ access: "delete"
64583
+ },
64253
64584
  "nodeCertificates.getCertificates": {
64254
64585
  capName: "node-certificates",
64255
64586
  capScope: "system",
@@ -68977,6 +69308,26 @@ Object.freeze({
68977
69308
  form: "single",
68978
69309
  optional: false
68979
69310
  }],
69311
+ "deviceHistory.getDeviceEnabled": [{
69312
+ name: "deviceId",
69313
+ form: "single",
69314
+ optional: false
69315
+ }],
69316
+ "deviceHistory.listSeries": [{
69317
+ name: "deviceId",
69318
+ form: "single",
69319
+ optional: false
69320
+ }],
69321
+ "deviceHistory.query": [{
69322
+ name: "deviceId",
69323
+ form: "single",
69324
+ optional: false
69325
+ }],
69326
+ "deviceHistory.setDeviceEnabled": [{
69327
+ name: "deviceId",
69328
+ form: "single",
69329
+ optional: false
69330
+ }],
68980
69331
  "deviceManager.adoptionRelease": [{
68981
69332
  name: "camDeviceId",
68982
69333
  form: "single",
@@ -71155,6 +71506,7 @@ Object.freeze({
71155
71506
  "network-access": "ingress",
71156
71507
  "smtp-provider": "email"
71157
71508
  });
71509
+ DeviceType.Camera;
71158
71510
  var G711_SCALE_CORRECTION_DB = {
71159
71511
  PCMU: 20 * Math.log10(4),
71160
71512
  PCMA: 20 * Math.log10(8)
@@ -36,7 +36,7 @@ async function r() {
36
36
  }
37
37
  },
38
38
  "@camstack/types": {
39
- version: "1.2.365",
39
+ version: "1.2.371",
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.288",
84
+ version: "1.2.289",
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-ZBXOtBdC.js");
2
+ require("./dist-BkEnS7-I.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-ZBXOtBdC.js");
2
+ const require_dist = require("../dist-BkEnS7-I.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-C7yODd9D.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-CcO4XtoH.mjs";
2
2
  import path from "node:path";
3
3
  import { createHash } from "node:crypto";
4
4
  import { createReadStream } from "node:fs";
@@ -1,6 +1,6 @@
1
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
2
  import { n as i, t as a } from "./chevron-right-D3StkdcR.mjs";
3
- import { y as o } from "./responsive-DaJFlnYN.mjs";
3
+ import { y as o } from "./responsive-5vpaGGPe.mjs";
4
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";
5
5
  //#region ../ui-library/src/composites/widget-panel.tsx
6
6
  e();
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_dist = require("../../dist-ZBXOtBdC.js");
2
+ const require_dist = require("../../dist-BkEnS7-I.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-C7yODd9D.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-CcO4XtoH.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-Cp9TxI8g.mjs";
1
+ import { n as e, t } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-CN6k5r8V.mjs";
2
2
  export { t as get, e as init };
@@ -1,5 +1,5 @@
1
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 { v as c } from "./_virtual_mf___mfe_internal__addon_training_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BH6lTdjB.mjs";
2
+ import { y as c } from "./_virtual_mf___mfe_internal__addon_training_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-D6zlMXZo.mjs";
3
3
  import "./_virtual_mf___mfe_internal__addon_training_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-DnrbBvrw.mjs";
4
4
  //#region ../ui-library/src/lib/shared-context.ts
5
5
  e();
@@ -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-B5F2D49H.mjs")).catch((e) => {
2765
+ return ir ||= or(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_training_page-C96pI_Rk.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.43",
3
+ "version": "0.1.45",
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",