@longarc/mdash 3.0.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.
Files changed (55) hide show
  1. package/README.md +278 -0
  2. package/dist/checkpoint/engine.d.ts +208 -0
  3. package/dist/checkpoint/engine.d.ts.map +1 -0
  4. package/dist/checkpoint/engine.js +369 -0
  5. package/dist/checkpoint/engine.js.map +1 -0
  6. package/dist/context/engine.d.ts +197 -0
  7. package/dist/context/engine.d.ts.map +1 -0
  8. package/dist/context/engine.js +392 -0
  9. package/dist/context/engine.js.map +1 -0
  10. package/dist/core/commitment.d.ts +154 -0
  11. package/dist/core/commitment.d.ts.map +1 -0
  12. package/dist/core/commitment.js +305 -0
  13. package/dist/core/commitment.js.map +1 -0
  14. package/dist/core/crypto.d.ts +100 -0
  15. package/dist/core/crypto.d.ts.map +1 -0
  16. package/dist/core/crypto.js +243 -0
  17. package/dist/core/crypto.js.map +1 -0
  18. package/dist/index.d.ts +121 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +234 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/mcca/engine.d.ts +260 -0
  23. package/dist/mcca/engine.d.ts.map +1 -0
  24. package/dist/mcca/engine.js +518 -0
  25. package/dist/mcca/engine.js.map +1 -0
  26. package/dist/physics/engine.d.ts +165 -0
  27. package/dist/physics/engine.d.ts.map +1 -0
  28. package/dist/physics/engine.js +371 -0
  29. package/dist/physics/engine.js.map +1 -0
  30. package/dist/tee/engine.d.ts +285 -0
  31. package/dist/tee/engine.d.ts.map +1 -0
  32. package/dist/tee/engine.js +505 -0
  33. package/dist/tee/engine.js.map +1 -0
  34. package/dist/warrant/engine.d.ts +195 -0
  35. package/dist/warrant/engine.d.ts.map +1 -0
  36. package/dist/warrant/engine.js +409 -0
  37. package/dist/warrant/engine.js.map +1 -0
  38. package/dist/zk/engine.d.ts +243 -0
  39. package/dist/zk/engine.d.ts.map +1 -0
  40. package/dist/zk/engine.js +489 -0
  41. package/dist/zk/engine.js.map +1 -0
  42. package/package.json +25 -0
  43. package/src/__tests__/phase1.test.ts +1120 -0
  44. package/src/__tests__/phase2-4.test.ts +898 -0
  45. package/src/checkpoint/engine.ts +532 -0
  46. package/src/context/engine.ts +598 -0
  47. package/src/core/commitment.ts +438 -0
  48. package/src/core/crypto.ts +304 -0
  49. package/src/index.ts +320 -0
  50. package/src/mcca/engine.ts +778 -0
  51. package/src/physics/engine.ts +563 -0
  52. package/src/tee/engine.ts +810 -0
  53. package/src/warrant/engine.ts +625 -0
  54. package/src/zk/engine.ts +730 -0
  55. package/tsconfig.json +21 -0
