@spottoai/types-package 1.0.2-dev1138.13 → 1.0.2-dev1138.14

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 (841) hide show
  1. package/README.md +12 -0
  2. package/dist/accounts/accounts.d.ts +97 -5
  3. package/dist/accounts/accounts.d.ts.map +1 -1
  4. package/dist/accounts/accounts.js +2 -1
  5. package/dist/accounts/accounts.js.map +1 -1
  6. package/dist/accounts/azureManualOnboarding.d.ts +114 -0
  7. package/dist/accounts/azureManualOnboarding.d.ts.map +1 -0
  8. package/dist/accounts/azureManualOnboarding.js +12 -0
  9. package/dist/accounts/azureManualOnboarding.js.map +1 -0
  10. package/dist/accounts/azureSpSetup.d.ts +147 -31
  11. package/dist/accounts/azureSpSetup.d.ts.map +1 -1
  12. package/dist/accounts/azureSpSetup.js +15 -0
  13. package/dist/accounts/azureSpSetup.js.map +1 -1
  14. package/dist/accounts/azureSpSetupDurable.d.ts +8 -0
  15. package/dist/accounts/azureSpSetupDurable.d.ts.map +1 -1
  16. package/dist/accounts/azureSpSetupDurable.js +28 -0
  17. package/dist/accounts/azureSpSetupDurable.js.map +1 -1
  18. package/dist/accounts/index.d.ts +2 -0
  19. package/dist/accounts/index.d.ts.map +1 -1
  20. package/dist/accounts/index.js +2 -0
  21. package/dist/accounts/index.js.map +1 -1
  22. package/dist/accounts/readPermissions.d.ts +1 -1
  23. package/dist/accounts/readPermissions.d.ts.map +1 -1
  24. package/dist/accounts/readPermissions.js.map +1 -1
  25. package/dist/accounts/subscriptionWriteAccess.d.ts +76 -0
  26. package/dist/accounts/subscriptionWriteAccess.d.ts.map +1 -0
  27. package/dist/accounts/subscriptionWriteAccess.js +119 -0
  28. package/dist/accounts/subscriptionWriteAccess.js.map +1 -0
  29. package/dist/accounts/validation.d.ts +24 -0
  30. package/dist/accounts/validation.d.ts.map +1 -1
  31. package/dist/accounts/writePermissions.d.ts +17 -1
  32. package/dist/accounts/writePermissions.d.ts.map +1 -1
  33. package/dist/accounts/writePermissions.js +47 -1
  34. package/dist/accounts/writePermissions.js.map +1 -1
  35. package/dist/ai/conversationHistory.d.ts +52 -0
  36. package/dist/ai/conversationHistory.d.ts.map +1 -0
  37. package/dist/ai/conversationHistory.js +10 -0
  38. package/dist/ai/conversationHistory.js.map +1 -0
  39. package/dist/ai/followUps.d.ts +16 -0
  40. package/dist/ai/followUps.d.ts.map +1 -0
  41. package/dist/ai/followUps.js +21 -0
  42. package/dist/ai/followUps.js.map +1 -0
  43. package/dist/ai/grounding.d.ts +78 -0
  44. package/dist/ai/grounding.d.ts.map +1 -0
  45. package/dist/ai/grounding.js +154 -0
  46. package/dist/ai/grounding.js.map +1 -0
  47. package/dist/ai/index.d.ts +306 -6
  48. package/dist/ai/index.d.ts.map +1 -1
  49. package/dist/ai/index.js +26 -0
  50. package/dist/ai/index.js.map +1 -1
  51. package/dist/ai/workspaceArtifacts.d.ts +587 -0
  52. package/dist/ai/workspaceArtifacts.d.ts.map +1 -0
  53. package/dist/ai/workspaceArtifacts.js +162 -0
  54. package/dist/ai/workspaceArtifacts.js.map +1 -0
  55. package/dist/aws/commitments-planning.d.ts +6 -1
  56. package/dist/aws/commitments-planning.d.ts.map +1 -1
  57. package/dist/aws/commitments-planning.js +20 -0
  58. package/dist/aws/commitments-planning.js.map +1 -1
  59. package/dist/aws/commitmentsPlanningValidation.d.ts +1 -1
  60. package/dist/aws/commitmentsPlanningValidation.d.ts.map +1 -1
  61. package/dist/aws/commitmentsPlanningValidation.js +26 -25
  62. package/dist/aws/commitmentsPlanningValidation.js.map +1 -1
  63. package/dist/aws/commitmentsPlanningView.d.ts +49 -0
  64. package/dist/aws/commitmentsPlanningView.d.ts.map +1 -0
  65. package/dist/aws/{pluginPublicArtifactEvidence.js → commitmentsPlanningView.js} +1 -1
  66. package/dist/aws/commitmentsPlanningView.js.map +1 -0
  67. package/dist/aws/estates.d.ts +1 -1
  68. package/dist/aws/estates.d.ts.map +1 -1
  69. package/dist/aws/estates.js +7 -1
  70. package/dist/aws/estates.js.map +1 -1
  71. package/dist/aws/index.d.ts +7 -14
  72. package/dist/aws/index.d.ts.map +1 -1
  73. package/dist/aws/index.js +7 -13
  74. package/dist/aws/index.js.map +1 -1
  75. package/dist/aws/onboarding.d.ts +3 -0
  76. package/dist/aws/onboarding.d.ts.map +1 -1
  77. package/dist/aws/organizationCommitments.d.ts +261 -0
  78. package/dist/aws/organizationCommitments.d.ts.map +1 -0
  79. package/dist/aws/organizationCommitments.js +53 -0
  80. package/dist/aws/organizationCommitments.js.map +1 -0
  81. package/dist/aws/organizationCommitmentsApiValidation.d.ts +21 -0
  82. package/dist/aws/organizationCommitmentsApiValidation.d.ts.map +1 -0
  83. package/dist/aws/organizationCommitmentsApiValidation.js +226 -0
  84. package/dist/aws/organizationCommitmentsApiValidation.js.map +1 -0
  85. package/dist/aws/organizationCommitmentsValidation.d.ts +12 -0
  86. package/dist/aws/organizationCommitmentsValidation.d.ts.map +1 -0
  87. package/dist/aws/organizationCommitmentsValidation.js +229 -0
  88. package/dist/aws/organizationCommitmentsValidation.js.map +1 -0
  89. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.d.ts +9 -0
  90. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.d.ts.map +1 -0
  91. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.js +410 -0
  92. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.js.map +1 -0
  93. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.d.ts +16 -0
  94. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.d.ts.map +1 -0
  95. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.js +6 -0
  96. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.js.map +1 -0
  97. package/dist/aws/publicArtifacts.d.ts +2 -37
  98. package/dist/aws/publicArtifacts.d.ts.map +1 -1
  99. package/dist/aws/publicArtifacts.js +3 -1
  100. package/dist/aws/publicArtifacts.js.map +1 -1
  101. package/dist/aws/relationships.d.ts +5 -3
  102. package/dist/aws/relationships.d.ts.map +1 -1
  103. package/dist/aws/relationships.js +18 -3
  104. package/dist/aws/relationships.js.map +1 -1
  105. package/dist/aws/requests.d.ts +46 -3
  106. package/dist/aws/requests.d.ts.map +1 -1
  107. package/dist/aws/requests.js +5 -3
  108. package/dist/aws/requests.js.map +1 -1
  109. package/dist/aws/resourceGraph.d.ts +14 -0
  110. package/dist/aws/resourceGraph.d.ts.map +1 -0
  111. package/dist/aws/resourceGraph.js +68 -0
  112. package/dist/aws/resourceGraph.js.map +1 -0
  113. package/dist/aws/validationHelpers.d.ts +8 -0
  114. package/dist/aws/validationHelpers.d.ts.map +1 -0
  115. package/dist/aws/validationHelpers.js +54 -0
  116. package/dist/aws/validationHelpers.js.map +1 -0
  117. package/dist/azure/activityLogAnalysis.d.ts +320 -0
  118. package/dist/azure/activityLogAnalysis.d.ts.map +1 -0
  119. package/dist/azure/activityLogAnalysis.js +70 -0
  120. package/dist/azure/activityLogAnalysis.js.map +1 -0
  121. package/dist/azure/activityLogAnalysisPublicValidation.d.ts +8 -0
  122. package/dist/azure/activityLogAnalysisPublicValidation.d.ts.map +1 -0
  123. package/dist/azure/activityLogAnalysisPublicValidation.js +368 -0
  124. package/dist/azure/activityLogAnalysisPublicValidation.js.map +1 -0
  125. package/dist/azure/activityLogAnalysisPublicValidationHelpers.d.ts +33 -0
  126. package/dist/azure/activityLogAnalysisPublicValidationHelpers.d.ts.map +1 -0
  127. package/dist/azure/activityLogAnalysisPublicValidationHelpers.js +197 -0
  128. package/dist/azure/activityLogAnalysisPublicValidationHelpers.js.map +1 -0
  129. package/dist/azure/activityLogAnalysisValidation.d.ts +5 -0
  130. package/dist/azure/activityLogAnalysisValidation.d.ts.map +1 -0
  131. package/dist/azure/activityLogAnalysisValidation.js +376 -0
  132. package/dist/azure/activityLogAnalysisValidation.js.map +1 -0
  133. package/dist/azure/activityLogs.d.ts +8 -0
  134. package/dist/azure/activityLogs.d.ts.map +1 -1
  135. package/dist/azure/activityLogs.js.map +1 -1
  136. package/dist/azure/benefits.d.ts +1 -1
  137. package/dist/azure/benefits.d.ts.map +1 -1
  138. package/dist/azure/billingPlots.d.ts +7 -1
  139. package/dist/azure/billingPlots.d.ts.map +1 -1
  140. package/dist/azure/billingPlots.js +45 -4
  141. package/dist/azure/billingPlots.js.map +1 -1
  142. package/dist/azure/commitmentsPlanning.d.ts +23 -48
  143. package/dist/azure/commitmentsPlanning.d.ts.map +1 -1
  144. package/dist/azure/commitmentsPlanning.js +9 -0
  145. package/dist/azure/commitmentsPlanning.js.map +1 -1
  146. package/dist/azure/commitmentsPlanningValidation.d.ts +18 -0
  147. package/dist/azure/commitmentsPlanningValidation.d.ts.map +1 -0
  148. package/dist/azure/commitmentsPlanningValidation.js +50 -0
  149. package/dist/azure/commitmentsPlanningValidation.js.map +1 -0
  150. package/dist/azure/common.d.ts +26 -5
  151. package/dist/azure/common.d.ts.map +1 -1
  152. package/dist/azure/common.js +30 -0
  153. package/dist/azure/common.js.map +1 -1
  154. package/dist/azure/costComposition.d.ts +11 -1
  155. package/dist/azure/costComposition.d.ts.map +1 -1
  156. package/dist/azure/costComposition.js +84 -1
  157. package/dist/azure/costComposition.js.map +1 -1
  158. package/dist/azure/dataProtection.d.ts +44 -4
  159. package/dist/azure/dataProtection.d.ts.map +1 -1
  160. package/dist/azure/financialAnalytics.d.ts +80 -8
  161. package/dist/azure/financialAnalytics.d.ts.map +1 -1
  162. package/dist/azure/financialAnalyticsDelivery.d.ts +72 -3
  163. package/dist/azure/financialAnalyticsDelivery.d.ts.map +1 -1
  164. package/dist/azure/financialAnalyticsDelivery.js +7 -1
  165. package/dist/azure/financialAnalyticsDelivery.js.map +1 -1
  166. package/dist/azure/financialAnalyticsDeliveryValidation.d.ts +9 -1
  167. package/dist/azure/financialAnalyticsDeliveryValidation.d.ts.map +1 -1
  168. package/dist/azure/financialAnalyticsDeliveryValidation.js +190 -10
  169. package/dist/azure/financialAnalyticsDeliveryValidation.js.map +1 -1
  170. package/dist/azure/financialAnalyticsDisplayKernel.d.ts +12 -0
  171. package/dist/azure/financialAnalyticsDisplayKernel.d.ts.map +1 -0
  172. package/dist/azure/financialAnalyticsDisplayKernel.js +144 -0
  173. package/dist/azure/financialAnalyticsDisplayKernel.js.map +1 -0
  174. package/dist/azure/financialAnalyticsValidation.d.ts.map +1 -1
  175. package/dist/azure/financialAnalyticsValidation.js +101 -19
  176. package/dist/azure/financialAnalyticsValidation.js.map +1 -1
  177. package/dist/azure/financialAuthorityProjectionKernel.d.ts +8 -0
  178. package/dist/azure/financialAuthorityProjectionKernel.d.ts.map +1 -0
  179. package/dist/azure/financialAuthorityProjectionKernel.js +269 -0
  180. package/dist/azure/financialAuthorityProjectionKernel.js.map +1 -0
  181. package/dist/azure/financialAuthorityView.d.ts +13 -0
  182. package/dist/azure/financialAuthorityView.d.ts.map +1 -1
  183. package/dist/azure/financialAuthorityView.js.map +1 -1
  184. package/dist/azure/financialAuthorityViewValidation.d.ts +3 -1
  185. package/dist/azure/financialAuthorityViewValidation.d.ts.map +1 -1
  186. package/dist/azure/financialAuthorityViewValidation.js +273 -2
  187. package/dist/azure/financialAuthorityViewValidation.js.map +1 -1
  188. package/dist/azure/financialChargeComposition.d.ts +81 -0
  189. package/dist/azure/financialChargeComposition.d.ts.map +1 -0
  190. package/dist/azure/financialChargeComposition.js +41 -0
  191. package/dist/azure/financialChargeComposition.js.map +1 -0
  192. package/dist/azure/financialChargeCompositionKernel.d.ts +3 -0
  193. package/dist/azure/financialChargeCompositionKernel.d.ts.map +1 -0
  194. package/dist/azure/financialChargeCompositionKernel.js +53 -0
  195. package/dist/azure/financialChargeCompositionKernel.js.map +1 -0
  196. package/dist/azure/financialChargeCompositionValidation.d.ts +8 -0
  197. package/dist/azure/financialChargeCompositionValidation.d.ts.map +1 -0
  198. package/dist/azure/financialChargeCompositionValidation.js +164 -0
  199. package/dist/azure/financialChargeCompositionValidation.js.map +1 -0
  200. package/dist/azure/financialChargePolicy.d.ts +215 -0
  201. package/dist/azure/financialChargePolicy.d.ts.map +1 -0
  202. package/dist/azure/financialChargePolicy.js +488 -0
  203. package/dist/azure/financialChargePolicy.js.map +1 -0
  204. package/dist/azure/financialCurrentSpendSurfaceProjection.d.ts +76 -0
  205. package/dist/azure/financialCurrentSpendSurfaceProjection.d.ts.map +1 -0
  206. package/dist/azure/financialCurrentSpendSurfaceProjection.js +6 -0
  207. package/dist/azure/financialCurrentSpendSurfaceProjection.js.map +1 -0
  208. package/dist/azure/financialCurrentSpendSurfaceProjectionValidation.d.ts +10 -0
  209. package/dist/azure/financialCurrentSpendSurfaceProjectionValidation.d.ts.map +1 -0
  210. package/dist/azure/financialCurrentSpendSurfaceProjectionValidation.js +196 -0
  211. package/dist/azure/financialCurrentSpendSurfaceProjectionValidation.js.map +1 -0
  212. package/dist/azure/financialDataflow.d.ts +45 -2
  213. package/dist/azure/financialDataflow.d.ts.map +1 -1
  214. package/dist/azure/financialDataflow.js.map +1 -1
  215. package/dist/azure/financialDataflowKernel.d.ts +31 -0
  216. package/dist/azure/financialDataflowKernel.d.ts.map +1 -0
  217. package/dist/azure/financialDataflowKernel.js +170 -0
  218. package/dist/azure/financialDataflowKernel.js.map +1 -0
  219. package/dist/azure/financialDataflowValidation.d.ts +5 -2
  220. package/dist/azure/financialDataflowValidation.d.ts.map +1 -1
  221. package/dist/azure/financialDataflowValidation.js +203 -30
  222. package/dist/azure/financialDataflowValidation.js.map +1 -1
  223. package/dist/azure/financialEvidenceAssessmentValidation.d.ts.map +1 -1
  224. package/dist/azure/financialEvidenceAssessmentValidation.js +7 -0
  225. package/dist/azure/financialEvidenceAssessmentValidation.js.map +1 -1
  226. package/dist/azure/financialEvidenceCoverage.d.ts +36 -0
  227. package/dist/azure/financialEvidenceCoverage.d.ts.map +1 -0
  228. package/dist/azure/financialEvidenceCoverage.js +111 -0
  229. package/dist/azure/financialEvidenceCoverage.js.map +1 -0
  230. package/dist/azure/financialPolicy.d.ts +19 -3
  231. package/dist/azure/financialPolicy.d.ts.map +1 -1
  232. package/dist/azure/financialPolicy.js.map +1 -1
  233. package/dist/azure/financialPolicyDelivery.d.ts +75 -1
  234. package/dist/azure/financialPolicyDelivery.d.ts.map +1 -1
  235. package/dist/azure/financialPolicyDelivery.js +5 -1
  236. package/dist/azure/financialPolicyDelivery.js.map +1 -1
  237. package/dist/azure/financialPolicyDeliveryValidation.d.ts +16 -2
  238. package/dist/azure/financialPolicyDeliveryValidation.d.ts.map +1 -1
  239. package/dist/azure/financialPolicyDeliveryValidation.js +238 -5
  240. package/dist/azure/financialPolicyDeliveryValidation.js.map +1 -1
  241. package/dist/azure/financialPolicyKernel.d.ts +38 -0
  242. package/dist/azure/financialPolicyKernel.d.ts.map +1 -0
  243. package/dist/azure/financialPolicyKernel.js +232 -0
  244. package/dist/azure/financialPolicyKernel.js.map +1 -0
  245. package/dist/azure/financialPolicyValidation.d.ts +1 -0
  246. package/dist/azure/financialPolicyValidation.d.ts.map +1 -1
  247. package/dist/azure/financialPolicyValidation.js +111 -16
  248. package/dist/azure/financialPolicyValidation.js.map +1 -1
  249. package/dist/azure/financialProjection.d.ts +11 -1
  250. package/dist/azure/financialProjection.d.ts.map +1 -1
  251. package/dist/azure/financialProjection.js.map +1 -1
  252. package/dist/azure/financialProjectionValidation.d.ts.map +1 -1
  253. package/dist/azure/financialProjectionValidation.js +43 -3
  254. package/dist/azure/financialProjectionValidation.js.map +1 -1
  255. package/dist/azure/financialResourceSurfaceProjection.d.ts +66 -0
  256. package/dist/azure/financialResourceSurfaceProjection.d.ts.map +1 -0
  257. package/dist/azure/financialResourceSurfaceProjection.js +6 -0
  258. package/dist/azure/financialResourceSurfaceProjection.js.map +1 -0
  259. package/dist/azure/financialResourceSurfaceProjectionValidation.d.ts +16 -0
  260. package/dist/azure/financialResourceSurfaceProjectionValidation.d.ts.map +1 -0
  261. package/dist/azure/financialResourceSurfaceProjectionValidation.js +252 -0
  262. package/dist/azure/financialResourceSurfaceProjectionValidation.js.map +1 -0
  263. package/dist/azure/financialSavingsAuthority.d.ts +68 -4
  264. package/dist/azure/financialSavingsAuthority.d.ts.map +1 -1
  265. package/dist/azure/financialSavingsAuthority.js +2 -1
  266. package/dist/azure/financialSavingsAuthority.js.map +1 -1
  267. package/dist/azure/financialSavingsAuthorityValidation.d.ts +6 -2
  268. package/dist/azure/financialSavingsAuthorityValidation.d.ts.map +1 -1
  269. package/dist/azure/financialSavingsAuthorityValidation.js +188 -2
  270. package/dist/azure/financialSavingsAuthorityValidation.js.map +1 -1
  271. package/dist/azure/financialSavingsChargePolicyKernel.d.ts +12 -0
  272. package/dist/azure/financialSavingsChargePolicyKernel.d.ts.map +1 -0
  273. package/dist/azure/financialSavingsChargePolicyKernel.js +34 -0
  274. package/dist/azure/financialSavingsChargePolicyKernel.js.map +1 -0
  275. package/dist/azure/financialSavingsCoordinateValidation.d.ts.map +1 -1
  276. package/dist/azure/financialSavingsCoordinateValidation.js +98 -19
  277. package/dist/azure/financialSavingsCoordinateValidation.js.map +1 -1
  278. package/dist/azure/financialSavingsPercentageKernel.d.ts +20 -0
  279. package/dist/azure/financialSavingsPercentageKernel.d.ts.map +1 -0
  280. package/dist/azure/financialSavingsPercentageKernel.js +49 -0
  281. package/dist/azure/financialSavingsPercentageKernel.js.map +1 -0
  282. package/dist/azure/financialSavingsSurfaceProjection.d.ts +82 -3
  283. package/dist/azure/financialSavingsSurfaceProjection.d.ts.map +1 -1
  284. package/dist/azure/financialSavingsSurfaceProjection.js +3 -1
  285. package/dist/azure/financialSavingsSurfaceProjection.js.map +1 -1
  286. package/dist/azure/financialSavingsSurfaceProjectionKernel.d.ts +26 -0
  287. package/dist/azure/financialSavingsSurfaceProjectionKernel.d.ts.map +1 -0
  288. package/dist/azure/financialSavingsSurfaceProjectionKernel.js +435 -0
  289. package/dist/azure/financialSavingsSurfaceProjectionKernel.js.map +1 -0
  290. package/dist/azure/financialSavingsSurfaceProjectionValidation.d.ts.map +1 -1
  291. package/dist/azure/financialSavingsSurfaceProjectionValidation.js +199 -13
  292. package/dist/azure/financialSavingsSurfaceProjectionValidation.js.map +1 -1
  293. package/dist/azure/financialScope.d.ts +14 -0
  294. package/dist/azure/financialScope.d.ts.map +1 -1
  295. package/dist/azure/financialScope.js +14 -0
  296. package/dist/azure/financialScope.js.map +1 -1
  297. package/dist/azure/financialScopeBaseline.d.ts +11 -3
  298. package/dist/azure/financialScopeBaseline.d.ts.map +1 -1
  299. package/dist/azure/financialScopeBaseline.js +14 -1
  300. package/dist/azure/financialScopeBaseline.js.map +1 -1
  301. package/dist/azure/financialScopeBaselineIdentity.d.ts.map +1 -1
  302. package/dist/azure/financialScopeBaselineIdentity.js +24 -4
  303. package/dist/azure/financialScopeBaselineIdentity.js.map +1 -1
  304. package/dist/azure/financialScopeBaselineValidation.d.ts.map +1 -1
  305. package/dist/azure/financialScopeBaselineValidation.js +21 -4
  306. package/dist/azure/financialScopeBaselineValidation.js.map +1 -1
  307. package/dist/azure/financialScopeEvidence.d.ts +1 -1
  308. package/dist/azure/financialScopeEvidence.d.ts.map +1 -1
  309. package/dist/azure/governance.d.ts +150 -0
  310. package/dist/azure/governance.d.ts.map +1 -1
  311. package/dist/azure/governance.js +2 -1
  312. package/dist/azure/governance.js.map +1 -1
  313. package/dist/azure/metrics.d.ts +4 -29
  314. package/dist/azure/metrics.d.ts.map +1 -1
  315. package/dist/azure/payloads.d.ts +79 -1
  316. package/dist/azure/payloads.d.ts.map +1 -1
  317. package/dist/azure/payloads.js +87 -0
  318. package/dist/azure/payloads.js.map +1 -1
  319. package/dist/azure/prices.d.ts +41 -12
  320. package/dist/azure/prices.d.ts.map +1 -1
  321. package/dist/azure/recommendationLifecycleOverlayValidation.d.ts +5 -0
  322. package/dist/azure/recommendationLifecycleOverlayValidation.d.ts.map +1 -0
  323. package/dist/azure/recommendationLifecycleOverlayValidation.js +82 -0
  324. package/dist/azure/recommendationLifecycleOverlayValidation.js.map +1 -0
  325. package/dist/azure/recommendationState.d.ts +1 -1
  326. package/dist/azure/recommendationState.d.ts.map +1 -1
  327. package/dist/azure/recommendationTracks.d.ts +1 -1
  328. package/dist/azure/recommendationTracks.d.ts.map +1 -1
  329. package/dist/azure/recommendations.d.ts +141 -5
  330. package/dist/azure/recommendations.d.ts.map +1 -1
  331. package/dist/azure/recommendations.js +3 -1
  332. package/dist/azure/recommendations.js.map +1 -1
  333. package/dist/azure/relationships.d.ts +1 -1
  334. package/dist/azure/relationships.d.ts.map +1 -1
  335. package/dist/azure/reportDailySpend.d.ts +48 -0
  336. package/dist/azure/reportDailySpend.d.ts.map +1 -0
  337. package/dist/azure/reportDailySpend.js +6 -0
  338. package/dist/azure/reportDailySpend.js.map +1 -0
  339. package/dist/azure/reportDailySpendValidation.d.ts +3 -0
  340. package/dist/azure/reportDailySpendValidation.d.ts.map +1 -0
  341. package/dist/azure/reportDailySpendValidation.js +72 -0
  342. package/dist/azure/reportDailySpendValidation.js.map +1 -0
  343. package/dist/azure/reportEvidence.d.ts +796 -0
  344. package/dist/azure/reportEvidence.d.ts.map +1 -0
  345. package/dist/azure/reportEvidence.js +33 -0
  346. package/dist/azure/reportEvidence.js.map +1 -0
  347. package/dist/azure/reportEvidenceCatalogueValidation.d.ts +5 -0
  348. package/dist/azure/reportEvidenceCatalogueValidation.d.ts.map +1 -0
  349. package/dist/azure/reportEvidenceCatalogueValidation.js +109 -0
  350. package/dist/azure/reportEvidenceCatalogueValidation.js.map +1 -0
  351. package/dist/azure/reportEvidenceValidation.d.ts +7 -0
  352. package/dist/azure/reportEvidenceValidation.d.ts.map +1 -0
  353. package/dist/azure/reportEvidenceValidation.js +617 -0
  354. package/dist/azure/reportEvidenceValidation.js.map +1 -0
  355. package/dist/azure/reportEvidenceValidationHelpers.d.ts +14 -0
  356. package/dist/azure/reportEvidenceValidationHelpers.d.ts.map +1 -0
  357. package/dist/azure/reportEvidenceValidationHelpers.js +122 -0
  358. package/dist/azure/reportEvidenceValidationHelpers.js.map +1 -0
  359. package/dist/azure/reportSavingsContributionValidation.d.ts +5 -0
  360. package/dist/azure/reportSavingsContributionValidation.d.ts.map +1 -0
  361. package/dist/azure/reportSavingsContributionValidation.js +37 -0
  362. package/dist/azure/reportSavingsContributionValidation.js.map +1 -0
  363. package/dist/azure/reportSpend.d.ts +87 -0
  364. package/dist/azure/reportSpend.d.ts.map +1 -0
  365. package/dist/azure/reportSpend.js +5 -0
  366. package/dist/azure/reportSpend.js.map +1 -0
  367. package/dist/azure/reportSpendValidation.d.ts +7 -0
  368. package/dist/azure/reportSpendValidation.d.ts.map +1 -0
  369. package/dist/azure/reportSpendValidation.js +197 -0
  370. package/dist/azure/reportSpendValidation.js.map +1 -0
  371. package/dist/azure/reportSpendValidationHelpers.d.ts +7 -0
  372. package/dist/azure/reportSpendValidationHelpers.d.ts.map +1 -0
  373. package/dist/azure/reportSpendValidationHelpers.js +31 -0
  374. package/dist/azure/reportSpendValidationHelpers.js.map +1 -0
  375. package/dist/azure/reports.d.ts +32 -10
  376. package/dist/azure/reports.d.ts.map +1 -1
  377. package/dist/azure/reports.js.map +1 -1
  378. package/dist/azure/resilienceFacts.d.ts +100 -0
  379. package/dist/azure/resilienceFacts.d.ts.map +1 -0
  380. package/dist/azure/resilienceFacts.js +20 -0
  381. package/dist/azure/resilienceFacts.js.map +1 -0
  382. package/dist/azure/resilienceFactsValidation.d.ts +4 -0
  383. package/dist/azure/resilienceFactsValidation.d.ts.map +1 -0
  384. package/dist/azure/resilienceFactsValidation.js +70 -0
  385. package/dist/azure/resilienceFactsValidation.js.map +1 -0
  386. package/dist/azure/resources.d.ts +24 -12
  387. package/dist/azure/resources.d.ts.map +1 -1
  388. package/dist/azure/savings.d.ts +4 -2
  389. package/dist/azure/savings.d.ts.map +1 -1
  390. package/dist/azure/serviceRetirement.d.ts +52 -2
  391. package/dist/azure/serviceRetirement.d.ts.map +1 -1
  392. package/dist/azure/storage-inventory.d.ts +44 -0
  393. package/dist/azure/storage-inventory.d.ts.map +1 -1
  394. package/dist/azure/subscriptions.d.ts +57 -11
  395. package/dist/azure/subscriptions.d.ts.map +1 -1
  396. package/dist/azure/subscriptions.js +35 -0
  397. package/dist/azure/subscriptions.js.map +1 -1
  398. package/dist/azure/views.d.ts +110 -23
  399. package/dist/azure/views.d.ts.map +1 -1
  400. package/dist/azure/views.js +8 -1
  401. package/dist/azure/views.js.map +1 -1
  402. package/dist/azure/vmPatchManagement.d.ts +109 -0
  403. package/dist/azure/vmPatchManagement.d.ts.map +1 -0
  404. package/dist/azure/vmPatchManagement.js +7 -0
  405. package/dist/azure/vmPatchManagement.js.map +1 -0
  406. package/dist/common/boundedRows.d.ts +7 -0
  407. package/dist/common/boundedRows.d.ts.map +1 -0
  408. package/dist/{scheduler/scheduler.js → common/boundedRows.js} +1 -1
  409. package/dist/common/boundedRows.js.map +1 -0
  410. package/dist/common/index.d.ts +3 -0
  411. package/dist/common/index.d.ts.map +1 -1
  412. package/dist/common/index.js +3 -0
  413. package/dist/common/index.js.map +1 -1
  414. package/dist/common/metricStats.d.ts +29 -0
  415. package/dist/common/metricStats.d.ts.map +1 -0
  416. package/dist/{aws/portalPublicArtifactNestedEvidence.js → common/metricStats.js} +1 -1
  417. package/dist/common/metricStats.js.map +1 -0
  418. package/dist/common/provider.d.ts +55 -0
  419. package/dist/common/provider.d.ts.map +1 -1
  420. package/dist/common/provider.js.map +1 -1
  421. package/dist/common/relationships.d.ts +3 -3
  422. package/dist/common/relationships.d.ts.map +1 -1
  423. package/dist/common/resourceGraph.d.ts +137 -0
  424. package/dist/common/resourceGraph.d.ts.map +1 -0
  425. package/dist/common/resourceGraph.js +17 -0
  426. package/dist/common/resourceGraph.js.map +1 -0
  427. package/dist/common/resourceGraphValidation.d.ts +30 -0
  428. package/dist/common/resourceGraphValidation.d.ts.map +1 -0
  429. package/dist/common/resourceGraphValidation.js +369 -0
  430. package/dist/common/resourceGraphValidation.js.map +1 -0
  431. package/dist/common/resourceIdentity.d.ts +28 -0
  432. package/dist/common/resourceIdentity.d.ts.map +1 -0
  433. package/dist/common/resourceIdentity.js +35 -0
  434. package/dist/common/resourceIdentity.js.map +1 -0
  435. package/dist/common/sha256.d.ts +2 -0
  436. package/dist/common/sha256.d.ts.map +1 -1
  437. package/dist/common/sha256.js +3 -0
  438. package/dist/common/sha256.js.map +1 -1
  439. package/dist/common/utilizationStories.d.ts +695 -0
  440. package/dist/common/utilizationStories.d.ts.map +1 -0
  441. package/dist/common/utilizationStories.js +21 -0
  442. package/dist/common/utilizationStories.js.map +1 -0
  443. package/dist/common/utilizationStoriesValidation.d.ts +60 -0
  444. package/dist/common/utilizationStoriesValidation.d.ts.map +1 -0
  445. package/dist/common/utilizationStoriesValidation.js +762 -0
  446. package/dist/common/utilizationStoriesValidation.js.map +1 -0
  447. package/dist/common/validationHelpers.d.ts +37 -0
  448. package/dist/common/validationHelpers.d.ts.map +1 -0
  449. package/dist/common/validationHelpers.js +147 -0
  450. package/dist/common/validationHelpers.js.map +1 -0
  451. package/dist/company/company.d.ts +1 -0
  452. package/dist/company/company.d.ts.map +1 -1
  453. package/dist/environment/canonicalization.d.ts +12 -0
  454. package/dist/environment/canonicalization.d.ts.map +1 -0
  455. package/dist/environment/canonicalization.js +40 -0
  456. package/dist/environment/canonicalization.js.map +1 -0
  457. package/dist/environment/contracts.d.ts +472 -0
  458. package/dist/environment/contracts.d.ts.map +1 -0
  459. package/dist/environment/contracts.js +73 -0
  460. package/dist/environment/contracts.js.map +1 -0
  461. package/dist/environment/index.d.ts +6 -0
  462. package/dist/environment/index.d.ts.map +1 -0
  463. package/dist/environment/index.js +22 -0
  464. package/dist/environment/index.js.map +1 -0
  465. package/dist/environment/internal.d.ts +21 -0
  466. package/dist/environment/internal.d.ts.map +1 -0
  467. package/dist/environment/internal.js +113 -0
  468. package/dist/environment/internal.js.map +1 -0
  469. package/dist/environment/references.d.ts +24 -0
  470. package/dist/environment/references.d.ts.map +1 -0
  471. package/dist/environment/references.js +243 -0
  472. package/dist/environment/references.js.map +1 -0
  473. package/dist/environment/tenant.d.ts +128 -0
  474. package/dist/environment/tenant.d.ts.map +1 -0
  475. package/dist/environment/tenant.js +203 -0
  476. package/dist/environment/tenant.js.map +1 -0
  477. package/dist/environment/validation.d.ts +34 -0
  478. package/dist/environment/validation.d.ts.map +1 -0
  479. package/dist/environment/validation.js +655 -0
  480. package/dist/environment/validation.js.map +1 -0
  481. package/dist/esm/accounts/accounts.js +1 -0
  482. package/dist/esm/accounts/azureManualOnboarding.js +8 -0
  483. package/dist/esm/accounts/azureSpSetup.js +14 -1
  484. package/dist/esm/accounts/azureSpSetupDurable.js +27 -1
  485. package/dist/esm/accounts/index.js +2 -0
  486. package/dist/esm/accounts/subscriptionWriteAccess.js +112 -0
  487. package/dist/esm/accounts/writePermissions.js +46 -0
  488. package/dist/esm/ai/conversationHistory.js +6 -0
  489. package/dist/esm/ai/followUps.js +16 -0
  490. package/dist/esm/ai/grounding.js +147 -0
  491. package/dist/esm/ai/index.js +11 -1
  492. package/dist/esm/ai/workspaceArtifacts.js +158 -0
  493. package/dist/esm/aws/commitments-planning.js +6 -0
  494. package/dist/esm/aws/commitmentsPlanningValidation.js +2 -1
  495. package/dist/esm/aws/estates.js +7 -1
  496. package/dist/esm/aws/index.js +7 -13
  497. package/dist/esm/aws/organizationCommitments.js +48 -0
  498. package/dist/esm/aws/organizationCommitmentsApiValidation.js +220 -0
  499. package/dist/esm/aws/organizationCommitmentsValidation.js +225 -0
  500. package/dist/esm/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.js +405 -0
  501. package/dist/esm/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.js +2 -0
  502. package/dist/esm/aws/publicArtifacts.js +2 -0
  503. package/dist/esm/aws/relationships.js +4 -1
  504. package/dist/esm/aws/requests.js +4 -2
  505. package/dist/esm/aws/resourceGraph.js +63 -0
  506. package/dist/esm/aws/validationHelpers.js +46 -0
  507. package/dist/esm/azure/activityLogAnalysis.js +64 -0
  508. package/dist/esm/azure/activityLogAnalysisPublicValidation.js +360 -0
  509. package/dist/esm/azure/activityLogAnalysisPublicValidationHelpers.js +172 -0
  510. package/dist/esm/azure/activityLogAnalysisValidation.js +365 -0
  511. package/dist/esm/azure/billingPlots.js +45 -4
  512. package/dist/esm/azure/commitmentsPlanning.js +8 -1
  513. package/dist/esm/azure/commitmentsPlanningValidation.js +39 -0
  514. package/dist/esm/azure/common.js +28 -1
  515. package/dist/esm/azure/costComposition.js +80 -0
  516. package/dist/esm/azure/financialAnalyticsDelivery.js +5 -0
  517. package/dist/esm/azure/financialAnalyticsDeliveryValidation.js +184 -11
  518. package/dist/esm/azure/financialAnalyticsDisplayKernel.js +139 -0
  519. package/dist/esm/azure/financialAnalyticsValidation.js +101 -19
  520. package/dist/esm/azure/financialAuthorityProjectionKernel.js +263 -0
  521. package/dist/esm/azure/financialAuthorityViewValidation.js +271 -1
  522. package/dist/esm/azure/financialChargeComposition.js +36 -0
  523. package/dist/esm/azure/financialChargeCompositionKernel.js +48 -0
  524. package/dist/esm/azure/financialChargeCompositionValidation.js +155 -0
  525. package/dist/esm/azure/financialChargePolicy.js +473 -0
  526. package/dist/esm/azure/financialCurrentSpendSurfaceProjection.js +2 -0
  527. package/dist/esm/azure/financialCurrentSpendSurfaceProjectionValidation.js +184 -0
  528. package/dist/esm/azure/financialDataflowKernel.js +164 -0
  529. package/dist/esm/azure/financialDataflowValidation.js +199 -29
  530. package/dist/esm/azure/financialEvidenceAssessmentValidation.js +7 -0
  531. package/dist/esm/azure/financialEvidenceCoverage.js +106 -0
  532. package/dist/esm/azure/financialPolicyDelivery.js +4 -0
  533. package/dist/esm/azure/financialPolicyDeliveryValidation.js +227 -7
  534. package/dist/esm/azure/financialPolicyKernel.js +225 -0
  535. package/dist/esm/azure/financialPolicyValidation.js +110 -16
  536. package/dist/esm/azure/financialProjectionValidation.js +43 -3
  537. package/dist/esm/azure/financialResourceSurfaceProjection.js +2 -0
  538. package/dist/esm/azure/financialResourceSurfaceProjectionValidation.js +243 -0
  539. package/dist/esm/azure/financialSavingsAuthority.js +1 -0
  540. package/dist/esm/azure/financialSavingsAuthorityValidation.js +186 -2
  541. package/dist/esm/azure/financialSavingsChargePolicyKernel.js +29 -0
  542. package/dist/esm/azure/financialSavingsCoordinateValidation.js +98 -19
  543. package/dist/esm/azure/financialSavingsPercentageKernel.js +44 -0
  544. package/dist/esm/azure/financialSavingsSurfaceProjection.js +2 -0
  545. package/dist/esm/azure/financialSavingsSurfaceProjectionKernel.js +427 -0
  546. package/dist/esm/azure/financialSavingsSurfaceProjectionValidation.js +199 -13
  547. package/dist/esm/azure/financialScope.js +14 -0
  548. package/dist/esm/azure/financialScopeBaseline.js +12 -0
  549. package/dist/esm/azure/financialScopeBaselineIdentity.js +24 -4
  550. package/dist/esm/azure/financialScopeBaselineValidation.js +21 -4
  551. package/dist/esm/azure/governance.js +1 -0
  552. package/dist/esm/azure/payloads.js +84 -1
  553. package/dist/esm/azure/recommendationLifecycleOverlayValidation.js +75 -0
  554. package/dist/esm/azure/recommendations.js +2 -0
  555. package/dist/esm/azure/reportDailySpend.js +2 -0
  556. package/dist/esm/azure/reportDailySpendValidation.js +67 -0
  557. package/dist/esm/azure/reportEvidence.js +29 -0
  558. package/dist/esm/azure/reportEvidenceCatalogueValidation.js +103 -0
  559. package/dist/esm/azure/reportEvidenceValidation.js +609 -0
  560. package/dist/esm/azure/reportEvidenceValidationHelpers.js +94 -0
  561. package/dist/esm/azure/reportSavingsContributionValidation.js +30 -0
  562. package/dist/esm/azure/reportSpend.js +1 -0
  563. package/dist/esm/azure/reportSpendValidation.js +189 -0
  564. package/dist/esm/azure/reportSpendValidationHelpers.js +22 -0
  565. package/dist/esm/azure/resilienceFacts.js +16 -0
  566. package/dist/esm/azure/resilienceFactsValidation.js +64 -0
  567. package/dist/esm/azure/subscriptions.js +33 -1
  568. package/dist/esm/azure/views.js +8 -1
  569. package/dist/esm/azure/vmPatchManagement.js +3 -0
  570. package/dist/esm/common/index.js +3 -0
  571. package/dist/esm/common/resourceGraph.js +13 -0
  572. package/dist/esm/common/resourceGraphValidation.js +365 -0
  573. package/dist/esm/common/resourceIdentity.js +24 -0
  574. package/dist/esm/common/sha256.js +2 -0
  575. package/dist/esm/common/utilizationStories.js +17 -0
  576. package/dist/esm/common/utilizationStoriesValidation.js +718 -0
  577. package/dist/esm/common/validationHelpers.js +115 -0
  578. package/dist/esm/entries/commitments-planning.js +2 -2
  579. package/dist/esm/entries/environment.js +3 -0
  580. package/dist/esm/entries/relationships.js +2 -2
  581. package/dist/esm/environment/canonicalization.js +34 -0
  582. package/dist/esm/environment/contracts.js +69 -0
  583. package/dist/esm/environment/index.js +5 -0
  584. package/dist/esm/environment/internal.js +97 -0
  585. package/dist/esm/environment/references.js +230 -0
  586. package/dist/esm/environment/tenant.js +190 -0
  587. package/dist/esm/environment/validation.js +635 -0
  588. package/dist/esm/identity/index.js +1 -0
  589. package/dist/esm/index.js +18 -0
  590. package/dist/esm/index.vite.js +12 -0
  591. package/dist/esm/reporting/jobs/index.js +13 -0
  592. package/dist/esm/reporting/jobs/reportJobIdentity.js +76 -0
  593. package/dist/esm/reporting/jobs/reportJobMessages.js +47 -0
  594. package/dist/esm/reporting/jobs/reportJobRow.js +264 -0
  595. package/dist/esm/reporting/jobs/reportJobSpec.js +295 -0
  596. package/dist/esm/reporting/jobs/reportJobStatus.js +87 -0
  597. package/dist/esm/reporting/shared/reportTableEntities.js +41 -0
  598. package/dist/esm/reporting/shared/reportingDigest.js +57 -0
  599. package/dist/esm/reporting/shared/reportingIds.js +88 -0
  600. package/dist/esm/reporting/shared/reportingPaths.js +23 -0
  601. package/dist/esm/scheduler/index.js +4 -1
  602. package/dist/esm/scheduler/resourceStrategy.js +2 -0
  603. package/dist/esm/scheduler/resourceStrategyCapabilityValidation.js +265 -0
  604. package/dist/esm/scheduler/resourceStrategyContracts.js +20 -0
  605. package/dist/esm/scheduler/resourceStrategyFinancialValidation.js +145 -0
  606. package/dist/esm/scheduler/resourceStrategyPermissionValidation.js +190 -0
  607. package/dist/esm/scheduler/resourceStrategyScheduleValidation.js +506 -0
  608. package/dist/esm/scheduler/resourceStrategyValidation.js +4 -0
  609. package/dist/esm/scheduler/resourceStrategyValidationShared.js +261 -0
  610. package/dist/esm/scheduler/schedulerContracts.js +1 -0
  611. package/dist/esm/scheduler/schedulerValidation.js +372 -0
  612. package/dist/esm/scheduler/weeklyAvailabilityFixtures.js +140 -0
  613. package/dist/events/alertDefinitionRun.d.ts +4 -0
  614. package/dist/events/alertDefinitionRun.d.ts.map +1 -1
  615. package/dist/events/baseAlert.d.ts +1 -0
  616. package/dist/events/baseAlert.d.ts.map +1 -1
  617. package/dist/events/cost.d.ts +4 -0
  618. package/dist/events/cost.d.ts.map +1 -1
  619. package/dist/events/quickAlerts.d.ts +13 -4
  620. package/dist/events/quickAlerts.d.ts.map +1 -1
  621. package/dist/events/quickAlerts.js.map +1 -1
  622. package/dist/features-and-permissions/access.d.ts +79 -0
  623. package/dist/features-and-permissions/access.d.ts.map +1 -1
  624. package/dist/identity/index.d.ts +1 -0
  625. package/dist/identity/index.d.ts.map +1 -1
  626. package/dist/identity/index.js +1 -0
  627. package/dist/identity/index.js.map +1 -1
  628. package/dist/identity/microsoftSignInAdminConsent.d.ts +59 -0
  629. package/dist/identity/microsoftSignInAdminConsent.d.ts.map +1 -0
  630. package/dist/{aws/portalRelationshipResourceNodeTypes.js → identity/microsoftSignInAdminConsent.js} +1 -1
  631. package/dist/identity/microsoftSignInAdminConsent.js.map +1 -0
  632. package/dist/index.d.ts +18 -0
  633. package/dist/index.d.ts.map +1 -1
  634. package/dist/index.js +24 -0
  635. package/dist/index.js.map +1 -1
  636. package/dist/index.vite.d.ts +12 -0
  637. package/dist/index.vite.d.ts.map +1 -1
  638. package/dist/index.vite.js +16 -0
  639. package/dist/index.vite.js.map +1 -1
  640. package/dist/portfolio/portfolioOperations.d.ts +1 -1
  641. package/dist/portfolio/portfolioOperations.d.ts.map +1 -1
  642. package/dist/reporting/jobs/index.d.ts +14 -0
  643. package/dist/reporting/jobs/index.d.ts.map +1 -0
  644. package/dist/reporting/jobs/index.js +45 -0
  645. package/dist/reporting/jobs/index.js.map +1 -0
  646. package/dist/reporting/jobs/reportJobIdentity.d.ts +44 -0
  647. package/dist/reporting/jobs/reportJobIdentity.d.ts.map +1 -0
  648. package/dist/reporting/jobs/reportJobIdentity.js +88 -0
  649. package/dist/reporting/jobs/reportJobIdentity.js.map +1 -0
  650. package/dist/reporting/jobs/reportJobMessages.d.ts +30 -0
  651. package/dist/reporting/jobs/reportJobMessages.d.ts.map +1 -0
  652. package/dist/reporting/jobs/reportJobMessages.js +54 -0
  653. package/dist/reporting/jobs/reportJobMessages.js.map +1 -0
  654. package/dist/reporting/jobs/reportJobRow.d.ts +98 -0
  655. package/dist/reporting/jobs/reportJobRow.d.ts.map +1 -0
  656. package/dist/reporting/jobs/reportJobRow.js +270 -0
  657. package/dist/reporting/jobs/reportJobRow.js.map +1 -0
  658. package/dist/reporting/jobs/reportJobSpec.d.ts +92 -0
  659. package/dist/reporting/jobs/reportJobSpec.d.ts.map +1 -0
  660. package/dist/reporting/jobs/reportJobSpec.js +304 -0
  661. package/dist/reporting/jobs/reportJobSpec.js.map +1 -0
  662. package/dist/reporting/jobs/reportJobStatus.d.ts +60 -0
  663. package/dist/reporting/jobs/reportJobStatus.d.ts.map +1 -0
  664. package/dist/reporting/jobs/reportJobStatus.js +98 -0
  665. package/dist/reporting/jobs/reportJobStatus.js.map +1 -0
  666. package/dist/reporting/shared/reportTableEntities.d.ts +23 -0
  667. package/dist/reporting/shared/reportTableEntities.d.ts.map +1 -0
  668. package/dist/reporting/shared/reportTableEntities.js +47 -0
  669. package/dist/reporting/shared/reportTableEntities.js.map +1 -0
  670. package/dist/reporting/shared/reportingDigest.d.ts +6 -0
  671. package/dist/reporting/shared/reportingDigest.d.ts.map +1 -0
  672. package/dist/reporting/shared/reportingDigest.js +63 -0
  673. package/dist/reporting/shared/reportingDigest.js.map +1 -0
  674. package/dist/reporting/shared/reportingIds.d.ts +34 -0
  675. package/dist/reporting/shared/reportingIds.d.ts.map +1 -0
  676. package/dist/reporting/shared/reportingIds.js +102 -0
  677. package/dist/reporting/shared/reportingIds.js.map +1 -0
  678. package/dist/reporting/shared/reportingPaths.d.ts +14 -0
  679. package/dist/reporting/shared/reportingPaths.d.ts.map +1 -0
  680. package/dist/reporting/shared/reportingPaths.js +29 -0
  681. package/dist/reporting/shared/reportingPaths.js.map +1 -0
  682. package/dist/scheduler/index.d.ts +4 -1
  683. package/dist/scheduler/index.d.ts.map +1 -1
  684. package/dist/scheduler/index.js +4 -1
  685. package/dist/scheduler/index.js.map +1 -1
  686. package/dist/scheduler/resourceStrategy.d.ts +3 -0
  687. package/dist/scheduler/resourceStrategy.d.ts.map +1 -0
  688. package/dist/scheduler/resourceStrategy.js +19 -0
  689. package/dist/scheduler/resourceStrategy.js.map +1 -0
  690. package/dist/scheduler/resourceStrategyCapabilityValidation.d.ts +4 -0
  691. package/dist/scheduler/resourceStrategyCapabilityValidation.d.ts.map +1 -0
  692. package/dist/scheduler/resourceStrategyCapabilityValidation.js +270 -0
  693. package/dist/scheduler/resourceStrategyCapabilityValidation.js.map +1 -0
  694. package/dist/scheduler/resourceStrategyContracts.d.ts +466 -0
  695. package/dist/scheduler/resourceStrategyContracts.d.ts.map +1 -0
  696. package/dist/scheduler/resourceStrategyContracts.js +24 -0
  697. package/dist/scheduler/resourceStrategyContracts.js.map +1 -0
  698. package/dist/scheduler/resourceStrategyFinancialValidation.d.ts +5 -0
  699. package/dist/scheduler/resourceStrategyFinancialValidation.d.ts.map +1 -0
  700. package/dist/scheduler/resourceStrategyFinancialValidation.js +151 -0
  701. package/dist/scheduler/resourceStrategyFinancialValidation.js.map +1 -0
  702. package/dist/scheduler/resourceStrategyPermissionValidation.d.ts +4 -0
  703. package/dist/scheduler/resourceStrategyPermissionValidation.d.ts.map +1 -0
  704. package/dist/scheduler/resourceStrategyPermissionValidation.js +195 -0
  705. package/dist/scheduler/resourceStrategyPermissionValidation.js.map +1 -0
  706. package/dist/scheduler/resourceStrategyScheduleValidation.d.ts +14 -0
  707. package/dist/scheduler/resourceStrategyScheduleValidation.d.ts.map +1 -0
  708. package/dist/scheduler/resourceStrategyScheduleValidation.js +519 -0
  709. package/dist/scheduler/resourceStrategyScheduleValidation.js.map +1 -0
  710. package/dist/scheduler/resourceStrategyValidation.d.ts +5 -0
  711. package/dist/scheduler/resourceStrategyValidation.d.ts.map +1 -0
  712. package/dist/scheduler/resourceStrategyValidation.js +21 -0
  713. package/dist/scheduler/resourceStrategyValidation.js.map +1 -0
  714. package/dist/scheduler/resourceStrategyValidationShared.d.ts +19 -0
  715. package/dist/scheduler/resourceStrategyValidationShared.d.ts.map +1 -0
  716. package/dist/scheduler/resourceStrategyValidationShared.js +281 -0
  717. package/dist/scheduler/resourceStrategyValidationShared.js.map +1 -0
  718. package/dist/scheduler/schedulerContracts.d.ts +184 -0
  719. package/dist/scheduler/schedulerContracts.d.ts.map +1 -0
  720. package/dist/scheduler/schedulerContracts.js +3 -0
  721. package/dist/scheduler/schedulerContracts.js.map +1 -0
  722. package/dist/scheduler/schedulerValidation.d.ts +15 -0
  723. package/dist/scheduler/schedulerValidation.d.ts.map +1 -0
  724. package/dist/scheduler/schedulerValidation.js +388 -0
  725. package/dist/scheduler/schedulerValidation.js.map +1 -0
  726. package/dist/scheduler/weeklyAvailabilityFixtures.d.ts +26 -0
  727. package/dist/scheduler/weeklyAvailabilityFixtures.d.ts.map +1 -0
  728. package/dist/scheduler/weeklyAvailabilityFixtures.js +144 -0
  729. package/dist/scheduler/weeklyAvailabilityFixtures.js.map +1 -0
  730. package/package.json +43 -7
  731. package/dist/aws/pluginPublicArtifactBodyValidation.d.ts +0 -10
  732. package/dist/aws/pluginPublicArtifactBodyValidation.d.ts.map +0 -1
  733. package/dist/aws/pluginPublicArtifactBodyValidation.js +0 -225
  734. package/dist/aws/pluginPublicArtifactBodyValidation.js.map +0 -1
  735. package/dist/aws/pluginPublicArtifactEvidence.d.ts +0 -161
  736. package/dist/aws/pluginPublicArtifactEvidence.d.ts.map +0 -1
  737. package/dist/aws/pluginPublicArtifactEvidence.js.map +0 -1
  738. package/dist/aws/pluginPublicArtifactManifestValidation.d.ts +0 -4
  739. package/dist/aws/pluginPublicArtifactManifestValidation.d.ts.map +0 -1
  740. package/dist/aws/pluginPublicArtifactManifestValidation.js +0 -259
  741. package/dist/aws/pluginPublicArtifactManifestValidation.js.map +0 -1
  742. package/dist/aws/pluginPublicArtifactSectionValidation.d.ts +0 -6
  743. package/dist/aws/pluginPublicArtifactSectionValidation.d.ts.map +0 -1
  744. package/dist/aws/pluginPublicArtifactSectionValidation.js +0 -471
  745. package/dist/aws/pluginPublicArtifactSectionValidation.js.map +0 -1
  746. package/dist/aws/pluginPublicArtifactValidation.d.ts +0 -3
  747. package/dist/aws/pluginPublicArtifactValidation.d.ts.map +0 -1
  748. package/dist/aws/pluginPublicArtifactValidation.js +0 -9
  749. package/dist/aws/pluginPublicArtifactValidation.js.map +0 -1
  750. package/dist/aws/pluginPublicArtifactValidationHelpers.d.ts +0 -23
  751. package/dist/aws/pluginPublicArtifactValidationHelpers.d.ts.map +0 -1
  752. package/dist/aws/pluginPublicArtifactValidationHelpers.js +0 -240
  753. package/dist/aws/pluginPublicArtifactValidationHelpers.js.map +0 -1
  754. package/dist/aws/pluginPublicArtifacts.d.ts +0 -253
  755. package/dist/aws/pluginPublicArtifacts.d.ts.map +0 -1
  756. package/dist/aws/pluginPublicArtifacts.js +0 -51
  757. package/dist/aws/pluginPublicArtifacts.js.map +0 -1
  758. package/dist/aws/portalCommitmentsPlanningPublicArtifactValidation.d.ts +0 -4
  759. package/dist/aws/portalCommitmentsPlanningPublicArtifactValidation.d.ts.map +0 -1
  760. package/dist/aws/portalCommitmentsPlanningPublicArtifactValidation.js +0 -513
  761. package/dist/aws/portalCommitmentsPlanningPublicArtifactValidation.js.map +0 -1
  762. package/dist/aws/portalCommitmentsPlanningPublicArtifacts.d.ts +0 -13
  763. package/dist/aws/portalCommitmentsPlanningPublicArtifacts.d.ts.map +0 -1
  764. package/dist/aws/portalCommitmentsPlanningPublicArtifacts.js +0 -5
  765. package/dist/aws/portalCommitmentsPlanningPublicArtifacts.js.map +0 -1
  766. package/dist/aws/portalPublicArtifactCurrentValidation.d.ts +0 -4
  767. package/dist/aws/portalPublicArtifactCurrentValidation.d.ts.map +0 -1
  768. package/dist/aws/portalPublicArtifactCurrentValidation.js +0 -333
  769. package/dist/aws/portalPublicArtifactCurrentValidation.js.map +0 -1
  770. package/dist/aws/portalPublicArtifactEvidenceValidation.d.ts +0 -6
  771. package/dist/aws/portalPublicArtifactEvidenceValidation.d.ts.map +0 -1
  772. package/dist/aws/portalPublicArtifactEvidenceValidation.js +0 -301
  773. package/dist/aws/portalPublicArtifactEvidenceValidation.js.map +0 -1
  774. package/dist/aws/portalPublicArtifactHistoryAiValidation.d.ts +0 -8
  775. package/dist/aws/portalPublicArtifactHistoryAiValidation.d.ts.map +0 -1
  776. package/dist/aws/portalPublicArtifactHistoryAiValidation.js +0 -377
  777. package/dist/aws/portalPublicArtifactHistoryAiValidation.js.map +0 -1
  778. package/dist/aws/portalPublicArtifactHistoryTypes.d.ts +0 -178
  779. package/dist/aws/portalPublicArtifactHistoryTypes.d.ts.map +0 -1
  780. package/dist/aws/portalPublicArtifactHistoryTypes.js +0 -44
  781. package/dist/aws/portalPublicArtifactHistoryTypes.js.map +0 -1
  782. package/dist/aws/portalPublicArtifactNestedEvidence.d.ts +0 -127
  783. package/dist/aws/portalPublicArtifactNestedEvidence.d.ts.map +0 -1
  784. package/dist/aws/portalPublicArtifactNestedEvidence.js.map +0 -1
  785. package/dist/aws/portalPublicArtifactNestedEvidenceValidation.d.ts +0 -6
  786. package/dist/aws/portalPublicArtifactNestedEvidenceValidation.d.ts.map +0 -1
  787. package/dist/aws/portalPublicArtifactNestedEvidenceValidation.js +0 -405
  788. package/dist/aws/portalPublicArtifactNestedEvidenceValidation.js.map +0 -1
  789. package/dist/aws/portalPublicArtifactValidation.d.ts +0 -3
  790. package/dist/aws/portalPublicArtifactValidation.d.ts.map +0 -1
  791. package/dist/aws/portalPublicArtifactValidation.js +0 -14
  792. package/dist/aws/portalPublicArtifactValidation.js.map +0 -1
  793. package/dist/aws/portalPublicArtifactValidationCommon.d.ts +0 -30
  794. package/dist/aws/portalPublicArtifactValidationCommon.d.ts.map +0 -1
  795. package/dist/aws/portalPublicArtifactValidationCommon.js +0 -167
  796. package/dist/aws/portalPublicArtifactValidationCommon.js.map +0 -1
  797. package/dist/aws/portalPublicArtifacts.d.ts +0 -400
  798. package/dist/aws/portalPublicArtifacts.d.ts.map +0 -1
  799. package/dist/aws/portalPublicArtifacts.js +0 -85
  800. package/dist/aws/portalPublicArtifacts.js.map +0 -1
  801. package/dist/aws/portalRelationshipPublicArtifactValidation.d.ts +0 -4
  802. package/dist/aws/portalRelationshipPublicArtifactValidation.d.ts.map +0 -1
  803. package/dist/aws/portalRelationshipPublicArtifactValidation.js +0 -338
  804. package/dist/aws/portalRelationshipPublicArtifactValidation.js.map +0 -1
  805. package/dist/aws/portalRelationshipPublicArtifacts.d.ts +0 -196
  806. package/dist/aws/portalRelationshipPublicArtifacts.d.ts.map +0 -1
  807. package/dist/aws/portalRelationshipPublicArtifacts.js +0 -63
  808. package/dist/aws/portalRelationshipPublicArtifacts.js.map +0 -1
  809. package/dist/aws/portalRelationshipResourceNodeTypes.d.ts +0 -269
  810. package/dist/aws/portalRelationshipResourceNodeTypes.d.ts.map +0 -1
  811. package/dist/aws/portalRelationshipResourceNodeTypes.js.map +0 -1
  812. package/dist/aws/portalRelationshipResourceNodeValidation.d.ts +0 -2
  813. package/dist/aws/portalRelationshipResourceNodeValidation.d.ts.map +0 -1
  814. package/dist/aws/portalRelationshipResourceNodeValidation.js +0 -372
  815. package/dist/aws/portalRelationshipResourceNodeValidation.js.map +0 -1
  816. package/dist/esm/aws/pluginPublicArtifactBodyValidation.js +0 -217
  817. package/dist/esm/aws/pluginPublicArtifactManifestValidation.js +0 -255
  818. package/dist/esm/aws/pluginPublicArtifactSectionValidation.js +0 -464
  819. package/dist/esm/aws/pluginPublicArtifactValidation.js +0 -2
  820. package/dist/esm/aws/pluginPublicArtifactValidationHelpers.js +0 -216
  821. package/dist/esm/aws/pluginPublicArtifacts.js +0 -44
  822. package/dist/esm/aws/portalCommitmentsPlanningPublicArtifactValidation.js +0 -509
  823. package/dist/esm/aws/portalCommitmentsPlanningPublicArtifacts.js +0 -1
  824. package/dist/esm/aws/portalPublicArtifactCurrentValidation.js +0 -328
  825. package/dist/esm/aws/portalPublicArtifactEvidenceValidation.js +0 -294
  826. package/dist/esm/aws/portalPublicArtifactHistoryAiValidation.js +0 -368
  827. package/dist/esm/aws/portalPublicArtifactHistoryTypes.js +0 -40
  828. package/dist/esm/aws/portalPublicArtifactNestedEvidenceValidation.js +0 -397
  829. package/dist/esm/aws/portalPublicArtifactValidation.js +0 -2
  830. package/dist/esm/aws/portalPublicArtifactValidationCommon.js +0 -139
  831. package/dist/esm/aws/portalPublicArtifacts.js +0 -73
  832. package/dist/esm/aws/portalRelationshipPublicArtifactValidation.js +0 -334
  833. package/dist/esm/aws/portalRelationshipPublicArtifacts.js +0 -59
  834. package/dist/esm/aws/portalRelationshipResourceNodeValidation.js +0 -368
  835. package/dist/scheduler/scheduler.d.ts +0 -263
  836. package/dist/scheduler/scheduler.d.ts.map +0 -1
  837. package/dist/scheduler/scheduler.js.map +0 -1
  838. /package/dist/esm/aws/{pluginPublicArtifactEvidence.js → commitmentsPlanningView.js} +0 -0
  839. /package/dist/esm/{aws/portalPublicArtifactNestedEvidence.js → common/boundedRows.js} +0 -0
  840. /package/dist/esm/{aws/portalRelationshipResourceNodeTypes.js → common/metricStats.js} +0 -0
  841. /package/dist/esm/{scheduler/scheduler.js → identity/microsoftSignInAdminConsent.js} +0 -0
