@spottoai/types-package 1.0.2-dev1138.1 → 1.0.2-dev1138.12

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 (523) hide show
  1. package/README.md +9 -0
  2. package/dist/accounts/accounts.d.ts +84 -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 +142 -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 +1 -0
  19. package/dist/accounts/index.d.ts.map +1 -1
  20. package/dist/accounts/index.js +1 -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/validation.d.ts +24 -0
  26. package/dist/accounts/validation.d.ts.map +1 -1
  27. package/dist/ai/conversationHistory.d.ts +52 -0
  28. package/dist/ai/conversationHistory.d.ts.map +1 -0
  29. package/dist/ai/conversationHistory.js +10 -0
  30. package/dist/ai/conversationHistory.js.map +1 -0
  31. package/dist/ai/grounding.d.ts +41 -0
  32. package/dist/ai/grounding.d.ts.map +1 -0
  33. package/dist/ai/grounding.js +86 -0
  34. package/dist/ai/grounding.js.map +1 -0
  35. package/dist/ai/index.d.ts +302 -6
  36. package/dist/ai/index.d.ts.map +1 -1
  37. package/dist/ai/index.js +25 -0
  38. package/dist/ai/index.js.map +1 -1
  39. package/dist/ai/workspaceArtifacts.d.ts +587 -0
  40. package/dist/ai/workspaceArtifacts.d.ts.map +1 -0
  41. package/dist/ai/workspaceArtifacts.js +162 -0
  42. package/dist/ai/workspaceArtifacts.js.map +1 -0
  43. package/dist/aws/commitments-planning.d.ts +5 -0
  44. package/dist/aws/commitments-planning.d.ts.map +1 -1
  45. package/dist/aws/commitments-planning.js +19 -0
  46. package/dist/aws/commitments-planning.js.map +1 -1
  47. package/dist/aws/estates.d.ts +1 -1
  48. package/dist/aws/estates.d.ts.map +1 -1
  49. package/dist/aws/estates.js +7 -1
  50. package/dist/aws/estates.js.map +1 -1
  51. package/dist/aws/index.d.ts +5 -0
  52. package/dist/aws/index.d.ts.map +1 -1
  53. package/dist/aws/index.js +5 -0
  54. package/dist/aws/index.js.map +1 -1
  55. package/dist/aws/onboarding.d.ts +3 -0
  56. package/dist/aws/onboarding.d.ts.map +1 -1
  57. package/dist/aws/organizationCommitments.d.ts +260 -0
  58. package/dist/aws/organizationCommitments.d.ts.map +1 -0
  59. package/dist/aws/organizationCommitments.js +53 -0
  60. package/dist/aws/organizationCommitments.js.map +1 -0
  61. package/dist/aws/organizationCommitmentsApiValidation.d.ts +21 -0
  62. package/dist/aws/organizationCommitmentsApiValidation.d.ts.map +1 -0
  63. package/dist/aws/organizationCommitmentsApiValidation.js +226 -0
  64. package/dist/aws/organizationCommitmentsApiValidation.js.map +1 -0
  65. package/dist/aws/organizationCommitmentsValidation.d.ts +12 -0
  66. package/dist/aws/organizationCommitmentsValidation.d.ts.map +1 -0
  67. package/dist/aws/organizationCommitmentsValidation.js +228 -0
  68. package/dist/aws/organizationCommitmentsValidation.js.map +1 -0
  69. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.d.ts +9 -0
  70. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.d.ts.map +1 -0
  71. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.js +407 -0
  72. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.js.map +1 -0
  73. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.d.ts +17 -0
  74. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.d.ts.map +1 -0
  75. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.js +6 -0
  76. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.js.map +1 -0
  77. package/dist/aws/requests.d.ts +13 -2
  78. package/dist/aws/requests.d.ts.map +1 -1
  79. package/dist/aws/requests.js +1 -1
  80. package/dist/aws/requests.js.map +1 -1
  81. package/dist/azure/activityLogAnalysis.d.ts +320 -0
  82. package/dist/azure/activityLogAnalysis.d.ts.map +1 -0
  83. package/dist/azure/activityLogAnalysis.js +70 -0
  84. package/dist/azure/activityLogAnalysis.js.map +1 -0
  85. package/dist/azure/activityLogAnalysisPublicValidation.d.ts +8 -0
  86. package/dist/azure/activityLogAnalysisPublicValidation.d.ts.map +1 -0
  87. package/dist/azure/activityLogAnalysisPublicValidation.js +368 -0
  88. package/dist/azure/activityLogAnalysisPublicValidation.js.map +1 -0
  89. package/dist/azure/activityLogAnalysisPublicValidationHelpers.d.ts +33 -0
  90. package/dist/azure/activityLogAnalysisPublicValidationHelpers.d.ts.map +1 -0
  91. package/dist/azure/activityLogAnalysisPublicValidationHelpers.js +197 -0
  92. package/dist/azure/activityLogAnalysisPublicValidationHelpers.js.map +1 -0
  93. package/dist/azure/activityLogAnalysisValidation.d.ts +5 -0
  94. package/dist/azure/activityLogAnalysisValidation.d.ts.map +1 -0
  95. package/dist/azure/activityLogAnalysisValidation.js +376 -0
  96. package/dist/azure/activityLogAnalysisValidation.js.map +1 -0
  97. package/dist/azure/activityLogs.d.ts +8 -0
  98. package/dist/azure/activityLogs.d.ts.map +1 -1
  99. package/dist/azure/activityLogs.js.map +1 -1
  100. package/dist/azure/benefits.d.ts +1 -1
  101. package/dist/azure/benefits.d.ts.map +1 -1
  102. package/dist/azure/billingPlots.d.ts +7 -1
  103. package/dist/azure/billingPlots.d.ts.map +1 -1
  104. package/dist/azure/billingPlots.js +45 -4
  105. package/dist/azure/billingPlots.js.map +1 -1
  106. package/dist/azure/commitmentsPlanning.d.ts +8 -2
  107. package/dist/azure/commitmentsPlanning.d.ts.map +1 -1
  108. package/dist/azure/common.d.ts +26 -5
  109. package/dist/azure/common.d.ts.map +1 -1
  110. package/dist/azure/common.js +30 -0
  111. package/dist/azure/common.js.map +1 -1
  112. package/dist/azure/costComposition.d.ts +11 -1
  113. package/dist/azure/costComposition.d.ts.map +1 -1
  114. package/dist/azure/costComposition.js +84 -1
  115. package/dist/azure/costComposition.js.map +1 -1
  116. package/dist/azure/dataProtection.d.ts +4 -4
  117. package/dist/azure/dataProtection.d.ts.map +1 -1
  118. package/dist/azure/financialAnalytics.d.ts +80 -8
  119. package/dist/azure/financialAnalytics.d.ts.map +1 -1
  120. package/dist/azure/financialAnalyticsDelivery.d.ts +72 -3
  121. package/dist/azure/financialAnalyticsDelivery.d.ts.map +1 -1
  122. package/dist/azure/financialAnalyticsDelivery.js +7 -1
  123. package/dist/azure/financialAnalyticsDelivery.js.map +1 -1
  124. package/dist/azure/financialAnalyticsDeliveryValidation.d.ts +9 -1
  125. package/dist/azure/financialAnalyticsDeliveryValidation.d.ts.map +1 -1
  126. package/dist/azure/financialAnalyticsDeliveryValidation.js +190 -10
  127. package/dist/azure/financialAnalyticsDeliveryValidation.js.map +1 -1
  128. package/dist/azure/financialAnalyticsDisplayKernel.d.ts +12 -0
  129. package/dist/azure/financialAnalyticsDisplayKernel.d.ts.map +1 -0
  130. package/dist/azure/financialAnalyticsDisplayKernel.js +144 -0
  131. package/dist/azure/financialAnalyticsDisplayKernel.js.map +1 -0
  132. package/dist/azure/financialAnalyticsValidation.d.ts.map +1 -1
  133. package/dist/azure/financialAnalyticsValidation.js +101 -19
  134. package/dist/azure/financialAnalyticsValidation.js.map +1 -1
  135. package/dist/azure/financialAuthorityProjectionKernel.d.ts +8 -0
  136. package/dist/azure/financialAuthorityProjectionKernel.d.ts.map +1 -0
  137. package/dist/azure/financialAuthorityProjectionKernel.js +269 -0
  138. package/dist/azure/financialAuthorityProjectionKernel.js.map +1 -0
  139. package/dist/azure/financialAuthorityView.d.ts +13 -0
  140. package/dist/azure/financialAuthorityView.d.ts.map +1 -1
  141. package/dist/azure/financialAuthorityView.js.map +1 -1
  142. package/dist/azure/financialAuthorityViewValidation.d.ts +3 -1
  143. package/dist/azure/financialAuthorityViewValidation.d.ts.map +1 -1
  144. package/dist/azure/financialAuthorityViewValidation.js +273 -2
  145. package/dist/azure/financialAuthorityViewValidation.js.map +1 -1
  146. package/dist/azure/financialChargeComposition.d.ts +81 -0
  147. package/dist/azure/financialChargeComposition.d.ts.map +1 -0
  148. package/dist/azure/financialChargeComposition.js +41 -0
  149. package/dist/azure/financialChargeComposition.js.map +1 -0
  150. package/dist/azure/financialChargeCompositionKernel.d.ts +3 -0
  151. package/dist/azure/financialChargeCompositionKernel.d.ts.map +1 -0
  152. package/dist/azure/financialChargeCompositionKernel.js +53 -0
  153. package/dist/azure/financialChargeCompositionKernel.js.map +1 -0
  154. package/dist/azure/financialChargeCompositionValidation.d.ts +8 -0
  155. package/dist/azure/financialChargeCompositionValidation.d.ts.map +1 -0
  156. package/dist/azure/financialChargeCompositionValidation.js +164 -0
  157. package/dist/azure/financialChargeCompositionValidation.js.map +1 -0
  158. package/dist/azure/financialChargePolicy.d.ts +215 -0
  159. package/dist/azure/financialChargePolicy.d.ts.map +1 -0
  160. package/dist/azure/financialChargePolicy.js +488 -0
  161. package/dist/azure/financialChargePolicy.js.map +1 -0
  162. package/dist/azure/financialCurrentSpendSurfaceProjection.d.ts +76 -0
  163. package/dist/azure/financialCurrentSpendSurfaceProjection.d.ts.map +1 -0
  164. package/dist/azure/financialCurrentSpendSurfaceProjection.js +6 -0
  165. package/dist/azure/financialCurrentSpendSurfaceProjection.js.map +1 -0
  166. package/dist/azure/financialCurrentSpendSurfaceProjectionValidation.d.ts +10 -0
  167. package/dist/azure/financialCurrentSpendSurfaceProjectionValidation.d.ts.map +1 -0
  168. package/dist/azure/financialCurrentSpendSurfaceProjectionValidation.js +196 -0
  169. package/dist/azure/financialCurrentSpendSurfaceProjectionValidation.js.map +1 -0
  170. package/dist/azure/financialDataflow.d.ts +45 -2
  171. package/dist/azure/financialDataflow.d.ts.map +1 -1
  172. package/dist/azure/financialDataflow.js.map +1 -1
  173. package/dist/azure/financialDataflowKernel.d.ts +31 -0
  174. package/dist/azure/financialDataflowKernel.d.ts.map +1 -0
  175. package/dist/azure/financialDataflowKernel.js +170 -0
  176. package/dist/azure/financialDataflowKernel.js.map +1 -0
  177. package/dist/azure/financialDataflowValidation.d.ts +5 -2
  178. package/dist/azure/financialDataflowValidation.d.ts.map +1 -1
  179. package/dist/azure/financialDataflowValidation.js +203 -30
  180. package/dist/azure/financialDataflowValidation.js.map +1 -1
  181. package/dist/azure/financialEvidenceAssessmentValidation.d.ts.map +1 -1
  182. package/dist/azure/financialEvidenceAssessmentValidation.js +7 -0
  183. package/dist/azure/financialEvidenceAssessmentValidation.js.map +1 -1
  184. package/dist/azure/financialEvidenceCoverage.d.ts +36 -0
  185. package/dist/azure/financialEvidenceCoverage.d.ts.map +1 -0
  186. package/dist/azure/financialEvidenceCoverage.js +111 -0
  187. package/dist/azure/financialEvidenceCoverage.js.map +1 -0
  188. package/dist/azure/financialPolicy.d.ts +19 -3
  189. package/dist/azure/financialPolicy.d.ts.map +1 -1
  190. package/dist/azure/financialPolicy.js.map +1 -1
  191. package/dist/azure/financialPolicyDelivery.d.ts +75 -1
  192. package/dist/azure/financialPolicyDelivery.d.ts.map +1 -1
  193. package/dist/azure/financialPolicyDelivery.js +5 -1
  194. package/dist/azure/financialPolicyDelivery.js.map +1 -1
  195. package/dist/azure/financialPolicyDeliveryValidation.d.ts +16 -2
  196. package/dist/azure/financialPolicyDeliveryValidation.d.ts.map +1 -1
  197. package/dist/azure/financialPolicyDeliveryValidation.js +238 -5
  198. package/dist/azure/financialPolicyDeliveryValidation.js.map +1 -1
  199. package/dist/azure/financialPolicyKernel.d.ts +38 -0
  200. package/dist/azure/financialPolicyKernel.d.ts.map +1 -0
  201. package/dist/azure/financialPolicyKernel.js +232 -0
  202. package/dist/azure/financialPolicyKernel.js.map +1 -0
  203. package/dist/azure/financialPolicyValidation.d.ts +1 -0
  204. package/dist/azure/financialPolicyValidation.d.ts.map +1 -1
  205. package/dist/azure/financialPolicyValidation.js +111 -16
  206. package/dist/azure/financialPolicyValidation.js.map +1 -1
  207. package/dist/azure/financialProjection.d.ts +11 -1
  208. package/dist/azure/financialProjection.d.ts.map +1 -1
  209. package/dist/azure/financialProjection.js.map +1 -1
  210. package/dist/azure/financialProjectionValidation.d.ts.map +1 -1
  211. package/dist/azure/financialProjectionValidation.js +43 -3
  212. package/dist/azure/financialProjectionValidation.js.map +1 -1
  213. package/dist/azure/financialResourceSurfaceProjection.d.ts +66 -0
  214. package/dist/azure/financialResourceSurfaceProjection.d.ts.map +1 -0
  215. package/dist/azure/financialResourceSurfaceProjection.js +6 -0
  216. package/dist/azure/financialResourceSurfaceProjection.js.map +1 -0
  217. package/dist/azure/financialResourceSurfaceProjectionValidation.d.ts +16 -0
  218. package/dist/azure/financialResourceSurfaceProjectionValidation.d.ts.map +1 -0
  219. package/dist/azure/financialResourceSurfaceProjectionValidation.js +252 -0
  220. package/dist/azure/financialResourceSurfaceProjectionValidation.js.map +1 -0
  221. package/dist/azure/financialSavingsAuthority.d.ts +68 -4
  222. package/dist/azure/financialSavingsAuthority.d.ts.map +1 -1
  223. package/dist/azure/financialSavingsAuthority.js +2 -1
  224. package/dist/azure/financialSavingsAuthority.js.map +1 -1
  225. package/dist/azure/financialSavingsAuthorityValidation.d.ts +6 -2
  226. package/dist/azure/financialSavingsAuthorityValidation.d.ts.map +1 -1
  227. package/dist/azure/financialSavingsAuthorityValidation.js +188 -2
  228. package/dist/azure/financialSavingsAuthorityValidation.js.map +1 -1
  229. package/dist/azure/financialSavingsChargePolicyKernel.d.ts +12 -0
  230. package/dist/azure/financialSavingsChargePolicyKernel.d.ts.map +1 -0
  231. package/dist/azure/financialSavingsChargePolicyKernel.js +34 -0
  232. package/dist/azure/financialSavingsChargePolicyKernel.js.map +1 -0
  233. package/dist/azure/financialSavingsCoordinateValidation.d.ts.map +1 -1
  234. package/dist/azure/financialSavingsCoordinateValidation.js +98 -19
  235. package/dist/azure/financialSavingsCoordinateValidation.js.map +1 -1
  236. package/dist/azure/financialSavingsPercentageKernel.d.ts +20 -0
  237. package/dist/azure/financialSavingsPercentageKernel.d.ts.map +1 -0
  238. package/dist/azure/financialSavingsPercentageKernel.js +49 -0
  239. package/dist/azure/financialSavingsPercentageKernel.js.map +1 -0
  240. package/dist/azure/financialSavingsSurfaceProjection.d.ts +82 -3
  241. package/dist/azure/financialSavingsSurfaceProjection.d.ts.map +1 -1
  242. package/dist/azure/financialSavingsSurfaceProjection.js +3 -1
  243. package/dist/azure/financialSavingsSurfaceProjection.js.map +1 -1
  244. package/dist/azure/financialSavingsSurfaceProjectionKernel.d.ts +26 -0
  245. package/dist/azure/financialSavingsSurfaceProjectionKernel.d.ts.map +1 -0
  246. package/dist/azure/financialSavingsSurfaceProjectionKernel.js +435 -0
  247. package/dist/azure/financialSavingsSurfaceProjectionKernel.js.map +1 -0
  248. package/dist/azure/financialSavingsSurfaceProjectionValidation.d.ts.map +1 -1
  249. package/dist/azure/financialSavingsSurfaceProjectionValidation.js +199 -13
  250. package/dist/azure/financialSavingsSurfaceProjectionValidation.js.map +1 -1
  251. package/dist/azure/financialScope.d.ts +14 -0
  252. package/dist/azure/financialScope.d.ts.map +1 -1
  253. package/dist/azure/financialScope.js +14 -0
  254. package/dist/azure/financialScope.js.map +1 -1
  255. package/dist/azure/financialScopeBaseline.d.ts +11 -3
  256. package/dist/azure/financialScopeBaseline.d.ts.map +1 -1
  257. package/dist/azure/financialScopeBaseline.js +14 -1
  258. package/dist/azure/financialScopeBaseline.js.map +1 -1
  259. package/dist/azure/financialScopeBaselineIdentity.d.ts.map +1 -1
  260. package/dist/azure/financialScopeBaselineIdentity.js +24 -4
  261. package/dist/azure/financialScopeBaselineIdentity.js.map +1 -1
  262. package/dist/azure/financialScopeBaselineValidation.d.ts.map +1 -1
  263. package/dist/azure/financialScopeBaselineValidation.js +21 -4
  264. package/dist/azure/financialScopeBaselineValidation.js.map +1 -1
  265. package/dist/azure/financialScopeEvidence.d.ts +1 -1
  266. package/dist/azure/financialScopeEvidence.d.ts.map +1 -1
  267. package/dist/azure/governance.d.ts +145 -0
  268. package/dist/azure/governance.d.ts.map +1 -1
  269. package/dist/azure/governance.js +2 -1
  270. package/dist/azure/governance.js.map +1 -1
  271. package/dist/azure/metrics.d.ts +2 -2
  272. package/dist/azure/metrics.d.ts.map +1 -1
  273. package/dist/azure/payloads.d.ts +55 -1
  274. package/dist/azure/payloads.d.ts.map +1 -1
  275. package/dist/azure/prices.d.ts +41 -12
  276. package/dist/azure/prices.d.ts.map +1 -1
  277. package/dist/azure/recommendationLifecycleOverlayValidation.d.ts +5 -0
  278. package/dist/azure/recommendationLifecycleOverlayValidation.d.ts.map +1 -0
  279. package/dist/azure/recommendationLifecycleOverlayValidation.js +82 -0
  280. package/dist/azure/recommendationLifecycleOverlayValidation.js.map +1 -0
  281. package/dist/azure/recommendationState.d.ts +1 -1
  282. package/dist/azure/recommendationState.d.ts.map +1 -1
  283. package/dist/azure/recommendations.d.ts +141 -5
  284. package/dist/azure/recommendations.d.ts.map +1 -1
  285. package/dist/azure/recommendations.js +3 -1
  286. package/dist/azure/recommendations.js.map +1 -1
  287. package/dist/azure/relationships.d.ts +1 -1
  288. package/dist/azure/relationships.d.ts.map +1 -1
  289. package/dist/azure/reportDailySpend.d.ts +48 -0
  290. package/dist/azure/reportDailySpend.d.ts.map +1 -0
  291. package/dist/azure/reportDailySpend.js +6 -0
  292. package/dist/azure/reportDailySpend.js.map +1 -0
  293. package/dist/azure/reportDailySpendValidation.d.ts +3 -0
  294. package/dist/azure/reportDailySpendValidation.d.ts.map +1 -0
  295. package/dist/azure/reportDailySpendValidation.js +72 -0
  296. package/dist/azure/reportDailySpendValidation.js.map +1 -0
  297. package/dist/azure/reportEvidence.d.ts +615 -0
  298. package/dist/azure/reportEvidence.d.ts.map +1 -0
  299. package/dist/azure/reportEvidence.js +25 -0
  300. package/dist/azure/reportEvidence.js.map +1 -0
  301. package/dist/azure/reportEvidenceCatalogueValidation.d.ts +5 -0
  302. package/dist/azure/reportEvidenceCatalogueValidation.d.ts.map +1 -0
  303. package/dist/azure/reportEvidenceCatalogueValidation.js +109 -0
  304. package/dist/azure/reportEvidenceCatalogueValidation.js.map +1 -0
  305. package/dist/azure/reportEvidenceValidation.d.ts +7 -0
  306. package/dist/azure/reportEvidenceValidation.d.ts.map +1 -0
  307. package/dist/azure/reportEvidenceValidation.js +421 -0
  308. package/dist/azure/reportEvidenceValidation.js.map +1 -0
  309. package/dist/azure/reportEvidenceValidationHelpers.d.ts +27 -0
  310. package/dist/azure/reportEvidenceValidationHelpers.d.ts.map +1 -0
  311. package/dist/azure/reportEvidenceValidationHelpers.js +134 -0
  312. package/dist/azure/reportEvidenceValidationHelpers.js.map +1 -0
  313. package/dist/azure/reportSavingsContributionValidation.d.ts +5 -0
  314. package/dist/azure/reportSavingsContributionValidation.d.ts.map +1 -0
  315. package/dist/azure/reportSavingsContributionValidation.js +37 -0
  316. package/dist/azure/reportSavingsContributionValidation.js.map +1 -0
  317. package/dist/azure/reportSpend.d.ts +87 -0
  318. package/dist/azure/reportSpend.d.ts.map +1 -0
  319. package/dist/azure/reportSpend.js +5 -0
  320. package/dist/azure/reportSpend.js.map +1 -0
  321. package/dist/azure/reportSpendValidation.d.ts +7 -0
  322. package/dist/azure/reportSpendValidation.d.ts.map +1 -0
  323. package/dist/azure/reportSpendValidation.js +197 -0
  324. package/dist/azure/reportSpendValidation.js.map +1 -0
  325. package/dist/azure/reportSpendValidationHelpers.d.ts +7 -0
  326. package/dist/azure/reportSpendValidationHelpers.d.ts.map +1 -0
  327. package/dist/azure/reportSpendValidationHelpers.js +31 -0
  328. package/dist/azure/reportSpendValidationHelpers.js.map +1 -0
  329. package/dist/azure/reports.d.ts +32 -10
  330. package/dist/azure/reports.d.ts.map +1 -1
  331. package/dist/azure/reports.js.map +1 -1
  332. package/dist/azure/resources.d.ts +24 -12
  333. package/dist/azure/resources.d.ts.map +1 -1
  334. package/dist/azure/serviceRetirement.d.ts +33 -2
  335. package/dist/azure/serviceRetirement.d.ts.map +1 -1
  336. package/dist/azure/storage-inventory.d.ts +44 -0
  337. package/dist/azure/storage-inventory.d.ts.map +1 -1
  338. package/dist/azure/subscriptions.d.ts +57 -11
  339. package/dist/azure/subscriptions.d.ts.map +1 -1
  340. package/dist/azure/subscriptions.js +35 -0
  341. package/dist/azure/subscriptions.js.map +1 -1
  342. package/dist/azure/views.d.ts +86 -22
  343. package/dist/azure/views.d.ts.map +1 -1
  344. package/dist/azure/views.js +8 -1
  345. package/dist/azure/views.js.map +1 -1
  346. package/dist/azure/vmPatchManagement.d.ts +109 -0
  347. package/dist/azure/vmPatchManagement.d.ts.map +1 -0
  348. package/dist/azure/vmPatchManagement.js +7 -0
  349. package/dist/azure/vmPatchManagement.js.map +1 -0
  350. package/dist/common/provider.d.ts +53 -0
  351. package/dist/common/provider.d.ts.map +1 -1
  352. package/dist/common/provider.js.map +1 -1
  353. package/dist/company/company.d.ts +1 -0
  354. package/dist/company/company.d.ts.map +1 -1
  355. package/dist/environment/canonicalization.d.ts +12 -0
  356. package/dist/environment/canonicalization.d.ts.map +1 -0
  357. package/dist/environment/canonicalization.js +40 -0
  358. package/dist/environment/canonicalization.js.map +1 -0
  359. package/dist/environment/contracts.d.ts +472 -0
  360. package/dist/environment/contracts.d.ts.map +1 -0
  361. package/dist/environment/contracts.js +73 -0
  362. package/dist/environment/contracts.js.map +1 -0
  363. package/dist/environment/index.d.ts +6 -0
  364. package/dist/environment/index.d.ts.map +1 -0
  365. package/dist/environment/index.js +22 -0
  366. package/dist/environment/index.js.map +1 -0
  367. package/dist/environment/internal.d.ts +21 -0
  368. package/dist/environment/internal.d.ts.map +1 -0
  369. package/dist/environment/internal.js +113 -0
  370. package/dist/environment/internal.js.map +1 -0
  371. package/dist/environment/references.d.ts +24 -0
  372. package/dist/environment/references.d.ts.map +1 -0
  373. package/dist/environment/references.js +243 -0
  374. package/dist/environment/references.js.map +1 -0
  375. package/dist/environment/tenant.d.ts +128 -0
  376. package/dist/environment/tenant.d.ts.map +1 -0
  377. package/dist/environment/tenant.js +203 -0
  378. package/dist/environment/tenant.js.map +1 -0
  379. package/dist/environment/validation.d.ts +34 -0
  380. package/dist/environment/validation.d.ts.map +1 -0
  381. package/dist/environment/validation.js +655 -0
  382. package/dist/environment/validation.js.map +1 -0
  383. package/dist/esm/accounts/accounts.js +1 -0
  384. package/dist/esm/accounts/azureManualOnboarding.js +8 -0
  385. package/dist/esm/accounts/azureSpSetup.js +14 -1
  386. package/dist/esm/accounts/azureSpSetupDurable.js +27 -1
  387. package/dist/esm/accounts/index.js +1 -0
  388. package/dist/esm/ai/conversationHistory.js +6 -0
  389. package/dist/esm/ai/grounding.js +80 -0
  390. package/dist/esm/ai/index.js +10 -1
  391. package/dist/esm/ai/workspaceArtifacts.js +158 -0
  392. package/dist/esm/aws/commitments-planning.js +5 -0
  393. package/dist/esm/aws/estates.js +7 -1
  394. package/dist/esm/aws/index.js +5 -0
  395. package/dist/esm/aws/organizationCommitments.js +48 -0
  396. package/dist/esm/aws/organizationCommitmentsApiValidation.js +220 -0
  397. package/dist/esm/aws/organizationCommitmentsValidation.js +224 -0
  398. package/dist/esm/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.js +402 -0
  399. package/dist/esm/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.js +2 -0
  400. package/dist/esm/aws/requests.js +1 -1
  401. package/dist/esm/azure/activityLogAnalysis.js +64 -0
  402. package/dist/esm/azure/activityLogAnalysisPublicValidation.js +360 -0
  403. package/dist/esm/azure/activityLogAnalysisPublicValidationHelpers.js +172 -0
  404. package/dist/esm/azure/activityLogAnalysisValidation.js +365 -0
  405. package/dist/esm/azure/billingPlots.js +45 -4
  406. package/dist/esm/azure/common.js +28 -1
  407. package/dist/esm/azure/costComposition.js +80 -0
  408. package/dist/esm/azure/financialAnalyticsDelivery.js +5 -0
  409. package/dist/esm/azure/financialAnalyticsDeliveryValidation.js +184 -11
  410. package/dist/esm/azure/financialAnalyticsDisplayKernel.js +139 -0
  411. package/dist/esm/azure/financialAnalyticsValidation.js +101 -19
  412. package/dist/esm/azure/financialAuthorityProjectionKernel.js +263 -0
  413. package/dist/esm/azure/financialAuthorityViewValidation.js +271 -1
  414. package/dist/esm/azure/financialChargeComposition.js +36 -0
  415. package/dist/esm/azure/financialChargeCompositionKernel.js +48 -0
  416. package/dist/esm/azure/financialChargeCompositionValidation.js +155 -0
  417. package/dist/esm/azure/financialChargePolicy.js +473 -0
  418. package/dist/esm/azure/financialCurrentSpendSurfaceProjection.js +2 -0
  419. package/dist/esm/azure/financialCurrentSpendSurfaceProjectionValidation.js +184 -0
  420. package/dist/esm/azure/financialDataflowKernel.js +164 -0
  421. package/dist/esm/azure/financialDataflowValidation.js +199 -29
  422. package/dist/esm/azure/financialEvidenceAssessmentValidation.js +7 -0
  423. package/dist/esm/azure/financialEvidenceCoverage.js +106 -0
  424. package/dist/esm/azure/financialPolicyDelivery.js +4 -0
  425. package/dist/esm/azure/financialPolicyDeliveryValidation.js +227 -7
  426. package/dist/esm/azure/financialPolicyKernel.js +225 -0
  427. package/dist/esm/azure/financialPolicyValidation.js +110 -16
  428. package/dist/esm/azure/financialProjectionValidation.js +43 -3
  429. package/dist/esm/azure/financialResourceSurfaceProjection.js +2 -0
  430. package/dist/esm/azure/financialResourceSurfaceProjectionValidation.js +243 -0
  431. package/dist/esm/azure/financialSavingsAuthority.js +1 -0
  432. package/dist/esm/azure/financialSavingsAuthorityValidation.js +186 -2
  433. package/dist/esm/azure/financialSavingsChargePolicyKernel.js +29 -0
  434. package/dist/esm/azure/financialSavingsCoordinateValidation.js +98 -19
  435. package/dist/esm/azure/financialSavingsPercentageKernel.js +44 -0
  436. package/dist/esm/azure/financialSavingsSurfaceProjection.js +2 -0
  437. package/dist/esm/azure/financialSavingsSurfaceProjectionKernel.js +427 -0
  438. package/dist/esm/azure/financialSavingsSurfaceProjectionValidation.js +199 -13
  439. package/dist/esm/azure/financialScope.js +14 -0
  440. package/dist/esm/azure/financialScopeBaseline.js +12 -0
  441. package/dist/esm/azure/financialScopeBaselineIdentity.js +24 -4
  442. package/dist/esm/azure/financialScopeBaselineValidation.js +21 -4
  443. package/dist/esm/azure/governance.js +1 -0
  444. package/dist/esm/azure/recommendationLifecycleOverlayValidation.js +75 -0
  445. package/dist/esm/azure/recommendations.js +2 -0
  446. package/dist/esm/azure/reportDailySpend.js +2 -0
  447. package/dist/esm/azure/reportDailySpendValidation.js +67 -0
  448. package/dist/esm/azure/reportEvidence.js +21 -0
  449. package/dist/esm/azure/reportEvidenceCatalogueValidation.js +103 -0
  450. package/dist/esm/azure/reportEvidenceValidation.js +413 -0
  451. package/dist/esm/azure/reportEvidenceValidationHelpers.js +106 -0
  452. package/dist/esm/azure/reportSavingsContributionValidation.js +30 -0
  453. package/dist/esm/azure/reportSpend.js +1 -0
  454. package/dist/esm/azure/reportSpendValidation.js +189 -0
  455. package/dist/esm/azure/reportSpendValidationHelpers.js +22 -0
  456. package/dist/esm/azure/subscriptions.js +33 -1
  457. package/dist/esm/azure/views.js +8 -1
  458. package/dist/esm/azure/vmPatchManagement.js +3 -0
  459. package/dist/esm/entries/commitments-planning.js +2 -2
  460. package/dist/esm/entries/environment.js +3 -0
  461. package/dist/esm/environment/canonicalization.js +34 -0
  462. package/dist/esm/environment/contracts.js +69 -0
  463. package/dist/esm/environment/index.js +5 -0
  464. package/dist/esm/environment/internal.js +97 -0
  465. package/dist/esm/environment/references.js +230 -0
  466. package/dist/esm/environment/tenant.js +190 -0
  467. package/dist/esm/environment/validation.js +635 -0
  468. package/dist/esm/identity/index.js +1 -0
  469. package/dist/esm/identity/microsoftSignInAdminConsent.js +1 -0
  470. package/dist/esm/index.js +13 -0
  471. package/dist/esm/index.vite.js +11 -0
  472. package/dist/esm/scheduler/bastionSchedule.js +1 -0
  473. package/dist/esm/scheduler/bastionScheduleProfile.js +206 -0
  474. package/dist/esm/scheduler/bastionScheduleValidation.js +401 -0
  475. package/dist/esm/scheduler/index.js +3 -0
  476. package/dist/events/alertDefinitionRun.d.ts +4 -0
  477. package/dist/events/alertDefinitionRun.d.ts.map +1 -1
  478. package/dist/events/baseAlert.d.ts +1 -0
  479. package/dist/events/baseAlert.d.ts.map +1 -1
  480. package/dist/events/cost.d.ts +4 -0
  481. package/dist/events/cost.d.ts.map +1 -1
  482. package/dist/events/quickAlerts.d.ts +13 -4
  483. package/dist/events/quickAlerts.d.ts.map +1 -1
  484. package/dist/events/quickAlerts.js.map +1 -1
  485. package/dist/features-and-permissions/access.d.ts +79 -0
  486. package/dist/features-and-permissions/access.d.ts.map +1 -1
  487. package/dist/identity/index.d.ts +1 -0
  488. package/dist/identity/index.d.ts.map +1 -1
  489. package/dist/identity/index.js +1 -0
  490. package/dist/identity/index.js.map +1 -1
  491. package/dist/identity/microsoftSignInAdminConsent.d.ts +59 -0
  492. package/dist/identity/microsoftSignInAdminConsent.d.ts.map +1 -0
  493. package/dist/identity/microsoftSignInAdminConsent.js +3 -0
  494. package/dist/identity/microsoftSignInAdminConsent.js.map +1 -0
  495. package/dist/index.d.ts +13 -0
  496. package/dist/index.d.ts.map +1 -1
  497. package/dist/index.js +19 -0
  498. package/dist/index.js.map +1 -1
  499. package/dist/index.vite.d.ts +11 -0
  500. package/dist/index.vite.d.ts.map +1 -1
  501. package/dist/index.vite.js +15 -0
  502. package/dist/index.vite.js.map +1 -1
  503. package/dist/portfolio/portfolioOperations.d.ts +1 -1
  504. package/dist/portfolio/portfolioOperations.d.ts.map +1 -1
  505. package/dist/scheduler/bastionSchedule.d.ts +113 -0
  506. package/dist/scheduler/bastionSchedule.d.ts.map +1 -0
  507. package/dist/scheduler/bastionSchedule.js +3 -0
  508. package/dist/scheduler/bastionSchedule.js.map +1 -0
  509. package/dist/scheduler/bastionScheduleProfile.d.ts +24 -0
  510. package/dist/scheduler/bastionScheduleProfile.d.ts.map +1 -0
  511. package/dist/scheduler/bastionScheduleProfile.js +210 -0
  512. package/dist/scheduler/bastionScheduleProfile.js.map +1 -0
  513. package/dist/scheduler/bastionScheduleValidation.d.ts +10 -0
  514. package/dist/scheduler/bastionScheduleValidation.d.ts.map +1 -0
  515. package/dist/scheduler/bastionScheduleValidation.js +412 -0
  516. package/dist/scheduler/bastionScheduleValidation.js.map +1 -0
  517. package/dist/scheduler/index.d.ts +3 -0
  518. package/dist/scheduler/index.d.ts.map +1 -1
  519. package/dist/scheduler/index.js +3 -0
  520. package/dist/scheduler/index.js.map +1 -1
  521. package/dist/scheduler/scheduler.d.ts +14 -10
  522. package/dist/scheduler/scheduler.d.ts.map +1 -1
  523. package/package.json +20 -3
