@northern.tech/store 0.5.2 → 0.6.0

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 (261) hide show
  1. package/dist/actions.cjs +47 -0
  2. package/dist/actions.cjs.map +1 -1
  3. package/dist/actions.d.cts +14 -15
  4. package/dist/actions.d.ts +14 -15
  5. package/dist/actions.js +10 -10
  6. package/dist/api/general-api.cjs +5 -6
  7. package/dist/api/general-api.cjs.map +1 -1
  8. package/dist/api/general-api.d.cts +8 -8
  9. package/dist/api/general-api.d.ts +8 -8
  10. package/dist/api/general-api.js +4 -4
  11. package/dist/api/users-api.cjs +5 -6
  12. package/dist/api/users-api.cjs.map +1 -1
  13. package/dist/api/users-api.d.cts +1 -1
  14. package/dist/api/users-api.d.ts +1 -1
  15. package/dist/api/users-api.js +5 -5
  16. package/dist/appSlice/constants.cjs +1 -0
  17. package/dist/appSlice/constants.cjs.map +1 -1
  18. package/dist/appSlice/constants.d.cts +5 -0
  19. package/dist/appSlice/constants.d.ts +5 -0
  20. package/dist/appSlice/constants.js +1 -1
  21. package/dist/appSlice/index.cjs +1 -0
  22. package/dist/appSlice/index.cjs.map +1 -1
  23. package/dist/appSlice/index.js +3 -3
  24. package/dist/appSlice/mocks.cjs +1 -0
  25. package/dist/appSlice/mocks.cjs.map +1 -1
  26. package/dist/appSlice/mocks.js +3 -3
  27. package/dist/appSlice/selectors.d.cts +9 -9
  28. package/dist/appSlice/selectors.d.ts +9 -9
  29. package/dist/appSlice/thunks.cjs +84 -27
  30. package/dist/appSlice/thunks.cjs.map +1 -1
  31. package/dist/appSlice/thunks.d.cts +1 -1
  32. package/dist/appSlice/thunks.d.ts +1 -1
  33. package/dist/appSlice/thunks.js +26 -26
  34. package/dist/auth.cjs +4 -5
  35. package/dist/auth.cjs.map +1 -1
  36. package/dist/auth.js +3 -3
  37. package/dist/{chunk-H5FAPMJJ.js → chunk-2ASLHSBV.js} +9 -9
  38. package/dist/{chunk-KC7SKI3U.js → chunk-2M5W3IDP.js} +8 -5
  39. package/dist/{chunk-KC7SKI3U.js.map → chunk-2M5W3IDP.js.map} +1 -1
  40. package/dist/{chunk-V3QEONX7.js → chunk-3ECSADAW.js} +13 -13
  41. package/dist/{chunk-YY6SKZDF.js → chunk-67GS7ERY.js} +3 -12
  42. package/dist/chunk-67GS7ERY.js.map +1 -0
  43. package/dist/{chunk-UGSLGUS6.js → chunk-7BKDELUQ.js} +2 -2
  44. package/dist/{chunk-QHK7GGV4.js → chunk-B7GXA42G.js} +3 -3
  45. package/dist/{chunk-PGFVHKP5.js → chunk-CEH2D355.js} +2 -2
  46. package/dist/{chunk-VUFRP6P3.js → chunk-EIIFEV62.js} +2 -2
  47. package/dist/chunk-EIIFEV62.js.map +1 -0
  48. package/dist/{chunk-3P3IE42O.js → chunk-GN2HC6HW.js} +70 -61
  49. package/dist/chunk-GN2HC6HW.js.map +1 -0
  50. package/dist/{chunk-ABJLRDCO.js → chunk-MVK6W7ZH.js} +2 -2
  51. package/dist/chunk-MVK6W7ZH.js.map +1 -0
  52. package/dist/{chunk-HFOTAPIJ.js → chunk-N3XU7WJM.js} +2 -1
  53. package/dist/chunk-N3XU7WJM.js.map +1 -0
  54. package/dist/{chunk-QYLGIR4W.js → chunk-PB36MEEN.js} +3 -2
  55. package/dist/chunk-PB36MEEN.js.map +1 -0
  56. package/dist/{chunk-F26IKSML.js → chunk-PTQS3JDZ.js} +10 -10
  57. package/dist/{chunk-QKPV5RRN.js → chunk-QPHDDTQC.js} +55 -21
  58. package/dist/chunk-QPHDDTQC.js.map +1 -0
  59. package/dist/{chunk-MZNANSS2.js → chunk-RRL7OZHU.js} +2 -2
  60. package/dist/{chunk-MSOXMRF7.js → chunk-RWGVRDFG.js} +12 -3
  61. package/dist/chunk-RWGVRDFG.js.map +1 -0
  62. package/dist/{chunk-RS37Y2PQ.js → chunk-TL6KSTZZ.js} +4 -4
  63. package/dist/chunk-TL6KSTZZ.js.map +1 -0
  64. package/dist/{chunk-SCZLNFB5.js → chunk-TU4IVT3M.js} +14 -14
  65. package/dist/{chunk-R6KRH2IY.js → chunk-VIV6U46F.js} +6 -4
  66. package/dist/chunk-VIV6U46F.js.map +1 -0
  67. package/dist/{chunk-ZJW3QIPM.js → chunk-W2RDUU5Q.js} +2 -2
  68. package/dist/{chunk-OOICURFL.js → chunk-WD7MIPCO.js} +48 -2
  69. package/dist/chunk-WD7MIPCO.js.map +1 -0
  70. package/dist/{chunk-KJNNEDRV.js → chunk-XLXLFSZA.js} +2 -2
  71. package/dist/{chunk-UE5N5VO3.js → chunk-XZDCXV4H.js} +3 -3
  72. package/dist/chunk-XZDCXV4H.js.map +1 -0
  73. package/dist/{chunk-7C4SQBEE.js → chunk-YEQ7D6AW.js} +5 -6
  74. package/dist/chunk-YEQ7D6AW.js.map +1 -0
  75. package/dist/{chunk-JXQUFKID.js → chunk-ZABYTBKG.js} +7 -2
  76. package/dist/chunk-ZABYTBKG.js.map +1 -0
  77. package/dist/commonConstants.cjs +4 -5
  78. package/dist/commonConstants.cjs.map +1 -1
  79. package/dist/commonConstants.d.cts +14 -13
  80. package/dist/commonConstants.d.ts +14 -13
  81. package/dist/commonConstants.js +2 -2
  82. package/dist/commonSelectors.cjs +14 -25
  83. package/dist/commonSelectors.cjs.map +1 -1
  84. package/dist/commonSelectors.d.cts +127 -138
  85. package/dist/commonSelectors.d.ts +127 -138
  86. package/dist/commonSelectors.js +10 -10
  87. package/dist/constants.cjs +5 -5
  88. package/dist/constants.cjs.map +1 -1
  89. package/dist/constants.d.cts +1 -1
  90. package/dist/constants.d.ts +1 -1
  91. package/dist/constants.js +2 -2
  92. package/dist/deploymentsSlice/constants.cjs.map +1 -1
  93. package/dist/deploymentsSlice/constants.d.cts +2 -2
  94. package/dist/deploymentsSlice/constants.d.ts +2 -2
  95. package/dist/deploymentsSlice/constants.js +2 -2
  96. package/dist/deploymentsSlice/index.cjs.map +1 -1
  97. package/dist/deploymentsSlice/index.d.cts +5 -4
  98. package/dist/deploymentsSlice/index.d.ts +5 -4
  99. package/dist/deploymentsSlice/index.js +3 -3
  100. package/dist/deploymentsSlice/mocks.cjs.map +1 -1
  101. package/dist/deploymentsSlice/mocks.js +3 -3
  102. package/dist/deploymentsSlice/selectors.cjs +6 -0
  103. package/dist/deploymentsSlice/selectors.cjs.map +1 -1
  104. package/dist/deploymentsSlice/selectors.d.cts +25 -4
  105. package/dist/deploymentsSlice/selectors.d.ts +25 -4
  106. package/dist/deploymentsSlice/selectors.js +5 -3
  107. package/dist/deploymentsSlice/thunks.cjs +86 -27
  108. package/dist/deploymentsSlice/thunks.cjs.map +1 -1
  109. package/dist/deploymentsSlice/thunks.d.cts +17 -4
  110. package/dist/deploymentsSlice/thunks.d.ts +17 -4
  111. package/dist/deploymentsSlice/thunks.js +28 -26
  112. package/dist/devicesSlice/constants.js +2 -2
  113. package/dist/devicesSlice/index.cjs.map +1 -1
  114. package/dist/devicesSlice/index.d.cts +4 -4
  115. package/dist/devicesSlice/index.d.ts +4 -4
  116. package/dist/devicesSlice/index.js +3 -3
  117. package/dist/devicesSlice/mocks.cjs +4 -4
  118. package/dist/devicesSlice/mocks.cjs.map +1 -1
  119. package/dist/devicesSlice/mocks.js +7 -7
  120. package/dist/devicesSlice/mocks.js.map +1 -1
  121. package/dist/devicesSlice/selectors.cjs +4 -5
  122. package/dist/devicesSlice/selectors.cjs.map +1 -1
  123. package/dist/devicesSlice/selectors.d.cts +23 -23
  124. package/dist/devicesSlice/selectors.d.ts +23 -23
  125. package/dist/devicesSlice/selectors.js +3 -3
  126. package/dist/devicesSlice/thunks.cjs +84 -27
  127. package/dist/devicesSlice/thunks.cjs.map +1 -1
  128. package/dist/devicesSlice/thunks.d.cts +5 -5
  129. package/dist/devicesSlice/thunks.d.ts +5 -5
  130. package/dist/devicesSlice/thunks.js +26 -26
  131. package/dist/liststatehook.cjs +10 -8
  132. package/dist/liststatehook.cjs.map +1 -1
  133. package/dist/liststatehook.d.cts +4 -2
  134. package/dist/liststatehook.d.ts +4 -2
  135. package/dist/liststatehook.js +3 -3
  136. package/dist/locationutils.cjs +10 -8
  137. package/dist/locationutils.cjs.map +1 -1
  138. package/dist/locationutils.d.cts +3 -1
  139. package/dist/locationutils.d.ts +3 -1
  140. package/dist/locationutils.js +3 -3
  141. package/dist/monitorSlice/index.js +3 -3
  142. package/dist/monitorSlice/mocks.js +3 -3
  143. package/dist/monitorSlice/thunks.cjs +62 -16
  144. package/dist/monitorSlice/thunks.cjs.map +1 -1
  145. package/dist/monitorSlice/thunks.d.cts +1 -1
  146. package/dist/monitorSlice/thunks.d.ts +1 -1
  147. package/dist/monitorSlice/thunks.js +22 -22
  148. package/dist/onboardingSlice/thunks.cjs +84 -27
  149. package/dist/onboardingSlice/thunks.cjs.map +1 -1
  150. package/dist/onboardingSlice/thunks.d.cts +1 -1
  151. package/dist/onboardingSlice/thunks.d.ts +1 -1
  152. package/dist/onboardingSlice/thunks.js +26 -26
  153. package/dist/organizationSlice/constants.js +2 -2
  154. package/dist/organizationSlice/index.js +3 -3
  155. package/dist/organizationSlice/mocks.d.cts +2 -2
  156. package/dist/organizationSlice/mocks.d.ts +2 -2
  157. package/dist/organizationSlice/mocks.js +3 -3
  158. package/dist/organizationSlice/selectors.cjs +4 -25
  159. package/dist/organizationSlice/selectors.cjs.map +1 -1
  160. package/dist/organizationSlice/selectors.d.cts +45 -203
  161. package/dist/organizationSlice/selectors.d.ts +45 -203
  162. package/dist/organizationSlice/selectors.js +3 -5
  163. package/dist/organizationSlice/thunks.cjs +107 -51
  164. package/dist/organizationSlice/thunks.cjs.map +1 -1
  165. package/dist/organizationSlice/thunks.d.cts +6 -6
  166. package/dist/organizationSlice/thunks.d.ts +6 -6
  167. package/dist/organizationSlice/thunks.js +26 -26
  168. package/dist/organizationSlice/types.cjs.map +1 -1
  169. package/dist/organizationSlice/types.d.cts +8 -30
  170. package/dist/organizationSlice/types.d.ts +8 -30
  171. package/dist/releasesSlice/index.cjs +46 -0
  172. package/dist/releasesSlice/index.cjs.map +1 -1
  173. package/dist/releasesSlice/index.d.cts +55 -5
  174. package/dist/releasesSlice/index.d.ts +55 -5
  175. package/dist/releasesSlice/index.js +3 -3
  176. package/dist/releasesSlice/mocks.cjs +46 -0
  177. package/dist/releasesSlice/mocks.cjs.map +1 -1
  178. package/dist/releasesSlice/mocks.d.cts +11 -0
  179. package/dist/releasesSlice/mocks.d.ts +11 -0
  180. package/dist/releasesSlice/mocks.js +3 -3
  181. package/dist/releasesSlice/selectors.cjs +17 -5
  182. package/dist/releasesSlice/selectors.cjs.map +1 -1
  183. package/dist/releasesSlice/selectors.d.cts +210 -27
  184. package/dist/releasesSlice/selectors.d.ts +210 -27
  185. package/dist/releasesSlice/selectors.js +12 -4
  186. package/dist/releasesSlice/thunks.cjs +109 -27
  187. package/dist/releasesSlice/thunks.cjs.map +1 -1
  188. package/dist/releasesSlice/thunks.d.cts +71 -6
  189. package/dist/releasesSlice/thunks.d.ts +71 -6
  190. package/dist/releasesSlice/thunks.js +27 -23
  191. package/dist/selectors.cjs +29 -28
  192. package/dist/selectors.cjs.map +1 -1
  193. package/dist/selectors.d.cts +5 -19
  194. package/dist/selectors.d.ts +5 -19
  195. package/dist/selectors.js +30 -20
  196. package/dist/sockethook.cjs +4 -5
  197. package/dist/sockethook.cjs.map +1 -1
  198. package/dist/sockethook.js +2 -2
  199. package/dist/store.cjs +47 -0
  200. package/dist/store.cjs.map +1 -1
  201. package/dist/store.d.cts +22 -121
  202. package/dist/store.d.ts +22 -121
  203. package/dist/store.js +12 -12
  204. package/dist/storehooks.cjs +154 -65
  205. package/dist/storehooks.cjs.map +1 -1
  206. package/dist/storehooks.js +27 -26
  207. package/dist/storehooks.js.map +1 -1
  208. package/dist/thunks.cjs +158 -64
  209. package/dist/thunks.cjs.map +1 -1
  210. package/dist/thunks.d.cts +4 -4
  211. package/dist/thunks.d.ts +4 -4
  212. package/dist/thunks.js +34 -28
  213. package/dist/useDeploymentDevice.cjs +84 -27
  214. package/dist/useDeploymentDevice.cjs.map +1 -1
  215. package/dist/useDeploymentDevice.js +26 -26
  216. package/dist/usersSlice/constants.js +2 -2
  217. package/dist/usersSlice/index.js +3 -3
  218. package/dist/usersSlice/mocks.cjs +1 -0
  219. package/dist/usersSlice/mocks.cjs.map +1 -1
  220. package/dist/usersSlice/mocks.d.cts +3 -3
  221. package/dist/usersSlice/mocks.d.ts +3 -3
  222. package/dist/usersSlice/mocks.js +4 -3
  223. package/dist/usersSlice/mocks.js.map +1 -1
  224. package/dist/usersSlice/selectors.cjs +8 -6
  225. package/dist/usersSlice/selectors.cjs.map +1 -1
  226. package/dist/usersSlice/selectors.d.cts +33 -34
  227. package/dist/usersSlice/selectors.d.ts +33 -34
  228. package/dist/usersSlice/selectors.js +6 -4
  229. package/dist/usersSlice/thunks.cjs +86 -29
  230. package/dist/usersSlice/thunks.cjs.map +1 -1
  231. package/dist/usersSlice/thunks.d.cts +19 -11
  232. package/dist/usersSlice/thunks.d.ts +19 -11
  233. package/dist/usersSlice/thunks.js +28 -28
  234. package/dist/utils.cjs +4 -5
  235. package/dist/utils.cjs.map +1 -1
  236. package/dist/utils.js +3 -3
  237. package/package.json +5 -5
  238. package/dist/chunk-3P3IE42O.js.map +0 -1
  239. package/dist/chunk-7C4SQBEE.js.map +0 -1
  240. package/dist/chunk-ABJLRDCO.js.map +0 -1
  241. package/dist/chunk-HFOTAPIJ.js.map +0 -1
  242. package/dist/chunk-JXQUFKID.js.map +0 -1
  243. package/dist/chunk-MSOXMRF7.js.map +0 -1
  244. package/dist/chunk-OOICURFL.js.map +0 -1
  245. package/dist/chunk-QKPV5RRN.js.map +0 -1
  246. package/dist/chunk-QYLGIR4W.js.map +0 -1
  247. package/dist/chunk-R6KRH2IY.js.map +0 -1
  248. package/dist/chunk-RS37Y2PQ.js.map +0 -1
  249. package/dist/chunk-UE5N5VO3.js.map +0 -1
  250. package/dist/chunk-VUFRP6P3.js.map +0 -1
  251. package/dist/chunk-YY6SKZDF.js.map +0 -1
  252. /package/dist/{chunk-H5FAPMJJ.js.map → chunk-2ASLHSBV.js.map} +0 -0
  253. /package/dist/{chunk-V3QEONX7.js.map → chunk-3ECSADAW.js.map} +0 -0
  254. /package/dist/{chunk-UGSLGUS6.js.map → chunk-7BKDELUQ.js.map} +0 -0
  255. /package/dist/{chunk-QHK7GGV4.js.map → chunk-B7GXA42G.js.map} +0 -0
  256. /package/dist/{chunk-PGFVHKP5.js.map → chunk-CEH2D355.js.map} +0 -0
  257. /package/dist/{chunk-F26IKSML.js.map → chunk-PTQS3JDZ.js.map} +0 -0
  258. /package/dist/{chunk-MZNANSS2.js.map → chunk-RRL7OZHU.js.map} +0 -0
  259. /package/dist/{chunk-SCZLNFB5.js.map → chunk-TU4IVT3M.js.map} +0 -0
  260. /package/dist/{chunk-ZJW3QIPM.js.map → chunk-W2RDUU5Q.js.map} +0 -0
  261. /package/dist/{chunk-KJNNEDRV.js.map → chunk-XLXLFSZA.js.map} +0 -0
