@spottoai/types-package 1.0.2-beta.310 → 1.0.2-beta.312

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 (76) hide show
  1. package/README.md +14 -4
  2. package/dist/aws/index.d.ts +8 -0
  3. package/dist/aws/index.d.ts.map +1 -1
  4. package/dist/aws/index.js +8 -0
  5. package/dist/aws/index.js.map +1 -1
  6. package/dist/aws/pluginPublicArtifactBodyValidation.d.ts +10 -0
  7. package/dist/aws/pluginPublicArtifactBodyValidation.d.ts.map +1 -0
  8. package/dist/aws/pluginPublicArtifactBodyValidation.js +225 -0
  9. package/dist/aws/pluginPublicArtifactBodyValidation.js.map +1 -0
  10. package/dist/aws/pluginPublicArtifactEvidence.d.ts +161 -0
  11. package/dist/aws/pluginPublicArtifactEvidence.d.ts.map +1 -0
  12. package/dist/aws/pluginPublicArtifactEvidence.js +3 -0
  13. package/dist/aws/pluginPublicArtifactEvidence.js.map +1 -0
  14. package/dist/aws/pluginPublicArtifactManifestValidation.d.ts +4 -0
  15. package/dist/aws/pluginPublicArtifactManifestValidation.d.ts.map +1 -0
  16. package/dist/aws/pluginPublicArtifactManifestValidation.js +259 -0
  17. package/dist/aws/pluginPublicArtifactManifestValidation.js.map +1 -0
  18. package/dist/aws/pluginPublicArtifactSectionValidation.d.ts +6 -0
  19. package/dist/aws/pluginPublicArtifactSectionValidation.d.ts.map +1 -0
  20. package/dist/aws/pluginPublicArtifactSectionValidation.js +471 -0
  21. package/dist/aws/pluginPublicArtifactSectionValidation.js.map +1 -0
  22. package/dist/aws/pluginPublicArtifactValidation.d.ts +3 -0
  23. package/dist/aws/pluginPublicArtifactValidation.d.ts.map +1 -0
  24. package/dist/aws/pluginPublicArtifactValidation.js +9 -0
  25. package/dist/aws/pluginPublicArtifactValidation.js.map +1 -0
  26. package/dist/aws/pluginPublicArtifactValidationHelpers.d.ts +23 -0
  27. package/dist/aws/pluginPublicArtifactValidationHelpers.d.ts.map +1 -0
  28. package/dist/aws/pluginPublicArtifactValidationHelpers.js +241 -0
  29. package/dist/aws/pluginPublicArtifactValidationHelpers.js.map +1 -0
  30. package/dist/aws/pluginPublicArtifacts.d.ts +253 -0
  31. package/dist/aws/pluginPublicArtifacts.d.ts.map +1 -0
  32. package/dist/aws/pluginPublicArtifacts.js +116 -0
  33. package/dist/aws/pluginPublicArtifacts.js.map +1 -0
  34. package/dist/aws/portalPublicArtifactCurrentValidation.d.ts +4 -0
  35. package/dist/aws/portalPublicArtifactCurrentValidation.d.ts.map +1 -0
  36. package/dist/aws/portalPublicArtifactCurrentValidation.js +333 -0
  37. package/dist/aws/portalPublicArtifactCurrentValidation.js.map +1 -0
  38. package/dist/aws/portalPublicArtifactEvidenceValidation.d.ts +6 -0
  39. package/dist/aws/portalPublicArtifactEvidenceValidation.d.ts.map +1 -0
  40. package/dist/aws/portalPublicArtifactEvidenceValidation.js +227 -0
  41. package/dist/aws/portalPublicArtifactEvidenceValidation.js.map +1 -0
  42. package/dist/aws/portalPublicArtifactHistoryAiValidation.d.ts +8 -0
  43. package/dist/aws/portalPublicArtifactHistoryAiValidation.d.ts.map +1 -0
  44. package/dist/aws/portalPublicArtifactHistoryAiValidation.js +377 -0
  45. package/dist/aws/portalPublicArtifactHistoryAiValidation.js.map +1 -0
  46. package/dist/aws/portalPublicArtifactHistoryTypes.d.ts +168 -0
  47. package/dist/aws/portalPublicArtifactHistoryTypes.d.ts.map +1 -0
  48. package/dist/aws/portalPublicArtifactHistoryTypes.js +32 -0
  49. package/dist/aws/portalPublicArtifactHistoryTypes.js.map +1 -0
  50. package/dist/aws/portalPublicArtifactNestedEvidence.d.ts +127 -0
  51. package/dist/aws/portalPublicArtifactNestedEvidence.d.ts.map +1 -0
  52. package/dist/aws/portalPublicArtifactNestedEvidence.js +3 -0
  53. package/dist/aws/portalPublicArtifactNestedEvidence.js.map +1 -0
  54. package/dist/aws/portalPublicArtifactNestedEvidenceValidation.d.ts +6 -0
  55. package/dist/aws/portalPublicArtifactNestedEvidenceValidation.d.ts.map +1 -0
  56. package/dist/aws/portalPublicArtifactNestedEvidenceValidation.js +405 -0
  57. package/dist/aws/portalPublicArtifactNestedEvidenceValidation.js.map +1 -0
  58. package/dist/aws/portalPublicArtifactValidation.d.ts +3 -0
  59. package/dist/aws/portalPublicArtifactValidation.d.ts.map +1 -0
  60. package/dist/aws/portalPublicArtifactValidation.js +14 -0
  61. package/dist/aws/portalPublicArtifactValidation.js.map +1 -0
  62. package/dist/aws/portalPublicArtifactValidationCommon.d.ts +30 -0
  63. package/dist/aws/portalPublicArtifactValidationCommon.d.ts.map +1 -0
  64. package/dist/aws/portalPublicArtifactValidationCommon.js +167 -0
  65. package/dist/aws/portalPublicArtifactValidationCommon.js.map +1 -0
  66. package/dist/aws/portalPublicArtifacts.d.ts +371 -0
  67. package/dist/aws/portalPublicArtifacts.d.ts.map +1 -0
  68. package/dist/aws/portalPublicArtifacts.js +85 -0
  69. package/dist/aws/portalPublicArtifacts.js.map +1 -0
  70. package/dist/aws/publicArtifacts.d.ts +3 -2
  71. package/dist/aws/publicArtifacts.d.ts.map +1 -1
  72. package/dist/aws/publicArtifacts.js +3 -0
  73. package/dist/aws/publicArtifacts.js.map +1 -1
  74. package/dist/integrations/autotask.d.ts +21 -3
  75. package/dist/integrations/autotask.d.ts.map +1 -1
  76. package/package.json +5 -3
