@framers/agentos 0.1.6 → 0.1.7

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 (260) hide show
  1. package/README.md +19 -0
  2. package/dist/api/AgentOS.d.ts +12 -0
  3. package/dist/api/AgentOS.d.ts.map +1 -1
  4. package/dist/api/AgentOS.js +96 -2
  5. package/dist/api/AgentOS.js.map +1 -1
  6. package/dist/api/AgentOSOrchestrator.d.ts +45 -0
  7. package/dist/api/AgentOSOrchestrator.d.ts.map +1 -1
  8. package/dist/api/AgentOSOrchestrator.js +470 -6
  9. package/dist/api/AgentOSOrchestrator.js.map +1 -1
  10. package/dist/api/types/AgentOSInput.d.ts +8 -0
  11. package/dist/api/types/AgentOSInput.d.ts.map +1 -1
  12. package/dist/api/types/AgentOSResponse.d.ts +22 -2
  13. package/dist/api/types/AgentOSResponse.d.ts.map +1 -1
  14. package/dist/api/types/AgentOSResponse.js +1 -0
  15. package/dist/api/types/AgentOSResponse.js.map +1 -1
  16. package/dist/channels/ChannelRouter.d.ts +150 -0
  17. package/dist/channels/ChannelRouter.d.ts.map +1 -0
  18. package/dist/channels/ChannelRouter.js +309 -0
  19. package/dist/channels/ChannelRouter.js.map +1 -0
  20. package/dist/channels/IChannelAdapter.d.ts +113 -0
  21. package/dist/channels/IChannelAdapter.d.ts.map +1 -0
  22. package/dist/channels/IChannelAdapter.js +17 -0
  23. package/dist/channels/IChannelAdapter.js.map +1 -0
  24. package/dist/channels/index.d.ts +9 -0
  25. package/dist/channels/index.d.ts.map +1 -0
  26. package/dist/channels/index.js +7 -0
  27. package/dist/channels/index.js.map +1 -0
  28. package/dist/channels/types.d.ts +257 -0
  29. package/dist/channels/types.d.ts.map +1 -0
  30. package/dist/channels/types.js +12 -0
  31. package/dist/channels/types.js.map +1 -0
  32. package/dist/cognitive_substrate/GMI.d.ts +139 -0
  33. package/dist/cognitive_substrate/GMI.d.ts.map +1 -1
  34. package/dist/cognitive_substrate/GMI.js +680 -14
  35. package/dist/cognitive_substrate/GMI.js.map +1 -1
  36. package/dist/cognitive_substrate/GMIEvent.d.ts +151 -0
  37. package/dist/cognitive_substrate/GMIEvent.d.ts.map +1 -0
  38. package/dist/cognitive_substrate/GMIEvent.js +79 -0
  39. package/dist/cognitive_substrate/GMIEvent.js.map +1 -0
  40. package/dist/cognitive_substrate/IGMI.d.ts +22 -0
  41. package/dist/cognitive_substrate/IGMI.d.ts.map +1 -1
  42. package/dist/cognitive_substrate/IGMI.js.map +1 -1
  43. package/dist/cognitive_substrate/personas/IPersonaDefinition.d.ts +92 -0
  44. package/dist/cognitive_substrate/personas/IPersonaDefinition.d.ts.map +1 -1
  45. package/dist/cognitive_substrate/personas/PersonaLoader.d.ts.map +1 -1
  46. package/dist/cognitive_substrate/personas/PersonaLoader.js +21 -0
  47. package/dist/cognitive_substrate/personas/PersonaLoader.js.map +1 -1
  48. package/dist/cognitive_substrate/personas/metaprompt_presets.d.ts +86 -0
  49. package/dist/cognitive_substrate/personas/metaprompt_presets.d.ts.map +1 -0
  50. package/dist/cognitive_substrate/personas/metaprompt_presets.js +457 -0
  51. package/dist/cognitive_substrate/personas/metaprompt_presets.js.map +1 -0
  52. package/dist/config/RetrievalAugmentorConfiguration.d.ts +21 -0
  53. package/dist/config/RetrievalAugmentorConfiguration.d.ts.map +1 -1
  54. package/dist/config/RetrievalAugmentorConfiguration.js.map +1 -1
  55. package/dist/config/VectorStoreConfiguration.d.ts +2 -1
  56. package/dist/config/VectorStoreConfiguration.d.ts.map +1 -1
  57. package/dist/config/VectorStoreConfiguration.js.map +1 -1
  58. package/dist/config/extension-secrets.json +198 -0
  59. package/dist/core/agents/AgentCore.d.ts +8 -0
  60. package/dist/core/agents/AgentCore.d.ts.map +1 -1
  61. package/dist/core/agents/AgentCore.js.map +1 -1
  62. package/dist/core/conversation/ConversationManager.d.ts.map +1 -1
  63. package/dist/core/conversation/ConversationManager.js +2 -4
  64. package/dist/core/conversation/ConversationManager.js.map +1 -1
  65. package/dist/core/conversation/ILongTermMemoryRetriever.d.ts +30 -0
  66. package/dist/core/conversation/ILongTermMemoryRetriever.d.ts.map +1 -0
  67. package/dist/core/conversation/ILongTermMemoryRetriever.js +2 -0
  68. package/dist/core/conversation/ILongTermMemoryRetriever.js.map +1 -0
  69. package/dist/core/conversation/IRollingSummaryMemorySink.d.ts +44 -0
  70. package/dist/core/conversation/IRollingSummaryMemorySink.d.ts.map +1 -0
  71. package/dist/core/conversation/IRollingSummaryMemorySink.js +9 -0
  72. package/dist/core/conversation/IRollingSummaryMemorySink.js.map +1 -0
  73. package/dist/core/conversation/LongTermMemoryPolicy.d.ts +53 -0
  74. package/dist/core/conversation/LongTermMemoryPolicy.d.ts.map +1 -0
  75. package/dist/core/conversation/LongTermMemoryPolicy.js +84 -0
  76. package/dist/core/conversation/LongTermMemoryPolicy.js.map +1 -0
  77. package/dist/core/conversation/RollingSummaryCompactor.d.ts +61 -0
  78. package/dist/core/conversation/RollingSummaryCompactor.d.ts.map +1 -0
  79. package/dist/core/conversation/RollingSummaryCompactor.js +255 -0
  80. package/dist/core/conversation/RollingSummaryCompactor.js.map +1 -0
  81. package/dist/core/llm/PromptEngine.d.ts.map +1 -1
  82. package/dist/core/llm/PromptEngine.js +10 -1
  83. package/dist/core/llm/PromptEngine.js.map +1 -1
  84. package/dist/core/orchestration/AgentOrchestrator.d.ts +40 -0
  85. package/dist/core/orchestration/AgentOrchestrator.d.ts.map +1 -1
  86. package/dist/core/orchestration/AgentOrchestrator.js +324 -2
  87. package/dist/core/orchestration/AgentOrchestrator.js.map +1 -1
  88. package/dist/core/prompting/PromptProfileRouter.d.ts +74 -0
  89. package/dist/core/prompting/PromptProfileRouter.d.ts.map +1 -0
  90. package/dist/core/prompting/PromptProfileRouter.js +270 -0
  91. package/dist/core/prompting/PromptProfileRouter.js.map +1 -0
  92. package/dist/core/provenance/anchoring/AnchorManager.d.ts +86 -0
  93. package/dist/core/provenance/anchoring/AnchorManager.d.ts.map +1 -0
  94. package/dist/core/provenance/anchoring/AnchorManager.js +244 -0
  95. package/dist/core/provenance/anchoring/AnchorManager.js.map +1 -0
  96. package/dist/core/provenance/anchoring/providers/CompositeAnchorProvider.d.ts +20 -0
  97. package/dist/core/provenance/anchoring/providers/CompositeAnchorProvider.d.ts.map +1 -0
  98. package/dist/core/provenance/anchoring/providers/CompositeAnchorProvider.js +62 -0
  99. package/dist/core/provenance/anchoring/providers/CompositeAnchorProvider.js.map +1 -0
  100. package/dist/core/provenance/anchoring/providers/NoneProvider.d.ts +15 -0
  101. package/dist/core/provenance/anchoring/providers/NoneProvider.d.ts.map +1 -0
  102. package/dist/core/provenance/anchoring/providers/NoneProvider.js +21 -0
  103. package/dist/core/provenance/anchoring/providers/NoneProvider.js.map +1 -0
  104. package/dist/core/provenance/anchoring/providers/createAnchorProvider.d.ts +38 -0
  105. package/dist/core/provenance/anchoring/providers/createAnchorProvider.d.ts.map +1 -0
  106. package/dist/core/provenance/anchoring/providers/createAnchorProvider.js +67 -0
  107. package/dist/core/provenance/anchoring/providers/createAnchorProvider.js.map +1 -0
  108. package/dist/core/provenance/anchoring/providers/index.d.ts +12 -0
  109. package/dist/core/provenance/anchoring/providers/index.d.ts.map +1 -0
  110. package/dist/core/provenance/anchoring/providers/index.js +12 -0
  111. package/dist/core/provenance/anchoring/providers/index.js.map +1 -0
  112. package/dist/core/provenance/config/PolicyProfiles.d.ts +60 -0
  113. package/dist/core/provenance/config/PolicyProfiles.d.ts.map +1 -0
  114. package/dist/core/provenance/config/PolicyProfiles.js +144 -0
  115. package/dist/core/provenance/config/PolicyProfiles.js.map +1 -0
  116. package/dist/core/provenance/crypto/AgentKeyManager.d.ts +48 -0
  117. package/dist/core/provenance/crypto/AgentKeyManager.d.ts.map +1 -0
  118. package/dist/core/provenance/crypto/AgentKeyManager.js +162 -0
  119. package/dist/core/provenance/crypto/AgentKeyManager.js.map +1 -0
  120. package/dist/core/provenance/crypto/HashChain.d.ts +58 -0
  121. package/dist/core/provenance/crypto/HashChain.d.ts.map +1 -0
  122. package/dist/core/provenance/crypto/HashChain.js +86 -0
  123. package/dist/core/provenance/crypto/HashChain.js.map +1 -0
  124. package/dist/core/provenance/crypto/MerkleTree.d.ts +41 -0
  125. package/dist/core/provenance/crypto/MerkleTree.d.ts.map +1 -0
  126. package/dist/core/provenance/crypto/MerkleTree.js +86 -0
  127. package/dist/core/provenance/crypto/MerkleTree.js.map +1 -0
  128. package/dist/core/provenance/enforcement/AutonomyGuard.d.ts +37 -0
  129. package/dist/core/provenance/enforcement/AutonomyGuard.d.ts.map +1 -0
  130. package/dist/core/provenance/enforcement/AutonomyGuard.js +120 -0
  131. package/dist/core/provenance/enforcement/AutonomyGuard.js.map +1 -0
  132. package/dist/core/provenance/enforcement/ProvenanceStorageHooks.d.ts +43 -0
  133. package/dist/core/provenance/enforcement/ProvenanceStorageHooks.d.ts.map +1 -0
  134. package/dist/core/provenance/enforcement/ProvenanceStorageHooks.js +193 -0
  135. package/dist/core/provenance/enforcement/ProvenanceStorageHooks.js.map +1 -0
  136. package/dist/core/provenance/enforcement/RevisionManager.d.ts +41 -0
  137. package/dist/core/provenance/enforcement/RevisionManager.d.ts.map +1 -0
  138. package/dist/core/provenance/enforcement/RevisionManager.js +105 -0
  139. package/dist/core/provenance/enforcement/RevisionManager.js.map +1 -0
  140. package/dist/core/provenance/enforcement/TombstoneManager.d.ts +47 -0
  141. package/dist/core/provenance/enforcement/TombstoneManager.d.ts.map +1 -0
  142. package/dist/core/provenance/enforcement/TombstoneManager.js +121 -0
  143. package/dist/core/provenance/enforcement/TombstoneManager.js.map +1 -0
  144. package/dist/core/provenance/index.d.ts +34 -0
  145. package/dist/core/provenance/index.d.ts.map +1 -0
  146. package/dist/core/provenance/index.js +39 -0
  147. package/dist/core/provenance/index.js.map +1 -0
  148. package/dist/core/provenance/ledger/EventTypes.d.ts +123 -0
  149. package/dist/core/provenance/ledger/EventTypes.d.ts.map +1 -0
  150. package/dist/core/provenance/ledger/EventTypes.js +9 -0
  151. package/dist/core/provenance/ledger/EventTypes.js.map +1 -0
  152. package/dist/core/provenance/ledger/SignedEventLedger.d.ts +75 -0
  153. package/dist/core/provenance/ledger/SignedEventLedger.d.ts.map +1 -0
  154. package/dist/core/provenance/ledger/SignedEventLedger.js +210 -0
  155. package/dist/core/provenance/ledger/SignedEventLedger.js.map +1 -0
  156. package/dist/core/provenance/schema/provenance-schema.d.ts +17 -0
  157. package/dist/core/provenance/schema/provenance-schema.d.ts.map +1 -0
  158. package/dist/core/provenance/schema/provenance-schema.js +104 -0
  159. package/dist/core/provenance/schema/provenance-schema.js.map +1 -0
  160. package/dist/core/provenance/types.d.ts +261 -0
  161. package/dist/core/provenance/types.d.ts.map +1 -0
  162. package/dist/core/provenance/types.js +21 -0
  163. package/dist/core/provenance/types.js.map +1 -0
  164. package/dist/core/provenance/verification/BundleExporter.d.ts +50 -0
  165. package/dist/core/provenance/verification/BundleExporter.d.ts.map +1 -0
  166. package/dist/core/provenance/verification/BundleExporter.js +240 -0
  167. package/dist/core/provenance/verification/BundleExporter.js.map +1 -0
  168. package/dist/core/provenance/verification/ChainVerifier.d.ts +39 -0
  169. package/dist/core/provenance/verification/ChainVerifier.d.ts.map +1 -0
  170. package/dist/core/provenance/verification/ChainVerifier.js +204 -0
  171. package/dist/core/provenance/verification/ChainVerifier.js.map +1 -0
  172. package/dist/core/provenance/verification/ConversationVerifier.d.ts +56 -0
  173. package/dist/core/provenance/verification/ConversationVerifier.d.ts.map +1 -0
  174. package/dist/core/provenance/verification/ConversationVerifier.js +109 -0
  175. package/dist/core/provenance/verification/ConversationVerifier.js.map +1 -0
  176. package/dist/extensions/ExtensionManager.d.ts.map +1 -1
  177. package/dist/extensions/ExtensionManager.js +6 -1
  178. package/dist/extensions/ExtensionManager.js.map +1 -1
  179. package/dist/extensions/MessagingChannelPayload.d.ts +39 -0
  180. package/dist/extensions/MessagingChannelPayload.d.ts.map +1 -0
  181. package/dist/extensions/MessagingChannelPayload.js +12 -0
  182. package/dist/extensions/MessagingChannelPayload.js.map +1 -0
  183. package/dist/extensions/packs/provenance-pack.d.ts +66 -0
  184. package/dist/extensions/packs/provenance-pack.d.ts.map +1 -0
  185. package/dist/extensions/packs/provenance-pack.js +162 -0
  186. package/dist/extensions/packs/provenance-pack.js.map +1 -0
  187. package/dist/extensions/types.d.ts +11 -0
  188. package/dist/extensions/types.d.ts.map +1 -1
  189. package/dist/extensions/types.js +4 -0
  190. package/dist/extensions/types.js.map +1 -1
  191. package/dist/index.d.ts +7 -0
  192. package/dist/index.d.ts.map +1 -1
  193. package/dist/index.js +10 -0
  194. package/dist/index.js.map +1 -1
  195. package/dist/rag/IRetrievalAugmentor.d.ts +22 -1
  196. package/dist/rag/IRetrievalAugmentor.d.ts.map +1 -1
  197. package/dist/rag/RetrievalAugmentor.d.ts +37 -0
  198. package/dist/rag/RetrievalAugmentor.d.ts.map +1 -1
  199. package/dist/rag/RetrievalAugmentor.js +82 -6
  200. package/dist/rag/RetrievalAugmentor.js.map +1 -1
  201. package/dist/rag/VectorStoreManager.d.ts.map +1 -1
  202. package/dist/rag/VectorStoreManager.js +5 -0
  203. package/dist/rag/VectorStoreManager.js.map +1 -1
  204. package/dist/rag/graphrag/GraphRAGEngine.d.ts +100 -0
  205. package/dist/rag/graphrag/GraphRAGEngine.d.ts.map +1 -0
  206. package/dist/rag/graphrag/GraphRAGEngine.js +1146 -0
  207. package/dist/rag/graphrag/GraphRAGEngine.js.map +1 -0
  208. package/dist/rag/graphrag/IGraphRAG.d.ts +198 -0
  209. package/dist/rag/graphrag/IGraphRAG.d.ts.map +1 -0
  210. package/dist/rag/graphrag/IGraphRAG.js +11 -0
  211. package/dist/rag/graphrag/IGraphRAG.js.map +1 -0
  212. package/dist/rag/graphrag/index.d.ts +12 -0
  213. package/dist/rag/graphrag/index.d.ts.map +1 -0
  214. package/dist/rag/graphrag/index.js +11 -0
  215. package/dist/rag/graphrag/index.js.map +1 -0
  216. package/dist/rag/implementations/vector_stores/HnswlibVectorStore.d.ts +72 -0
  217. package/dist/rag/implementations/vector_stores/HnswlibVectorStore.d.ts.map +1 -0
  218. package/dist/rag/implementations/vector_stores/HnswlibVectorStore.js +463 -0
  219. package/dist/rag/implementations/vector_stores/HnswlibVectorStore.js.map +1 -0
  220. package/dist/rag/implementations/vector_stores/index.d.ts +1 -0
  221. package/dist/rag/implementations/vector_stores/index.d.ts.map +1 -1
  222. package/dist/rag/implementations/vector_stores/index.js +2 -0
  223. package/dist/rag/implementations/vector_stores/index.js.map +1 -1
  224. package/dist/rag/index.d.ts +3 -0
  225. package/dist/rag/index.d.ts.map +1 -1
  226. package/dist/rag/index.js +5 -0
  227. package/dist/rag/index.js.map +1 -1
  228. package/dist/rag/reranking/IRerankerService.d.ts +163 -0
  229. package/dist/rag/reranking/IRerankerService.d.ts.map +1 -0
  230. package/dist/rag/reranking/IRerankerService.js +9 -0
  231. package/dist/rag/reranking/IRerankerService.js.map +1 -0
  232. package/dist/rag/reranking/RerankerService.d.ts +107 -0
  233. package/dist/rag/reranking/RerankerService.d.ts.map +1 -0
  234. package/dist/rag/reranking/RerankerService.js +194 -0
  235. package/dist/rag/reranking/RerankerService.js.map +1 -0
  236. package/dist/rag/reranking/index.d.ts +55 -0
  237. package/dist/rag/reranking/index.d.ts.map +1 -0
  238. package/dist/rag/reranking/index.js +56 -0
  239. package/dist/rag/reranking/index.js.map +1 -0
  240. package/dist/rag/reranking/providers/CohereReranker.d.ts +66 -0
  241. package/dist/rag/reranking/providers/CohereReranker.d.ts.map +1 -0
  242. package/dist/rag/reranking/providers/CohereReranker.js +141 -0
  243. package/dist/rag/reranking/providers/CohereReranker.js.map +1 -0
  244. package/dist/rag/reranking/providers/LocalCrossEncoderReranker.d.ts +105 -0
  245. package/dist/rag/reranking/providers/LocalCrossEncoderReranker.d.ts.map +1 -0
  246. package/dist/rag/reranking/providers/LocalCrossEncoderReranker.js +214 -0
  247. package/dist/rag/reranking/providers/LocalCrossEncoderReranker.js.map +1 -0
  248. package/dist/rag/reranking/providers/index.d.ts +7 -0
  249. package/dist/rag/reranking/providers/index.d.ts.map +1 -0
  250. package/dist/rag/reranking/providers/index.js +7 -0
  251. package/dist/rag/reranking/providers/index.js.map +1 -0
  252. package/dist/rag/reranking/tests/index.d.ts +6 -0
  253. package/dist/rag/reranking/tests/index.d.ts.map +1 -0
  254. package/dist/rag/reranking/tests/index.js +11 -0
  255. package/dist/rag/reranking/tests/index.js.map +1 -0
  256. package/dist/types/optionalDependencies.d.ts +5 -0
  257. package/dist/types/optionalDependencies.d.ts.map +1 -0
  258. package/dist/types/optionalDependencies.js +4 -0
  259. package/dist/types/optionalDependencies.js.map +1 -0
  260. package/package.json +22 -6
