@emilia-protocol/gate 0.13.0 → 0.15.0
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 +53 -0
- package/README.md +89 -0
- package/aeb-consumption-store.js +3 -0
- package/dist/aeb-consumption-store.d.ts +80 -0
- package/dist/aeb-consumption-store.d.ts.map +1 -0
- package/dist/aeb-consumption-store.js +430 -0
- package/dist/aeb-consumption-store.js.map +1 -0
- package/dist/capability-receipt.d.ts +8 -0
- package/dist/capability-receipt.d.ts.map +1 -1
- package/dist/capability-receipt.js +17 -0
- package/dist/capability-receipt.js.map +1 -1
- package/dist/index.d.ts +13 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -4
- package/dist/index.js.map +1 -1
- package/dist/proposal-to-effect-postgres.d.ts +129 -0
- package/dist/proposal-to-effect-postgres.d.ts.map +1 -0
- package/dist/proposal-to-effect-postgres.js +1511 -0
- package/dist/proposal-to-effect-postgres.js.map +1 -0
- package/dist/proposal-to-effect-status.d.ts +55 -0
- package/dist/proposal-to-effect-status.d.ts.map +1 -0
- package/dist/proposal-to-effect-status.js +280 -0
- package/dist/proposal-to-effect-status.js.map +1 -0
- package/dist/proposal-to-effect.d.ts +294 -0
- package/dist/proposal-to-effect.d.ts.map +1 -0
- package/dist/proposal-to-effect.js +970 -0
- package/dist/proposal-to-effect.js.map +1 -0
- package/dist/remedy-case-set-postgres.d.ts +73 -0
- package/dist/remedy-case-set-postgres.d.ts.map +1 -0
- package/dist/remedy-case-set-postgres.js +846 -0
- package/dist/remedy-case-set-postgres.js.map +1 -0
- package/dist/remedy-case-set.d.ts +53 -0
- package/dist/remedy-case-set.d.ts.map +1 -0
- package/dist/remedy-case-set.js +571 -0
- package/dist/remedy-case-set.js.map +1 -0
- package/dist/remedy-program-adapters.d.ts +137 -0
- package/dist/remedy-program-adapters.d.ts.map +1 -0
- package/dist/remedy-program-adapters.js +590 -0
- package/dist/remedy-program-adapters.js.map +1 -0
- package/dist/trust-program-revocation.js.map +1 -1
- package/package.json +280 -63
- package/proposal-to-effect-postgres.js +3 -0
- package/proposal-to-effect-status.js +2 -0
- package/proposal-to-effect.js +4 -0
- package/remedy-case-set-postgres.js +3 -0
- package/remedy-case-set.js +3 -0
- package/remedy-program-adapters.js +3 -0
- package/src/aeb-consumption-store.ts +521 -0
- package/src/capability-receipt.ts +17 -0
- package/src/index.ts +57 -3
- package/src/proposal-to-effect-postgres.ts +1740 -0
- package/src/proposal-to-effect-status.ts +357 -0
- package/src/proposal-to-effect.ts +1276 -0
- package/src/remedy-case-set-postgres.ts +1008 -0
- package/src/remedy-case-set.ts +603 -0
- package/src/remedy-program-adapters.ts +657 -0
- package/src/trust-program-revocation.ts +1 -1
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Proposal-to-Effect is a product orchestration profile over existing EMILIA
|
|
3
|
+
* artifacts. A proposal is deliberately NOT a bearer authorization object.
|
|
4
|
+
* Authority remains in EP-RECEIPT-v1 and the relying party's pinned AEB
|
|
5
|
+
* requirement; consequence custody remains in Gate and its durable stores.
|
|
6
|
+
*/
|
|
7
|
+
import { EP_APPROVAL_FLOW } from '@emilia-protocol/require-receipt/acquisition';
|
|
8
|
+
import { type AebAdapter, type AebDigest, type AebDurableConsumptionStore, type AebEvaluationRecord, type AebPinnedConfig, type AebStatusInput } from '@emilia-protocol/verify/aeb-adapter-contract';
|
|
9
|
+
export declare const PROPOSAL_TO_EFFECT_VERSION = "EMILIA-PROPOSAL-TO-EFFECT-v1";
|
|
10
|
+
type JsonObject = Record<string, any>;
|
|
11
|
+
type FetchLike = typeof fetch;
|
|
12
|
+
declare const CONSEQUENCE_ATTEMPT_OWNER: unique symbol;
|
|
13
|
+
export type ConsequenceAttemptOwnerHandle = string & {
|
|
14
|
+
readonly [CONSEQUENCE_ATTEMPT_OWNER]: true;
|
|
15
|
+
};
|
|
16
|
+
export type ConsequenceAttemptState = 'RESERVED' | 'INVOKING' | 'INDETERMINATE' | 'COMMITTED' | 'RELEASED' | 'ESCALATED';
|
|
17
|
+
export type ProposalToEffectProviderOutcome = 'COMMITTED' | 'NOT_COMMITTED' | 'ESCALATED';
|
|
18
|
+
export interface ConsequenceAttemptBinding {
|
|
19
|
+
tenant_id: string;
|
|
20
|
+
provider_id: string;
|
|
21
|
+
provider_account_id: string;
|
|
22
|
+
environment: string;
|
|
23
|
+
attempt_id: string;
|
|
24
|
+
request_digest: AebDigest;
|
|
25
|
+
}
|
|
26
|
+
export interface ConsequenceAttemptReference {
|
|
27
|
+
tenant_id: string;
|
|
28
|
+
attempt_id: string;
|
|
29
|
+
owner: ConsequenceAttemptOwnerHandle;
|
|
30
|
+
}
|
|
31
|
+
export interface AuthenticatedProviderEvidenceBinding extends ConsequenceAttemptBinding {
|
|
32
|
+
operation_id: string;
|
|
33
|
+
caid: string;
|
|
34
|
+
action_digest: AebDigest;
|
|
35
|
+
evidence_id: string;
|
|
36
|
+
observed_at: string;
|
|
37
|
+
outcome: ProposalToEffectProviderOutcome;
|
|
38
|
+
evidence_digest: AebDigest;
|
|
39
|
+
}
|
|
40
|
+
export type ConsequenceAttemptTransition = {
|
|
41
|
+
expected_state: 'RESERVED';
|
|
42
|
+
next_state: 'INVOKING';
|
|
43
|
+
} | {
|
|
44
|
+
expected_state: 'INVOKING';
|
|
45
|
+
next_state: 'INDETERMINATE';
|
|
46
|
+
} | {
|
|
47
|
+
expected_state: 'INDETERMINATE';
|
|
48
|
+
next_state: 'COMMITTED' | 'RELEASED' | 'ESCALATED';
|
|
49
|
+
};
|
|
50
|
+
/** Owner-fenced durable CAS custody for one provider invocation attempt. */
|
|
51
|
+
export interface ProposalToEffectConsequenceAttemptStore {
|
|
52
|
+
durable: true;
|
|
53
|
+
ownershipFenced: true;
|
|
54
|
+
compareAndSwap: true;
|
|
55
|
+
atomicEvidenceBinding: true;
|
|
56
|
+
reserve(binding: ConsequenceAttemptBinding): Promise<{
|
|
57
|
+
reserved: true;
|
|
58
|
+
owner: ConsequenceAttemptOwnerHandle;
|
|
59
|
+
} | {
|
|
60
|
+
reserved: false;
|
|
61
|
+
reason: string;
|
|
62
|
+
}>;
|
|
63
|
+
transition(input: ConsequenceAttemptReference & ConsequenceAttemptTransition): Promise<boolean>;
|
|
64
|
+
reconcile(input: ConsequenceAttemptReference & {
|
|
65
|
+
expected_state: 'INDETERMINATE';
|
|
66
|
+
next_state: 'COMMITTED' | 'RELEASED' | 'ESCALATED';
|
|
67
|
+
evidence: AuthenticatedProviderEvidenceBinding;
|
|
68
|
+
}): Promise<boolean>;
|
|
69
|
+
/** Read terminal custody without exposing owner material, for saga repair. */
|
|
70
|
+
read?(binding: ConsequenceAttemptBinding): Promise<{
|
|
71
|
+
state: ConsequenceAttemptState;
|
|
72
|
+
evidence_digest?: AebDigest | null;
|
|
73
|
+
} | null>;
|
|
74
|
+
}
|
|
75
|
+
export interface ProposalToEffectProfile {
|
|
76
|
+
id: string;
|
|
77
|
+
action_type: string;
|
|
78
|
+
selector: JsonObject;
|
|
79
|
+
required_fields: readonly string[];
|
|
80
|
+
authorization: {
|
|
81
|
+
authorization_endpoint: string;
|
|
82
|
+
flow: typeof EP_APPROVAL_FLOW;
|
|
83
|
+
};
|
|
84
|
+
aeb_requirement_ref: string;
|
|
85
|
+
ttl_sec: number;
|
|
86
|
+
/**
|
|
87
|
+
* Relying-party-controlled canonicalization and CAID derivation. It runs on
|
|
88
|
+
* both proposal creation and execution. Never select it from presented data.
|
|
89
|
+
*/
|
|
90
|
+
canonicalize_action(input: unknown): {
|
|
91
|
+
action: JsonObject;
|
|
92
|
+
caid: string;
|
|
93
|
+
};
|
|
94
|
+
caid_selector?: {
|
|
95
|
+
field: string;
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
export interface ProposalToEffectProposal {
|
|
99
|
+
'@version': typeof PROPOSAL_TO_EFFECT_VERSION;
|
|
100
|
+
proposal_id: string;
|
|
101
|
+
operation_id: string;
|
|
102
|
+
initiator_id: string;
|
|
103
|
+
profile_id: string;
|
|
104
|
+
action: JsonObject;
|
|
105
|
+
action_digest: string;
|
|
106
|
+
aeb_action_digest: AebDigest;
|
|
107
|
+
caid: string;
|
|
108
|
+
created_at: string;
|
|
109
|
+
expires_at: string;
|
|
110
|
+
challenge: {
|
|
111
|
+
action: string;
|
|
112
|
+
action_hash: string;
|
|
113
|
+
required_fields: string[];
|
|
114
|
+
caid_selector?: {
|
|
115
|
+
field: string;
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
authorization: {
|
|
119
|
+
authorization_endpoint: string;
|
|
120
|
+
flow: typeof EP_APPROVAL_FLOW;
|
|
121
|
+
};
|
|
122
|
+
consequence: {
|
|
123
|
+
tenant_id: string;
|
|
124
|
+
provider_id: string;
|
|
125
|
+
provider_account_id: string;
|
|
126
|
+
environment: string;
|
|
127
|
+
executor_id: string;
|
|
128
|
+
request_digest: AebDigest;
|
|
129
|
+
};
|
|
130
|
+
aeb: {
|
|
131
|
+
requirement_ref: string;
|
|
132
|
+
pinned_config_digest: AebDigest;
|
|
133
|
+
consumption_nonce: AebDigest;
|
|
134
|
+
};
|
|
135
|
+
integrity: {
|
|
136
|
+
alg: 'HMAC-SHA256';
|
|
137
|
+
value: string;
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
export interface ProposalToEffectGate {
|
|
141
|
+
check(input: JsonObject): Promise<JsonObject>;
|
|
142
|
+
run(input: JsonObject, effect: (authorization: JsonObject) => unknown | Promise<unknown>): Promise<JsonObject>;
|
|
143
|
+
}
|
|
144
|
+
export interface ProposalToEffectProviderVerification {
|
|
145
|
+
valid: boolean;
|
|
146
|
+
outcome?: ProposalToEffectProviderOutcome;
|
|
147
|
+
evidence_id?: string;
|
|
148
|
+
observed_at?: string;
|
|
149
|
+
tenant_id?: string;
|
|
150
|
+
request_digest?: AebDigest;
|
|
151
|
+
provider_id?: string;
|
|
152
|
+
provider_account_id?: string;
|
|
153
|
+
environment?: string;
|
|
154
|
+
attempt_id?: string;
|
|
155
|
+
operation_id?: string;
|
|
156
|
+
caid?: string;
|
|
157
|
+
action_digest?: AebDigest;
|
|
158
|
+
evidence_digest?: AebDigest;
|
|
159
|
+
reason?: string;
|
|
160
|
+
}
|
|
161
|
+
export interface ProposalToEffectCurrentStatusVerification {
|
|
162
|
+
valid: boolean;
|
|
163
|
+
outcome: 'current_not_revoked' | 'revoked' | 'indeterminate';
|
|
164
|
+
/** Authenticated normalized AEB status; never raw presenter data. */
|
|
165
|
+
status?: AebStatusInput | null;
|
|
166
|
+
reason?: string;
|
|
167
|
+
}
|
|
168
|
+
export interface ProposalToEffectOptions {
|
|
169
|
+
gate: ProposalToEffectGate;
|
|
170
|
+
proposal_integrity: {
|
|
171
|
+
/** Server-held key copied at controller construction; minimum 256 bits. */
|
|
172
|
+
hmac_sha256_key: Uint8Array;
|
|
173
|
+
};
|
|
174
|
+
consequence: {
|
|
175
|
+
tenant_id: string;
|
|
176
|
+
provider_id: string;
|
|
177
|
+
provider_account_id: string;
|
|
178
|
+
environment: string;
|
|
179
|
+
executor_id: string;
|
|
180
|
+
store: ProposalToEffectConsequenceAttemptStore;
|
|
181
|
+
/** Server-side allocator. Presented execute input never selects attempt_id. */
|
|
182
|
+
create_attempt_id?: (input: {
|
|
183
|
+
tenant_id: string;
|
|
184
|
+
request_digest: AebDigest;
|
|
185
|
+
}) => Promise<string> | string;
|
|
186
|
+
};
|
|
187
|
+
profiles: Record<string, ProposalToEffectProfile>;
|
|
188
|
+
aeb: {
|
|
189
|
+
config: AebPinnedConfig;
|
|
190
|
+
adapters: Record<string, AebAdapter>;
|
|
191
|
+
store: AebDurableConsumptionStore;
|
|
192
|
+
resolve_artifacts(input: {
|
|
193
|
+
proposal: ProposalToEffectProposal;
|
|
194
|
+
evaluation: AebEvaluationRecord;
|
|
195
|
+
}): Promise<Record<string, unknown>> | Record<string, unknown>;
|
|
196
|
+
currentStatusResolver(input: {
|
|
197
|
+
proposal: ProposalToEffectProposal;
|
|
198
|
+
evaluation: AebEvaluationRecord;
|
|
199
|
+
leg: AebEvaluationRecord['legs'][number];
|
|
200
|
+
}): Promise<unknown> | unknown;
|
|
201
|
+
/** Configure this around EP-STATUS-v1 verifyStatusArtifact and server pins. */
|
|
202
|
+
statusVerifier(input: {
|
|
203
|
+
status_artifact: unknown;
|
|
204
|
+
expected: {
|
|
205
|
+
tenant_id: string;
|
|
206
|
+
executor_id: string;
|
|
207
|
+
operation_id: string;
|
|
208
|
+
caid: string;
|
|
209
|
+
artifact_ref: string;
|
|
210
|
+
evidence_digest: AebDigest;
|
|
211
|
+
replay_unit: AebDigest;
|
|
212
|
+
};
|
|
213
|
+
now: string;
|
|
214
|
+
}): Promise<ProposalToEffectCurrentStatusVerification> | ProposalToEffectCurrentStatusVerification;
|
|
215
|
+
verify_provider_evidence(input: {
|
|
216
|
+
evidence: unknown;
|
|
217
|
+
expected: {
|
|
218
|
+
operation_id: string;
|
|
219
|
+
caid: string;
|
|
220
|
+
action_digest: AebDigest;
|
|
221
|
+
tenant_id: string;
|
|
222
|
+
request_digest: AebDigest;
|
|
223
|
+
provider_id: string;
|
|
224
|
+
provider_account_id: string;
|
|
225
|
+
environment: string;
|
|
226
|
+
attempt_id: string;
|
|
227
|
+
};
|
|
228
|
+
}): Promise<ProposalToEffectProviderVerification> | ProposalToEffectProviderVerification;
|
|
229
|
+
};
|
|
230
|
+
now?: () => number;
|
|
231
|
+
}
|
|
232
|
+
export declare function proposalToEffectConsumptionNonce(operationId: string, pinnedConfigDigest: AebDigest): AebDigest;
|
|
233
|
+
export declare function createProposalToEffect(options: ProposalToEffectOptions): Readonly<{
|
|
234
|
+
prepare: (input: {
|
|
235
|
+
proposal_id: string;
|
|
236
|
+
profile_id: string;
|
|
237
|
+
operation_id: string;
|
|
238
|
+
initiator_id: string;
|
|
239
|
+
action: unknown;
|
|
240
|
+
}) => ProposalToEffectProposal;
|
|
241
|
+
verifyProposal: (input: unknown, { allowExpired }?: {
|
|
242
|
+
allowExpired?: boolean;
|
|
243
|
+
}) => {
|
|
244
|
+
proposal: ProposalToEffectProposal;
|
|
245
|
+
profile: ProposalToEffectProfile;
|
|
246
|
+
};
|
|
247
|
+
beginApproval: (input: {
|
|
248
|
+
proposal: unknown;
|
|
249
|
+
approver_id: string;
|
|
250
|
+
idempotency_key: string;
|
|
251
|
+
requester_authorization: string | (() => string | Promise<string>);
|
|
252
|
+
fetch_impl?: FetchLike;
|
|
253
|
+
}) => Promise<JsonObject>;
|
|
254
|
+
pollApproval: (input: {
|
|
255
|
+
proposal: unknown;
|
|
256
|
+
request_id: string;
|
|
257
|
+
poll_token: string;
|
|
258
|
+
fetch_impl?: FetchLike;
|
|
259
|
+
}) => Promise<JsonObject>;
|
|
260
|
+
execute: (input: {
|
|
261
|
+
proposal: unknown;
|
|
262
|
+
receipt: unknown;
|
|
263
|
+
evaluation: unknown;
|
|
264
|
+
}, effect: (input: {
|
|
265
|
+
action: JsonObject;
|
|
266
|
+
proposal: ProposalToEffectProposal;
|
|
267
|
+
authorization: JsonObject;
|
|
268
|
+
/** Provider request binding; the opaque store owner never crosses the effect boundary. */
|
|
269
|
+
attempt: ConsequenceAttemptBinding;
|
|
270
|
+
}) => unknown | Promise<unknown>) => Promise<JsonObject>;
|
|
271
|
+
reconcile: (input: {
|
|
272
|
+
proposal: unknown;
|
|
273
|
+
evaluation: unknown;
|
|
274
|
+
attempt: ConsequenceAttemptReference | (ConsequenceAttemptBinding & {
|
|
275
|
+
owner: ConsequenceAttemptOwnerHandle;
|
|
276
|
+
});
|
|
277
|
+
provider_evidence: unknown;
|
|
278
|
+
aeb_recovery_authorization?: unknown;
|
|
279
|
+
}) => Promise<JsonObject>;
|
|
280
|
+
repairAeb: (input: {
|
|
281
|
+
proposal: unknown;
|
|
282
|
+
evaluation: unknown;
|
|
283
|
+
attempt: unknown;
|
|
284
|
+
aeb_recovery_authorization?: unknown;
|
|
285
|
+
}) => Promise<JsonObject>;
|
|
286
|
+
getReconciliationHandle: (target: object) => ConsequenceAttemptReference | null;
|
|
287
|
+
}>;
|
|
288
|
+
declare const _default: {
|
|
289
|
+
PROPOSAL_TO_EFFECT_VERSION: string;
|
|
290
|
+
proposalToEffectConsumptionNonce: typeof proposalToEffectConsumptionNonce;
|
|
291
|
+
createProposalToEffect: typeof createProposalToEffect;
|
|
292
|
+
};
|
|
293
|
+
export default _default;
|
|
294
|
+
//# sourceMappingURL=proposal-to-effect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposal-to-effect.d.ts","sourceRoot":"","sources":["../src/proposal-to-effect.ts"],"names":[],"mappings":"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"}
|