@@ -1,2 +1,6 @@
1
1
  export const FINANCIAL_POLICY_READ_PROJECTION_CONTRACT_VERSION_V1 = 'financial-policy-read-projection/v1';
2
2
  export const FINANCIAL_POLICY_ACTION_ATTEMPT_CONTRACT_VERSION_V1 = 'financial-policy-action-attempt/v1';
3
+ export const FINANCIAL_POLICY_DEFINITION_COMMAND_CONTRACT_VERSION_V1 = 'financial-policy-definition-command/v1';
4
+ export const FINANCIAL_POLICY_READ_CURRENT_POINTER_CONTRACT_VERSION_V1 = 'financial-policy-read-current-pointer/v1';
5
+ export const FINANCIAL_POLICY_ACTION_COMPLETION_CONTRACT_VERSION_V1 = 'financial-policy-action-completion/v1';
6
+ export const FINANCIAL_POLICY_READ_MANIFEST_CONTRACT_VERSION_V1 = 'financial-policy-read-manifest/v1';
@@ -1,12 +1,52 @@
1
1
  import { sha256Utf8 } from '../common/sha256.js';
2
2
  import { parseCanonicalDecimal } from '../common/exactDecimal.js';
3
3
  import { isCanonicalExactMoney } from './financialValidationPrimitives.js';
