@spottoai/types-package 1.0.2-dev1138.12 → 1.0.2-dev1138.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/dist/accounts/accounts.d.ts +13 -0
- package/dist/accounts/accounts.d.ts.map +1 -1
- package/dist/accounts/azureSpSetup.d.ts +5 -0
- package/dist/accounts/azureSpSetup.d.ts.map +1 -1
- package/dist/accounts/azureSpSetup.js.map +1 -1
- package/dist/accounts/index.d.ts +1 -0
- package/dist/accounts/index.d.ts.map +1 -1
- package/dist/accounts/index.js +1 -0
- package/dist/accounts/index.js.map +1 -1
- package/dist/accounts/subscriptionWriteAccess.d.ts +76 -0
- package/dist/accounts/subscriptionWriteAccess.d.ts.map +1 -0
- package/dist/accounts/subscriptionWriteAccess.js +119 -0
- package/dist/accounts/subscriptionWriteAccess.js.map +1 -0
- package/dist/accounts/writePermissions.d.ts +17 -1
- package/dist/accounts/writePermissions.d.ts.map +1 -1
- package/dist/accounts/writePermissions.js +47 -1
- package/dist/accounts/writePermissions.js.map +1 -1
- package/dist/ai/followUps.d.ts +16 -0
- package/dist/ai/followUps.d.ts.map +1 -0
- package/dist/ai/followUps.js +21 -0
- package/dist/ai/followUps.js.map +1 -0
- package/dist/ai/grounding.d.ts +42 -5
- package/dist/ai/grounding.d.ts.map +1 -1
- package/dist/ai/grounding.js +76 -8
- package/dist/ai/grounding.js.map +1 -1
- package/dist/ai/index.d.ts +4 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +1 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/aws/commitments-planning.d.ts +1 -1
- package/dist/aws/commitments-planning.d.ts.map +1 -1
- package/dist/aws/commitments-planning.js +1 -0
- package/dist/aws/commitments-planning.js.map +1 -1
- package/dist/aws/commitmentsPlanningValidation.d.ts +1 -1
- package/dist/aws/commitmentsPlanningValidation.d.ts.map +1 -1
- package/dist/aws/commitmentsPlanningValidation.js +26 -25
- package/dist/aws/commitmentsPlanningValidation.js.map +1 -1
- package/dist/aws/commitmentsPlanningView.d.ts +49 -0
- package/dist/aws/commitmentsPlanningView.d.ts.map +1 -0
- package/dist/aws/{pluginPublicArtifactEvidence.js → commitmentsPlanningView.js} +1 -1
- package/dist/aws/commitmentsPlanningView.js.map +1 -0
- package/dist/aws/index.d.ts +2 -14
- package/dist/aws/index.d.ts.map +1 -1
- package/dist/aws/index.js +2 -13
- package/dist/aws/index.js.map +1 -1
- package/dist/aws/organizationCommitments.d.ts +2 -1
- package/dist/aws/organizationCommitments.d.ts.map +1 -1
- package/dist/aws/organizationCommitments.js +2 -2
- package/dist/aws/organizationCommitments.js.map +1 -1
- package/dist/aws/organizationCommitmentsApiValidation.d.ts.map +1 -1
- package/dist/aws/organizationCommitmentsApiValidation.js +64 -64
- package/dist/aws/organizationCommitmentsApiValidation.js.map +1 -1
- package/dist/aws/organizationCommitmentsValidation.d.ts.map +1 -1
- package/dist/aws/organizationCommitmentsValidation.js +45 -44
- package/dist/aws/organizationCommitmentsValidation.js.map +1 -1
- package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.d.ts.map +1 -1
- package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.js +79 -76
- package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.js.map +1 -1
- package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.d.ts +1 -2
- package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.d.ts.map +1 -1
- package/dist/aws/portalOrganizationCommitmentsPlanningPublicArtifacts.js.map +1 -1
- package/dist/aws/publicArtifacts.d.ts +2 -37
- package/dist/aws/publicArtifacts.d.ts.map +1 -1
- package/dist/aws/publicArtifacts.js +3 -1
- package/dist/aws/publicArtifacts.js.map +1 -1
- package/dist/aws/relationships.d.ts +5 -3
- package/dist/aws/relationships.d.ts.map +1 -1
- package/dist/aws/relationships.js +18 -3
- package/dist/aws/relationships.js.map +1 -1
- package/dist/aws/requests.d.ts +35 -3
- package/dist/aws/requests.d.ts.map +1 -1
- package/dist/aws/requests.js +5 -3
- package/dist/aws/requests.js.map +1 -1
- package/dist/aws/resourceGraph.d.ts +14 -0
- package/dist/aws/resourceGraph.d.ts.map +1 -0
- package/dist/aws/resourceGraph.js +68 -0
- package/dist/aws/resourceGraph.js.map +1 -0
- package/dist/aws/validationHelpers.d.ts +8 -0
- package/dist/aws/validationHelpers.d.ts.map +1 -0
- package/dist/aws/validationHelpers.js +54 -0
- package/dist/aws/validationHelpers.js.map +1 -0
- package/dist/azure/commitmentsPlanning.d.ts +15 -46
- package/dist/azure/commitmentsPlanning.d.ts.map +1 -1
- package/dist/azure/commitmentsPlanning.js +9 -0
- package/dist/azure/commitmentsPlanning.js.map +1 -1
- package/dist/azure/commitmentsPlanningValidation.d.ts +18 -0
- package/dist/azure/commitmentsPlanningValidation.d.ts.map +1 -0
- package/dist/azure/commitmentsPlanningValidation.js +50 -0
- package/dist/azure/commitmentsPlanningValidation.js.map +1 -0
- package/dist/azure/dataProtection.d.ts +40 -0
- package/dist/azure/dataProtection.d.ts.map +1 -1
- package/dist/azure/governance.d.ts +5 -0
- package/dist/azure/governance.d.ts.map +1 -1
- package/dist/azure/metrics.d.ts +2 -27
- package/dist/azure/metrics.d.ts.map +1 -1
- package/dist/azure/payloads.d.ts +24 -0
- package/dist/azure/payloads.d.ts.map +1 -1
- package/dist/azure/payloads.js +87 -0
- package/dist/azure/payloads.js.map +1 -1
- package/dist/azure/recommendationTracks.d.ts +1 -1
- package/dist/azure/recommendationTracks.d.ts.map +1 -1
- package/dist/azure/reportEvidence.d.ts +192 -11
- package/dist/azure/reportEvidence.d.ts.map +1 -1
- package/dist/azure/reportEvidence.js +9 -1
- package/dist/azure/reportEvidence.js.map +1 -1
- package/dist/azure/reportEvidenceValidation.d.ts.map +1 -1
- package/dist/azure/reportEvidenceValidation.js +201 -5
- package/dist/azure/reportEvidenceValidation.js.map +1 -1
- package/dist/azure/reportEvidenceValidationHelpers.d.ts +3 -16
- package/dist/azure/reportEvidenceValidationHelpers.d.ts.map +1 -1
- package/dist/azure/reportEvidenceValidationHelpers.js +80 -92
- package/dist/azure/reportEvidenceValidationHelpers.js.map +1 -1
- package/dist/azure/resilienceFacts.d.ts +100 -0
- package/dist/azure/resilienceFacts.d.ts.map +1 -0
- package/dist/azure/resilienceFacts.js +20 -0
- package/dist/azure/resilienceFacts.js.map +1 -0
- package/dist/azure/resilienceFactsValidation.d.ts +4 -0
- package/dist/azure/resilienceFactsValidation.d.ts.map +1 -0
- package/dist/azure/resilienceFactsValidation.js +70 -0
- package/dist/azure/resilienceFactsValidation.js.map +1 -0
- package/dist/azure/savings.d.ts +4 -2
- package/dist/azure/savings.d.ts.map +1 -1
- package/dist/azure/serviceRetirement.d.ts +21 -2
- package/dist/azure/serviceRetirement.d.ts.map +1 -1
- package/dist/azure/views.d.ts +24 -1
- package/dist/azure/views.d.ts.map +1 -1
- package/dist/azure/views.js.map +1 -1
- package/dist/common/boundedRows.d.ts +7 -0
- package/dist/common/boundedRows.d.ts.map +1 -0
- package/dist/{scheduler/scheduler.js → common/boundedRows.js} +1 -1
- package/dist/common/boundedRows.js.map +1 -0
- package/dist/common/index.d.ts +3 -0
- package/dist/common/index.d.ts.map +1 -1
- package/dist/common/index.js +3 -0
- package/dist/common/index.js.map +1 -1
- package/dist/common/metricStats.d.ts +29 -0
- package/dist/common/metricStats.d.ts.map +1 -0
- package/dist/{scheduler/bastionSchedule.js → common/metricStats.js} +1 -1
- package/dist/common/metricStats.js.map +1 -0
- package/dist/common/provider.d.ts +2 -0
- package/dist/common/provider.d.ts.map +1 -1
- package/dist/common/relationships.d.ts +3 -3
- package/dist/common/relationships.d.ts.map +1 -1
- package/dist/common/resourceGraph.d.ts +137 -0
- package/dist/common/resourceGraph.d.ts.map +1 -0
- package/dist/common/resourceGraph.js +17 -0
- package/dist/common/resourceGraph.js.map +1 -0
- package/dist/common/resourceGraphValidation.d.ts +30 -0
- package/dist/common/resourceGraphValidation.d.ts.map +1 -0
- package/dist/common/resourceGraphValidation.js +369 -0
- package/dist/common/resourceGraphValidation.js.map +1 -0
- package/dist/common/resourceIdentity.d.ts +28 -0
- package/dist/common/resourceIdentity.d.ts.map +1 -0
- package/dist/common/resourceIdentity.js +35 -0
- package/dist/common/resourceIdentity.js.map +1 -0
- package/dist/common/sha256.d.ts +2 -0
- package/dist/common/sha256.d.ts.map +1 -1
- package/dist/common/sha256.js +3 -0
- package/dist/common/sha256.js.map +1 -1
- package/dist/common/utilizationStories.d.ts +695 -0
- package/dist/common/utilizationStories.d.ts.map +1 -0
- package/dist/common/utilizationStories.js +21 -0
- package/dist/common/utilizationStories.js.map +1 -0
- package/dist/common/utilizationStoriesValidation.d.ts +60 -0
- package/dist/common/utilizationStoriesValidation.d.ts.map +1 -0
- package/dist/common/utilizationStoriesValidation.js +762 -0
- package/dist/common/utilizationStoriesValidation.js.map +1 -0
- package/dist/common/validationHelpers.d.ts +37 -0
- package/dist/common/validationHelpers.d.ts.map +1 -0
- package/dist/common/validationHelpers.js +147 -0
- package/dist/common/validationHelpers.js.map +1 -0
- package/dist/esm/accounts/index.js +1 -0
- package/dist/esm/accounts/subscriptionWriteAccess.js +112 -0
- package/dist/esm/accounts/writePermissions.js +46 -0
- package/dist/esm/ai/followUps.js +16 -0
- package/dist/esm/ai/grounding.js +74 -7
- package/dist/esm/ai/index.js +1 -0
- package/dist/esm/aws/commitments-planning.js +1 -0
- package/dist/esm/aws/commitmentsPlanningValidation.js +2 -1
- package/dist/esm/aws/index.js +2 -13
- package/dist/esm/aws/organizationCommitments.js +2 -2
- package/dist/esm/aws/organizationCommitmentsApiValidation.js +5 -5
- package/dist/esm/aws/organizationCommitmentsValidation.js +2 -1
- package/dist/esm/aws/portalOrganizationCommitmentsPlanningPublicArtifactValidation.js +8 -5
- package/dist/esm/aws/publicArtifacts.js +2 -0
- package/dist/esm/aws/relationships.js +4 -1
- package/dist/esm/aws/requests.js +4 -2
- package/dist/esm/aws/resourceGraph.js +63 -0
- package/dist/esm/aws/validationHelpers.js +46 -0
- package/dist/esm/azure/commitmentsPlanning.js +8 -1
- package/dist/esm/azure/commitmentsPlanningValidation.js +39 -0
- package/dist/esm/azure/payloads.js +84 -1
- package/dist/esm/azure/reportEvidence.js +8 -0
- package/dist/esm/azure/reportEvidenceValidation.js +202 -6
- package/dist/esm/azure/reportEvidenceValidationHelpers.js +7 -19
- package/dist/esm/azure/resilienceFacts.js +16 -0
- package/dist/esm/azure/resilienceFactsValidation.js +64 -0
- package/dist/esm/common/index.js +3 -0
- package/dist/esm/common/resourceGraph.js +13 -0
- package/dist/esm/common/resourceGraphValidation.js +365 -0
- package/dist/esm/common/resourceIdentity.js +24 -0
- package/dist/esm/common/sha256.js +2 -0
- package/dist/esm/common/utilizationStories.js +17 -0
- package/dist/esm/common/utilizationStoriesValidation.js +718 -0
- package/dist/esm/common/validationHelpers.js +115 -0
- package/dist/esm/entries/relationships.js +2 -2
- package/dist/esm/index.js +5 -0
- package/dist/esm/index.vite.js +1 -0
- package/dist/esm/reporting/jobs/index.js +13 -0
- package/dist/esm/reporting/jobs/reportJobIdentity.js +76 -0
- package/dist/esm/reporting/jobs/reportJobMessages.js +47 -0
- package/dist/esm/reporting/jobs/reportJobRow.js +264 -0
- package/dist/esm/reporting/jobs/reportJobSpec.js +295 -0
- package/dist/esm/reporting/jobs/reportJobStatus.js +87 -0
- package/dist/esm/reporting/shared/reportTableEntities.js +41 -0
- package/dist/esm/reporting/shared/reportingDigest.js +57 -0
- package/dist/esm/reporting/shared/reportingIds.js +88 -0
- package/dist/esm/reporting/shared/reportingPaths.js +23 -0
- package/dist/esm/scheduler/index.js +4 -4
- package/dist/esm/scheduler/resourceStrategy.js +2 -0
- package/dist/esm/scheduler/resourceStrategyCapabilityValidation.js +265 -0
- package/dist/esm/scheduler/resourceStrategyContracts.js +20 -0
- package/dist/esm/scheduler/resourceStrategyFinancialValidation.js +145 -0
- package/dist/esm/scheduler/resourceStrategyPermissionValidation.js +190 -0
- package/dist/esm/scheduler/resourceStrategyScheduleValidation.js +506 -0
- package/dist/esm/scheduler/resourceStrategyValidation.js +4 -0
- package/dist/esm/scheduler/resourceStrategyValidationShared.js +261 -0
- package/dist/esm/scheduler/schedulerValidation.js +372 -0
- package/dist/esm/scheduler/weeklyAvailabilityFixtures.js +140 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/index.vite.d.ts +1 -0
- package/dist/index.vite.d.ts.map +1 -1
- package/dist/index.vite.js +1 -0
- package/dist/index.vite.js.map +1 -1
- package/dist/reporting/jobs/index.d.ts +14 -0
- package/dist/reporting/jobs/index.d.ts.map +1 -0
- package/dist/reporting/jobs/index.js +45 -0
- package/dist/reporting/jobs/index.js.map +1 -0
- package/dist/reporting/jobs/reportJobIdentity.d.ts +44 -0
- package/dist/reporting/jobs/reportJobIdentity.d.ts.map +1 -0
- package/dist/reporting/jobs/reportJobIdentity.js +88 -0
- package/dist/reporting/jobs/reportJobIdentity.js.map +1 -0
- package/dist/reporting/jobs/reportJobMessages.d.ts +30 -0
- package/dist/reporting/jobs/reportJobMessages.d.ts.map +1 -0
- package/dist/reporting/jobs/reportJobMessages.js +54 -0
- package/dist/reporting/jobs/reportJobMessages.js.map +1 -0
- package/dist/reporting/jobs/reportJobRow.d.ts +98 -0
- package/dist/reporting/jobs/reportJobRow.d.ts.map +1 -0
- package/dist/reporting/jobs/reportJobRow.js +270 -0
- package/dist/reporting/jobs/reportJobRow.js.map +1 -0
- package/dist/reporting/jobs/reportJobSpec.d.ts +92 -0
- package/dist/reporting/jobs/reportJobSpec.d.ts.map +1 -0
- package/dist/reporting/jobs/reportJobSpec.js +304 -0
- package/dist/reporting/jobs/reportJobSpec.js.map +1 -0
- package/dist/reporting/jobs/reportJobStatus.d.ts +60 -0
- package/dist/reporting/jobs/reportJobStatus.d.ts.map +1 -0
- package/dist/reporting/jobs/reportJobStatus.js +98 -0
- package/dist/reporting/jobs/reportJobStatus.js.map +1 -0
- package/dist/reporting/shared/reportTableEntities.d.ts +23 -0
- package/dist/reporting/shared/reportTableEntities.d.ts.map +1 -0
- package/dist/reporting/shared/reportTableEntities.js +47 -0
- package/dist/reporting/shared/reportTableEntities.js.map +1 -0
- package/dist/reporting/shared/reportingDigest.d.ts +6 -0
- package/dist/reporting/shared/reportingDigest.d.ts.map +1 -0
- package/dist/reporting/shared/reportingDigest.js +63 -0
- package/dist/reporting/shared/reportingDigest.js.map +1 -0
- package/dist/reporting/shared/reportingIds.d.ts +34 -0
- package/dist/reporting/shared/reportingIds.d.ts.map +1 -0
- package/dist/reporting/shared/reportingIds.js +102 -0
- package/dist/reporting/shared/reportingIds.js.map +1 -0
- package/dist/reporting/shared/reportingPaths.d.ts +14 -0
- package/dist/reporting/shared/reportingPaths.d.ts.map +1 -0
- package/dist/reporting/shared/reportingPaths.js +29 -0
- package/dist/reporting/shared/reportingPaths.js.map +1 -0
- package/dist/scheduler/index.d.ts +4 -4
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +4 -4
- package/dist/scheduler/index.js.map +1 -1
- package/dist/scheduler/resourceStrategy.d.ts +3 -0
- package/dist/scheduler/resourceStrategy.d.ts.map +1 -0
- package/dist/scheduler/resourceStrategy.js +19 -0
- package/dist/scheduler/resourceStrategy.js.map +1 -0
- package/dist/scheduler/resourceStrategyCapabilityValidation.d.ts +4 -0
- package/dist/scheduler/resourceStrategyCapabilityValidation.d.ts.map +1 -0
- package/dist/scheduler/resourceStrategyCapabilityValidation.js +270 -0
- package/dist/scheduler/resourceStrategyCapabilityValidation.js.map +1 -0
- package/dist/scheduler/resourceStrategyContracts.d.ts +466 -0
- package/dist/scheduler/resourceStrategyContracts.d.ts.map +1 -0
- package/dist/scheduler/resourceStrategyContracts.js +24 -0
- package/dist/scheduler/resourceStrategyContracts.js.map +1 -0
- package/dist/scheduler/resourceStrategyFinancialValidation.d.ts +5 -0
- package/dist/scheduler/resourceStrategyFinancialValidation.d.ts.map +1 -0
- package/dist/scheduler/resourceStrategyFinancialValidation.js +151 -0
- package/dist/scheduler/resourceStrategyFinancialValidation.js.map +1 -0
- package/dist/scheduler/resourceStrategyPermissionValidation.d.ts +4 -0
- package/dist/scheduler/resourceStrategyPermissionValidation.d.ts.map +1 -0
- package/dist/scheduler/resourceStrategyPermissionValidation.js +195 -0
- package/dist/scheduler/resourceStrategyPermissionValidation.js.map +1 -0
- package/dist/scheduler/resourceStrategyScheduleValidation.d.ts +14 -0
- package/dist/scheduler/resourceStrategyScheduleValidation.d.ts.map +1 -0
- package/dist/scheduler/resourceStrategyScheduleValidation.js +519 -0
- package/dist/scheduler/resourceStrategyScheduleValidation.js.map +1 -0
- package/dist/scheduler/resourceStrategyValidation.d.ts +5 -0
- package/dist/scheduler/resourceStrategyValidation.d.ts.map +1 -0
- package/dist/scheduler/resourceStrategyValidation.js +21 -0
- package/dist/scheduler/resourceStrategyValidation.js.map +1 -0
- package/dist/scheduler/resourceStrategyValidationShared.d.ts +19 -0
- package/dist/scheduler/resourceStrategyValidationShared.d.ts.map +1 -0
- package/dist/scheduler/resourceStrategyValidationShared.js +281 -0
- package/dist/scheduler/resourceStrategyValidationShared.js.map +1 -0
- package/dist/scheduler/schedulerContracts.d.ts +184 -0
- package/dist/scheduler/schedulerContracts.d.ts.map +1 -0
- package/dist/{aws/portalPublicArtifactNestedEvidence.js → scheduler/schedulerContracts.js} +1 -1
- package/dist/scheduler/schedulerContracts.js.map +1 -0
- package/dist/scheduler/schedulerValidation.d.ts +15 -0
- package/dist/scheduler/schedulerValidation.d.ts.map +1 -0
- package/dist/scheduler/schedulerValidation.js +388 -0
- package/dist/scheduler/schedulerValidation.js.map +1 -0
- package/dist/scheduler/weeklyAvailabilityFixtures.d.ts +26 -0
- package/dist/scheduler/weeklyAvailabilityFixtures.d.ts.map +1 -0
- package/dist/scheduler/weeklyAvailabilityFixtures.js +144 -0
- package/dist/scheduler/weeklyAvailabilityFixtures.js.map +1 -0
- package/package.json +26 -7
- package/dist/aws/pluginPublicArtifactBodyValidation.d.ts +0 -10
- package/dist/aws/pluginPublicArtifactBodyValidation.d.ts.map +0 -1
- package/dist/aws/pluginPublicArtifactBodyValidation.js +0 -225
- package/dist/aws/pluginPublicArtifactBodyValidation.js.map +0 -1
- package/dist/aws/pluginPublicArtifactEvidence.d.ts +0 -161
- package/dist/aws/pluginPublicArtifactEvidence.d.ts.map +0 -1
- package/dist/aws/pluginPublicArtifactEvidence.js.map +0 -1
- package/dist/aws/pluginPublicArtifactManifestValidation.d.ts +0 -4
- package/dist/aws/pluginPublicArtifactManifestValidation.d.ts.map +0 -1
- package/dist/aws/pluginPublicArtifactManifestValidation.js +0 -259
- package/dist/aws/pluginPublicArtifactManifestValidation.js.map +0 -1
- package/dist/aws/pluginPublicArtifactSectionValidation.d.ts +0 -6
- package/dist/aws/pluginPublicArtifactSectionValidation.d.ts.map +0 -1
- package/dist/aws/pluginPublicArtifactSectionValidation.js +0 -471
- package/dist/aws/pluginPublicArtifactSectionValidation.js.map +0 -1
- package/dist/aws/pluginPublicArtifactValidation.d.ts +0 -3
- package/dist/aws/pluginPublicArtifactValidation.d.ts.map +0 -1
- package/dist/aws/pluginPublicArtifactValidation.js +0 -9
- package/dist/aws/pluginPublicArtifactValidation.js.map +0 -1
- package/dist/aws/pluginPublicArtifactValidationHelpers.d.ts +0 -23
- package/dist/aws/pluginPublicArtifactValidationHelpers.d.ts.map +0 -1
- package/dist/aws/pluginPublicArtifactValidationHelpers.js +0 -240
- package/dist/aws/pluginPublicArtifactValidationHelpers.js.map +0 -1
- package/dist/aws/pluginPublicArtifacts.d.ts +0 -253
- package/dist/aws/pluginPublicArtifacts.d.ts.map +0 -1
- package/dist/aws/pluginPublicArtifacts.js +0 -51
- package/dist/aws/pluginPublicArtifacts.js.map +0 -1
- package/dist/aws/portalCommitmentsPlanningPublicArtifactValidation.d.ts +0 -4
- package/dist/aws/portalCommitmentsPlanningPublicArtifactValidation.d.ts.map +0 -1
- package/dist/aws/portalCommitmentsPlanningPublicArtifactValidation.js +0 -513
- package/dist/aws/portalCommitmentsPlanningPublicArtifactValidation.js.map +0 -1
- package/dist/aws/portalCommitmentsPlanningPublicArtifacts.d.ts +0 -13
- package/dist/aws/portalCommitmentsPlanningPublicArtifacts.d.ts.map +0 -1
- package/dist/aws/portalCommitmentsPlanningPublicArtifacts.js +0 -5
- package/dist/aws/portalCommitmentsPlanningPublicArtifacts.js.map +0 -1
- package/dist/aws/portalPublicArtifactCurrentValidation.d.ts +0 -4
- package/dist/aws/portalPublicArtifactCurrentValidation.d.ts.map +0 -1
- package/dist/aws/portalPublicArtifactCurrentValidation.js +0 -333
- package/dist/aws/portalPublicArtifactCurrentValidation.js.map +0 -1
- package/dist/aws/portalPublicArtifactEvidenceValidation.d.ts +0 -6
- package/dist/aws/portalPublicArtifactEvidenceValidation.d.ts.map +0 -1
- package/dist/aws/portalPublicArtifactEvidenceValidation.js +0 -301
- package/dist/aws/portalPublicArtifactEvidenceValidation.js.map +0 -1
- package/dist/aws/portalPublicArtifactHistoryAiValidation.d.ts +0 -8
- package/dist/aws/portalPublicArtifactHistoryAiValidation.d.ts.map +0 -1
- package/dist/aws/portalPublicArtifactHistoryAiValidation.js +0 -377
- package/dist/aws/portalPublicArtifactHistoryAiValidation.js.map +0 -1
- package/dist/aws/portalPublicArtifactHistoryTypes.d.ts +0 -178
- package/dist/aws/portalPublicArtifactHistoryTypes.d.ts.map +0 -1
- package/dist/aws/portalPublicArtifactHistoryTypes.js +0 -44
- package/dist/aws/portalPublicArtifactHistoryTypes.js.map +0 -1
- package/dist/aws/portalPublicArtifactNestedEvidence.d.ts +0 -127
- package/dist/aws/portalPublicArtifactNestedEvidence.d.ts.map +0 -1
- package/dist/aws/portalPublicArtifactNestedEvidence.js.map +0 -1
- package/dist/aws/portalPublicArtifactNestedEvidenceValidation.d.ts +0 -6
- package/dist/aws/portalPublicArtifactNestedEvidenceValidation.d.ts.map +0 -1
- package/dist/aws/portalPublicArtifactNestedEvidenceValidation.js +0 -405
- package/dist/aws/portalPublicArtifactNestedEvidenceValidation.js.map +0 -1
- package/dist/aws/portalPublicArtifactValidation.d.ts +0 -3
- package/dist/aws/portalPublicArtifactValidation.d.ts.map +0 -1
- package/dist/aws/portalPublicArtifactValidation.js +0 -14
- package/dist/aws/portalPublicArtifactValidation.js.map +0 -1
- package/dist/aws/portalPublicArtifactValidationCommon.d.ts +0 -30
- package/dist/aws/portalPublicArtifactValidationCommon.d.ts.map +0 -1
- package/dist/aws/portalPublicArtifactValidationCommon.js +0 -167
- package/dist/aws/portalPublicArtifactValidationCommon.js.map +0 -1
- package/dist/aws/portalPublicArtifacts.d.ts +0 -400
- package/dist/aws/portalPublicArtifacts.d.ts.map +0 -1
- package/dist/aws/portalPublicArtifacts.js +0 -85
- package/dist/aws/portalPublicArtifacts.js.map +0 -1
- package/dist/aws/portalRelationshipPublicArtifactValidation.d.ts +0 -4
- package/dist/aws/portalRelationshipPublicArtifactValidation.d.ts.map +0 -1
- package/dist/aws/portalRelationshipPublicArtifactValidation.js +0 -338
- package/dist/aws/portalRelationshipPublicArtifactValidation.js.map +0 -1
- package/dist/aws/portalRelationshipPublicArtifacts.d.ts +0 -196
- package/dist/aws/portalRelationshipPublicArtifacts.d.ts.map +0 -1
- package/dist/aws/portalRelationshipPublicArtifacts.js +0 -63
- package/dist/aws/portalRelationshipPublicArtifacts.js.map +0 -1
- package/dist/aws/portalRelationshipResourceNodeTypes.d.ts +0 -269
- package/dist/aws/portalRelationshipResourceNodeTypes.d.ts.map +0 -1
- package/dist/aws/portalRelationshipResourceNodeTypes.js +0 -3
- package/dist/aws/portalRelationshipResourceNodeTypes.js.map +0 -1
- package/dist/aws/portalRelationshipResourceNodeValidation.d.ts +0 -2
- package/dist/aws/portalRelationshipResourceNodeValidation.d.ts.map +0 -1
- package/dist/aws/portalRelationshipResourceNodeValidation.js +0 -372
- package/dist/aws/portalRelationshipResourceNodeValidation.js.map +0 -1
- package/dist/esm/aws/pluginPublicArtifactBodyValidation.js +0 -217
- package/dist/esm/aws/pluginPublicArtifactManifestValidation.js +0 -255
- package/dist/esm/aws/pluginPublicArtifactSectionValidation.js +0 -464
- package/dist/esm/aws/pluginPublicArtifactValidation.js +0 -2
- package/dist/esm/aws/pluginPublicArtifactValidationHelpers.js +0 -216
- package/dist/esm/aws/pluginPublicArtifacts.js +0 -44
- package/dist/esm/aws/portalCommitmentsPlanningPublicArtifactValidation.js +0 -509
- package/dist/esm/aws/portalCommitmentsPlanningPublicArtifacts.js +0 -1
- package/dist/esm/aws/portalPublicArtifactCurrentValidation.js +0 -328
- package/dist/esm/aws/portalPublicArtifactEvidenceValidation.js +0 -294
- package/dist/esm/aws/portalPublicArtifactHistoryAiValidation.js +0 -368
- package/dist/esm/aws/portalPublicArtifactHistoryTypes.js +0 -40
- package/dist/esm/aws/portalPublicArtifactNestedEvidenceValidation.js +0 -397
- package/dist/esm/aws/portalPublicArtifactValidation.js +0 -2
- package/dist/esm/aws/portalPublicArtifactValidationCommon.js +0 -139
- package/dist/esm/aws/portalPublicArtifacts.js +0 -73
- package/dist/esm/aws/portalRelationshipPublicArtifactValidation.js +0 -334
- package/dist/esm/aws/portalRelationshipPublicArtifacts.js +0 -59
- package/dist/esm/aws/portalRelationshipResourceNodeValidation.js +0 -368
- package/dist/esm/scheduler/bastionScheduleProfile.js +0 -206
- package/dist/esm/scheduler/bastionScheduleValidation.js +0 -401
- package/dist/esm/scheduler/scheduler.js +0 -1
- package/dist/scheduler/bastionSchedule.d.ts +0 -113
- package/dist/scheduler/bastionSchedule.d.ts.map +0 -1
- package/dist/scheduler/bastionSchedule.js.map +0 -1
- package/dist/scheduler/bastionScheduleProfile.d.ts +0 -24
- package/dist/scheduler/bastionScheduleProfile.d.ts.map +0 -1
- package/dist/scheduler/bastionScheduleProfile.js +0 -210
- package/dist/scheduler/bastionScheduleProfile.js.map +0 -1
- package/dist/scheduler/bastionScheduleValidation.d.ts +0 -10
- package/dist/scheduler/bastionScheduleValidation.d.ts.map +0 -1
- package/dist/scheduler/bastionScheduleValidation.js +0 -412
- package/dist/scheduler/bastionScheduleValidation.js.map +0 -1
- package/dist/scheduler/scheduler.d.ts +0 -267
- package/dist/scheduler/scheduler.d.ts.map +0 -1
- package/dist/scheduler/scheduler.js.map +0 -1
- /package/dist/esm/aws/{pluginPublicArtifactEvidence.js → commitmentsPlanningView.js} +0 -0
- /package/dist/esm/{aws/portalPublicArtifactNestedEvidence.js → common/boundedRows.js} +0 -0
- /package/dist/esm/{aws/portalRelationshipResourceNodeTypes.js → common/metricStats.js} +0 -0
- /package/dist/esm/scheduler/{bastionSchedule.js → schedulerContracts.js} +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ProviderName } from '../common/provider.js';
|
|
2
|
-
import { asRecord,
|
|
2
|
+
import { asRecord, assertExactKeys, assertValue } from '../common/validationHelpers.js';
|
|
3
|
+
import { assertAccount } from './validationHelpers.js';
|
|
3
4
|
const FORBIDDEN_AWS_COMMITMENTS_KEYS = new Set([
|
|
4
5
|
'billingScopeId',
|
|
5
6
|
'breakCostEstimate',
|
package/dist/esm/aws/index.js
CHANGED
|
@@ -1,23 +1,12 @@
|
|
|
1
1
|
export * from './estates.js';
|
|
2
|
+
export * from './commitmentsPlanningView.js';
|
|
2
3
|
export * from './commitmentsPlanningValidation.js';
|
|
3
4
|
export * from './organizationCommitments.js';
|
|
4
5
|
export * from './organizationCommitmentsApiValidation.js';
|
|
5
6
|
export * from './organizationCommitmentsValidation.js';
|
|
6
7
|
export * from './onboarding.js';
|
|
7
|
-
export * from './pluginPublicArtifacts.js';
|
|
8
|
-
export * from './pluginPublicArtifactEvidence.js';
|
|
9
|
-
export * from './pluginPublicArtifactValidation.js';
|
|
10
|
-
export * from './portalPublicArtifacts.js';
|
|
11
|
-
export * from './portalCommitmentsPlanningPublicArtifacts.js';
|
|
12
|
-
export * from './portalCommitmentsPlanningPublicArtifactValidation.js';
|
|
13
8
|
export * from './portalOrganizationCommitmentsPlanningPublicArtifacts.js';
|
|
14
9
|
export * from './portalOrganizationCommitmentsPlanningPublicArtifactValidation.js';
|
|
15
|
-
export * from './portalRelationshipPublicArtifacts.js';
|
|
16
|
-
export * from './portalRelationshipResourceNodeTypes.js';
|
|
17
|
-
export * from './portalRelationshipPublicArtifactValidation.js';
|
|
18
|
-
export * from './portalPublicArtifactHistoryTypes.js';
|
|
19
|
-
export * from './portalPublicArtifactNestedEvidence.js';
|
|
20
|
-
export * from './portalPublicArtifactNestedEvidenceValidation.js';
|
|
21
|
-
export * from './portalPublicArtifactValidation.js';
|
|
22
10
|
export * from './publicArtifacts.js';
|
|
23
11
|
export * from './requests.js';
|
|
12
|
+
export * from './resourceGraph.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { sha256Hex } from '../common/sha256.js';
|
|
2
2
|
export const AWS_ORGANIZATION_COMMITMENTS_SCHEMA_VERSION = 1;
|
|
3
3
|
export const AWS_ORGANIZATION_COMMITMENTS_REFRESH_STAGES = [
|
|
4
4
|
'account-inventory',
|
|
@@ -38,7 +38,7 @@ export const AWS_ORGANIZATION_COMMITMENTS_SESSION_ID_PREFIX = 'aws-org-commitmen
|
|
|
38
38
|
export function buildAwsOrganizationCommitmentsSessionId(companyId, estateId) {
|
|
39
39
|
const company = requiredSessionIdentity(companyId, 'companyId');
|
|
40
40
|
const estate = requiredSessionIdentity(estateId, 'estateId');
|
|
41
|
-
return `${AWS_ORGANIZATION_COMMITMENTS_SESSION_ID_PREFIX}${
|
|
41
|
+
return `${AWS_ORGANIZATION_COMMITMENTS_SESSION_ID_PREFIX}${sha256Hex(JSON.stringify(['aws-organization-commitments', company, estate]))}`;
|
|
42
42
|
}
|
|
43
43
|
function requiredSessionIdentity(value, field) {
|
|
44
44
|
if (typeof value !== 'string' || value.trim() !== value || value.length === 0) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AWS_ORGANIZATION_COMMITMENTS_ISSUE_CODES, AWS_ORGANIZATION_COMMITMENTS_REFRESH_STAGES, AWS_ORGANIZATION_COMMITMENTS_REFRESH_STAGE_STATUSES, AWS_ORGANIZATION_COMMITMENTS_REFRESH_STATES, AWS_ORGANIZATION_COMMITMENTS_SCHEMA_VERSION, AWS_ORGANIZATION_COMMITMENTS_SCOPE_UNAVAILABLE_REASONS, } from './organizationCommitments.js';
|
|
2
|
-
import { asRecord, assertExactKeys,
|
|
3
|
-
import { assertAccount } from './
|
|
2
|
+
import { asRecord, assertExactKeys, assertValue, isoTimestamp, nonNegativeInteger, requiredBoolean, requiredEnum, requiredString, validateGeneration, } from '../common/validationHelpers.js';
|
|
3
|
+
import { assertAccount, assertAwsPublicJson } from './validationHelpers.js';
|
|
4
4
|
const ORGANIZATION_ID = /^o-[a-z0-9]{10,32}$/u;
|
|
5
5
|
/** Validates one API-authored organization commitments refresh receipt. */
|
|
6
6
|
export function validateAwsOrganizationCommitmentsRefreshAcceptedResponse(value, expected) {
|
|
@@ -32,7 +32,7 @@ export function validateAwsOrganizationCommitmentsRefreshAcceptedResponse(value,
|
|
|
32
32
|
throw new Error('organizationCommitmentsAdmission.nextEligibleAt must be later than acceptedAt.');
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
|
|
35
|
+
assertAwsPublicJson(response, 'organizationCommitmentsAdmission');
|
|
36
36
|
return value;
|
|
37
37
|
}
|
|
38
38
|
/** Validates the safe organization scope selector response for one company. */
|
|
@@ -73,7 +73,7 @@ export function validateAwsOrganizationCommitmentsScopeListResponse(value, expec
|
|
|
73
73
|
});
|
|
74
74
|
assertUniqueSorted(estateIds, 'organizationCommitmentsScopes.organizations estateId');
|
|
75
75
|
assertUnique(organizationIds, 'organizationCommitmentsScopes.organizations organizationId');
|
|
76
|
-
|
|
76
|
+
assertAwsPublicJson(response, 'organizationCommitmentsScopes');
|
|
77
77
|
return value;
|
|
78
78
|
}
|
|
79
79
|
/** Validates one sanitized Blob-backed organization commitments status projection. */
|
|
@@ -132,7 +132,7 @@ export function validateAwsOrganizationCommitmentsRefreshStatusResponse(value, e
|
|
|
132
132
|
if (state === 'fresh' && response.latestArtifact === undefined) {
|
|
133
133
|
throw new Error('organizationCommitmentsStatus.latestArtifact is required when the refresh is fresh.');
|
|
134
134
|
}
|
|
135
|
-
|
|
135
|
+
assertAwsPublicJson(response, 'organizationCommitmentsStatus');
|
|
136
136
|
return value;
|
|
137
137
|
}
|
|
138
138
|
function validateStages(value) {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ProviderName } from '../common/provider.js';
|
|
2
|
-
import { asRecord,
|
|
2
|
+
import { asRecord, assertExactKeys, assertValue, requiredEnum, requiredString } from '../common/validationHelpers.js';
|
|
3
|
+
import { assertAccount } from './validationHelpers.js';
|
|
3
4
|
const ORGANIZATION_ID = /^o-[a-z0-9]{10,32}$/u;
|
|
4
5
|
const FORBIDDEN_ORGANIZATION_COMMITMENTS_KEYS = new Set([
|
|
5
6
|
'billingScopeId',
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { assertCommitmentsFreshnessDiagnostics } from '../azure/commitmentsPlanningValidation.js';
|
|
1
2
|
import { AWS_ORGANIZATION_COMMITMENTS_ATTRIBUTION_UNAVAILABLE_REASONS, } from './organizationCommitments.js';
|
|
2
3
|
import { validateAwsOrganizationCommitmentsPlanningViewIdentity, } from './organizationCommitmentsValidation.js';
|
|
3
4
|
import { AWS_ORGANIZATION_COMMITMENTS_PLANNING_LOGICAL_NAME, AWS_ORGANIZATION_COMMITMENTS_PUBLIC_ARTIFACT_SCHEMA_VERSION, } from './portalOrganizationCommitmentsPlanningPublicArtifacts.js';
|
|
4
|
-
import { AWS_PORTAL_PUBLIC_ARTIFACT_SCHEMA_VERSION } from './
|
|
5
|
-
import { asRecord, assertExactKeys,
|
|
5
|
+
import { AWS_PORTAL_PUBLIC_ARTIFACT_SCHEMA_VERSION } from './publicArtifacts.js';
|
|
6
|
+
import { asRecord, assertExactKeys, assertValue, finiteNumber, isoTimestamp, requiredEnum, requiredString, validateGeneration, } from '../common/validationHelpers.js';
|
|
7
|
+
import { assertAwsPublicJson } from './validationHelpers.js';
|
|
6
8
|
const TOP_LEVEL_KEYS = [
|
|
7
9
|
'schemaVersion',
|
|
8
10
|
'portalSchemaVersion',
|
|
@@ -31,7 +33,7 @@ const TOP_LEVEL_KEYS = [
|
|
|
31
33
|
export function validateAwsOrganizationCommitmentsPlanningView(value, expected) {
|
|
32
34
|
validateAwsOrganizationCommitmentsPlanningViewIdentity(value, expected);
|
|
33
35
|
validateBody(value);
|
|
34
|
-
|
|
36
|
+
assertAwsPublicJson(value, 'organizationCommitmentsPlanning');
|
|
35
37
|
return value;
|
|
36
38
|
}
|
|
37
39
|
/** Validates one untrusted immutable AWS organization Commitments Planning artifact. */
|
|
@@ -53,7 +55,7 @@ export function validateAwsPortalOrganizationCommitmentsPlanningArtifact(value,
|
|
|
53
55
|
if (artifact.month !== undefined)
|
|
54
56
|
requiredString(artifact.month, 'artifact.month');
|
|
55
57
|
validateAwsOrganizationCommitmentsPlanningView(artifact, expected);
|
|
56
|
-
|
|
58
|
+
assertAwsPublicJson(artifact, 'artifact');
|
|
57
59
|
return value;
|
|
58
60
|
}
|
|
59
61
|
function validateBody(view) {
|
|
@@ -344,7 +346,7 @@ function validateFreshness(value, field) {
|
|
|
344
346
|
requiredEnum(freshness.status, ['current', 'stale', 'partial', 'unavailable'], `${field}.status`);
|
|
345
347
|
isoTimestamp(freshness.generatedAt, `${field}.generatedAt`);
|
|
346
348
|
records(freshness.entries, `${field}.entries`, (entry, itemField) => {
|
|
347
|
-
const item = exact(entry, ['section', 'status', 'generatedAt', 'observedAt', 'lastSuccessfulSyncAt', 'reason', 'sourceKind'], itemField);
|
|
349
|
+
const item = exact(entry, ['section', 'status', 'generatedAt', 'observedAt', 'lastSuccessfulSyncAt', 'ageHours', 'reasonCode', 'reason', 'sourceKind'], itemField);
|
|
348
350
|
requiredString(item.section, `${itemField}.section`);
|
|
349
351
|
requiredEnum(item.status, ['current', 'stale', 'partial', 'unavailable'], `${itemField}.status`);
|
|
350
352
|
optionalTimestamp(item.generatedAt, `${itemField}.generatedAt`);
|
|
@@ -352,6 +354,7 @@ function validateFreshness(value, field) {
|
|
|
352
354
|
optionalTimestamp(item.lastSuccessfulSyncAt, `${itemField}.lastSuccessfulSyncAt`);
|
|
353
355
|
optionalString(item.reason, `${itemField}.reason`);
|
|
354
356
|
optionalString(item.sourceKind, `${itemField}.sourceKind`);
|
|
357
|
+
assertCommitmentsFreshnessDiagnostics(item, itemField);
|
|
355
358
|
});
|
|
356
359
|
optionalStrings(freshness.warnings, `${field}.warnings`);
|
|
357
360
|
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export const AWS_PUBLIC_ARTIFACT_SCHEMA_VERSION = 1;
|
|
2
|
+
/** Portal envelope version shared by the AWS Portal artifacts. */
|
|
3
|
+
export const AWS_PORTAL_PUBLIC_ARTIFACT_SCHEMA_VERSION = 1;
|
|
2
4
|
export const AWS_PUBLIC_ARTIFACT_TYPES = [
|
|
3
5
|
'resource-collection',
|
|
4
6
|
'resource-collection-history',
|
|
@@ -1 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
/** Browser-safe entry for the AWS resource graph contract, its validator, and the provider-neutral graph vocabulary. */
|
|
2
|
+
export * from './resourceGraph.js';
|
|
3
|
+
export * from '../common/resourceGraph.js';
|
|
4
|
+
export * from '../common/resourceIdentity.js';
|
package/dist/esm/aws/requests.js
CHANGED
|
@@ -3,9 +3,11 @@ export const AWS_COMMAND_SCHEMA_VERSION = 1;
|
|
|
3
3
|
/** Canonical provider wire value for AWS commands. */
|
|
4
4
|
export const AWS_COMMAND_PROVIDER = 'aws';
|
|
5
5
|
/** Entities handled by AWS estate orchestration. */
|
|
6
|
-
export const AWS_COMMAND_ENTITIES = ['estate', 'account', 'billing-source', 'organization-commitments'];
|
|
6
|
+
export const AWS_COMMAND_ENTITIES = ['estate', 'account', 'billing-source', 'organization-commitments', 'scheduler'];
|
|
7
7
|
/** Actions supported across AWS estate orchestration commands. */
|
|
8
|
-
export const AWS_COMMAND_ACTIONS = ['reconcile', 'refresh', 'delete'];
|
|
8
|
+
export const AWS_COMMAND_ACTIONS = ['reconcile', 'refresh', 'delete', 'tick'];
|
|
9
|
+
/** Scheduled AWS scan cadences emitted by the enqueue-only API scheduler. */
|
|
10
|
+
export const AWS_SCHEDULED_REFRESH_SCAN_KINDS = ['full', 'components'];
|
|
9
11
|
/** Credential-shaped keys forbidden from shared AWS configuration and commands. */
|
|
10
12
|
export const AWS_FORBIDDEN_CREDENTIAL_FIELDS = [
|
|
11
13
|
'accessKeyId',
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { validateResourceGraphArtifact, } from '../common/resourceGraphValidation.js';
|
|
2
|
+
import { AWS_ACCOUNT_ID_PATTERN, AWS_REGION_PATTERN, isAwsCredentialKey, isForbiddenAwsPublicKey } from './validationHelpers.js';
|
|
3
|
+
/** CloudFormation-style resource type, for example `AWS::EC2::Instance`. */
|
|
4
|
+
export const AWS_RESOURCE_TYPE_PATTERN = /^AWS::[A-Za-z0-9]+::[A-Za-z0-9]+$/;
|
|
5
|
+
/** Region value for account-global resources such as IAM. */
|
|
6
|
+
export const AWS_GLOBAL_REGION = 'global';
|
|
7
|
+
const ARN_PATTERN = /^arn:(aws(?:-[a-z0-9-]+)?):[^:]+:([^:]*):([^:]*):.+$/;
|
|
8
|
+
const AVAILABILITY_ZONE_KEY_PATTERN = /(?:^a|A)vailabilityZone(?:Name)?s?$/;
|
|
9
|
+
const AWS_RESOURCE_GRAPH_RULES = {
|
|
10
|
+
provider: 'aws',
|
|
11
|
+
isAccountId: value => AWS_ACCOUNT_ID_PATTERN.test(value),
|
|
12
|
+
isRegion: value => value === AWS_GLOBAL_REGION || AWS_REGION_PATTERN.test(value),
|
|
13
|
+
isResourceType: value => AWS_RESOURCE_TYPE_PATTERN.test(value),
|
|
14
|
+
validateNativeId: (nativeId, scope, field) => {
|
|
15
|
+
if (nativeId.startsWith('arn:'))
|
|
16
|
+
validateScopedArn(nativeId, scope, field, false);
|
|
17
|
+
},
|
|
18
|
+
validateZone: validateAvailabilityZone,
|
|
19
|
+
validateAttribute: validateAttributeFormat,
|
|
20
|
+
isForbiddenKey: (key, inAttributes) => (inAttributes ? isAwsCredentialKey(key) : isForbiddenAwsPublicKey(key)),
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Validates one untrusted AWS resource graph. Adds AWS identifier formats to
|
|
24
|
+
* the generic structural checks; any discovery family is accepted.
|
|
25
|
+
*/
|
|
26
|
+
export function validateAwsResourceGraphArtifact(value) {
|
|
27
|
+
return validateResourceGraphArtifact(value, AWS_RESOURCE_GRAPH_RULES);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* An ARN must stay inside its node's account and Region. Empty ARN segments
|
|
31
|
+
* (S3, IAM) are allowed; attribute references may also name AWS-owned (`aws`) resources.
|
|
32
|
+
*/
|
|
33
|
+
function validateScopedArn(value, scope, field, allowAwsOwned) {
|
|
34
|
+
const match = ARN_PATTERN.exec(value);
|
|
35
|
+
if (!match)
|
|
36
|
+
throw new Error(`${field} must be a canonical AWS ARN.`);
|
|
37
|
+
const [, , arnRegion, arnAccountId] = match;
|
|
38
|
+
const expectedRegion = scope.region === AWS_GLOBAL_REGION ? '' : scope.region;
|
|
39
|
+
if (arnRegion !== '' && arnRegion !== expectedRegion)
|
|
40
|
+
throw new Error(`${field} ARN Region must match its node Region.`);
|
|
41
|
+
if (arnAccountId !== '' && arnAccountId !== scope.accountId && !(allowAwsOwned && arnAccountId === 'aws'))
|
|
42
|
+
throw new Error(`${field} ARN account must match the artifact account.`);
|
|
43
|
+
}
|
|
44
|
+
function validateAvailabilityZone(value, region, field) {
|
|
45
|
+
if (region === AWS_GLOBAL_REGION || value === region || !value.startsWith(region))
|
|
46
|
+
throw new Error(`${field} must belong to its node Region.`);
|
|
47
|
+
}
|
|
48
|
+
function validateAttributeFormat(key, value, scope, field) {
|
|
49
|
+
if (key.endsWith('Arn')) {
|
|
50
|
+
if (typeof value !== 'string')
|
|
51
|
+
throw new Error(`${field} must be an ARN string.`);
|
|
52
|
+
validateScopedArn(value, scope, field, true);
|
|
53
|
+
}
|
|
54
|
+
if (AVAILABILITY_ZONE_KEY_PATTERN.test(key)) {
|
|
55
|
+
const zones = Array.isArray(value) ? value : [value];
|
|
56
|
+
zones.forEach((zone, index) => {
|
|
57
|
+
const zoneField = Array.isArray(value) ? `${field}[${index}]` : field;
|
|
58
|
+
if (typeof zone !== 'string')
|
|
59
|
+
throw new Error(`${zoneField} must be an Availability Zone name.`);
|
|
60
|
+
validateAvailabilityZone(zone, scope.region ?? AWS_GLOBAL_REGION, zoneField);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { assertPlainJson, assertValue } from '../common/validationHelpers.js';
|
|
2
|
+
import { AWS_FORBIDDEN_CREDENTIAL_FIELDS } from './requests.js';
|
|
3
|
+
export const AWS_ACCOUNT_ID_PATTERN = /^\d{12}$/;
|
|
4
|
+
export const AWS_REGION_PATTERN = /^[a-z]{2}(?:-gov)?-[a-z0-9-]+-\d+$/;
|
|
5
|
+
/** Credential material and setup secrets; rejected at every depth of a public artifact. */
|
|
6
|
+
const CREDENTIAL_KEYS = new Set([...AWS_FORBIDDEN_CREDENTIAL_FIELDS, 'externalId', 'secretReference', 'credentialReference'].map(key => key.toLowerCase()));
|
|
7
|
+
/** Setup locators and engine-operational markers that never belong on a public envelope. */
|
|
8
|
+
const OPERATIONAL_KEYS = new Set([
|
|
9
|
+
'roleArn',
|
|
10
|
+
'secretArn',
|
|
11
|
+
'storagePath',
|
|
12
|
+
'sourcePath',
|
|
13
|
+
'path',
|
|
14
|
+
'blobPath',
|
|
15
|
+
'containerPath',
|
|
16
|
+
'chunk',
|
|
17
|
+
'chunks',
|
|
18
|
+
'lease',
|
|
19
|
+
'retries',
|
|
20
|
+
'retry',
|
|
21
|
+
'refreshState',
|
|
22
|
+
'lastRefreshExecutionRequestId',
|
|
23
|
+
'lastRefreshExecutionRequestedAt',
|
|
24
|
+
'prompt',
|
|
25
|
+
'promptInput',
|
|
26
|
+
'sourceBytes',
|
|
27
|
+
'maxSourceBytes',
|
|
28
|
+
'bedrockRegion',
|
|
29
|
+
'guardrailId',
|
|
30
|
+
'guardrailVersion',
|
|
31
|
+
'etag',
|
|
32
|
+
'eTag',
|
|
33
|
+
'retiredAt',
|
|
34
|
+
].map(key => key.toLowerCase()));
|
|
35
|
+
const OPERATIONAL_KEY_PATTERN = /^(?:source|storage|blob|container)(?:path|uri|url|key)$|^s3(?:bucket|key|uri|url)$/i;
|
|
36
|
+
export const isAwsCredentialKey = (key) => CREDENTIAL_KEYS.has(key.toLowerCase());
|
|
37
|
+
export const isForbiddenAwsPublicKey = (key) => isAwsCredentialKey(key) || OPERATIONAL_KEYS.has(key.toLowerCase()) || OPERATIONAL_KEY_PATTERN.test(key);
|
|
38
|
+
/** Rejects non-JSON values plus credential, physical-path, and operational-marker keys recursively. */
|
|
39
|
+
export function assertAwsPublicJson(value, field) {
|
|
40
|
+
assertPlainJson(value, field, isForbiddenAwsPublicKey);
|
|
41
|
+
}
|
|
42
|
+
export function assertAccount(value, accountId, field) {
|
|
43
|
+
assertValue(value, accountId, field);
|
|
44
|
+
if (!AWS_ACCOUNT_ID_PATTERN.test(accountId))
|
|
45
|
+
throw new Error(`${field} must be a 12-digit AWS account id.`);
|
|
46
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/** Dependency-free runtime guards for Azure commitments planning freshness evidence. */
|
|
2
|
+
import { COMMITMENTS_FRESHNESS_REASON_CODES, } from './commitmentsPlanning.js';
|
|
3
|
+
import { isDateTime, isFiniteNumber, isOptionalString, isRecord, isString, isStringArray } from '../common/validationHelpers.js';
|
|
4
|
+
const FRESHNESS_STATUSES = ['current', 'stale', 'partial', 'unavailable'];
|
|
5
|
+
const SOURCE_KINDS = ['azure-native', 'aws-native', 'spotto-derived', 'fallback-heuristic', 'manual', 'unknown'];
|
|
6
|
+
export const isCommitmentsFreshnessStatus = (value) => typeof value === 'string' && FRESHNESS_STATUSES.includes(value);
|
|
7
|
+
export const isCommitmentsFreshnessReasonCode = (value) => typeof value === 'string' && COMMITMENTS_FRESHNESS_REASON_CODES.includes(value);
|
|
8
|
+
/** Finite, non-negative and rounded to one decimal place. */
|
|
9
|
+
export const isCommitmentsFreshnessAgeHours = (value) => isFiniteNumber(value) && value >= 0 && Number(value.toFixed(1)) === value;
|
|
10
|
+
/**
|
|
11
|
+
* Checks only the diagnostic fields shared by every commitments freshness producer:
|
|
12
|
+
* `ageHours` requires `lastSuccessfulSyncAt` and is a non-negative one-decimal number;
|
|
13
|
+
* `reasonCode` is a known code, and `collection-stale` appears only with status `stale`.
|
|
14
|
+
*/
|
|
15
|
+
export const hasValidCommitmentsFreshnessDiagnostics = (entry) => (entry.ageHours === undefined || (isCommitmentsFreshnessAgeHours(entry.ageHours) && entry.lastSuccessfulSyncAt !== undefined)) &&
|
|
16
|
+
(entry.reasonCode === undefined ||
|
|
17
|
+
(isCommitmentsFreshnessReasonCode(entry.reasonCode) && (entry.reasonCode !== 'collection-stale' || entry.status === 'stale')));
|
|
18
|
+
/** Throwing form of `hasValidCommitmentsFreshnessDiagnostics` for exact public-artifact validators. */
|
|
19
|
+
export function assertCommitmentsFreshnessDiagnostics(entry, field) {
|
|
20
|
+
if (!hasValidCommitmentsFreshnessDiagnostics(entry)) {
|
|
21
|
+
throw new Error(`${field} ageHours must be a non-negative one-decimal number with lastSuccessfulSyncAt, and reasonCode must be a known code (collection-stale only with status stale).`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const isOptionalDateTime = (value) => value === undefined || isDateTime(value);
|
|
25
|
+
export const isCommitmentsFreshnessEntry = (value) => isRecord(value) &&
|
|
26
|
+
isString(value.section) &&
|
|
27
|
+
isCommitmentsFreshnessStatus(value.status) &&
|
|
28
|
+
isOptionalDateTime(value.generatedAt) &&
|
|
29
|
+
isOptionalDateTime(value.observedAt) &&
|
|
30
|
+
isOptionalDateTime(value.lastSuccessfulSyncAt) &&
|
|
31
|
+
isOptionalString(value.reason) &&
|
|
32
|
+
(value.sourceKind === undefined || (typeof value.sourceKind === 'string' && SOURCE_KINDS.includes(value.sourceKind))) &&
|
|
33
|
+
hasValidCommitmentsFreshnessDiagnostics(value);
|
|
34
|
+
export const isCommitmentsFreshnessSummary = (value) => isRecord(value) &&
|
|
35
|
+
isCommitmentsFreshnessStatus(value.status) &&
|
|
36
|
+
isDateTime(value.generatedAt) &&
|
|
37
|
+
Array.isArray(value.entries) &&
|
|
38
|
+
value.entries.every(isCommitmentsFreshnessEntry) &&
|
|
39
|
+
(value.warnings === undefined || isStringArray(value.warnings));
|
|
@@ -1 +1,84 @@
|
|
|
1
|
-
|
|
1
|
+
const SCHEDULER_TICK_PREFIX_V1 = 'scheduler:tick:';
|
|
2
|
+
const SCHEDULER_TICK_MAX_ID_LENGTH_V1 = 128;
|
|
3
|
+
const SCHEDULER_TICK_KEYS_V1 = [
|
|
4
|
+
'schemaVersion',
|
|
5
|
+
'entity',
|
|
6
|
+
'action',
|
|
7
|
+
'companyId',
|
|
8
|
+
'cloudAccountId',
|
|
9
|
+
'tenantId',
|
|
10
|
+
'clientId',
|
|
11
|
+
'tickId',
|
|
12
|
+
'scheduledAtUtc',
|
|
13
|
+
'correlationId',
|
|
14
|
+
];
|
|
15
|
+
const CANONICAL_UTC_TIMESTAMP_MILLISECONDS = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/u;
|
|
16
|
+
const isCanonicalUtcTimestampMilliseconds = (value) => {
|
|
17
|
+
if (typeof value !== 'string' || !CANONICAL_UTC_TIMESTAMP_MILLISECONDS.test(value))
|
|
18
|
+
return false;
|
|
19
|
+
const parsed = Date.parse(value);
|
|
20
|
+
return Number.isFinite(parsed) && new Date(parsed).toISOString() === value;
|
|
21
|
+
};
|
|
22
|
+
const hasExactSchedulerTickKeysV1 = (value) => {
|
|
23
|
+
const keys = Object.keys(value);
|
|
24
|
+
return keys.length === SCHEDULER_TICK_KEYS_V1.length && SCHEDULER_TICK_KEYS_V1.every(key => Object.prototype.hasOwnProperty.call(value, key));
|
|
25
|
+
};
|
|
26
|
+
const normalizeSchedulerTickInstantV1 = (scheduledAt) => {
|
|
27
|
+
if (typeof scheduledAt === 'string') {
|
|
28
|
+
if (!isCanonicalUtcTimestampMilliseconds(scheduledAt)) {
|
|
29
|
+
throw new TypeError('Scheduler tick time must be a canonical UTC timestamp with milliseconds');
|
|
30
|
+
}
|
|
31
|
+
return scheduledAt;
|
|
32
|
+
}
|
|
33
|
+
const milliseconds = scheduledAt instanceof Date ? scheduledAt.getTime() : scheduledAt;
|
|
34
|
+
if (!Number.isFinite(milliseconds))
|
|
35
|
+
throw new TypeError('Scheduler tick time must be finite');
|
|
36
|
+
const normalized = new Date(milliseconds).toISOString();
|
|
37
|
+
if (!isCanonicalUtcTimestampMilliseconds(normalized)) {
|
|
38
|
+
throw new TypeError('Scheduler tick time must use a four-digit UTC year');
|
|
39
|
+
}
|
|
40
|
+
return normalized;
|
|
41
|
+
};
|
|
42
|
+
/** Creates the deterministic internal queue envelope for one cron occurrence. */
|
|
43
|
+
export const createSchedulerTickRequestMessageV1 = (scheduledAt) => {
|
|
44
|
+
const scheduledAtUtc = normalizeSchedulerTickInstantV1(scheduledAt);
|
|
45
|
+
const tickId = `${SCHEDULER_TICK_PREFIX_V1}${scheduledAtUtc}`;
|
|
46
|
+
return {
|
|
47
|
+
schemaVersion: 1,
|
|
48
|
+
entity: 'scheduler',
|
|
49
|
+
action: 'tick',
|
|
50
|
+
companyId: '*',
|
|
51
|
+
cloudAccountId: '*',
|
|
52
|
+
tenantId: '*',
|
|
53
|
+
clientId: '*',
|
|
54
|
+
tickId,
|
|
55
|
+
scheduledAtUtc,
|
|
56
|
+
correlationId: tickId,
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
/** Exact validator for the internal scheduler tick queue boundary. */
|
|
60
|
+
export const isSchedulerTickRequestMessageV1 = (value) => {
|
|
61
|
+
try {
|
|
62
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
63
|
+
return false;
|
|
64
|
+
const candidate = value;
|
|
65
|
+
if (!hasExactSchedulerTickKeysV1(candidate) || !isCanonicalUtcTimestampMilliseconds(candidate['scheduledAtUtc'])) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
const expectedTickId = `${SCHEDULER_TICK_PREFIX_V1}${candidate['scheduledAtUtc']}`;
|
|
69
|
+
return (candidate['schemaVersion'] === 1 &&
|
|
70
|
+
candidate['entity'] === 'scheduler' &&
|
|
71
|
+
candidate['action'] === 'tick' &&
|
|
72
|
+
candidate['companyId'] === '*' &&
|
|
73
|
+
candidate['cloudAccountId'] === '*' &&
|
|
74
|
+
candidate['tenantId'] === '*' &&
|
|
75
|
+
candidate['clientId'] === '*' &&
|
|
76
|
+
typeof candidate['tickId'] === 'string' &&
|
|
77
|
+
candidate['tickId'].length <= SCHEDULER_TICK_MAX_ID_LENGTH_V1 &&
|
|
78
|
+
candidate['tickId'] === expectedTickId &&
|
|
79
|
+
candidate['correlationId'] === expectedTickId);
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
};
|
|
@@ -5,6 +5,8 @@ export const REPORT_EVIDENCE_LIMITS = {
|
|
|
5
5
|
complianceAssessments: 2000,
|
|
6
6
|
activityDays: 400,
|
|
7
7
|
activityMonths: 13,
|
|
8
|
+
commitmentsFreshnessEntries: 50,
|
|
9
|
+
commitmentsFreshnessWarnings: 10,
|
|
8
10
|
recommendationResources: 2,
|
|
9
11
|
resourceCatalogue: 2000,
|
|
10
12
|
totalRecommendationResourceRows: 10000,
|
|
@@ -17,5 +19,11 @@ export const REPORT_EVIDENCE_LIMITS = {
|
|
|
17
19
|
upcomingEvents: 20,
|
|
18
20
|
historyPeriods: 13,
|
|
19
21
|
historyRecommendations: 2000,
|
|
22
|
+
historyComparisonIdentities: 2000,
|
|
23
|
+
costChangePeriods: 13,
|
|
24
|
+
costChangeDrivers: 50,
|
|
25
|
+
costChangeReasons: 10,
|
|
20
26
|
tenantGlobalAdministrators: 50,
|
|
21
27
|
};
|
|
28
|
+
/** Lowercase Azure RBAC principal types. Producers omit `principalType` when the source type is absent or outside this list. */
|
|
29
|
+
export const REPORT_PRINCIPAL_TYPES = ['user', 'group', 'serviceprincipal', 'foreigngroup', 'device'];
|