@vorionsys/proof-plane 0.1.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 (41) hide show
  1. package/dist/events/event-emitter.d.ts +140 -0
  2. package/dist/events/event-emitter.d.ts.map +1 -0
  3. package/dist/events/event-emitter.js +235 -0
  4. package/dist/events/event-emitter.js.map +1 -0
  5. package/dist/events/event-signatures.d.ts +154 -0
  6. package/dist/events/event-signatures.d.ts.map +1 -0
  7. package/dist/events/event-signatures.js +302 -0
  8. package/dist/events/event-signatures.js.map +1 -0
  9. package/dist/events/event-store.d.ts +159 -0
  10. package/dist/events/event-store.d.ts.map +1 -0
  11. package/dist/events/event-store.js +36 -0
  12. package/dist/events/event-store.js.map +1 -0
  13. package/dist/events/hash-chain.d.ts +63 -0
  14. package/dist/events/hash-chain.d.ts.map +1 -0
  15. package/dist/events/hash-chain.js +135 -0
  16. package/dist/events/hash-chain.js.map +1 -0
  17. package/dist/events/index.d.ts +9 -0
  18. package/dist/events/index.d.ts.map +1 -0
  19. package/dist/events/index.js +9 -0
  20. package/dist/events/index.js.map +1 -0
  21. package/dist/events/memory-store.d.ts +82 -0
  22. package/dist/events/memory-store.d.ts.map +1 -0
  23. package/dist/events/memory-store.js +215 -0
  24. package/dist/events/memory-store.js.map +1 -0
  25. package/dist/index.d.ts +36 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +41 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/proof-plane/index.d.ts +6 -0
  30. package/dist/proof-plane/index.d.ts.map +1 -0
  31. package/dist/proof-plane/index.js +6 -0
  32. package/dist/proof-plane/index.js.map +1 -0
  33. package/dist/proof-plane/logger.d.ts +47 -0
  34. package/dist/proof-plane/logger.d.ts.map +1 -0
  35. package/dist/proof-plane/logger.js +48 -0
  36. package/dist/proof-plane/logger.js.map +1 -0
  37. package/dist/proof-plane/proof-plane.d.ts +263 -0
  38. package/dist/proof-plane/proof-plane.d.ts.map +1 -0
  39. package/dist/proof-plane/proof-plane.js +431 -0
  40. package/dist/proof-plane/proof-plane.js.map +1 -0
  41. package/package.json +48 -0
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Hash Chain Utilities - Cryptographic hash chain for tamper detection
3
+ *
4
+ * Each proof event contains a hash of its contents and a reference
5
+ * to the previous event's hash, forming an immutable chain.
6
+ */
7
+ /**
8
+ * Create a SHA-256 hash of the given data
9
+ */
10
+ export async function sha256(data) {
11
+ const encoder = new TextEncoder();
12
+ const dataBuffer = encoder.encode(data);
13
+ const hashBuffer = await crypto.subtle.digest('SHA-256', dataBuffer);
14
+ const hashArray = Array.from(new Uint8Array(hashBuffer));
15
+ return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
16
+ }
17
+ /**
18
+ * Create the hashable representation of an event
19
+ */
20
+ function getHashableData(event) {
21
+ return {
22
+ eventId: event.eventId,
23
+ eventType: event.eventType,
24
+ correlationId: event.correlationId,
25
+ agentId: event.agentId,
26
+ payload: event.payload,
27
+ previousHash: event.previousHash,
28
+ occurredAt: event.occurredAt instanceof Date
29
+ ? event.occurredAt.toISOString()
30
+ : event.occurredAt,
31
+ signedBy: event.signedBy,
32
+ signature: event.signature,
33
+ };
34
+ }
35
+ /**
36
+ * Recursively sort object keys for deterministic serialization
37
+ */
38
+ function sortObjectKeys(obj) {
39
+ if (obj === null || typeof obj !== 'object') {
40
+ return obj;
41
+ }
42
+ if (Array.isArray(obj)) {
43
+ return obj.map(sortObjectKeys);
44
+ }
45
+ const sorted = {};
46
+ for (const key of Object.keys(obj).sort()) {
47
+ sorted[key] = sortObjectKeys(obj[key]);
48
+ }
49
+ return sorted;
50
+ }
51
+ /**
52
+ * Compute the hash of an event's content
53
+ */
54
+ export async function computeEventHash(event) {
55
+ const hashable = getHashableData(event);
56
+ const sortedHashable = sortObjectKeys(hashable);
57
+ const serialized = JSON.stringify(sortedHashable);
58
+ return sha256(serialized);
59
+ }
60
+ /**
61
+ * Verify that an event's hash is correct
62
+ */
63
+ export async function verifyEventHash(event) {
64
+ const computedHash = await computeEventHash(event);
65
+ return computedHash === event.eventHash;
66
+ }
67
+ /**
68
+ * Verify that an event correctly chains to the previous event
69
+ */
70
+ export function verifyChainLink(event, previousEvent) {
71
+ if (previousEvent === null) {
72
+ // First event in chain should have null previousHash
73
+ return event.previousHash === null;
74
+ }
75
+ return event.previousHash === previousEvent.eventHash;
76
+ }
77
+ /**
78
+ * Verify an entire chain of events
79
+ */
80
+ export async function verifyChain(events) {
81
+ if (events.length === 0) {
82
+ return { valid: true, verifiedCount: 0 };
83
+ }
84
+ // Events should be in order (oldest first)
85
+ for (let i = 0; i < events.length; i++) {
86
+ const event = events[i];
87
+ const previousEvent = i === 0 ? null : events[i - 1];
88
+ // Verify hash integrity
89
+ const hashValid = await verifyEventHash(event);
90
+ if (!hashValid) {
91
+ return {
92
+ valid: false,
93
+ verifiedCount: i,
94
+ brokenAtIndex: i,
95
+ brokenAtEventId: event.eventId,
96
+ error: `Event ${event.eventId} has invalid hash`,
97
+ };
98
+ }
99
+ // Verify chain link
100
+ const chainValid = verifyChainLink(event, previousEvent);
101
+ if (!chainValid) {
102
+ return {
103
+ valid: false,
104
+ verifiedCount: i,
105
+ brokenAtIndex: i,
106
+ brokenAtEventId: event.eventId,
107
+ error: `Event ${event.eventId} has broken chain link`,
108
+ };
109
+ }
110
+ }
111
+ return { valid: true, verifiedCount: events.length };
112
+ }
113
+ /**
114
+ * Create a genesis hash for the first event in a chain
115
+ */
116
+ export function getGenesisHash() {
117
+ return null;
118
+ }
119
+ /**
120
+ * Verify a chain and return detailed results
121
+ */
122
+ export async function verifyChainWithDetails(events) {
123
+ const result = await verifyChain(events);
124
+ return {
125
+ valid: result.valid,
126
+ verifiedCount: result.verifiedCount,
127
+ totalEvents: events.length,
128
+ firstEventId: events[0]?.eventId,
129
+ lastEventId: events[events.length - 1]?.eventId,
130
+ brokenAtEventId: result.brokenAtEventId,
131
+ brokenAtIndex: result.brokenAtIndex,
132
+ error: result.error,
133
+ };
134
+ }
135
+ //# sourceMappingURL=hash-chain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash-chain.js","sourceRoot":"","sources":["../../src/events/hash-chain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Events module - Event store, emitter, and hash chain utilities
3
+ */
4
+ export * from './event-store.js';
5
+ export * from './memory-store.js';
6
+ export * from './event-emitter.js';
7
+ export * from './hash-chain.js';
8
+ export * from './event-signatures.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Events module - Event store, emitter, and hash chain utilities
3
+ */
4
+ export * from './event-store.js';
5
+ export * from './memory-store.js';
6
+ export * from './event-emitter.js';
7
+ export * from './hash-chain.js';
8
+ export * from './event-signatures.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * In-Memory Event Store - Reference implementation for testing
3
+ *
4
+ * This implementation stores events in memory. For production,
5
+ * use a persistent store (PostgreSQL, Supabase, etc.).
6
+ */
7
+ import type { ProofEvent, ProofEventFilter, ProofEventSummary, ProofEventType } from '@vorion/contracts';
8
+ import { type ProofEventStore, type EventQueryOptions, type EventQueryResult, type EventStats } from './event-store.js';
9
+ /**
10
+ * In-memory implementation of ProofEventStore
11
+ */
12
+ export declare class InMemoryEventStore implements ProofEventStore {
13
+ private events;
14
+ private eventOrder;
15
+ /**
16
+ * Append an event to the store
17
+ */
18
+ append(event: ProofEvent): Promise<ProofEvent>;
19
+ /**
20
+ * Get an event by ID
21
+ */
22
+ get(eventId: string): Promise<ProofEvent | null>;
23
+ /**
24
+ * Get the latest event
25
+ */
26
+ getLatest(): Promise<ProofEvent | null>;
27
+ /**
28
+ * Get the latest hash for chaining
29
+ */
30
+ getLatestHash(): Promise<string | null>;
31
+ /**
32
+ * Query events with filters
33
+ */
34
+ query(filter?: ProofEventFilter, options?: EventQueryOptions): Promise<EventQueryResult>;
35
+ /**
36
+ * Get events by correlation ID
37
+ */
38
+ getByCorrelationId(correlationId: string, options?: EventQueryOptions): Promise<ProofEvent[]>;
39
+ /**
40
+ * Get events by agent ID
41
+ */
42
+ getByAgentId(agentId: string, options?: EventQueryOptions): Promise<ProofEvent[]>;
43
+ /**
44
+ * Get events in a time range
45
+ */
46
+ getByTimeRange(from: Date, to: Date, options?: EventQueryOptions): Promise<ProofEvent[]>;
47
+ /**
48
+ * Get events by type
49
+ */
50
+ getByType(eventType: ProofEventType, options?: EventQueryOptions): Promise<ProofEvent[]>;
51
+ /**
52
+ * Get event summaries
53
+ */
54
+ getSummaries(filter?: ProofEventFilter, options?: EventQueryOptions): Promise<ProofEventSummary[]>;
55
+ /**
56
+ * Get the chain from a starting point
57
+ */
58
+ getChain(fromEventId?: string, limit?: number): Promise<ProofEvent[]>;
59
+ /**
60
+ * Get event count
61
+ */
62
+ count(filter?: ProofEventFilter): Promise<number>;
63
+ /**
64
+ * Get event statistics
65
+ */
66
+ getStats(): Promise<EventStats>;
67
+ /**
68
+ * Check if an event exists
69
+ */
70
+ exists(eventId: string): Promise<boolean>;
71
+ /**
72
+ * Clear all events
73
+ */
74
+ clear(): Promise<void>;
75
+ private getOrderedEvents;
76
+ private applyFilter;
77
+ }
78
+ /**
79
+ * Create an in-memory event store
80
+ */
81
+ export declare function createInMemoryEventStore(): InMemoryEventStore;
82
+ //# sourceMappingURL=memory-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-store.d.ts","sourceRoot":"","sources":["../../src/events/memory-store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EAGhB,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,qBAAa,kBAAmB,YAAW,eAAe;IACxD,OAAO,CAAC,MAAM,CAAsC;IACpD,OAAO,CAAC,UAAU,CAAgB;IAElC;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAqBpD;;OAEG;IACG,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAItD;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAQ7C;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAK7C;;OAEG;IACG,KAAK,CACT,MAAM,CAAC,EAAE,gBAAgB,EACzB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,gBAAgB,CAAC;IA2B5B;;OAEG;IACG,kBAAkB,CACtB,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,UAAU,EAAE,CAAC;IAKxB;;OAEG;IACG,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,UAAU,EAAE,CAAC;IAKxB;;OAEG;IACG,cAAc,CAClB,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,IAAI,EACR,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,UAAU,EAAE,CAAC;IAKxB;;OAEG;IACG,SAAS,CACb,SAAS,EAAE,cAAc,EACzB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,UAAU,EAAE,CAAC;IAKxB;;OAEG;IACG,YAAY,CAChB,MAAM,CAAC,EAAE,gBAAgB,EACzB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAY/B;;OAEG;IACG,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAe3E;;OAEG;IACG,KAAK,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAQvD;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC;IAsBrC;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,WAAW;CAoBpB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,kBAAkB,CAE7D"}
@@ -0,0 +1,215 @@
1
+ /**
2
+ * In-Memory Event Store - Reference implementation for testing
3
+ *
4
+ * This implementation stores events in memory. For production,
5
+ * use a persistent store (PostgreSQL, Supabase, etc.).
6
+ */
7
+ import { EventStoreError, EventStoreErrorCode, } from './event-store.js';
8
+ /**
9
+ * In-memory implementation of ProofEventStore
10
+ */
11
+ export class InMemoryEventStore {
12
+ events = new Map();
13
+ eventOrder = []; // Maintains insertion order
14
+ /**
15
+ * Append an event to the store
16
+ */
17
+ async append(event) {
18
+ if (this.events.has(event.eventId)) {
19
+ throw new EventStoreError(`Event ${event.eventId} already exists`, EventStoreErrorCode.DUPLICATE_EVENT, event.eventId);
20
+ }
21
+ // Set recorded timestamp if not already set
22
+ const storedEvent = {
23
+ ...event,
24
+ recordedAt: event.recordedAt ?? new Date(),
25
+ };
26
+ this.events.set(event.eventId, storedEvent);
27
+ this.eventOrder.push(event.eventId);
28
+ return storedEvent;
29
+ }
30
+ /**
31
+ * Get an event by ID
32
+ */
33
+ async get(eventId) {
34
+ return this.events.get(eventId) ?? null;
35
+ }
36
+ /**
37
+ * Get the latest event
38
+ */
39
+ async getLatest() {
40
+ if (this.eventOrder.length === 0) {
41
+ return null;
42
+ }
43
+ const lastId = this.eventOrder[this.eventOrder.length - 1];
44
+ return this.events.get(lastId) ?? null;
45
+ }
46
+ /**
47
+ * Get the latest hash for chaining
48
+ */
49
+ async getLatestHash() {
50
+ const latest = await this.getLatest();
51
+ return latest?.eventHash ?? null;
52
+ }
53
+ /**
54
+ * Query events with filters
55
+ */
56
+ async query(filter, options) {
57
+ let events = this.getOrderedEvents(options?.order);
58
+ // Apply filters
59
+ if (filter) {
60
+ events = this.applyFilter(events, filter);
61
+ }
62
+ const totalCount = events.length;
63
+ // Apply pagination
64
+ const offset = options?.offset ?? 0;
65
+ const limit = options?.limit ?? 100;
66
+ const paginatedEvents = events.slice(offset, offset + limit);
67
+ // Optionally strip payloads
68
+ const resultEvents = options?.includePayload === false
69
+ ? paginatedEvents.map(e => ({ ...e, payload: { type: e.payload.type } }))
70
+ : paginatedEvents;
71
+ return {
72
+ events: resultEvents,
73
+ totalCount,
74
+ hasMore: offset + limit < totalCount,
75
+ };
76
+ }
77
+ /**
78
+ * Get events by correlation ID
79
+ */
80
+ async getByCorrelationId(correlationId, options) {
81
+ const result = await this.query({ correlationId }, options);
82
+ return result.events;
83
+ }
84
+ /**
85
+ * Get events by agent ID
86
+ */
87
+ async getByAgentId(agentId, options) {
88
+ const result = await this.query({ agentId }, options);
89
+ return result.events;
90
+ }
91
+ /**
92
+ * Get events in a time range
93
+ */
94
+ async getByTimeRange(from, to, options) {
95
+ const result = await this.query({ from, to }, options);
96
+ return result.events;
97
+ }
98
+ /**
99
+ * Get events by type
100
+ */
101
+ async getByType(eventType, options) {
102
+ const result = await this.query({ eventTypes: [eventType] }, options);
103
+ return result.events;
104
+ }
105
+ /**
106
+ * Get event summaries
107
+ */
108
+ async getSummaries(filter, options) {
109
+ const result = await this.query(filter, options);
110
+ return result.events.map(e => ({
111
+ eventId: e.eventId,
112
+ eventType: e.eventType,
113
+ correlationId: e.correlationId,
114
+ agentId: e.agentId,
115
+ occurredAt: e.occurredAt,
116
+ recordedAt: e.recordedAt,
117
+ }));
118
+ }
119
+ /**
120
+ * Get the chain from a starting point
121
+ */
122
+ async getChain(fromEventId, limit) {
123
+ const events = this.getOrderedEvents('asc');
124
+ if (fromEventId) {
125
+ const startIndex = events.findIndex(e => e.eventId === fromEventId);
126
+ if (startIndex === -1) {
127
+ return [];
128
+ }
129
+ const chainEvents = events.slice(startIndex);
130
+ return limit ? chainEvents.slice(0, limit) : chainEvents;
131
+ }
132
+ return limit ? events.slice(0, limit) : events;
133
+ }
134
+ /**
135
+ * Get event count
136
+ */
137
+ async count(filter) {
138
+ if (!filter) {
139
+ return this.events.size;
140
+ }
141
+ const events = this.applyFilter(this.getOrderedEvents(), filter);
142
+ return events.length;
143
+ }
144
+ /**
145
+ * Get event statistics
146
+ */
147
+ async getStats() {
148
+ const events = this.getOrderedEvents('asc');
149
+ const byType = {};
150
+ const byAgent = {};
151
+ for (const event of events) {
152
+ byType[event.eventType] = (byType[event.eventType] ?? 0) + 1;
153
+ if (event.agentId) {
154
+ byAgent[event.agentId] = (byAgent[event.agentId] ?? 0) + 1;
155
+ }
156
+ }
157
+ return {
158
+ totalEvents: events.length,
159
+ byType,
160
+ byAgent,
161
+ oldestEvent: events[0]?.occurredAt,
162
+ newestEvent: events[events.length - 1]?.occurredAt,
163
+ };
164
+ }
165
+ /**
166
+ * Check if an event exists
167
+ */
168
+ async exists(eventId) {
169
+ return this.events.has(eventId);
170
+ }
171
+ /**
172
+ * Clear all events
173
+ */
174
+ async clear() {
175
+ this.events.clear();
176
+ this.eventOrder = [];
177
+ }
178
+ // Private helpers
179
+ getOrderedEvents(order = 'asc') {
180
+ const events = this.eventOrder
181
+ .map(id => this.events.get(id))
182
+ .filter((e) => e !== undefined);
183
+ if (order === 'desc') {
184
+ return events.reverse();
185
+ }
186
+ return events;
187
+ }
188
+ applyFilter(events, filter) {
189
+ return events.filter(event => {
190
+ if (filter.correlationId && event.correlationId !== filter.correlationId) {
191
+ return false;
192
+ }
193
+ if (filter.agentId && event.agentId !== filter.agentId) {
194
+ return false;
195
+ }
196
+ if (filter.eventTypes && !filter.eventTypes.includes(event.eventType)) {
197
+ return false;
198
+ }
199
+ if (filter.from && event.occurredAt < filter.from) {
200
+ return false;
201
+ }
202
+ if (filter.to && event.occurredAt > filter.to) {
203
+ return false;
204
+ }
205
+ return true;
206
+ });
207
+ }
208
+ }
209
+ /**
210
+ * Create an in-memory event store
211
+ */
212
+ export function createInMemoryEventStore() {
213
+ return new InMemoryEventStore();
214
+ }
215
+ //# sourceMappingURL=memory-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-store.js","sourceRoot":"","sources":["../../src/events/memory-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Vorion Package - Proof Plane for AI Agent Operations
3
+ *
4
+ * The Vorion proof plane provides an immutable audit trail for all
5
+ * AI agent operations, enabling compliance, debugging, and trust verification.
6
+ *
7
+ * Key components:
8
+ * - ProofPlane: High-level API for the audit system
9
+ * - ProofEventStore: Abstract storage interface
10
+ * - ProofEventEmitter: Event creation with hash chaining
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { createProofPlane } from '@vorion/proof-plane';
15
+ *
16
+ * const proofPlane = createProofPlane({ signedBy: 'my-service' });
17
+ *
18
+ * // Log events
19
+ * await proofPlane.logIntentReceived(intent);
20
+ * await proofPlane.logDecisionMade(decision);
21
+ *
22
+ * // Query events
23
+ * const trace = await proofPlane.getTrace(correlationId);
24
+ *
25
+ * // Verify chain integrity
26
+ * const verification = await proofPlane.verifyChain();
27
+ * ```
28
+ */
29
+ export { ProofPlane, createProofPlane, type ProofPlaneConfig, } from './proof-plane/proof-plane.js';
30
+ export { ProofPlaneLoggerImpl, createProofPlaneLogger, noopProofPlaneLogger, type ProofPlaneLogger, type ProofPlaneLoggerConfig, } from './proof-plane/logger.js';
31
+ export { type ProofEventStore, type EventQueryOptions, type EventQueryResult, type EventStats, EventStoreError, EventStoreErrorCode, } from './events/event-store.js';
32
+ export { InMemoryEventStore, createInMemoryEventStore, } from './events/memory-store.js';
33
+ export { ProofEventEmitter, createEventEmitter, type EventEmitterConfig, type EventListener, type EmitResult, type BatchEmitOptions, type BatchEmitResult, } from './events/event-emitter.js';
34
+ export { sha256, computeEventHash, verifyEventHash, verifyChainLink, verifyChain, verifyChainWithDetails, getGenesisHash, type ChainVerificationResult, } from './events/hash-chain.js';
35
+ export { generateSigningKeyPair, signEvent, verifyEventSignature, verifyEventSignatures, EventSigningService, createSigningService, type SigningKeyPair, type PublicKey, type SignatureVerificationResult, type SigningServiceConfig, type BatchVerificationResult, } from './events/event-signatures.js';
36
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,KAAK,gBAAgB,GACtB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,GAC5B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,eAAe,EACf,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,WAAW,EACX,sBAAsB,EACtB,cAAc,EACd,KAAK,uBAAuB,GAC7B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,sBAAsB,EACtB,SAAS,EACT,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,2BAA2B,EAChC,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,GAC7B,MAAM,8BAA8B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Vorion Package - Proof Plane for AI Agent Operations
3
+ *
4
+ * The Vorion proof plane provides an immutable audit trail for all
5
+ * AI agent operations, enabling compliance, debugging, and trust verification.
6
+ *
7
+ * Key components:
8
+ * - ProofPlane: High-level API for the audit system
9
+ * - ProofEventStore: Abstract storage interface
10
+ * - ProofEventEmitter: Event creation with hash chaining
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { createProofPlane } from '@vorion/proof-plane';
15
+ *
16
+ * const proofPlane = createProofPlane({ signedBy: 'my-service' });
17
+ *
18
+ * // Log events
19
+ * await proofPlane.logIntentReceived(intent);
20
+ * await proofPlane.logDecisionMade(decision);
21
+ *
22
+ * // Query events
23
+ * const trace = await proofPlane.getTrace(correlationId);
24
+ *
25
+ * // Verify chain integrity
26
+ * const verification = await proofPlane.verifyChain();
27
+ * ```
28
+ */
29
+ // Main exports
30
+ export { ProofPlane, createProofPlane, } from './proof-plane/proof-plane.js';
31
+ export { ProofPlaneLoggerImpl, createProofPlaneLogger, noopProofPlaneLogger, } from './proof-plane/logger.js';
32
+ // Event store exports
33
+ export { EventStoreError, EventStoreErrorCode, } from './events/event-store.js';
34
+ export { InMemoryEventStore, createInMemoryEventStore, } from './events/memory-store.js';
35
+ // Event emitter exports
36
+ export { ProofEventEmitter, createEventEmitter, } from './events/event-emitter.js';
37
+ // Hash chain exports
38
+ export { sha256, computeEventHash, verifyEventHash, verifyChainLink, verifyChain, verifyChainWithDetails, getGenesisHash, } from './events/hash-chain.js';
39
+ // Event signature exports
40
+ export { generateSigningKeyPair, signEvent, verifyEventSignature, verifyEventSignatures, EventSigningService, createSigningService, } from './events/event-signatures.js';
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,eAAe;AACf,OAAO,EACL,UAAU,EACV,gBAAgB,GAEjB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,GAGrB,MAAM,yBAAyB,CAAC;AAEjC,sBAAsB;AACtB,OAAO,EAKL,eAAe,EACf,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAElC,wBAAwB;AACxB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,GAMnB,MAAM,2BAA2B,CAAC;AAEnC,qBAAqB;AACrB,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,WAAW,EACX,sBAAsB,EACtB,cAAc,GAEf,MAAM,wBAAwB,CAAC;AAEhC,0BAA0B;AAC1B,OAAO,EACL,sBAAsB,EACtB,SAAS,EACT,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,GAMrB,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Proof Plane module - High-level proof plane interface
3
+ */
4
+ export * from './proof-plane.js';
5
+ export * from './logger.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/proof-plane/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Proof Plane module - High-level proof plane interface
3
+ */
4
+ export * from './proof-plane.js';
5
+ export * from './logger.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/proof-plane/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Proof Plane Logger - Implements the ProofPlaneLogger interface for A3I
3
+ *
4
+ * This bridges the A3I authorization engine with the Vorion proof plane,
5
+ * automatically logging authorization decisions to the audit trail.
6
+ */
7
+ import type { Intent, Decision } from '@vorion/contracts';
8
+ import { ProofPlane } from './proof-plane.js';
9
+ /**
10
+ * Interface for proof plane logging (matches A3I's expected interface)
11
+ */
12
+ export interface ProofPlaneLogger {
13
+ logDecision(decision: Decision, intent: Intent): Promise<void>;
14
+ }
15
+ /**
16
+ * Configuration for the proof plane logger
17
+ */
18
+ export interface ProofPlaneLoggerConfig {
19
+ /** The proof plane instance to use */
20
+ proofPlane: ProofPlane;
21
+ /** Whether to log intent received events */
22
+ logIntentReceived?: boolean;
23
+ /** Whether to log decision made events */
24
+ logDecisionMade?: boolean;
25
+ }
26
+ /**
27
+ * ProofPlaneLoggerImpl - Logs A3I events to the proof plane
28
+ */
29
+ export declare class ProofPlaneLoggerImpl implements ProofPlaneLogger {
30
+ private readonly proofPlane;
31
+ private readonly logIntentReceived;
32
+ private readonly logDecisionMade;
33
+ constructor(config: ProofPlaneLoggerConfig);
34
+ /**
35
+ * Log a decision (and optionally the intent)
36
+ */
37
+ logDecision(decision: Decision, intent: Intent): Promise<void>;
38
+ }
39
+ /**
40
+ * Create a proof plane logger
41
+ */
42
+ export declare function createProofPlaneLogger(config: ProofPlaneLoggerConfig): ProofPlaneLoggerImpl;
43
+ /**
44
+ * No-op logger for when proof plane is not connected
45
+ */
46
+ export declare const noopProofPlaneLogger: ProofPlaneLogger;
47
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/proof-plane/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,sCAAsC;IACtC,UAAU,EAAE,UAAU,CAAC;IACvB,4CAA4C;IAC5C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,0CAA0C;IAC1C,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAU;IAC5C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;gBAE9B,MAAM,EAAE,sBAAsB;IAM1C;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAarE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,sBAAsB,GAAG,oBAAoB,CAE3F;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,gBAIlC,CAAC"}