4
- import { FINANCIAL_POLICY_ACTION_ATTEMPT_CONTRACT_VERSION_V1, FINANCIAL_POLICY_READ_PROJECTION_CONTRACT_VERSION_V1, } from './financialPolicyDelivery.js';
5
- import { canonicalizeFinancialDataflowJsonV1, hasFinancialDataflowExactFieldsV1, isFinancialDataflowHashV1, isFinancialDataflowIdentityV1, isFinancialDataflowIsoInstantV1, isFinancialDataflowRecordV1, } from './financialDataflowValidation.js';
6
- import { createFinancialPolicyEvaluationActionAuditIdV1, createFinancialPolicyEvaluationReadProjectionIdV1, isFinancialPolicyDefinitionRevisionV1, isFinancialPolicyEvaluationV1, } from './financialPolicyValidation.js';
4
+ import { isFinancialAnalyticsProjectionV1 } from './financialAnalyticsValidation.js';
5
+ import { FINANCIAL_POLICY_ACTION_ATTEMPT_CONTRACT_VERSION_V1, FINANCIAL_POLICY_ACTION_COMPLETION_CONTRACT_VERSION_V1, FINANCIAL_POLICY_DEFINITION_COMMAND_CONTRACT_VERSION_V1, FINANCIAL_POLICY_READ_CURRENT_POINTER_CONTRACT_VERSION_V1, FINANCIAL_POLICY_READ_MANIFEST_CONTRACT_VERSION_V1, FINANCIAL_POLICY_READ_PROJECTION_CONTRACT_VERSION_V1, } from './financialPolicyDelivery.js';
6
+ import { canonicalizeFinancialDataflowJsonV1, hasFinancialDataflowExactFieldsV1, isFinancialDataflowHashV1, isFinancialDataflowIdentityV1, isFinancialDataflowIsoInstantV1, isFinancialDataflowJsonGzipArtifactDescriptorV1, isFinancialDataflowRecordV1, } from './financialDataflowValidation.js';
7
+ import { createFinancialPolicyDefinitionRevisionIdV1, createFinancialPolicyEvaluationActionAuditIdV1, createFinancialPolicyEvaluationReadProjectionIdV1, isFinancialPolicyDefinitionRevisionIdentityPreimageV1, isFinancialPolicyDefinitionRevisionV1, isFinancialPolicyEvaluationV1, } from './financialPolicyValidation.js';
7
8
  const SIGNAL_KINDS = new Set(['budget-current-spend', 'budget-forecast', 'cost-anomaly']);
