@emilia-protocol/gate 0.17.0 → 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.
- package/CHANGELOG.md +43 -0
- package/README.md +51 -0
- package/admission-store-postgres.js +4 -0
- package/admission-store.js +4 -0
- package/dist/admission-store-postgres.d.ts +66 -0
- package/dist/admission-store-postgres.d.ts.map +1 -0
- package/dist/admission-store-postgres.js +537 -0
- package/dist/admission-store-postgres.js.map +1 -0
- package/dist/admission-store.d.ts +292 -0
- package/dist/admission-store.d.ts.map +1 -0
- package/dist/admission-store.js +777 -0
- package/dist/admission-store.js.map +1 -0
- package/dist/gate-qualification-v2.d.ts +225 -0
- package/dist/gate-qualification-v2.d.ts.map +1 -0
- package/dist/gate-qualification-v2.js +1011 -0
- package/dist/gate-qualification-v2.js.map +1 -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/gate-qualification-v2.js +4 -0
- package/package.json +19 -3
- package/src/admission-store-postgres.ts +695 -0
- package/src/admission-store.ts +1065 -0
- package/src/gate-qualification-v2.ts +1534 -0
- package/src/index.ts +3 -0
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gate Qualification v2 admission custody.
|
|
3
|
+
*
|
|
4
|
+
* The immutable snapshot is the complete input to one consequential operation.
|
|
5
|
+
* Mutable lifecycle state lives in a separately CAS-owned record and every
|
|
6
|
+
* accepted transition is chained into an append-only journal. The in-memory
|
|
7
|
+
* implementation is a linearizable reference for conformance and crash-model
|
|
8
|
+
* tests; it is deliberately not a durability claim.
|
|
9
|
+
*/
|
|
10
|
+
export declare const ADMISSION_SNAPSHOT_VERSION = "EP-GATE-ADMISSION-SNAPSHOT-v2";
|
|
11
|
+
export declare const ADMISSION_RECORD_VERSION = "EP-GATE-ADMISSION-RECORD-v2";
|
|
12
|
+
export declare const ADMISSION_JOURNAL_VERSION = "EP-GATE-ADMISSION-JOURNAL-v2";
|
|
13
|
+
export declare const ADMISSION_CURRENTNESS_VERSION = "EP-GATE-ADMISSION-CURRENTNESS-v2";
|
|
14
|
+
export declare const ADMISSION_LIMITS: Readonly<{
|
|
15
|
+
inputs: 128;
|
|
16
|
+
resources: 64;
|
|
17
|
+
testResults: 64;
|
|
18
|
+
agentEvidence: 32;
|
|
19
|
+
identifierBytes: 512;
|
|
20
|
+
currentnessMaxAgeMs: 5000;
|
|
21
|
+
}>;
|
|
22
|
+
export type AdmissionDigest = `sha256:${string}`;
|
|
23
|
+
export type AdmissionInputRole = 'candidate_manifest' | 'runtime_measurement' | 'test_result' | 'agent_evaluation_evidence' | 'qualification_statement' | 'qualification_status' | 'aeb' | 'aec' | 'local_policy' | 'authorization';
|
|
24
|
+
export interface AdmissionInput {
|
|
25
|
+
role: AdmissionInputRole;
|
|
26
|
+
artifact_type: string;
|
|
27
|
+
subject: string;
|
|
28
|
+
payload_digest: AdmissionDigest;
|
|
29
|
+
profile_digest: AdmissionDigest;
|
|
30
|
+
verifier_id: string;
|
|
31
|
+
trust_configuration_digest: AdmissionDigest;
|
|
32
|
+
valid_until: string;
|
|
33
|
+
}
|
|
34
|
+
export type AdmissionResourceKind = 'replay' | 'capability' | 'budget' | 'qualification_use' | 'provider_operation' | 'external_lease';
|
|
35
|
+
export interface AdmissionResourceReservationInput {
|
|
36
|
+
kind: AdmissionResourceKind;
|
|
37
|
+
resource_id: string;
|
|
38
|
+
reservation_id: string;
|
|
39
|
+
digest: AdmissionDigest;
|
|
40
|
+
expires_at: string;
|
|
41
|
+
}
|
|
42
|
+
export interface CandidateCustodyBinding {
|
|
43
|
+
request_construction: 'GATE' | 'EXECUTOR_ADAPTER' | 'EXTERNAL';
|
|
44
|
+
mutation_credential_custody: 'GATE' | 'EXECUTOR_ADAPTER' | 'EXTERNAL';
|
|
45
|
+
enforcement_placement: 'SYSTEM_OF_RECORD' | 'ACTUATOR' | 'MIDDLEWARE';
|
|
46
|
+
evidence_digest: AdmissionDigest;
|
|
47
|
+
}
|
|
48
|
+
export interface QualificationStatusBinding {
|
|
49
|
+
authority_id: string;
|
|
50
|
+
sequence: number;
|
|
51
|
+
head_payload_digest: AdmissionDigest;
|
|
52
|
+
observed_at: string;
|
|
53
|
+
expires_at: string;
|
|
54
|
+
}
|
|
55
|
+
export interface ProviderBinding {
|
|
56
|
+
provider_id: string;
|
|
57
|
+
account_id: string;
|
|
58
|
+
environment: string;
|
|
59
|
+
}
|
|
60
|
+
export interface AdmissionRelation {
|
|
61
|
+
tenant_id: string;
|
|
62
|
+
admission_id: string;
|
|
63
|
+
operation_id: string;
|
|
64
|
+
snapshot_digest: AdmissionDigest;
|
|
65
|
+
}
|
|
66
|
+
export interface AdmissionSnapshotInput {
|
|
67
|
+
tenant_id: string;
|
|
68
|
+
admission_id: string;
|
|
69
|
+
operation_id: string;
|
|
70
|
+
candidate_manifest_digest: AdmissionDigest;
|
|
71
|
+
runtime_measurement_digest: AdmissionDigest;
|
|
72
|
+
candidate_custody: CandidateCustodyBinding;
|
|
73
|
+
assignment_digest: AdmissionDigest;
|
|
74
|
+
qualification_policy_digest: AdmissionDigest;
|
|
75
|
+
test_result_payload_digests: AdmissionDigest[];
|
|
76
|
+
agent_evaluation_evidence_payload_digests: AdmissionDigest[];
|
|
77
|
+
qualification_statement_payload_digest: AdmissionDigest;
|
|
78
|
+
qualification_status: QualificationStatusBinding;
|
|
79
|
+
caid: string;
|
|
80
|
+
action_digest: AdmissionDigest;
|
|
81
|
+
effect_request_digest: AdmissionDigest;
|
|
82
|
+
provider: ProviderBinding;
|
|
83
|
+
executor_adapter_digest: AdmissionDigest;
|
|
84
|
+
idempotency_key: string;
|
|
85
|
+
authorization_policy_digest: AdmissionDigest;
|
|
86
|
+
trust_epoch: number;
|
|
87
|
+
trust_configuration_digest: AdmissionDigest;
|
|
88
|
+
configuration_epoch: number;
|
|
89
|
+
configuration_digest: AdmissionDigest;
|
|
90
|
+
inputs: AdmissionInput[];
|
|
91
|
+
resource_reservations: AdmissionResourceReservationInput[];
|
|
92
|
+
admitted_at: string;
|
|
93
|
+
expires_at: string;
|
|
94
|
+
supersedes_admission_id?: string | null;
|
|
95
|
+
remedy_for?: AdmissionRelation | null;
|
|
96
|
+
}
|
|
97
|
+
export interface AdmissionSnapshotBody extends Omit<AdmissionSnapshotInput, 'supersedes_admission_id' | 'remedy_for'> {
|
|
98
|
+
'@version': typeof ADMISSION_SNAPSHOT_VERSION;
|
|
99
|
+
supersedes_admission_id: string | null;
|
|
100
|
+
remedy_for: Readonly<AdmissionRelation> | null;
|
|
101
|
+
}
|
|
102
|
+
export interface AdmissionSnapshot {
|
|
103
|
+
body: Readonly<AdmissionSnapshotBody>;
|
|
104
|
+
snapshot_digest: AdmissionDigest;
|
|
105
|
+
}
|
|
106
|
+
export type AdmissionState = 'RESERVED' | 'RELEASED' | 'EXPIRED' | 'SUPERSEDED' | 'INVOKING' | 'INDETERMINATE' | 'COMMITTED' | 'PROVEN_NOT_COMMITTED';
|
|
107
|
+
export type AdmissionExecutionRight = 'RESERVED' | 'RELEASED' | 'CONSUMED';
|
|
108
|
+
export type AdmissionProviderAttempt = 'NOT_ENTERED' | 'INVOKING' | 'INDETERMINATE' | 'COMMITTED' | 'PROVEN_NOT_COMMITTED';
|
|
109
|
+
export type AdmissionProviderOutcome = 'COMMITTED' | 'PROVEN_NOT_COMMITTED' | 'INDETERMINATE';
|
|
110
|
+
export type AdmissionEffectRelation = 'OBSERVED_AS_REQUESTED' | 'DIVERGED' | 'INDETERMINATE';
|
|
111
|
+
export type AdmissionResourceState = 'RESERVED' | 'RELEASED' | 'CONSUMED';
|
|
112
|
+
export interface AdmissionEvidenceOutcome<T extends string> {
|
|
113
|
+
value: T;
|
|
114
|
+
evidence_digest: AdmissionDigest | null;
|
|
115
|
+
observed_at: string;
|
|
116
|
+
}
|
|
117
|
+
export interface AdmissionResourceReservation extends AdmissionResourceReservationInput {
|
|
118
|
+
state: AdmissionResourceState;
|
|
119
|
+
}
|
|
120
|
+
export interface AdmissionRecord {
|
|
121
|
+
'@version': typeof ADMISSION_RECORD_VERSION;
|
|
122
|
+
tenant_id: string;
|
|
123
|
+
admission_id: string;
|
|
124
|
+
operation_id: string;
|
|
125
|
+
snapshot_digest: AdmissionDigest;
|
|
126
|
+
revision: number;
|
|
127
|
+
state: AdmissionState;
|
|
128
|
+
execution_right: AdmissionExecutionRight;
|
|
129
|
+
provider_attempt: AdmissionProviderAttempt;
|
|
130
|
+
owner_digest: AdmissionDigest;
|
|
131
|
+
invocation_token_digest: AdmissionDigest | null;
|
|
132
|
+
provider_outcome: Readonly<AdmissionEvidenceOutcome<AdmissionProviderOutcome>> | null;
|
|
133
|
+
effect_relation: Readonly<AdmissionEvidenceOutcome<AdmissionEffectRelation>> | null;
|
|
134
|
+
resources: readonly Readonly<AdmissionResourceReservation>[];
|
|
135
|
+
superseded_by_admission_id: string | null;
|
|
136
|
+
refusal_reason: string | null;
|
|
137
|
+
invocation_started_at: string | null;
|
|
138
|
+
created_at: string;
|
|
139
|
+
updated_at: string;
|
|
140
|
+
predecessor_record_digest: AdmissionDigest | null;
|
|
141
|
+
record_digest: AdmissionDigest;
|
|
142
|
+
}
|
|
143
|
+
export type AdmissionJournalEvent = 'RESERVED' | 'RELEASED' | 'EXPIRED' | 'SUPERSEDED' | 'INVOKING' | 'RECOVERED_INDETERMINATE' | 'PROVIDER_OUTCOME' | 'EFFECT_RELATION';
|
|
144
|
+
export interface AdmissionJournalEntry {
|
|
145
|
+
'@version': typeof ADMISSION_JOURNAL_VERSION;
|
|
146
|
+
tenant_id: string;
|
|
147
|
+
admission_id: string;
|
|
148
|
+
operation_id: string;
|
|
149
|
+
sequence: number;
|
|
150
|
+
event: AdmissionJournalEvent;
|
|
151
|
+
snapshot_digest: AdmissionDigest;
|
|
152
|
+
record_digest: AdmissionDigest;
|
|
153
|
+
predecessor_digest: AdmissionDigest | null;
|
|
154
|
+
recorded_at: string;
|
|
155
|
+
entry_digest: AdmissionDigest;
|
|
156
|
+
}
|
|
157
|
+
export interface AdmissionCurrentnessObservation {
|
|
158
|
+
'@version': typeof ADMISSION_CURRENTNESS_VERSION;
|
|
159
|
+
observed_at: string;
|
|
160
|
+
qualification_status_authority_id: string;
|
|
161
|
+
qualification_status_sequence: number;
|
|
162
|
+
qualification_status_head_digest: AdmissionDigest;
|
|
163
|
+
qualification_status_expires_at: string;
|
|
164
|
+
trust_epoch: number;
|
|
165
|
+
trust_configuration_digest: AdmissionDigest;
|
|
166
|
+
configuration_epoch: number;
|
|
167
|
+
configuration_digest: AdmissionDigest;
|
|
168
|
+
runtime_measurement_digest: AdmissionDigest;
|
|
169
|
+
candidate_match: 'EXACT_MATCH' | 'MISMATCH' | 'STALE' | 'UNPINNABLE';
|
|
170
|
+
external_leases: Array<{
|
|
171
|
+
resource_id: string;
|
|
172
|
+
digest: AdmissionDigest;
|
|
173
|
+
expires_at: string;
|
|
174
|
+
}>;
|
|
175
|
+
}
|
|
176
|
+
export interface AdmissionCurrentnessOracle {
|
|
177
|
+
read(snapshot: Readonly<AdmissionSnapshot>): Promise<AdmissionCurrentnessObservation>;
|
|
178
|
+
}
|
|
179
|
+
export type AdmissionRefusalReason = 'admission_exists' | 'admission_not_found' | 'operation_exists' | 'operation_conflict' | 'revision_conflict' | 'owner_conflict' | 'resource_conflict' | 'admission_expired' | 'currentness_refused' | 'execution_right_consumed' | 'state_conflict' | 'relation_not_found' | 'relation_conflict' | 'outcome_conflict' | 'evidence_required' | 'invocation_token_conflict';
|
|
180
|
+
export type AdmissionRefusal = {
|
|
181
|
+
ok: false;
|
|
182
|
+
reason: AdmissionRefusalReason;
|
|
183
|
+
};
|
|
184
|
+
export type AdmissionTransitionResult = {
|
|
185
|
+
ok: true;
|
|
186
|
+
record: Readonly<AdmissionRecord>;
|
|
187
|
+
} | AdmissionRefusal;
|
|
188
|
+
export type AdmissionReserveResult = {
|
|
189
|
+
ok: true;
|
|
190
|
+
snapshot: Readonly<AdmissionSnapshot>;
|
|
191
|
+
record: Readonly<AdmissionRecord>;
|
|
192
|
+
owner_token: string;
|
|
193
|
+
} | AdmissionRefusal;
|
|
194
|
+
export type AdmissionBeginResult = {
|
|
195
|
+
ok: true;
|
|
196
|
+
snapshot: Readonly<AdmissionSnapshot>;
|
|
197
|
+
record: Readonly<AdmissionRecord>;
|
|
198
|
+
invocation_token: string;
|
|
199
|
+
} | AdmissionRefusal;
|
|
200
|
+
export type AdmissionSupersedeResult = {
|
|
201
|
+
ok: true;
|
|
202
|
+
predecessor_record: Readonly<AdmissionRecord>;
|
|
203
|
+
successor_snapshot: Readonly<AdmissionSnapshot>;
|
|
204
|
+
successor_record: Readonly<AdmissionRecord>;
|
|
205
|
+
successor_owner_token: string;
|
|
206
|
+
} | AdmissionRefusal;
|
|
207
|
+
export type AdmissionRecoveryResult = {
|
|
208
|
+
ok: true;
|
|
209
|
+
record: Readonly<AdmissionRecord>;
|
|
210
|
+
reconciliation_token: string;
|
|
211
|
+
} | AdmissionRefusal;
|
|
212
|
+
export interface AdmissionReference {
|
|
213
|
+
tenant_id: string;
|
|
214
|
+
admission_id: string;
|
|
215
|
+
}
|
|
216
|
+
export interface AdmissionOperationReference {
|
|
217
|
+
tenant_id: string;
|
|
218
|
+
operation_id: string;
|
|
219
|
+
}
|
|
220
|
+
export interface AdmissionCas extends AdmissionReference {
|
|
221
|
+
expected_revision: number;
|
|
222
|
+
owner_token: string;
|
|
223
|
+
}
|
|
224
|
+
export interface AdmissionRecoveryInput extends AdmissionReference {
|
|
225
|
+
owner_token: string;
|
|
226
|
+
}
|
|
227
|
+
export interface AdmissionProviderOutcomeInput extends AdmissionCas {
|
|
228
|
+
invocation_token: string;
|
|
229
|
+
value: AdmissionProviderOutcome;
|
|
230
|
+
evidence_digest: AdmissionDigest | null;
|
|
231
|
+
observed_at: string;
|
|
232
|
+
}
|
|
233
|
+
export interface AdmissionEffectRelationInput extends AdmissionCas {
|
|
234
|
+
invocation_token: string;
|
|
235
|
+
value: AdmissionEffectRelation;
|
|
236
|
+
evidence_digest: AdmissionDigest | null;
|
|
237
|
+
observed_at: string;
|
|
238
|
+
}
|
|
239
|
+
export interface AdmissionSupersedeInput extends AdmissionCas {
|
|
240
|
+
successor: AdmissionSnapshotInput;
|
|
241
|
+
}
|
|
242
|
+
export interface AdmissionInvariantCheck {
|
|
243
|
+
ok: boolean;
|
|
244
|
+
violations: readonly string[];
|
|
245
|
+
}
|
|
246
|
+
export interface AdmissionStore {
|
|
247
|
+
readonly durable: boolean;
|
|
248
|
+
readonly atomic: true;
|
|
249
|
+
readonly compareAndSwap: true;
|
|
250
|
+
readonly appendOnlyJournal: true;
|
|
251
|
+
readonly exclusiveActuation: true;
|
|
252
|
+
readonly transactionalCurrentness: true;
|
|
253
|
+
readonly testOnly?: true;
|
|
254
|
+
reserve(input: AdmissionSnapshotInput | AdmissionSnapshot): Promise<AdmissionReserveResult>;
|
|
255
|
+
release(input: AdmissionCas, reason?: string): Promise<AdmissionTransitionResult>;
|
|
256
|
+
expire(input: AdmissionCas): Promise<AdmissionTransitionResult>;
|
|
257
|
+
supersede(input: AdmissionSupersedeInput): Promise<AdmissionSupersedeResult>;
|
|
258
|
+
beginInvocation(input: AdmissionCas): Promise<AdmissionBeginResult>;
|
|
259
|
+
recoverIndeterminate(input: AdmissionRecoveryInput): Promise<AdmissionRecoveryResult>;
|
|
260
|
+
recordProviderOutcome(input: AdmissionProviderOutcomeInput): Promise<AdmissionTransitionResult>;
|
|
261
|
+
recordEffectRelation(input: AdmissionEffectRelationInput): Promise<AdmissionTransitionResult>;
|
|
262
|
+
read(input: AdmissionReference): Promise<Readonly<AdmissionRecord> | null>;
|
|
263
|
+
readByOperation(input: AdmissionOperationReference): Promise<Readonly<AdmissionRecord> | null>;
|
|
264
|
+
readSnapshot(digest: AdmissionDigest): Promise<Readonly<AdmissionSnapshot> | null>;
|
|
265
|
+
journal(input: AdmissionReference): Promise<readonly Readonly<AdmissionJournalEntry>[]>;
|
|
266
|
+
checkInvariants(): Promise<AdmissionInvariantCheck>;
|
|
267
|
+
}
|
|
268
|
+
export interface CreateMemoryAdmissionStoreOptions {
|
|
269
|
+
now?: number | string | Date | (() => number | string | Date);
|
|
270
|
+
currentnessOracle?: AdmissionCurrentnessOracle;
|
|
271
|
+
maxCurrentnessAgeMs?: number;
|
|
272
|
+
ownerTokenFactory?: () => string;
|
|
273
|
+
invocationTokenFactory?: () => string;
|
|
274
|
+
}
|
|
275
|
+
export declare class AdmissionStoreValidationError extends TypeError {
|
|
276
|
+
readonly code: string;
|
|
277
|
+
constructor(code: string, message: string);
|
|
278
|
+
}
|
|
279
|
+
export declare function createAdmissionSnapshot(raw: AdmissionSnapshotInput): Readonly<AdmissionSnapshot>;
|
|
280
|
+
export declare function verifyAdmissionJournal(entries: readonly AdmissionJournalEntry[]): {
|
|
281
|
+
ok: true;
|
|
282
|
+
} | {
|
|
283
|
+
ok: false;
|
|
284
|
+
at: number;
|
|
285
|
+
reason: string;
|
|
286
|
+
};
|
|
287
|
+
/** Linearizable, explicitly test-only reference implementation. */
|
|
288
|
+
export declare function createMemoryAdmissionStore(options?: CreateMemoryAdmissionStoreOptions): AdmissionStore & {
|
|
289
|
+
readonly testOnly: true;
|
|
290
|
+
};
|
|
291
|
+
export default createMemoryAdmissionStore;
|
|
292
|
+
//# sourceMappingURL=admission-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admission-store.d.ts","sourceRoot":"","sources":["../src/admission-store.ts"],"names":[],"mappings":"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"}
|