@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,225 @@
1
+ import { ProviderName } from '../common/provider.js';
2
+ import { asRecord, assertExactKeys, assertValue, requiredEnum, requiredString } from '../common/validationHelpers.js';
3
+ import { assertAccount } from './validationHelpers.js';
4
+ const ORGANIZATION_ID = /^o-[a-z0-9]{10,32}$/u;
5
+ const FORBIDDEN_ORGANIZATION_COMMITMENTS_KEYS = new Set([
6
+ 'billingScopeId',
7
+ 'blobPath',
8
+ 'checkpoint',
9
+ 'cloudAccountId',
10
+ 'connectionString',
11
+ 'credentialHealth',
12
+ 'credentialId',
13
+ 'credentialReference',
14
+ 'externalId',
15
+ 'managementGroupId',
16
+ 'pricingQuote',
17
+ 'quotePolicy',
18
+ 'resourceGroupId',
19
+ 'roleArn',
20
+ 'saga',
21
+ 'sasToken',
22
+ 'secretArn',
23
+ 'secretReference',
24
+ 'storageCapacity',
25
+ 'storagePath',
26
+ 'subscription',
27
+ 'subscriptionId',
28
+ 'tenantId',
29
+ 'unlockFinancialLedger',
30
+ ]);
31
+ /** Validates the multi-account identity boundary of an AWS organization commitments view. */
32
+ export function validateAwsOrganizationCommitmentsPlanningViewIdentity(value, expected) {
33
+ const view = asRecord(value, 'organizationCommitmentsPlanning');
34
+ const providerScope = asRecord(view.providerScope, 'organizationCommitmentsPlanning.providerScope');
35
+ assertExactKeys(providerScope, ['providerName', 'providerScopeId', 'scopeType', 'companyId', 'estateId', 'organizationId', 'managementAccountId'], 'organizationCommitmentsPlanning.providerScope');
36
+ assertValue(providerScope.providerName, ProviderName.Aws, 'organizationCommitmentsPlanning.providerScope.providerName');
37
+ assertValue(providerScope.scopeType, 'organization', 'organizationCommitmentsPlanning.providerScope.scopeType');
38
+ const companyId = requiredString(providerScope.companyId, 'organizationCommitmentsPlanning.providerScope.companyId');
39
+ const estateId = requiredString(providerScope.estateId, 'organizationCommitmentsPlanning.providerScope.estateId');
40
+ const organizationId = requiredOrganizationId(providerScope.organizationId, 'organizationCommitmentsPlanning.providerScope.organizationId');
41
+ assertValue(providerScope.providerScopeId, organizationId, 'organizationCommitmentsPlanning.providerScope.providerScopeId');
42
+ const managementAccountId = requiredAccountId(providerScope.managementAccountId, 'organizationCommitmentsPlanning.providerScope.managementAccountId');
43
+ assertValue(expected.companyId, companyId, 'expected.companyId');
44
+ assertValue(expected.estateId, estateId, 'expected.estateId');
45
+ assertValue(expected.organizationId, organizationId, 'expected.organizationId');
46
+ assertValue(expected.managementAccountId, managementAccountId, 'expected.managementAccountId');
47
+ assertValue(expected.manifestRevision, requiredString(view.manifestRevision, 'organizationCommitmentsPlanning.manifestRevision'), 'expected.manifestRevision');
48
+ const accountMembership = validateAccounts(view.accounts, managementAccountId);
49
+ validateExpectedMembers(expected.memberAccountIds, accountMembership.accountIds);
50
+ validateInventory(view.inventory, accountMembership.members);
51
+ validatePayerAggregates(view.payerAggregates, accountMembership.members, managementAccountId);
52
+ validatePurchaseRecommendations(view.purchaseRecommendations, accountMembership.members, managementAccountId);
53
+ validateAttribution(view.allocation, accountMembership.members, false, 'organizationCommitmentsPlanning.allocation');
54
+ validateAttribution(view.resourceAttribution, accountMembership.members, true, 'organizationCommitmentsPlanning.resourceAttribution');
55
+ validateBoundIdentities(view, accountMembership.members, organizationId, companyId, estateId, managementAccountId, 'organizationCommitmentsPlanning');
56
+ }
57
+ function validateAccounts(value, managementAccountId) {
58
+ if (!Array.isArray(value) || value.length === 0)
59
+ throw new Error('organizationCommitmentsPlanning.accounts must be a non-empty array.');
60
+ const accountIds = value.map((entry, index) => {
61
+ const field = `organizationCommitmentsPlanning.accounts[${index}]`;
62
+ const account = asRecord(entry, field);
63
+ assertExactKeys(account, ['accountId', 'displayName', 'role', 'inventoryStatus', 'lastSuccessfulRefreshAt'], field);
64
+ const accountId = requiredAccountId(account.accountId, `${field}.accountId`);
65
+ const role = requiredEnum(account.role, ['management', 'member'], `${field}.role`);
66
+ if ((accountId === managementAccountId) !== (role === 'management')) {
67
+ throw new Error(`${field}.role must identify the exact management account.`);
68
+ }
69
+ return accountId;
70
+ });
71
+ if (new Set(accountIds).size !== accountIds.length)
72
+ throw new Error('organizationCommitmentsPlanning.accounts must not contain duplicates.');
73
+ const sorted = [...accountIds].sort((left, right) => left.localeCompare(right));
74
+ if (JSON.stringify(sorted) !== JSON.stringify(accountIds))
75
+ throw new Error('organizationCommitmentsPlanning.accounts must be sorted by accountId.');
76
+ if (!accountIds.includes(managementAccountId))
77
+ throw new Error('organizationCommitmentsPlanning.accounts must contain the management account.');
78
+ return { accountIds, members: new Set(accountIds) };
79
+ }
80
+ function validateInventory(value, members) {
81
+ if (!Array.isArray(value))
82
+ throw new Error('organizationCommitmentsPlanning.inventory must be an array.');
83
+ value.forEach((entry, index) => {
84
+ const field = `organizationCommitmentsPlanning.inventory[${index}]`;
85
+ const item = asRecord(entry, field);
86
+ assertValue(item.sourceKind, 'aws-native', `${field}.sourceKind`);
87
+ assertValue(item.provider, ProviderName.Aws, `${field}.provider`);
88
+ requiredMember(item.ownerAccountId, members, `${field}.ownerAccountId`);
89
+ if (item.shape !== undefined)
90
+ validateAwsShape(item.shape, `${field}.shape`);
91
+ });
92
+ }
93
+ function validatePayerAggregates(value, members, managementAccountId) {
94
+ if (!Array.isArray(value))
95
+ throw new Error('organizationCommitmentsPlanning.payerAggregates must be an array.');
96
+ value.forEach((entry, index) => {
97
+ const field = `organizationCommitmentsPlanning.payerAggregates[${index}]`;
98
+ const aggregate = asRecord(entry, field);
99
+ const payerAccountId = requiredMember(aggregate.payerAccountId, members, `${field}.payerAccountId`);
100
+ assertValue(payerAccountId, managementAccountId, `${field}.payerAccountId`);
101
+ validateAwsSource(aggregate.source, `${field}.source`);
102
+ });
103
+ }
104
+ function validatePurchaseRecommendations(value, members, managementAccountId) {
105
+ if (value === undefined)
106
+ return;
107
+ if (!Array.isArray(value))
108
+ throw new Error('organizationCommitmentsPlanning.purchaseRecommendations must be an array.');
109
+ value.forEach((entry, index) => {
110
+ const field = `organizationCommitmentsPlanning.purchaseRecommendations[${index}]`;
111
+ const recommendation = asRecord(entry, field);
112
+ assertValue(recommendation.purchaseScope, 'payer', `${field}.purchaseScope`);
113
+ const payerAccountId = requiredMember(recommendation.payerAccountId, members, `${field}.payerAccountId`);
114
+ assertValue(payerAccountId, managementAccountId, `${field}.payerAccountId`);
115
+ if (recommendation.recommendedAccountId !== undefined) {
116
+ requiredMember(recommendation.recommendedAccountId, members, `${field}.recommendedAccountId`);
117
+ }
118
+ validateAwsSource(recommendation.source, `${field}.source`);
119
+ validateAwsShape(recommendation.targetShape, `${field}.targetShape`);
120
+ });
121
+ }
122
+ function validateAttribution(value, members, resource, field) {
123
+ const evidence = asRecord(value, field);
124
+ if (evidence.status === 'unavailable') {
125
+ assertExactKeys(evidence, ['status', 'reason'], field);
126
+ requiredEnum(evidence.reason, ['not-collected', 'not-proved', 'source-unavailable'], `${field}.reason`);
127
+ return;
128
+ }
129
+ assertValue(evidence.status, 'available', `${field}.status`);
130
+ assertExactKeys(evidence, ['status', 'source', 'records'], field);
131
+ validateAwsSource(evidence.source, `${field}.source`, true);
132
+ if (!Array.isArray(evidence.records) || evidence.records.length === 0) {
133
+ throw new Error(`${field}.records must be non-empty when attribution is available.`);
134
+ }
135
+ evidence.records.forEach((entry, index) => {
136
+ const record = asRecord(entry, `${field}.records[${index}]`);
137
+ if (resource) {
138
+ requiredMember(record.accountId, members, `${field}.records[${index}].accountId`);
139
+ }
140
+ else {
141
+ requiredMember(record.beneficiaryAccountId, members, `${field}.records[${index}].beneficiaryAccountId`);
142
+ if (record.ownerAccountId !== undefined)
143
+ requiredMember(record.ownerAccountId, members, `${field}.records[${index}].ownerAccountId`);
144
+ }
145
+ });
146
+ }
147
+ function validateAwsSource(value, field, allowDerived = false) {
148
+ const source = asRecord(value, field);
149
+ const allowed = allowDerived ? ['aws-native', 'spotto-derived'] : ['aws-native'];
150
+ requiredEnum(source.sourceKind, allowed, `${field}.sourceKind`);
151
+ }
152
+ function validateAwsShape(value, field) {
153
+ const shape = asRecord(value, field);
154
+ assertValue(shape.provider, 'aws', `${field}.provider`);
155
+ }
156
+ function validateBoundIdentities(value, members, organizationId, companyId, estateId, managementAccountId, field) {
157
+ if (Array.isArray(value)) {
158
+ value.forEach((entry, index) => validateBoundIdentities(entry, members, organizationId, companyId, estateId, managementAccountId, `${field}[${index}]`));
159
+ return;
160
+ }
161
+ if (!value || typeof value !== 'object') {
162
+ if (typeof value === 'string')
163
+ validateArnAccount(value, members, field);
164
+ return;
165
+ }
166
+ for (const [key, child] of Object.entries(value)) {
167
+ if (FORBIDDEN_ORGANIZATION_COMMITMENTS_KEYS.has(key)) {
168
+ throw new Error(`${field}.${key} is not allowed in an AWS organization commitments artifact.`);
169
+ }
170
+ if (key === 'accountId' || key === 'ownerAccountId' || key === 'beneficiaryAccountId' || key === 'payerAccountId') {
171
+ requiredMember(child, members, `${field}.${key}`);
172
+ }
173
+ if (key === 'organizationId')
174
+ assertValue(child, organizationId, `${field}.${key}`);
175
+ if (key === 'companyId')
176
+ assertValue(child, companyId, `${field}.${key}`);
177
+ if (key === 'estateId')
178
+ assertValue(child, estateId, `${field}.${key}`);
179
+ if (key === 'managementAccountId')
180
+ assertAccount(child, managementAccountId, `${field}.${key}`);
181
+ if (key === 'providerName')
182
+ assertValue(child, ProviderName.Aws, `${field}.${key}`);
183
+ if (key === 'provider')
184
+ assertValue(child, 'aws', `${field}.${key}`);
185
+ if (key === 'sourceKind' && child === 'azure-native') {
186
+ throw new Error(`${field}.${key} cannot contain Azure-native evidence.`);
187
+ }
188
+ validateBoundIdentities(child, members, organizationId, companyId, estateId, managementAccountId, `${field}.${key}`);
189
+ }
190
+ }
191
+ function validateArnAccount(value, members, field) {
192
+ if (!value.startsWith('arn:'))
193
+ return;
194
+ const arnAccountId = value.split(':', 6)[4];
195
+ if (arnAccountId && !members.has(arnAccountId))
196
+ throw new Error(`${field} contains an ARN outside the declared organization membership.`);
197
+ }
198
+ function requiredMember(value, members, field) {
199
+ const accountId = requiredAccountId(value, field);
200
+ if (!members.has(accountId))
201
+ throw new Error(`${field} must belong to the declared organization membership.`);
202
+ return accountId;
203
+ }
204
+ function requiredAccountId(value, field) {
205
+ const accountId = requiredString(value, field);
206
+ assertAccount(value, accountId, field);
207
+ return accountId;
208
+ }
209
+ function requiredOrganizationId(value, field) {
210
+ const organizationId = requiredString(value, field);
211
+ if (!ORGANIZATION_ID.test(organizationId))
212
+ throw new Error(`${field} must be a canonical AWS organization id.`);
213
+ return organizationId;
214
+ }
215
+ function validateExpectedMembers(expected, actual) {
216
+ const normalized = expected.map((accountId, index) => requiredAccountId(accountId, `expected.memberAccountIds[${index}]`));
217
+ if (new Set(normalized).size !== normalized.length)
218
+ throw new Error('expected.memberAccountIds must not contain duplicates.');
219
+ const sorted = [...normalized].sort((left, right) => left.localeCompare(right));
220
+ if (JSON.stringify(sorted) !== JSON.stringify(normalized))
221
+ throw new Error('expected.memberAccountIds must be sorted.');
222
+ if (JSON.stringify(normalized) !== JSON.stringify(actual)) {
223
+ throw new Error('expected.memberAccountIds must match the artifact membership exactly.');
224
+ }
225
+ }
@@ -0,0 +1,405 @@
1
+ import { assertCommitmentsFreshnessDiagnostics } from '../azure/commitmentsPlanningValidation.js';
2
+ import { AWS_ORGANIZATION_COMMITMENTS_ATTRIBUTION_UNAVAILABLE_REASONS, } from './organizationCommitments.js';
3
+ import { validateAwsOrganizationCommitmentsPlanningViewIdentity, } from './organizationCommitmentsValidation.js';
4
+ import { AWS_ORGANIZATION_COMMITMENTS_PLANNING_LOGICAL_NAME, AWS_ORGANIZATION_COMMITMENTS_PUBLIC_ARTIFACT_SCHEMA_VERSION, } from './portalOrganizationCommitmentsPlanningPublicArtifacts.js';
5
+ import { AWS_PORTAL_PUBLIC_ARTIFACT_SCHEMA_VERSION } from './publicArtifacts.js';
6
+ import { asRecord, assertExactKeys, assertValue, finiteNumber, isoTimestamp, requiredEnum, requiredString, validateGeneration, } from '../common/validationHelpers.js';
7
+ import { assertAwsPublicJson } from './validationHelpers.js';
8
+ const TOP_LEVEL_KEYS = [
9
+ 'schemaVersion',
10
+ 'portalSchemaVersion',
11
+ 'provider',
12
+ 'artifactType',
13
+ 'artifactGeneration',
14
+ 'logicalName',
15
+ 'manifestRevision',
16
+ 'version',
17
+ 'generatedAt',
18
+ 'month',
19
+ 'providerScope',
20
+ 'accounts',
21
+ 'utilizationSummary',
22
+ 'expirySummary',
23
+ 'inventory',
24
+ 'payerAggregates',
25
+ 'sharingPosture',
26
+ 'pricingContext',
27
+ 'freshness',
28
+ 'purchaseRecommendations',
29
+ 'allocation',
30
+ 'resourceAttribution',
31
+ ];
32
+ /** Validates one untrusted organization Commitments Planning view without its Portal envelope. */
33
+ export function validateAwsOrganizationCommitmentsPlanningView(value, expected) {
34
+ validateAwsOrganizationCommitmentsPlanningViewIdentity(value, expected);
35
+ validateBody(value);
36
+ assertAwsPublicJson(value, 'organizationCommitmentsPlanning');
37
+ return value;
38
+ }
39
+ /** Validates one untrusted immutable AWS organization Commitments Planning artifact. */
40
+ export function validateAwsPortalOrganizationCommitmentsPlanningArtifact(value, expected) {
41
+ const artifact = asRecord(value, 'artifact');
42
+ assertExactKeys(artifact, TOP_LEVEL_KEYS, 'artifact');
43
+ assertValue(artifact.schemaVersion, AWS_ORGANIZATION_COMMITMENTS_PUBLIC_ARTIFACT_SCHEMA_VERSION, 'artifact.schemaVersion');
44
+ assertValue(artifact.portalSchemaVersion, AWS_PORTAL_PUBLIC_ARTIFACT_SCHEMA_VERSION, 'artifact.portalSchemaVersion');
45
+ assertValue(artifact.provider, 'aws', 'artifact.provider');
46
+ assertValue(artifact.artifactType, 'organization-commitments-planning', 'artifact.artifactType');
47
+ assertValue(artifact.logicalName, AWS_ORGANIZATION_COMMITMENTS_PLANNING_LOGICAL_NAME, 'artifact.logicalName');
48
+ requiredString(artifact.manifestRevision, 'artifact.manifestRevision');
49
+ assertValue(artifact.version, '1.0', 'artifact.version');
50
+ const generation = validateGeneration(artifact.artifactGeneration, 'artifact.artifactGeneration');
51
+ const generatedAt = isoTimestamp(artifact.generatedAt, 'artifact.generatedAt');
52
+ if (Date.parse(generatedAt) > Date.parse(generation.generatedAt)) {
53
+ throw new Error('artifact.generatedAt must not be newer than the Portal generation.');
54
+ }
55
+ if (artifact.month !== undefined)
56
+ requiredString(artifact.month, 'artifact.month');
57
+ validateAwsOrganizationCommitmentsPlanningView(artifact, expected);
58
+ assertAwsPublicJson(artifact, 'artifact');
59
+ return value;
60
+ }
61
+ function validateBody(view) {
62
+ records(view.accounts, 'artifact.accounts', validateAccount);
63
+ validateUtilizationSummary(view.utilizationSummary, 'artifact.utilizationSummary');
64
+ exact(view.expirySummary, ['expired', 'expiring30d', 'expiring60d', 'expiring90d', 'expiring180d'], 'artifact.expirySummary');
65
+ records(view.inventory, 'artifact.inventory', validateInventory);
66
+ records(view.payerAggregates, 'artifact.payerAggregates', validatePayerAggregate);
67
+ validateSharingPosture(view.sharingPosture, 'artifact.sharingPosture');
68
+ validatePricingContext(view.pricingContext, 'artifact.pricingContext');
69
+ optionalRecord(view.freshness, 'artifact.freshness', validateFreshness);
70
+ optionalRecords(view.purchaseRecommendations, 'artifact.purchaseRecommendations', validatePurchaseRecommendation);
71
+ validateAttribution(view.allocation, 'artifact.allocation', validateAllocationRecord);
72
+ validateAttribution(view.resourceAttribution, 'artifact.resourceAttribution', validateResourceAttributionRecord);
73
+ }
74
+ function validateSharingPosture(value, field) {
75
+ const posture = exact(value, ['status', 'reason'], field);
76
+ assertValue(posture.status, 'unknown', `${field}.status`);
77
+ assertValue(posture.reason, 'not-collected', `${field}.reason`);
78
+ }
79
+ function validateAccount(value, field) {
80
+ const account = exact(value, ['accountId', 'displayName', 'role', 'inventoryStatus', 'lastSuccessfulRefreshAt'], field);
81
+ requiredString(account.accountId, `${field}.accountId`);
82
+ optionalString(account.displayName, `${field}.displayName`);
83
+ requiredEnum(account.role, ['management', 'member'], `${field}.role`);
84
+ requiredEnum(account.inventoryStatus, ['current', 'stale', 'partial', 'unavailable'], `${field}.inventoryStatus`);
85
+ optionalTimestamp(account.lastSuccessfulRefreshAt, `${field}.lastSuccessfulRefreshAt`);
86
+ }
87
+ function validateUtilizationSummary(value, field) {
88
+ const summary = exact(value, ['total', 'withData', 'sevenDayAverage', 'thirtyDayAverage', 'sevenDayAggregates', 'thirtyDayAggregates', 'byBenefitType'], field);
89
+ nonNegative(summary.total, `${field}.total`);
90
+ nonNegative(summary.withData, `${field}.withData`);
91
+ optionalNumber(summary.sevenDayAverage, `${field}.sevenDayAverage`);
92
+ optionalNumber(summary.thirtyDayAverage, `${field}.thirtyDayAverage`);
93
+ optionalRecords(summary.sevenDayAggregates, `${field}.sevenDayAggregates`, validateWeightedAggregate);
94
+ optionalRecords(summary.thirtyDayAggregates, `${field}.thirtyDayAggregates`, validateWeightedAggregate);
95
+ records(summary.byBenefitType, `${field}.byBenefitType`, (entry, itemField) => {
96
+ const item = exact(entry, ['benefitType', 'total', 'withData', 'sevenDayAverage', 'thirtyDayAverage', 'sevenDayAggregates', 'thirtyDayAggregates'], itemField);
97
+ requiredEnum(item.benefitType, ['reservation', 'savings-plan'], `${itemField}.benefitType`);
98
+ nonNegative(item.total, `${itemField}.total`);
99
+ nonNegative(item.withData, `${itemField}.withData`);
100
+ optionalNumber(item.sevenDayAverage, `${itemField}.sevenDayAverage`);
101
+ optionalNumber(item.thirtyDayAverage, `${itemField}.thirtyDayAverage`);
102
+ optionalRecords(item.sevenDayAggregates, `${itemField}.sevenDayAggregates`, validateWeightedAggregate);
103
+ optionalRecords(item.thirtyDayAggregates, `${itemField}.thirtyDayAggregates`, validateWeightedAggregate);
104
+ });
105
+ }
106
+ function validateWeightedAggregate(value, field) {
107
+ const aggregate = exact(value, ['used', 'reserved', 'percentage', 'sampleCount', 'unit', 'currency'], field);
108
+ finiteNumber(aggregate.used, `${field}.used`);
109
+ finiteNumber(aggregate.reserved, `${field}.reserved`);
110
+ optionalNumber(aggregate.percentage, `${field}.percentage`);
111
+ if (aggregate.sampleCount !== undefined)
112
+ nonNegative(aggregate.sampleCount, `${field}.sampleCount`);
113
+ requiredEnum(aggregate.unit, ['hours', 'quantity', 'currency'], `${field}.unit`);
114
+ optionalString(aggregate.currency, `${field}.currency`);
115
+ }
116
+ function validateInventory(value, field) {
117
+ const item = exact(value, [
118
+ 'id',
119
+ 'benefitType',
120
+ 'commitmentFamily',
121
+ 'sourceKind',
122
+ 'sourceId',
123
+ 'provider',
124
+ 'ownerAccountId',
125
+ 'shape',
126
+ 'scope',
127
+ 'type',
128
+ 'displayName',
129
+ 'status',
130
+ 'purchaseDate',
131
+ 'expiryDate',
132
+ 'daysToExpiry',
133
+ 'commitmentAmount',
134
+ 'commitmentCurrencyCode',
135
+ 'commitmentGrain',
136
+ 'commitmentUnit',
137
+ 'skuName',
138
+ 'location',
139
+ 'term',
140
+ 'termMonths',
141
+ 'billingPlan',
142
+ 'utilization',
143
+ ], field);
144
+ requiredString(item.id, `${field}.id`);
145
+ requiredEnum(item.benefitType, ['reservation', 'savings-plan'], `${field}.benefitType`);
146
+ optionalString(item.commitmentFamily, `${field}.commitmentFamily`);
147
+ assertValue(item.sourceKind, 'aws-native', `${field}.sourceKind`);
148
+ optionalString(item.sourceId, `${field}.sourceId`);
149
+ assertValue(item.provider, 'aws', `${field}.provider`);
150
+ requiredString(item.ownerAccountId, `${field}.ownerAccountId`);
151
+ optionalRecord(item.shape, `${field}.shape`, validateShape);
152
+ requiredEnum(item.scope, ['Shared', 'Single', 'ManagementGroup', 'Unknown'], `${field}.scope`);
153
+ requiredString(item.type, `${field}.type`);
154
+ optionalString(item.displayName, `${field}.displayName`);
155
+ requiredString(item.status, `${field}.status`);
156
+ optionalString(item.purchaseDate, `${field}.purchaseDate`);
157
+ optionalString(item.expiryDate, `${field}.expiryDate`);
158
+ optionalNumber(item.daysToExpiry, `${field}.daysToExpiry`);
159
+ optionalNumber(item.commitmentAmount, `${field}.commitmentAmount`);
160
+ optionalString(item.commitmentCurrencyCode, `${field}.commitmentCurrencyCode`);
161
+ optionalString(item.commitmentGrain, `${field}.commitmentGrain`);
162
+ optionalString(item.commitmentUnit, `${field}.commitmentUnit`);
163
+ optionalString(item.skuName, `${field}.skuName`);
164
+ optionalString(item.location, `${field}.location`);
165
+ optionalString(item.term, `${field}.term`);
166
+ optionalNumber(item.termMonths, `${field}.termMonths`);
167
+ optionalString(item.billingPlan, `${field}.billingPlan`);
168
+ optionalRecord(item.utilization, `${field}.utilization`, validateUtilization);
169
+ }
170
+ function validatePayerAggregate(value, field) {
171
+ const aggregate = exact(value, [
172
+ 'benefitType',
173
+ 'commitmentFamily',
174
+ 'payerAccountId',
175
+ 'windowStart',
176
+ 'windowEnd',
177
+ 'eligibleCost',
178
+ 'coveredCost',
179
+ 'uncoveredCost',
180
+ 'coveragePercent',
181
+ 'utilization',
182
+ 'source',
183
+ ], field);
184
+ requiredEnum(aggregate.benefitType, ['reservation', 'savings-plan'], `${field}.benefitType`);
185
+ requiredString(aggregate.commitmentFamily, `${field}.commitmentFamily`);
186
+ requiredString(aggregate.payerAccountId, `${field}.payerAccountId`);
187
+ requiredString(aggregate.windowStart, `${field}.windowStart`);
188
+ requiredString(aggregate.windowEnd, `${field}.windowEnd`);
189
+ optionalRecord(aggregate.eligibleCost, `${field}.eligibleCost`, validateMoney);
190
+ optionalRecord(aggregate.coveredCost, `${field}.coveredCost`, validateMoney);
191
+ optionalRecord(aggregate.uncoveredCost, `${field}.uncoveredCost`, validateMoney);
192
+ optionalNumber(aggregate.coveragePercent, `${field}.coveragePercent`);
193
+ optionalRecord(aggregate.utilization, `${field}.utilization`, validateUtilization);
194
+ validateSource(aggregate.source, `${field}.source`, false);
195
+ }
196
+ function validatePurchaseRecommendation(value, field) {
197
+ const recommendation = exact(value, [
198
+ 'id',
199
+ 'groupKey',
200
+ 'commitmentFamily',
201
+ 'action',
202
+ 'purchaseScope',
203
+ 'payerAccountId',
204
+ 'recommendedAccountId',
205
+ 'source',
206
+ 'targetShape',
207
+ 'title',
208
+ 'description',
209
+ 'confidence',
210
+ 'riskLevel',
211
+ 'termMonths',
212
+ 'quantity',
213
+ 'estimatedAnnualSavings',
214
+ 'estimatedAnnualCost',
215
+ 'estimatedTermSavings',
216
+ 'estimatedTermCost',
217
+ 'notes',
218
+ ], field);
219
+ requiredString(recommendation.id, `${field}.id`);
220
+ requiredString(recommendation.groupKey, `${field}.groupKey`);
221
+ requiredString(recommendation.commitmentFamily, `${field}.commitmentFamily`);
222
+ requiredEnum(recommendation.action, ['buy', 'unlock', 'savings-plan', 'none'], `${field}.action`);
223
+ assertValue(recommendation.purchaseScope, 'payer', `${field}.purchaseScope`);
224
+ requiredString(recommendation.payerAccountId, `${field}.payerAccountId`);
225
+ optionalString(recommendation.recommendedAccountId, `${field}.recommendedAccountId`);
226
+ validateSource(recommendation.source, `${field}.source`, false);
227
+ validateShape(recommendation.targetShape, `${field}.targetShape`);
228
+ optionalString(recommendation.title, `${field}.title`);
229
+ optionalString(recommendation.description, `${field}.description`);
230
+ optionalString(recommendation.confidence, `${field}.confidence`);
231
+ optionalString(recommendation.riskLevel, `${field}.riskLevel`);
232
+ optionalNumber(recommendation.termMonths, `${field}.termMonths`);
233
+ optionalNumber(recommendation.quantity, `${field}.quantity`);
234
+ optionalRecord(recommendation.estimatedAnnualSavings, `${field}.estimatedAnnualSavings`, validateMoney);
235
+ optionalRecord(recommendation.estimatedAnnualCost, `${field}.estimatedAnnualCost`, validateMoney);
236
+ optionalRecord(recommendation.estimatedTermSavings, `${field}.estimatedTermSavings`, validateMoney);
237
+ optionalRecord(recommendation.estimatedTermCost, `${field}.estimatedTermCost`, validateMoney);
238
+ optionalStrings(recommendation.notes, `${field}.notes`);
239
+ }
240
+ function validateAttribution(value, field, validateRecord) {
241
+ const evidence = asRecord(value, field);
242
+ if (evidence.status === 'unavailable') {
243
+ assertExactKeys(evidence, ['status', 'reason'], field);
244
+ requiredEnum(evidence.reason, AWS_ORGANIZATION_COMMITMENTS_ATTRIBUTION_UNAVAILABLE_REASONS, `${field}.reason`);
245
+ return;
246
+ }
247
+ assertValue(evidence.status, 'available', `${field}.status`);
248
+ assertExactKeys(evidence, ['status', 'source', 'records'], field);
249
+ validateSource(evidence.source, `${field}.source`, true);
250
+ records(evidence.records, `${field}.records`, validateRecord, true);
251
+ }
252
+ function validateAllocationRecord(value, field) {
253
+ const record = exact(value, [
254
+ 'beneficiaryAccountId',
255
+ 'ownerAccountId',
256
+ 'commitmentId',
257
+ 'benefitType',
258
+ 'commitmentFamily',
259
+ 'windowStart',
260
+ 'windowEnd',
261
+ 'eligibleCost',
262
+ 'coveredCost',
263
+ 'uncoveredCost',
264
+ ], field);
265
+ requiredString(record.beneficiaryAccountId, `${field}.beneficiaryAccountId`);
266
+ optionalString(record.ownerAccountId, `${field}.ownerAccountId`);
267
+ optionalString(record.commitmentId, `${field}.commitmentId`);
268
+ requiredEnum(record.benefitType, ['reservation', 'savings-plan'], `${field}.benefitType`);
269
+ requiredString(record.commitmentFamily, `${field}.commitmentFamily`);
270
+ requiredString(record.windowStart, `${field}.windowStart`);
271
+ requiredString(record.windowEnd, `${field}.windowEnd`);
272
+ optionalRecord(record.eligibleCost, `${field}.eligibleCost`, validateMoney);
273
+ optionalRecord(record.coveredCost, `${field}.coveredCost`, validateMoney);
274
+ optionalRecord(record.uncoveredCost, `${field}.uncoveredCost`, validateMoney);
275
+ }
276
+ function validateResourceAttributionRecord(value, field) {
277
+ const record = exact(value, ['accountId', 'resourceId', 'resourceName', 'resourceType', 'benefitIds', 'windowStart', 'windowEnd', 'coveredCost'], field);
278
+ requiredString(record.accountId, `${field}.accountId`);
279
+ requiredString(record.resourceId, `${field}.resourceId`);
280
+ optionalString(record.resourceName, `${field}.resourceName`);
281
+ optionalString(record.resourceType, `${field}.resourceType`);
282
+ strings(record.benefitIds, `${field}.benefitIds`);
283
+ requiredString(record.windowStart, `${field}.windowStart`);
284
+ requiredString(record.windowEnd, `${field}.windowEnd`);
285
+ optionalRecord(record.coveredCost, `${field}.coveredCost`, validateMoney);
286
+ }
287
+ function validateShape(value, field) {
288
+ const shape = exact(value, [
289
+ 'provider',
290
+ 'resourceType',
291
+ 'commitmentFamily',
292
+ 'skuName',
293
+ 'normalizedSkuName',
294
+ 'location',
295
+ 'region',
296
+ 'availabilityZone',
297
+ 'platform',
298
+ 'reservationProductName',
299
+ 'reservedResourceType',
300
+ 'meterCategory',
301
+ 'meterSubCategory',
302
+ 'meterName',
303
+ 'unit',
304
+ 'attributes',
305
+ ], field);
306
+ assertValue(shape.provider, 'aws', `${field}.provider`);
307
+ if (shape.attributes !== undefined)
308
+ asRecord(shape.attributes, `${field}.attributes`);
309
+ }
310
+ function validateSource(value, field, allowDerived) {
311
+ const source = exact(value, ['sourceKind', 'sourceId', 'sourceName', 'generatedAt', 'observedAt', 'notes'], field);
312
+ requiredEnum(source.sourceKind, allowDerived ? ['aws-native', 'spotto-derived'] : ['aws-native'], `${field}.sourceKind`);
313
+ optionalString(source.sourceId, `${field}.sourceId`);
314
+ optionalString(source.sourceName, `${field}.sourceName`);
315
+ optionalTimestamp(source.generatedAt, `${field}.generatedAt`);
316
+ optionalTimestamp(source.observedAt, `${field}.observedAt`);
317
+ optionalStrings(source.notes, `${field}.notes`);
318
+ }
319
+ function validateMoney(value, field) {
320
+ const money = exact(value, ['amount', 'currency', 'source', 'windowStart', 'windowEnd', 'flags'], field);
321
+ finiteNumber(money.amount, `${field}.amount`);
322
+ requiredString(money.currency, `${field}.currency`);
323
+ optionalString(money.source, `${field}.source`);
324
+ optionalString(money.windowStart, `${field}.windowStart`);
325
+ optionalString(money.windowEnd, `${field}.windowEnd`);
326
+ optionalStrings(money.flags, `${field}.flags`);
327
+ }
328
+ function validateUtilization(value, field) {
329
+ const utilization = exact(value, ['trend', 'oneDay', 'sevenDay', 'thirtyDay', 'source'], field);
330
+ optionalString(utilization.trend, `${field}.trend`);
331
+ optionalNumber(utilization.oneDay, `${field}.oneDay`);
332
+ optionalNumber(utilization.sevenDay, `${field}.sevenDay`);
333
+ optionalNumber(utilization.thirtyDay, `${field}.thirtyDay`);
334
+ optionalString(utilization.source, `${field}.source`);
335
+ }
336
+ function validatePricingContext(value, field) {
337
+ const pricing = exact(value, ['source', 'currency', 'assumptions', 'confidenceNotes', 'calculatorDeepLink'], field);
338
+ requiredEnum(pricing.source, ['retail', 'negotiated', 'unknown', 'recommendation-apis'], `${field}.source`);
339
+ optionalString(pricing.currency, `${field}.currency`);
340
+ optionalStrings(pricing.assumptions, `${field}.assumptions`);
341
+ optionalString(pricing.confidenceNotes, `${field}.confidenceNotes`);
342
+ optionalString(pricing.calculatorDeepLink, `${field}.calculatorDeepLink`);
343
+ }
344
+ function validateFreshness(value, field) {
345
+ const freshness = exact(value, ['status', 'generatedAt', 'entries', 'warnings'], field);
346
+ requiredEnum(freshness.status, ['current', 'stale', 'partial', 'unavailable'], `${field}.status`);
347
+ isoTimestamp(freshness.generatedAt, `${field}.generatedAt`);
348
+ records(freshness.entries, `${field}.entries`, (entry, itemField) => {
349
+ const item = exact(entry, ['section', 'status', 'generatedAt', 'observedAt', 'lastSuccessfulSyncAt', 'ageHours', 'reasonCode', 'reason', 'sourceKind'], itemField);
350
+ requiredString(item.section, `${itemField}.section`);
351
+ requiredEnum(item.status, ['current', 'stale', 'partial', 'unavailable'], `${itemField}.status`);
352
+ optionalTimestamp(item.generatedAt, `${itemField}.generatedAt`);
353
+ optionalTimestamp(item.observedAt, `${itemField}.observedAt`);
354
+ optionalTimestamp(item.lastSuccessfulSyncAt, `${itemField}.lastSuccessfulSyncAt`);
355
+ optionalString(item.reason, `${itemField}.reason`);
356
+ optionalString(item.sourceKind, `${itemField}.sourceKind`);
357
+ assertCommitmentsFreshnessDiagnostics(item, itemField);
358
+ });
359
+ optionalStrings(freshness.warnings, `${field}.warnings`);
360
+ }
361
+ function exact(value, allowed, field) {
362
+ const record = asRecord(value, field);
363
+ assertExactKeys(record, allowed, field);
364
+ return record;
365
+ }
366
+ function records(value, field, validate, nonEmpty = false) {
367
+ if (!Array.isArray(value) || (nonEmpty && value.length === 0)) {
368
+ throw new Error(`${field} must be ${nonEmpty ? 'a non-empty' : 'an'} array.`);
369
+ }
370
+ value.forEach((entry, index) => validate(entry, `${field}[${index}]`));
371
+ }
372
+ function optionalRecords(value, field, validate) {
373
+ if (value !== undefined)
374
+ records(value, field, validate);
375
+ }
376
+ function optionalRecord(value, field, validate) {
377
+ if (value !== undefined)
378
+ validate(value, field);
379
+ }
380
+ function strings(value, field) {
381
+ if (!Array.isArray(value))
382
+ throw new Error(`${field} must be an array.`);
383
+ value.forEach((entry, index) => requiredString(entry, `${field}[${index}]`));
384
+ }
385
+ function optionalStrings(value, field) {
386
+ if (value !== undefined)
387
+ strings(value, field);
388
+ }
389
+ function optionalString(value, field) {
390
+ if (value !== undefined)
391
+ requiredString(value, field);
392
+ }
393
+ function optionalTimestamp(value, field) {
394
+ if (value !== undefined)
395
+ isoTimestamp(value, field);
396
+ }
397
+ function optionalNumber(value, field) {
398
+ if (value !== undefined)
399
+ finiteNumber(value, field);
400
+ }
401
+ function nonNegative(value, field) {
402
+ const number = finiteNumber(value, field);
403
+ if (number < 0)
404
+ throw new Error(`${field} must not be negative.`);
405
+ }
@@ -0,0 +1,2 @@
1
+ export const AWS_ORGANIZATION_COMMITMENTS_PUBLIC_ARTIFACT_SCHEMA_VERSION = 1;
2
+ export const AWS_ORGANIZATION_COMMITMENTS_PLANNING_LOGICAL_NAME = 'organization-commitments-planning.json.gz';
@@ -1,4 +1,6 @@
1
1
  export const AWS_PUBLIC_ARTIFACT_SCHEMA_VERSION = 1;