8
9
  const RESULTS = new Set(['matched', 'not-matched', 'partial', 'unavailable']);
9
10
  const ACTION_STATUSES = new Set(['succeeded', 'retryable-failure', 'terminal-failure']);
11
+ const isCanonicalPolicyRevision = (value) => {
12
+ if (typeof value !== 'string' || !/^[1-9]\d*$/.test(value))
13
+ return false;
14
+ const parsed = Number(value);
15
+ return Number.isSafeInteger(parsed) && String(parsed) === value;
16
+ };
17
+ export const createFinancialPolicyDestinationsDigestV1 = (destinationRefIds) => `sha256:${sha256Utf8(canonicalizeFinancialDataflowJsonV1([...destinationRefIds].sort()))}`;
18
+ export const isFinancialPolicyDefinitionCommandV1 = (value) => {
19
+ if (!isFinancialDataflowRecordV1(value) ||
20
+ !hasFinancialDataflowExactFieldsV1(value, ['schemaVersion', 'contractVersion', 'displayName', 'effectiveState', 'coordinateRequest', 'criteria', 'schedule', 'destinationRefIds'], ['expectedRevision']) ||
21
+ value.schemaVersion !== 1 ||
22
+ value.contractVersion !== FINANCIAL_POLICY_DEFINITION_COMMAND_CONTRACT_VERSION_V1 ||
23
+ (value.expectedRevision !== undefined && !isCanonicalPolicyRevision(value.expectedRevision)) ||
24
+ !isFinancialDataflowIdentityV1(value.displayName) ||
25
+ (value.effectiveState !== 'enabled' && value.effectiveState !== 'disabled') ||
26
+ !Array.isArray(value.destinationRefIds)) {
27
+ return false;
28
+ }
29
+ const identity = {
30
+ schemaVersion: 1,
31
+ contractVersion: 'financial-policy-definition/v1',
32
+ companyId: 'contract-company',
33
+ definitionId: 'contract-definition',
34
+ displayName: value.displayName,
35
+ revision: '1',
36
+ effectiveState: value.effectiveState,
37
+ coordinateRequest: value.coordinateRequest,
38
+ criteria: value.criteria,
39
+ schedule: value.schedule,
40
+ destinationRefIds: value.destinationRefIds,
41
+ destinationsDigest: createFinancialPolicyDestinationsDigestV1(value.destinationRefIds),
42
+ authoredAt: '2026-01-01T00:00:00.000Z',
43
+ authoredByUserId: 'contract-author',
44
+ };
45
+ if (!isFinancialPolicyDefinitionRevisionIdentityPreimageV1(identity))
46
+ return false;
47
+ const definition = { ...identity, policyDefinitionRevisionId: createFinancialPolicyDefinitionRevisionIdV1(identity) };
48
+ return isFinancialPolicyDefinitionRevisionV1(definition);
49
+ };
10
50
  const isNonNegativeDecimal = (value) => {
11
51
  if (typeof value !== 'string' || !isCanonicalExactMoney({ amount: value, currencyCode: 'AUD' }))
12
52
  return false;
@@ -33,6 +73,7 @@ export const isFinancialPolicyEvaluationReadProjectionV1 = (value) => isFinancia
33
73
  'companyId',
34
74
  'definitionId',
35
75
  'definitionRevision',
76
+ 'policyDefinitionRevisionId',
36
77
  'coordinateId',
37
78
  'currentSpendCompositionId',
38
79
  'signalKind',
@@ -40,7 +81,7 @@ export const isFinancialPolicyEvaluationReadProjectionV1 = (value) => isFinancia
40
81
  'result',
41
82
  'reasonCode',
42
83
  'matchedThresholds',
43
- ], ['analyticsProjectionId']) &&
84
+ ], ['analyticsProjectionId', 'analyticsProjection']) &&
44
85
  value.schemaVersion === 1 &&