@@ -0,0 +1,121 @@
1
+ /**
2
+ * @file TombstoneManager.ts
3
+ * @description Manages soft-deletion via tombstone records.
4
+ * In revisioned/sealed modes, DELETE operations are converted to tombstones.
5
+ *
6
+ * @module AgentOS/Provenance/Enforcement
7
+ */
8
+ import { v4 as uuidv4 } from 'uuid';
9
+ // =============================================================================
10
+ // TombstoneManager
11
+ // =============================================================================
12
+ export class TombstoneManager {
13
+ constructor(storageAdapter, ledger = null, tablePrefix = '') {
14
+ this.storageAdapter = storageAdapter;
15
+ this.ledger = ledger;
16
+ this.tablePrefix = tablePrefix;
17
+ }
18
+ /**
19
+ * Create a tombstone for records about to be deleted.
20
+ * Call this INSTEAD of executing the DELETE.
21
+ *
22
+ * @param tableName - The table the records belong to.
23
+ * @param whereClause - The WHERE clause from the DELETE statement.
24
+ * @param parameters - Parameters for the WHERE clause.
25
+ * @param reason - Reason for deletion.
26
+ * @param initiator - Who initiated the deletion (agent ID or 'human').
27
+ */
28
+ async createTombstone(tableName, whereClause, parameters = [], reason = 'deleted', initiator = 'system') {
29
+ // Fetch the records that would be deleted
30
+ const rows = await this.storageAdapter.all(`SELECT * FROM ${tableName} WHERE ${whereClause}`, parameters);
31
+ const tombstones = [];
32
+ for (const row of rows) {
33
+ const recordId = String(row.id ?? row.Id ?? row.ID ?? JSON.stringify(row));
34
+ const timestamp = new Date().toISOString();
35
+ const id = uuidv4();
36
+ // Check if already tombstoned
37
+ const existing = await this.storageAdapter.get(`SELECT id FROM ${this.tablePrefix}tombstones WHERE table_name = ? AND record_id = ?`, [tableName, recordId]);
38
+ if (existing) {
39
+ // Already tombstoned, skip
40
+ continue;
41
+ }
42
+ // Log to signed event ledger
43
+ let eventId = id; // fallback
44
+ if (this.ledger) {
45
+ const eventType = tableName.includes('message')
46
+ ? 'message.tombstoned'
47
+ : tableName.includes('conversation')
48
+ ? 'conversation.tombstoned'
49
+ : 'memory.tombstoned';
50
+ const event = await this.ledger.appendEvent(eventType, {
51
+ tableName,
52
+ recordId,
53
+ reason,
54
+ initiator,
55
+ });
56
+ eventId = event.id;
57
+ }
58
+ // Insert tombstone record
59
+ await this.storageAdapter.run(`INSERT INTO ${this.tablePrefix}tombstones
60
+ (id, table_name, record_id, reason, event_id, initiator, timestamp)
61
+ VALUES (?, ?, ?, ?, ?, ?, ?)`, [id, tableName, recordId, reason, eventId, initiator, timestamp]);
62
+ tombstones.push({
63
+ id,
64
+ tableName,
65
+ recordId,
66
+ reason,
67
+ eventId,
68
+ initiator,
69
+ timestamp,
70
+ });
71
+ }
72
+ return tombstones;
73
+ }
74
+ /**
75
+ * Check if a record has been tombstoned.
76
+ */
77
+ async isTombstoned(tableName, recordId) {
78
+ const row = await this.storageAdapter.get(`SELECT id FROM ${this.tablePrefix}tombstones WHERE table_name = ? AND record_id = ?`, [tableName, recordId]);
79
+ return row !== null;
80
+ }
81
+ /**
82
+ * Get the tombstone record for a specific record.
83
+ */
84
+ async getTombstone(tableName, recordId) {
85
+ const row = await this.storageAdapter.get(`SELECT * FROM ${this.tablePrefix}tombstones WHERE table_name = ? AND record_id = ?`, [tableName, recordId]);
86
+ if (!row)
87
+ return null;
88
+ return {
89
+ id: row.id,
90
+ tableName: row.table_name,
91
+ recordId: row.record_id,
92
+ reason: row.reason,
93
+ eventId: row.event_id,
94
+ initiator: row.initiator,
95
+ timestamp: row.timestamp,
96
+ };
97
+ }
98
+ /**
99
+ * Get all tombstones for a table.
100
+ */
101
+ async getTombstones(tableName) {
102
+ let sql = `SELECT * FROM ${this.tablePrefix}tombstones`;
103
+ const params = [];
104
+ if (tableName) {
105
+ sql += ' WHERE table_name = ?';
106
+ params.push(tableName);
107
+ }
108
+ sql += ' ORDER BY timestamp DESC';
109
+ const rows = await this.storageAdapter.all(sql, params);
110
+ return rows.map(row => ({
111
+ id: row.id,
112
+ tableName: row.table_name,
113
+ recordId: row.record_id,
114
+ reason: row.reason,
115
+ eventId: row.event_id,
116
+ initiator: row.initiator,
117
+ timestamp: row.timestamp,
118
+ }));
119
+ }
120
+ }
121
+ //# sourceMappingURL=TombstoneManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TombstoneManager.js","sourceRoot":"","sources":["../../../../src/core/provenance/enforcement/TombstoneManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @file index.ts
3
+ * @description Public API for the AgentOS Provenance System.
4
+ * Re-exports all types, classes, and utilities for external consumption.
5
+ *
6
+ * Built-in anchor providers: {@link NoneProvider}, {@link CompositeAnchorProvider}.
7
+ *
8
+ * External anchor providers (Rekor, Ethereum, Solana, OpenTimestamps, WORM) are in the
9
+ * `@framers/agentos-ext-anchor-providers` extension package.
10
+ * See: https://github.com/framersai/agentos-extensions/tree/master/registry/curated/provenance/anchor-providers
11
+ *
12
+ * @module AgentOS/Provenance
13
+ */
14
+ export type { StoragePolicyMode, StoragePolicyConfig, ProvenanceConfig, AgentKeySource, AnchorTarget, AutonomyConfig, ProvenanceSystemConfig, ProvenanceEventType, SignedEvent, AnchorRecord, RevisionRecord, TombstoneRecord, AgentKeyRecord, VerificationResult, VerificationError, VerificationBundle, ProofLevel, AnchorProviderResult, AnchorProvider, } from './types.js';
15
+ export { ProvenanceViolationError } from './types.js';
16
+ export { AgentKeyManager } from './crypto/AgentKeyManager.js';
17
+ export { HashChain } from './crypto/HashChain.js';
18
+ export { MerkleTree } from './crypto/MerkleTree.js';
19
+ export { profiles } from './config/PolicyProfiles.js';
20
+ export { getProvenanceSchema, getProvenanceDropSchema } from './schema/provenance-schema.js';
21
+ export { SignedEventLedger } from './ledger/SignedEventLedger.js';
22
+ export { createProvenanceHooks } from './enforcement/ProvenanceStorageHooks.js';
23
+ export { RevisionManager } from './enforcement/RevisionManager.js';
24
+ export { TombstoneManager } from './enforcement/TombstoneManager.js';
25
+ export { AutonomyGuard } from './enforcement/AutonomyGuard.js';
26
+ export { ChainVerifier } from './verification/ChainVerifier.js';
27
+ export { ConversationVerifier } from './verification/ConversationVerifier.js';
28
+ export type { ConversationVerificationResult } from './verification/ConversationVerifier.js';
29
+ export { BundleExporter } from './verification/BundleExporter.js';
30
+ export { AnchorManager } from './anchoring/AnchorManager.js';
31
+ export { NoneProvider } from './anchoring/providers/NoneProvider.js';
32
+ export { CompositeAnchorProvider } from './anchoring/providers/CompositeAnchorProvider.js';
33
+ export { createAnchorProvider, registerAnchorProviderFactory } from './anchoring/providers/createAnchorProvider.js';
34
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/provenance/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,cAAc,EACd,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,EACV,oBAAoB,EACpB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAGtD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAGtD,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAG7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGlE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAG/D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,YAAY,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC;AAC7F,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAGlE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAC3F,OAAO,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,MAAM,+CAA+C,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @file index.ts
3
+ * @description Public API for the AgentOS Provenance System.
4
+ * Re-exports all types, classes, and utilities for external consumption.
5
+ *
6
+ * Built-in anchor providers: {@link NoneProvider}, {@link CompositeAnchorProvider}.
7
+ *
8
+ * External anchor providers (Rekor, Ethereum, Solana, OpenTimestamps, WORM) are in the
9
+ * `@framers/agentos-ext-anchor-providers` extension package.
10
+ * See: https://github.com/framersai/agentos-extensions/tree/master/registry/curated/provenance/anchor-providers
11
+ *
12
+ * @module AgentOS/Provenance
13
+ */
14
+ export { ProvenanceViolationError } from './types.js';
15
+ // Crypto
16
+ export { AgentKeyManager } from './crypto/AgentKeyManager.js';
17
+ export { HashChain } from './crypto/HashChain.js';
18
+ export { MerkleTree } from './crypto/MerkleTree.js';
19
+ // Config / Profiles
20
+ export { profiles } from './config/PolicyProfiles.js';
21
+ // Schema
22
+ export { getProvenanceSchema, getProvenanceDropSchema } from './schema/provenance-schema.js';
23
+ // Ledger
24
+ export { SignedEventLedger } from './ledger/SignedEventLedger.js';
25
+ // Enforcement
26
+ export { createProvenanceHooks } from './enforcement/ProvenanceStorageHooks.js';
27
+ export { RevisionManager } from './enforcement/RevisionManager.js';
28
+ export { TombstoneManager } from './enforcement/TombstoneManager.js';
29
+ export { AutonomyGuard } from './enforcement/AutonomyGuard.js';
30
+ // Verification
31
+ export { ChainVerifier } from './verification/ChainVerifier.js';
32
+ export { ConversationVerifier } from './verification/ConversationVerifier.js';
33
+ export { BundleExporter } from './verification/BundleExporter.js';
34
+ // Anchoring
35
+ export { AnchorManager } from './anchoring/AnchorManager.js';
36
+ export { NoneProvider } from './anchoring/providers/NoneProvider.js';
37
+ export { CompositeAnchorProvider } from './anchoring/providers/CompositeAnchorProvider.js';
38
+ export { createAnchorProvider, registerAnchorProviderFactory } from './anchoring/providers/createAnchorProvider.js';
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/provenance/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAwBH,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEtD,SAAS;AACT,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,oBAAoB;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,SAAS;AACT,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAE7F,SAAS;AACT,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,cAAc;AACd,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,eAAe;AACf,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElE,YAAY;AACZ,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAC3F,OAAO,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,MAAM,+CAA+C,CAAC"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * @file EventTypes.ts
3
+ * @description Typed event payload definitions for each ProvenanceEventType.
4
+ * Provides helper functions for constructing well-typed event payloads.
5
+ *
6
+ * @module AgentOS/Provenance/Ledger
7
+ */
8
+ export interface GenesisPayload {
9
+ agentId: string;
10
+ seedPromptHash?: string;
11
+ policySnapshot: Record<string, unknown>;
12
+ publicKey: string;
13
+ }
14
+ export interface MessageCreatedPayload {
15
+ conversationId: string;
16
+ messageId: string;
17
+ role: string;
18
+ contentHash: string;
19
+ timestamp: number;
20
+ }
21
+ export interface MessageRevisedPayload {
22
+ conversationId: string;
23
+ messageId: string;
24
+ revisionNumber: number;
25
+ previousContentHash: string;
26
+ newContentHash: string;
27
+ }
28
+ export interface MessageTombstonedPayload {
29
+ conversationId: string;
30
+ messageId: string;
31
+ reason: string;
32
+ initiator: string;
33
+ }
34
+ export interface ConversationCreatedPayload {
35
+ conversationId: string;
36
+ userId?: string;
37
+ gmiInstanceId?: string;
38
+ }
39
+ export interface ConversationArchivedPayload {
40
+ conversationId: string;
41
+ }
42
+ export interface ConversationTombstonedPayload {
43
+ conversationId: string;
44
+ reason: string;
45
+ initiator: string;
46
+ }
47
+ export interface ToolInvokedPayload {
48
+ conversationId?: string;
49
+ toolId: string;
50
+ toolName: string;
51
+ inputHash: string;
52
+ }
53
+ export interface ToolResultPayload {
54
+ conversationId?: string;
55
+ toolId: string;
56
+ toolName: string;
57
+ resultHash: string;
58
+ success: boolean;
59
+ }
60
+ export interface MemoryStoredPayload {
61
+ collectionId: string;
62
+ documentId: string;
63
+ contentHash: string;
64
+ category?: string;
65
+ }
66
+ export interface MemoryRevisedPayload {
67
+ collectionId: string;
68
+ documentId: string;
69
+ revisionNumber: number;
70
+ previousContentHash: string;
71
+ newContentHash: string;
72
+ }
73
+ export interface MemoryTombstonedPayload {
74
+ collectionId: string;
75
+ documentId: string;
76
+ reason: string;
77
+ initiator: string;
78
+ }
79
+ export interface ConfigChangedPayload {
80
+ changedField: string;
81
+ previousValueHash?: string;
82
+ newValueHash: string;
83
+ }
84
+ export interface HumanInterventionPayload {
85
+ interventionType: 'approval' | 'clarification' | 'edit' | 'escalation' | 'checkpoint' | 'pause' | 'stop';
86
+ requestId?: string;
87
+ decision?: string;
88
+ details?: Record<string, unknown>;
89
+ }
90
+ export interface AnchorCreatedPayload {
91
+ anchorId: string;
92
+ merkleRoot: string;
93
+ fromSequence: number;
94
+ toSequence: number;
95
+ eventCount: number;
96
+ externalRef?: string;
97
+ }
98
+ export interface GuardrailTriggeredPayload {
99
+ guardrailId?: string;
100
+ action: 'allow' | 'flag' | 'sanitize' | 'block';
101
+ reason?: string;
102
+ reasonCode?: string;
103
+ direction: 'input' | 'output';
104
+ }
105
+ export interface ProvenancePayloadMap {
106
+ genesis: GenesisPayload;
107
+ 'message.created': MessageCreatedPayload;
108
+ 'message.revised': MessageRevisedPayload;
109
+ 'message.tombstoned': MessageTombstonedPayload;
110
+ 'conversation.created': ConversationCreatedPayload;
111
+ 'conversation.archived': ConversationArchivedPayload;
112
+ 'conversation.tombstoned': ConversationTombstonedPayload;
113
+ 'tool.invoked': ToolInvokedPayload;
114
+ 'tool.result': ToolResultPayload;
115
+ 'memory.stored': MemoryStoredPayload;
116
+ 'memory.revised': MemoryRevisedPayload;
117
+ 'memory.tombstoned': MemoryTombstonedPayload;
118
+ 'config.changed': ConfigChangedPayload;
119
+ 'human.intervention': HumanInterventionPayload;
120
+ 'anchor.created': AnchorCreatedPayload;
121
+ 'guardrail.triggered': GuardrailTriggeredPayload;
122
+ }
123
+ //# sourceMappingURL=EventTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventTypes.d.ts","sourceRoot":"","sources":["../../../../src/core/provenance/ledger/EventTypes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @file EventTypes.ts
3
+ * @description Typed event payload definitions for each ProvenanceEventType.
4
+ * Provides helper functions for constructing well-typed event payloads.
5
+ *
6
+ * @module AgentOS/Provenance/Ledger
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=EventTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventTypes.js","sourceRoot":"","sources":["../../../../src/core/provenance/ledger/EventTypes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * @file SignedEventLedger.ts
3
+ * @description Core append-only signed event log with hash chain and Ed25519 signatures.
4
+ * All events are sequenced, hashed, and signed to create a tamper-evident chain.
5
+ *
6
+ * @module AgentOS/Provenance/Ledger
7
+ */
8
+ import type { SignedEvent, ProvenanceEventType, ProvenanceConfig } from '../types.js';
9
+ import { AgentKeyManager } from '../crypto/AgentKeyManager.js';
10
+ interface LedgerStorageAdapter {
11
+ run(statement: string, parameters?: unknown[]): Promise<{
12
+ changes: number;
13
+ }>;
14
+ all<T = unknown>(statement: string, parameters?: unknown[]): Promise<T[]>;
15
+ get<T = unknown>(statement: string, parameters?: unknown[]): Promise<T | null>;
16
+ }
17
+ export declare class SignedEventLedger {
18
+ private readonly storageAdapter;
19
+ private readonly keyManager;
20
+ private readonly agentId;
21
+ private readonly config;
22
+ private readonly tablePrefix;
23
+ private chain;
24
+ private isInitialized;
25
+ private appendQueue;
26
+ constructor(storageAdapter: LedgerStorageAdapter, keyManager: AgentKeyManager, agentId: string, config: ProvenanceConfig, tablePrefix?: string);
27
+ /**
28
+ * Initialize the ledger: load the last sequence number and hash from the DB.
29
+ */
30
+ initialize(): Promise<void>;
31
+ /**
32
+ * Append a new event to the ledger.
33
+ * Serialized via internal queue to maintain hash chain integrity.
34
+ */
35
+ appendEvent(type: ProvenanceEventType, payload: Record<string, unknown>): Promise<SignedEvent>;
36
+ private doAppend;
37
+ /**
38
+ * Get a single event by ID.
39
+ */
40
+ getEvent(id: string): Promise<SignedEvent | null>;
41
+ /**
42
+ * Get events in a sequence range (inclusive).
43
+ */
44
+ getEventsByRange(fromSequence: number, toSequence: number): Promise<SignedEvent[]>;
45
+ /**
46
+ * Get events by type.
47
+ */
48
+ getEventsByType(type: ProvenanceEventType): Promise<SignedEvent[]>;
49
+ /**
50
+ * Get events matching a payload filter (searches JSON payload).
51
+ */
52
+ getEventsByPayloadFilter(filter: Record<string, unknown>, types?: ProvenanceEventType[]): Promise<SignedEvent[]>;
53
+ /**
54
+ * Get the latest event.
55
+ */
56
+ getLatestEvent(): Promise<SignedEvent | null>;
57
+ /**
58
+ * Get the total number of events for this agent.
59
+ */
60
+ getEventCount(): Promise<number>;
61
+ /**
62
+ * Get all events for this agent (ordered by sequence).
63
+ */
64
+ getAllEvents(): Promise<SignedEvent[]>;
65
+ /**
66
+ * Get the current chain state (for diagnostics).
67
+ */
68
+ getChainState(): {
69
+ lastHash: string;
70
+ sequence: number;
71
+ };
72
+ private rowToEvent;
73
+ }
74
+ export {};
75
+ //# sourceMappingURL=SignedEventLedger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignedEventLedger.d.ts","sourceRoot":"","sources":["../../../../src/core/provenance/ledger/SignedEventLedger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EACV,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAO/D,UAAU,oBAAoB;IAC5B,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7E,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1E,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;CAChF;AAMD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuB;IACtD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,aAAa,CAAkB;IAGvC,OAAO,CAAC,WAAW,CAAoC;gBAGrD,cAAc,EAAE,oBAAoB,EACpC,UAAU,EAAE,eAAe,EAC3B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,gBAAgB,EACxB,WAAW,GAAE,MAAW;IAU1B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBjC;;;OAGG;IACG,WAAW,CACf,IAAI,EAAE,mBAAmB,EACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,WAAW,CAAC;YAiBT,QAAQ;IAgEtB;;OAEG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAQvD;;OAEG;IACG,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAUxF;;OAEG;IACG,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAUxE;;OAEG;IACG,wBAAwB,CAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,CAAC,EAAE,mBAAmB,EAAE,GAC5B,OAAO,CAAC,WAAW,EAAE,CAAC;IAyBzB;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAUnD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAQtC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAU5C;;OAEG;IACH,aAAa,IAAI;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;IAWvD,OAAO,CAAC,UAAU;CAgBnB"}
@@ -0,0 +1,210 @@
1
+ /**
2
+ * @file SignedEventLedger.ts
3
+ * @description Core append-only signed event log with hash chain and Ed25519 signatures.
4
+ * All events are sequenced, hashed, and signed to create a tamper-evident chain.
5
+ *
6
+ * @module AgentOS/Provenance/Ledger
7
+ */
8
+ import { v4 as uuidv4 } from 'uuid';
9
+ import { HashChain } from '../crypto/HashChain.js';
10
+ // =============================================================================
11
+ // SignedEventLedger
12
+ // =============================================================================
13
+ export class SignedEventLedger {
14
+ constructor(storageAdapter, keyManager, agentId, config, tablePrefix = '') {
15
+ this.isInitialized = false;
16
+ // Mutex for serialized appends (hash chain requires sequential writes)
17
+ this.appendQueue = Promise.resolve();
18
+ this.storageAdapter = storageAdapter;
19
+ this.keyManager = keyManager;
20
+ this.agentId = agentId;
21
+ this.config = config;
22
+ this.tablePrefix = tablePrefix;
23
+ this.chain = new HashChain();
24
+ }
25
+ /**
26
+ * Initialize the ledger: load the last sequence number and hash from the DB.
27
+ */
28
+ async initialize() {
29
+ const lastEvent = await this.storageAdapter.get(`SELECT sequence, hash FROM ${this.tablePrefix}signed_events
30
+ WHERE agent_id = ?
31
+ ORDER BY sequence DESC LIMIT 1`, [this.agentId]);
32
+ if (lastEvent) {
33
+ this.chain = new HashChain(lastEvent.hash, lastEvent.sequence);
34
+ }
35
+ else {
36
+ this.chain = new HashChain('', 0);
37
+ }
38
+ this.isInitialized = true;
39
+ }
40
+ /**
41
+ * Append a new event to the ledger.
42
+ * Serialized via internal queue to maintain hash chain integrity.
43
+ */
44
+ async appendEvent(type, payload) {
45
+ if (!this.isInitialized) {
46
+ throw new Error('SignedEventLedger: not initialized. Call initialize() first.');
47
+ }
48
+ return new Promise((resolve, reject) => {
49
+ this.appendQueue = this.appendQueue.then(async () => {
50
+ try {
51
+ const event = await this.doAppend(type, payload);
52
+ resolve(event);
53
+ }
54
+ catch (e) {
55
+ reject(e);
56
+ }
57
+ });
58
+ });
59
+ }
60
+ async doAppend(type, payload) {
61
+ const { sequence, prevHash } = this.chain.advance();
62
+ const timestamp = new Date().toISOString();
63
+ const id = uuidv4();
64
+ // Compute payload hash
65
+ const payloadHash = HashChain.computePayloadHash(payload, this.config.hashAlgorithm);
66
+ // Compute event hash
67
+ const hash = HashChain.computeEventHash({ sequence, type, timestamp, agentId: this.agentId, prevHash, payloadHash }, this.config.hashAlgorithm);
68
+ // Sign the hash
69
+ let signature = '';
70
+ if (this.config.signatureMode === 'every-event') {
71
+ signature = await this.keyManager.sign(hash);
72
+ }
73
+ const event = {
74
+ id,
75
+ type,
76
+ timestamp,
77
+ sequence,
78
+ agentId: this.agentId,
79
+ prevHash,
80
+ hash,
81
+ payloadHash,
82
+ payload,
83
+ signature,
84
+ signerPublicKey: this.keyManager.getPublicKeyBase64(),
85
+ };
86
+ // Persist to database
87
+ await this.storageAdapter.run(`INSERT INTO ${this.tablePrefix}signed_events
88
+ (id, type, timestamp, sequence, agent_id, prev_hash, hash, payload_hash, payload, signature, signer_public_key, anchor_id)
89
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
90
+ event.id,
91
+ event.type,
92
+ event.timestamp,
93
+ event.sequence,
94
+ event.agentId,
95
+ event.prevHash,
96
+ event.hash,
97
+ event.payloadHash,
98
+ JSON.stringify(event.payload),
99
+ event.signature,
100
+ event.signerPublicKey,
101
+ event.anchorId ?? null,
102
+ ]);
103
+ // Update chain state
104
+ this.chain.recordHash(hash);
105
+ return event;
106
+ }
107
+ /**
108
+ * Get a single event by ID.
109
+ */
110
+ async getEvent(id) {
111
+ const row = await this.storageAdapter.get(`SELECT * FROM ${this.tablePrefix}signed_events WHERE id = ?`, [id]);
112
+ return row ? this.rowToEvent(row) : null;
113
+ }
114
+ /**
115
+ * Get events in a sequence range (inclusive).
116
+ */
117
+ async getEventsByRange(fromSequence, toSequence) {
118
+ const rows = await this.storageAdapter.all(`SELECT * FROM ${this.tablePrefix}signed_events
119
+ WHERE agent_id = ? AND sequence >= ? AND sequence <= ?
120
+ ORDER BY sequence ASC`, [this.agentId, fromSequence, toSequence]);
121
+ return rows.map(r => this.rowToEvent(r));
122
+ }
123
+ /**
124
+ * Get events by type.
125
+ */
126
+ async getEventsByType(type) {
127
+ const rows = await this.storageAdapter.all(`SELECT * FROM ${this.tablePrefix}signed_events
128
+ WHERE agent_id = ? AND type = ?
129
+ ORDER BY sequence ASC`, [this.agentId, type]);
130
+ return rows.map(r => this.rowToEvent(r));
131
+ }
132
+ /**
133
+ * Get events matching a payload filter (searches JSON payload).
134
+ */
135
+ async getEventsByPayloadFilter(filter, types) {
136
+ // Get all events (optionally filtered by type) and apply payload filter in memory
137
+ let sql = `SELECT * FROM ${this.tablePrefix}signed_events WHERE agent_id = ?`;
138
+ const params = [this.agentId];
139
+ if (types && types.length > 0) {
140
+ const placeholders = types.map(() => '?').join(', ');
141
+ sql += ` AND type IN (${placeholders})`;
142
+ params.push(...types);
143
+ }
144
+ sql += ' ORDER BY sequence ASC';
145
+ const rows = await this.storageAdapter.all(sql, params);
146
+ const events = rows.map(r => this.rowToEvent(r));
147
+ // Filter by payload fields
148
+ return events.filter(event => {
149
+ for (const [key, value] of Object.entries(filter)) {
150
+ if (event.payload[key] !== value)
151
+ return false;
152
+ }
153
+ return true;
154
+ });
155
+ }
156
+ /**
157
+ * Get the latest event.
158
+ */
159
+ async getLatestEvent() {
160
+ const row = await this.storageAdapter.get(`SELECT * FROM ${this.tablePrefix}signed_events
161
+ WHERE agent_id = ?
162
+ ORDER BY sequence DESC LIMIT 1`, [this.agentId]);
163
+ return row ? this.rowToEvent(row) : null;
164
+ }
165
+ /**
166
+ * Get the total number of events for this agent.
167
+ */
168
+ async getEventCount() {
169
+ const row = await this.storageAdapter.get(`SELECT COUNT(*) as count FROM ${this.tablePrefix}signed_events WHERE agent_id = ?`, [this.agentId]);
170
+ return row?.count ?? 0;
171
+ }
172
+ /**
173
+ * Get all events for this agent (ordered by sequence).
174
+ */
175
+ async getAllEvents() {
176
+ const rows = await this.storageAdapter.all(`SELECT * FROM ${this.tablePrefix}signed_events
177
+ WHERE agent_id = ?
178
+ ORDER BY sequence ASC`, [this.agentId]);
179
+ return rows.map(r => this.rowToEvent(r));
180
+ }
181
+ /**
182
+ * Get the current chain state (for diagnostics).
183
+ */
184
+ getChainState() {
185
+ return {
186
+ lastHash: this.chain.getLastHash(),
187
+ sequence: this.chain.getSequence(),
188
+ };
189
+ }
190
+ // ===========================================================================
191
+ // Internal
192
+ // ===========================================================================
193
+ rowToEvent(row) {
194
+ return {
195
+ id: row.id,
196
+ type: row.type,
197
+ timestamp: row.timestamp,
198
+ sequence: row.sequence,
199
+ agentId: row.agent_id,
200
+ prevHash: row.prev_hash,
201
+ hash: row.hash,
202
+ payloadHash: row.payload_hash,
203
+ payload: typeof row.payload === 'string' ? JSON.parse(row.payload) : row.payload,
204
+ signature: row.signature,
205
+ signerPublicKey: row.signer_public_key,
206
+ anchorId: row.anchor_id ?? undefined,
207
+ };
208
+ }
209
+ }
210
+ //# sourceMappingURL=SignedEventLedger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignedEventLedger.js","sourceRoot":"","sources":["../../../../src/core/provenance/ledger/SignedEventLedger.ts"],"names":[],"mappings":"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"}