2
+ /** Portal envelope version shared by the AWS Portal artifacts. */
3
+ export const AWS_PORTAL_PUBLIC_ARTIFACT_SCHEMA_VERSION = 1;
2
4
  export const AWS_PUBLIC_ARTIFACT_TYPES = [
3
5
  'resource-collection',
4
6
  'resource-collection-history',
@@ -1 +1,4 @@
1
- export { validateAwsPortalRelationshipArtifact } from './portalRelationshipPublicArtifactValidation.js';
1
+ /** Browser-safe entry for the AWS resource graph contract, its validator, and the provider-neutral graph vocabulary. */
2
+ export * from './resourceGraph.js';
3
+ export * from '../common/resourceGraph.js';
4
+ export * from '../common/resourceIdentity.js';
@@ -3,9 +3,11 @@ export const AWS_COMMAND_SCHEMA_VERSION = 1;
3
3
  /** Canonical provider wire value for AWS commands. */
4
4
  export const AWS_COMMAND_PROVIDER = 'aws';
5
5
  /** Entities handled by AWS estate orchestration. */
6
- export const AWS_COMMAND_ENTITIES = ['estate', 'account', 'billing-source'];
6
+ export const AWS_COMMAND_ENTITIES = ['estate', 'account', 'billing-source', 'organization-commitments', 'scheduler'];
7
7
  /** Actions supported across AWS estate orchestration commands. */
8
- export const AWS_COMMAND_ACTIONS = ['reconcile', 'refresh', 'delete'];
8
+ export const AWS_COMMAND_ACTIONS = ['reconcile', 'refresh', 'delete', 'tick'];
9
+ /** Scheduled AWS scan cadences emitted by the enqueue-only API scheduler. */
10
+ export const AWS_SCHEDULED_REFRESH_SCAN_KINDS = ['full', 'components'];
9
11
  /** Credential-shaped keys forbidden from shared AWS configuration and commands. */
10
12
  export const AWS_FORBIDDEN_CREDENTIAL_FIELDS = [
11
13
  'accessKeyId',