@spottoai/types-package 1.0.2-beta.356 → 1.0.2-beta.358
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 +26 -0
- package/dist/accounts/azureSpSetup.d.ts +2 -4
- package/dist/accounts/azureSpSetup.d.ts.map +1 -1
- package/dist/azure/billingArtifactCanonicalization.d.ts +28 -0
- package/dist/azure/billingArtifactCanonicalization.d.ts.map +1 -0
- package/dist/azure/billingArtifactCanonicalization.js +291 -0
- package/dist/azure/billingArtifactCanonicalization.js.map +1 -0
- package/dist/azure/billingArtifactEvidence.d.ts +39 -0
- package/dist/azure/billingArtifactEvidence.d.ts.map +1 -0
- package/dist/azure/billingArtifactEvidence.js +29 -0
- package/dist/azure/billingArtifactEvidence.js.map +1 -0
- package/dist/azure/billingArtifactGeneration.d.ts +114 -0
- package/dist/azure/billingArtifactGeneration.d.ts.map +1 -0
- package/dist/azure/billingArtifactGeneration.js +238 -0
- package/dist/azure/billingArtifactGeneration.js.map +1 -0
- package/dist/azure/billingPlots.d.ts +22 -0
- package/dist/azure/billingPlots.d.ts.map +1 -1
- package/dist/azure/billingPlots.js +186 -0
- package/dist/azure/billingPlots.js.map +1 -1
- package/dist/azure/views.d.ts +62 -1
- package/dist/azure/views.d.ts.map +1 -1
- package/dist/azure/views.js +152 -1
- package/dist/azure/views.js.map +1 -1
- package/dist/common/artifactControlData.d.ts +12 -0
- package/dist/common/artifactControlData.d.ts.map +1 -0
- package/dist/common/artifactControlData.js +102 -0
- package/dist/common/artifactControlData.js.map +1 -0
- package/dist/common/artifactEvidence.d.ts +144 -0
- package/dist/common/artifactEvidence.d.ts.map +1 -0
- package/dist/common/artifactEvidence.js +181 -0
- package/dist/common/artifactEvidence.js.map +1 -0
- package/dist/common/artifactEvidenceValidation.d.ts +16 -0
- package/dist/common/artifactEvidenceValidation.d.ts.map +1 -0
- package/dist/common/artifactEvidenceValidation.js +31 -0
- package/dist/common/artifactEvidenceValidation.js.map +1 -0
- package/dist/common/artifactGeneration.d.ts +4 -2
- package/dist/common/artifactGeneration.d.ts.map +1 -1
- package/dist/common/artifactGeneration.js.map +1 -1
- package/dist/common/capabilityPassport.d.ts +6 -11
- package/dist/common/capabilityPassport.d.ts.map +1 -1
- package/dist/common/capabilityPassport.js +2 -10
- package/dist/common/capabilityPassport.js.map +1 -1
- package/dist/esm/azure/billingArtifactCanonicalization.js +281 -0
- package/dist/esm/azure/billingArtifactEvidence.js +23 -0
- package/dist/esm/azure/billingArtifactGeneration.js +229 -0
- package/dist/esm/azure/billingPlots.js +184 -1
- package/dist/esm/azure/views.js +149 -0
- package/dist/esm/common/artifactControlData.js +95 -0
- package/dist/esm/common/artifactEvidence.js +173 -0
- package/dist/esm/common/artifactEvidenceValidation.js +24 -0
- package/dist/esm/common/capabilityPassport.js +2 -10
- package/dist/esm/index.js +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifactControlData.d.ts","sourceRoot":"","sources":["../../src/common/artifactControlData.ts"],"names":[],"mappings":"AA+CA,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAiCD,2FAA2F;AAC3F,eAAO,MAAM,6BAA6B,GAAI,QAAQ,OAAO,EAAE,KAAK,MAAM,KAAG,6BAA6B,EAC/D,CAAC;AAE5C,iGAAiG;AACjG,eAAO,MAAM,4BAA4B,GAAI,QAAQ,OAAO,EAAE,KAAK,MAAM,KAAG,6BAA6B,EACxC,CAAC;AAElE,iGAAiG;AACjG,eAAO,MAAM,oCAAoC,GAAI,OAAO,OAAO,EAAE,yBAAwB,6BAA6B,EAAO,KAAG,OAenI,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.containsForbiddenArtifactControlData = exports.allowedArtifactIdentityField = exports.allowedArtifactReferenceField = void 0;
|
|
4
|
+
const FORBIDDEN_SENSITIVE_FIELDS = new Set([
|
|
5
|
+
'accountkey',
|
|
6
|
+
'accesskey',
|
|
7
|
+
'accesstoken',
|
|
8
|
+
'apikey',
|
|
9
|
+
'authorization',
|
|
10
|
+
'clientsecret',
|
|
11
|
+
'connectionstring',
|
|
12
|
+
'credential',
|
|
13
|
+
'credentials',
|
|
14
|
+
'password',
|
|
15
|
+
'refreshtoken',
|
|
16
|
+
'sastoken',
|
|
17
|
+
'secret',
|
|
18
|
+
'sharedaccesssignature',
|
|
19
|
+
'token',
|
|
20
|
+
]);
|
|
21
|
+
const PHYSICAL_REFERENCE_FIELDS = new Set([
|
|
22
|
+
'artifactpath',
|
|
23
|
+
'blobpath',
|
|
24
|
+
'bloburi',
|
|
25
|
+
'bloburl',
|
|
26
|
+
'containerpath',
|
|
27
|
+
'containeruri',
|
|
28
|
+
'containerurl',
|
|
29
|
+
'filepath',
|
|
30
|
+
'filesystempath',
|
|
31
|
+
'inputmanifestpath',
|
|
32
|
+
'manifestpath',
|
|
33
|
+
'outputmanifestpath',
|
|
34
|
+
'path',
|
|
35
|
+
'physicalpath',
|
|
36
|
+
'physicaluri',
|
|
37
|
+
'physicalurl',
|
|
38
|
+
'sourcepath',
|
|
39
|
+
'sourceuri',
|
|
40
|
+
'sourceurl',
|
|
41
|
+
'storagepath',
|
|
42
|
+
'storageuri',
|
|
43
|
+
'storageurl',
|
|
44
|
+
'uri',
|
|
45
|
+
'url',
|
|
46
|
+
]);
|
|
47
|
+
const PERCENT_ENCODED_BYTE_PATTERN = /%[0-9A-Fa-f]{2}/;
|
|
48
|
+
const URI_SCHEME_PATTERN = /^[A-Za-z][A-Za-z0-9+.-]*:/;
|
|
49
|
+
const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
50
|
+
const hasControlCharacters = (value) => Array.from(value).some(character => character.charCodeAt(0) < 32 || character.charCodeAt(0) === 127);
|
|
51
|
+
const normalizeFieldName = (key) => key.replace(/[-_\s]/g, '').toLowerCase();
|
|
52
|
+
const hasDotTraversal = (value) => value.split(/[\\/]/).some(segment => segment === '.' || segment === '..');
|
|
53
|
+
const isForbiddenReferenceValue = (value, allowUriScheme = false) => hasControlCharacters(value) ||
|
|
54
|
+
PERCENT_ENCODED_BYTE_PATTERN.test(value) ||
|
|
55
|
+
(!allowUriScheme && URI_SCHEME_PATTERN.test(value)) ||
|
|
56
|
+
value.startsWith('/') ||
|
|
57
|
+
value.startsWith('\\\\') ||
|
|
58
|
+
/^[A-Za-z]:[\\/]/.test(value) ||
|
|
59
|
+
hasDotTraversal(value);
|
|
60
|
+
const isSafeAzureResourceId = (key, value) => {
|
|
61
|
+
if (key !== 'resourceId' || typeof value !== 'string' || hasControlCharacters(value) || value.includes('\\'))
|
|
62
|
+
return false;
|
|
63
|
+
const segments = value.split('/');
|
|
64
|
+
return (segments.length >= 3 &&
|
|
65
|
+
segments[0] === '' &&
|
|
66
|
+
segments[1].toLowerCase() === 'subscriptions' &&
|
|
67
|
+
segments
|
|
68
|
+
.slice(2)
|
|
69
|
+
.every(segment => segment.trim() === segment && segment.length > 0 && !/[?#%]/.test(segment) && segment !== '.' && segment !== '..'));
|
|
70
|
+
};
|
|
71
|
+
/** Marks a structurally validated schema field whose logical reference name is allowed. */
|
|
72
|
+
const allowedArtifactReferenceField = (object, key) => isRecord(object) ? [{ object, key }] : [];
|
|
73
|
+
exports.allowedArtifactReferenceField = allowedArtifactReferenceField;
|
|
74
|
+
/** Marks a structurally validated identity field whose value is allowed by its owning schema. */
|
|
75
|
+
const allowedArtifactIdentityField = (object, key) => isRecord(object) ? [{ object, key, allowUriScheme: true }] : [];
|
|
76
|
+
exports.allowedArtifactIdentityField = allowedArtifactIdentityField;
|
|
77
|
+
/** Rejects exact normalized sensitive fields and physical-reference control data recursively. */
|
|
78
|
+
const containsForbiddenArtifactControlData = (value, allowedReferenceFields = []) => {
|
|
79
|
+
if (typeof value === 'string')
|
|
80
|
+
return isForbiddenReferenceValue(value);
|
|
81
|
+
if (Array.isArray(value))
|
|
82
|
+
return value.some(child => (0, exports.containsForbiddenArtifactControlData)(child, allowedReferenceFields));
|
|
83
|
+
if (!isRecord(value))
|
|
84
|
+
return false;
|
|
85
|
+
return Object.entries(value).some(([key, child]) => {
|
|
86
|
+
if (hasControlCharacters(key))
|
|
87
|
+
return true;
|
|
88
|
+
const normalizedKey = normalizeFieldName(key);
|
|
89
|
+
if (FORBIDDEN_SENSITIVE_FIELDS.has(normalizedKey))
|
|
90
|
+
return true;
|
|
91
|
+
const allowedField = allowedReferenceFields.find(field => field.object === value && field.key === key);
|
|
92
|
+
if (allowedField?.allowUriScheme && typeof child === 'string')
|
|
93
|
+
return isForbiddenReferenceValue(child, true);
|
|
94
|
+
if (PHYSICAL_REFERENCE_FIELDS.has(normalizedKey) && !allowedField)
|
|
95
|
+
return true;
|
|
96
|
+
if (isSafeAzureResourceId(key, child))
|
|
97
|
+
return false;
|
|
98
|
+
return (0, exports.containsForbiddenArtifactControlData)(child, allowedReferenceFields);
|
|
99
|
+
});
|
|
100
|
+
};
|
|
101
|
+
exports.containsForbiddenArtifactControlData = containsForbiddenArtifactControlData;
|
|
102
|
+
//# sourceMappingURL=artifactControlData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifactControlData.js","sourceRoot":"","sources":["../../src/common/artifactControlData.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import type { ArtifactProvider } from './artifactGeneration.js';
|
|
2
|
+
export type ArtifactSupportVerdict = 'supported' | 'unsupported' | 'unknown';
|
|
3
|
+
export type ArtifactApplicabilityVerdict = 'applicable' | 'not-applicable' | 'unknown';
|
|
4
|
+
export type ArtifactAttemptOutcome = 'not-attempted' | 'queued' | 'running' | 'succeeded' | 'failed' | 'cancelled' | 'timed-out' | 'dead-lettered' | 'superseded';
|
|
5
|
+
export type ArtifactCoverageVerdict = 'complete' | 'partial' | 'none' | 'unknown';
|
|
6
|
+
export type ArtifactEmptyEvidenceVerdict = 'populated' | 'complete-empty' | 'not-observed' | 'unknown';
|
|
7
|
+
export type ArtifactFreshnessVerdict = 'current' | 'stale' | 'expired' | 'unknown';
|
|
8
|
+
export type ArtifactEvidenceVerdict = 'complete' | 'partial' | 'insufficient' | 'conflicting';
|
|
9
|
+
export type ArtifactProcessingLifecycle = 'queued' | 'running' | 'succeeded' | 'failed' | 'cancelled' | 'timed-out' | 'dead-lettered' | 'superseded';
|
|
10
|
+
export type ArtifactPublicationVerdict = 'completed' | 'partial' | 'suppressed' | 'superseded' | 'quarantined';
|
|
11
|
+
export type BillingArtifactReadState = 'current' | 'stale' | 'partial' | 'fallback' | 'suppressed' | 'unavailable' | 'complete-empty';
|
|
12
|
+
export interface ArtifactOwnershipBinding<Provider extends ArtifactProvider = ArtifactProvider> {
|
|
13
|
+
provider: Provider;
|
|
14
|
+
tenantId: string;
|
|
15
|
+
companyId: string;
|
|
16
|
+
cloudAccountId: string;
|
|
17
|
+
accountId: string;
|
|
18
|
+
ownershipEpochRevision?: number;
|
|
19
|
+
}
|
|
20
|
+
export interface ArtifactRevisionVector {
|
|
21
|
+
ownershipEpochRevision?: number;
|
|
22
|
+
sourceRevision: number;
|
|
23
|
+
policyRevision: number;
|
|
24
|
+
}
|
|
25
|
+
export type ArtifactRevisionComparison = 'newer' | 'equal' | 'older' | 'incomparable' | 'newer-ownership' | 'older-ownership' | 'unenforceable';
|
|
26
|
+
interface ArtifactDecisionIssue {
|
|
27
|
+
code: string;
|
|
28
|
+
blocking: boolean;
|
|
29
|
+
dependency?: string;
|
|
30
|
+
}
|
|
31
|
+
type ArtifactNonBlockingDecisionIssue = ArtifactDecisionIssue & {
|
|
32
|
+
blocking: false;
|
|
33
|
+
};
|
|
34
|
+
export interface ArtifactObservedRange {
|
|
35
|
+
fromInclusive: string;
|
|
36
|
+
throughExclusive: string;
|
|
37
|
+
dateBasis: 'utc' | 'billing-calendar' | 'company-local';
|
|
38
|
+
timeZone?: string;
|
|
39
|
+
}
|
|
40
|
+
interface ArtifactDependencyBase {
|
|
41
|
+
name: string;
|
|
42
|
+
required: boolean;
|
|
43
|
+
support: ArtifactSupportVerdict;
|
|
44
|
+
applicability: ArtifactApplicabilityVerdict;
|
|
45
|
+
freshness: ArtifactFreshnessVerdict;
|
|
46
|
+
generationId?: string;
|
|
47
|
+
digest?: string;
|
|
48
|
+
sourceRevision?: number;
|
|
49
|
+
policyRevision?: number;
|
|
50
|
+
observedRange?: ArtifactObservedRange;
|
|
51
|
+
completeThrough?: string;
|
|
52
|
+
reasonCode?: string;
|
|
53
|
+
}
|
|
54
|
+
type ArtifactPopulatedCompletedDependency = ArtifactDependencyBase & {
|
|
55
|
+
support: 'supported';
|
|
56
|
+
applicability: 'applicable';
|
|
57
|
+
attempt: 'succeeded';
|
|
58
|
+
coverage: 'complete';
|
|
59
|
+
emptyEvidence: 'populated';
|
|
60
|
+
evidence: 'complete';
|
|
61
|
+
publication: 'completed';
|
|
62
|
+
acceptedRowCount?: number;
|
|
63
|
+
emptyProofRef?: never;
|
|
64
|
+
};
|
|
65
|
+
type ArtifactCompleteEmptyCompletedDependency = ArtifactDependencyBase & {
|
|
66
|
+
support: 'supported';
|
|
67
|
+
applicability: 'applicable';
|
|
68
|
+
attempt: 'succeeded';
|
|
69
|
+
coverage: 'complete';
|
|
70
|
+
emptyEvidence: 'complete-empty';
|
|
71
|
+
evidence: 'complete';
|
|
72
|
+
publication: 'completed';
|
|
73
|
+
acceptedRowCount: 0;
|
|
74
|
+
emptyProofRef: string;
|
|
75
|
+
};
|
|
76
|
+
type ArtifactUnpublishedDependency = ArtifactDependencyBase & {
|
|
77
|
+
attempt: ArtifactAttemptOutcome;
|
|
78
|
+
coverage: ArtifactCoverageVerdict;
|
|
79
|
+
evidence: ArtifactEvidenceVerdict;
|
|
80
|
+
publication: Exclude<ArtifactPublicationVerdict, 'completed'>;
|
|
81
|
+
} & ({
|
|
82
|
+
emptyEvidence: Exclude<ArtifactEmptyEvidenceVerdict, 'complete-empty'>;
|
|
83
|
+
acceptedRowCount?: number;
|
|
84
|
+
emptyProofRef?: never;
|
|
85
|
+
} | {
|
|
86
|
+
attempt: 'succeeded';
|
|
87
|
+
coverage: 'complete';
|
|
88
|
+
emptyEvidence: 'complete-empty';
|
|
89
|
+
acceptedRowCount: 0;
|
|
90
|
+
emptyProofRef: string;
|
|
91
|
+
});
|
|
92
|
+
export type ArtifactDependencyDescriptor = ArtifactPopulatedCompletedDependency | ArtifactCompleteEmptyCompletedDependency | ArtifactUnpublishedDependency;
|
|
93
|
+
interface ArtifactClaimDependencyDecisionBase<Issue extends ArtifactDecisionIssue = ArtifactDecisionIssue> {
|
|
94
|
+
claimId: string;
|
|
95
|
+
sectionPaths: string[];
|
|
96
|
+
requiredDependencies: string[];
|
|
97
|
+
issues: Issue[];
|
|
98
|
+
}
|
|
99
|
+
export type ArtifactClaimDependencyDecision = (ArtifactClaimDependencyDecisionBase<ArtifactNonBlockingDecisionIssue> & {
|
|
100
|
+
evidence: 'complete';
|
|
101
|
+
publication: 'completed';
|
|
102
|
+
}) | (ArtifactClaimDependencyDecisionBase & {
|
|
103
|
+
evidence: ArtifactEvidenceVerdict;
|
|
104
|
+
publication: Exclude<ArtifactPublicationVerdict, 'completed'>;
|
|
105
|
+
});
|
|
106
|
+
type ArtifactCompletedDependency = Extract<ArtifactDependencyDescriptor, {
|
|
107
|
+
publication: 'completed';
|
|
108
|
+
}>;
|
|
109
|
+
type ArtifactIncompleteDependency = Exclude<ArtifactDependencyDescriptor, ArtifactCompletedDependency>;
|
|
110
|
+
type ArtifactCompletedDecisionDependency = ArtifactCompletedDependency | (ArtifactIncompleteDependency & {
|
|
111
|
+
required: false;
|
|
112
|
+
});
|
|
113
|
+
type ArtifactCompletedClaimDependencyDecision = Extract<ArtifactClaimDependencyDecision, {
|
|
114
|
+
publication: 'completed';
|
|
115
|
+
}>;
|
|
116
|
+
interface ArtifactPublicationDecisionBase<Dependency extends ArtifactDependencyDescriptor = ArtifactDependencyDescriptor, Claim extends ArtifactClaimDependencyDecision = ArtifactClaimDependencyDecision, Issue extends ArtifactDecisionIssue = ArtifactDecisionIssue> {
|
|
117
|
+
evidence: ArtifactEvidenceVerdict;
|
|
118
|
+
dependencies: Dependency[];
|
|
119
|
+
claims: Claim[];
|
|
120
|
+
issues: Issue[];
|
|
121
|
+
}
|
|
122
|
+
export type ArtifactPublicationDecision = (ArtifactPublicationDecisionBase<ArtifactCompletedDecisionDependency, ArtifactCompletedClaimDependencyDecision, ArtifactNonBlockingDecisionIssue> & {
|
|
123
|
+
processing: 'succeeded';
|
|
124
|
+
evidence: 'complete' | 'partial';
|
|
125
|
+
publication: 'completed';
|
|
126
|
+
}) | (ArtifactPublicationDecisionBase & {
|
|
127
|
+
processing: ArtifactProcessingLifecycle;
|
|
128
|
+
publication: Exclude<ArtifactPublicationVerdict, 'completed'>;
|
|
129
|
+
});
|
|
130
|
+
/** Dependency-free runtime rejection boundary for provider-neutral publication decisions. */
|
|
131
|
+
export declare const isArtifactPublicationDecision: (value: unknown) => value is ArtifactPublicationDecision;
|
|
132
|
+
/** Checks the provider-neutral ownership shape used by observe- and enforce-mode artifacts. */
|
|
133
|
+
export declare const isArtifactOwnershipBinding: (value: unknown) => value is ArtifactOwnershipBinding;
|
|
134
|
+
/** Checks that an ownership binding is valid for enforce-mode publication. */
|
|
135
|
+
export declare const isEnforceableArtifactOwnershipBinding: (value: unknown) => value is ArtifactOwnershipBinding & {
|
|
136
|
+
ownershipEpochRevision: number;
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* Compares ownership first, then source and policy revisions component-wise.
|
|
140
|
+
* Callers must validate both vectors before comparison; this function deliberately compares the supplied values without adding a second validation policy.
|
|
141
|
+
*/
|
|
142
|
+
export declare const compareArtifactRevisionVector: (left: ArtifactRevisionVector, right: ArtifactRevisionVector) => ArtifactRevisionComparison;
|
|
143
|
+
export {};
|
|
144
|
+
//# sourceMappingURL=artifactEvidence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifactEvidence.d.ts","sourceRoot":"","sources":["../../src/common/artifactEvidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.compareArtifactRevisionVector = exports.isEnforceableArtifactOwnershipBinding = exports.isArtifactOwnershipBinding = exports.isArtifactPublicationDecision = void 0;
|
|
4
|
+
const artifactEvidenceValidation_js_1 = require("./artifactEvidenceValidation.js");
|
|
5
|
+
const SUPPORT_VERDICTS = new Set(['supported', 'unsupported', 'unknown']);
|
|
6
|
+
const APPLICABILITY_VERDICTS = new Set(['applicable', 'not-applicable', 'unknown']);
|
|
7
|
+
const ATTEMPT_OUTCOMES = new Set([
|
|
8
|
+
'not-attempted',
|
|
9
|
+
'queued',
|
|
10
|
+
'running',
|
|
11
|
+
'succeeded',
|
|
12
|
+
'failed',
|
|
13
|
+
'cancelled',
|
|
14
|
+
'timed-out',
|
|
15
|
+
'dead-lettered',
|
|
16
|
+
'superseded',
|
|
17
|
+
]);
|
|
18
|
+
const COVERAGE_VERDICTS = new Set(['complete', 'partial', 'none', 'unknown']);
|
|
19
|
+
const EMPTY_EVIDENCE_VERDICTS = new Set(['populated', 'complete-empty', 'not-observed', 'unknown']);
|
|
20
|
+
const FRESHNESS_VERDICTS = new Set(['current', 'stale', 'expired', 'unknown']);
|
|
21
|
+
const EVIDENCE_VERDICTS = new Set(['complete', 'partial', 'insufficient', 'conflicting']);
|
|
22
|
+
const PROCESSING_LIFECYCLES = new Set(['queued', 'running', 'succeeded', 'failed', 'cancelled', 'timed-out', 'dead-lettered', 'superseded']);
|
|
23
|
+
const PUBLICATION_VERDICTS = new Set(['completed', 'partial', 'suppressed', 'superseded', 'quarantined']);
|
|
24
|
+
const PROVIDERS = new Set(['azure', 'aws']);
|
|
25
|
+
const DATE_BASES = new Set(['utc', 'billing-calendar', 'company-local']);
|
|
26
|
+
const SHA256_PATTERN = /^[a-f0-9]{64}$/;
|
|
27
|
+
const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
28
|
+
const isNonEmptyString = (value) => typeof value === 'string' && value.trim().length > 0;
|
|
29
|
+
const isNonNegativeInteger = (value) => Number.isInteger(value) && value >= 0;
|
|
30
|
+
const isPositiveInteger = (value) => Number.isInteger(value) && value > 0;
|
|
31
|
+
const isStringIn = (value, values) => typeof value === 'string' && values.has(value);
|
|
32
|
+
const isCanonicalIsoTimestamp = (value) => {
|
|
33
|
+
if (!isNonEmptyString(value))
|
|
34
|
+
return false;
|
|
35
|
+
const timestamp = Date.parse(value);
|
|
36
|
+
return Number.isFinite(timestamp) && new Date(timestamp).toISOString() === value;
|
|
37
|
+
};
|
|
38
|
+
const isArtifactDecisionIssue = (value) => isRecord(value) &&
|
|
39
|
+
isNonEmptyString(value.code) &&
|
|
40
|
+
typeof value.blocking === 'boolean' &&
|
|
41
|
+
(value.dependency === undefined || isNonEmptyString(value.dependency));
|
|
42
|
+
const isObservedRange = (value) => {
|
|
43
|
+
if (!isRecord(value) ||
|
|
44
|
+
!isCanonicalIsoTimestamp(value.fromInclusive) ||
|
|
45
|
+
!isCanonicalIsoTimestamp(value.throughExclusive) ||
|
|
46
|
+
Date.parse(value.throughExclusive) <= Date.parse(value.fromInclusive) ||
|
|
47
|
+
!isStringIn(value.dateBasis, DATE_BASES)) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
return value.timeZone === undefined || isNonEmptyString(value.timeZone);
|
|
51
|
+
};
|
|
52
|
+
const isArtifactDependencyDescriptor = (value) => {
|
|
53
|
+
if (!isRecord(value) ||
|
|
54
|
+
!isNonEmptyString(value.name) ||
|
|
55
|
+
typeof value.required !== 'boolean' ||
|
|
56
|
+
!isStringIn(value.support, SUPPORT_VERDICTS) ||
|
|
57
|
+
!isStringIn(value.applicability, APPLICABILITY_VERDICTS) ||
|
|
58
|
+
!isStringIn(value.attempt, ATTEMPT_OUTCOMES) ||
|
|
59
|
+
!isStringIn(value.coverage, COVERAGE_VERDICTS) ||
|
|
60
|
+
!isStringIn(value.emptyEvidence, EMPTY_EVIDENCE_VERDICTS) ||
|
|
61
|
+
!isStringIn(value.freshness, FRESHNESS_VERDICTS) ||
|
|
62
|
+
!isStringIn(value.evidence, EVIDENCE_VERDICTS) ||
|
|
63
|
+
!isStringIn(value.publication, PUBLICATION_VERDICTS)) {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
if (value.generationId !== undefined && !isNonEmptyString(value.generationId))
|
|
67
|
+
return false;
|
|
68
|
+
if (value.digest !== undefined && (typeof value.digest !== 'string' || !SHA256_PATTERN.test(value.digest)))
|
|
69
|
+
return false;
|
|
70
|
+
if (!(0, artifactEvidenceValidation_js_1.hasValidOptionalArtifactRevisionComponents)(value))
|
|
71
|
+
return false;
|
|
72
|
+
if (value.observedRange !== undefined && !isObservedRange(value.observedRange))
|
|
73
|
+
return false;
|
|
74
|
+
if (value.completeThrough !== undefined && !isCanonicalIsoTimestamp(value.completeThrough))
|
|
75
|
+
return false;
|
|
76
|
+
if (value.reasonCode !== undefined && !isNonEmptyString(value.reasonCode))
|
|
77
|
+
return false;
|
|
78
|
+
if (value.acceptedRowCount !== undefined && !isNonNegativeInteger(value.acceptedRowCount))
|
|
79
|
+
return false;
|
|
80
|
+
if (value.emptyEvidence === 'complete-empty') {
|
|
81
|
+
if (value.attempt !== 'succeeded' ||
|
|
82
|
+
value.coverage !== 'complete' ||
|
|
83
|
+
value.acceptedRowCount !== 0 ||
|
|
84
|
+
!(0, artifactEvidenceValidation_js_1.isStrictLogicalArtifactReference)(value.emptyProofRef)) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else if (value.emptyProofRef !== undefined) {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
if (value.publication === 'completed') {
|
|
92
|
+
return (value.support === 'supported' &&
|
|
93
|
+
value.applicability === 'applicable' &&
|
|
94
|
+
value.attempt === 'succeeded' &&
|
|
95
|
+
value.coverage === 'complete' &&
|
|
96
|
+
(value.emptyEvidence === 'populated' || value.emptyEvidence === 'complete-empty') &&
|
|
97
|
+
value.evidence === 'complete');
|
|
98
|
+
}
|
|
99
|
+
return true;
|
|
100
|
+
};
|
|
101
|
+
const isArtifactClaimDependencyDecision = (value) => {
|
|
102
|
+
if (!isRecord(value) ||
|
|
103
|
+
!isNonEmptyString(value.claimId) ||
|
|
104
|
+
!Array.isArray(value.sectionPaths) ||
|
|
105
|
+
!value.sectionPaths.every(isNonEmptyString) ||
|
|
106
|
+
!Array.isArray(value.requiredDependencies) ||
|
|
107
|
+
!value.requiredDependencies.every(isNonEmptyString) ||
|
|
108
|
+
!isStringIn(value.evidence, EVIDENCE_VERDICTS) ||
|
|
109
|
+
!isStringIn(value.publication, PUBLICATION_VERDICTS) ||
|
|
110
|
+
!Array.isArray(value.issues) ||
|
|
111
|
+
!value.issues.every(isArtifactDecisionIssue)) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
return value.publication !== 'completed' || (value.evidence === 'complete' && !value.issues.some(issue => issue.blocking));
|
|
115
|
+
};
|
|
116
|
+
const hasUniqueValues = (values) => new Set(values).size === values.length;
|
|
117
|
+
/** Dependency-free runtime rejection boundary for provider-neutral publication decisions. */
|
|
118
|
+
const isArtifactPublicationDecision = (value) => {
|
|
119
|
+
if (!isRecord(value) ||
|
|
120
|
+
!isStringIn(value.processing, PROCESSING_LIFECYCLES) ||
|
|
121
|
+
!isStringIn(value.evidence, EVIDENCE_VERDICTS) ||
|
|
122
|
+
!isStringIn(value.publication, PUBLICATION_VERDICTS) ||
|
|
123
|
+
!Array.isArray(value.dependencies) ||
|
|
124
|
+
!value.dependencies.every(isArtifactDependencyDescriptor) ||
|
|
125
|
+
!Array.isArray(value.claims) ||
|
|
126
|
+
!value.claims.every(isArtifactClaimDependencyDecision) ||
|
|
127
|
+
!Array.isArray(value.issues) ||
|
|
128
|
+
!value.issues.every(isArtifactDecisionIssue)) {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
const dependencyNames = value.dependencies.map(dependency => dependency.name);
|
|
132
|
+
const claimIds = value.claims.map(claim => claim.claimId);
|
|
133
|
+
if (!hasUniqueValues(dependencyNames) || !hasUniqueValues(claimIds))
|
|
134
|
+
return false;
|
|
135
|
+
if (!value.claims.every(claim => hasUniqueValues(claim.requiredDependencies)))
|
|
136
|
+
return false;
|
|
137
|
+
if (value.publication !== 'completed')
|
|
138
|
+
return true;
|
|
139
|
+
const completedDependencies = new Set(value.dependencies.filter(dependency => dependency.publication === 'completed').map(dependency => dependency.name));
|
|
140
|
+
return (value.processing === 'succeeded' &&
|
|
141
|
+
(value.evidence === 'complete' || value.evidence === 'partial') &&
|
|
142
|
+
value.dependencies.every(dependency => !dependency.required || dependency.publication === 'completed') &&
|
|
143
|
+
value.claims.every(claim => claim.publication === 'completed' && claim.requiredDependencies.every(dependency => completedDependencies.has(dependency))) &&
|
|
144
|
+
!value.issues.some(issue => issue.blocking));
|
|
145
|
+
};
|
|
146
|
+
exports.isArtifactPublicationDecision = isArtifactPublicationDecision;
|
|
147
|
+
/** Checks the provider-neutral ownership shape used by observe- and enforce-mode artifacts. */
|
|
148
|
+
const isArtifactOwnershipBinding = (value) => isRecord(value) &&
|
|
149
|
+
isStringIn(value.provider, PROVIDERS) &&
|
|
150
|
+
isNonEmptyString(value.tenantId) &&
|
|
151
|
+
isNonEmptyString(value.companyId) &&
|
|
152
|
+
isNonEmptyString(value.cloudAccountId) &&
|
|
153
|
+
isNonEmptyString(value.accountId) &&
|
|
154
|
+
(value.ownershipEpochRevision === undefined || isPositiveInteger(value.ownershipEpochRevision));
|
|
155
|
+
exports.isArtifactOwnershipBinding = isArtifactOwnershipBinding;
|
|
156
|
+
/** Checks that an ownership binding is valid for enforce-mode publication. */
|
|
157
|
+
const isEnforceableArtifactOwnershipBinding = (value) => (0, exports.isArtifactOwnershipBinding)(value) && value.ownershipEpochRevision !== undefined;
|
|
158
|
+
exports.isEnforceableArtifactOwnershipBinding = isEnforceableArtifactOwnershipBinding;
|
|
159
|
+
/**
|
|
160
|
+
* Compares ownership first, then source and policy revisions component-wise.
|
|
161
|
+
* Callers must validate both vectors before comparison; this function deliberately compares the supplied values without adding a second validation policy.
|
|
162
|
+
*/
|
|
163
|
+
const compareArtifactRevisionVector = (left, right) => {
|
|
164
|
+
if (left.ownershipEpochRevision === undefined || right.ownershipEpochRevision === undefined)
|
|
165
|
+
return 'unenforceable';
|
|
166
|
+
if (left.ownershipEpochRevision > right.ownershipEpochRevision)
|
|
167
|
+
return 'newer-ownership';
|
|
168
|
+
if (left.ownershipEpochRevision < right.ownershipEpochRevision)
|
|
169
|
+
return 'older-ownership';
|
|
170
|
+
const sourceComparison = Math.sign(left.sourceRevision - right.sourceRevision);
|
|
171
|
+
const policyComparison = Math.sign(left.policyRevision - right.policyRevision);
|
|
172
|
+
if (sourceComparison === 0 && policyComparison === 0)
|
|
173
|
+
return 'equal';
|
|
174
|
+
if (sourceComparison >= 0 && policyComparison >= 0)
|
|
175
|
+
return 'newer';
|
|
176
|
+
if (sourceComparison <= 0 && policyComparison <= 0)
|
|
177
|
+
return 'older';
|
|
178
|
+
return 'incomparable';
|
|
179
|
+
};
|
|
180
|
+
exports.compareArtifactRevisionVector = compareArtifactRevisionVector;
|
|
181
|
+
//# sourceMappingURL=artifactEvidence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifactEvidence.js","sourceRoot":"","sources":["../../src/common/artifactEvidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** Validates a generation-relative logical artifact reference without accepting physical-path encodings. */
|
|
2
|
+
export declare const isStrictLogicalArtifactReference: (value: unknown) => value is string;
|
|
3
|
+
interface RuntimeArtifactRevisionVector {
|
|
4
|
+
ownershipEpochRevision?: number;
|
|
5
|
+
sourceRevision: number;
|
|
6
|
+
policyRevision: number;
|
|
7
|
+
}
|
|
8
|
+
/** Validates the positive source/policy revision vector shared by evidence producers and consumers. */
|
|
9
|
+
export declare const isArtifactRevisionVector: (value: unknown) => value is RuntimeArtifactRevisionVector;
|
|
10
|
+
/** Validates optional dependency revision components using the shared revision-vector rules. */
|
|
11
|
+
export declare const hasValidOptionalArtifactRevisionComponents: (value: {
|
|
12
|
+
sourceRevision?: unknown;
|
|
13
|
+
policyRevision?: unknown;
|
|
14
|
+
}) => boolean;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=artifactEvidenceValidation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifactEvidenceValidation.d.ts","sourceRoot":"","sources":["../../src/common/artifactEvidenceValidation.ts"],"names":[],"mappings":"AAGA,4GAA4G;AAC5G,eAAO,MAAM,gCAAgC,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAM1E,CAAC;AAEF,UAAU,6BAA6B;IACrC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAKD,uGAAuG;AACvG,eAAO,MAAM,wBAAwB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,6BAIkC,CAAC;AAEtG,gGAAgG;AAChG,eAAO,MAAM,0CAA0C,GAAI,OAAO;IAAE,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,KAAG,OAIvH,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hasValidOptionalArtifactRevisionComponents = exports.isArtifactRevisionVector = exports.isStrictLogicalArtifactReference = void 0;
|
|
4
|
+
const hasControlCharacters = (value) => Array.from(value).some(character => character.charCodeAt(0) < 32 || character.charCodeAt(0) === 127);
|
|
5
|
+
/** Validates a generation-relative logical artifact reference without accepting physical-path encodings. */
|
|
6
|
+
const isStrictLogicalArtifactReference = (value) => {
|
|
7
|
+
if (typeof value !== 'string' || value.trim() !== value || value.length === 0 || hasControlCharacters(value))
|
|
8
|
+
return false;
|
|
9
|
+
if (value.startsWith('/') || value.includes('\\') || value.includes('%') || value.includes('?') || value.includes('#'))
|
|
10
|
+
return false;
|
|
11
|
+
if (/^[A-Za-z][A-Za-z0-9+.-]*:/.test(value) || /^[A-Za-z]:[\\/]/.test(value))
|
|
12
|
+
return false;
|
|
13
|
+
const segments = value.split('/');
|
|
14
|
+
return segments.length >= 2 && segments.every(segment => segment.length > 0 && segment !== '.' && segment !== '..');
|
|
15
|
+
};
|
|
16
|
+
exports.isStrictLogicalArtifactReference = isStrictLogicalArtifactReference;
|
|
17
|
+
const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
18
|
+
const isPositiveSafeInteger = (value) => Number.isSafeInteger(value) && Number(value) > 0;
|
|
19
|
+
/** Validates the positive source/policy revision vector shared by evidence producers and consumers. */
|
|
20
|
+
const isArtifactRevisionVector = (value) => isRecord(value) &&
|
|
21
|
+
isPositiveSafeInteger(value.sourceRevision) &&
|
|
22
|
+
isPositiveSafeInteger(value.policyRevision) &&
|
|
23
|
+
(value.ownershipEpochRevision === undefined || isPositiveSafeInteger(value.ownershipEpochRevision));
|
|
24
|
+
exports.isArtifactRevisionVector = isArtifactRevisionVector;
|
|
25
|
+
/** Validates optional dependency revision components using the shared revision-vector rules. */
|
|
26
|
+
const hasValidOptionalArtifactRevisionComponents = (value) => (0, exports.isArtifactRevisionVector)({
|
|
27
|
+
sourceRevision: value.sourceRevision === undefined ? 1 : value.sourceRevision,
|
|
28
|
+
policyRevision: value.policyRevision === undefined ? 1 : value.policyRevision,
|
|
29
|
+
});
|
|
30
|
+
exports.hasValidOptionalArtifactRevisionComponents = hasValidOptionalArtifactRevisionComponents;
|
|
31
|
+
//# sourceMappingURL=artifactEvidenceValidation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifactEvidenceValidation.js","sourceRoot":"","sources":["../../src/common/artifactEvidenceValidation.ts"],"names":[],"mappings":";;;AAAA,MAAM,oBAAoB,GAAG,CAAC,KAAa,EAAW,EAAE,CACtD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AAEvG,4GAA4G;AACrG,MAAM,gCAAgC,GAAG,CAAC,KAAc,EAAmB,EAAE;IAClF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3H,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACrI,IAAI,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3F,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC;AACtH,CAAC,CAAC;AANW,QAAA,gCAAgC,oCAM3C;AAQF,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC5I,MAAM,qBAAqB,GAAG,CAAC,KAAc,EAAmB,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAEpH,uGAAuG;AAChG,MAAM,wBAAwB,GAAG,CAAC,KAAc,EAA0C,EAAE,CACjG,QAAQ,CAAC,KAAK,CAAC;IACf,qBAAqB,CAAC,KAAK,CAAC,cAAc,CAAC;IAC3C,qBAAqB,CAAC,KAAK,CAAC,cAAc,CAAC;IAC3C,CAAC,KAAK,CAAC,sBAAsB,KAAK,SAAS,IAAI,qBAAqB,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAJzF,QAAA,wBAAwB,4BAIiE;AAEtG,gGAAgG;AACzF,MAAM,0CAA0C,GAAG,CAAC,KAA6D,EAAW,EAAE,CACnI,IAAA,gCAAwB,EAAC;IACvB,cAAc,EAAE,KAAK,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc;IAC7E,cAAc,EAAE,KAAK,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc;CAC9E,CAAC,CAAC;AAJQ,QAAA,0CAA0C,8CAIlD"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ArtifactEvidenceVerdict } from './artifactEvidence.js';
|
|
1
2
|
export declare const ARTIFACT_GENERATION_SCHEMA_VERSION: 1;
|
|
2
3
|
export type ArtifactGenerationSchemaVersion = typeof ARTIFACT_GENERATION_SCHEMA_VERSION;
|
|
3
4
|
export type JsonPrimitive = string | number | boolean | null;
|
|
@@ -49,16 +50,17 @@ export interface ArtifactDescriptor {
|
|
|
49
50
|
sha256: string;
|
|
50
51
|
}
|
|
51
52
|
export type ArtifactEvidenceIssueStatus = 'partial' | 'missing' | 'stale' | 'unavailable';
|
|
53
|
+
type ArtifactManifestEvidenceVerdict = Extract<ArtifactEvidenceVerdict, 'complete' | 'partial'>;
|
|
52
54
|
export interface ArtifactEvidenceIssue {
|
|
53
55
|
source: string;
|
|
54
56
|
status: ArtifactEvidenceIssueStatus;
|
|
55
57
|
reason: string;
|
|
56
58
|
}
|
|
57
59
|
export type ArtifactManifestEvidence = {
|
|
58
|
-
status: 'complete'
|
|
60
|
+
status: Extract<ArtifactManifestEvidenceVerdict, 'complete'>;
|
|
59
61
|
issues: [];
|
|
60
62
|
} | {
|
|
61
|
-
status: 'partial'
|
|
63
|
+
status: Extract<ArtifactManifestEvidenceVerdict, 'partial'>;
|
|
62
64
|
issues: [ArtifactEvidenceIssue, ...ArtifactEvidenceIssue[]];
|
|
63
65
|
};
|
|
64
66
|
type ArtifactGenerationManifestBase<Provider extends ArtifactProvider, AccountId extends string, RunId extends string> = ArtifactAccountBinding<Provider, AccountId> & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifactGeneration.d.ts","sourceRoot":"","sources":["../../src/common/artifactGeneration.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"artifactGeneration.d.ts","sourceRoot":"","sources":["../../src/common/artifactGeneration.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifactGeneration.js","sourceRoot":"","sources":["../../src/common/artifactGeneration.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"artifactGeneration.js","sourceRoot":"","sources":["../../src/common/artifactGeneration.ts"],"names":[],"mappings":";;;AAEa,QAAA,kCAAkC,GAAG,CAAU,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ArtifactProvider } from './artifactGeneration.js';
|
|
2
|
+
import { type ArtifactEmptyEvidenceVerdict, type ArtifactFreshnessVerdict, type ArtifactOwnershipBinding } from './artifactEvidence.js';
|
|
2
3
|
export declare const CAPABILITY_PASSPORT_SCHEMA_VERSION: 1;
|
|
3
4
|
export type CapabilityPassportSchemaVersion = typeof CAPABILITY_PASSPORT_SCHEMA_VERSION;
|
|
4
5
|
export declare const CAPABILITY_REASON_CODES: readonly ["not-requested", "permission-denied", "not-found", "throttled", "timeout", "pagination-incomplete", "source-partial", "source-empty", "source-unsupported", "retained-last-known-good", "currency-unresolved", "unknown"];
|
|
@@ -42,16 +43,16 @@ export type CapabilityAttempt = {
|
|
|
42
43
|
reasonCodes: CapabilityReasonCode[];
|
|
43
44
|
};
|
|
44
45
|
export type CapabilityFreshness = {
|
|
45
|
-
status: 'current'
|
|
46
|
+
status: Extract<ArtifactFreshnessVerdict, 'current'>;
|
|
46
47
|
observedAt: string;
|
|
47
48
|
completeThrough?: string;
|
|
48
49
|
} | {
|
|
49
|
-
status: 'stale'
|
|
50
|
+
status: Extract<ArtifactFreshnessVerdict, 'stale'>;
|
|
50
51
|
observedAt: string;
|
|
51
52
|
completeThrough?: string;
|
|
52
53
|
maximumAge: string;
|
|
53
54
|
} | {
|
|
54
|
-
status: 'unknown'
|
|
55
|
+
status: Extract<ArtifactFreshnessVerdict, 'unknown'>;
|
|
55
56
|
};
|
|
56
57
|
export interface CapabilityObservation<Provider extends ArtifactProvider = ArtifactProvider> {
|
|
57
58
|
observationId: string;
|
|
@@ -60,7 +61,7 @@ export interface CapabilityObservation<Provider extends ArtifactProvider = Artif
|
|
|
60
61
|
attempt: CapabilityAttempt;
|
|
61
62
|
providerSurfaceOutcome: 'accepted' | 'authoritatively-unsupported' | 'unknown';
|
|
62
63
|
availability: 'available' | 'partial' | 'missing' | 'unavailable' | 'unknown';
|
|
63
|
-
emptyEvidence:
|
|
64
|
+
emptyEvidence: ArtifactEmptyEvidenceVerdict;
|
|
64
65
|
freshness: CapabilityFreshness;
|
|
65
66
|
sourceGeneration?: ImmutableSourceGeneration;
|
|
66
67
|
coverageRef?: string;
|
|
@@ -92,14 +93,8 @@ export interface CapabilityPassport<Provider extends ArtifactProvider = Artifact
|
|
|
92
93
|
passportId: string;
|
|
93
94
|
generatedAt: string;
|
|
94
95
|
runId: string;
|
|
95
|
-
ownership: {
|
|
96
|
-
provider: Provider;
|
|
97
|
-
tenantId: string;
|
|
98
|
-
companyId: string;
|
|
99
|
-
cloudAccountId: string;
|
|
100
|
-
accountId: string;
|
|
96
|
+
ownership: ArtifactOwnershipBinding<Provider> & {
|
|
101
97
|
subscriptionId: string;
|
|
102
|
-
ownershipEpochRevision?: number;
|
|
103
98
|
};
|
|
104
99
|
agreementObservation: {
|
|
105
100
|
type: CapabilityAgreementType;
|