@@ -37,7 +37,7 @@ module.exports = __toCommonJS(storehooks_exports);
37
37
  var import_react2 = require("react");
38
38
  var import_react_redux2 = require("react-redux");
39
39
  var import_helpers15 = require("@northern.tech/utils/helpers");
40
- var import_dayjs3 = __toESM(require("dayjs"), 1);
40
+ var import_dayjs2 = __toESM(require("dayjs"), 1);
41
41
  var import_duration = __toESM(require("dayjs/plugin/duration.js"), 1);
42
42
  var import_universal_cookie6 = __toESM(require("universal-cookie"), 1);
43
43
 
@@ -61,6 +61,7 @@ var emptyChartSelection = { software: "", group: "", chartType: chartTypes.bar.k
61
61
  var defaultReportType = "distribution";
62
62
  var defaultReports = [{ ...emptyChartSelection, group: null, attribute: "artifact_name", type: defaultReportType }];
63
63
  var locations = {
64
+ cn: { key: "cn", title: "China", location: "hosted.mender.cn" },
64
65
  eu: { key: "eu", title: "EU", location: "eu.hosted.mender.io" },
65
66
  us: { key: "us", title: "US", location: "hosted.mender.io" }
66
67
  };
@@ -180,7 +181,6 @@ var DARK_MODE = "dark";
180
181
 
181
182
  // src/commonConstants.tsx
182
183
  var import_js = require("@mdi/js");
183
- var import_MenderTypes = require("@northern.tech/types/MenderTypes");
184
184
  var import_jsx_runtime = require("react/jsx-runtime");
185
185
  var timeUnits = {
186
186
  days: "days",
@@ -204,9 +204,9 @@ var TIMEOUTS = {
204
204
  var DEVICE_ONLINE_CUTOFF = { interval: 1, intervalName: timeUnits.days };
205
205
  var defaultIdAttribute = Object.freeze({ attribute: "id", scope: import_constants5.ATTRIBUTE_SCOPES.identity });
206
206
  var credentialTypes = {
207
- aws: import_MenderTypes.Credentials.type.AWS,
208
- http: import_MenderTypes.Credentials.type.HTTP,
209
- sas: import_MenderTypes.Credentials.type.SAS,
207
+ aws: "aws",
208
+ http: "http",
209
+ sas: "sas",
210
210
  x509: "x509"
211
211
  };
212
212
  var EXTERNAL_PROVIDER = {
@@ -254,7 +254,7 @@ var EXTERNAL_PROVIDER = {
254
254
  };
255
255
  var emptyWebhook = {
256
256
  description: "",
257
- provider: import_MenderTypes.Integration.provider.WEBHOOK,
257
+ provider: "webhook",
258
258
  credentials: {
259
259
  type: EXTERNAL_PROVIDER.webhook.credentialsType,
260
260
  [EXTERNAL_PROVIDER.webhook.credentialsType]: {
@@ -783,6 +783,7 @@ var initialState = {
783
783
  },
784
784
  // return boolean rather than organization details
785
785
  features: {
786
+ hasAiEnabled: false,
786
787
  hasAuditlogs: false,
787
788
  hasDeltaProgress: false,
788
789
  hasMultitenancy: false,
@@ -1438,6 +1439,23 @@ var initialState7 = {
1438
1439
  }
1439
1440
  */
1440
1441
  },
1442
+ deltaJobs: {
1443
+ /*
1444
+ [jobId]: {
1445
+ id: '',
1446
+ ...
1447
+ }
1448
+ */
1449
+ },
1450
+ deltaJobsList: {
1451
+ ...import_constants5.DEVICE_LIST_DEFAULTS,
1452
+ jobIds: [],
1453
+ total: 0,
1454
+ sort: {
1455
+ direction: import_constants5.SORTING_OPTIONS.desc,
1456
+ key: "started"
1457
+ }
1458
+ },
1441
1459
  releasesList: {
1442
1460
  ...import_constants5.DEVICE_LIST_DEFAULTS,
1443
1461
  searchedIds: [],
@@ -1456,6 +1474,7 @@ var initialState7 = {
1456
1474
  },
1457
1475
  tags: [],
1458
1476
  updateTypes: [],
1477
+ selectedJob: null,
1459
1478
  /*
1460
1479
  * Return single release with corresponding Artifacts
1461
1480
  */
@@ -1488,6 +1507,34 @@ var releaseSlice = (0, import_toolkit7.createSlice)({
1488
1507
  },
1489
1508
  setReleaseListState: (state, action) => {
1490
1509
  state.releasesList = action.payload;
1510
+ },
1511
+ receivedDeltaJobs: (state, action) => {
1512
+ const { jobs, total } = action.payload;
1513
+ state.deltaJobs = jobs.reduce(
1514
+ (accu, job) => {
1515
+ accu[job.id] = {
1516
+ ...accu[job.id],
1517
+ ...job
1518
+ };
1519
+ return accu;
1520
+ },
1521
+ { ...state.deltaJobs }
1522
+ );
1523
+ state.deltaJobsList.jobIds = jobs.map((job) => job.id);
1524
+ state.deltaJobsList.total = total;
1525
+ },
1526
+ receivedDeltaJobDetails: (state, action) => {
1527
+ const job = action.payload;
1528
+ state.deltaJobs[job.id] = {
1529
+ ...state.deltaJobs[job.id],
1530
+ ...job
1531
+ };
1532
+ },
1533
+ setDeltaJobsListState: (state, action) => {
1534
+ state.deltaJobsList = { ...state.deltaJobsList, ...action.payload };
1535
+ },
1536
+ setSelectedJob: (state, action) => {
1537
+ state.selectedJob = action.payload;
1491
1538
  }
1492
1539
  }
1493
1540
  });
@@ -1690,9 +1737,9 @@ var getIsUploading = (0, import_toolkit9.createSelector)([getUploads], (uploadsB
1690
1737
  var getSearchedDevices = (0, import_toolkit9.createSelector)([getSearchState], ({ deviceIds }) => deviceIds);
1691
1738
  var getVersionInformation = (0, import_toolkit9.createSelector)(
1692
1739
  [getFullVersionInformation, getFeatures],
1693
- ({ Integration: Integration2, ...remainder }, { isHosted }) => isHosted && Integration2 !== "next" ? remainder : { ...remainder, Integration: Integration2 }
1740
+ ({ Integration, ...remainder }, { isHosted }) => isHosted && Integration !== "next" ? remainder : { ...remainder, Integration }
1694
1741
  );
1695
- var getIsPreview = (0, import_toolkit9.createSelector)([getFullVersionInformation], ({ Integration: Integration2 }) => (0, import_helpers2.versionCompare)(Integration2, "next") > -1);
1742
+ var getIsPreview = (0, import_toolkit9.createSelector)([getFullVersionInformation], ({ Integration }) => (0, import_helpers2.versionCompare)(Integration, "next") > -1);
1696
1743
 
1697
1744
  // src/commonSelectors.ts
1698
1745
  var import_helpers5 = require("@northern.tech/utils/helpers");
@@ -1704,6 +1751,10 @@ var getDeploymentsById = (state) => state.deployments.byId;
1704
1751
  var getDeploymentsByStatus = (state) => state.deployments.byStatus;
1705
1752
  var getSelectedDeploymentDeviceIds = (state) => state.deployments.selectedDeviceIds;
1706
1753
  var getDeploymentsSelectionState = (state) => state.deployments.selectionState;
1754
+ var getDeploymentById = (0, import_toolkit10.createSelector)(
1755
+ [getDeploymentsById, (_, deploymentId) => deploymentId],
1756
+ (deploymentsById, deploymentId = "") => deploymentsById[deploymentId]
1757
+ );
1707
1758
  var getMappedDeploymentSelection = (0, import_toolkit10.createSelector)(
1708
1759
  [getDeploymentsSelectionState, (_, deploymentsState) => deploymentsState, getDeploymentsById],
1709
1760
  (selectionState, deploymentsState, deploymentsById) => {
@@ -1853,8 +1904,6 @@ var getOnboarding = (state) => state.onboarding;
1853
1904
 
1854
1905
  // src/organizationSlice/selectors.ts
1855
1906
  var import_toolkit12 = require("@reduxjs/toolkit");
1856
- var import_dayjs = __toESM(require("dayjs"), 1);
1857
- var import_relativeTime = __toESM(require("dayjs/plugin/relativeTime.js"), 1);
1858
1907
  var getOrganization = (state) => state.organization.organization;
1859
1908
  var getExternalIntegrations = (state) => state.organization.externalDeviceIntegrations;
1860
1909
  var getAuditlogState = (state) => state.organization.auditlog.selectionState;
@@ -1883,12 +1932,6 @@ var getAuditLogEntry = (0, import_toolkit12.createSelector)([getAuditLog, getAud
1883
1932
  const [eventAction, eventTime] = atob(selectedId).split("|");
1884
1933
  return events.find((item) => item.action === eventAction && item.time === eventTime);
1885
1934
  });
1886
- import_dayjs.default.extend(import_relativeTime.default);
1887
- var newPricingIntroduction = (0, import_dayjs.default)("2025-06-03T00:00");
1888
- var getHasCurrentPricing = (0, import_toolkit12.createSelector)(
1889
- [getOrganization],
1890
- ({ id }) => !!id && (0, import_dayjs.default)(parseInt(id.substring(0, 8), 16) * 1e3) >= newPricingIntroduction
1891
- );
1892
1935
 
1893
1936
  // src/releasesSlice/selectors.ts
1894
1937
  var import_toolkit13 = require("@reduxjs/toolkit");
@@ -2058,6 +2101,10 @@ var getHasReleases = (0, import_toolkit13.createSelector)(
2058
2101
  );
2059
2102
  var getSelectedRelease = (0, import_toolkit13.createSelector)([getReleasesById, getSelectedReleaseId], (byId, id) => byId[id || ""] ?? {});
2060
2103
  var getSelectedReleases = (0, import_toolkit13.createSelector)([getReleaseListState, getReleasesList], ({ selection }, releases) => selection.map((index) => releases[index]));
2104
+ var getDeltaJobsById = (state) => state.releases.deltaJobs;
2105
+ var getDeltaJobById = (0, import_toolkit13.createSelector)([getDeltaJobsById, (_, jobId) => jobId], (byId, jobId) => byId[jobId]);
2106
+ var getSelectedJobId = (state) => state.releases.selectedJob;
2107
+ var getSelectedJob = (0, import_toolkit13.createSelector)([getDeltaJobsById, getSelectedJobId], (byId, jobId) => byId[jobId || ""]);
2061
2108
 
2062
2109
  // src/usersSlice/selectors.ts
2063
2110
  var import_toolkit14 = require("@reduxjs/toolkit");
@@ -2317,7 +2364,7 @@ var import_universal_cookie2 = __toESM(require("universal-cookie"), 1);
2317
2364
  // src/api/general-api.ts
2318
2365
  var import_axios = __toESM(require("axios"), 1);
2319
2366
  var unauthorizedRedirect = (error) => {
2320
- if (!(0, import_axios.isCancel)(error) && error.response?.status === 401 && getToken()) {
2367
+ if (!(0, import_axios.isCancel)(error) && error.response?.status === 401 && getToken() && !window.location.pathname.endsWith("/subscription")) {
2321
2368
  cleanUp();
2322
2369
  window.location.replace("/ui/");
2323
2370
  }
@@ -2564,6 +2611,8 @@ var transformDeployments = (deployments, deploymentsById) => deployments.sort((0
2564
2611
  ...deploymentPrototype,
2565
2612
  ...deploymentsById[item.id],
2566
2613
  ...item,
2614
+ // TODO: explicitly set filter term types to address scope type mismatch in deployment specs
2615
+ // @ts-expect-error: type misalignment in filter terms type
2567
2616
  filter: filter ? { ...filter, name: filter.name ?? filter.id, filters: mapTermsToFilters(filter.terms) } : void 0,
2568
2617
  name: decodeURIComponent(item.name)
2569
2618
  };
@@ -2907,6 +2956,15 @@ var saveDeltaDeploymentsConfig = createAppAsyncThunk(
2907
2956
  });
2908
2957
  }
2909
2958
  );
2959
+ var generateDeploymentLogAnalysis = createAppAsyncThunk(
2960
+ `${sliceName2}/generateDeploymentLogAnalysis`,
2961
+ ({ deploymentId, deviceId }, { dispatch, rejectWithValue }) => general_api_default.get(`${import_constants5.apiRoot}/v1alpha1/deployments/deployments/${deploymentId}/devices/${deviceId}/log/explain`).then(({ data: result }) => Promise.resolve(result)).catch((err) => {
2962
+ if (err.response.status === 429) {
2963
+ return rejectWithValue(err.response);
2964
+ }
2965
+ commonErrorHandler(err, "There was an error analysing the deployment log:", dispatch);
2966
+ })
2967
+ );
2910
2968
 
2911
2969
  // src/devicesSlice/thunks.tsx
2912
2970
  var import_react_router_dom = require("react-router-dom");
@@ -2986,15 +3044,15 @@ var removeDevicesFromGroup = createAppAsyncThunk(
2986
3044
  )
2987
3045
  );
2988
3046
  var getGroupNotification = (newGroup, selectedGroup) => {
2989
- const successMessage2 = "The group was updated successfully";
3047
+ const successMessage = "The group was updated successfully";
2990
3048
  if (newGroup === selectedGroup) {
2991
- return { message: successMessage2, autoHideDuration: TIMEOUTS.fiveSeconds };
3049
+ return { message: successMessage, autoHideDuration: TIMEOUTS.fiveSeconds };
2992
3050
  }
2993
3051
  return {
2994
3052
  action: "",
2995
3053
  autoHideDuration: TIMEOUTS.fiveSeconds,
2996
3054
  message: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_jsx_runtime2.Fragment, { children: [
2997
- successMessage2,
3055
+ successMessage,
2998
3056
  " - ",
2999
3057
  /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react_router_dom.Link, { to: `/devices?inventory=group:eq:${newGroup}`, children: "click here" }),
3000
3058
  " to see it."
@@ -3526,9 +3584,10 @@ var getDeviceConnect = createAppAsyncThunk(
3526
3584
  var updateTypeMap = { deploymentUpdate: "check-update", inventoryUpdate: "send-inventory" };
3527
3585
  var triggerDeviceUpdate = createAppAsyncThunk(
3528
3586
  `${sliceName3}/triggerDeviceUpdate`,
3529
- ({ id, type }, { dispatch }) => general_api_default.post(`${import_constants5.deviceConnect}/devices/${id}/${updateTypeMap[type] ?? updateTypeMap.deploymentUpdate}`).then(
3530
- () => new Promise((resolve) => setTimeout(() => resolve(dispatch(getDeviceById2(id))), TIMEOUTS.threeSeconds))
3531
- )
3587
+ ({ id, type }, { dispatch }) => general_api_default.post(`${import_constants5.deviceConnect}/devices/${id}/${updateTypeMap[type] ?? updateTypeMap.deploymentUpdate}`).catch((err) => commonErrorHandler(err, `The request couldn\u2019t be sent.`, dispatch)).then(() => {
3588
+ dispatch(setSnackbar3("Request has been sent."));
3589
+ return new Promise((resolve) => setTimeout(() => resolve(dispatch(getDeviceById2(id))), TIMEOUTS.threeSeconds));
3590
+ })
3532
3591
  );
3533
3592
  var getSessionDetails = createAppAsyncThunk(
3534
3593
  `${sliceName3}/getSessionDetails`,
@@ -3962,15 +4021,14 @@ var advanceOnboarding = createAppAsyncThunk(`${sliceName5}/advanceOnboarding`, (
3962
4021
  });
3963
4022
 
3964
4023
  // src/organizationSlice/thunks.ts
3965
- var import_MenderTypes2 = require("@northern.tech/types/MenderTypes");
3966
4024
  var import_helpers11 = require("@northern.tech/utils/helpers");
3967
- var import_dayjs2 = __toESM(require("dayjs"), 1);
4025
+ var import_dayjs = __toESM(require("dayjs"), 1);
3968
4026
  var import_utc = __toESM(require("dayjs/plugin/utc.js"), 1);
3969
4027
  var import_jwt_decode = require("jwt-decode");
3970
4028
  var import_md5 = __toESM(require("md5"), 1);
3971
4029
  var import_universal_cookie4 = __toESM(require("universal-cookie"), 1);
3972
4030
  var cookies4 = new import_universal_cookie4.default();
3973
- import_dayjs2.default.extend(import_utc.default);
4031
+ import_dayjs.default.extend(import_utc.default);
3974
4032
  var { setAnnouncement, setSnackbar: setSnackbar4 } = actions_default;
3975
4033
  var { page: defaultPage4, perPage: defaultPerPage4 } = import_constants5.DEVICE_LIST_DEFAULTS;
3976
4034
  var cancelRequest = createAppAsyncThunk(`${sliceName6}/cancelRequest`, (reason, { dispatch, getState }) => {
@@ -3997,10 +4055,12 @@ var createOrganizationTrial = createAppAsyncThunk(`${sliceName6}/createOrganizat
3997
4055
  const targetLocation = getTargetLocation(key);
3998
4056
  const target = `${targetLocation}${import_constants5.tenantadmApiUrlv2}/tenants/trial`;
3999
4057
  return general_api_default.postUnauthorized(target, data).catch((err) => {
4000
- if (err.response.status >= 400 && err.response.status < 500) {
4058
+ if (err.response?.status >= 400 && err.response?.status < 500) {
4001
4059
  dispatch(setSnackbar4({ message: err.response.data.error, autoHideDuration: TIMEOUTS.fiveSeconds }));
4002
- return Promise.reject(err);
4060
+ } else {
4061
+ dispatch(setSnackbar4({ message: "There was an error creating your account", autoHideDuration: TIMEOUTS.fiveSeconds }));
4003
4062
  }
4063
+ return Promise.reject(err);
4004
4064
  }).then(({ headers }) => {
4005
4065
  cookies4.remove("oauth");
4006
4066
  cookies4.remove("externalID");
@@ -4182,32 +4242,29 @@ var getUserOrganization = createAppAsyncThunk(
4182
4242
  );
4183
4243
  var getUserBilling = createAppAsyncThunk(
4184
4244
  `${sliceName6}/getUserBilling`,
4185
- (_, { dispatch }) => general_api_default.get(`${import_constants5.tenantadmApiUrlv2}/billing/profile`).then((res) => dispatch(actions6.setBillingProfile(res.data)))
4245
+ (_, { dispatch }) => general_api_default.get(`${import_constants5.tenantadmApiUrlv2}/billing/profile`).catch((err) => commonErrorHandler(err, "There was an error getting your billing profile:", dispatch, commonErrorFallback)).then((res) => dispatch(actions6.setBillingProfile(res.data)))
4186
4246
  );
4187
- var getUserSubscription = createAppAsyncThunk(`${sliceName6}/getUserSubscription`, (_, { dispatch }) => {
4188
- const tasks = [dispatch(getBillingPreview({ preview_mode: import_MenderTypes2.PreviewRequest.preview_mode.NEXT })).unwrap(), dispatch(getCurrentSubscription()).unwrap()];
4189
- Promise.all(tasks).then(([currentPreview, currentSubscription]) => dispatch(actions6.setSubscription({ ...currentPreview, ...currentSubscription })));
4247
+ var getUserSubscription = createAppAsyncThunk(`${sliceName6}/getUserSubscription`, async (_, { dispatch }) => {
4248
+ const currentSubscription = await dispatch(getCurrentSubscription()).unwrap();
4249
+ const currentPreview = await dispatch(getBillingPreview({ preview_mode: "next" })).unwrap();
4250
+ return dispatch(actions6.setSubscription({ ...currentPreview, ...currentSubscription }));
4190
4251
  });
4191
4252
  var getBillingPreview = createAppAsyncThunk(
4192
4253
  `${sliceName6}/getBillingPreview`,
4193
- (order) => general_api_default.post(`${import_constants5.tenantadmApiUrlv2}/billing/subscription/invoices/preview`, order).then(
4194
- ({ data }) => order.preview_mode === "recurring" ? { ...parseSubscriptionPreview(data.lines), total: data.total } : data
4195
- )
4254
+ (order, { dispatch }) => general_api_default.post(`${import_constants5.tenantadmApiUrlv2}/billing/subscription/invoices/preview`, order).catch((err) => commonErrorHandler(err, "There was an error getting your billing information:", dispatch, commonErrorFallback)).then(({ data }) => order.preview_mode === "recurring" ? { ...parseSubscriptionPreview(data.lines), total: data.total } : data)
4196
4255
  );
4197
4256
  var getCurrentSubscription = createAppAsyncThunk(
4198
4257
  `${sliceName6}/getCurrentSubscription`,
4199
- () => general_api_default.get(`${import_constants5.tenantadmApiUrlv2}/billing/subscription`).then((res) => res.data)
4258
+ (_, { dispatch }) => general_api_default.get(`${import_constants5.tenantadmApiUrlv2}/billing/subscription`).then((res) => res.data).catch((err) => {
4259
+ if (err.response && err.response.status === 404) {
4260
+ throw new Error("Request failed with status code 404");
4261
+ }
4262
+ return commonErrorHandler(err, "There was an error retrieving your current subscription", dispatch, commonErrorFallback);
4263
+ })
4200
4264
  );
4201
- var successMessage = (planId) => `Thank you! You have successfully subscribed to the ${PLANS[planId].name} plan. You can view and edit your billing details on the Organization and billing page.`;
4202
4265
  var requestPlanUpgrade = createAppAsyncThunk(
4203
4266
  `${sliceName6}/requestPlanUpgrade`,
4204
- (order, { dispatch }) => general_api_default.post(`${import_constants5.tenantadmApiUrlv2}/billing/subscription`, order).catch((err) => commonErrorHandler(err, "There was an error sending your request", dispatch, commonErrorFallback)).then(
4205
- () => Promise.all([
4206
- dispatch(setSnackbar4(successMessage(order.plan))),
4207
- setTimeout(() => dispatch(getDeviceLimit2()), TIMEOUTS.threeSeconds),
4208
- dispatch(getUserOrganization())
4209
- ])
4210
- )
4267
+ (order, { dispatch }) => general_api_default.post(`${import_constants5.tenantadmApiUrlv2}/billing/subscription`, order).catch((err) => commonErrorHandler(err, "There was an error sending your request", dispatch, commonErrorFallback)).then(() => Promise.all([setTimeout(() => dispatch(getDeviceLimit2()), TIMEOUTS.threeSeconds), dispatch(getUserOrganization())]))
4211
4268
  );
4212
4269
  var sendSupportMessage = createAppAsyncThunk(
4213
4270
  `${sliceName6}/sendSupportMessage`,
@@ -4324,7 +4381,7 @@ var commonFields = {
4324
4381
  issues: { parse: void 0, select: defaultSelector, target: "selectedIssues" },
4325
4382
  open: { parse: Boolean, select: defaultSelector, target: "open" }
4326
4383
  };
4327
- var formatReleases = ({ pageState: { searchTerm, selectedTags = [], tab, type } }) => Object.entries({ name: searchTerm, tab, type }).reduce(
4384
+ var formatReleases = ({ pageState: { id, searchTerm, selectedTags = [], tab, type } }) => Object.entries({ name: searchTerm, tab, type, id }).reduce(
4328
4385
  (accu, [key, value]) => value ? [...accu, `${key}=${value}`] : accu,
4329
4386
  selectedTags.map((tag) => `tag=${tag}`)
4330
4387
  ).join("&");
@@ -4351,13 +4408,14 @@ var flattenRelease = (release, stateRelease) => {
4351
4408
  return { ...stateRelease, ...release, artifacts, device_types_compatible: deviceTypes.filter(import_helpers13.duplicateFilter), modified };
4352
4409
  };
4353
4410
  var reduceReceivedReleases = (releases, stateReleasesById) => releases.reduce((accu, release) => {
4354
- const stateRelease = stateReleasesById[release.name] || {};
4355
- accu[release.name] = flattenRelease(release, stateRelease);
4411
+ const name = release.name ?? release.Name;
4412
+ const stateRelease = stateReleasesById[name] || {};
4413
+ accu[name] = flattenRelease(release, stateRelease);
4356
4414
  return accu;
4357
4415
  }, {});
4358
4416
  var findArtifactIndexInRelease = (releases, id) => Object.values(releases).reduce(
4359
4417
  (accu, item) => {
4360
- const index = item.artifacts.findIndex((releaseArtifact) => releaseArtifact.id === id);
4418
+ const index = item.artifacts?.findIndex((releaseArtifact) => releaseArtifact.id === id) ?? -1;
4361
4419
  if (index > -1) {
4362
4420
  accu = { release: item, index };
4363
4421
  }
@@ -4420,6 +4478,18 @@ var getArtifactUrl = createAppAsyncThunk(
4420
4478
  return dispatch(actions7.receiveRelease(release));
4421
4479
  })
4422
4480
  );
4481
+ var pollLocation = async (location, attempt = 1, maxAttempts = 5, delay = TIMEOUTS.oneSecond) => {
4482
+ try {
4483
+ await general_api_default.get(location);
4484
+ return Promise.resolve();
4485
+ } catch {
4486
+ if (attempt >= maxAttempts) {
4487
+ throw new Error(`Couldn't get ${location} after ${maxAttempts} attempts`);
4488
+ }
4489
+ await new Promise((resolve) => setTimeout(resolve, delay));
4490
+ return pollLocation(location, attempt + 1, maxAttempts, delay);
4491
+ }
4492
+ };
4423
4493
  var createArtifact = createAppAsyncThunk(`${sliceName7}/createArtifact`, ({ file, meta }, { dispatch }) => {
4424
4494
  const formData = Object.entries(meta).reduce((accu, [key, value]) => {
4425
4495
  if (Array.isArray(value)) {
@@ -4444,13 +4514,18 @@ var createArtifact = createAppAsyncThunk(`${sliceName7}/createArtifact`, ({ file
4444
4514
  (e) => dispatch(uploadProgress3({ id: uploadId, progress: progress(e) })),
4445
4515
  cancelSource.signal
4446
4516
  )
4447
- ]).then(() => {
4448
- setTimeout(() => {
4449
- dispatch(getReleases());
4450
- dispatch(selectRelease(file.name));
4451
- }, TIMEOUTS.oneSecond);
4452
- return Promise.resolve(dispatch(setSnackbar5({ message: "Upload successful", autoHideDuration: TIMEOUTS.fiveSeconds })));
4453
- }).catch((err) => {
4517
+ ]).then((tasks) => {
4518
+ const generateResponse = tasks[tasks.length - 1];
4519
+ const generateLocation = generateResponse.headers[import_constants5.headerNames.location];
4520
+ const location = generateLocation.replace("/generate", "");
4521
+ return pollLocation(location);
4522
+ }).then(
4523
+ () => Promise.all([
4524
+ dispatch(getReleases()),
4525
+ dispatch(selectRelease(meta.name)),
4526
+ dispatch(setSnackbar5({ message: "Upload successful", autoHideDuration: TIMEOUTS.fiveSeconds }))
4527
+ ])
4528
+ ).catch((err) => {
4454
4529
  if ((0, import_axios3.isCancel)(err)) {
4455
4530
  return dispatch(setSnackbar5({ message: "The artifact generation has been cancelled", autoHideDuration: TIMEOUTS.fiveSeconds }));
4456
4531
  }
@@ -4673,6 +4748,20 @@ var getUpdateTypes = createAppAsyncThunk(
4673
4748
  `${sliceName7}/getReleaseTypes`,
4674
4749
  (_, { dispatch }) => general_api_default.get(`${import_constants5.deploymentsApiUrlV2}/releases/all/types`).catch((err) => commonErrorHandler(err, `Existing update types couldn't be retrieved.`, dispatch)).then(({ data: types }) => Promise.resolve(dispatch(actions7.receiveReleaseTypes(types))))
4675
4750
  );
4751
+ var getDeltaGenerationJobs = createAppAsyncThunk(`${sliceName7}/getDeltaGenerationJobs`, (options = {}, { dispatch }) => {
4752
+ const { page = defaultPage5, perPage = defaultPerPage5, sort = {} } = options;
4753
+ const { key: sortKey, direction: sortDirection } = sort;
4754
+ const sortParam = sortKey && sortDirection ? `&sort=${sortKey}:${sortDirection}` : "";
4755
+ return general_api_default.get(`${import_constants5.deploymentsApiUrlV2}/deployments/releases/delta/jobs?page=${page}&per_page=${perPage}${sortParam}`).then(({ data, headers }) => {
4756
+ const total = Number(headers[import_constants5.headerNames.total]) || data.length;
4757
+ const result = { jobs: data, total };
4758
+ return Promise.all([dispatch(actions7.receivedDeltaJobs(result)), result]);
4759
+ }).catch((err) => commonErrorHandler(err, "There was an error retrieving delta generation jobs:", dispatch));
4760
+ });
4761
+ var getDeltaGenerationJobDetails = createAppAsyncThunk(
4762
+ `${sliceName7}/getDeltaGenerationJobDetails`,
4763
+ (jobId, { dispatch }) => general_api_default.get(`${import_constants5.deploymentsApiUrlV2}/deployments/releases/delta/jobs/${jobId}`).then(({ data }) => dispatch(actions7.receivedDeltaJobDetails(data))).catch((err) => commonErrorHandler(err, "There was an error retrieving delta generation job details:", dispatch))
4764
+ );
4676
4765
 
4677
4766
  // src/usersSlice/thunks.ts
4678
4767
  var import_helpers14 = require("@northern.tech/utils/helpers");
@@ -5327,23 +5416,23 @@ var setAllTooltipsReadState = createAppAsyncThunk(
5327
5416
  return Promise.resolve(dispatch(actions8.setTooltipsState(updatedTips))).then(() => dispatch(saveUserSettings()));
5328
5417
  }
5329
5418
  );
5330
- var submitFeedback = createAppAsyncThunk(
5419
+ var submitUserFeedback = createAppAsyncThunk(
5331
5420
  `${sliceName8}/submitFeedback`,
5332
- ({ satisfaction, feedback, ...meta }, { dispatch }) => general_api_default.post(`${import_constants5.tenantadmApiUrlv2}/contact/support`, {
5333
- subject: "feedback submission",
5334
- body: JSON.stringify({ feedback, satisfaction, meta })
5335
- }).then(() => {
5336
- const today = /* @__PURE__ */ new Date();
5337
- dispatch(saveUserSettings({ feedbackCollectedAt: today.toISOString().split("T")[0] }));
5338
- setTimeout(() => dispatch(actions8.setShowFeedbackDialog(false)), TIMEOUTS.threeSeconds);
5421
+ ({ formId, feedback }, { dispatch }) => general_api_default.post(`${import_constants5.useradmApiUrlv2}/support/feedback/${formId}`, feedback).then(() => {
5422
+ if (formId === "product") {
5423
+ const today = /* @__PURE__ */ new Date();
5424
+ dispatch(saveUserSettings({ feedbackCollectedAt: today.toISOString().split("T")[0] }));
5425
+ setTimeout(() => dispatch(actions8.setShowFeedbackDialog(false)), TIMEOUTS.threeSeconds);
5426
+ }
5339
5427
  })
5340
5428
  );
5341
5429
 
5342
5430
  // src/storehooks.ts
5343
5431
  var cookies6 = new import_universal_cookie6.default();
5344
- import_dayjs3.default.extend(import_duration.default);
5432
+ import_dayjs2.default.extend(import_duration.default);
5345
5433
  var { setDeviceListState: setDeviceListState2, setFirstLoginAfterSignup: setFirstLoginAfterSignup2, setTooltipsState, setShowStartupNotification } = actions_default;
5346
5434
  var featureFlags = [
5435
+ "hasAiEnabled",
5347
5436
  "hasAuditlogs",
5348
5437
  "hasMultitenancy",
5349
5438
  "hasDeltaProgress",
@@ -5469,7 +5558,7 @@ var useAppInit = (userId) => {
5469
5558
  ];
5470
5559
  tasks = maybeAddOnboardingTasks({ devicesByStatus, dispatch, tasks, onboardingState });
5471
5560
  if (canManageUsers && intervalUnit && intervalUnit !== timeUnits.days) {
5472
- const duration = import_dayjs3.default.duration(interval, intervalUnit);
5561
+ const duration = import_dayjs2.default.duration(interval, intervalUnit);
5473
5562
  const days = duration.asDays();
5474
5563
  if (days < 1) {
5475
5564
  tasks.push(Promise.resolve(setTimeout(() => dispatch(setShowStartupNotification(true)), TIMEOUTS.fiveSeconds)));