package/README.md CHANGED
@@ -43,16 +43,26 @@ import * as Types from '@spottoai/types-package';
43
43
  import { User } from '@spottoai/types-package';
44
44
 
45
45
  // Import AWS-only public artifact contracts
46
- import type {
47
- AwsPortalAccountSummaryArtifact,
48
- AwsPortalResourceCollectionArtifact,
49
- } from '@spottoai/types-package/aws';
46
+ import type { AwsPortalAccountSummaryArtifact, AwsPortalResourceCollectionArtifact } from '@spottoai/types-package/aws';
50
47
  ```
51
48
 
52
49
  The root entry point also exports the provider-neutral artifact generation,
53
50
  manifest, descriptor, and completed-pointer contracts. Storage paths and
54
51
  runtime persistence records deliberately remain owned by the producing engine.
55
52
 
53
+ The root and `/aws` entry points also export the lossless AWS plugin
54
+ subscription/resource body contracts, deterministic logical-name builders, one
55
+ complete active-set manifest, and dependency-free runtime validators. These
56
+ validators are the bounded shared rejection boundary required for immutable
57
+ plugin publication; they perform no I/O.
58
+
59
+ The same entry points export the lossless AWS resource collection, account
60
+ summary, compact retained-history, retained body-reference, and audience-indexed
61
+ AI cost-summary contracts. Package-owned logical names and dependency-free
62
+ validators bind exact account/scope/generation/sibling identity while rejecting
63
+ undeclared, credential-bearing, physical-path, operational-marker, and lossy
64
+ bodies.
65
+
56
66
  ## Development
57
67
 
58
68
  ### Setup
@@ -1,4 +1,12 @@
1
1
  export * from './cloudAccounts';
2
+ export * from './pluginPublicArtifacts';
3
+ export * from './pluginPublicArtifactEvidence';
4
+ export * from './pluginPublicArtifactValidation';
5
+ export * from './portalPublicArtifacts';
6
+ export * from './portalPublicArtifactHistoryTypes';
7
+ export * from './portalPublicArtifactNestedEvidence';
8
+ export * from './portalPublicArtifactNestedEvidenceValidation';
9
+ export * from './portalPublicArtifactValidation';
2
10
  export * from './publicArtifacts';
3
11
  export * from './requests';
4
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/aws/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/aws/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,yBAAyB,CAAC;AACxC,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,kCAAkC,CAAC;AACjD,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC"}
package/dist/aws/index.js CHANGED
@@ -15,6 +15,14 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./cloudAccounts"), exports);
18
+ __exportStar(require("./pluginPublicArtifacts"), exports);
19
+ __exportStar(require("./pluginPublicArtifactEvidence"), exports);
20
+ __exportStar(require("./pluginPublicArtifactValidation"), exports);
21
+ __exportStar(require("./portalPublicArtifacts"), exports);
22
+ __exportStar(require("./portalPublicArtifactHistoryTypes"), exports);
23
+ __exportStar(require("./portalPublicArtifactNestedEvidence"), exports);
24
+ __exportStar(require("./portalPublicArtifactNestedEvidenceValidation"), exports);
25
+ __exportStar(require("./portalPublicArtifactValidation"), exports);
18
26
  __exportStar(require("./publicArtifacts"), exports);
19
27
  __exportStar(require("./requests"), exports);
20
28
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/aws/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,oDAAkC;AAClC,6CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/aws/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,0DAAwC;AACxC,iEAA+C;AAC/C,mEAAiD;AACjD,0DAAwC;AACxC,qEAAmD;AACnD,uEAAqD;AACrD,iFAA+D;AAC/D,mEAAiD;AACjD,oDAAkC;AAClC,6CAA2B"}
@@ -0,0 +1,10 @@
1
+ import { type AwsPluginArtifactTarget, type AwsPluginResourceDetailArtifact, type AwsPluginSubscriptionDetailArtifact } from './pluginPublicArtifacts';
2
+ export { validateSourceBinding } from './pluginPublicArtifactSectionValidation';
3
+ /** Validates and returns one lossless AWS plugin subscription-detail body. */
4
+ export declare function validateAwsPluginSubscriptionDetailArtifact(value: unknown): AwsPluginSubscriptionDetailArtifact;
5
+ /** Validates and returns one lossless AWS plugin resource-detail body. */
6
+ export declare function validateAwsPluginResourceDetailArtifact(value: unknown): AwsPluginResourceDetailArtifact;
7
+ export declare function validateTarget<Kind extends 'subscription-detail' | 'resource-detail'>(value: unknown, kind: Kind): Extract<AwsPluginArtifactTarget, {
8
+ kind: Kind;
9
+ }>;
10
+ //# sourceMappingURL=pluginPublicArtifactBodyValidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginPublicArtifactBodyValidation.d.ts","sourceRoot":"","sources":["../../src/aws/pluginPublicArtifactBodyValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,uBAAuB,EAC5B,KAAK,+BAA+B,EACpC,KAAK,mCAAmC,EACzC,MAAM,yBAAyB,CAAC;AAsBjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAEhF,8EAA8E;AAC9E,wBAAgB,2CAA2C,CAAC,KAAK,EAAE,OAAO,GAAG,mCAAmC,CA0B/G;AAED,0EAA0E;AAC1E,wBAAgB,uCAAuC,CAAC,KAAK,EAAE,OAAO,GAAG,+BAA+B,CA8BvG;AAqBD,wBAAgB,cAAc,CAAC,IAAI,SAAS,qBAAqB,GAAG,iBAAiB,EACnF,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,IAAI,GACT,OAAO,CAAC,uBAAuB,EAAE;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,CA6FlD"}
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateSourceBinding = void 0;
4
+ exports.validateAwsPluginSubscriptionDetailArtifact = validateAwsPluginSubscriptionDetailArtifact;
5
+ exports.validateAwsPluginResourceDetailArtifact = validateAwsPluginResourceDetailArtifact;
6
+ exports.validateTarget = validateTarget;
7
+ const pluginPublicArtifacts_1 = require("./pluginPublicArtifacts");
8
+ const publicArtifacts_1 = require("./publicArtifacts");
9
+ const pluginPublicArtifactValidationHelpers_1 = require("./pluginPublicArtifactValidationHelpers");
10
+ const pluginPublicArtifactSectionValidation_1 = require("./pluginPublicArtifactSectionValidation");
11
+ var pluginPublicArtifactSectionValidation_2 = require("./pluginPublicArtifactSectionValidation");
12
+ Object.defineProperty(exports, "validateSourceBinding", { enumerable: true, get: function () { return pluginPublicArtifactSectionValidation_2.validateSourceBinding; } });
13
+ /** Validates and returns one lossless AWS plugin subscription-detail body. */
14
+ function validateAwsPluginSubscriptionDetailArtifact(value) {
15
+ const artifact = (0, pluginPublicArtifactValidationHelpers_1.asRecord)(value, 'artifact');
16
+ (0, pluginPublicArtifactValidationHelpers_1.assertExactKeys)(artifact, [
17
+ 'schemaVersion',
18
+ 'pluginSchemaVersion',
19
+ 'provider',
20
+ 'accountId',
21
+ 'artifactType',
22
+ 'artifactGeneration',
23
+ 'generatedAt',
24
+ 'logicalName',
25
+ 'target',
26
+ 'sections',
27
+ ], 'artifact');
28
+ validateArtifactEnvelope(artifact, 'plugin-subscription');
29
+ const target = validateTarget(artifact.target, 'subscription-detail');
30
+ const accountId = (0, pluginPublicArtifactValidationHelpers_1.requiredString)(artifact.accountId, 'artifact.accountId');
31
+ (0, pluginPublicArtifactValidationHelpers_1.assertAccount)(target.accountId, accountId, 'artifact.target.accountId');
32
+ (0, pluginPublicArtifactValidationHelpers_1.assertValue)(artifact.logicalName, (0, pluginPublicArtifacts_1.buildAwsPluginSubscriptionLogicalName)(target.targetKeySha256), 'artifact.logicalName');
33
+ (0, pluginPublicArtifactSectionValidation_1.validateSubscriptionSections)(artifact.sections, target, (0, pluginPublicArtifactValidationHelpers_1.requiredString)(artifact.generatedAt, 'artifact.generatedAt'));
34
+ (0, pluginPublicArtifactValidationHelpers_1.assertPublicJson)(artifact, 'artifact');
35
+ return value;
36
+ }
37
+ /** Validates and returns one lossless AWS plugin resource-detail body. */
38
+ function validateAwsPluginResourceDetailArtifact(value) {
39
+ const artifact = (0, pluginPublicArtifactValidationHelpers_1.asRecord)(value, 'artifact');
40
+ (0, pluginPublicArtifactValidationHelpers_1.assertExactKeys)(artifact, [
41
+ 'schemaVersion',
42
+ 'pluginSchemaVersion',
43
+ 'provider',
44
+ 'accountId',
45
+ 'artifactType',
46
+ 'artifactGeneration',
47
+ 'generatedAt',
48
+ 'logicalName',
49
+ 'target',
50
+ 'selector',
51
+ 'stableKey',
52
+ 'sections',
53
+ ], 'artifact');
54
+ validateArtifactEnvelope(artifact, 'plugin-resource');
55
+ const target = validateTarget(artifact.target, 'resource-detail');
56
+ const accountId = (0, pluginPublicArtifactValidationHelpers_1.requiredString)(artifact.accountId, 'artifact.accountId');
57
+ (0, pluginPublicArtifactValidationHelpers_1.assertAccount)(target.accountId, accountId, 'artifact.target.accountId');
58
+ (0, pluginPublicArtifactValidationHelpers_1.assertValue)(artifact.logicalName, (0, pluginPublicArtifacts_1.buildAwsPluginResourceLogicalName)(target.stableKeySha256, target.targetKeySha256), 'artifact.logicalName');
59
+ (0, pluginPublicArtifactValidationHelpers_1.assertJsonEqual)(artifact.selector, target.selector, 'artifact.selector');
60
+ (0, pluginPublicArtifactValidationHelpers_1.assertValue)(artifact.stableKey, target.stableKey, 'artifact.stableKey');
61
+ (0, pluginPublicArtifactSectionValidation_1.validateResourceSections)(artifact.sections, target, (0, pluginPublicArtifactValidationHelpers_1.requiredString)(artifact.generatedAt, 'artifact.generatedAt'));
62
+ (0, pluginPublicArtifactValidationHelpers_1.assertPublicJson)(artifact, 'artifact');
63
+ return value;
64
+ }
65
+ function validateArtifactEnvelope(artifact, artifactType) {
66
+ (0, pluginPublicArtifactValidationHelpers_1.assertValue)(artifact.schemaVersion, publicArtifacts_1.AWS_PUBLIC_ARTIFACT_SCHEMA_VERSION, 'artifact.schemaVersion');
67
+ (0, pluginPublicArtifactValidationHelpers_1.assertValue)(artifact.pluginSchemaVersion, pluginPublicArtifacts_1.AWS_PLUGIN_PUBLIC_ARTIFACT_SCHEMA_VERSION, 'artifact.pluginSchemaVersion');
68
+ (0, pluginPublicArtifactValidationHelpers_1.assertValue)(artifact.provider, 'aws', 'artifact.provider');
69
+ (0, pluginPublicArtifactValidationHelpers_1.requiredString)(artifact.accountId, 'artifact.accountId');
70
+ (0, pluginPublicArtifactValidationHelpers_1.assertValue)(artifact.artifactType, artifactType, 'artifact.artifactType');
71
+ const generation = validateGeneration(artifact.artifactGeneration, 'artifact.artifactGeneration');
72
+ (0, pluginPublicArtifactValidationHelpers_1.assertValue)((0, pluginPublicArtifactValidationHelpers_1.isoTimestamp)(artifact.generatedAt, 'artifact.generatedAt'), generation.generatedAt, 'artifact.generatedAt');
73
+ }
74
+ function validateGeneration(value, field) {
75
+ const generation = (0, pluginPublicArtifactValidationHelpers_1.asRecord)(value, field);
76
+ (0, pluginPublicArtifactValidationHelpers_1.assertExactKeys)(generation, ['runId', 'generatedAt'], field);
77
+ return {
78
+ runId: (0, pluginPublicArtifactValidationHelpers_1.requiredString)(generation.runId, `${field}.runId`),
79
+ generatedAt: (0, pluginPublicArtifactValidationHelpers_1.isoTimestamp)(generation.generatedAt, `${field}.generatedAt`),
80
+ };
81
+ }
82
+ function validateTarget(value, kind) {
83
+ const target = (0, pluginPublicArtifactValidationHelpers_1.asRecord)(value, 'target');
84
+ (0, pluginPublicArtifactValidationHelpers_1.assertValue)(target.kind, kind, 'target.kind');
85
+ (0, pluginPublicArtifactValidationHelpers_1.assertValue)(target.provider, 'aws', 'target.provider');
86
+ (0, pluginPublicArtifactValidationHelpers_1.requiredString)(target.accountId, 'target.accountId');
87
+ (0, pluginPublicArtifactValidationHelpers_1.requiredString)(target.targetKey, 'target.targetKey');
88
+ (0, pluginPublicArtifactValidationHelpers_1.sha256)(target.targetKeySha256, 'target.targetKeySha256');
89
+ (0, pluginPublicArtifactValidationHelpers_1.assertValue)(target.targetKeySha256, (0, pluginPublicArtifacts_1.sha256AwsPluginIdentity)((0, pluginPublicArtifactValidationHelpers_1.requiredString)(target.targetKey, 'target.targetKey')), 'target.targetKeySha256');
90
+ (0, pluginPublicArtifactValidationHelpers_1.validateBilling)(target.billing);
91
+ (0, pluginPublicArtifactValidationHelpers_1.stringArray)(target.resourceRegions, 'target.resourceRegions');
92
+ (0, pluginPublicArtifactValidationHelpers_1.validateMetricWindow)(target.metricTimeWindow, 'target.metricTimeWindow');
93
+ validateRecommendationScopes(target.recommendationScopes, (0, pluginPublicArtifactValidationHelpers_1.requiredString)(target.accountId, 'target.accountId'));
94
+ if (kind === 'subscription-detail') {
95
+ (0, pluginPublicArtifactValidationHelpers_1.assertExactKeys)(target, [
96
+ 'kind',
97
+ 'provider',
98
+ 'accountId',
99
+ 'targetKey',
100
+ 'targetKeySha256',
101
+ 'accountSummaryTargetKey',
102
+ 'resourceCollectionTargetKey',
103
+ 'recommendationsTargetKey',
104
+ 'aiCostSummaryTargetKey',
105
+ 'serviceRetirementTargetKey',
106
+ 'commitmentAnalysisTargetKey',
107
+ 'reliabilityTargetKey',
108
+ 'accountGovernanceTargetKey',
109
+ 'billing',
110
+ 'resourceRegions',
111
+ 'metricTimeWindow',
112
+ 'aiCostSummaryAudience',
113
+ 'serviceRetirementRegions',
114
+ 'recommendationScopes',
115
+ 'commitmentAnalysis',
116
+ 'reliability',
117
+ 'accountGovernance',
118
+ ], 'target');
119
+ (0, pluginPublicArtifactValidationHelpers_1.optionalEnum)(target.aiCostSummaryAudience, ['portal', 'plugin'], 'target.aiCostSummaryAudience');
120
+ (0, pluginPublicArtifactValidationHelpers_1.requiredString)(target.accountSummaryTargetKey, 'target.accountSummaryTargetKey');
121
+ (0, pluginPublicArtifactValidationHelpers_1.requiredString)(target.resourceCollectionTargetKey, 'target.resourceCollectionTargetKey');
122
+ (0, pluginPublicArtifactValidationHelpers_1.requiredString)(target.recommendationsTargetKey, 'target.recommendationsTargetKey');
123
+ (0, pluginPublicArtifactValidationHelpers_1.requiredString)(target.serviceRetirementTargetKey, 'target.serviceRetirementTargetKey');
124
+ validateOptionalTargetKey(target.aiCostSummaryTargetKey, target.aiCostSummaryAudience !== undefined, 'target.aiCostSummaryTargetKey');
125
+ validateOptionalTargetKey(target.commitmentAnalysisTargetKey, target.commitmentAnalysis !== undefined, 'target.commitmentAnalysisTargetKey');
126
+ validateOptionalTargetKey(target.reliabilityTargetKey, target.reliability !== undefined, 'target.reliabilityTargetKey');
127
+ validateOptionalTargetKey(target.accountGovernanceTargetKey, target.accountGovernance !== undefined, 'target.accountGovernanceTargetKey');
128
+ (0, pluginPublicArtifactValidationHelpers_1.stringArray)(target.serviceRetirementRegions, 'target.serviceRetirementRegions');
129
+ validateCommitmentAnalysisTarget(target.commitmentAnalysis);
130
+ validateReliabilityTarget(target.reliability);
131
+ validateAccountGovernanceTarget(target.accountGovernance);
132
+ }
133
+ else {
134
+ (0, pluginPublicArtifactValidationHelpers_1.assertExactKeys)(target, [
135
+ 'kind',
136
+ 'provider',
137
+ 'accountId',
138
+ 'targetKey',
139
+ 'targetKeySha256',
140
+ 'resourceCollectionTargetKey',
141
+ 'recommendationsTargetKey',
142
+ 'billing',
143
+ 'resourceRegions',
144
+ 'metricTimeWindow',
145
+ 'tagRuleScope',
146
+ 'selector',
147
+ 'stableKey',
148
+ 'stableKeySha256',
149
+ 'relationshipTargetKey',
150
+ 'serviceRetirementTargetKey',
151
+ 'recommendationScopes',
152
+ ], 'target');
153
+ (0, pluginPublicArtifactValidationHelpers_1.validateTagRuleScope)(target.tagRuleScope);
154
+ (0, pluginPublicArtifactValidationHelpers_1.requiredString)(target.resourceCollectionTargetKey, 'target.resourceCollectionTargetKey');
155
+ (0, pluginPublicArtifactValidationHelpers_1.requiredString)(target.recommendationsTargetKey, 'target.recommendationsTargetKey');
156
+ (0, pluginPublicArtifactValidationHelpers_1.validateSelector)(target.selector, 'target.selector');
157
+ const stableKey = (0, pluginPublicArtifactValidationHelpers_1.requiredString)(target.stableKey, 'target.stableKey');
158
+ if ((0, pluginPublicArtifactValidationHelpers_1.asRecord)(target.selector, 'target.selector').kind === 'stable-key') {
159
+ (0, pluginPublicArtifactValidationHelpers_1.assertValue)((0, pluginPublicArtifactValidationHelpers_1.asRecord)(target.selector, 'target.selector').stableKey, stableKey, 'target.selector.stableKey');
160
+ }
161
+ (0, pluginPublicArtifactValidationHelpers_1.sha256)(target.stableKeySha256, 'target.stableKeySha256');
162
+ (0, pluginPublicArtifactValidationHelpers_1.assertValue)(target.stableKeySha256, (0, pluginPublicArtifacts_1.sha256AwsPluginIdentity)(stableKey), 'target.stableKeySha256');
163
+ (0, pluginPublicArtifactValidationHelpers_1.requiredString)(target.relationshipTargetKey, 'target.relationshipTargetKey');
164
+ (0, pluginPublicArtifactValidationHelpers_1.requiredString)(target.serviceRetirementTargetKey, 'target.serviceRetirementTargetKey');
165
+ }
166
+ return value;
167
+ }
168
+ function validateOptionalTargetKey(value, required, field) {
169
+ if (required)
170
+ (0, pluginPublicArtifactValidationHelpers_1.requiredString)(value, field);
171
+ else if (value !== undefined)
172
+ throw new Error(`${field} requires its corresponding optional target.`);
173
+ }
174
+ function validateCommitmentAnalysisTarget(value) {
175
+ if (value === undefined)
176
+ return;
177
+ const target = (0, pluginPublicArtifactValidationHelpers_1.asRecord)(value, 'target.commitmentAnalysis');
178
+ (0, pluginPublicArtifactValidationHelpers_1.assertExactKeys)(target, ['resourceRegions', 'maxBenefitEntries'], 'target.commitmentAnalysis');
179
+ (0, pluginPublicArtifactValidationHelpers_1.stringArray)(target.resourceRegions, 'target.commitmentAnalysis.resourceRegions');
180
+ if (!Number.isSafeInteger(target.maxBenefitEntries) || Number(target.maxBenefitEntries) <= 0) {
181
+ throw new Error('target.commitmentAnalysis.maxBenefitEntries must be a positive safe integer.');
182
+ }
183
+ }
184
+ function validateReliabilityTarget(value) {
185
+ if (value === undefined)
186
+ return;
187
+ const target = (0, pluginPublicArtifactValidationHelpers_1.asRecord)(value, 'target.reliability');
188
+ (0, pluginPublicArtifactValidationHelpers_1.assertExactKeys)(target, ['includeTemplateContent', 'includeScoring', 'maxResultsPerSection', 'sectionScopeKeys'], 'target.reliability');
189
+ if (target.includeTemplateContent !== undefined)
190
+ (0, pluginPublicArtifactValidationHelpers_1.assertValue)(target.includeTemplateContent, true, 'target.reliability.includeTemplateContent');
191
+ if (target.includeScoring !== undefined)
192
+ (0, pluginPublicArtifactValidationHelpers_1.assertValue)(target.includeScoring, true, 'target.reliability.includeScoring');
193
+ if (!Number.isSafeInteger(target.maxResultsPerSection) || Number(target.maxResultsPerSection) <= 0) {
194
+ throw new Error('target.reliability.maxResultsPerSection must be a positive safe integer.');
195
+ }
196
+ (0, pluginPublicArtifactValidationHelpers_1.stringArray)(target.sectionScopeKeys, 'target.reliability.sectionScopeKeys');
197
+ }
198
+ function validateAccountGovernanceTarget(value) {
199
+ if (value === undefined)
200
+ return;
201
+ const target = (0, pluginPublicArtifactValidationHelpers_1.asRecord)(value, 'target.accountGovernance');
202
+ (0, pluginPublicArtifactValidationHelpers_1.assertExactKeys)(target, ['apiRegion'], 'target.accountGovernance');
203
+ (0, pluginPublicArtifactValidationHelpers_1.requiredString)(target.apiRegion, 'target.accountGovernance.apiRegion');
204
+ }
205
+ function validateRecommendationScopes(value, accountId) {
206
+ if (!Array.isArray(value))
207
+ throw new Error('target.recommendationScopes must be an array.');
208
+ const scopes = value;
209
+ scopes.forEach((value, index) => {
210
+ const field = `target.recommendationScopes[${index}]`;
211
+ const scope = (0, pluginPublicArtifactValidationHelpers_1.asRecord)(value, field);
212
+ (0, pluginPublicArtifactValidationHelpers_1.assertExactKeys)(scope, ['source', 'scope', 'accountId', 'scopeDiscriminator', 'computeOptimizerFamily', 'resourceRegions', 'targetKey', 'actionabilityTargetKey'], field);
213
+ (0, pluginPublicArtifactValidationHelpers_1.requiredEnum)(scope.source, ['custom', 'compute-optimizer', 'cost-optimization-hub', 'resilience-hub', 'security-hub', 'trusted-advisor', 'well-architected'], `${field}.source`);
214
+ (0, pluginPublicArtifactValidationHelpers_1.assertValue)(scope.scope, 'account', `${field}.scope`);
215
+ (0, pluginPublicArtifactValidationHelpers_1.assertAccount)(scope.accountId, accountId, `${field}.accountId`);
216
+ if (scope.scopeDiscriminator !== undefined)
217
+ (0, pluginPublicArtifactValidationHelpers_1.requiredString)(scope.scopeDiscriminator, `${field}.scopeDiscriminator`);
218
+ if (scope.computeOptimizerFamily !== undefined)
219
+ (0, pluginPublicArtifactValidationHelpers_1.requiredString)(scope.computeOptimizerFamily, `${field}.computeOptimizerFamily`);
220
+ (0, pluginPublicArtifactValidationHelpers_1.stringArray)(scope.resourceRegions, `${field}.resourceRegions`);
221
+ (0, pluginPublicArtifactValidationHelpers_1.requiredString)(scope.targetKey, `${field}.targetKey`);
222
+ (0, pluginPublicArtifactValidationHelpers_1.requiredString)(scope.actionabilityTargetKey, `${field}.actionabilityTargetKey`);
223
+ });
224
+ }
225
+ //# sourceMappingURL=pluginPublicArtifactBodyValidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginPublicArtifactBodyValidation.js","sourceRoot":"","sources":["../../src/aws/pluginPublicArtifactBodyValidation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,161 @@
1
+ import type { JsonObject, JsonValue } from '../common/artifactGeneration';
2
+ import type { AwsPluginBillingScope, AwsPluginMetricTimeWindow, AwsPluginRecommendationScope } from './pluginPublicArtifacts';
3
+ export interface AwsPluginPortalScopeEvidence {
4
+ provider: 'aws';
5
+ accountId: string;
6
+ billing: AwsPluginBillingScope;
7
+ resourceRegions: string[];
8
+ metricTimeWindow: AwsPluginMetricTimeWindow;
9
+ }
10
+ export interface AwsPluginAccountSummaryEvidence {
11
+ artifact: {
12
+ artifactType: 'account-summary';
13
+ artifactVersion: 1;
14
+ generatedAt: string;
15
+ scope: AwsPluginPortalScopeEvidence;
16
+ account: JsonObject;
17
+ billing: JsonObject;
18
+ discovery: JsonObject;
19
+ metrics: JsonObject;
20
+ recommendations: JsonObject;
21
+ };
22
+ }
23
+ export interface AwsPluginResourceSummaryEvidence {
24
+ summary: {
25
+ totalDiscoveredResourceCount: number;
26
+ returnedResourceCount: number;
27
+ emptyCollection: boolean;
28
+ truncated: boolean;
29
+ unmatchedRecommendationResourceCount: number;
30
+ unmatchedBillingExpenseCount: number;
31
+ };
32
+ coverage: JsonObject;
33
+ highlights: AwsPluginResourceItemEvidence[];
34
+ }
35
+ export interface AwsPluginResourceItemEvidence {
36
+ stableKey: string;
37
+ family: string;
38
+ resourceRegion: string;
39
+ resourceType: string;
40
+ resourceArn?: string;
41
+ resourceId?: string;
42
+ resourceName?: string;
43
+ tags?: Record<string, string>;
44
+ spottoTags?: JsonObject;
45
+ discovery: JsonObject;
46
+ billing?: JsonObject;
47
+ metrics?: JsonObject;
48
+ recommendations?: JsonObject;
49
+ }
50
+ export interface AwsPluginAiCostSummaryEvidence {
51
+ audience: 'portal' | 'plugin';
52
+ sourceAccountSummaryGeneratedAt: string;
53
+ artifact: JsonObject;
54
+ }
55
+ export interface AwsPluginSubscriptionLifecycleEvidence {
56
+ stats: {
57
+ entryCount: number;
58
+ matchedResourceCount: number;
59
+ unmatchedSourceEntryCount: number;
60
+ truncated: false;
61
+ };
62
+ refreshMetadataBySource: JsonObject;
63
+ refreshMetadataByFamily: JsonObject;
64
+ highlights: JsonValue[];
65
+ }
66
+ export interface AwsPluginResourceLifecycleEvidence {
67
+ summary: {
68
+ matchedEntryCount: number;
69
+ totalArtifactEntryCount: number;
70
+ };
71
+ entries: JsonValue[];
72
+ }
73
+ export type AwsPluginSubscriptionRecommendationSectionEvidence = {
74
+ status: 'available';
75
+ source: AwsPluginRecommendationScope['source'];
76
+ targetKey: string;
77
+ generatedAt: string;
78
+ scope: Omit<AwsPluginRecommendationScope, 'targetKey' | 'actionabilityTargetKey'>;
79
+ filters: JsonObject;
80
+ summary: JsonObject;
81
+ counts: JsonObject;
82
+ savings: JsonObject;
83
+ evidenceFreshness?: JsonObject;
84
+ templateProvenance?: JsonObject;
85
+ actionability?: JsonObject;
86
+ highlights: JsonValue[];
87
+ } | {
88
+ status: 'not-found';
89
+ source: AwsPluginRecommendationScope['source'];
90
+ targetKey: string;
91
+ } | {
92
+ status: 'unsupported-resource-identity';
93
+ source: AwsPluginRecommendationScope['source'];
94
+ };
95
+ export type AwsPluginResourceRecommendationSectionEvidence = {
96
+ status: 'available';
97
+ source: AwsPluginRecommendationScope['source'];
98
+ targetKey: string;
99
+ generatedAt: string;
100
+ evidenceFreshness?: JsonObject;
101
+ templateProvenance?: JsonObject;
102
+ actionability?: JsonObject;
103
+ artifact: JsonObject;
104
+ } | {
105
+ status: 'not-found';
106
+ source: AwsPluginRecommendationScope['source'];
107
+ targetKey: string;
108
+ } | {
109
+ status: 'unsupported-resource-identity';
110
+ source: AwsPluginRecommendationScope['source'];
111
+ };
112
+ interface AwsPluginRecommendationsEvidenceBase {
113
+ summary: {
114
+ requestedScopeCount: number;
115
+ availableScopeCount: number;
116
+ notFoundScopeCount: number;
117
+ unsupportedScopeCount?: number;
118
+ };
119
+ }
120
+ export interface AwsPluginSubscriptionRecommendationsEvidence extends AwsPluginRecommendationsEvidenceBase {
121
+ sections: AwsPluginSubscriptionRecommendationSectionEvidence[];
122
+ }
123
+ export interface AwsPluginResourceRecommendationsEvidence extends AwsPluginRecommendationsEvidenceBase {
124
+ sections: AwsPluginResourceRecommendationSectionEvidence[];
125
+ }
126
+ export interface AwsPluginCommitmentEvidence {
127
+ request?: JsonObject;
128
+ billing: JsonObject;
129
+ benefitExpiry: JsonObject;
130
+ evidenceSource?: JsonObject;
131
+ }
132
+ export interface AwsPluginReliabilityEvidence {
133
+ request: JsonObject;
134
+ summary: JsonObject;
135
+ sections: JsonValue[];
136
+ }
137
+ export interface AwsPluginGovernanceEvidence {
138
+ workflow: JsonObject;
139
+ checklist: {
140
+ present: boolean;
141
+ targetKey: string;
142
+ summary?: JsonObject;
143
+ };
144
+ complianceResults?: JsonValue[];
145
+ }
146
+ export interface AwsPluginRelationshipEvidence {
147
+ anchorNodeId: string;
148
+ stats: {
149
+ directNodeCount: number;
150
+ directEdgeCount: number;
151
+ unresolvedCount: number;
152
+ };
153
+ nodes: JsonValue[];
154
+ edges: JsonValue[];
155
+ unresolved: JsonValue[];
156
+ }
157
+ export type AwsPluginDeclaredSectionEvidence = AwsPluginAccountSummaryEvidence | AwsPluginResourceSummaryEvidence | AwsPluginAiCostSummaryEvidence | AwsPluginSubscriptionLifecycleEvidence | AwsPluginResourceLifecycleEvidence | AwsPluginSubscriptionRecommendationsEvidence | AwsPluginResourceRecommendationsEvidence | AwsPluginCommitmentEvidence | AwsPluginReliabilityEvidence | AwsPluginGovernanceEvidence | {
158
+ item: AwsPluginResourceItemEvidence;
159
+ } | AwsPluginRelationshipEvidence;
160
+ export {};
161
+ //# sourceMappingURL=pluginPublicArtifactEvidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginPublicArtifactEvidence.d.ts","sourceRoot":"","sources":["../../src/aws/pluginPublicArtifactEvidence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=pluginPublicArtifactEvidence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginPublicArtifactEvidence.js","sourceRoot":"","sources":["../../src/aws/pluginPublicArtifactEvidence.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import { type AwsPluginGenerationManifest } from './pluginPublicArtifacts';
2
+ /** Validates complete active-set identity and targeted carry-forward semantics. */
3
+ export declare function validateAwsPluginGenerationManifest(value: unknown): AwsPluginGenerationManifest;
4
+ //# sourceMappingURL=pluginPublicArtifactManifestValidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluginPublicArtifactManifestValidation.d.ts","sourceRoot":"","sources":["../../src/aws/pluginPublicArtifactManifestValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,2BAA2B,EAGjC,MAAM,yBAAyB,CAAC;AAiBjC,mFAAmF;AACnF,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,OAAO,GAAG,2BAA2B,CAuC/F"}