@@ -0,0 +1,762 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isResilienceProfileConfig = exports.isUtilizationProfileConfig = exports.isUtilizationProfileEntry = exports.isUtilizationMetricEntry = exports.isReportingStories = exports.isStoryFingerprintRows = exports.isStoryFingerprint = exports.isStorySample = exports.isStoryArtifact = exports.isRowInScope = exports.isStorySummarySection = exports.isStorySection = exports.isStorySummary = exports.storyRowGuard = exports.isCommitmentRow = exports.isHybridBenefitRow = exports.isResilienceRow = exports.isScheduleCandidateRow = exports.isRightSkuRow = exports.isOversizedResourceRow = exports.hasCellsForColumns = exports.isStoryColumn = exports.isStoryCell = exports.isProtectionProfile = exports.isProtectionCapability = exports.isUtilizationSignal = exports.isUtilizationProfile = exports.isSkuOption = exports.isRightSizeRejection = exports.isCommitmentBlock = exports.isSkuProjectedUsage = exports.isSkuOptionSummary = exports.isEvidenceWindow = exports.isCommitmentCoverage = exports.isCommitmentBenefit = exports.isCorroboratedRunningProfile = exports.isRunningProfile = exports.isCapacityDescriptor = exports.isCapacityScalingDescriptor = exports.isMetricSparkline = void 0;
4
+ const validationHelpers_1 = require("./validationHelpers");
5
+ const utilizationStories_1 = require("./utilizationStories");
6
+ const PROVIDERS = new Set(['azure', 'aws']);
7
+ const METRIC_ROLES = new Set(['primary', 'secondary', 'context']);
8
+ const DIMENSION_POLICIES = new Set(['average', 'sum', 'max', 'split']);
9
+ const METRIC_VISUALS = new Set(['sparkline', 'trend', 'capacity-bar', 'mix-bar', 'event-strip']);
10
+ const BILLED_ON = new Set(['allocated', 'used', 'included']);
11
+ const AXIS_MAX_SOURCES = new Set(['config', 'capacity', 'observed']);
12
+ const SCALE_MODES = new Set(['fixed', 'autoscale', 'serverless']);
13
+ const RUN_MODES = new Set(['stop-start', 'auto-pause', 'scale-to-zero', 'always-on']);
14
+ const RUNNING_BASES = new Set(['power-state', 'billing-hours', 'metric-presence']);
15
+ const SIZING_VERDICTS = new Set(['oversized', 'undersized', 'busy', 'rebalance', 'mostly-off', 'idle', 'no-telemetry', 'fits', 'unknown']);
16
+ const SCHEDULE_FITS = new Set(['good', 'fair', 'low', 'done', 'insufficient-data', 'not-applicable']);
17
+ const SCHEDULE_FITS_REQUIRING_CORROBORATION = new Set(['good', 'fair', 'low']);
18
+ const SCHEDULE_ACTIONS = new Set(['stop', 'pause', 'scale']);
19
+ const TELEMETRY_STATUSES = new Set(['collected', 'partial', 'no-series', 'unavailable']);
20
+ const CONFIDENCES = new Set(['high', 'medium', 'low']);
21
+ const BENEFIT_TYPES = new Set(['reservation', 'savings-plan']);
22
+ const SKU_OPTION_KINDS = new Set(['same-shape', 'fits-usage', 'trade-off', 'cross-platform']);
23
+ const SKU_CAPABILITY_SEVERITIES = new Set(['info', 'warning', 'unknown']);
24
+ const SKU_CAPABILITY_BASES = new Set(['sku-capability', 'current-setting', 'active-vcpu-capability', 'unknown']);
25
+ const SKU_CAPABILITY_MATERIALITIES = new Set(['used', 'not-used', 'unknown']);
26
+ const RIGHT_SIZE_ASSESSMENT_STATUSES = new Set(['recommended', 'no-change', 'insufficient-data', 'not-supported']);
27
+ const CAPABILITY_STATES = new Set(['enabled', 'disabled', 'partial', 'unknown', 'not-applicable']);
28
+ const RIGHT_SKU_VERDICTS = new Set(['modernise', 'downsize', 'consider', 'keep', 'blocked-by-commitment']);
29
+ const SKU_SAVINGS_BASES = new Set(['list', 'billed']);
30
+ const COMMITMENT_BLOCK_REASONS = new Set(['reservation', 'cost-not-lower']);
31
+ const RIGHT_SIZE_REJECTION_REASONS = new Set(['observed-fit', 'no-saving']);
32
+ const SIGNAL_ACTION_REASONS = new Set(['observed-fit', 'no-saving', 'blocked-by-commitment']);
33
+ const BACKUP_RUN_STATES = new Set(['ok', 'failed', null]);
34
+ const STORY_KEY_SET = new Set(utilizationStories_1.STORY_KEYS);
35
+ const STORY_CELL_KINDS = new Set([
36
+ 'text',
37
+ 'number',
38
+ 'money',
39
+ 'percent',
40
+ 'mark',
41
+ 'dot',
42
+ 'sparkline',
43
+ 'dual',
44
+ 'capacity-bar',
45
+ 'mix-bar',
46
+ 'event-strip',
47
+ 'weekly-grid',
48
+ ]);
49
+ const SERIES_ROLES = new Set(['primary', 'secondary']);
50
+ const STATUS_TONES = new Set(['good', 'warn', 'bad', 'neutral', 'muted']);
51
+ const COLUMN_ROLE_CLASSES = new Set(['res', 'prim', 'sec', 'nums', 'cap', 'read', 'cost', 'save', 'dual']);
52
+ const PRODUCERS = new Set(['parser', 'strategy']);
53
+ const isNullableNumber = (value) => value === null || (0, validationHelpers_1.isFiniteNumber)(value);
54
+ const isOptionalNullableNumber = (value) => value === undefined || isNullableNumber(value);
55
+ const isNullableString = (value) => value === null || (0, validationHelpers_1.isString)(value);
56
+ const isNullableInteger = (value) => value === null || ((0, validationHelpers_1.isFiniteNumber)(value) && Number.isInteger(value));
57
+ const isText = (value) => typeof value === 'string';
58
+ const isOptionalText = (value) => value === undefined || isText(value);
59
+ const isBoolean = (value) => typeof value === 'boolean';
60
+ const isNullableSeries = (value) => Array.isArray(value) && value.every(isNullableNumber);
61
+ const isPercentage = (value) => (0, validationHelpers_1.isFiniteNumber)(value) && value >= 0 && value <= 100;
62
+ const isNullablePercentage = (value) => value === null || isPercentage(value);
63
+ const isPriority = (value) => (0, validationHelpers_1.isCount)(value) && value >= 1 && value <= 5;
64
+ const isStringRecord = (value) => (0, validationHelpers_1.isRecord)(value) && Object.values(value).every(isText);
65
+ const isNumberRecord = (value) => (0, validationHelpers_1.isRecord)(value) && Object.values(value).every(validationHelpers_1.isFiniteNumber);
66
+ const inSet = (set, value) => set.has(value);
67
+ const isWeeklyGrid = (value) => Array.isArray(value) &&
68
+ value.length === utilizationStories_1.STORY_LIMITS.weeklyGridDays &&
69
+ value.every(day => isNullableSeries(day) && day.length === utilizationStories_1.STORY_LIMITS.weeklyGridHours);
70
+ const METRIC_STATS_FIELDS = [
71
+ 'average',
72
+ 'median',
73
+ 'p50',
74
+ 'p75',
75
+ 'p90',
76
+ 'p95',
77
+ 'p99',
78
+ 'min',
79
+ 'max',
80
+ 'frequency',
81
+ 'trend',
82
+ 'variance',
83
+ 'count',
84
+ 'totalDataPoints',
85
+ 'runningDataPoints',
86
+ 'nonRunningDataPoints',
87
+ 'runningTimePercentage',
88
+ 'longestRunningStreak',
89
+ 'longestDowntimeStreak',
90
+ 'averageUptimeStreak',
91
+ 'averageDowntimeStreak',
92
+ ];
93
+ const METRIC_STATS_OPTIONAL_FIELDS = ['uptime', 'peakHours', 'offPeakHours'];
94
+ const isMetricStats = (value) => (0, validationHelpers_1.isRecord)(value) &&
95
+ METRIC_STATS_FIELDS.every(key => (0, validationHelpers_1.isFiniteNumber)(value[key])) &&
96
+ METRIC_STATS_OPTIONAL_FIELDS.every(key => value[key] === undefined || (0, validationHelpers_1.isFiniteNumber)(value[key]));
97
+ const isMetricSparkline = (value, days) => {
98
+ if (!(0, validationHelpers_1.isRecord)(value) || !(0, validationHelpers_1.isString)(value.key) || !(0, validationHelpers_1.isString)(value.metricName))
99
+ return false;
100
+ if (!inSet(METRIC_ROLES, value.role) || !inSet(METRIC_VISUALS, value.visual) || !isText(value.unit))
101
+ return false;
102
+ if (!isNullableNumber(value.axisMax) || (value.axisMaxSource !== undefined && !inSet(AXIS_MAX_SOURCES, value.axisMaxSource)))
103
+ return false;
104
+ if (value.billedOn !== undefined && !inSet(BILLED_ON, value.billedOn))
105
+ return false;
106
+ if (value.dimensions !== undefined &&
107
+ (!(0, validationHelpers_1.isRecord)(value.dimensions) ||
108
+ !inSet(DIMENSION_POLICIES, value.dimensions.policy) ||
109
+ !isOptionalText(value.dimensions.name) ||
110
+ !isOptionalText(value.dimensions.value) ||
111
+ !(0, validationHelpers_1.isCount)(value.dimensions.seriesCount)))
112
+ return false;
113
+ if (!(0, validationHelpers_1.isDateTime)(value.start) || value.bucket !== 'P1D')
114
+ return false;
115
+ if (!isNullableSeries(value.avg) || !isNullableSeries(value.p95) || !isNullableSeries(value.max))
116
+ return false;
117
+ if (value.avg.length !== value.p95.length || value.avg.length !== value.max.length)
118
+ return false;
119
+ if (days !== undefined && value.avg.length !== days)
120
+ return false;
121
+ return isMetricStats(value.stats) && (0, validationHelpers_1.isCount)(value.sourcePoints);
122
+ };
123
+ exports.isMetricSparkline = isMetricSparkline;
124
+ const isCapacityScalingDescriptor = (value) => {
125
+ if (!(0, validationHelpers_1.isRecord)(value) || !(value.autoscaleEnabled === null || isBoolean(value.autoscaleEnabled)))
126
+ return false;
127
+ if (!isNullableNumber(value.minimumUnits) ||
128
+ !isNullableNumber(value.defaultUnits) ||
129
+ !isNullableNumber(value.maximumUnits) ||
130
+ !isNullableString(value.source))
131
+ return false;
132
+ const minimum = value.minimumUnits;
133
+ const defaultUnits = value.defaultUnits;
134
+ const maximum = value.maximumUnits;
135
+ if ([minimum, defaultUnits, maximum].some(units => units !== null && units < 0))
136
+ return false;
137
+ if (minimum !== null && maximum !== null && minimum > maximum)
138
+ return false;
139
+ if (defaultUnits !== null && minimum !== null && defaultUnits < minimum)
140
+ return false;
141
+ if (defaultUnits !== null && maximum !== null && defaultUnits > maximum)
142
+ return false;
143
+ return true;
144
+ };
145
+ exports.isCapacityScalingDescriptor = isCapacityScalingDescriptor;
146
+ const isCapacityDescriptor = (value) => {
147
+ if (!(0, validationHelpers_1.isRecord)(value) ||
148
+ !isNullableString(value.sku) ||
149
+ !isNullableString(value.tier) ||
150
+ !isNullableNumber(value.units) ||
151
+ !isText(value.unitName) ||
152
+ !isOptionalNullableNumber(value.memoryGB) ||
153
+ !inSet(SCALE_MODES, value.scaleMode) ||
154
+ !isText(value.label))
155
+ return false;
156
+ if (value.scaling === undefined)
157
+ return true;
158
+ if (!(0, exports.isCapacityScalingDescriptor)(value.scaling))
159
+ return false;
160
+ if (value.scaling.autoscaleEnabled === true && value.scaleMode !== 'autoscale')
161
+ return false;
162
+ if (value.scaling.autoscaleEnabled === false && value.scaleMode !== 'fixed')
163
+ return false;
164
+ return true;
165
+ };
166
+ exports.isCapacityDescriptor = isCapacityDescriptor;
167
+ const isHourShare = (value) => (0, validationHelpers_1.isRecord)(value) && isNullableNumber(value.runningShare) && isNullableNumber(value.usageMean);
168
+ const isRunningProfile = (value, days) => {
169
+ if (!(0, validationHelpers_1.isRecord)(value) || !(0, validationHelpers_1.isString)(value.signalMetric) || !inSet(RUNNING_BASES, value.basis))
170
+ return false;
171
+ if (!Array.isArray(value.corroboration) || !value.corroboration.every(basis => inSet(RUNNING_BASES, basis)))
172
+ return false;
173
+ if (value.corroboration.includes(value.basis))
174
+ return false;
175
+ if (!isNullableSeries(value.daily) || (days !== undefined && value.daily.length !== days) || !isNullableNumber(value.share))
176
+ return false;
177
+ if (value.weekly === undefined)
178
+ return true;
179
+ const weekly = value.weekly;
180
+ return ((0, validationHelpers_1.isRecord)(weekly) &&
181
+ (0, validationHelpers_1.isString)(weekly.timezone) &&
182
+ isWeeklyGrid(weekly.running) &&
183
+ isWeeklyGrid(weekly.usage) &&
184
+ isHourShare(weekly.businessHours) &&
185
+ isHourShare(weekly.offHours));
186
+ };
187
+ exports.isRunningProfile = isRunningProfile;
188
+ /** A running signal derived from metric presence alone is not evidence of stopped time; it needs an independent source. */
189
+ const isCorroboratedRunningProfile = (value) => value.basis !== 'metric-presence' || value.corroboration.some(basis => basis !== 'metric-presence');
190
+ exports.isCorroboratedRunningProfile = isCorroboratedRunningProfile;
191
+ const isCommitmentBenefit = (value) => (0, validationHelpers_1.isRecord)(value) &&
192
+ isNullableString(value.benefitId) &&
193
+ isNullableString(value.benefitName) &&
194
+ (value.benefitId !== null || value.benefitName !== null) &&
195
+ inSet(BENEFIT_TYPES, value.benefitType) &&
196
+ isNullableString(value.status) &&
197
+ isNullableString(value.expiryDate) &&
198
+ (value.expiryDate === null || (0, validationHelpers_1.isDateTime)(value.expiryDate)) &&
199
+ isNullableInteger(value.daysToExpiry) &&
200
+ (value.expiryDate !== null || value.daysToExpiry === null);
201
+ exports.isCommitmentBenefit = isCommitmentBenefit;
202
+ const isCommitmentCoverage = (value) => (0, validationHelpers_1.isRecord)(value) &&
203
+ isNullableNumber(value.coveragePercent) &&
204
+ Array.isArray(value.benefitTypes) &&
205
+ value.benefitTypes.every(type => inSet(BENEFIT_TYPES, type)) &&
206
+ Array.isArray(value.benefitNames) &&
207
+ value.benefitNames.every(isText) &&
208
+ (value.benefits === undefined || (Array.isArray(value.benefits) && value.benefits.every(exports.isCommitmentBenefit))) &&
209
+ isNullableNumber(value.coveredCost) &&
210
+ isNullableNumber(value.uncoveredCost) &&
211
+ (0, validationHelpers_1.isDateTime)(value.windowStart) &&
212
+ (0, validationHelpers_1.isDateTime)(value.windowEnd);
213
+ exports.isCommitmentCoverage = isCommitmentCoverage;
214
+ const isEvidenceWindow = (value) => (0, validationHelpers_1.isRecord)(value) &&
215
+ (0, validationHelpers_1.isDateTime)(value.windowStart) &&
216
+ (0, validationHelpers_1.isDateTime)(value.windowEnd) &&
217
+ (0, validationHelpers_1.isCount)(value.days) &&
218
+ (0, validationHelpers_1.isCount)(value.sampleCount) &&
219
+ inSet(TELEMETRY_STATUSES, value.telemetry) &&
220
+ inSet(CONFIDENCES, value.confidence);
221
+ exports.isEvidenceWindow = isEvidenceWindow;
222
+ const isVerdictReason = (value) => (0, validationHelpers_1.isRecord)(value) && (0, validationHelpers_1.isString)(value.rule) && (0, validationHelpers_1.isRecord)(value.values) && Object.values(value.values).every(isNullableNumber);
223
+ /** Optional basis and billed figure: a billed-basis summary's `billedSavingsPercent` must equal its `savingsPercent`. */
224
+ const isSkuOptionSummary = (value) => (0, validationHelpers_1.isRecord)(value) &&
225
+ inSet(SKU_OPTION_KINDS, value.kind) &&
226
+ (0, validationHelpers_1.isString)(value.label) &&
227
+ isNullableNumber(value.savingsPercent) &&
228
+ (value.savingsBasis === undefined || inSet(SKU_SAVINGS_BASES, value.savingsBasis)) &&
229
+ (value.billedSavingsPercent === undefined || isNullablePercentage(value.billedSavingsPercent)) &&
230
+ (value.savingsBasis !== 'billed' || value.billedSavingsPercent === undefined || Object.is(value.billedSavingsPercent, value.savingsPercent));
231
+ exports.isSkuOptionSummary = isSkuOptionSummary;
232
+ /** An estimate marker plus at least one non-negative projected p95 percentage (may exceed 100). */
233
+ const isSkuProjectedUsage = (value) => (0, validationHelpers_1.isRecord)(value) &&
234
+ value.estimate === true &&
235
+ (value.cpuP95 !== undefined || value.memoryP95 !== undefined) &&
236
+ [value.cpuP95, value.memoryP95].every(p95 => p95 === undefined || ((0, validationHelpers_1.isFiniteNumber)(p95) && p95 >= 0));
237
+ exports.isSkuProjectedUsage = isSkuProjectedUsage;
238
+ const isCommitmentBlock = (value) => (0, validationHelpers_1.isRecord)(value) &&
239
+ inSet(COMMITMENT_BLOCK_REASONS, value.reason) &&
240
+ isNullablePercentage(value.coveragePercent) &&
241
+ isNullableString(value.benefitName) &&
242
+ (value.expiryDate === null || (0, validationHelpers_1.isDateTime)(value.expiryDate)) &&
243
+ isOptionalNullableNumber(value.expectedOptionCost) &&
244
+ isOptionalNullableNumber(value.billedSpend);
245
+ exports.isCommitmentBlock = isCommitmentBlock;
246
+ const isRightSizeRejection = (value) => (0, validationHelpers_1.isRecord)(value) && inSet(RIGHT_SIZE_REJECTION_REASONS, value.reason) && (0, validationHelpers_1.isString)(value.sku);
247
+ exports.isRightSizeRejection = isRightSizeRejection;
248
+ const isSkuCapabilityScalar = (value) => value === null || isText(value) || (0, validationHelpers_1.isFiniteNumber)(value) || isBoolean(value);
249
+ const isSkuCapabilityValue = (value) => isSkuCapabilityScalar(value) || (Array.isArray(value) && value.every(isSkuCapabilityScalar));
250
+ const isSkuCapabilityImpact = (value) => (0, validationHelpers_1.isRecord)(value) &&
251
+ (0, validationHelpers_1.isString)(value.key) &&
252
+ isOptionalText(value.label) &&
253
+ inSet(SKU_CAPABILITY_SEVERITIES, value.severity) &&
254
+ inSet(SKU_CAPABILITY_BASES, value.basis) &&
255
+ inSet(SKU_CAPABILITY_MATERIALITIES, value.materiality) &&
256
+ (value.currentValue === undefined || isSkuCapabilityValue(value.currentValue)) &&
257
+ (value.alternativeValue === undefined || isSkuCapabilityValue(value.alternativeValue)) &&
258
+ isOptionalText(value.message);
259
+ const isSkuOption = (value) => (0, validationHelpers_1.isRecord)(value) &&
260
+ inSet(SKU_OPTION_KINDS, value.kind) &&
261
+ (0, validationHelpers_1.isString)(value.sku) &&
262
+ (0, validationHelpers_1.isString)(value.label) &&
263
+ (value.capacity === undefined ||
264
+ ((0, validationHelpers_1.isRecord)(value.capacity) && isNullableNumber(value.capacity.units) && isOptionalNullableNumber(value.capacity.memoryGB))) &&
265
+ isNullableNumber(value.monthlyCost) &&
266
+ (0, validationHelpers_1.isString)(value.currency) &&
267
+ isNullableNumber(value.savingsPercent) &&
268
+ isNullableNumber(value.savingsMonthly) &&
269
+ (0, validationHelpers_1.isStringArray)(value.lostCapabilities) &&
270
+ (value.capabilityImpacts === undefined ||
271
+ (Array.isArray(value.capabilityImpacts) &&
272
+ value.capabilityImpacts.every(isSkuCapabilityImpact) &&
273
+ new Set(value.capabilityImpacts.map(impact => impact.key)).size === value.capabilityImpacts.length)) &&
274
+ (value.confidence === undefined || inSet(CONFIDENCES, value.confidence)) &&
275
+ (value.savingsBasis === undefined || inSet(SKU_SAVINGS_BASES, value.savingsBasis)) &&
276
+ (value.projected === undefined || (0, exports.isSkuProjectedUsage)(value.projected));
277
+ exports.isSkuOption = isSkuOption;
278
+ const isUtilizationProfile = (value, days) => {
279
+ if (!(0, validationHelpers_1.isRecord)(value) || !inSet(PROVIDERS, value.provider) || !(0, validationHelpers_1.isString)(value.family) || !(0, exports.isCapacityDescriptor)(value.capacity))
280
+ return false;
281
+ if (!inSet(RUN_MODES, value.runMode) || !inSet(SIZING_VERDICTS, value.verdict) || !inSet(SCHEDULE_FITS, value.scheduleFit))
282
+ return false;
283
+ if (!(0, exports.isEvidenceWindow)(value.evidenceWindow) || !(0, validationHelpers_1.isString)(value.fingerprint))
284
+ return false;
285
+ const evidenceWindow = value.evidenceWindow;
286
+ const windowDays = days ?? evidenceWindow.days;
287
+ if (!Array.isArray(value.metrics) || !value.metrics.every(metric => (0, exports.isMetricSparkline)(metric, windowDays)))
288
+ return false;
289
+ if (value.running !== undefined && !(0, exports.isRunningProfile)(value.running, windowDays))
290
+ return false;
291
+ if (!Array.isArray(value.verdictReasons) || !value.verdictReasons.every(isVerdictReason) || !(0, validationHelpers_1.isStringArray)(value.evidence))
292
+ return false;
293
+ if (value.scheduleAction !== undefined && !inSet(SCHEDULE_ACTIONS, value.scheduleAction))
294
+ return false;
295
+ if (value.coverage !== undefined && !(0, exports.isCommitmentCoverage)(value.coverage))
296
+ return false;
297
+ if (value.ownerResourceId !== undefined && !(0, validationHelpers_1.isString)(value.ownerResourceId))
298
+ return false;
299
+ const needsCorroboration = inSet(SCHEDULE_FITS_REQUIRING_CORROBORATION, value.scheduleFit) || value.verdict === 'mostly-off';
300
+ if (needsCorroboration) {
301
+ if (evidenceWindow.telemetry !== 'collected')
302
+ return false;
303
+ if (value.running === undefined || !(0, exports.isCorroboratedRunningProfile)(value.running))
304
+ return false;
305
+ }
306
+ return true;
307
+ };
308
+ exports.isUtilizationProfile = isUtilizationProfile;
309
+ const isSignalSeries = (value) => (0, validationHelpers_1.isRecord)(value) && (0, validationHelpers_1.isString)(value.key) && isNullableNumber(value.p95) && isNullableSeries(value.sparkline);
310
+ const isUtilizationSignal = (value) => {
311
+ if (!(0, validationHelpers_1.isRecord)(value) || !inSet(SIZING_VERDICTS, value.verdict) || !inSet(SCHEDULE_FITS, value.scheduleFit))
312
+ return false;
313
+ if (!isSignalSeries(value.primary) || !inSet(TELEMETRY_STATUSES, value.telemetry))
314
+ return false;
315
+ const needsCorroboration = inSet(SCHEDULE_FITS_REQUIRING_CORROBORATION, value.scheduleFit) || value.verdict === 'mostly-off';
316
+ if (needsCorroboration && value.telemetry !== 'collected')
317
+ return false;
318
+ if (value.actionable !== undefined && !isBoolean(value.actionable))
319
+ return false;
320
+ if (value.actionReason !== undefined && (value.actionable !== false || !inSet(SIGNAL_ACTION_REASONS, value.actionReason)))
321
+ return false;
322
+ if (value.secondary !== undefined) {
323
+ if (!isSignalSeries(value.secondary))
324
+ return false;
325
+ const primaryLength = value.primary.sparkline.length;
326
+ if (value.secondary.sparkline.length !== primaryLength)
327
+ return false;
328
+ }
329
+ if (value.coverage !== undefined &&
330
+ (!(0, validationHelpers_1.isRecord)(value.coverage) ||
331
+ !isNullableNumber(value.coverage.coveragePercent) ||
332
+ !Array.isArray(value.coverage.benefitTypes) ||
333
+ !value.coverage.benefitTypes.every(type => inSet(BENEFIT_TYPES, type))))
334
+ return false;
335
+ return value.betterSku === undefined || (0, exports.isSkuOptionSummary)(value.betterSku);
336
+ };
337
+ exports.isUtilizationSignal = isUtilizationSignal;
338
+ const isCapabilityDetails = (value) => (0, validationHelpers_1.isRecord)(value) && Object.values(value).every(detail => detail === null || isText(detail) || (0, validationHelpers_1.isFiniteNumber)(detail) || isBoolean(detail));
339
+ const isProtectionCapability = (value) => (0, validationHelpers_1.isRecord)(value) &&
340
+ (0, validationHelpers_1.isString)(value.key) &&
341
+ inSet(CAPABILITY_STATES, value.state) &&
342
+ isBoolean(value.required) &&
343
+ isText(value.label) &&
344
+ (value.details === undefined || isCapabilityDetails(value.details)) &&
345
+ isOptionalNullableNumber(value.costIfEnabled) &&
346
+ (0, validationHelpers_1.isRecord)(value.evidence) &&
347
+ (0, validationHelpers_1.isString)(value.evidence.source) &&
348
+ (value.evidence.observedAt === undefined || value.evidence.observedAt === null || (0, validationHelpers_1.isDateTime)(value.evidence.observedAt));
349
+ exports.isProtectionCapability = isProtectionCapability;
350
+ const isProtectionProfile = (value) => (0, validationHelpers_1.isRecord)(value) &&
351
+ inSet(PROVIDERS, value.provider) &&
352
+ Array.isArray(value.capabilities) &&
353
+ value.capabilities.every(exports.isProtectionCapability) &&
354
+ (0, validationHelpers_1.isStringArray)(value.missingRequired) &&
355
+ isOptionalNullableNumber(value.slaPercent);
356
+ exports.isProtectionProfile = isProtectionProfile;
357
+ // ---- Cells
358
+ const isSparklineCell = (value) => inSet(SERIES_ROLES, value.role) &&
359
+ isNullableSeries(value.values) &&
360
+ isNullableNumber(value.axisMax) &&
361
+ isText(value.unit) &&
362
+ isNullableNumber(value.p95) &&
363
+ isText(value.label);
364
+ const isStoryCell = (value) => {
365
+ if (!(0, validationHelpers_1.isRecord)(value) || !inSet(STORY_CELL_KINDS, value.kind))
366
+ return false;
367
+ switch (value.kind) {
368
+ case 'text':
369
+ return (value.value === null || isText(value.value)) && (value.detail === undefined || value.detail === null || isText(value.detail));
370
+ case 'number':
371
+ return isNullableNumber(value.value) && isOptionalText(value.unit) && (value.decimals === undefined || (0, validationHelpers_1.isCount)(value.decimals));
372
+ case 'money':
373
+ return (isNullableNumber(value.value) &&
374
+ (0, validationHelpers_1.isString)(value.currency) &&
375
+ (value.secondaryValue === undefined || isNullableNumber(value.secondaryValue)) &&
376
+ isOptionalText(value.secondaryLabel));
377
+ case 'percent':
378
+ return isNullableNumber(value.value);
379
+ case 'mark':
380
+ return ((0, validationHelpers_1.isString)(value.state) && isText(value.label) && inSet(STATUS_TONES, value.tone) && isOptionalText(value.icon) && isOptionalText(value.hint));
381
+ case 'dot':
382
+ return isBoolean(value.present) && inSet(STATUS_TONES, value.tone) && isOptionalText(value.label) && isOptionalText(value.hint);
383
+ case 'sparkline':
384
+ return isSparklineCell(value);
385
+ case 'dual':
386
+ return ((0, validationHelpers_1.isRecord)(value.primary) &&
387
+ value.primary.kind === 'sparkline' &&
388
+ isSparklineCell(value.primary) &&
389
+ (value.secondary === null ||
390
+ ((0, validationHelpers_1.isRecord)(value.secondary) &&
391
+ value.secondary.kind === 'sparkline' &&
392
+ isSparklineCell(value.secondary) &&
393
+ value.secondary.values.length === value.primary.values.length)));
394
+ case 'capacity-bar':
395
+ return isNullableNumber(value.used) && isNullableNumber(value.total) && isText(value.unit) && isText(value.label);
396
+ case 'mix-bar':
397
+ return (Array.isArray(value.parts) &&
398
+ value.parts.every(part => (0, validationHelpers_1.isRecord)(part) && (0, validationHelpers_1.isString)(part.key) && isText(part.label) && (0, validationHelpers_1.isFiniteNumber)(part.value)) &&
399
+ isText(value.unit) &&
400
+ (0, validationHelpers_1.isFiniteNumber)(value.total));
401
+ case 'event-strip':
402
+ return (Array.isArray(value.events) &&
403
+ value.events.every(event => inSet(BACKUP_RUN_STATES, event)) &&
404
+ (0, validationHelpers_1.isDateTime)(value.start) &&
405
+ isOptionalText(value.label));
406
+ case 'weekly-grid':
407
+ return ((0, validationHelpers_1.isString)(value.timezone) && isWeeklyGrid(value.running) && isNullableNumber(value.businessHoursShare) && isNullableNumber(value.offHoursShare));
408
+ default:
409
+ return false;
410
+ }
411
+ };
412
+ exports.isStoryCell = isStoryCell;
413
+ const isStoryColumn = (value) => (0, validationHelpers_1.isRecord)(value) &&
414
+ (0, validationHelpers_1.isString)(value.key) &&
415
+ isText(value.label) &&
416
+ inSet(STORY_CELL_KINDS, value.cell) &&
417
+ isPriority(value.priority) &&
418
+ (value.roleClass === undefined || inSet(COLUMN_ROLE_CLASSES, value.roleClass)) &&
419
+ isOptionalText(value.hint);
420
+ exports.isStoryColumn = isStoryColumn;
421
+ /** Every column has a cell on the row, and the cell's kind matches the column's renderer. */
422
+ const hasCellsForColumns = (row, columns) => columns.every(column => {
423
+ const cell = row.cells[column.key];
424
+ return cell !== undefined && cell.kind === column.cell;
425
+ });
426
+ exports.hasCellsForColumns = hasCellsForColumns;
427
+ // ---- Rows
428
+ /** Re-widen a narrowed row so story-specific fields can be inspected without index-signature casts. */
429
+ const fields = (value) => value;
430
+ /** An AWS account has no tenant, so an AWS story row may carry an empty `tenantId`; every other provider requires one. */
431
+ const isTenantId = (value, provider) => (provider === 'aws' ? isText(value) : (0, validationHelpers_1.isString)(value));
432
+ const isStoryRowBase = (value, provider) => (0, validationHelpers_1.isRecord)(value) &&
433
+ ['resourceId', 'name', 'type', 'subscriptionId', 'companyId', 'currency', 'fingerprint'].every(key => (0, validationHelpers_1.isString)(value[key])) &&
434
+ isTenantId(value.tenantId, provider) &&
435
+ isText(value.location) &&
436
+ isNullableNumber(value.spend30d) &&
437
+ isNullableNumber(value.savingsMax) &&
438
+ (value.ownerResourceId === undefined || (0, validationHelpers_1.isString)(value.ownerResourceId)) &&
439
+ (value.actionable === undefined || isBoolean(value.actionable)) &&
440
+ // An informational row asks for nothing, so it publishes no saving.
441
+ (value.actionable !== false || value.savingsMax === null) &&
442
+ (0, validationHelpers_1.isRecord)(value.cells) &&
443
+ Object.values(value.cells).every(exports.isStoryCell);
444
+ const isOversizedResourceRow = (value, days, provider) => {
445
+ if (!isStoryRowBase(value, provider))
446
+ return false;
447
+ const row = fields(value);
448
+ if (!(0, exports.isUtilizationProfile)(row.profile, days) || (row.betterSku !== undefined && !(0, exports.isSkuOptionSummary)(row.betterSku)))
449
+ return false;
450
+ if (row.recommendedOption !== undefined && !(0, exports.isSkuOption)(row.recommendedOption))
451
+ return false;
452
+ if (row.vmComputeCostComparison !== undefined) {
453
+ const comparison = row.vmComputeCostComparison;
454
+ if (value.type.toLowerCase() !== 'microsoft.compute/virtualmachines' ||
455
+ !(0, validationHelpers_1.isRecord)(comparison) ||
456
+ comparison.basis !== 'billed-compute' ||
457
+ !(0, validationHelpers_1.isFiniteNumber)(comparison.currentCost) ||
458
+ !(0, validationHelpers_1.isFiniteNumber)(comparison.targetCost) ||
459
+ comparison.currentCost < comparison.targetCost ||
460
+ comparison.targetCost < 0 ||
461
+ comparison.currency !== value.currency ||
462
+ !(0, validationHelpers_1.isFiniteNumber)(comparison.windowDays) ||
463
+ !Number.isInteger(comparison.windowDays) ||
464
+ comparison.windowDays <= 0 ||
465
+ value.savingsMax === null ||
466
+ Math.abs(comparison.currentCost - comparison.targetCost - value.savingsMax) > 0.01 ||
467
+ row.recommendedOption === undefined)
468
+ return false;
469
+ }
470
+ if (row.rightSizeStatus !== undefined && !inSet(RIGHT_SIZE_ASSESSMENT_STATUSES, row.rightSizeStatus))
471
+ return false;
472
+ const hasRecommendation = row.betterSku !== undefined || row.recommendedOption !== undefined;
473
+ if (row.rightSizeStatus === 'recommended' && !hasRecommendation)
474
+ return false;
475
+ if (row.rightSizeStatus !== undefined && row.rightSizeStatus !== 'recommended' && hasRecommendation)
476
+ return false;
477
+ if (row.betterSku !== undefined && row.recommendedOption !== undefined) {
478
+ const summary = row.betterSku;
479
+ const option = row.recommendedOption;
480
+ if (summary.kind !== option.kind || summary.label !== option.label || !Object.is(summary.savingsPercent, option.savingsPercent))
481
+ return false;
482
+ if (summary.savingsBasis !== undefined && option.savingsBasis !== undefined && summary.savingsBasis !== option.savingsBasis)
483
+ return false;
484
+ }
485
+ if (row.rightSizeRejection !== undefined && (!(0, exports.isRightSizeRejection)(row.rightSizeRejection) || hasRecommendation))
486
+ return false;
487
+ // A blocked resize is still the recommended size, but it cannot lower the bill now: no saving, never actionable.
488
+ if (row.commitmentBlock !== undefined) {
489
+ if (!(0, exports.isCommitmentBlock)(row.commitmentBlock) || !hasRecommendation || row.savingsMax !== null || row.actionable === true)
490
+ return false;
491
+ }
492
+ return true;
493
+ };
494
+ exports.isOversizedResourceRow = isOversizedResourceRow;
495
+ /** `blocked-by-commitment` and `commitmentBlock` go together; a blocked row publishes no saving and is not actionable. */
496
+ const isCoherentCommitmentBlock = (row) => {
497
+ const blocked = row.verdict === 'blocked-by-commitment';
498
+ if (!blocked)
499
+ return row.commitmentBlock === undefined;
500
+ return (0, exports.isCommitmentBlock)(row.commitmentBlock) && row.savingsMax === null && row.actionable !== true;
501
+ };
502
+ const isRightSkuRow = (value, days, provider) => {
503
+ if (!isStoryRowBase(value, provider))
504
+ return false;
505
+ const row = fields(value);
506
+ return ((0, exports.isSkuOption)(row.current) &&
507
+ Array.isArray(row.options) &&
508
+ row.options.every(exports.isSkuOption) &&
509
+ inSet(RIGHT_SKU_VERDICTS, row.verdict) &&
510
+ (0, validationHelpers_1.isRecord)(row.usage) &&
511
+ isNullableNumber(row.usage.primaryP95) &&
512
+ isNullableNumber(row.usage.secondaryP95) &&
513
+ inSet(TELEMETRY_STATUSES, row.usage.telemetry) &&
514
+ (row.profile === undefined || (0, exports.isUtilizationProfile)(row.profile, days)) &&
515
+ isCoherentCommitmentBlock(row));
516
+ };
517
+ exports.isRightSkuRow = isRightSkuRow;
518
+ /** Schedule candidates always carry a corroborated weekly running profile. */
519
+ const isScheduleCandidateRow = (value, days, provider) => {
520
+ if (!isStoryRowBase(value, provider))
521
+ return false;
522
+ const row = fields(value);
523
+ if (!(0, exports.isUtilizationProfile)(row.profile, days) || !inSet(SCHEDULE_ACTIONS, row.action))
524
+ return false;
525
+ const profile = row.profile;
526
+ return profile.running !== undefined && profile.running.weekly !== undefined && (0, exports.isCorroboratedRunningProfile)(profile.running);
527
+ };
528
+ exports.isScheduleCandidateRow = isScheduleCandidateRow;
529
+ const resilienceRow = (value, provider) => {
530
+ if (!isStoryRowBase(value, provider))
531
+ return false;
532
+ const row = fields(value);
533
+ return ((0, exports.isProtectionProfile)(row.protection) &&
534
+ (row.backupRuns === undefined || (Array.isArray(row.backupRuns) && row.backupRuns.every(run => inSet(BACKUP_RUN_STATES, run)))) &&
535
+ (row.lastRecoveryPointAt === undefined || row.lastRecoveryPointAt === null || (0, validationHelpers_1.isDateTime)(row.lastRecoveryPointAt)) &&
536
+ isOptionalNullableNumber(row.uptimeDays) &&
537
+ (row.activeHealthEvents === undefined || (0, validationHelpers_1.isCount)(row.activeHealthEvents)));
538
+ };
539
+ const hybridBenefitRow = (value, provider) => {
540
+ if (!isStoryRowBase(value, provider))
541
+ return false;
542
+ const row = fields(value);
543
+ return (['productFamily', 'serviceModel', 'configurationStatus', 'technicalEligibilityStatus', 'coverageStatus', 'entitlementStatus'].every(key => (0, validationHelpers_1.isString)(row[key])) &&
544
+ isNullableString(row.edition) &&
545
+ isNullableNumber(row.vCpuCount) &&
546
+ (0, validationHelpers_1.isRecord)(row.decision) &&
547
+ (0, validationHelpers_1.isString)(row.decision.status) &&
548
+ isText(row.decision.headline) &&
549
+ isNullableNumber(row.decision.paybackMonths) &&
550
+ (0, validationHelpers_1.isString)(row.decision.confidence) &&
551
+ (0, validationHelpers_1.isStringArray)(row.reasonCodes) &&
552
+ isNullableNumber(row.licenceObservedStableDays));
553
+ };
554
+ const commitmentRow = (value, provider) => {
555
+ if (!isStoryRowBase(value, provider))
556
+ return false;
557
+ const row = fields(value);
558
+ return ((0, exports.isCommitmentCoverage)(row.coverage) &&
559
+ (row.utilization === undefined || ((0, validationHelpers_1.isRecord)(row.utilization) && (0, validationHelpers_1.isString)(row.utilization.primaryKey) && isNullableNumber(row.utilization.p95))));
560
+ };
561
+ const isResilienceRow = (value) => resilienceRow(value);
562
+ exports.isResilienceRow = isResilienceRow;
563
+ const isHybridBenefitRow = (value) => hybridBenefitRow(value);
564
+ exports.isHybridBenefitRow = isHybridBenefitRow;
565
+ const isCommitmentRow = (value) => commitmentRow(value);
566
+ exports.isCommitmentRow = isCommitmentRow;
567
+ /** Row guard for a story key; unknown keys reject every row. `provider: 'aws'` admits rows with an empty `tenantId`. */
568
+ const storyRowGuard = (storyKey, days, provider) => {
569
+ switch (storyKey) {
570
+ case 'oversized-resources':
571
+ return (row) => (0, exports.isOversizedResourceRow)(row, days, provider);
572
+ case 'right-sku':
573
+ return (row) => (0, exports.isRightSkuRow)(row, days, provider);
574
+ case 'schedule-candidates':
575
+ return (row) => (0, exports.isScheduleCandidateRow)(row, days, provider);
576
+ case 'resilience-recovery':
577
+ return (row) => resilienceRow(row, provider);
578
+ case 'hybrid-benefit':
579
+ return (row) => hybridBenefitRow(row, provider);
580
+ case 'commitments':
581
+ return (row) => commitmentRow(row, provider);
582
+ default:
583
+ return (_row) => false;
584
+ }
585
+ };
586
+ exports.storyRowGuard = storyRowGuard;
587
+ const isStorySummary = (value) => (0, validationHelpers_1.isRecord)(value) &&
588
+ (0, validationHelpers_1.isRecord)(value.counts) &&
589
+ Object.values(value.counts).every(validationHelpers_1.isCount) &&
590
+ (value.actionable === undefined ||
591
+ ((0, validationHelpers_1.isCount)(value.actionable) && (value.counts.resources === undefined || value.actionable <= value.counts.resources))) &&
592
+ isNumberRecord(value.spend) &&
593
+ (0, validationHelpers_1.isString)(value.currency) &&
594
+ isOptionalText(value.note);
595
+ exports.isStorySummary = isStorySummary;
596
+ const isStorySectionFinancials = (value) => value === undefined || ((0, validationHelpers_1.isRecord)(value) && (0, validationHelpers_1.isFiniteNumber)(value.spend30d) && (0, validationHelpers_1.isFiniteNumber)(value.savingsMax) && (0, validationHelpers_1.isString)(value.currency));
597
+ const isStorySection = (value, storyKey, limit, days, provider) => {
598
+ if (!(0, validationHelpers_1.isRecord)(value) || !(0, validationHelpers_1.isString)(value.resourceType) || !(0, validationHelpers_1.isString)(value.family))
599
+ return false;
600
+ if (!isStorySectionFinancials(value.financials))
601
+ return false;
602
+ if (!Array.isArray(value.columns) || !value.columns.every(exports.isStoryColumn))
603
+ return false;
604
+ if (new Set(value.columns.map(column => column.key)).size !== value.columns.length)
605
+ return false;
606
+ if (!(0, validationHelpers_1.isBoundedRows)(value, limit, (0, exports.storyRowGuard)(storyKey, days, provider)))
607
+ return false;
608
+ const columns = value.columns;
609
+ return value.rows.every(row => (0, exports.hasCellsForColumns)(row, columns));
610
+ };
611
+ exports.isStorySection = isStorySection;
612
+ /**
613
+ * A section of a summary-view projection (`view: 'summary'`): the produced columns and counts with the rows removed,
614
+ * so `rows` must be empty while `totalCount` / `omittedCount` keep the values the engine wrote.
615
+ */
616
+ const isStorySummarySection = (value) => {
617
+ if (!(0, validationHelpers_1.isRecord)(value) || !(0, validationHelpers_1.isString)(value.resourceType) || !(0, validationHelpers_1.isString)(value.family))
618
+ return false;
619
+ if (!isStorySectionFinancials(value.financials))
620
+ return false;
621
+ if (!Array.isArray(value.columns) || !value.columns.every(exports.isStoryColumn))
622
+ return false;
623
+ if (new Set(value.columns.map(column => column.key)).size !== value.columns.length)
624
+ return false;
625
+ return (Array.isArray(value.rows) &&
626
+ value.rows.length === 0 &&
627
+ (0, validationHelpers_1.isCount)(value.totalCount) &&
628
+ (0, validationHelpers_1.isCount)(value.omittedCount) &&
629
+ value.omittedCount <= value.totalCount &&
630
+ value.totalCount - value.omittedCount <= utilizationStories_1.STORY_LIMITS.sectionRows);
631
+ };
632
+ exports.isStorySummarySection = isStorySummarySection;
633
+ /** Every row of an artifact belongs to the artifact's scope; a row from another company, tenant or subscription is rejected. */
634
+ const isRowInScope = (row, scope) => row.companyId === scope.companyId && row.tenantId === scope.tenantId && row.subscriptionId === scope.subscriptionId;
635
+ exports.isRowInScope = isRowInScope;
636
+ const sectionFinancialsMatchCurrency = (sections, currency) => sections.every(section => section.financials === undefined || section.financials.currency === currency);
637
+ const isScope = (value) => (0, validationHelpers_1.isRecord)(value) &&
638
+ (value.provider === undefined || inSet(PROVIDERS, value.provider)) &&
639
+ ['companyId', 'subscriptionId', 'currency'].every(key => (0, validationHelpers_1.isString)(value[key])) &&
640
+ isTenantId(value.tenantId, value.provider) &&
641
+ isText(value.displayName);
642
+ const isStoryArtifact = (value, storyKey) => {
643
+ if (!(0, validationHelpers_1.isRecord)(value) || !(0, validationHelpers_1.isString)(value.storyKey) || !STORY_KEY_SET.has(value.storyKey))
644
+ return false;
645
+ if (storyKey !== undefined && value.storyKey !== storyKey)
646
+ return false;
647
+ if (!isScope(value.scope))
648
+ return false;
649
+ if (!(0, validationHelpers_1.isRecord)(value.generation) || !(0, validationHelpers_1.isString)(value.generation.sourceRunId) || !(0, validationHelpers_1.isDateTime)(value.generation.generatedAt))
650
+ return false;
651
+ if (!(0, validationHelpers_1.isRecord)(value.window) ||
652
+ !(0, validationHelpers_1.isDateTime)(value.window.start) ||
653
+ !(0, validationHelpers_1.isDateTime)(value.window.end) ||
654
+ !(0, validationHelpers_1.isCount)(value.window.days) ||
655
+ value.window.days < 1 ||
656
+ !(0, validationHelpers_1.isString)(value.window.timezone))
657
+ return false;
658
+ if (!(0, exports.isStorySummary)(value.summary))
659
+ return false;
660
+ const days = value.window.days;
661
+ const key = value.storyKey;
662
+ if (value.view !== undefined && value.view !== 'summary')
663
+ return false;
664
+ const summaryCurrency = value.summary.currency;
665
+ if (value.view === 'summary') {
666
+ return (Array.isArray(value.sections) &&
667
+ value.sections.every(exports.isStorySummarySection) &&
668
+ sectionFinancialsMatchCurrency(value.sections, summaryCurrency));
669
+ }
670
+ const scope = value.scope;
671
+ if (!Array.isArray(value.sections) ||
672
+ !value.sections.every(section => (0, exports.isStorySection)(section, key, utilizationStories_1.STORY_LIMITS.sectionRows, days, scope.provider)))
673
+ return false;
674
+ const sections = value.sections;
675
+ return sectionFinancialsMatchCurrency(sections, summaryCurrency) && sections.every(section => section.rows.every(row => (0, exports.isRowInScope)(row, scope)));
676
+ };
677
+ exports.isStoryArtifact = isStoryArtifact;
678
+ /** Bounded sample embedded in the evidence pack; rows are validated for `storyKey`, window days are not known here. */
679
+ const isStorySample = (value, storyKey) => {
680
+ if (!(0, validationHelpers_1.isRecord)(value) || !(0, exports.isStorySummary)(value.summary) || !Array.isArray(value.sections))
681
+ return false;
682
+ if (!value.sections.every(section => (0, exports.isStorySection)(section, storyKey, utilizationStories_1.STORY_LIMITS.sampleRows)))
683
+ return false;
684
+ return sectionFinancialsMatchCurrency(value.sections, value.summary.currency);
685
+ };
686
+ exports.isStorySample = isStorySample;
687
+ const isStoryFingerprint = (value) => (0, validationHelpers_1.isRecord)(value) &&
688
+ (0, validationHelpers_1.isString)(value.storyKey) &&
689
+ STORY_KEY_SET.has(value.storyKey) &&
690
+ (0, validationHelpers_1.isString)(value.resourceId) &&
691
+ (0, validationHelpers_1.isString)(value.fingerprint) &&
692
+ isNullableNumber(value.savingsMax);
693
+ exports.isStoryFingerprint = isStoryFingerprint;
694
+ /** Bounded, de-duplicated (storyKey + fingerprint) fingerprint rows for one history period. */
695
+ const isStoryFingerprintRows = (value) => (0, validationHelpers_1.isBoundedRows)(value, utilizationStories_1.STORY_LIMITS.historyFingerprints, exports.isStoryFingerprint) &&
696
+ new Set(value.rows.map(row => `${row.storyKey}|${row.fingerprint}`)).size === value.rows.length;
697
+ exports.isStoryFingerprintRows = isStoryFingerprintRows;
698
+ const isReportingStories = (value) => (0, validationHelpers_1.isRecord)(value) && Object.entries(value).every(([key, sample]) => STORY_KEY_SET.has(key) && (0, exports.isStorySample)(sample, key));
699
+ exports.isReportingStories = isReportingStories;
700
+ // ---- Engine config schemas
701
+ const isUtilizationMetricEntry = (value) => (0, validationHelpers_1.isRecord)(value) &&
702
+ (0, validationHelpers_1.isString)(value.key) &&
703
+ (0, validationHelpers_1.isString)(value.metricName) &&
704
+ isOptionalText(value.collection) &&
705
+ inSet(METRIC_ROLES, value.role) &&
706
+ (value.visual === undefined || inSet(METRIC_VISUALS, value.visual)) &&
707
+ isOptionalText(value.unit) &&
708
+ (value.axisMax === undefined || (0, validationHelpers_1.isFiniteNumber)(value.axisMax)) &&
709
+ isOptionalText(value.axisMaxExpression) &&
710
+ (value.billedOn === undefined || inSet(BILLED_ON, value.billedOn)) &&
711
+ isOptionalText(value.transform) &&
712
+ isOptionalText(value.requires) &&
713
+ isOptionalText(value.when) &&
714
+ (value.dimensions === undefined ||
715
+ ((0, validationHelpers_1.isRecord)(value.dimensions) && inSet(DIMENSION_POLICIES, value.dimensions.policy) && isOptionalText(value.dimensions.name))) &&
716
+ (value.priority === undefined || isPriority(value.priority));
717
+ exports.isUtilizationMetricEntry = isUtilizationMetricEntry;
718
+ const isMetricEntries = (value) => Array.isArray(value) && value.every(exports.isUtilizationMetricEntry);
719
+ const isUtilizationProfileEntry = (value) => (0, validationHelpers_1.isRecord)(value) &&
720
+ (0, validationHelpers_1.isString)(value.family) &&
721
+ (value.producer === undefined || inSet(PRODUCERS, value.producer)) &&
722
+ isOptionalText(value.capacityLabel) &&
723
+ inSet(RUN_MODES, value.runMode) &&
724
+ (value.runningSignal === undefined || isNullableString(value.runningSignal)) &&
725
+ (value.scheduleFit === undefined || isBoolean(value.scheduleFit) || inSet(SCHEDULE_ACTIONS, value.scheduleFit)) &&
726
+ (value.variants === undefined ||
727
+ (Array.isArray(value.variants) &&
728
+ value.variants.every(variant => (0, validationHelpers_1.isRecord)(variant) &&
729
+ (0, validationHelpers_1.isString)(variant.when) &&
730
+ isMetricEntries(variant.metrics) &&
731
+ (variant.verdictRules === undefined || isStringRecord(variant.verdictRules))))) &&
732
+ (value.metrics === undefined || isMetricEntries(value.metrics)) &&
733
+ (value.verdictRules === undefined || isStringRecord(value.verdictRules)) &&
734
+ (value.skuAlternatives === undefined ||
735
+ ((0, validationHelpers_1.isRecord)(value.skuAlternatives) &&
736
+ (0, validationHelpers_1.isString)(value.skuAlternatives.source) &&
737
+ (value.skuAlternatives.capabilityKeys === undefined || (0, validationHelpers_1.isStringArray)(value.skuAlternatives.capabilityKeys))));
738
+ exports.isUtilizationProfileEntry = isUtilizationProfileEntry;
739
+ const isUtilizationProfileConfig = (value) => (0, validationHelpers_1.isRecord)(value) &&
740
+ value.version === 1 &&
741
+ (0, validationHelpers_1.isRecord)(value.defaults) &&
742
+ (0, validationHelpers_1.isCount)(value.defaults.windowDays) &&
743
+ value.defaults.windowDays >= 1 &&
744
+ value.defaults.bucket === 'P1D' &&
745
+ isBoolean(value.defaults.weeklyProfile) &&
746
+ isStringRecord(value.defaults.verdictRules) &&
747
+ (0, validationHelpers_1.isRecord)(value.profiles) &&
748
+ Object.entries(value.profiles).every(([type, entry]) => type === type.toLowerCase() && (0, exports.isUtilizationProfileEntry)(entry));
749
+ exports.isUtilizationProfileConfig = isUtilizationProfileConfig;
750
+ const isResilienceProfileConfig = (value) => (0, validationHelpers_1.isRecord)(value) &&
751
+ value.version === 1 &&
752
+ (0, validationHelpers_1.isRecord)(value.profiles) &&
753
+ Object.entries(value.profiles).every(([type, entry]) => type === type.toLowerCase() &&
754
+ (0, validationHelpers_1.isRecord)(entry) &&
755
+ Array.isArray(entry.capabilities) &&
756
+ entry.capabilities.every(capability => (0, validationHelpers_1.isRecord)(capability) &&
757
+ (0, validationHelpers_1.isString)(capability.key) &&
758
+ isBoolean(capability.required) &&
759
+ (0, validationHelpers_1.isString)(capability.source) &&
760
+ isOptionalText(capability.sla)));
761
+ exports.isResilienceProfileConfig = isResilienceProfileConfig;
762
+ //# sourceMappingURL=utilizationStoriesValidation.js.map