@spottoai/types-package 1.0.2-dev1138.3 → 1.0.2-dev1138.5

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 (206) hide show
  1. package/README.md +9 -0
  2. package/dist/accounts/accounts.d.ts +77 -4
  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 +128 -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/index.d.ts +14 -1
  28. package/dist/ai/index.d.ts.map +1 -1
  29. package/dist/ai/index.js +12 -0
  30. package/dist/ai/index.js.map +1 -1
  31. package/dist/aws/commitments-planning.d.ts +5 -0
  32. package/dist/aws/commitments-planning.d.ts.map +1 -1
  33. package/dist/aws/commitments-planning.js +19 -0
  34. package/dist/aws/commitments-planning.js.map +1 -1
  35. package/dist/aws/estates.d.ts +1 -1
  36. package/dist/aws/estates.d.ts.map +1 -1
  37. package/dist/aws/estates.js +7 -1
  38. package/dist/aws/estates.js.map +1 -1
  39. package/dist/aws/index.d.ts +5 -0
  40. package/dist/aws/index.d.ts.map +1 -1
  41. package/dist/aws/index.js +5 -0
  42. package/dist/aws/index.js.map +1 -1
  43. package/dist/aws/onboarding.d.ts +3 -0
  44. package/dist/aws/onboarding.d.ts.map +1 -1
  45. package/dist/aws/organizationCommitments.d.ts +260 -0
  46. package/dist/aws/organizationCommitments.d.ts.map +1 -0
  47. package/dist/aws/organizationCommitments.js +53 -0
  48. package/dist/aws/organizationCommitments.js.map +1 -0
  49. package/dist/aws/organizationCommitmentsApiValidation.d.ts +21 -0
  50. package/dist/aws/organizationCommitmentsApiValidation.d.ts.map +1 -0
  51. package/dist/aws/organizationCommitmentsApiValidation.js +226 -0
  52. package/dist/aws/organizationCommitmentsApiValidation.js.map +1 -0
  53. package/dist/aws/organizationCommitmentsValidation.d.ts +12 -0
  54. package/dist/aws/organizationCommitmentsValidation.d.ts.map +1 -0
  55. package/dist/aws/organizationCommitmentsValidation.js +228 -0
  56. package/dist/aws/organizationCommitmentsValidation.js.map +1 -0
  57. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.d.ts +9 -0
  58. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.d.ts.map +1 -0
  59. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.js +407 -0
  60. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.js.map +1 -0
  61. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.d.ts +17 -0
  62. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.d.ts.map +1 -0
  63. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.js +6 -0
  64. package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.js.map +1 -0
  65. package/dist/aws/requests.d.ts +13 -2
  66. package/dist/aws/requests.d.ts.map +1 -1
  67. package/dist/aws/requests.js +1 -1
  68. package/dist/aws/requests.js.map +1 -1
  69. package/dist/azure/commitmentsPlanning.d.ts +2 -2
  70. package/dist/azure/commitmentsPlanning.d.ts.map +1 -1
  71. package/dist/azure/financialAuthorityProjectionKernel.d.ts +7 -0
  72. package/dist/azure/financialAuthorityProjectionKernel.d.ts.map +1 -0
  73. package/dist/azure/financialAuthorityProjectionKernel.js +165 -0
  74. package/dist/azure/financialAuthorityProjectionKernel.js.map +1 -0
  75. package/dist/azure/financialAuthorityViewValidation.d.ts +3 -1
  76. package/dist/azure/financialAuthorityViewValidation.d.ts.map +1 -1
  77. package/dist/azure/financialAuthorityViewValidation.js +167 -2
  78. package/dist/azure/financialAuthorityViewValidation.js.map +1 -1
  79. package/dist/azure/financialChargeCompositionKernel.d.ts.map +1 -1
  80. package/dist/azure/financialChargeCompositionKernel.js +5 -1
  81. package/dist/azure/financialChargeCompositionKernel.js.map +1 -1
  82. package/dist/azure/financialDataflowKernel.d.ts.map +1 -1
  83. package/dist/azure/financialDataflowKernel.js +2 -1
  84. package/dist/azure/financialDataflowKernel.js.map +1 -1
  85. package/dist/azure/financialProjection.d.ts +11 -1
  86. package/dist/azure/financialProjection.d.ts.map +1 -1
  87. package/dist/azure/financialProjection.js.map +1 -1
  88. package/dist/azure/financialProjectionValidation.d.ts.map +1 -1
  89. package/dist/azure/financialProjectionValidation.js +43 -3
  90. package/dist/azure/financialProjectionValidation.js.map +1 -1
  91. package/dist/azure/financialSavingsAuthority.d.ts +25 -4
  92. package/dist/azure/financialSavingsAuthority.d.ts.map +1 -1
  93. package/dist/azure/financialSavingsAuthorityValidation.d.ts +6 -2
  94. package/dist/azure/financialSavingsAuthorityValidation.d.ts.map +1 -1
  95. package/dist/azure/financialSavingsAuthorityValidation.js +126 -2
  96. package/dist/azure/financialSavingsAuthorityValidation.js.map +1 -1
  97. package/dist/azure/financialSavingsCoordinateValidation.d.ts.map +1 -1
  98. package/dist/azure/financialSavingsCoordinateValidation.js +62 -19
  99. package/dist/azure/financialSavingsCoordinateValidation.js.map +1 -1
  100. package/dist/azure/financialSavingsSurfaceProjection.d.ts +58 -3
  101. package/dist/azure/financialSavingsSurfaceProjection.d.ts.map +1 -1
  102. package/dist/azure/financialSavingsSurfaceProjection.js +3 -1
  103. package/dist/azure/financialSavingsSurfaceProjection.js.map +1 -1
  104. package/dist/azure/financialSavingsSurfaceProjectionKernel.d.ts +14 -0
  105. package/dist/azure/financialSavingsSurfaceProjectionKernel.d.ts.map +1 -0
  106. package/dist/azure/financialSavingsSurfaceProjectionKernel.js +326 -0
  107. package/dist/azure/financialSavingsSurfaceProjectionKernel.js.map +1 -0
  108. package/dist/azure/financialSavingsSurfaceProjectionValidation.d.ts.map +1 -1
  109. package/dist/azure/financialSavingsSurfaceProjectionValidation.js +126 -12
  110. package/dist/azure/financialSavingsSurfaceProjectionValidation.js.map +1 -1
  111. package/dist/azure/financialScope.d.ts +2 -0
  112. package/dist/azure/financialScope.d.ts.map +1 -1
  113. package/dist/azure/financialScope.js +2 -0
  114. package/dist/azure/financialScope.js.map +1 -1
  115. package/dist/azure/governance.d.ts +145 -0
  116. package/dist/azure/governance.d.ts.map +1 -1
  117. package/dist/azure/governance.js +2 -1
  118. package/dist/azure/governance.js.map +1 -1
  119. package/dist/azure/payloads.d.ts +19 -0
  120. package/dist/azure/payloads.d.ts.map +1 -1
  121. package/dist/azure/recommendationState.d.ts +1 -1
  122. package/dist/azure/recommendationState.d.ts.map +1 -1
  123. package/dist/azure/recommendations.d.ts +3 -1
  124. package/dist/azure/recommendations.d.ts.map +1 -1
  125. package/dist/azure/serviceRetirement.d.ts +33 -2
  126. package/dist/azure/serviceRetirement.d.ts.map +1 -1
  127. package/dist/azure/subscriptions.d.ts +9 -0
  128. package/dist/azure/subscriptions.d.ts.map +1 -1
  129. package/dist/azure/views.d.ts +19 -1
  130. package/dist/azure/views.d.ts.map +1 -1
  131. package/dist/azure/views.js.map +1 -1
  132. package/dist/azure/vmPatchManagement.d.ts +109 -0
  133. package/dist/azure/vmPatchManagement.d.ts.map +1 -0
  134. package/dist/azure/vmPatchManagement.js +7 -0
  135. package/dist/azure/vmPatchManagement.js.map +1 -0
  136. package/dist/common/provider.d.ts +53 -0
  137. package/dist/common/provider.d.ts.map +1 -1
  138. package/dist/common/provider.js.map +1 -1
  139. package/dist/environment/canonicalization.d.ts +12 -0
  140. package/dist/environment/canonicalization.d.ts.map +1 -0
  141. package/dist/environment/canonicalization.js +40 -0
  142. package/dist/environment/canonicalization.js.map +1 -0
  143. package/dist/environment/contracts.d.ts +196 -0
  144. package/dist/environment/contracts.d.ts.map +1 -0
  145. package/dist/environment/contracts.js +21 -0
  146. package/dist/environment/contracts.js.map +1 -0
  147. package/dist/environment/index.d.ts +5 -0
  148. package/dist/environment/index.d.ts.map +1 -0
  149. package/dist/environment/index.js +21 -0
  150. package/dist/environment/index.js.map +1 -0
  151. package/dist/environment/internal.d.ts +21 -0
  152. package/dist/environment/internal.d.ts.map +1 -0
  153. package/dist/environment/internal.js +113 -0
  154. package/dist/environment/internal.js.map +1 -0
  155. package/dist/environment/references.d.ts +18 -0
  156. package/dist/environment/references.d.ts.map +1 -0
  157. package/dist/environment/references.js +206 -0
  158. package/dist/environment/references.js.map +1 -0
  159. package/dist/environment/validation.d.ts +28 -0
  160. package/dist/environment/validation.d.ts.map +1 -0
  161. package/dist/environment/validation.js +320 -0
  162. package/dist/environment/validation.js.map +1 -0
  163. package/dist/esm/accounts/accounts.js +1 -0
  164. package/dist/esm/accounts/azureManualOnboarding.js +8 -0
  165. package/dist/esm/accounts/azureSpSetup.js +14 -1
  166. package/dist/esm/accounts/azureSpSetupDurable.js +27 -1
  167. package/dist/esm/accounts/index.js +1 -0
  168. package/dist/esm/ai/index.js +10 -1
  169. package/dist/esm/aws/commitments-planning.js +5 -0
  170. package/dist/esm/aws/estates.js +7 -1
  171. package/dist/esm/aws/index.js +5 -0
  172. package/dist/esm/aws/organizationCommitments.js +48 -0
  173. package/dist/esm/aws/organizationCommitmentsApiValidation.js +220 -0
  174. package/dist/esm/aws/organizationCommitmentsValidation.js +224 -0
  175. package/dist/esm/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.js +402 -0
  176. package/dist/esm/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.js +2 -0
  177. package/dist/esm/aws/requests.js +1 -1
  178. package/dist/esm/azure/financialAuthorityProjectionKernel.js +159 -0
  179. package/dist/esm/azure/financialAuthorityViewValidation.js +165 -1
  180. package/dist/esm/azure/financialChargeCompositionKernel.js +5 -1
  181. package/dist/esm/azure/financialDataflowKernel.js +2 -1
  182. package/dist/esm/azure/financialProjectionValidation.js +43 -3
  183. package/dist/esm/azure/financialSavingsAuthorityValidation.js +124 -2
  184. package/dist/esm/azure/financialSavingsCoordinateValidation.js +62 -19
  185. package/dist/esm/azure/financialSavingsSurfaceProjection.js +2 -0
  186. package/dist/esm/azure/financialSavingsSurfaceProjectionKernel.js +318 -0
  187. package/dist/esm/azure/financialSavingsSurfaceProjectionValidation.js +126 -12
  188. package/dist/esm/azure/financialScope.js +2 -0
  189. package/dist/esm/azure/governance.js +1 -0
  190. package/dist/esm/azure/vmPatchManagement.js +3 -0
  191. package/dist/esm/entries/commitments-planning.js +2 -2
  192. package/dist/esm/entries/environment.js +3 -0
  193. package/dist/esm/environment/canonicalization.js +34 -0
  194. package/dist/esm/environment/contracts.js +17 -0
  195. package/dist/esm/environment/index.js +4 -0
  196. package/dist/esm/environment/internal.js +97 -0
  197. package/dist/esm/environment/references.js +194 -0
  198. package/dist/esm/environment/validation.js +303 -0
  199. package/dist/esm/index.js +2 -0
  200. package/dist/index.d.ts +2 -0
  201. package/dist/index.d.ts.map +1 -1
  202. package/dist/index.js +2 -0
  203. package/dist/index.js.map +1 -1
  204. package/dist/portfolio/portfolioOperations.d.ts +1 -1
  205. package/dist/portfolio/portfolioOperations.d.ts.map +1 -1
  206. package/package.json +14 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"references.js","sourceRoot":"","sources":["../../src/environment/references.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { type EnvironmentArtifactKindV1, type EnvironmentCompiledGenerationPointerV1, type EnvironmentCoverageStateV1, type EnvironmentDocumentDescriptorV1, type EnvironmentMoneyValueV1, type EnvironmentScopeV1, type EnvironmentSourceBindingV1, type EnvironmentSourceGenerationV1, type EnvironmentSubscriptionCostProjectionV1 } from './contracts.js';
2
+ /** Validates a bounded, local Portal route suitable for client-visible evidence. */
3
+ export declare const isEnvironmentPortalRouteV1: (value: unknown) => value is string;
4
+ /** Validates the closed phase-one Azure subscription scope. */
5
+ export declare const isEnvironmentScopeV1: (value: unknown) => value is EnvironmentScopeV1;
6
+ /** Validates the client-safe identity of one authoritative source generation. */
7
+ export declare const isEnvironmentSourceGenerationV1: (value: unknown) => value is EnvironmentSourceGenerationV1;
8
+ /** Validates a byte-preserving binding to an authoritative CompletedAzureViewSetV1. */
9
+ export declare const isEnvironmentSourceBindingV1: (value: unknown) => value is EnvironmentSourceBindingV1;
10
+ /** Validates a storage-safe environment run identity independently from source identities. */
11
+ export declare const isEnvironmentRunIdV1: (value: unknown) => value is string;
12
+ /** Validates canonical decimal money with explicit currency, basis, period, and provenance. */
13
+ export declare const isEnvironmentMoneyValueV1: (value: unknown) => value is EnvironmentMoneyValueV1;
14
+ /** Validates the closed coverage-state union and state-specific freshness rules. */
15
+ export declare const isEnvironmentCoverageStateV1: (value: unknown) => value is EnvironmentCoverageStateV1;
16
+ /** Validates the strict, bounded phase-one subscription-cost projection. */
17
+ export declare const isEnvironmentSubscriptionCostProjectionV1: (value: unknown) => value is EnvironmentSubscriptionCostProjectionV1;
18
+ /** Validates one descriptor from the exact V1 three-document allowlist. */
19
+ export declare const isEnvironmentDocumentDescriptorV1: (value: unknown) => value is EnvironmentDocumentDescriptorV1;
20
+ /** Validates that descriptors contain each allowlisted V1 document exactly once. */
21
+ export declare const isEnvironmentDocumentDescriptorSetV1: (value: unknown) => value is EnvironmentDocumentDescriptorV1[];
22
+ /** Validates an atomically visible completed environment-generation pointer. */
23
+ export declare const isEnvironmentCompiledGenerationPointerV1: (value: unknown) => value is EnvironmentCompiledGenerationPointerV1;
24
+ /** Validates the artifact kind without widening the closed V1 union. */
25
+ export declare const isEnvironmentArtifactKindV1: (value: unknown) => value is EnvironmentArtifactKindV1;
26
+ /** Validates the V1 safe-label bound used by customer-visible evidence metadata. */
27
+ export declare const isEnvironmentSafeLabelV1: (value: unknown) => value is string;
28
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/environment/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,yBAAyB,EAE9B,KAAK,sCAAsC,EAK3C,KAAK,0BAA0B,EAC/B,KAAK,+BAA+B,EACpC,KAAK,uBAAuB,EAE5B,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,EAClC,KAAK,uCAAuC,EAC7C,MAAM,gBAAgB,CAAC;AAoCxB,oFAAoF;AACpF,eAAO,MAAM,0BAA0B,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MASG,CAAC;AAWzE,+DAA+D;AAC/D,eAAO,MAAM,oBAAoB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,kBAMtB,CAAC;AAE1C,iFAAiF;AACjF,eAAO,MAAM,+BAA+B,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,6BAiB9B,CAAC;AAE7C,uFAAuF;AACvF,eAAO,MAAM,4BAA4B,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,0BAwBnE,CAAC;AAEL,8FAA8F;AAC9F,eAAO,MAAM,oBAAoB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAMvB,CAAC;AAEzC,+FAA+F;AAC/F,eAAO,MAAM,yBAAyB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,uBAYyE,CAAC;AAQ9I,oFAAoF;AACpF,eAAO,MAAM,4BAA4B,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,0BA+BtE,CAAC;AAgFF,4EAA4E;AAC5E,eAAO,MAAM,yCAAyC,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,uCA0CnF,CAAC;AAQF,2EAA2E;AAC3E,eAAO,MAAM,iCAAiC,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,+BAa3E,CAAC;AAEF,oFAAoF;AACpF,eAAO,MAAM,oCAAoC,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,+BAA+B,EAKb,CAAC;AAElG,gFAAgF;AAChF,eAAO,MAAM,wCAAwC,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,sCA6BlF,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,2BAA2B,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,yBACd,CAAC;AAEzD,oFAAoF;AACpF,eAAO,MAAM,wBAAwB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAA4B,CAAC"}
@@ -0,0 +1,320 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isEnvironmentSafeLabelV1 = exports.isEnvironmentArtifactKindV1 = exports.isEnvironmentCompiledGenerationPointerV1 = exports.isEnvironmentDocumentDescriptorSetV1 = exports.isEnvironmentDocumentDescriptorV1 = exports.isEnvironmentSubscriptionCostProjectionV1 = exports.isEnvironmentCoverageStateV1 = exports.isEnvironmentMoneyValueV1 = exports.isEnvironmentRunIdV1 = exports.isEnvironmentSourceBindingV1 = exports.isEnvironmentSourceGenerationV1 = exports.isEnvironmentScopeV1 = exports.isEnvironmentPortalRouteV1 = void 0;
4
+ const contracts_js_1 = require("./contracts.js");
5
+ const internal_js_1 = require("./internal.js");
6
+ const references_js_1 = require("./references.js");
7
+ const DOCUMENT_NAMES = new Set(contracts_js_1.ENVIRONMENT_DOCUMENT_NAMES_V1);
8
+ const ARTIFACT_KINDS = new Set(contracts_js_1.ENVIRONMENT_ARTIFACT_KINDS_V1);
9
+ const MONEY_BASES = new Set(['billed', 'amortized']);
10
+ const MONEY_PROVENANCE = new Set([
11
+ 'subscription-summary',
12
+ 'subscription-resources',
13
+ 'cost-savings-summary',
14
+ 'savings-aggregate',
15
+ 'recommendation',
16
+ ]);
17
+ const SAVINGS_ADDITIVITY = new Set(['additive', 'scenario-non-additive']);
18
+ const CHANGE_DIRECTIONS = new Set(['increase', 'decrease', 'unchanged', 'unknown']);
19
+ const scopesEqual = (left, right) => left.kind === right.kind && left.tenantId === right.tenantId && left.companyId === right.companyId && left.subscriptionId === right.subscriptionId;
20
+ /** Validates a bounded, local Portal route suitable for client-visible evidence. */
21
+ const isEnvironmentPortalRouteV1 = (value) => (0, internal_js_1.isBoundedString)(value, contracts_js_1.ENVIRONMENT_CONTRACT_LIMITS_V1.customerStringScalars, { trimmed: true, controls: true }) &&
22
+ value.startsWith('/') &&
23
+ !value.startsWith('//') &&
24
+ !value.includes('\\') &&
25
+ !value.includes('://') &&
26
+ !value.includes('?') &&
27
+ !value.includes('#') &&
28
+ !value.includes('%') &&
29
+ value.split('/').every(segment => segment !== '.' && segment !== '..');
30
+ exports.isEnvironmentPortalRouteV1 = isEnvironmentPortalRouteV1;
31
+ const isGeneralKey = (value) => (0, internal_js_1.isBoundedString)(value, contracts_js_1.ENVIRONMENT_CONTRACT_LIMITS_V1.safeLabelScalars, { trimmed: true, controls: true });
32
+ const isReferenceArray = (value) => Array.isArray(value) &&
33
+ value.length <= contracts_js_1.ENVIRONMENT_CONTRACT_LIMITS_V1.boundedListItems &&
34
+ value.every(references_js_1.isEnvironmentLogicalEvidenceReferenceV1) &&
35
+ new Set(value).size === value.length;
36
+ /** Validates the closed phase-one Azure subscription scope. */
37
+ const isEnvironmentScopeV1 = (value) => (0, internal_js_1.isRecord)(value) &&
38
+ (0, internal_js_1.hasExactKeys)(value, ['kind', 'tenantId', 'companyId', 'subscriptionId']) &&
39
+ value.kind === 'azure-subscription' &&
40
+ (0, internal_js_1.isScopeIdentifier)(value.tenantId) &&
41
+ (0, internal_js_1.isScopeIdentifier)(value.companyId) &&
42
+ (0, internal_js_1.isScopeIdentifier)(value.subscriptionId);
43
+ exports.isEnvironmentScopeV1 = isEnvironmentScopeV1;
44
+ /** Validates the client-safe identity of one authoritative source generation. */
45
+ const isEnvironmentSourceGenerationV1 = (value) => (0, internal_js_1.isRecord)(value) &&
46
+ (0, internal_js_1.hasExactKeys)(value, [
47
+ 'viewSetSchemaVersion',
48
+ 'publicationId',
49
+ 'portalRunId',
50
+ 'pluginRunId',
51
+ 'economicsGenerationId',
52
+ 'economicsFingerprint',
53
+ 'completedAt',
54
+ ]) &&
55
+ value.viewSetSchemaVersion === 1 &&
56
+ (0, internal_js_1.isSourceIdentity)(value.publicationId) &&
57
+ (0, internal_js_1.isSourceIdentity)(value.portalRunId) &&
58
+ (0, internal_js_1.isSourceIdentity)(value.pluginRunId) &&
59
+ (0, internal_js_1.isSourceIdentity)(value.economicsGenerationId) &&
60
+ (0, internal_js_1.isSourceIdentity)(value.economicsFingerprint) &&
61
+ (0, internal_js_1.isCanonicalUtcTimestamp)(value.completedAt);
62
+ exports.isEnvironmentSourceGenerationV1 = isEnvironmentSourceGenerationV1;
63
+ /** Validates a byte-preserving binding to an authoritative CompletedAzureViewSetV1. */
64
+ const isEnvironmentSourceBindingV1 = (value) => (0, internal_js_1.isRecord)(value) &&
65
+ (0, internal_js_1.hasExactKeys)(value, [
66
+ 'kind',
67
+ 'viewSetSchemaVersion',
68
+ 'scope',
69
+ 'publicationId',
70
+ 'portalRunId',
71
+ 'pluginRunId',
72
+ 'economicsGenerationId',
73
+ 'economicsFingerprint',
74
+ 'completedAt',
75
+ ]) &&
76
+ value.kind === 'azure-subscription-view-set' &&
77
+ value.viewSetSchemaVersion === 1 &&
78
+ (0, exports.isEnvironmentScopeV1)(value.scope) &&
79
+ (0, exports.isEnvironmentSourceGenerationV1)({
80
+ viewSetSchemaVersion: value.viewSetSchemaVersion,
81
+ publicationId: value.publicationId,
82
+ portalRunId: value.portalRunId,
83
+ pluginRunId: value.pluginRunId,
84
+ economicsGenerationId: value.economicsGenerationId,
85
+ economicsFingerprint: value.economicsFingerprint,
86
+ completedAt: value.completedAt,
87
+ });
88
+ exports.isEnvironmentSourceBindingV1 = isEnvironmentSourceBindingV1;
89
+ /** Validates a storage-safe environment run identity independently from source identities. */
90
+ const isEnvironmentRunIdV1 = (value) => typeof value === 'string' &&
91
+ value.length > 0 &&
92
+ value.length <= contracts_js_1.ENVIRONMENT_CONTRACT_LIMITS_V1.environmentRunIdAsciiCharacters &&
93
+ value !== '.' &&
94
+ value !== '..' &&
95
+ internal_js_1.ENVIRONMENT_RUN_ID_PATTERN.test(value);
96
+ exports.isEnvironmentRunIdV1 = isEnvironmentRunIdV1;
97
+ /** Validates canonical decimal money with explicit currency, basis, period, and provenance. */
98
+ const isEnvironmentMoneyValueV1 = (value) => (0, internal_js_1.isRecord)(value) &&
99
+ (0, internal_js_1.hasExactKeys)(value, ['amount', 'currencyCode', 'basis', 'period', 'provenance'], ['savingsAdditivity']) &&
100
+ typeof value.amount === 'string' &&
101
+ internal_js_1.DECIMAL_PATTERN.test(value.amount) &&
102
+ typeof value.currencyCode === 'string' &&
103
+ internal_js_1.CURRENCY_PATTERN.test(value.currencyCode) &&
104
+ typeof value.basis === 'string' &&
105
+ MONEY_BASES.has(value.basis) &&
106
+ (0, internal_js_1.isBoundedString)(value.period, contracts_js_1.ENVIRONMENT_CONTRACT_LIMITS_V1.safeLabelScalars, { trimmed: true, controls: true }) &&
107
+ typeof value.provenance === 'string' &&
108
+ MONEY_PROVENANCE.has(value.provenance) &&
109
+ (value.savingsAdditivity === undefined || (typeof value.savingsAdditivity === 'string' && SAVINGS_ADDITIVITY.has(value.savingsAdditivity)));
110
+ exports.isEnvironmentMoneyValueV1 = isEnvironmentMoneyValueV1;
111
+ const isObservedMoney = (value) => (0, exports.isEnvironmentMoneyValueV1)(value) && value.savingsAdditivity === undefined;
112
+ const isSavingsMoney = (value) => (0, exports.isEnvironmentMoneyValueV1)(value) && value.savingsAdditivity !== undefined;
113
+ /** Validates the closed coverage-state union and state-specific freshness rules. */
114
+ const isEnvironmentCoverageStateV1 = (value) => {
115
+ if (!(0, internal_js_1.isRecord)(value) || typeof value.status !== 'string')
116
+ return false;
117
+ const hasValidFreshness = (value.observedAt === undefined || (0, internal_js_1.isCanonicalUtcTimestamp)(value.observedAt)) &&
118
+ (value.completeThrough === undefined || (0, internal_js_1.isCanonicalUtcTimestamp)(value.completeThrough)) &&
119
+ (value.observedAt === undefined ||
120
+ value.completeThrough === undefined ||
121
+ Date.parse(value.completeThrough) <= Date.parse(value.observedAt));
122
+ if (value.status === 'complete') {
123
+ return (0, internal_js_1.hasExactKeys)(value, ['status'], ['observedAt', 'completeThrough']) && hasValidFreshness;
124
+ }
125
+ if (value.status === 'partial') {
126
+ return ((0, internal_js_1.hasExactKeys)(value, ['status', 'reason'], ['observedAt', 'completeThrough']) &&
127
+ (0, internal_js_1.isCustomerString)(value.reason) &&
128
+ value.reason.length > 0 &&
129
+ hasValidFreshness);
130
+ }
131
+ if (value.status === 'stale') {
132
+ return ((0, internal_js_1.hasExactKeys)(value, ['status', 'reason', 'observedAt'], ['completeThrough']) &&
133
+ (0, internal_js_1.isCustomerString)(value.reason) &&
134
+ value.reason.length > 0 &&
135
+ hasValidFreshness);
136
+ }
137
+ if (value.status === 'unavailable' || value.status === 'not-collected') {
138
+ return (0, internal_js_1.hasExactKeys)(value, ['status', 'reason']) && (0, internal_js_1.isCustomerString)(value.reason) && value.reason.length > 0;
139
+ }
140
+ return false;
141
+ };
142
+ exports.isEnvironmentCoverageStateV1 = isEnvironmentCoverageStateV1;
143
+ const isBoundedList = (value, itemValidator) => {
144
+ if (!(0, internal_js_1.isRecord)(value) || !(0, internal_js_1.hasExactKeys)(value, ['items', 'totalCount', 'includedCount', 'truncated'], ['continuationReference']))
145
+ return false;
146
+ if (!Array.isArray(value.items) || value.items.length > contracts_js_1.ENVIRONMENT_CONTRACT_LIMITS_V1.boundedListItems || !value.items.every(itemValidator))
147
+ return false;
148
+ if (!(0, internal_js_1.isNonNegativeInteger)(value.totalCount) || !(0, internal_js_1.isNonNegativeInteger)(value.includedCount))
149
+ return false;
150
+ if (value.includedCount !== value.items.length || value.totalCount < value.includedCount || typeof value.truncated !== 'boolean')
151
+ return false;
152
+ if (value.truncated !== value.totalCount > value.includedCount)
153
+ return false;
154
+ if (value.continuationReference !== undefined && !(0, references_js_1.isEnvironmentLogicalEvidenceReferenceV1)(value.continuationReference))
155
+ return false;
156
+ return !value.truncated || value.continuationReference !== undefined;
157
+ };
158
+ const isCostRollup = (value) => (0, internal_js_1.isRecord)(value) &&
159
+ (0, internal_js_1.hasExactKeys)(value, ['key', 'safeLabel', 'resourceCount', 'sourceReferences'], ['observedCost', 'potentialSavings']) &&
160
+ isGeneralKey(value.key) &&
161
+ (0, internal_js_1.isSafeLabel)(value.safeLabel) &&
162
+ (0, internal_js_1.isNonNegativeInteger)(value.resourceCount) &&
163
+ (value.observedCost === undefined || isObservedMoney(value.observedCost)) &&
164
+ (value.potentialSavings === undefined || isSavingsMoney(value.potentialSavings)) &&
165
+ isReferenceArray(value.sourceReferences);
166
+ const isCostDriver = (value) => (0, internal_js_1.isRecord)(value) &&
167
+ (0, internal_js_1.hasExactKeys)(value, ['key', 'safeLabel', 'sourceReferences'], ['description', 'observedCost', 'portalRoute', 'resourceReference']) &&
168
+ isGeneralKey(value.key) &&
169
+ (0, internal_js_1.isSafeLabel)(value.safeLabel) &&
170
+ (value.description === undefined || (0, internal_js_1.isCustomerString)(value.description)) &&
171
+ (value.observedCost === undefined || isObservedMoney(value.observedCost)) &&
172
+ (value.portalRoute === undefined || (0, exports.isEnvironmentPortalRouteV1)(value.portalRoute)) &&
173
+ (value.resourceReference === undefined || (0, references_js_1.isEnvironmentLogicalResourceReferenceV1)(value.resourceReference)) &&
174
+ isReferenceArray(value.sourceReferences);
175
+ const isRecommendation = (value) => (0, internal_js_1.isRecord)(value) &&
176
+ (0, internal_js_1.hasExactKeys)(value, ['recommendationId', 'safeLabel', 'portalRoute', 'sourceReferences'], ['description', 'potentialSavings']) &&
177
+ (0, internal_js_1.isScopeIdentifier)(value.recommendationId) &&
178
+ (0, internal_js_1.isSafeLabel)(value.safeLabel) &&
179
+ (0, exports.isEnvironmentPortalRouteV1)(value.portalRoute) &&
180
+ (value.description === undefined || (0, internal_js_1.isCustomerString)(value.description)) &&
181
+ (value.potentialSavings === undefined || isSavingsMoney(value.potentialSavings)) &&
182
+ isReferenceArray(value.sourceReferences);
183
+ const isCostChange = (value) => (0, internal_js_1.isRecord)(value) &&
184
+ (0, internal_js_1.hasExactKeys)(value, ['key', 'safeLabel', 'description', 'direction', 'sourceReferences'], ['amount']) &&
185
+ isGeneralKey(value.key) &&
186
+ (0, internal_js_1.isSafeLabel)(value.safeLabel) &&
187
+ (0, internal_js_1.isCustomerString)(value.description) &&
188
+ typeof value.direction === 'string' &&
189
+ CHANGE_DIRECTIONS.has(value.direction) &&
190
+ (value.amount === undefined || isObservedMoney(value.amount)) &&
191
+ isReferenceArray(value.sourceReferences);
192
+ const isWarning = (value) => (0, internal_js_1.isRecord)(value) &&
193
+ (0, internal_js_1.hasExactKeys)(value, ['code', 'safeLabel', 'sourceReferences'], ['detail']) &&
194
+ isGeneralKey(value.code) &&
195
+ (0, internal_js_1.isSafeLabel)(value.safeLabel) &&
196
+ (value.detail === undefined || (0, internal_js_1.isCustomerString)(value.detail)) &&
197
+ isReferenceArray(value.sourceReferences);
198
+ const isSourceCoverage = (value) => (0, internal_js_1.isRecord)(value) &&
199
+ (0, internal_js_1.hasExactKeys)(value, ['subscriptionSummary', 'resources', 'recommendations', 'costs', 'savings']) &&
200
+ (0, exports.isEnvironmentCoverageStateV1)(value.subscriptionSummary) &&
201
+ (0, exports.isEnvironmentCoverageStateV1)(value.resources) &&
202
+ (0, exports.isEnvironmentCoverageStateV1)(value.recommendations) &&
203
+ (0, exports.isEnvironmentCoverageStateV1)(value.costs) &&
204
+ (0, exports.isEnvironmentCoverageStateV1)(value.savings);
205
+ const isCostSummary = (value) => (0, internal_js_1.isRecord)(value) &&
206
+ (0, internal_js_1.hasExactKeys)(value, [], ['observedCost', 'potentialSavings', 'resourceCount', 'recommendationCount']) &&
207
+ (value.observedCost === undefined || isObservedMoney(value.observedCost)) &&
208
+ (value.potentialSavings === undefined || isSavingsMoney(value.potentialSavings)) &&
209
+ (value.resourceCount === undefined || (0, internal_js_1.isNonNegativeInteger)(value.resourceCount)) &&
210
+ (value.recommendationCount === undefined || (0, internal_js_1.isNonNegativeInteger)(value.recommendationCount));
211
+ /** Validates the strict, bounded phase-one subscription-cost projection. */
212
+ const isEnvironmentSubscriptionCostProjectionV1 = (value) => {
213
+ if (!(0, internal_js_1.hasSafeContainerShape)(value) || !(0, internal_js_1.isRecord)(value))
214
+ return false;
215
+ if (!(0, internal_js_1.hasExactKeys)(value, [
216
+ 'schemaVersion',
217
+ 'scope',
218
+ 'sourceBinding',
219
+ 'generatedAt',
220
+ 'subscription',
221
+ 'sourceCoverage',
222
+ 'costSummary',
223
+ 'serviceFamilyRollups',
224
+ 'estateCostRollups',
225
+ 'costDrivers',
226
+ 'recommendations',
227
+ 'changes',
228
+ 'warnings',
229
+ 'sourceReferences',
230
+ ]) ||
231
+ value.schemaVersion !== 1 ||
232
+ !(0, exports.isEnvironmentScopeV1)(value.scope) ||
233
+ !(0, exports.isEnvironmentSourceBindingV1)(value.sourceBinding) ||
234
+ !scopesEqual(value.scope, value.sourceBinding.scope) ||
235
+ !(0, internal_js_1.isCanonicalUtcTimestamp)(value.generatedAt) ||
236
+ Date.parse(value.generatedAt) < Date.parse(value.sourceBinding.completedAt) ||
237
+ !(0, internal_js_1.isRecord)(value.subscription) ||
238
+ !(0, internal_js_1.hasExactKeys)(value.subscription, ['safeLabel', 'portalRoute']) ||
239
+ !(0, internal_js_1.isSafeLabel)(value.subscription.safeLabel) ||
240
+ !(0, exports.isEnvironmentPortalRouteV1)(value.subscription.portalRoute) ||
241
+ !isSourceCoverage(value.sourceCoverage) ||
242
+ !isCostSummary(value.costSummary) ||
243
+ !isBoundedList(value.serviceFamilyRollups, isCostRollup) ||
244
+ !isBoundedList(value.estateCostRollups, isCostRollup) ||
245
+ !isBoundedList(value.costDrivers, isCostDriver) ||
246
+ !isBoundedList(value.recommendations, isRecommendation) ||
247
+ !isBoundedList(value.changes, isCostChange) ||
248
+ !isBoundedList(value.warnings, isWarning) ||
249
+ !isReferenceArray(value.sourceReferences)) {
250
+ return false;
251
+ }
252
+ return (0, internal_js_1.utf8ByteLength)(JSON.stringify(value)) <= contracts_js_1.ENVIRONMENT_CONTRACT_LIMITS_V1.projectionBytes;
253
+ };
254
+ exports.isEnvironmentSubscriptionCostProjectionV1 = isEnvironmentSubscriptionCostProjectionV1;
255
+ const descriptorByteLimit = (name) => {
256
+ if (name === 'projection.json')
257
+ return contracts_js_1.ENVIRONMENT_CONTRACT_LIMITS_V1.projectionBytes;
258
+ if (name === 'environment-index.md')
259
+ return contracts_js_1.ENVIRONMENT_CONTRACT_LIMITS_V1.environmentIndexBytes;
260
+ return contracts_js_1.ENVIRONMENT_CONTRACT_LIMITS_V1.costPillarBytes;
261
+ };
262
+ /** Validates one descriptor from the exact V1 three-document allowlist. */
263
+ const isEnvironmentDocumentDescriptorV1 = (value) => {
264
+ if (!(0, internal_js_1.isRecord)(value) || !(0, internal_js_1.hasExactKeys)(value, ['name', 'mediaType', 'byteCount', 'contentSha256', 'approximateTokenCount']))
265
+ return false;
266
+ if (typeof value.name !== 'string' || !DOCUMENT_NAMES.has(value.name))
267
+ return false;
268
+ const expectedMediaType = value.name === 'projection.json' ? 'application/json' : 'text/markdown; charset=utf-8';
269
+ return (value.mediaType === expectedMediaType &&
270
+ (0, internal_js_1.isNonNegativeInteger)(value.byteCount) &&
271
+ value.byteCount > 0 &&
272
+ value.byteCount <= descriptorByteLimit(value.name) &&
273
+ typeof value.contentSha256 === 'string' &&
274
+ internal_js_1.SHA256_PATTERN.test(value.contentSha256) &&
275
+ (0, internal_js_1.isNonNegativeInteger)(value.approximateTokenCount));
276
+ };
277
+ exports.isEnvironmentDocumentDescriptorV1 = isEnvironmentDocumentDescriptorV1;
278
+ /** Validates that descriptors contain each allowlisted V1 document exactly once. */
279
+ const isEnvironmentDocumentDescriptorSetV1 = (value) => Array.isArray(value) &&
280
+ value.length === contracts_js_1.ENVIRONMENT_DOCUMENT_NAMES_V1.length &&
281
+ value.every(exports.isEnvironmentDocumentDescriptorV1) &&
282
+ new Set(value.map(descriptor => descriptor.name)).size === contracts_js_1.ENVIRONMENT_DOCUMENT_NAMES_V1.length &&
283
+ contracts_js_1.ENVIRONMENT_DOCUMENT_NAMES_V1.every(name => value.some(descriptor => descriptor.name === name));
284
+ exports.isEnvironmentDocumentDescriptorSetV1 = isEnvironmentDocumentDescriptorSetV1;
285
+ /** Validates an atomically visible completed environment-generation pointer. */
286
+ const isEnvironmentCompiledGenerationPointerV1 = (value) => {
287
+ if (!(0, internal_js_1.hasSafeContainerShape)(value) || !(0, internal_js_1.isRecord)(value))
288
+ return false;
289
+ if (!(0, internal_js_1.hasExactKeys)(value, ['schemaVersion', 'status', 'environmentRunId', 'scope', 'sourceBinding', 'treeDigestSha256', 'fileCount', 'generatedAt']) ||
290
+ value.schemaVersion !== 1 ||
291
+ value.status !== 'completed' ||
292
+ !(0, exports.isEnvironmentRunIdV1)(value.environmentRunId) ||
293
+ !(0, exports.isEnvironmentScopeV1)(value.scope) ||
294
+ !(0, exports.isEnvironmentSourceBindingV1)(value.sourceBinding) ||
295
+ !scopesEqual(value.scope, value.sourceBinding.scope) ||
296
+ typeof value.treeDigestSha256 !== 'string' ||
297
+ !internal_js_1.SHA256_PATTERN.test(value.treeDigestSha256) ||
298
+ value.fileCount !== 3 ||
299
+ !(0, internal_js_1.isCanonicalUtcTimestamp)(value.generatedAt) ||
300
+ Date.parse(value.generatedAt) < Date.parse(value.sourceBinding.completedAt)) {
301
+ return false;
302
+ }
303
+ const sourceIdentities = [
304
+ value.sourceBinding.publicationId,
305
+ value.sourceBinding.portalRunId,
306
+ value.sourceBinding.pluginRunId,
307
+ value.sourceBinding.economicsGenerationId,
308
+ value.sourceBinding.economicsFingerprint,
309
+ ];
310
+ return (!sourceIdentities.includes(value.environmentRunId) &&
311
+ (0, internal_js_1.utf8ByteLength)(JSON.stringify(value)) <= contracts_js_1.ENVIRONMENT_CONTRACT_LIMITS_V1.completedPointerBytes);
312
+ };
313
+ exports.isEnvironmentCompiledGenerationPointerV1 = isEnvironmentCompiledGenerationPointerV1;
314
+ /** Validates the artifact kind without widening the closed V1 union. */
315
+ const isEnvironmentArtifactKindV1 = (value) => typeof value === 'string' && ARTIFACT_KINDS.has(value);
316
+ exports.isEnvironmentArtifactKindV1 = isEnvironmentArtifactKindV1;
317
+ /** Validates the V1 safe-label bound used by customer-visible evidence metadata. */
318
+ const isEnvironmentSafeLabelV1 = (value) => (0, internal_js_1.isSafeLabel)(value);
319
+ exports.isEnvironmentSafeLabelV1 = isEnvironmentSafeLabelV1;
320
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/environment/validation.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ export const CLOUD_ACCOUNT_BILLING_EXPORT_LOCATOR_SCHEMA_VERSION = 1;
1
2
  export const AZURE_SYNC_FEATURE_ORDER = [
2
3
  'activityMonitoring',
3
4
  'metrics',
@@ -0,0 +1,8 @@
1
+ /** Shared producer/consumer bounds for the optional V1 discovery projection. */
2
+ export const AZURE_MANUAL_ONBOARDING_BILLING_EXPORT_DISCOVERY_LIMITS_V1 = {
3
+ detectedSources: 50,
4
+ storageOptions: 50,
5
+ warnings: 20,
6
+ };
7
+ export const AZURE_MANUAL_ONBOARDING_IMPORT_SCHEMA_VERSION = 1;
8
+ export const AZURE_MANUAL_ONBOARDING_IMPORT_KIND = 'spotto.azure.manual-onboarding';
@@ -1 +1,14 @@
1
- export {};
1
+ /** Maximum subscriptions accepted by one assisted Azure setup execution. */
2
+ export const AZURE_SP_SETUP_MAX_SELECTED_SUBSCRIPTIONS = 100;
3
+ /** Versioned storage identity shared by assisted and manual Azure onboarding. */
4
+ export const AZURE_SP_BILLING_STORAGE_CONVENTION_V1 = {
5
+ version: 1,
6
+ namePrefix: 'billingexports',
7
+ candidateCount: 20,
8
+ defaultLocation: 'australiaeast',
9
+ purposeTagName: 'SpottoPurpose',
10
+ purposeTagValue: 'BillingExports',
11
+ tenantTagName: 'SpottoTenantId',
12
+ aliasTagName: 'spotto',
13
+ aliasTagValue: 'billing-exports',
14
+ };
@@ -1 +1,27 @@
1
- export {};
1
+ /**
2
+ * Durable setup fields stored only in the protected blob projection.
3
+ * API and cloud-engine storage adapters must consume this exact list.
4
+ */
5
+ export const AZURE_SP_SETUP_DURABLE_STATE_BLOB_ONLY_FIELDS_V1 = [
6
+ 'codeVerifier',
7
+ 'nonce',
8
+ 'encryptedMicrosoftTokenCache',
9
+ 'generatedClientSecretEncrypted',
10
+ 'discoveredTenants',
11
+ 'selectedSubscriptionIds',
12
+ 'subscriptions',
13
+ 'managementGroups',
14
+ 'permissionPlan',
15
+ 'billingExportPlan',
16
+ 'billingExportResults',
17
+ 'billingExportBackfillMarkers',
18
+ 'operationResults',
19
+ 'progress',
20
+ 'selectedPermissionInstanceKeys',
21
+ 'executionRequest',
22
+ 'targetCredentialBaselineHash',
23
+ 'retryAttemptsByOperation',
24
+ 'accountReadiness',
25
+ 'subscriptionReadiness',
26
+ 'targetedRefreshCheckpoints',
27
+ ];
@@ -1,4 +1,5 @@
1
1
  export * from './accounts.js';
2
+ export * from './azureManualOnboarding.js';
2
3
  export * from './azureSpSetup.js';
3
4
  export * from './azureSpSetupDurable.js';
4
5
  export * from './writePermissions.js';
@@ -1,2 +1,11 @@
1
1
  /** Common AI interfaces shared between frontend and backend */
2
- export {};
2
+ import { hasExactKeys, isRecord } from '../environment/internal.js';
3
+ import { isEnvironmentArtifactKindV1, isEnvironmentPortalRouteV1, isEnvironmentSafeLabelV1, isEnvironmentScopeV1, isEnvironmentSourceGenerationV1, } from '../environment/validation.js';
4
+ /** Strictly validates the client-safe environment evidence shape. */
5
+ export const isAIEnvironmentEvidenceMatch = (value) => isRecord(value) &&
6
+ hasExactKeys(value, ['safeLabel', 'portalRoute', 'scope', 'artifactKind', 'sourceGeneration']) &&
7
+ isEnvironmentSafeLabelV1(value.safeLabel) &&
8
+ isEnvironmentPortalRouteV1(value.portalRoute) &&
9
+ isEnvironmentScopeV1(value.scope) &&
10
+ isEnvironmentArtifactKindV1(value.artifactKind) &&
11
+ isEnvironmentSourceGenerationV1(value.sourceGeneration);
@@ -1 +1,6 @@
1
1
  export { validateAwsCommitmentsPlanningViewIdentity } from './commitmentsPlanningValidation.js';
2
+ export * from './organizationCommitments.js';
3
+ export * from './organizationCommitmentsApiValidation.js';
4
+ export * from './organizationCommitmentsValidation.js';
5
+ export * from './portalOrganizationCommitmentsPlanningPublicArtifacts.js';
6
+ export * from './portalOrganizationCommitmentsPlanningPublicArtifactValidation.js';
@@ -6,7 +6,13 @@ export const AWS_ESTATES_MANIFEST_PROVIDER = 'AWS';
6
6
  export const AWS_ESTATE_KINDS = ['standalone', 'organization'];
7
7
  export const AWS_ESTATE_ACCOUNT_SOURCES = ['manual'];
8
8
  export const AWS_ESTATE_ROLE_DEPLOYMENT_MODES = ['customer-managed'];
9
- export const AWS_ESTATE_ACCOUNT_PURPOSES = ['resource-discovery', 'organization-discovery', 'billing-definition', 'billing-storage'];
9
+ export const AWS_ESTATE_ACCOUNT_PURPOSES = [
10
+ 'resource-discovery',
11
+ 'organization-discovery',
12
+ 'commitments-planning',
13
+ 'billing-definition',
14
+ 'billing-storage',
15
+ ];
10
16
  /**
11
17
  * Credential-shaped fields that manifest API boundaries must reject
12
18
  * recursively before persisting untyped JSON.
@@ -1,5 +1,8 @@
1
1
  export * from './estates.js';
2
2
  export * from './commitmentsPlanningValidation.js';
3
+ export * from './organizationCommitments.js';
4
+ export * from './organizationCommitmentsApiValidation.js';
5
+ export * from './organizationCommitmentsValidation.js';
3
6
  export * from './onboarding.js';
4
7
  export * from './pluginPublicArtifacts.js';
5
8
  export * from './pluginPublicArtifactEvidence.js';
@@ -7,6 +10,8 @@ export * from './pluginPublicArtifactValidation.js';
7
10
  export * from './portalPublicArtifacts.js';
8
11
  export * from './portalCommitmentsPlanningPublicArtifacts.js';
9
12
  export * from './portalCommitmentsPlanningPublicArtifactValidation.js';
13
+ export * from './portalOrganizationCommitmentsPlanningPublicArtifacts.js';
14
+ export * from './portalOrganizationCommitmentsPlanningPublicArtifactValidation.js';
10
15
  export * from './portalRelationshipPublicArtifacts.js';
11
16
  export * from './portalRelationshipResourceNodeTypes.js';
12
17
  export * from './portalRelationshipPublicArtifactValidation.js';
@@ -0,0 +1,48 @@
1
+ import { sha256AwsPluginIdentity } from './pluginPublicArtifacts.js';
2
+ export const AWS_ORGANIZATION_COMMITMENTS_SCHEMA_VERSION = 1;
3
+ export const AWS_ORGANIZATION_COMMITMENTS_REFRESH_STAGES = [
4
+ 'account-inventory',
5
+ 'payer-analytics',
6
+ 'payer-recommendations',
7
+ 'materialization',
8
+ 'publication',
9
+ ];
10
+ export const AWS_ORGANIZATION_COMMITMENTS_REFRESH_STATES = ['not-started', 'pending', 'processing', 'fresh', 'partial', 'failed'];
11
+ export const AWS_ORGANIZATION_COMMITMENTS_REFRESH_STAGE_STATUSES = ['pending', 'processing', 'fresh', 'partial', 'failed', 'skipped'];
12
+ export const AWS_ORGANIZATION_COMMITMENTS_SCOPE_UNAVAILABLE_REASONS = [
13
+ 'estate-disabled',
14
+ 'estate-not-ready',
15
+ 'management-account-missing',
16
+ 'commitments-permission-missing',
17
+ 'not-authorized',
18
+ 'unknown',
19
+ ];
20
+ export const AWS_ORGANIZATION_COMMITMENTS_ATTRIBUTION_UNAVAILABLE_REASONS = ['not-collected', 'not-proved', 'source-unavailable'];
21
+ export const AWS_ORGANIZATION_COMMITMENTS_ISSUE_CODES = [
22
+ 'estate-disabled',
23
+ 'manifest-revision-mismatch',
24
+ 'organization-identity-invalid',
25
+ 'management-account-unavailable',
26
+ 'commitments-permission-missing',
27
+ 'account-inventory-partial',
28
+ 'payer-analytics-unavailable',
29
+ 'payer-recommendations-unavailable',
30
+ 'source-refresh-failed',
31
+ 'materialization-failed',
32
+ 'publication-failed',
33
+ 'refresh-cooldown',
34
+ 'unknown',
35
+ ];
36
+ export const AWS_ORGANIZATION_COMMITMENTS_SESSION_ID_PREFIX = 'aws-org-commitments:';
37
+ /** Builds the bounded Service Bus session identity shared by API and engine. */
38
+ export function buildAwsOrganizationCommitmentsSessionId(companyId, estateId) {
39
+ const company = requiredSessionIdentity(companyId, 'companyId');
40
+ const estate = requiredSessionIdentity(estateId, 'estateId');
41
+ return `${AWS_ORGANIZATION_COMMITMENTS_SESSION_ID_PREFIX}${sha256AwsPluginIdentity(JSON.stringify(['aws-organization-commitments', company, estate]))}`;
42
+ }
43
+ function requiredSessionIdentity(value, field) {
44
+ if (typeof value !== 'string' || value.trim() !== value || value.length === 0) {
45
+ throw new Error(`${field} must be a non-empty trimmed string.`);
46
+ }
47
+ return value;
48
+ }