45
86
  value.contractVersion === FINANCIAL_POLICY_READ_PROJECTION_CONTRACT_VERSION_V1 &&
46
87
  isFinancialDataflowHashV1(value.evaluationId) &&
@@ -48,12 +89,24 @@ export const isFinancialPolicyEvaluationReadProjectionV1 = (value) => isFinancia
48
89
  isFinancialDataflowIdentityV1(value.companyId) &&
49
90
  isFinancialDataflowIdentityV1(value.definitionId) &&
50
91
  isFinancialDataflowIdentityV1(value.definitionRevision) &&
92
+ isFinancialDataflowHashV1(value.policyDefinitionRevisionId) &&
51
93
  isFinancialDataflowHashV1(value.coordinateId) &&
52
94
  isFinancialDataflowHashV1(value.currentSpendCompositionId) &&
53
95
  (value.analyticsProjectionId === undefined || isFinancialDataflowHashV1(value.analyticsProjectionId)) &&
96
+ (value.analyticsProjection === undefined || isFinancialAnalyticsProjectionV1(value.analyticsProjection)) &&
97
+ (value.analyticsProjectionId === undefined
98
+ ? value.analyticsProjection === undefined
99
+ : value.analyticsProjection?.analyticsProjectionId === value.analyticsProjectionId &&
100
+ value.analyticsProjection.currentSpendCompositionId === value.currentSpendCompositionId &&
101
+ value.analyticsProjection.coordinate.companyId === value.companyId &&
102
+ value.analyticsProjection.coordinate.periodRole === 'projection-target') &&
54
103
  typeof value.signalKind === 'string' &&
