@emilia-protocol/gate 0.16.1 → 0.18.1

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.
@@ -0,0 +1,225 @@
1
+ import type { AdmissionSnapshot, AdmissionStore } from './admission-store.js';
2
+ import type { QualificationDecision } from '@emilia-protocol/verify/gate-qualification';
3
+ export declare const GATE_QUALIFICATION_V2_VERSION = "EP-GATE-QUALIFICATION-v2";
4
+ type AdmissionDigestV2 = AdmissionSnapshot['snapshot_digest'];
5
+ export type QualificationModeV2 = 'enforce' | 'shadow';
6
+ export type ProviderOutcomeV2 = 'COMMITTED' | 'PROVEN_NOT_COMMITTED' | 'INDETERMINATE';
7
+ export interface BoundRequirementDecisionV2 {
8
+ readonly decision: 'allow' | 'deny';
9
+ readonly requirementId: string;
10
+ readonly caid: string;
11
+ readonly actionDigest: AdmissionDigestV2;
12
+ readonly evidenceDigest: AdmissionDigestV2;
13
+ readonly reason?: string;
14
+ }
15
+ export interface BoundLocalPolicyDecisionV2 {
16
+ readonly decision: 'allow' | 'deny';
17
+ readonly policyId: string;
18
+ readonly caid: string;
19
+ readonly actionDigest: AdmissionDigestV2;
20
+ readonly evidenceDigest: AdmissionDigestV2;
21
+ readonly reason?: string;
22
+ }
23
+ /** The qualification leg is the verifier's real three-way result. */
24
+ export interface GateQualificationBundleV2 {
25
+ readonly qualification: Readonly<QualificationDecision>;
26
+ readonly aeb: Readonly<BoundRequirementDecisionV2>;
27
+ readonly aec: Readonly<BoundRequirementDecisionV2>;
28
+ readonly localPolicy: Readonly<BoundLocalPolicyDecisionV2>;
29
+ }
30
+ export interface QualificationCompositionInputV2 {
31
+ readonly snapshot: Readonly<AdmissionSnapshot>;
32
+ readonly qualification: Readonly<GateQualificationBundleV2>;
33
+ }
34
+ export interface GateQualificationDecisionV2 {
35
+ readonly version: typeof GATE_QUALIFICATION_V2_VERSION;
36
+ readonly allow: boolean;
37
+ readonly reasons: readonly string[];
38
+ readonly tenantId: string;
39
+ readonly admissionId: string;
40
+ readonly operationId: string;
41
+ readonly caid: string;
42
+ readonly actionDigest: string;
43
+ readonly snapshotDigest: string;
44
+ readonly effectKey: string;
45
+ readonly requirements: Readonly<{
46
+ qualificationEvidenceDigest: string;
47
+ aebRequirementId: string;
48
+ aebEvidenceDigest: string;
49
+ aecRequirementId: string;
50
+ aecEvidenceDigest: string;
51
+ localPolicyId: string;
52
+ localPolicyEvidenceDigest: string;
53
+ }>;
54
+ }
55
+ /**
56
+ * The adapter sees only the exact immutable snapshot returned by
57
+ * AdmissionStore.beginInvocation and the store-issued invocation capability.
58
+ */
59
+ export interface ProtectedInvocationV2 {
60
+ readonly snapshot: Readonly<AdmissionSnapshot>;
61
+ readonly invocationToken: string;
62
+ }
63
+ export interface ProtectedReconciliationV2 extends ProtectedInvocationV2 {
64
+ readonly reconciliationOnly: true;
65
+ }
66
+ /** Provider credentials and mutation implementation remain inside this object. */
67
+ export interface ProtectedAdapterV2 {
68
+ readonly custody: 'protected';
69
+ readonly credentialsExposed: false;
70
+ invoke(input: Readonly<ProtectedInvocationV2>): Promise<unknown>;
71
+ reconcile(input: Readonly<ProtectedReconciliationV2>): Promise<unknown>;
72
+ }
73
+ export interface ProviderEvidenceV2 {
74
+ readonly evidenceId: string;
75
+ readonly evidenceDigest: AdmissionDigestV2;
76
+ readonly tenantId: string;
77
+ readonly admissionId: string;
78
+ readonly operationId: string;
79
+ readonly snapshotDigest: AdmissionDigestV2;
80
+ readonly caid: string;
81
+ readonly actionDigest: AdmissionDigestV2;
82
+ readonly effectRequestDigest: AdmissionDigestV2;
83
+ readonly provider: Readonly<AdmissionSnapshot['body']['provider']>;
84
+ readonly executorAdapterDigest: AdmissionDigestV2;
85
+ readonly idempotencyKey: string;
86
+ readonly outcome: ProviderOutcomeV2;
87
+ readonly observedAt: string;
88
+ }
89
+ export type ProviderEvidenceVerificationV2 = {
90
+ readonly ok: true;
91
+ readonly evidence: Readonly<ProviderEvidenceV2>;
92
+ } | {
93
+ readonly ok: false;
94
+ readonly reason: string;
95
+ };
96
+ export interface ProviderEvidenceVerifierV2 {
97
+ verify(rawEvidence: unknown, expected: Readonly<AdmissionSnapshot>): Promise<ProviderEvidenceVerificationV2>;
98
+ }
99
+ export interface ObservedEffectRelationV2 {
100
+ readonly relation: 'OBSERVED_AS_REQUESTED' | 'DIVERGED' | 'INDETERMINATE';
101
+ readonly evidenceDigest: AdmissionDigestV2 | null;
102
+ readonly tenantId: string;
103
+ readonly admissionId: string;
104
+ readonly operationId: string;
105
+ readonly snapshotDigest: AdmissionDigestV2;
106
+ readonly caid: string;
107
+ readonly actionDigest: AdmissionDigestV2;
108
+ readonly providerEvidenceDigest: AdmissionDigestV2;
109
+ readonly observedEffectDigest: AdmissionDigestV2 | null;
110
+ readonly observedAt: string;
111
+ }
112
+ export interface ObservedEffectRelatorV2 {
113
+ relate(evidence: Readonly<ProviderEvidenceV2>, expected: Readonly<AdmissionSnapshot>): Promise<Readonly<ObservedEffectRelationV2>>;
114
+ }
115
+ export interface LegacyQualificationV1 {
116
+ qualify(input: Readonly<QualificationCompositionInputV2>): Promise<{
117
+ readonly allow: boolean;
118
+ readonly reasons: readonly string[];
119
+ }>;
120
+ }
121
+ export type GateQualificationV2Options = {
122
+ readonly mode: 'shadow';
123
+ readonly legacyQualification?: LegacyQualificationV1;
124
+ readonly admissionStore?: never;
125
+ readonly protectedAdapter?: never;
126
+ readonly providerEvidenceVerifier?: never;
127
+ readonly observedEffectRelator?: never;
128
+ readonly invocationRemeasurer?: never;
129
+ readonly authorityCustody?: never;
130
+ readonly adapterTimeoutMs?: never;
131
+ readonly testOnly?: never;
132
+ } | {
133
+ readonly mode: 'enforce';
134
+ readonly admissionStore: AdmissionStore;
135
+ readonly protectedAdapter: ProtectedAdapterV2;
136
+ readonly providerEvidenceVerifier: ProviderEvidenceVerifierV2;
137
+ readonly observedEffectRelator: ObservedEffectRelatorV2;
138
+ readonly invocationRemeasurer: InvocationRemeasurerV2;
139
+ readonly authorityCustody: InvocationAuthorityCustodyV2;
140
+ readonly adapterTimeoutMs?: number;
141
+ readonly testOnly?: true;
142
+ readonly legacyQualification?: never;
143
+ };
144
+ export type GateQualificationExecutionInputV2 = QualificationCompositionInputV2;
145
+ export interface ShadowComparisonV2 {
146
+ readonly legacyAllowed: boolean | null;
147
+ readonly v2Allowed: boolean;
148
+ readonly match: boolean | null;
149
+ readonly legacyReasons: readonly string[];
150
+ readonly v2Reasons: readonly string[];
151
+ }
152
+ export type GateQualificationExecutionResultV2 = {
153
+ readonly status: 'shadow';
154
+ readonly decision: Readonly<GateQualificationDecisionV2>;
155
+ readonly comparison: Readonly<ShadowComparisonV2>;
156
+ } | {
157
+ readonly status: 'refused';
158
+ readonly reason: string;
159
+ readonly decision?: Readonly<GateQualificationDecisionV2>;
160
+ } | {
161
+ readonly status: 'reconciliation_required';
162
+ readonly reason: string;
163
+ readonly admissionId: string;
164
+ } | {
165
+ readonly status: 'committed' | 'not_committed';
166
+ readonly admissionId: string;
167
+ readonly evidence: Readonly<ProviderEvidenceV2>;
168
+ readonly relation: Readonly<ObservedEffectRelationV2>;
169
+ };
170
+ interface InvocationAuthorityV2 {
171
+ ownerToken: string;
172
+ invocationToken: string;
173
+ snapshotDigest: AdmissionDigestV2;
174
+ }
175
+ /**
176
+ * A protected, restart-safe custody boundary for the capabilities needed to
177
+ * reconcile an invocation whose provider outcome is not yet final.
178
+ */
179
+ export interface InvocationAuthorityCustodyV2 {
180
+ readonly custody: 'protected';
181
+ readonly durable: boolean;
182
+ readonly testOnly?: true;
183
+ put(input: Readonly<{
184
+ tenantId: string;
185
+ admissionId: string;
186
+ authority: Readonly<InvocationAuthorityV2>;
187
+ }>): Promise<void>;
188
+ get(input: Readonly<{
189
+ tenantId: string;
190
+ admissionId: string;
191
+ }>): Promise<Readonly<InvocationAuthorityV2> | null>;
192
+ delete(input: Readonly<{
193
+ tenantId: string;
194
+ admissionId: string;
195
+ }>): Promise<void>;
196
+ }
197
+ /**
198
+ * Rereads every mutable qualification/authority leg from authoritative
199
+ * sources immediately before the store atomically consumes execution rights.
200
+ */
201
+ export interface InvocationRemeasurerV2 {
202
+ readonly source: 'authoritative';
203
+ remeasure(snapshot: Readonly<AdmissionSnapshot>): Promise<Readonly<GateQualificationBundleV2>>;
204
+ }
205
+ /** Explicitly test-only custody. Production callers must supply durable KMS-backed custody. */
206
+ export declare function createMemoryInvocationAuthorityCustodyV2(): InvocationAuthorityCustodyV2 & {
207
+ readonly testOnly: true;
208
+ };
209
+ /** Pure deterministic composition; it performs no store or adapter access. */
210
+ export declare function composeQualificationDecisionV2(input: QualificationCompositionInputV2): Readonly<GateQualificationDecisionV2>;
211
+ export declare class GateQualificationV2 {
212
+ #private;
213
+ readonly mode: QualificationModeV2;
214
+ constructor(options: GateQualificationV2Options);
215
+ execute(input: GateQualificationExecutionInputV2): Promise<GateQualificationExecutionResultV2>;
216
+ /** Evidence-only reconciliation. This method has no mutation-adapter path. */
217
+ reconcile(input: Readonly<Pick<AdmissionSnapshot['body'], 'tenant_id' | 'admission_id'>>): Promise<GateQualificationExecutionResultV2>;
218
+ }
219
+ declare const _default: {
220
+ GATE_QUALIFICATION_V2_VERSION: string;
221
+ composeQualificationDecisionV2: typeof composeQualificationDecisionV2;
222
+ GateQualificationV2: typeof GateQualificationV2;
223
+ };
224
+ export default _default;
225
+ //# sourceMappingURL=gate-qualification-v2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate-qualification-v2.d.ts","sourceRoot":"","sources":["../src/gate-qualification-v2.ts"],"names":[],"mappings":"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"}