@@ -0,0 +1,195 @@
1
+ /**
2
+ * mdash v3.0 - Warrant System
3
+ *
4
+ * Speculative warrant issuance with cryptographic invalidation.
5
+ * Target: <10ms activation (cache hit)
6
+ *
7
+ * Invariants:
8
+ * - WARRANT-INV-001: Speculative warrants expire within 60s if not activated
9
+ * - WARRANT-INV-002: Revocation propagates to all caches within 100ms
10
+ * - WARRANT-INV-003: Activated warrants immediately sealed (L1)
11
+ */
12
+ import { Hash, Seal, Timestamp, WarrantId } from '../core/crypto.js';
13
+ import { CommitmentEngine } from '../core/commitment.js';
14
+ export type WarrantState = 'DRAFT' | 'PENDING' | 'SPECULATIVE' | 'ACTIVE' | 'REVOKED' | 'EXPIRED' | 'ARCHIVED';
15
+ export type WarrantTier = 'T1' | 'T2' | 'T3';
16
+ export interface WarrantConstraints {
17
+ /** Maximum number of invocations */
18
+ maxCalls?: number;
19
+ /** Maximum execution time (ms) */
20
+ maxTime?: number;
21
+ /** Maximum financial exposure */
22
+ maxAmount?: number;
23
+ /** Allowed destination accounts (for financial) */
24
+ allowedAccounts?: string[];
25
+ /** Required 2FA */
26
+ require2FA?: boolean;
27
+ /** Allowed domains */
28
+ allowedDomains?: string[];
29
+ /** Custom constraints */
30
+ custom?: Record<string, unknown>;
31
+ }
32
+ export interface Warrant {
33
+ /** Unique warrant identifier */
34
+ id: WarrantId;
35
+ /** Agent this warrant governs */
36
+ agent_id: string;
37
+ /** Policy template reference */
38
+ policy_id: string;
39
+ /** Current state */
40
+ state: WarrantState;
41
+ /** Liability tier */
42
+ tier: WarrantTier;
43
+ /** Operational constraints */
44
+ constraints: WarrantConstraints;
45
+ /** Creation timestamp */
46
+ created_at: Timestamp;
47
+ /** Activation timestamp (null if not yet activated) */
48
+ activated_at: Timestamp | null;
49
+ /** Expiration timestamp */
50
+ expires_at: Timestamp;
51
+ /** Revocation timestamp (null if not revoked) */
52
+ revoked_at: Timestamp | null;
53
+ /** Revocation reason */
54
+ revocation_reason?: string;
55
+ /** Issuer identity */
56
+ issued_by: string;
57
+ /** HMAC seal */
58
+ seal: Seal;
59
+ /** Protocol version */
60
+ version: 'v3.0';
61
+ }
62
+ export interface SpeculativeWarrant extends Warrant {
63
+ state: 'SPECULATIVE';
64
+ /** Speculative expiry (60s from creation) */
65
+ speculative_expires_at: Timestamp;
66
+ /** Pre-computed activation seal */
67
+ activation_seal: Seal;
68
+ }
69
+ export interface WarrantEvent {
70
+ warrant_id: WarrantId;
71
+ event_type: 'created' | 'activated' | 'revoked' | 'expired' | 'archived';
72
+ timestamp: Timestamp;
73
+ actor: {
74
+ type: 'user' | 'system';
75
+ id: string;
76
+ email?: string;
77
+ };
78
+ reason: string | undefined;
79
+ previous_state: WarrantState;
80
+ new_state: WarrantState;
81
+ hash: Hash;
82
+ parent_hash: Hash | null;
83
+ }
84
+ export declare class WarrantCache {
85
+ private cache;
86
+ private speculative;
87
+ private revocations;
88
+ private readonly DEFAULT_TTL;
89
+ private readonly SPECULATIVE_TTL;
90
+ /**
91
+ * Store a warrant in cache
92
+ */
93
+ set(warrant: Warrant | SpeculativeWarrant, ttl?: number): void;
94
+ /**
95
+ * Get a warrant from cache
96
+ * Returns null if not found, expired, or revoked
97
+ */
98
+ get(id: WarrantId): Warrant | SpeculativeWarrant | null;
99
+ /**
100
+ * Get speculative warrants for an agent
101
+ * For pre-staged activation
102
+ */
103
+ getSpeculativeForAgent(agentId: string): SpeculativeWarrant[];
104
+ /**
105
+ * Record a revocation
106
+ * Propagates immediately (WARRANT-INV-002)
107
+ */
108
+ revoke(id: WarrantId): void;
109
+ /**
110
+ * Check if a warrant is revoked
111
+ */
112
+ isRevoked(id: WarrantId): boolean;
113
+ /**
114
+ * Clear expired entries
115
+ */
116
+ cleanup(): number;
117
+ /**
118
+ * Get cache statistics
119
+ */
120
+ getStats(): {
121
+ size: number;
122
+ speculative: number;
123
+ revocations: number;
124
+ };
125
+ }
126
+ export declare class WarrantEngine {
127
+ private key;
128
+ private cache;
129
+ private commitmentEngine;
130
+ private eventLog;
131
+ private lastEventHash;
132
+ constructor(commitmentEngine: CommitmentEngine);
133
+ /**
134
+ * Initialize the engine with a seal key
135
+ */
136
+ initialize(sealKey: string): Promise<void>;
137
+ /**
138
+ * Create a speculative warrant (pre-staged)
139
+ * WARRANT-INV-001: Expires in 60s if not activated
140
+ */
141
+ createSpeculative(params: {
142
+ agent_id: string;
143
+ policy_id: string;
144
+ tier: WarrantTier;
145
+ constraints: WarrantConstraints;
146
+ duration_ms: number;
147
+ issued_by: string;
148
+ }): Promise<SpeculativeWarrant>;
149
+ /**
150
+ * Activate a speculative warrant
151
+ * Target: <10ms (cache hit)
152
+ * WARRANT-INV-003: Immediately sealed (L1)
153
+ */
154
+ activate(id: WarrantId): Promise<Warrant>;
155
+ /**
156
+ * Revoke a warrant
157
+ * WARRANT-INV-002: Propagates to all caches within 100ms
158
+ */
159
+ revoke(id: WarrantId, reason: string, actor: {
160
+ type: 'user' | 'system';
161
+ id: string;
162
+ }): Promise<Warrant>;
163
+ /**
164
+ * Check if an action is authorized by warrant
165
+ * Returns matching warrant or null
166
+ */
167
+ checkAuthorization(params: {
168
+ agent_id: string;
169
+ action: string;
170
+ amount?: number;
171
+ domain?: string;
172
+ }): Promise<Warrant | null>;
173
+ /**
174
+ * Check if action meets warrant constraints
175
+ */
176
+ private meetsConstraints;
177
+ /**
178
+ * Log a warrant event with hash chain
179
+ */
180
+ private logEvent;
181
+ /**
182
+ * Get event log for a warrant
183
+ */
184
+ getEventLog(warrantId?: WarrantId): WarrantEvent[];
185
+ /**
186
+ * Get cache statistics
187
+ */
188
+ getCacheStats(): ReturnType<WarrantCache['getStats']>;
189
+ }
190
+ export declare const TIER_LIMITS: Record<WarrantTier, {
191
+ maxExposure: number;
192
+ maxCalls: number;
193
+ requiresApproval: boolean;
194
+ }>;
195
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/warrant/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,409 @@
1
+ /**
2
+ * mdash v3.0 - Warrant System
3
+ *
4
+ * Speculative warrant issuance with cryptographic invalidation.
5
+ * Target: <10ms activation (cache hit)
6
+ *
7
+ * Invariants:
8
+ * - WARRANT-INV-001: Speculative warrants expire within 60s if not activated
9
+ * - WARRANT-INV-002: Revocation propagates to all caches within 100ms
10
+ * - WARRANT-INV-003: Activated warrants immediately sealed (L1)
11
+ */
12
+ import { generateWarrantId, generateTimestamp, sha256Object, hmacSeal, deriveKey, } from '../core/crypto.js';
13
+ export class WarrantCache {
14
+ cache = new Map();
15
+ speculative = new Map(); // agent_id -> warrant_ids
16
+ revocations = new Set();
17
+ DEFAULT_TTL = 5 * 60 * 1000; // 5 minutes
18
+ SPECULATIVE_TTL = 60 * 1000; // 60 seconds (WARRANT-INV-001)
19
+ /**
20
+ * Store a warrant in cache
21
+ */
22
+ set(warrant, ttl) {
23
+ const effectiveTtl = warrant.state === 'SPECULATIVE'
24
+ ? this.SPECULATIVE_TTL
25
+ : (ttl || this.DEFAULT_TTL);
26
+ this.cache.set(warrant.id, {
27
+ warrant,
28
+ cached_at: Date.now(),
29
+ ttl_ms: effectiveTtl,
30
+ });
31
+ // Track speculative warrants by agent
32
+ if (warrant.state === 'SPECULATIVE') {
33
+ const existing = this.speculative.get(warrant.agent_id) || [];
34
+ existing.push(warrant.id);
35
+ this.speculative.set(warrant.agent_id, existing);
36
+ }
37
+ }
38
+ /**
39
+ * Get a warrant from cache
40
+ * Returns null if not found, expired, or revoked
41
+ */
42
+ get(id) {
43
+ // Check revocation first (WARRANT-INV-002)
44
+ if (this.revocations.has(id)) {
45
+ return null;
46
+ }
47
+ const entry = this.cache.get(id);
48
+ if (!entry) {
49
+ return null;
50
+ }
51
+ // Check TTL
52
+ if (Date.now() - entry.cached_at > entry.ttl_ms) {
53
+ this.cache.delete(id);
54
+ return null;
55
+ }
56
+ return entry.warrant;
57
+ }
58
+ /**
59
+ * Get speculative warrants for an agent
60
+ * For pre-staged activation
61
+ */
62
+ getSpeculativeForAgent(agentId) {
63
+ const ids = this.speculative.get(agentId) || [];
64
+ const warrants = [];
65
+ for (const id of ids) {
66
+ const warrant = this.get(id);
67
+ if (warrant && warrant.state === 'SPECULATIVE') {
68
+ warrants.push(warrant);
69
+ }
70
+ }
71
+ return warrants;
72
+ }
73
+ /**
74
+ * Record a revocation
75
+ * Propagates immediately (WARRANT-INV-002)
76
+ */
77
+ revoke(id) {
78
+ this.revocations.add(id);
79
+ this.cache.delete(id);
80
+ // Remove from speculative tracking
81
+ for (const [agentId, ids] of this.speculative) {
82
+ const filtered = ids.filter(i => i !== id);
83
+ if (filtered.length !== ids.length) {
84
+ this.speculative.set(agentId, filtered);
85
+ }
86
+ }
87
+ }
88
+ /**
89
+ * Check if a warrant is revoked
90
+ */
91
+ isRevoked(id) {
92
+ return this.revocations.has(id);
93
+ }
94
+ /**
95
+ * Clear expired entries
96
+ */
97
+ cleanup() {
98
+ let removed = 0;
99
+ const now = Date.now();
100
+ for (const [id, entry] of this.cache) {
101
+ if (now - entry.cached_at > entry.ttl_ms) {
102
+ this.cache.delete(id);
103
+ removed++;
104
+ }
105
+ }
106
+ return removed;
107
+ }
108
+ /**
109
+ * Get cache statistics
110
+ */
111
+ getStats() {
112
+ return {
113
+ size: this.cache.size,
114
+ speculative: Array.from(this.speculative.values()).flat().length,
115
+ revocations: this.revocations.size,
116
+ };
117
+ }
118
+ }
119
+ // ============================================================================
120
+ // WARRANT ENGINE
121
+ // ============================================================================
122
+ export class WarrantEngine {
123
+ key = null;
124
+ cache;
125
+ commitmentEngine;
126
+ eventLog = [];
127
+ lastEventHash = null;
128
+ constructor(commitmentEngine) {
129
+ this.cache = new WarrantCache();
130
+ this.commitmentEngine = commitmentEngine;
131
+ }
132
+ /**
133
+ * Initialize the engine with a seal key
134
+ */
135
+ async initialize(sealKey) {
136
+ this.key = await deriveKey(sealKey);
137
+ }
138
+ /**
139
+ * Create a speculative warrant (pre-staged)
140
+ * WARRANT-INV-001: Expires in 60s if not activated
141
+ */
142
+ async createSpeculative(params) {
143
+ if (!this.key) {
144
+ throw new Error('Engine not initialized. Call initialize() first.');
145
+ }
146
+ const startTime = performance.now();
147
+ const id = generateWarrantId();
148
+ const now = generateTimestamp();
149
+ const expiresAt = new Date(Date.now() + params.duration_ms).toISOString();
150
+ const speculativeExpiresAt = new Date(Date.now() + 60000).toISOString();
151
+ // Pre-compute activation seal
152
+ const activationData = {
153
+ _v: 1,
154
+ id,
155
+ agent_id: params.agent_id,
156
+ activated: true,
157
+ };
158
+ const activationSeal = await hmacSeal(activationData, this.key);
159
+ // Seal the warrant
160
+ const warrantData = {
161
+ _v: 1,
162
+ id,
163
+ agent_id: params.agent_id,
164
+ policy_id: params.policy_id,
165
+ state: 'SPECULATIVE',
166
+ tier: params.tier,
167
+ constraints: params.constraints,
168
+ created_at: now,
169
+ expires_at: expiresAt,
170
+ issued_by: params.issued_by,
171
+ };
172
+ const seal = await hmacSeal(warrantData, this.key);
173
+ const warrant = {
174
+ id,
175
+ agent_id: params.agent_id,
176
+ policy_id: params.policy_id,
177
+ state: 'SPECULATIVE',
178
+ tier: params.tier,
179
+ constraints: params.constraints,
180
+ created_at: now,
181
+ activated_at: null,
182
+ expires_at: expiresAt,
183
+ revoked_at: null,
184
+ issued_by: params.issued_by,
185
+ seal,
186
+ version: 'v3.0',
187
+ speculative_expires_at: speculativeExpiresAt,
188
+ activation_seal: activationSeal,
189
+ };
190
+ // Cache for fast activation
191
+ this.cache.set(warrant);
192
+ // Log event
193
+ await this.logEvent({
194
+ warrant_id: id,
195
+ event_type: 'created',
196
+ actor: { type: 'user', id: params.issued_by },
197
+ previous_state: 'DRAFT',
198
+ new_state: 'SPECULATIVE',
199
+ });
200
+ const elapsed = performance.now() - startTime;
201
+ if (elapsed > 10) {
202
+ console.warn(`Speculative warrant creation exceeded target: ${elapsed.toFixed(2)}ms`);
203
+ }
204
+ return warrant;
205
+ }
206
+ /**
207
+ * Activate a speculative warrant
208
+ * Target: <10ms (cache hit)
209
+ * WARRANT-INV-003: Immediately sealed (L1)
210
+ */
211
+ async activate(id) {
212
+ if (!this.key) {
213
+ throw new Error('Engine not initialized. Call initialize() first.');
214
+ }
215
+ const startTime = performance.now();
216
+ // Try cache first
217
+ const cached = this.cache.get(id);
218
+ if (!cached) {
219
+ throw new Error(`Warrant not found or expired: ${id}`);
220
+ }
221
+ if (cached.state !== 'SPECULATIVE') {
222
+ throw new Error(`Warrant not in SPECULATIVE state: ${cached.state}`);
223
+ }
224
+ const specWarrant = cached;
225
+ // Check speculative expiry (WARRANT-INV-001)
226
+ if (new Date(specWarrant.speculative_expires_at) < new Date()) {
227
+ this.cache.revoke(id);
228
+ throw new Error('Speculative warrant expired (60s limit)');
229
+ }
230
+ const now = generateTimestamp();
231
+ // Create activated warrant
232
+ const activatedWarrant = {
233
+ id: specWarrant.id,
234
+ agent_id: specWarrant.agent_id,
235
+ policy_id: specWarrant.policy_id,
236
+ state: 'ACTIVE',
237
+ tier: specWarrant.tier,
238
+ constraints: specWarrant.constraints,
239
+ created_at: specWarrant.created_at,
240
+ activated_at: now,
241
+ expires_at: specWarrant.expires_at,
242
+ revoked_at: null,
243
+ issued_by: specWarrant.issued_by,
244
+ seal: specWarrant.seal, // Original seal preserved
245
+ version: 'v3.0',
246
+ };
247
+ // WARRANT-INV-003: Immediately seal via commitment layer
248
+ await this.commitmentEngine.commit(activatedWarrant, `warrant:${id}`);
249
+ // Update cache
250
+ this.cache.set(activatedWarrant);
251
+ // Log event
252
+ await this.logEvent({
253
+ warrant_id: id,
254
+ event_type: 'activated',
255
+ actor: { type: 'system', id: 'warrant-engine' },
256
+ previous_state: 'SPECULATIVE',
257
+ new_state: 'ACTIVE',
258
+ });
259
+ const elapsed = performance.now() - startTime;
260
+ if (elapsed > 10) {
261
+ console.warn(`Warrant activation exceeded target: ${elapsed.toFixed(2)}ms`);
262
+ }
263
+ return activatedWarrant;
264
+ }
265
+ /**
266
+ * Revoke a warrant
267
+ * WARRANT-INV-002: Propagates to all caches within 100ms
268
+ */
269
+ async revoke(id, reason, actor) {
270
+ if (!this.key) {
271
+ throw new Error('Engine not initialized. Call initialize() first.');
272
+ }
273
+ const startTime = performance.now();
274
+ const warrant = this.cache.get(id);
275
+ if (!warrant) {
276
+ throw new Error(`Warrant not found: ${id}`);
277
+ }
278
+ if (warrant.state === 'REVOKED' || warrant.state === 'ARCHIVED') {
279
+ throw new Error(`Warrant already ${warrant.state}`);
280
+ }
281
+ const previousState = warrant.state;
282
+ const now = generateTimestamp();
283
+ // Create revoked warrant
284
+ const revokedWarrant = {
285
+ ...warrant,
286
+ state: 'REVOKED',
287
+ revoked_at: now,
288
+ revocation_reason: reason,
289
+ };
290
+ // Seal revocation
291
+ await this.commitmentEngine.commit({ warrant_id: id, revoked_at: now, reason }, `revocation:${id}`);
292
+ // WARRANT-INV-002: Immediate cache revocation
293
+ this.cache.revoke(id);
294
+ // Log event
295
+ await this.logEvent({
296
+ warrant_id: id,
297
+ event_type: 'revoked',
298
+ actor,
299
+ reason,
300
+ previous_state: previousState,
301
+ new_state: 'REVOKED',
302
+ });
303
+ const elapsed = performance.now() - startTime;
304
+ if (elapsed > 100) {
305
+ console.warn(`Warrant revocation exceeded propagation target: ${elapsed.toFixed(2)}ms`);
306
+ }
307
+ return revokedWarrant;
308
+ }
309
+ /**
310
+ * Check if an action is authorized by warrant
311
+ * Returns matching warrant or null
312
+ */
313
+ async checkAuthorization(params) {
314
+ const startTime = performance.now();
315
+ // Get speculative warrants for agent
316
+ const specWarrants = this.cache.getSpeculativeForAgent(params.agent_id);
317
+ for (const warrant of specWarrants) {
318
+ // Check constraints
319
+ if (this.meetsConstraints(warrant.constraints, params)) {
320
+ // Activate on first matching warrant
321
+ const activated = await this.activate(warrant.id);
322
+ const elapsed = performance.now() - startTime;
323
+ if (elapsed > 10) {
324
+ console.warn(`Authorization check exceeded target: ${elapsed.toFixed(2)}ms`);
325
+ }
326
+ return activated;
327
+ }
328
+ }
329
+ return null;
330
+ }
331
+ /**
332
+ * Check if action meets warrant constraints
333
+ */
334
+ meetsConstraints(constraints, action) {
335
+ // Check amount limit
336
+ if (constraints.maxAmount !== undefined && action.amount !== undefined) {
337
+ if (action.amount > constraints.maxAmount) {
338
+ return false;
339
+ }
340
+ }
341
+ // Check domain allowlist
342
+ if (constraints.allowedDomains && action.domain) {
343
+ if (!constraints.allowedDomains.includes(action.domain)) {
344
+ return false;
345
+ }
346
+ }
347
+ return true;
348
+ }
349
+ /**
350
+ * Log a warrant event with hash chain
351
+ */
352
+ async logEvent(params) {
353
+ const timestamp = generateTimestamp();
354
+ const event = {
355
+ warrant_id: params.warrant_id,
356
+ event_type: params.event_type,
357
+ timestamp,
358
+ actor: params.actor,
359
+ reason: params.reason,
360
+ previous_state: params.previous_state,
361
+ new_state: params.new_state,
362
+ hash: '', // Will be computed
363
+ parent_hash: this.lastEventHash,
364
+ };
365
+ // Compute event hash
366
+ event.hash = await sha256Object({
367
+ ...event,
368
+ hash: undefined, // Exclude from hash computation
369
+ });
370
+ this.eventLog.push(event);
371
+ this.lastEventHash = event.hash;
372
+ }
373
+ /**
374
+ * Get event log for a warrant
375
+ */
376
+ getEventLog(warrantId) {
377
+ if (warrantId) {
378
+ return this.eventLog.filter(e => e.warrant_id === warrantId);
379
+ }
380
+ return [...this.eventLog];
381
+ }
382
+ /**
383
+ * Get cache statistics
384
+ */
385
+ getCacheStats() {
386
+ return this.cache.getStats();
387
+ }
388
+ }
389
+ // ============================================================================
390
+ // TIER DEFINITIONS
391
+ // ============================================================================
392
+ export const TIER_LIMITS = {
393
+ T1: {
394
+ maxExposure: 1000,
395
+ maxCalls: 100,
396
+ requiresApproval: false,
397
+ },
398
+ T2: {
399
+ maxExposure: 100000,
400
+ maxCalls: 1000,
401
+ requiresApproval: false,
402
+ },
403
+ T3: {
404
+ maxExposure: Infinity,
405
+ maxCalls: Infinity,
406
+ requiresApproval: true,
407
+ },
408
+ };
409
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/warrant/engine.ts"],"names":[],"mappings":"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"}