55
104
  SIGNAL_KINDS.has(value.signalKind) &&
56
- (value.signalKind === 'budget-current-spend' ? value.analyticsProjectionId === undefined : value.analyticsProjectionId !== undefined) &&
105
+ (value.signalKind === 'budget-current-spend'
106
+ ? value.analyticsProjectionId === undefined
107
+ : value.result === 'unavailable'
108
+ ? value.analyticsProjectionId === undefined || isFinancialDataflowHashV1(value.analyticsProjectionId)
109
+ : value.analyticsProjectionId !== undefined) &&
57
110
  isFinancialDataflowIsoInstantV1(value.evaluatedAt) &&
58
111
  typeof value.result === 'string' &&
59
112
  RESULTS.has(value.result) &&
@@ -61,7 +114,7 @@ export const isFinancialPolicyEvaluationReadProjectionV1 = (value) => isFinancia
61
114
  isMatchedThresholds(value.matchedThresholds) &&
62
115
  Array.isArray(value.matchedThresholds) &&
63
116
  (value.result === 'matched' ? value.matchedThresholds.length > 0 : value.matchedThresholds.length === 0);
64
- export const isFinancialPolicyEvaluationReadProjectionCompatibleV1 = (projection, evaluation) => {
117
+ export const isFinancialPolicyEvaluationReadProjectionCompatibleV1 = (projection, evaluation, analyticsProjection) => {
65
118
  if (!isFinancialPolicyEvaluationReadProjectionV1(projection) || !isFinancialPolicyEvaluationV1(evaluation))
66
119
  return false;
67
120
  const expected = {
@@ -72,17 +125,138 @@ export const isFinancialPolicyEvaluationReadProjectionCompatibleV1 = (projection
72
125
  companyId: evaluation.companyId,
73
126
  definitionId: evaluation.definitionId,
74
127
  definitionRevision: evaluation.definitionRevision,
128
+ policyDefinitionRevisionId: evaluation.policyDefinitionRevisionId,
75
129
  coordinateId: evaluation.coordinateId,
76
130
  currentSpendCompositionId: evaluation.currentSpendCompositionId,
77
131
  ...(evaluation.analyticsProjectionId === undefined ? {} : { analyticsProjectionId: evaluation.analyticsProjectionId }),
132
+ ...(analyticsProjection === undefined ? {} : { analyticsProjection }),
78
133
  signalKind: evaluation.signalKind,
79
134
  evaluatedAt: evaluation.evaluatedAt,
80
135
  result: evaluation.result,
81
136
  reasonCode: evaluation.reasonCode,
82
137
  matchedThresholds: evaluation.matchedThresholds,
83
138
  };
84
- return canonicalizeFinancialDataflowJsonV1(projection) === canonicalizeFinancialDataflowJsonV1(expected);
139
+ return ((evaluation.analyticsProjectionId === undefined
140
+ ? analyticsProjection === undefined
141
+ : analyticsProjection?.analyticsProjectionId === evaluation.analyticsProjectionId) &&
142
+ canonicalizeFinancialDataflowJsonV1(projection) === canonicalizeFinancialDataflowJsonV1(expected));
143
+ };
144
+ export const canonicalizeFinancialPolicyEvaluationReadCurrentPointerIdentityV1 = (value) => {
145
+ if (!isFinancialDataflowRecordV1(value) ||
146
+ !hasFinancialDataflowExactFieldsV1(value, [
147
+ 'schemaVersion',
148
+ 'contractVersion',
149
+ 'companyId',
150
+ 'definitionId',
151
+ 'signalKind',
152
+ 'pointerRevision',
153
+ 'definitionRevision',
154
+ 'policyDefinitionRevisionId',
155
+ 'evaluationId',
156
+ 'readProjectionId',
157
+ 'projectionArtifactDigest',
158
+ 'evaluatedAt',
159
+ 'promotedAt',
160
+ ]) ||
161
+ value.schemaVersion !== 1 ||
162
+ value.contractVersion !== FINANCIAL_POLICY_READ_CURRENT_POINTER_CONTRACT_VERSION_V1 ||
163
+ !isFinancialDataflowIdentityV1(value.companyId) ||
164
+ !isFinancialDataflowIdentityV1(value.definitionId) ||
165
+ typeof value.signalKind !== 'string' ||
166
+ !SIGNAL_KINDS.has(value.signalKind) ||
167
+ !Number.isSafeInteger(value.pointerRevision) ||
168
+ value.pointerRevision < 1 ||
169
+ !isFinancialDataflowIdentityV1(value.definitionRevision) ||
170
+ !isFinancialDataflowHashV1(value.policyDefinitionRevisionId) ||
171
+ !isFinancialDataflowHashV1(value.evaluationId) ||
172
+ value.readProjectionId !== createFinancialPolicyEvaluationReadProjectionIdV1(value.evaluationId) ||
173
+ !isFinancialDataflowHashV1(value.projectionArtifactDigest) ||
174
+ !isFinancialDataflowIsoInstantV1(value.evaluatedAt) ||
175
+ !isFinancialDataflowIsoInstantV1(value.promotedAt)) {
176
+ throw new TypeError('Invalid FinancialPolicyEvaluationReadCurrentPointerIdentityPreimageV1.');
177
+ }
178
+ return canonicalizeFinancialDataflowJsonV1(value);
179
+ };
180
+ export const createFinancialPolicyEvaluationReadCurrentPointerDigestV1 = (value) => `sha256:${sha256Utf8(canonicalizeFinancialPolicyEvaluationReadCurrentPointerIdentityV1(value))}`;
181
+ export const isFinancialPolicyEvaluationReadCurrentPointerV1 = (value) => {
182
+ if (!isFinancialDataflowRecordV1(value) || !Object.prototype.hasOwnProperty.call(value, 'pointerDigest'))
183
+ return false;
184
+ const { pointerDigest, ...identity } = value;
185
+ try {
186
+ return (isFinancialDataflowHashV1(pointerDigest) &&
187
+ pointerDigest === createFinancialPolicyEvaluationReadCurrentPointerDigestV1(identity));
188
+ }
189
+ catch {
190
+ return false;
191
+ }
192
+ };
193
+ export const isFinancialPolicyEvaluationReadCurrentPointerCompatibleV1 = (pointer, projection, projectionArtifactDigest) => isFinancialPolicyEvaluationReadCurrentPointerV1(pointer) &&
194
+ isFinancialPolicyEvaluationReadProjectionV1(projection) &&
195
+ isFinancialDataflowHashV1(projectionArtifactDigest) &&
196
+ pointer.companyId === projection.companyId &&
197
+ pointer.definitionId === projection.definitionId &&
198
+ pointer.signalKind === projection.signalKind &&
199
+ pointer.definitionRevision === projection.definitionRevision &&
200
+ pointer.policyDefinitionRevisionId === projection.policyDefinitionRevisionId &&
201
+ pointer.evaluationId === projection.evaluationId &&
202
+ pointer.readProjectionId === projection.readProjectionId &&
203
+ pointer.projectionArtifactDigest === projectionArtifactDigest &&
204
+ pointer.evaluatedAt === projection.evaluatedAt;
205
+ const isReadManifestIdentity = (value) => isFinancialDataflowRecordV1(value) &&
206
+ hasFinancialDataflowExactFieldsV1(value, [
207
+ 'schemaVersion',
208
+ 'contractVersion',
209
+ 'companyId',
210
+ 'definitionId',
211
+ 'policyDefinitionRevisionId',
212
+ 'definitionRevision',
213
+ 'evaluationId',
214
+ 'readProjectionId',
215
+ 'signalKind',
216
+ 'projection',
217
+ 'publishedAt',
218
+ ]) &&
219
+ value.schemaVersion === 1 &&
220
+ value.contractVersion === FINANCIAL_POLICY_READ_MANIFEST_CONTRACT_VERSION_V1 &&
221
+ isFinancialDataflowIdentityV1(value.companyId) &&
222
+ isFinancialDataflowIdentityV1(value.definitionId) &&
223
+ isFinancialDataflowHashV1(value.policyDefinitionRevisionId) &&
224
+ isFinancialDataflowIdentityV1(value.definitionRevision) &&
225
+ isFinancialDataflowHashV1(value.evaluationId) &&
226
+ value.readProjectionId === createFinancialPolicyEvaluationReadProjectionIdV1(value.evaluationId) &&
227
+ typeof value.signalKind === 'string' &&
228
+ SIGNAL_KINDS.has(value.signalKind) &&
229
+ isFinancialDataflowJsonGzipArtifactDescriptorV1(value.projection) &&
230
+ isFinancialDataflowIsoInstantV1(value.publishedAt);
231
+ export const createFinancialPolicyEvaluationReadManifestDigestV1 = (value) => {
232
+ if (!isReadManifestIdentity(value))
233
+ throw new TypeError('Invalid FinancialPolicyEvaluationReadManifestIdentityPreimageV1.');
234
+ return `sha256:${sha256Utf8(canonicalizeFinancialDataflowJsonV1(value))}`;
235
+ };
236
+ export const isFinancialPolicyEvaluationReadManifestV1 = (value) => {
237
+ if (!isFinancialDataflowRecordV1(value) || !Object.prototype.hasOwnProperty.call(value, 'manifestDigest'))
238
+ return false;
239
+ const { manifestDigest, ...identity } = value;
240
+ try {
241
+ return (isFinancialDataflowHashV1(manifestDigest) &&
242
+ manifestDigest === createFinancialPolicyEvaluationReadManifestDigestV1(identity));
243
+ }
244
+ catch {
245
+ return false;
246
+ }
85
247
  };
248
+ export const isFinancialPolicyEvaluationReadManifestCompatibleV1 = (manifest, projection, verifiedProjectionArtifactDigest) => isFinancialPolicyEvaluationReadManifestV1(manifest) &&
249
+ isFinancialPolicyEvaluationReadProjectionV1(projection) &&
250
+ isFinancialDataflowHashV1(verifiedProjectionArtifactDigest) &&
251
+ manifest.companyId === projection.companyId &&
252
+ manifest.definitionId === projection.definitionId &&
253
+ manifest.policyDefinitionRevisionId === projection.policyDefinitionRevisionId &&
254
+ manifest.definitionRevision === projection.definitionRevision &&
255
+ manifest.evaluationId === projection.evaluationId &&
256
+ manifest.readProjectionId === projection.readProjectionId &&
257
+ manifest.signalKind === projection.signalKind &&
258
+ manifest.publishedAt === projection.evaluatedAt &&
259
+ manifest.projection.sha256 === verifiedProjectionArtifactDigest;
86
260
  const isActionAttemptIdentity = (value) => isFinancialDataflowRecordV1(value) &&
87
261
  hasFinancialDataflowExactFieldsV1(value, [
88
262
  'schemaVersion',
@@ -135,3 +309,49 @@ export const isFinancialPolicyActionAttemptCompatibleV1 = (attempt, evaluation,
135
309
  Date.parse(attempt.attemptedAt) >= Date.parse(evaluation.evaluatedAt) &&
136
310
  evaluation.policyDefinitionRevisionId === definition.policyDefinitionRevisionId &&
137
311
  definition.destinationRefIds.includes(attempt.destinationRefId);
312
+ export const canonicalizeFinancialPolicyActionCompletionIdentityV1 = (value) => {
313
+ if (!isFinancialDataflowRecordV1(value) ||
314
+ !hasFinancialDataflowExactFieldsV1(value, [
315
+ 'schemaVersion',
316
+ 'contractVersion',
317
+ 'actionAuditId',
318
+ 'evaluationId',
319
+ 'companyId',
320
+ 'destinationRefId',
321
+ 'completedAt',
322
+ 'executorVersion',
323
+ ]) ||
324
+ value.schemaVersion !== 1 ||
325
+ value.contractVersion !== FINANCIAL_POLICY_ACTION_COMPLETION_CONTRACT_VERSION_V1 ||
326
+ !isFinancialDataflowHashV1(value.actionAuditId) ||
327
+ !isFinancialDataflowHashV1(value.evaluationId) ||
328
+ !isFinancialDataflowIdentityV1(value.companyId) ||
329
+ !isFinancialDataflowIdentityV1(value.destinationRefId) ||
330
+ !isFinancialDataflowIsoInstantV1(value.completedAt) ||
331
+ !isFinancialDataflowIdentityV1(value.executorVersion)) {
332
+ throw new TypeError('Invalid FinancialPolicyActionCompletionIdentityPreimageV1.');
333
+ }
334
+ return canonicalizeFinancialDataflowJsonV1(value);
335
+ };
336
+ export const createFinancialPolicyActionCompletionIdV1 = (value) => `sha256:${sha256Utf8(canonicalizeFinancialPolicyActionCompletionIdentityV1(value))}`;
337
+ export const isFinancialPolicyActionCompletionV1 = (value) => {
338
+ if (!isFinancialDataflowRecordV1(value) || !Object.prototype.hasOwnProperty.call(value, 'completionId'))
339
+ return false;
340
+ const { completionId, ...identity } = value;
341
+ try {
342
+ return (isFinancialDataflowHashV1(completionId) &&
343
+ completionId === createFinancialPolicyActionCompletionIdV1(identity));
344
+ }
345
+ catch {
346
+ return false;
347
+ }
348
+ };
349
+ export const isFinancialPolicyActionCompletionCompatibleV1 = (completion, evaluation, definition) => isFinancialPolicyActionCompletionV1(completion) &&
350
+ isFinancialPolicyEvaluationV1(evaluation) &&
351
+ isFinancialPolicyDefinitionRevisionV1(definition) &&
352
+ completion.actionAuditId === evaluation.actionAuditId &&
353
+ completion.evaluationId === evaluation.evaluationId &&
354
+ completion.companyId === evaluation.companyId &&
355
+ completion.completedAt === evaluation.evaluatedAt &&
356
+ definition.companyId === completion.companyId &&
357
+ definition.destinationRefIds.includes(completion.destinationRefId);
@@ -0,0 +1,225 @@
1
+ import { formatExactDecimalValue, multiplyExactDecimalValues, parseCanonicalDecimal, subtractExactDecimalValues, } from '../common/exactDecimal.js';
2
+ import { createFinancialDataflowCoordinateIdV1 } from './financialDataflowValidation.js';
3
+ import { FINANCIAL_POLICY_EVALUATION_CONTRACT_VERSION_V1, } from './financialPolicy.js';
4
+ import { createFinancialPolicyEvaluationActionAuditIdV1, createFinancialPolicyEvaluationIdV1, createFinancialPolicyEvaluationReadProjectionIdV1, isFinancialPolicyEvaluationCompatibleV1, } from './financialPolicyValidation.js';
5
+ export const FINANCIAL_POLICY_ALGORITHM_VERSION_V1 = 'financial-policy/shared-v1';
6
+ const compare = (left, right) => {
7
+ const difference = subtractExactDecimalValues(parseCanonicalDecimal(left), parseCanonicalDecimal(right)).coefficient;
8
+ return difference < 0n ? -1 : difference > 0n ? 1 : 0;
9
+ };
10
+ const percentageMatched = (amount, denominator, threshold) => {
11
+ const parsedDenominator = parseCanonicalDecimal(denominator);
12
+ if (parsedDenominator.coefficient <= 0n)
13
+ return false;
14
+ const left = multiplyExactDecimalValues(parseCanonicalDecimal(amount), parseCanonicalDecimal('100'));
15
+ const right = multiplyExactDecimalValues(parsedDenominator, parseCanonicalDecimal(threshold));
16
+ return subtractExactDecimalValues(left, right).coefficient >= 0n;
17
+ };
18
+ /**
19
+ * Shared exact-decimal display classification for Budget surfaces. This is a
20
+ * read-model policy only; alert matching continues to use the thresholds in a
21
+ * versioned Financial Policy Definition.
22
+ */
23
+ export const classifyFinancialBudgetPositionV1 = (request) => {
24
+ if (request.budgetAmount === undefined)
25
+ return { status: 'unbudgeted' };
26
+ if (request.amount === undefined)
27
+ return { status: 'unavailable' };
28
+ try {
29
+ const atRiskPercent = request.atRiskPercent ?? '95';
30
+ const amount = parseCanonicalDecimal(request.amount);
31
+ const budget = parseCanonicalDecimal(request.budgetAmount);
32
+ const risk = parseCanonicalDecimal(atRiskPercent);
33
+ if (budget.coefficient <= 0n || risk.coefficient < 0n || compare(atRiskPercent, '100') > 0) {
34
+ return { status: 'unbudgeted' };
35
+ }
36
+ const varianceAmount = formatExactDecimalValue(subtractExactDecimalValues(amount, budget));
37
+ const status = compare(request.amount, request.budgetAmount) > 0
38
+ ? 'over-budget'
39
+ : percentageMatched(request.amount, request.budgetAmount, atRiskPercent)
40
+ ? 'at-risk'
41
+ : 'on-track';
42
+ return {
43
+ status,
44
+ varianceAmount,
45
+ amount: request.amount,
46
+ budgetAmount: request.budgetAmount,
47
+ atRiskPercent,
48
+ };
49
+ }
50
+ catch {
51
+ return { status: 'unavailable' };
52
+ }
53
+ };
54
+ const isExpectedCalendarMonthTargetPartial = (composition) => composition.coordinate.period.windowKind === 'calendar-month' &&
55
+ composition.amount.status === 'partial' &&
56
+ composition.amount.reasonCodes.length === 1 &&
57
+ composition.amount.reasonCodes[0] === 'coverage-incomplete';
58
+ /**
59
+ * Returns the exact current amount that Budget semantics may compare. An open
60
+ * calendar month is intentionally partial until the period closes; every
61
+ * other partial/unavailable state remains non-comparable.
62
+ */
63
+ export const selectFinancialBudgetComparableCurrentAmountV1 = (composition) => composition.amount.status === 'available'
64
+ ? composition.amount.amount
65
+ : isExpectedCalendarMonthTargetPartial(composition)
66
+ ? composition.amount.knownAmount
67
+ : undefined;
68
+ const budgetThresholds = (amount, budget, thresholds) => [
69
+ ...thresholds.amounts
70
+ .filter(threshold => compare(amount, threshold) >= 0)
71
+ .map(configuredValue => ({ thresholdKind: 'amount', configuredValue })),
72
+ ...thresholds.percents
73
+ .filter(threshold => percentageMatched(amount, budget, threshold))
74
+ .map(configuredValue => ({ thresholdKind: 'percent', configuredValue })),
75
+ ];
76
+ const anomalyThresholds = (definition, projection) => {
77
+ if (definition.criteria.kind !== 'cost-anomaly' || projection.status === 'unavailable' || projection.result.kind !== 'anomaly')
78
+ return [];
79
+ const configured = [
80
+ ...(definition.criteria.minimumAmount === undefined
81
+ ? []
82
+ : [{ thresholdKind: 'minimum-amount', configuredValue: definition.criteria.minimumAmount }]),
83
+ ...(definition.criteria.minimumDelta === undefined
84
+ ? []
85
+ : [{ thresholdKind: 'minimum-delta', configuredValue: definition.criteria.minimumDelta }]),
86
+ ...(definition.criteria.minimumPercentChange === undefined
87
+ ? []
88
+ : [{ thresholdKind: 'minimum-percent-change', configuredValue: definition.criteria.minimumPercentChange }]),
89
+ ];
90
+ return projection.result.events.some(event => configured.every(threshold => {
91
+ if (threshold.thresholdKind === 'minimum-amount')
92
+ return compare(event.observed.amount, threshold.configuredValue) >= 0;
93
+ if (threshold.thresholdKind === 'minimum-delta')
94
+ return compare(event.delta.amount, threshold.configuredValue) >= 0;
95
+ return percentageMatched(event.delta.amount, event.expected.amount, threshold.configuredValue);
96
+ }))
97
+ ? configured
98
+ : [];
99
+ };
100
+ const materialize = (identity, definition, currentSpend, analytics) => {
101
+ const evaluationId = createFinancialPolicyEvaluationIdV1(identity);
102
+ const evaluation = {
103
+ ...identity,
104
+ evaluationId,
105
+ readProjectionId: createFinancialPolicyEvaluationReadProjectionIdV1(evaluationId),
106
+ actionAuditId: createFinancialPolicyEvaluationActionAuditIdV1(evaluationId),
107
+ };
108
+ if (!isFinancialPolicyEvaluationCompatibleV1(evaluation, definition, currentSpend, analytics)) {
109
+ throw new TypeError('Financial policy evaluation does not bind its definition and exact financial inputs.');
110
+ }
111
+ return evaluation;
112
+ };
113
+ export const evaluateFinancialPolicyV1 = (request) => {
114
+ if (request.definition.effectiveState !== 'enabled')
115
+ return [];
116
+ const common = {
117
+ schemaVersion: 1,
118
+ contractVersion: FINANCIAL_POLICY_EVALUATION_CONTRACT_VERSION_V1,
119
+ companyId: request.definition.companyId,
120
+ policyDefinitionRevisionId: request.definition.policyDefinitionRevisionId,
121
+ definitionId: request.definition.definitionId,
122
+ definitionRevision: request.definition.revision,
123
+ coordinateId: createFinancialDataflowCoordinateIdV1(request.currentSpend.coordinate),
124
+ currentSpendCompositionId: request.currentSpend.compositionId,
125
+ evaluatedAt: request.evaluatedAt,
126
+ policyAlgorithmVersion: FINANCIAL_POLICY_ALGORITHM_VERSION_V1,
127
+ };
128
+ if (request.definition.criteria.kind === 'budget') {
129
+ const evaluations = [];
130
+ const currentThresholds = request.definition.criteria.currentSpendThresholds;
131
+ if (currentThresholds) {
132
+ const expectedOpenCalendarMonth = isExpectedCalendarMonthTargetPartial(request.currentSpend);
133
+ const comparableCurrentAmount = selectFinancialBudgetComparableCurrentAmountV1(request.currentSpend);
134
+ const matched = comparableCurrentAmount === undefined
135
+ ? []
136
+ : budgetThresholds(comparableCurrentAmount, request.definition.criteria.budget.amount, currentThresholds);
137
+ const unavailable = request.currentSpend.amount.status === 'unavailable';
138
+ const partial = request.currentSpend.amount.status === 'partial' && !expectedOpenCalendarMonth;
139
+ evaluations.push(materialize({
140
+ ...common,
141
+ signalKind: 'budget-current-spend',
142
+ result: unavailable ? 'unavailable' : partial ? 'partial' : matched.length > 0 ? 'matched' : 'not-matched',
143
+ reasonCode: unavailable
144
+ ? 'current-spend-unavailable'
145
+ : partial
146
+ ? 'current-spend-partial'
147
+ : expectedOpenCalendarMonth && matched.length > 0
148
+ ? 'current-spend-threshold-matched-open-period'
149
+ : expectedOpenCalendarMonth
150
+ ? 'current-spend-threshold-not-matched-open-period'
151
+ : matched.length > 0
152
+ ? 'current-spend-threshold-matched'
153
+ : 'current-spend-threshold-not-matched',
154
+ matchedThresholds: matched,
155
+ }, request.definition, request.currentSpend));
156
+ }
157
+ const forecastThresholds = request.definition.criteria.forecastThresholds;
158
+ if (forecastThresholds) {
159
+ const projection = request.analytics?.forecast;
160
+ if (!projection) {
161
+ evaluations.push(materialize({
162
+ ...common,
163
+ signalKind: 'budget-forecast',
164
+ result: 'unavailable',
165
+ reasonCode: 'analytics-projection-unavailable',
166
+ matchedThresholds: [],
167
+ }, request.definition, request.currentSpend));
168
+ }
169
+ else {
170
+ const unavailable = projection.status === 'unavailable' || request.currentSpend.amount.status === 'unavailable';
171
+ const partial = projection.status === 'partial' ||
172
+ (request.currentSpend.amount.status === 'partial' && !isExpectedCalendarMonthTargetPartial(request.currentSpend));
173
+ const matched = !unavailable && !partial && projection.result.kind === 'forecast'
174
+ ? budgetThresholds(projection.result.projectedTotal.amount, request.definition.criteria.budget.amount, forecastThresholds)
175
+ : [];
176
+ evaluations.push(materialize({
177
+ ...common,
178
+ analyticsProjectionId: projection.analyticsProjectionId,
179
+ signalKind: 'budget-forecast',
180
+ result: unavailable ? 'unavailable' : partial ? 'partial' : matched.length > 0 ? 'matched' : 'not-matched',
181
+ reasonCode: unavailable
182
+ ? 'forecast-unavailable'
183
+ : partial
184
+ ? 'forecast-partial'
185
+ : matched.length > 0
186
+ ? 'forecast-threshold-matched'
187
+ : 'forecast-threshold-not-matched',
188
+ matchedThresholds: matched,
189
+ }, request.definition, request.currentSpend, projection));
190
+ }
191
+ }
192
+ return evaluations;
193
+ }
194
+ const projection = request.analytics?.anomaly;
195
+ if (!projection) {
196
+ return [
197
+ materialize({
198
+ ...common,
199
+ signalKind: 'cost-anomaly',
200
+ result: 'unavailable',
201
+ reasonCode: 'analytics-projection-unavailable',
202
+ matchedThresholds: [],
203
+ }, request.definition, request.currentSpend),
204
+ ];
205
+ }
206
+ const unavailable = projection.status === 'unavailable' || request.currentSpend.amount.status === 'unavailable';
207
+ const partial = projection.status === 'partial' || request.currentSpend.amount.status === 'partial';
208
+ const matched = unavailable || partial ? [] : anomalyThresholds(request.definition, projection);
209
+ return [
210
+ materialize({
211
+ ...common,
212
+ analyticsProjectionId: projection.analyticsProjectionId,
213
+ signalKind: 'cost-anomaly',
214
+ result: unavailable ? 'unavailable' : partial ? 'partial' : matched.length > 0 ? 'matched' : 'not-matched',
215
+ reasonCode: unavailable
216
+ ? 'anomaly-unavailable'
217
+ : partial
218
+ ? 'anomaly-partial'
219
+ : matched.length > 0
220
+ ? 'anomaly-threshold-matched'
221
+ : 'anomaly-threshold-not-matched',
222
+ matchedThresholds: matched,
223
+ }, request.definition, request.currentSpend, projection),
224
+ ];
225
+ };