@iworkforces/tracelattice 2.0.3

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 (422) hide show
  1. package/LICENSE +24 -0
  2. package/README.md +260 -0
  3. package/dist/CliLifecycle.d.ts +31 -0
  4. package/dist/CliLifecycle.d.ts.map +1 -0
  5. package/dist/CliLifecycle.js +90 -0
  6. package/dist/CliLifecycle.js.map +1 -0
  7. package/dist/ServerConfig.d.ts +290 -0
  8. package/dist/ServerConfig.d.ts.map +1 -0
  9. package/dist/ServerConfig.js +175 -0
  10. package/dist/ServerConfig.js.map +1 -0
  11. package/dist/cache/DiscoveryCache.d.ts +269 -0
  12. package/dist/cache/DiscoveryCache.d.ts.map +1 -0
  13. package/dist/cache/DiscoveryCache.js +104 -0
  14. package/dist/cache/DiscoveryCache.js.map +1 -0
  15. package/dist/cli.d.ts +3 -0
  16. package/dist/cli.d.ts.map +1 -0
  17. package/dist/cli.js +5177 -0
  18. package/dist/cli.js.map +1 -0
  19. package/dist/config/ConfigLoader.d.ts +270 -0
  20. package/dist/config/ConfigLoader.d.ts.map +1 -0
  21. package/dist/config/ConfigLoader.js +186 -0
  22. package/dist/config/ConfigLoader.js.map +1 -0
  23. package/dist/context/RequestContext.d.ts +43 -0
  24. package/dist/context/RequestContext.d.ts.map +1 -0
  25. package/dist/context/RequestContext.js +14 -0
  26. package/dist/context/RequestContext.js.map +1 -0
  27. package/dist/contracts/PersistenceBackend.d.ts +134 -0
  28. package/dist/contracts/PersistenceBackend.d.ts.map +1 -0
  29. package/dist/contracts/PersistenceBackend.js +6 -0
  30. package/dist/contracts/PersistenceBackend.js.map +1 -0
  31. package/dist/contracts/calibrator.d.ts +97 -0
  32. package/dist/contracts/calibrator.d.ts.map +1 -0
  33. package/dist/contracts/calibrator.js +1 -0
  34. package/dist/contracts/features.d.ts +35 -0
  35. package/dist/contracts/features.d.ts.map +1 -0
  36. package/dist/contracts/features.js +12 -0
  37. package/dist/contracts/features.js.map +1 -0
  38. package/dist/contracts/ids.d.ts +68 -0
  39. package/dist/contracts/ids.d.ts.map +1 -0
  40. package/dist/contracts/ids.js +40 -0
  41. package/dist/contracts/ids.js.map +1 -0
  42. package/dist/contracts/interfaces.d.ts +254 -0
  43. package/dist/contracts/interfaces.d.ts.map +1 -0
  44. package/dist/contracts/interfaces.js +1 -0
  45. package/dist/contracts/persistence-work.d.ts +96 -0
  46. package/dist/contracts/persistence-work.d.ts.map +1 -0
  47. package/dist/contracts/persistence-work.js +1 -0
  48. package/dist/contracts/reasoning-types.d.ts +21 -0
  49. package/dist/contracts/reasoning-types.d.ts.map +1 -0
  50. package/dist/contracts/reasoning-types.js +1 -0
  51. package/dist/contracts/strategy.d.ts +107 -0
  52. package/dist/contracts/strategy.d.ts.map +1 -0
  53. package/dist/contracts/strategy.js +1 -0
  54. package/dist/contracts/summary.d.ts +110 -0
  55. package/dist/contracts/summary.d.ts.map +1 -0
  56. package/dist/contracts/summary.js +1 -0
  57. package/dist/contracts/suspension.d.ts +215 -0
  58. package/dist/contracts/suspension.d.ts.map +1 -0
  59. package/dist/contracts/suspension.js +1 -0
  60. package/dist/contracts/transport.d.ts +26 -0
  61. package/dist/contracts/transport.d.ts.map +1 -0
  62. package/dist/contracts/transport.js +1 -0
  63. package/dist/core/CrossReferenceValidator.d.ts +18 -0
  64. package/dist/core/CrossReferenceValidator.d.ts.map +1 -0
  65. package/dist/core/CrossReferenceValidator.js +125 -0
  66. package/dist/core/CrossReferenceValidator.js.map +1 -0
  67. package/dist/core/HistoryManager.d.ts +215 -0
  68. package/dist/core/HistoryManager.d.ts.map +1 -0
  69. package/dist/core/HistoryManager.js +594 -0
  70. package/dist/core/HistoryManager.js.map +1 -0
  71. package/dist/core/IHistoryManager.d.ts +163 -0
  72. package/dist/core/IHistoryManager.d.ts.map +1 -0
  73. package/dist/core/IHistoryManager.js +1 -0
  74. package/dist/core/IThoughtFormatter.d.ts +51 -0
  75. package/dist/core/IThoughtFormatter.d.ts.map +1 -0
  76. package/dist/core/IThoughtFormatter.js +1 -0
  77. package/dist/core/InputNormalizer.d.ts +140 -0
  78. package/dist/core/InputNormalizer.d.ts.map +1 -0
  79. package/dist/core/InputNormalizer.js +95 -0
  80. package/dist/core/InputNormalizer.js.map +1 -0
  81. package/dist/core/PersistenceBuffer.d.ts +204 -0
  82. package/dist/core/PersistenceBuffer.d.ts.map +1 -0
  83. package/dist/core/PersistenceBuffer.js +382 -0
  84. package/dist/core/PersistenceBuffer.js.map +1 -0
  85. package/dist/core/PersistenceBufferErrors.d.ts +22 -0
  86. package/dist/core/PersistenceBufferErrors.d.ts.map +1 -0
  87. package/dist/core/PersistenceBufferErrors.js +30 -0
  88. package/dist/core/PersistenceBufferErrors.js.map +1 -0
  89. package/dist/core/PersistenceRestore.d.ts +21 -0
  90. package/dist/core/PersistenceRestore.d.ts.map +1 -0
  91. package/dist/core/PersistenceRestore.js +87 -0
  92. package/dist/core/PersistenceRestore.js.map +1 -0
  93. package/dist/core/PersistenceWorkQueue.d.ts +155 -0
  94. package/dist/core/PersistenceWorkQueue.d.ts.map +1 -0
  95. package/dist/core/PersistenceWorkQueue.js +298 -0
  96. package/dist/core/PersistenceWorkQueue.js.map +1 -0
  97. package/dist/core/PersistenceWriter.d.ts +55 -0
  98. package/dist/core/PersistenceWriter.d.ts.map +1 -0
  99. package/dist/core/PersistenceWriter.js +112 -0
  100. package/dist/core/PersistenceWriter.js.map +1 -0
  101. package/dist/core/SessionErrors.d.ts +37 -0
  102. package/dist/core/SessionErrors.d.ts.map +1 -0
  103. package/dist/core/SessionErrors.js +50 -0
  104. package/dist/core/SessionErrors.js.map +1 -0
  105. package/dist/core/SessionLifecycleCoordinator.d.ts +74 -0
  106. package/dist/core/SessionLifecycleCoordinator.d.ts.map +1 -0
  107. package/dist/core/SessionLifecycleCoordinator.js +222 -0
  108. package/dist/core/SessionLifecycleCoordinator.js.map +1 -0
  109. package/dist/core/SessionLock.d.ts +59 -0
  110. package/dist/core/SessionLock.d.ts.map +1 -0
  111. package/dist/core/SessionLock.js +39 -0
  112. package/dist/core/SessionLock.js.map +1 -0
  113. package/dist/core/SessionManager.d.ts +62 -0
  114. package/dist/core/SessionManager.d.ts.map +1 -0
  115. package/dist/core/SessionManager.js +75 -0
  116. package/dist/core/SessionManager.js.map +1 -0
  117. package/dist/core/SessionResetCoordinator.d.ts +37 -0
  118. package/dist/core/SessionResetCoordinator.d.ts.map +1 -0
  119. package/dist/core/SessionResetCoordinator.js +80 -0
  120. package/dist/core/SessionResetCoordinator.js.map +1 -0
  121. package/dist/core/ThoughtEvaluator.d.ts +48 -0
  122. package/dist/core/ThoughtEvaluator.d.ts.map +1 -0
  123. package/dist/core/ThoughtEvaluator.js +85 -0
  124. package/dist/core/ThoughtEvaluator.js.map +1 -0
  125. package/dist/core/ThoughtFormatter.d.ts +134 -0
  126. package/dist/core/ThoughtFormatter.d.ts.map +1 -0
  127. package/dist/core/ThoughtFormatter.js +118 -0
  128. package/dist/core/ThoughtFormatter.js.map +1 -0
  129. package/dist/core/ThoughtProcessor.d.ts +259 -0
  130. package/dist/core/ThoughtProcessor.d.ts.map +1 -0
  131. package/dist/core/ThoughtProcessor.js +451 -0
  132. package/dist/core/ThoughtProcessor.js.map +1 -0
  133. package/dist/core/ThoughtReferenceIndex.d.ts +23 -0
  134. package/dist/core/ThoughtReferenceIndex.d.ts.map +1 -0
  135. package/dist/core/ThoughtReferenceIndex.js +66 -0
  136. package/dist/core/ThoughtReferenceIndex.js.map +1 -0
  137. package/dist/core/VerificationOutcomeAdmission.d.ts +15 -0
  138. package/dist/core/VerificationOutcomeAdmission.d.ts.map +1 -0
  139. package/dist/core/VerificationOutcomeAdmission.js +28 -0
  140. package/dist/core/VerificationOutcomeAdmission.js.map +1 -0
  141. package/dist/core/compression/CompressionService.d.ts +76 -0
  142. package/dist/core/compression/CompressionService.d.ts.map +1 -0
  143. package/dist/core/compression/CompressionService.js +160 -0
  144. package/dist/core/compression/CompressionService.js.map +1 -0
  145. package/dist/core/compression/DehydrationPolicy.d.ts +75 -0
  146. package/dist/core/compression/DehydrationPolicy.d.ts.map +1 -0
  147. package/dist/core/compression/DehydrationPolicy.js +45 -0
  148. package/dist/core/compression/DehydrationPolicy.js.map +1 -0
  149. package/dist/core/compression/InMemorySummaryStore.d.ts +132 -0
  150. package/dist/core/compression/InMemorySummaryStore.d.ts.map +1 -0
  151. package/dist/core/compression/InMemorySummaryStore.js +69 -0
  152. package/dist/core/compression/InMemorySummaryStore.js.map +1 -0
  153. package/dist/core/compression/Summary.d.ts +74 -0
  154. package/dist/core/compression/Summary.d.ts.map +1 -0
  155. package/dist/core/compression/Summary.js +16 -0
  156. package/dist/core/compression/Summary.js.map +1 -0
  157. package/dist/core/evaluator/Aggregator.d.ts +40 -0
  158. package/dist/core/evaluator/Aggregator.d.ts.map +1 -0
  159. package/dist/core/evaluator/Aggregator.js +36 -0
  160. package/dist/core/evaluator/Aggregator.js.map +1 -0
  161. package/dist/core/evaluator/Calibrator.d.ts +52 -0
  162. package/dist/core/evaluator/Calibrator.d.ts.map +1 -0
  163. package/dist/core/evaluator/Calibrator.js +135 -0
  164. package/dist/core/evaluator/Calibrator.js.map +1 -0
  165. package/dist/core/evaluator/PatternDetector.d.ts +69 -0
  166. package/dist/core/evaluator/PatternDetector.d.ts.map +1 -0
  167. package/dist/core/evaluator/PatternDetector.js +192 -0
  168. package/dist/core/evaluator/PatternDetector.js.map +1 -0
  169. package/dist/core/evaluator/SignalComputer.d.ts +116 -0
  170. package/dist/core/evaluator/SignalComputer.d.ts.map +1 -0
  171. package/dist/core/evaluator/SignalComputer.js +110 -0
  172. package/dist/core/evaluator/SignalComputer.js.map +1 -0
  173. package/dist/core/evaluator/calibration-math.d.ts +39 -0
  174. package/dist/core/evaluator/calibration-math.d.ts.map +1 -0
  175. package/dist/core/evaluator/calibration-math.js +42 -0
  176. package/dist/core/evaluator/calibration-math.js.map +1 -0
  177. package/dist/core/evaluator/internals.d.ts +36 -0
  178. package/dist/core/evaluator/internals.d.ts.map +1 -0
  179. package/dist/core/evaluator/internals.js +43 -0
  180. package/dist/core/evaluator/internals.js.map +1 -0
  181. package/dist/core/graph/Edge.d.ts +58 -0
  182. package/dist/core/graph/Edge.d.ts.map +1 -0
  183. package/dist/core/graph/Edge.js +1 -0
  184. package/dist/core/graph/EdgeEmitter.d.ts +68 -0
  185. package/dist/core/graph/EdgeEmitter.d.ts.map +1 -0
  186. package/dist/core/graph/EdgeEmitter.js +118 -0
  187. package/dist/core/graph/EdgeEmitter.js.map +1 -0
  188. package/dist/core/graph/EdgeStore.d.ts +116 -0
  189. package/dist/core/graph/EdgeStore.d.ts.map +1 -0
  190. package/dist/core/graph/EdgeStore.js +107 -0
  191. package/dist/core/graph/EdgeStore.js.map +1 -0
  192. package/dist/core/graph/GraphView.d.ts +157 -0
  193. package/dist/core/graph/GraphView.d.ts.map +1 -0
  194. package/dist/core/graph/GraphView.js +149 -0
  195. package/dist/core/graph/GraphView.js.map +1 -0
  196. package/dist/core/ids.d.ts +33 -0
  197. package/dist/core/ids.d.ts.map +1 -0
  198. package/dist/core/ids.js +11 -0
  199. package/dist/core/ids.js.map +1 -0
  200. package/dist/core/reasoning/OutcomeRecorder.d.ts +88 -0
  201. package/dist/core/reasoning/OutcomeRecorder.d.ts.map +1 -0
  202. package/dist/core/reasoning/OutcomeRecorder.js +51 -0
  203. package/dist/core/reasoning/OutcomeRecorder.js.map +1 -0
  204. package/dist/core/reasoning/strategies/SequentialStrategy.d.ts +54 -0
  205. package/dist/core/reasoning/strategies/SequentialStrategy.d.ts.map +1 -0
  206. package/dist/core/reasoning/strategies/SequentialStrategy.js +22 -0
  207. package/dist/core/reasoning/strategies/SequentialStrategy.js.map +1 -0
  208. package/dist/core/reasoning/strategies/StrategyFactory.d.ts +25 -0
  209. package/dist/core/reasoning/strategies/StrategyFactory.d.ts.map +1 -0
  210. package/dist/core/reasoning/strategies/StrategyFactory.js +16 -0
  211. package/dist/core/reasoning/strategies/StrategyFactory.js.map +1 -0
  212. package/dist/core/reasoning/strategies/TreeOfThoughtStrategy.d.ts +58 -0
  213. package/dist/core/reasoning/strategies/TreeOfThoughtStrategy.d.ts.map +1 -0
  214. package/dist/core/reasoning/strategies/TreeOfThoughtStrategy.js +103 -0
  215. package/dist/core/reasoning/strategies/TreeOfThoughtStrategy.js.map +1 -0
  216. package/dist/core/reasoning/strategies/plateau.d.ts +18 -0
  217. package/dist/core/reasoning/strategies/plateau.d.ts.map +1 -0
  218. package/dist/core/reasoning/strategies/plateau.js +12 -0
  219. package/dist/core/reasoning/strategies/plateau.js.map +1 -0
  220. package/dist/core/reasoning/strategies/totScoring.d.ts +91 -0
  221. package/dist/core/reasoning/strategies/totScoring.d.ts.map +1 -0
  222. package/dist/core/reasoning/strategies/totScoring.js +88 -0
  223. package/dist/core/reasoning/strategies/totScoring.js.map +1 -0
  224. package/dist/core/reasoning.d.ts +179 -0
  225. package/dist/core/reasoning.d.ts.map +1 -0
  226. package/dist/core/reasoning.js +1 -0
  227. package/dist/core/step.d.ts +50 -0
  228. package/dist/core/step.d.ts.map +1 -0
  229. package/dist/core/step.js +1 -0
  230. package/dist/core/thought.d.ts +113 -0
  231. package/dist/core/thought.d.ts.map +1 -0
  232. package/dist/core/thought.js +1 -0
  233. package/dist/core/tools/InMemorySuspensionStore.d.ts +66 -0
  234. package/dist/core/tools/InMemorySuspensionStore.d.ts.map +1 -0
  235. package/dist/core/tools/InMemorySuspensionStore.js +121 -0
  236. package/dist/core/tools/InMemorySuspensionStore.js.map +1 -0
  237. package/dist/di/Container.d.ts +253 -0
  238. package/dist/di/Container.d.ts.map +1 -0
  239. package/dist/di/Container.js +111 -0
  240. package/dist/di/Container.js.map +1 -0
  241. package/dist/di/ServiceRegistry.d.ts +50 -0
  242. package/dist/di/ServiceRegistry.d.ts.map +1 -0
  243. package/dist/di/ServiceRegistry.js +1 -0
  244. package/dist/errors.d.ts +663 -0
  245. package/dist/errors.d.ts.map +1 -0
  246. package/dist/errors.js +282 -0
  247. package/dist/errors.js.map +1 -0
  248. package/dist/health/HealthChecker.d.ts +73 -0
  249. package/dist/health/HealthChecker.d.ts.map +1 -0
  250. package/dist/health/HealthChecker.js +70 -0
  251. package/dist/health/HealthChecker.js.map +1 -0
  252. package/dist/lib.d.ts +273 -0
  253. package/dist/lib.d.ts.map +1 -0
  254. package/dist/lib.js +409 -0
  255. package/dist/lib.js.map +1 -0
  256. package/dist/logger/NullLogger.d.ts +154 -0
  257. package/dist/logger/NullLogger.d.ts.map +1 -0
  258. package/dist/logger/NullLogger.js +24 -0
  259. package/dist/logger/NullLogger.js.map +1 -0
  260. package/dist/logger/StructuredLogger.d.ts +327 -0
  261. package/dist/logger/StructuredLogger.d.ts.map +1 -0
  262. package/dist/logger/StructuredLogger.js +72 -0
  263. package/dist/logger/StructuredLogger.js.map +1 -0
  264. package/dist/metrics/metrics.impl.d.ts +252 -0
  265. package/dist/metrics/metrics.impl.d.ts.map +1 -0
  266. package/dist/metrics/metrics.impl.js +197 -0
  267. package/dist/metrics/metrics.impl.js.map +1 -0
  268. package/dist/persistence/FileLegacyImport.d.ts +2 -0
  269. package/dist/persistence/FileLegacyImport.d.ts.map +1 -0
  270. package/dist/persistence/FileLegacyImport.js +183 -0
  271. package/dist/persistence/FileLegacyImport.js.map +1 -0
  272. package/dist/persistence/FilePersistence.d.ts +53 -0
  273. package/dist/persistence/FilePersistence.d.ts.map +1 -0
  274. package/dist/persistence/FilePersistence.js +312 -0
  275. package/dist/persistence/FilePersistence.js.map +1 -0
  276. package/dist/persistence/FileSnapshotTypes.d.ts +29 -0
  277. package/dist/persistence/FileSnapshotTypes.d.ts.map +1 -0
  278. package/dist/persistence/FileSnapshotTypes.js +1 -0
  279. package/dist/persistence/FileSnapshotV2.d.ts +377 -0
  280. package/dist/persistence/FileSnapshotV2.d.ts.map +1 -0
  281. package/dist/persistence/FileSnapshotV2.js +124 -0
  282. package/dist/persistence/FileSnapshotV2.js.map +1 -0
  283. package/dist/persistence/FileSnapshotValidation.d.ts +15 -0
  284. package/dist/persistence/FileSnapshotValidation.d.ts.map +1 -0
  285. package/dist/persistence/FileSnapshotValidation.js +64 -0
  286. package/dist/persistence/FileSnapshotValidation.js.map +1 -0
  287. package/dist/persistence/FileWriter.d.ts +30 -0
  288. package/dist/persistence/FileWriter.d.ts.map +1 -0
  289. package/dist/persistence/FileWriter.js +155 -0
  290. package/dist/persistence/FileWriter.js.map +1 -0
  291. package/dist/persistence/MemoryPersistence.d.ts +45 -0
  292. package/dist/persistence/MemoryPersistence.d.ts.map +1 -0
  293. package/dist/persistence/MemoryPersistence.js +180 -0
  294. package/dist/persistence/MemoryPersistence.js.map +1 -0
  295. package/dist/persistence/PersistenceCodec.d.ts +7 -0
  296. package/dist/persistence/PersistenceCodec.d.ts.map +1 -0
  297. package/dist/persistence/PersistenceCodec.js +97 -0
  298. package/dist/persistence/PersistenceCodec.js.map +1 -0
  299. package/dist/persistence/PersistenceErrors.d.ts +23 -0
  300. package/dist/persistence/PersistenceErrors.d.ts.map +1 -0
  301. package/dist/persistence/PersistenceErrors.js +26 -0
  302. package/dist/persistence/PersistenceErrors.js.map +1 -0
  303. package/dist/persistence/PersistenceFactory.d.ts +21 -0
  304. package/dist/persistence/PersistenceFactory.d.ts.map +1 -0
  305. package/dist/persistence/PersistenceFactory.js +28 -0
  306. package/dist/persistence/PersistenceFactory.js.map +1 -0
  307. package/dist/persistence/PersistenceScope.d.ts +42 -0
  308. package/dist/persistence/PersistenceScope.d.ts.map +1 -0
  309. package/dist/persistence/PersistenceScope.js +93 -0
  310. package/dist/persistence/PersistenceScope.js.map +1 -0
  311. package/dist/persistence/SessionScopedPersistence.d.ts +4 -0
  312. package/dist/persistence/SessionScopedPersistence.d.ts.map +1 -0
  313. package/dist/persistence/SessionScopedPersistence.js +9 -0
  314. package/dist/persistence/SessionScopedPersistence.js.map +1 -0
  315. package/dist/persistence/SqliteDriver.d.ts +22 -0
  316. package/dist/persistence/SqliteDriver.d.ts.map +1 -0
  317. package/dist/persistence/SqliteDriver.js +29 -0
  318. package/dist/persistence/SqliteDriver.js.map +1 -0
  319. package/dist/persistence/SqliteLegacyImport.d.ts +14 -0
  320. package/dist/persistence/SqliteLegacyImport.d.ts.map +1 -0
  321. package/dist/persistence/SqliteLegacyImport.js +136 -0
  322. package/dist/persistence/SqliteLegacyImport.js.map +1 -0
  323. package/dist/persistence/SqliteLegacySchema.d.ts +15 -0
  324. package/dist/persistence/SqliteLegacySchema.d.ts.map +1 -0
  325. package/dist/persistence/SqliteLegacySchema.js +72 -0
  326. package/dist/persistence/SqliteLegacySchema.js.map +1 -0
  327. package/dist/persistence/SqlitePayload.d.ts +11 -0
  328. package/dist/persistence/SqlitePayload.d.ts.map +1 -0
  329. package/dist/persistence/SqlitePayload.js +86 -0
  330. package/dist/persistence/SqlitePayload.js.map +1 -0
  331. package/dist/persistence/SqlitePersistence.d.ts +49 -0
  332. package/dist/persistence/SqlitePersistence.d.ts.map +1 -0
  333. package/dist/persistence/SqlitePersistence.js +248 -0
  334. package/dist/persistence/SqlitePersistence.js.map +1 -0
  335. package/dist/persistence/SqliteSchemaV2.d.ts +14 -0
  336. package/dist/persistence/SqliteSchemaV2.d.ts.map +1 -0
  337. package/dist/persistence/SqliteSchemaV2.js +129 -0
  338. package/dist/persistence/SqliteSchemaV2.js.map +1 -0
  339. package/dist/persistence/SqliteSnapshotWriter.d.ts +17 -0
  340. package/dist/persistence/SqliteSnapshotWriter.d.ts.map +1 -0
  341. package/dist/persistence/SqliteSnapshotWriter.js +30 -0
  342. package/dist/persistence/SqliteSnapshotWriter.js.map +1 -0
  343. package/dist/pool/ConnectionPool.d.ts +203 -0
  344. package/dist/pool/ConnectionPool.d.ts.map +1 -0
  345. package/dist/pool/ConnectionPool.js +303 -0
  346. package/dist/pool/ConnectionPool.js.map +1 -0
  347. package/dist/pool/IConnectionPool.d.ts +143 -0
  348. package/dist/pool/IConnectionPool.d.ts.map +1 -0
  349. package/dist/pool/IConnectionPool.js +1 -0
  350. package/dist/pool/PoolErrors.d.ts +11 -0
  351. package/dist/pool/PoolErrors.d.ts.map +1 -0
  352. package/dist/pool/PoolErrors.js +16 -0
  353. package/dist/pool/PoolErrors.js.map +1 -0
  354. package/dist/registry/BaseRegistry.d.ts +219 -0
  355. package/dist/registry/BaseRegistry.d.ts.map +1 -0
  356. package/dist/registry/BaseRegistry.js +215 -0
  357. package/dist/registry/BaseRegistry.js.map +1 -0
  358. package/dist/registry/SkillRegistry.d.ts +67 -0
  359. package/dist/registry/SkillRegistry.d.ts.map +1 -0
  360. package/dist/registry/SkillRegistry.js +87 -0
  361. package/dist/registry/SkillRegistry.js.map +1 -0
  362. package/dist/registry/ToolRegistry.d.ts +70 -0
  363. package/dist/registry/ToolRegistry.d.ts.map +1 -0
  364. package/dist/registry/ToolRegistry.js +96 -0
  365. package/dist/registry/ToolRegistry.js.map +1 -0
  366. package/dist/sanitize.d.ts +164 -0
  367. package/dist/sanitize.d.ts.map +1 -0
  368. package/dist/sanitize.js +100 -0
  369. package/dist/sanitize.js.map +1 -0
  370. package/dist/schema.d.ts +562 -0
  371. package/dist/schema.d.ts.map +1 -0
  372. package/dist/schema.js +251 -0
  373. package/dist/schema.js.map +1 -0
  374. package/dist/transport/BaseTransport.d.ts +166 -0
  375. package/dist/transport/BaseTransport.d.ts.map +1 -0
  376. package/dist/transport/BaseTransport.js +199 -0
  377. package/dist/transport/BaseTransport.js.map +1 -0
  378. package/dist/transport/HttpHelpers.d.ts +53 -0
  379. package/dist/transport/HttpHelpers.d.ts.map +1 -0
  380. package/dist/transport/HttpHelpers.js +44 -0
  381. package/dist/transport/HttpHelpers.js.map +1 -0
  382. package/dist/transport/HttpRequestLifecycle.d.ts +37 -0
  383. package/dist/transport/HttpRequestLifecycle.d.ts.map +1 -0
  384. package/dist/transport/HttpRequestLifecycle.js +87 -0
  385. package/dist/transport/HttpRequestLifecycle.js.map +1 -0
  386. package/dist/transport/HttpTransport.d.ts +140 -0
  387. package/dist/transport/HttpTransport.d.ts.map +1 -0
  388. package/dist/transport/HttpTransport.js +245 -0
  389. package/dist/transport/HttpTransport.js.map +1 -0
  390. package/dist/transport/SseTransport.d.ts +149 -0
  391. package/dist/transport/SseTransport.d.ts.map +1 -0
  392. package/dist/transport/SseTransport.js +470 -0
  393. package/dist/transport/SseTransport.js.map +1 -0
  394. package/dist/transport/StreamableHttpTransport.d.ts +225 -0
  395. package/dist/transport/StreamableHttpTransport.d.ts.map +1 -0
  396. package/dist/transport/StreamableHttpTransport.js +449 -0
  397. package/dist/transport/StreamableHttpTransport.js.map +1 -0
  398. package/dist/types/disposable.d.ts +22 -0
  399. package/dist/types/disposable.d.ts.map +1 -0
  400. package/dist/types/disposable.js +1 -0
  401. package/dist/types/server-config.d.ts +32 -0
  402. package/dist/types/server-config.d.ts.map +1 -0
  403. package/dist/types/server-config.js +1 -0
  404. package/dist/types/skill.d.ts +74 -0
  405. package/dist/types/skill.d.ts.map +1 -0
  406. package/dist/types/skill.js +1 -0
  407. package/dist/types/tool.d.ts +78 -0
  408. package/dist/types/tool.d.ts.map +1 -0
  409. package/dist/types/tool.js +1 -0
  410. package/dist/utils.d.ts +27 -0
  411. package/dist/utils.d.ts.map +1 -0
  412. package/dist/utils.js +6 -0
  413. package/dist/utils.js.map +1 -0
  414. package/dist/watchers/SkillWatcher.d.ts +25 -0
  415. package/dist/watchers/SkillWatcher.d.ts.map +1 -0
  416. package/dist/watchers/SkillWatcher.js +96 -0
  417. package/dist/watchers/SkillWatcher.js.map +1 -0
  418. package/dist/watchers/ToolWatcher.d.ts +24 -0
  419. package/dist/watchers/ToolWatcher.d.ts.map +1 -0
  420. package/dist/watchers/ToolWatcher.js +92 -0
  421. package/dist/watchers/ToolWatcher.js.map +1 -0
  422. package/package.json +106 -0
@@ -0,0 +1,97 @@
1
+ import { asBranchId, asEdgeId, asSessionId, asSuspensionToken, asThoughtId } from "../contracts/ids.js";
2
+ import { SummarySchema } from "../core/compression/Summary.js";
3
+ import { EdgeSchema, SequentialThinkingSchema } from "../schema.js";
4
+ import { PersistenceCompatibilityError } from "../errors.js";
5
+ import { parsePersistenceBranchId } from "./PersistenceScope.js";
6
+ import * as __rspack_external_valibot from "valibot";
7
+ function parseToolRecommendation(recommendation, sourcePath) {
8
+ if (void 0 === recommendation.confidence || void 0 === recommendation.rationale || void 0 === recommendation.priority) throw new PersistenceCompatibilityError(sourcePath, 'tool recommendation defaults are absent');
9
+ return {
10
+ ...recommendation,
11
+ confidence: recommendation.confidence,
12
+ rationale: recommendation.rationale,
13
+ priority: recommendation.priority
14
+ };
15
+ }
16
+ function parseSkillRecommendation(recommendation, sourcePath) {
17
+ if (void 0 === recommendation.confidence || void 0 === recommendation.rationale || void 0 === recommendation.priority) throw new PersistenceCompatibilityError(sourcePath, 'skill recommendation defaults are absent');
18
+ return {
19
+ ...recommendation,
20
+ confidence: recommendation.confidence,
21
+ rationale: recommendation.rationale,
22
+ priority: recommendation.priority
23
+ };
24
+ }
25
+ function parseStepRecommendation(step, sourcePath) {
26
+ if (void 0 === step.step_description || void 0 === step.expected_outcome) throw new PersistenceCompatibilityError(sourcePath, 'step recommendation defaults are absent');
27
+ const { recommended_tools, recommended_skills, ...fields } = step;
28
+ return {
29
+ ...fields,
30
+ step_description: step.step_description,
31
+ expected_outcome: step.expected_outcome,
32
+ recommended_tools: recommended_tools.map((tool)=>parseToolRecommendation(tool, sourcePath)),
33
+ ...void 0 === recommended_skills ? {} : {
34
+ recommended_skills: recommended_skills.map((skill)=>parseSkillRecommendation(skill, sourcePath))
35
+ }
36
+ };
37
+ }
38
+ function parseThoughtData(raw, sourcePath) {
39
+ const parsed = __rspack_external_valibot.parse(SequentialThinkingSchema, raw);
40
+ const { id, session_id, branch_id, merge_branch_ids, continuation_token, current_step, previous_steps, ...thought } = parsed;
41
+ return {
42
+ ...thought,
43
+ ...void 0 === id ? {} : {
44
+ id: asThoughtId(id)
45
+ },
46
+ ...void 0 === session_id ? {} : {
47
+ session_id: asSessionId(session_id)
48
+ },
49
+ ...void 0 === branch_id ? {} : {
50
+ branch_id: parsePersistenceBranchId(branch_id, sourcePath)
51
+ },
52
+ ...void 0 === merge_branch_ids ? {} : {
53
+ merge_branch_ids: merge_branch_ids.map(asBranchId)
54
+ },
55
+ ...void 0 === continuation_token ? {} : {
56
+ continuation_token: asSuspensionToken(continuation_token)
57
+ },
58
+ ...void 0 === current_step ? {} : {
59
+ current_step: parseStepRecommendation(current_step, sourcePath)
60
+ },
61
+ ...void 0 === previous_steps ? {} : {
62
+ previous_steps: previous_steps.map((step)=>parseStepRecommendation(step, sourcePath))
63
+ }
64
+ };
65
+ }
66
+ function parseEdge(raw) {
67
+ const parsed = __rspack_external_valibot.parse(EdgeSchema, raw);
68
+ return {
69
+ ...parsed,
70
+ id: asEdgeId(parsed.id),
71
+ from: asThoughtId(parsed.from),
72
+ to: asThoughtId(parsed.to),
73
+ sessionId: asSessionId(parsed.sessionId)
74
+ };
75
+ }
76
+ function parseSummary(raw, sourcePath) {
77
+ const parsed = __rspack_external_valibot.parse(SummarySchema, raw);
78
+ const { branchId, sessionId, rootThoughtId, coveredIds, coveredRange, ...summary } = parsed;
79
+ const [rangeStart, rangeEnd] = coveredRange;
80
+ if (void 0 === rangeStart || void 0 === rangeEnd) throw new PersistenceCompatibilityError(sourcePath, 'summary coveredRange must contain two values');
81
+ return {
82
+ ...summary,
83
+ sessionId: asSessionId(sessionId),
84
+ ...void 0 === branchId ? {} : {
85
+ branchId: parsePersistenceBranchId(branchId, sourcePath)
86
+ },
87
+ rootThoughtId: asThoughtId(rootThoughtId),
88
+ coveredIds: coveredIds.map(asThoughtId),
89
+ coveredRange: [
90
+ rangeStart,
91
+ rangeEnd
92
+ ]
93
+ };
94
+ }
95
+ export { parseEdge, parseSummary, parseThoughtData };
96
+
97
+ //# sourceMappingURL=PersistenceCodec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence/PersistenceCodec.js","sources":["../../src/persistence/PersistenceCodec.ts"],"sourcesContent":["import * as v from 'valibot';\nimport {\n\tasBranchId,\n\tasEdgeId,\n\tasSessionId,\n\tasSuspensionToken,\n\tasThoughtId,\n} from '../contracts/ids.js';\nimport type { Summary } from '../core/compression/Summary.js';\nimport { SummarySchema } from '../core/compression/Summary.js';\nimport type { Edge } from '../core/graph/Edge.js';\nimport type { ThoughtData } from '../core/thought.js';\nimport type { StepRecommendation } from '../core/step.js';\nimport { EdgeSchema, SequentialThinkingSchema } from '../schema.js';\nimport { PersistenceCompatibilityError } from '../errors.js';\nimport { parsePersistenceBranchId } from './PersistenceScope.js';\n\ntype PersistedToolRecommendation = {\n\treadonly tool_name: string;\n\treadonly confidence?: number;\n\treadonly rationale?: string;\n\treadonly priority?: number;\n\treadonly suggested_inputs?: Record<string, string | number | boolean | null>;\n\treadonly alternatives?: string[];\n};\n\ntype PersistedSkillRecommendation = {\n\treadonly skill_name: string;\n\treadonly confidence?: number;\n\treadonly rationale?: string;\n\treadonly priority?: number;\n\treadonly alternatives?: string[];\n\treadonly allowed_tools?: string[];\n\treadonly user_invocable?: boolean;\n};\n\ntype PersistedStepRecommendation = {\n\treadonly step_description?: string;\n\treadonly recommended_tools: readonly PersistedToolRecommendation[];\n\treadonly recommended_skills?: readonly PersistedSkillRecommendation[];\n\treadonly expected_outcome?: string;\n\treadonly next_step_conditions?: string[];\n};\n\nfunction parseToolRecommendation(recommendation: PersistedToolRecommendation, sourcePath: string) {\n\tif (\n\t\trecommendation.confidence === undefined ||\n\t\trecommendation.rationale === undefined ||\n\t\trecommendation.priority === undefined\n\t) {\n\t\tthrow new PersistenceCompatibilityError(sourcePath, 'tool recommendation defaults are absent');\n\t}\n\treturn {\n\t\t...recommendation,\n\t\tconfidence: recommendation.confidence,\n\t\trationale: recommendation.rationale,\n\t\tpriority: recommendation.priority,\n\t};\n}\n\nfunction parseSkillRecommendation(\n\trecommendation: PersistedSkillRecommendation,\n\tsourcePath: string\n) {\n\tif (\n\t\trecommendation.confidence === undefined ||\n\t\trecommendation.rationale === undefined ||\n\t\trecommendation.priority === undefined\n\t) {\n\t\tthrow new PersistenceCompatibilityError(sourcePath, 'skill recommendation defaults are absent');\n\t}\n\treturn {\n\t\t...recommendation,\n\t\tconfidence: recommendation.confidence,\n\t\trationale: recommendation.rationale,\n\t\tpriority: recommendation.priority,\n\t};\n}\n\nfunction parseStepRecommendation(\n\tstep: PersistedStepRecommendation,\n\tsourcePath: string\n): StepRecommendation {\n\tif (step.step_description === undefined || step.expected_outcome === undefined) {\n\t\tthrow new PersistenceCompatibilityError(sourcePath, 'step recommendation defaults are absent');\n\t}\n\tconst { recommended_tools, recommended_skills, ...fields } = step;\n\treturn {\n\t\t...fields,\n\t\tstep_description: step.step_description,\n\t\texpected_outcome: step.expected_outcome,\n\t\trecommended_tools: recommended_tools.map((tool) => parseToolRecommendation(tool, sourcePath)),\n\t\t...(recommended_skills === undefined\n\t\t\t? {}\n\t\t\t: {\n\t\t\t\t\trecommended_skills: recommended_skills.map((skill) =>\n\t\t\t\t\t\tparseSkillRecommendation(skill, sourcePath)\n\t\t\t\t\t),\n\t\t\t\t}),\n\t};\n}\n\nexport function parseThoughtData(raw: unknown, sourcePath: string): ThoughtData {\n\tconst parsed = v.parse(SequentialThinkingSchema, raw);\n\tconst {\n\t\tid,\n\t\tsession_id,\n\t\tbranch_id,\n\t\tmerge_branch_ids,\n\t\tcontinuation_token,\n\t\tcurrent_step,\n\t\tprevious_steps,\n\t\t...thought\n\t} = parsed;\n\treturn {\n\t\t...thought,\n\t\t...(id === undefined ? {} : { id: asThoughtId(id) }),\n\t\t...(session_id === undefined ? {} : { session_id: asSessionId(session_id) }),\n\t\t...(branch_id === undefined\n\t\t\t? {}\n\t\t\t: { branch_id: parsePersistenceBranchId(branch_id, sourcePath) }),\n\t\t...(merge_branch_ids === undefined\n\t\t\t? {}\n\t\t\t: { merge_branch_ids: merge_branch_ids.map(asBranchId) }),\n\t\t...(continuation_token === undefined\n\t\t\t? {}\n\t\t\t: { continuation_token: asSuspensionToken(continuation_token) }),\n\t\t...(current_step === undefined\n\t\t\t? {}\n\t\t\t: { current_step: parseStepRecommendation(current_step, sourcePath) }),\n\t\t...(previous_steps === undefined\n\t\t\t? {}\n\t\t\t: {\n\t\t\t\t\tprevious_steps: previous_steps.map((step) => parseStepRecommendation(step, sourcePath)),\n\t\t\t\t}),\n\t};\n}\n\nexport function parseEdge(raw: unknown): Edge {\n\tconst parsed = v.parse(EdgeSchema, raw);\n\treturn {\n\t\t...parsed,\n\t\tid: asEdgeId(parsed.id),\n\t\tfrom: asThoughtId(parsed.from),\n\t\tto: asThoughtId(parsed.to),\n\t\tsessionId: asSessionId(parsed.sessionId),\n\t};\n}\n\nexport function parseSummary(raw: unknown, sourcePath: string): Summary {\n\tconst parsed = v.parse(SummarySchema, raw);\n\tconst { branchId, sessionId, rootThoughtId, coveredIds, coveredRange, ...summary } = parsed;\n\tconst [rangeStart, rangeEnd] = coveredRange;\n\tif (rangeStart === undefined || rangeEnd === undefined) {\n\t\tthrow new PersistenceCompatibilityError(\n\t\t\tsourcePath,\n\t\t\t'summary coveredRange must contain two values'\n\t\t);\n\t}\n\treturn {\n\t\t...summary,\n\t\tsessionId: asSessionId(sessionId),\n\t\t...(branchId === undefined ? {} : { branchId: parsePersistenceBranchId(branchId, sourcePath) }),\n\t\trootThoughtId: asThoughtId(rootThoughtId),\n\t\tcoveredIds: coveredIds.map(asThoughtId),\n\t\tcoveredRange: [rangeStart, rangeEnd],\n\t};\n}\n"],"names":["parseToolRecommendation","recommendation","sourcePath","undefined","PersistenceCompatibilityError","parseSkillRecommendation","parseStepRecommendation","step","recommended_tools","recommended_skills","fields","tool","skill","parseThoughtData","raw","parsed","v","SequentialThinkingSchema","id","session_id","branch_id","merge_branch_ids","continuation_token","current_step","previous_steps","thought","asThoughtId","asSessionId","parsePersistenceBranchId","asBranchId","asSuspensionToken","parseEdge","EdgeSchema","asEdgeId","parseSummary","SummarySchema","branchId","sessionId","rootThoughtId","coveredIds","coveredRange","summary","rangeStart","rangeEnd"],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { SessionScopedPersistenceOperation } from '../contracts/PersistenceBackend.js';
2
+ import type { BranchId, SessionId } from '../contracts/ids.js';
3
+ import { SequentialThinkingError } from '../errors.js';
4
+ /** Durable namespace associated with a persistence write. */
5
+ export type PersistenceScope = {
6
+ readonly sessionId: SessionId;
7
+ readonly branchId?: BranchId;
8
+ };
9
+ /** Operations whose payload ownership is validated before mutation. */
10
+ export type PersistenceWriteOperation = 'saveThought' | 'saveThoughtForSession' | 'saveBranch' | 'saveBranchForSession' | 'saveEdges' | 'saveSummaries';
11
+ /** Error raised when a custom backend lacks the complete scoped capability. */
12
+ export declare class PersistenceCapabilityError extends SequentialThinkingError {
13
+ readonly operation: SessionScopedPersistenceOperation;
14
+ constructor(operation: SessionScopedPersistenceOperation);
15
+ }
16
+ /** Error raised before a write whose payload belongs to another namespace. */
17
+ export declare class PersistenceScopeMismatchError extends SequentialThinkingError {
18
+ readonly operation: PersistenceWriteOperation;
19
+ readonly expectedScope: PersistenceScope;
20
+ readonly actualScopes: readonly PersistenceScope[];
21
+ constructor(operation: PersistenceWriteOperation, expectedScope: PersistenceScope, actualScopes: readonly PersistenceScope[]);
22
+ }
23
+ //# sourceMappingURL=PersistenceErrors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PersistenceErrors.d.ts","sourceRoot":"","sources":["../../src/persistence/PersistenceErrors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,oCAAoC,CAAC;AAC5F,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAe,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEpE,6DAA6D;AAC7D,MAAM,MAAM,gBAAgB,GAAG;IAC9B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CAC7B,CAAC;AAEF,uEAAuE;AACvE,MAAM,MAAM,yBAAyB,GAClC,aAAa,GACb,uBAAuB,GACvB,YAAY,GACZ,sBAAsB,GACtB,WAAW,GACX,eAAe,CAAC;AAEnB,+EAA+E;AAC/E,qBAAa,0BAA2B,SAAQ,uBAAuB;IACtE,SAAgB,SAAS,EAAE,iCAAiC,CAAC;gBAEjD,SAAS,EAAE,iCAAiC;CAQxD;AAED,8EAA8E;AAC9E,qBAAa,6BAA8B,SAAQ,uBAAuB;IACzE,SAAgB,SAAS,EAAE,yBAAyB,CAAC;IACrD,SAAgB,aAAa,EAAE,gBAAgB,CAAC;IAChD,SAAgB,YAAY,EAAE,SAAS,gBAAgB,EAAE,CAAC;gBAGzD,SAAS,EAAE,yBAAyB,EACpC,aAAa,EAAE,gBAAgB,EAC/B,YAAY,EAAE,SAAS,gBAAgB,EAAE;CAW1C"}
@@ -0,0 +1,26 @@
1
+ import { ERROR_CODES, SequentialThinkingError } from "../errors.js";
2
+ class PersistenceCapabilityError extends SequentialThinkingError {
3
+ operation;
4
+ constructor(operation){
5
+ super(`Persistence backend does not support required session operation '${operation}'`, ERROR_CODES.PERSISTENCE_CAPABILITY_UNSUPPORTED);
6
+ this.name = 'PersistenceCapabilityError';
7
+ this.operation = operation;
8
+ }
9
+ }
10
+ class PersistenceScopeMismatchError extends SequentialThinkingError {
11
+ operation;
12
+ expectedScope;
13
+ actualScopes;
14
+ constructor(operation, expectedScope, actualScopes){
15
+ super(`Persistence payload scope does not match '${expectedScope.sessionId}' for ${operation}`, ERROR_CODES.PERSISTENCE_SCOPE_MISMATCH);
16
+ this.name = 'PersistenceScopeMismatchError';
17
+ this.operation = operation;
18
+ this.expectedScope = expectedScope;
19
+ this.actualScopes = [
20
+ ...actualScopes
21
+ ];
22
+ }
23
+ }
24
+ export { PersistenceCapabilityError, PersistenceScopeMismatchError };
25
+
26
+ //# sourceMappingURL=PersistenceErrors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence/PersistenceErrors.js","sources":["../../src/persistence/PersistenceErrors.ts"],"sourcesContent":["import type { SessionScopedPersistenceOperation } from '../contracts/PersistenceBackend.js';\nimport type { BranchId, SessionId } from '../contracts/ids.js';\nimport { ERROR_CODES, SequentialThinkingError } from '../errors.js';\n\n/** Durable namespace associated with a persistence write. */\nexport type PersistenceScope = {\n\treadonly sessionId: SessionId;\n\treadonly branchId?: BranchId;\n};\n\n/** Operations whose payload ownership is validated before mutation. */\nexport type PersistenceWriteOperation =\n\t| 'saveThought'\n\t| 'saveThoughtForSession'\n\t| 'saveBranch'\n\t| 'saveBranchForSession'\n\t| 'saveEdges'\n\t| 'saveSummaries';\n\n/** Error raised when a custom backend lacks the complete scoped capability. */\nexport class PersistenceCapabilityError extends SequentialThinkingError {\n\tpublic readonly operation: SessionScopedPersistenceOperation;\n\n\tconstructor(operation: SessionScopedPersistenceOperation) {\n\t\tsuper(\n\t\t\t`Persistence backend does not support required session operation '${operation}'`,\n\t\t\tERROR_CODES.PERSISTENCE_CAPABILITY_UNSUPPORTED\n\t\t);\n\t\tthis.name = 'PersistenceCapabilityError';\n\t\tthis.operation = operation;\n\t}\n}\n\n/** Error raised before a write whose payload belongs to another namespace. */\nexport class PersistenceScopeMismatchError extends SequentialThinkingError {\n\tpublic readonly operation: PersistenceWriteOperation;\n\tpublic readonly expectedScope: PersistenceScope;\n\tpublic readonly actualScopes: readonly PersistenceScope[];\n\n\tconstructor(\n\t\toperation: PersistenceWriteOperation,\n\t\texpectedScope: PersistenceScope,\n\t\tactualScopes: readonly PersistenceScope[]\n\t) {\n\t\tsuper(\n\t\t\t`Persistence payload scope does not match '${expectedScope.sessionId}' for ${operation}`,\n\t\t\tERROR_CODES.PERSISTENCE_SCOPE_MISMATCH\n\t\t);\n\t\tthis.name = 'PersistenceScopeMismatchError';\n\t\tthis.operation = operation;\n\t\tthis.expectedScope = expectedScope;\n\t\tthis.actualScopes = [...actualScopes];\n\t}\n}\n"],"names":["PersistenceCapabilityError","SequentialThinkingError","operation","ERROR_CODES","PersistenceScopeMismatchError","expectedScope","actualScopes"],"mappings":";AAoBO,MAAMA,mCAAmCC;IAC/B,UAA6C;IAE7D,YAAYC,SAA4C,CAAE;QACzD,KAAK,CACJ,CAAC,iEAAiE,EAAEA,UAAU,CAAC,CAAC,EAChFC,YAAY,kCAAkC;QAE/C,IAAI,CAAC,IAAI,GAAG;QACZ,IAAI,CAAC,SAAS,GAAGD;IAClB;AACD;AAGO,MAAME,sCAAsCH;IAClC,UAAqC;IACrC,cAAgC;IAChC,aAA0C;IAE1D,YACCC,SAAoC,EACpCG,aAA+B,EAC/BC,YAAyC,CACxC;QACD,KAAK,CACJ,CAAC,0CAA0C,EAAED,cAAc,SAAS,CAAC,MAAM,EAAEH,WAAW,EACxFC,YAAY,0BAA0B;QAEvC,IAAI,CAAC,IAAI,GAAG;QACZ,IAAI,CAAC,SAAS,GAAGD;QACjB,IAAI,CAAC,aAAa,GAAGG;QACrB,IAAI,CAAC,YAAY,GAAG;eAAIC;SAAa;IACtC;AACD"}
@@ -0,0 +1,21 @@
1
+ import type { PersistenceBackend, PersistenceConfig } from '../contracts/PersistenceBackend.js';
2
+ /**
3
+ * Create a persistence backend based on the provided configuration.
4
+ *
5
+ * Uses dynamic imports to avoid loading unused backends,
6
+ * keeping the factory decoupled from concrete implementations.
7
+ *
8
+ * @param config - Persistence configuration
9
+ * @returns A configured persistence backend, or null if disabled
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const backend = createPersistenceBackend({
14
+ * enabled: true,
15
+ * backend: 'file',
16
+ * options: { dataDir: './data' }
17
+ * });
18
+ * ```
19
+ */
20
+ export declare function createPersistenceBackend(config: PersistenceConfig): Promise<PersistenceBackend | null>;
21
+ //# sourceMappingURL=PersistenceFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PersistenceFactory.d.ts","sourceRoot":"","sources":["../../src/persistence/PersistenceFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEhG;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,wBAAwB,CAC7C,MAAM,EAAE,iBAAiB,GACvB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CA2BpC"}
@@ -0,0 +1,28 @@
1
+ async function createPersistenceBackend(config) {
2
+ if (!config.enabled) return null;
3
+ switch(config.backend){
4
+ case 'file':
5
+ {
6
+ const { FilePersistence } = await import("./FilePersistence.js");
7
+ return await FilePersistence.create(config.options);
8
+ }
9
+ case 'sqlite':
10
+ {
11
+ const { SqlitePersistence } = await import("./SqlitePersistence.js");
12
+ return await SqlitePersistence.create(config.options);
13
+ }
14
+ case 'memory':
15
+ {
16
+ const { MemoryPersistence } = await import("./MemoryPersistence.js");
17
+ return new MemoryPersistence({
18
+ maxHistorySize: config.options?.maxHistorySize,
19
+ persistBranches: config.options?.persistBranches
20
+ });
21
+ }
22
+ default:
23
+ throw new Error(`Unknown persistence backend: ${config.backend}`);
24
+ }
25
+ }
26
+ export { createPersistenceBackend };
27
+
28
+ //# sourceMappingURL=PersistenceFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence/PersistenceFactory.js","sources":["../../src/persistence/PersistenceFactory.ts"],"sourcesContent":["import type { PersistenceBackend, PersistenceConfig } from '../contracts/PersistenceBackend.js';\n\n/**\n * Create a persistence backend based on the provided configuration.\n *\n * Uses dynamic imports to avoid loading unused backends,\n * keeping the factory decoupled from concrete implementations.\n *\n * @param config - Persistence configuration\n * @returns A configured persistence backend, or null if disabled\n *\n * @example\n * ```typescript\n * const backend = createPersistenceBackend({\n * enabled: true,\n * backend: 'file',\n * options: { dataDir: './data' }\n * });\n * ```\n */\nexport async function createPersistenceBackend(\n\tconfig: PersistenceConfig\n): Promise<PersistenceBackend | null> {\n\tif (!config.enabled) {\n\t\treturn null;\n\t}\n\n\tswitch (config.backend) {\n\t\tcase 'file': {\n\t\t\tconst { FilePersistence } = await import('./FilePersistence.js');\n\t\t\treturn await FilePersistence.create(config.options);\n\t\t}\n\n\t\tcase 'sqlite': {\n\t\t\tconst { SqlitePersistence } = await import('./SqlitePersistence.js');\n\t\t\treturn await SqlitePersistence.create(config.options);\n\t\t}\n\n\t\tcase 'memory': {\n\t\t\tconst { MemoryPersistence } = await import('./MemoryPersistence.js');\n\t\t\treturn new MemoryPersistence({\n\t\t\t\tmaxHistorySize: config.options?.maxHistorySize,\n\t\t\t\tpersistBranches: config.options?.persistBranches,\n\t\t\t});\n\t\t}\n\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown persistence backend: ${config.backend}`);\n\t}\n}\n"],"names":["createPersistenceBackend","config","FilePersistence","SqlitePersistence","MemoryPersistence","Error"],"mappings":"AAoBO,eAAeA,yBACrBC,MAAyB;IAEzB,IAAI,CAACA,OAAO,OAAO,EAClB,OAAO;IAGR,OAAQA,OAAO,OAAO;QACrB,KAAK;YAAQ;gBACZ,MAAM,EAAEC,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC;gBACzC,OAAO,MAAMA,gBAAgB,MAAM,CAACD,OAAO,OAAO;YACnD;QAEA,KAAK;YAAU;gBACd,MAAM,EAAEE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC;gBAC3C,OAAO,MAAMA,kBAAkB,MAAM,CAACF,OAAO,OAAO;YACrD;QAEA,KAAK;YAAU;gBACd,MAAM,EAAEG,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC;gBAC3C,OAAO,IAAIA,kBAAkB;oBAC5B,gBAAgBH,OAAO,OAAO,EAAE;oBAChC,iBAAiBA,OAAO,OAAO,EAAE;gBAClC;YACD;QAEA;YACC,MAAM,IAAII,MAAM,CAAC,6BAA6B,EAAEJ,OAAO,OAAO,EAAE;IAClE;AACD"}
@@ -0,0 +1,42 @@
1
+ import type { ThoughtData } from '../core/thought.js';
2
+ import type { Edge } from '../core/graph/Edge.js';
3
+ import type { Summary } from '../core/compression/Summary.js';
4
+ import { type BranchId, type SessionId } from '../contracts/ids.js';
5
+ import { type PersistenceWriteOperation } from './PersistenceErrors.js';
6
+ type PersistedThoughtData = ThoughtData & {
7
+ readonly id: string;
8
+ };
9
+ export interface PersistedThoughtCollection {
10
+ readonly sessionId: SessionId;
11
+ readonly thoughts: readonly ThoughtData[];
12
+ }
13
+ export declare function parsePersistenceBranchId(value: string, sourcePath: string): BranchId;
14
+ export declare function assertPersistableThoughts(thoughts: readonly ThoughtData[], sourcePath: string): asserts thoughts is readonly PersistedThoughtData[];
15
+ /**
16
+ * Enforces thought identity across session-tagged persisted arrays.
17
+ *
18
+ * Each array must contain unique IDs. Reuse between arrays is valid only for deeply equal
19
+ * payloads in the same session; equal identifiers in different sessions are independent.
20
+ *
21
+ * @param collections - History and branch arrays tagged with their owning session.
22
+ * @param sourcePath - Persistence location included in compatibility errors.
23
+ * @returns Nothing when all collection identities are compatible.
24
+ */
25
+ export declare function assertPersistableThoughtCollections(collections: readonly PersistedThoughtCollection[], sourcePath: string): void;
26
+ export declare function assertThoughtScope(operation: Extract<PersistenceWriteOperation, 'saveThought' | 'saveThoughtForSession'>, sessionId: SessionId, thought: ThoughtData): void;
27
+ export declare function assertBranchScope(operation: Extract<PersistenceWriteOperation, 'saveBranch' | 'saveBranchForSession'>, sessionId: SessionId, branchId: BranchId, thoughts: readonly ThoughtData[]): void;
28
+ export declare function assertEdgeScopes(sessionId: SessionId, edges: readonly Edge[]): void;
29
+ export declare function assertSummaryScopes(sessionId: SessionId, summaries: readonly Summary[]): void;
30
+ export declare function assertUniqueRecordIds(records: readonly {
31
+ readonly id: string;
32
+ }[], sourcePath: string, recordKind: 'edge' | 'summary'): void;
33
+ export declare function compareCodePoint(left: string, right: string): number;
34
+ export declare function compareCreatedThenId(left: {
35
+ readonly createdAt: number;
36
+ readonly id: string;
37
+ }, right: {
38
+ readonly createdAt: number;
39
+ readonly id: string;
40
+ }): number;
41
+ export {};
42
+ //# sourceMappingURL=PersistenceScope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PersistenceScope.d.ts","sourceRoot":"","sources":["../../src/persistence/PersistenceScope.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAiC,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAInG,OAAO,EAGN,KAAK,yBAAyB,EAC9B,MAAM,wBAAwB,CAAC;AAIhC,KAAK,oBAAoB,GAAG,WAAW,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAElE,MAAM,WAAW,0BAA0B;IAC1C,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;CAC1C;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,QAAQ,CAKpF;AAED,wBAAgB,yBAAyB,CACxC,QAAQ,EAAE,SAAS,WAAW,EAAE,EAChC,UAAU,EAAE,MAAM,GAChB,OAAO,CAAC,QAAQ,IAAI,SAAS,oBAAoB,EAAE,CAWrD;AAED;;;;;;;;;GASG;AACH,wBAAgB,mCAAmC,CAClD,WAAW,EAAE,SAAS,0BAA0B,EAAE,EAClD,UAAU,EAAE,MAAM,GAChB,IAAI,CAqBN;AASD,wBAAgB,kBAAkB,CACjC,SAAS,EAAE,OAAO,CAAC,yBAAyB,EAAE,aAAa,GAAG,uBAAuB,CAAC,EACtF,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,WAAW,GAClB,IAAI,CAKN;AAED,wBAAgB,iBAAiB,CAChC,SAAS,EAAE,OAAO,CAAC,yBAAyB,EAAE,YAAY,GAAG,sBAAsB,CAAC,EACpF,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,SAAS,WAAW,EAAE,GAC9B,IAAI,CAYN;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,IAAI,CAOnF;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,CAU7F;AAED,wBAAgB,qBAAqB,CACpC,OAAO,EAAE,SAAS;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,EAC3C,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GAAG,SAAS,GAC5B,IAAI,CAWN;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,oBAAoB,CACnC,IAAI,EAAE;IAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EACzD,KAAK,EAAE;IAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACxD,MAAM,CAER"}
@@ -0,0 +1,93 @@
1
+ import { isDeepStrictEqual } from "node:util";
2
+ import { GLOBAL_SESSION_ID, asBranchId } from "../contracts/ids.js";
3
+ import { PersistenceCompatibilityError } from "../errors.js";
4
+ import { PersistenceScopeMismatchError } from "./PersistenceErrors.js";
5
+ const BRANCH_ID_PATTERN = /^[A-Za-z0-9_-]{1,50}$/;
6
+ function parsePersistenceBranchId(value, sourcePath) {
7
+ if (!BRANCH_ID_PATTERN.test(value)) throw new PersistenceCompatibilityError(sourcePath, `invalid branch id '${value}'`);
8
+ return asBranchId(value);
9
+ }
10
+ function assertPersistableThoughts(thoughts, sourcePath) {
11
+ const identifiers = new Set();
12
+ for (const thought of thoughts){
13
+ if (void 0 === thought.id || 0 === thought.id.length) throw new PersistenceCompatibilityError(sourcePath, 'persisted thoughts require an id');
14
+ if (identifiers.has(thought.id)) throw new PersistenceCompatibilityError(sourcePath, `duplicate thought id '${thought.id}'`);
15
+ identifiers.add(thought.id);
16
+ }
17
+ }
18
+ function assertPersistableThoughtCollections(collections, sourcePath) {
19
+ const payloadsBySession = new Map();
20
+ for (const collection of collections){
21
+ assertPersistableThoughts(collection.thoughts, sourcePath);
22
+ let sessionPayloads = payloadsBySession.get(collection.sessionId);
23
+ if (void 0 === sessionPayloads) {
24
+ sessionPayloads = new Map();
25
+ payloadsBySession.set(collection.sessionId, sessionPayloads);
26
+ }
27
+ for (const thought of collection.thoughts){
28
+ const identifier = thought.id;
29
+ const existing = sessionPayloads.get(identifier);
30
+ if (void 0 !== existing && !isDeepStrictEqual(existing, thought)) throw new PersistenceCompatibilityError(sourcePath, `conflicting thought id '${identifier}'`);
31
+ sessionPayloads.set(identifier, thought);
32
+ }
33
+ }
34
+ }
35
+ function thoughtScope(thought) {
36
+ return {
37
+ sessionId: thought.session_id ?? GLOBAL_SESSION_ID,
38
+ ...void 0 === thought.branch_id ? {} : {
39
+ branchId: thought.branch_id
40
+ }
41
+ };
42
+ }
43
+ function assertThoughtScope(operation, sessionId, thought) {
44
+ const actualScope = thoughtScope(thought);
45
+ if (actualScope.sessionId !== sessionId) throw new PersistenceScopeMismatchError(operation, {
46
+ sessionId
47
+ }, [
48
+ actualScope
49
+ ]);
50
+ }
51
+ function assertBranchScope(operation, sessionId, branchId, thoughts) {
52
+ const expectedScope = {
53
+ sessionId,
54
+ branchId
55
+ };
56
+ const mismatches = thoughts.map(thoughtScope).filter((scope)=>scope.sessionId !== expectedScope.sessionId || void 0 !== scope.branchId && scope.branchId !== expectedScope.branchId);
57
+ if (mismatches.length > 0) throw new PersistenceScopeMismatchError(operation, expectedScope, mismatches);
58
+ }
59
+ function assertEdgeScopes(sessionId, edges) {
60
+ const actualScopes = edges.filter((edge)=>edge.sessionId !== sessionId).map((edge)=>({
61
+ sessionId: edge.sessionId
62
+ }));
63
+ if (actualScopes.length > 0) throw new PersistenceScopeMismatchError('saveEdges', {
64
+ sessionId
65
+ }, actualScopes);
66
+ }
67
+ function assertSummaryScopes(sessionId, summaries) {
68
+ const actualScopes = summaries.filter((summary)=>summary.sessionId !== sessionId).map((summary)=>({
69
+ sessionId: summary.sessionId,
70
+ ...void 0 === summary.branchId ? {} : {
71
+ branchId: summary.branchId
72
+ }
73
+ }));
74
+ if (actualScopes.length > 0) throw new PersistenceScopeMismatchError('saveSummaries', {
75
+ sessionId
76
+ }, actualScopes);
77
+ }
78
+ function assertUniqueRecordIds(records, sourcePath, recordKind) {
79
+ const identifiers = new Set();
80
+ for (const record of records){
81
+ if (identifiers.has(record.id)) throw new PersistenceCompatibilityError(sourcePath, `duplicate ${recordKind} id '${record.id}'`);
82
+ identifiers.add(record.id);
83
+ }
84
+ }
85
+ function compareCodePoint(left, right) {
86
+ return left < right ? -1 : left > right ? 1 : 0;
87
+ }
88
+ function compareCreatedThenId(left, right) {
89
+ return left.createdAt - right.createdAt || compareCodePoint(left.id, right.id);
90
+ }
91
+ export { assertBranchScope, assertEdgeScopes, assertPersistableThoughtCollections, assertPersistableThoughts, assertSummaryScopes, assertThoughtScope, assertUniqueRecordIds, compareCodePoint, compareCreatedThenId, parsePersistenceBranchId };
92
+
93
+ //# sourceMappingURL=PersistenceScope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence/PersistenceScope.js","sources":["../../src/persistence/PersistenceScope.ts"],"sourcesContent":["import { isDeepStrictEqual } from 'node:util';\nimport type { ThoughtData } from '../core/thought.js';\nimport type { Edge } from '../core/graph/Edge.js';\nimport type { Summary } from '../core/compression/Summary.js';\nimport { asBranchId, GLOBAL_SESSION_ID, type BranchId, type SessionId } from '../contracts/ids.js';\nimport {\n\tPersistenceCompatibilityError,\n} from '../errors.js';\nimport {\n\tPersistenceScopeMismatchError,\n\ttype PersistenceScope,\n\ttype PersistenceWriteOperation,\n} from './PersistenceErrors.js';\n\nconst BRANCH_ID_PATTERN = /^[A-Za-z0-9_-]{1,50}$/;\n\ntype PersistedThoughtData = ThoughtData & { readonly id: string };\n\nexport interface PersistedThoughtCollection {\n\treadonly sessionId: SessionId;\n\treadonly thoughts: readonly ThoughtData[];\n}\n\nexport function parsePersistenceBranchId(value: string, sourcePath: string): BranchId {\n\tif (!BRANCH_ID_PATTERN.test(value)) {\n\t\tthrow new PersistenceCompatibilityError(sourcePath, `invalid branch id '${value}'`);\n\t}\n\treturn asBranchId(value);\n}\n\nexport function assertPersistableThoughts(\n\tthoughts: readonly ThoughtData[],\n\tsourcePath: string\n): asserts thoughts is readonly PersistedThoughtData[] {\n\tconst identifiers = new Set<string>();\n\tfor (const thought of thoughts) {\n\t\tif (thought.id === undefined || thought.id.length === 0) {\n\t\t\tthrow new PersistenceCompatibilityError(sourcePath, 'persisted thoughts require an id');\n\t\t}\n\t\tif (identifiers.has(thought.id)) {\n\t\t\tthrow new PersistenceCompatibilityError(sourcePath, `duplicate thought id '${thought.id}'`);\n\t\t}\n\t\tidentifiers.add(thought.id);\n\t}\n}\n\n/**\n * Enforces thought identity across session-tagged persisted arrays.\n *\n * Each array must contain unique IDs. Reuse between arrays is valid only for deeply equal\n * payloads in the same session; equal identifiers in different sessions are independent.\n *\n * @param collections - History and branch arrays tagged with their owning session.\n * @param sourcePath - Persistence location included in compatibility errors.\n * @returns Nothing when all collection identities are compatible.\n */\nexport function assertPersistableThoughtCollections(\n\tcollections: readonly PersistedThoughtCollection[],\n\tsourcePath: string\n): void {\n\tconst payloadsBySession = new Map<SessionId, Map<string, ThoughtData>>();\n\tfor (const collection of collections) {\n\t\tassertPersistableThoughts(collection.thoughts, sourcePath);\n\t\tlet sessionPayloads = payloadsBySession.get(collection.sessionId);\n\t\tif (sessionPayloads === undefined) {\n\t\t\tsessionPayloads = new Map<string, ThoughtData>();\n\t\t\tpayloadsBySession.set(collection.sessionId, sessionPayloads);\n\t\t}\n\t\tfor (const thought of collection.thoughts) {\n\t\t\tconst identifier = thought.id;\n\t\t\tconst existing = sessionPayloads.get(identifier);\n\t\t\tif (existing !== undefined && !isDeepStrictEqual(existing, thought)) {\n\t\t\t\tthrow new PersistenceCompatibilityError(\n\t\t\t\t\tsourcePath,\n\t\t\t\t\t`conflicting thought id '${identifier}'`\n\t\t\t\t);\n\t\t\t}\n\t\t\tsessionPayloads.set(identifier, thought);\n\t\t}\n\t}\n}\n\nfunction thoughtScope(thought: ThoughtData): PersistenceScope {\n\treturn {\n\t\tsessionId: thought.session_id ?? GLOBAL_SESSION_ID,\n\t\t...(thought.branch_id === undefined ? {} : { branchId: thought.branch_id }),\n\t};\n}\n\nexport function assertThoughtScope(\n\toperation: Extract<PersistenceWriteOperation, 'saveThought' | 'saveThoughtForSession'>,\n\tsessionId: SessionId,\n\tthought: ThoughtData\n): void {\n\tconst actualScope = thoughtScope(thought);\n\tif (actualScope.sessionId !== sessionId) {\n\t\tthrow new PersistenceScopeMismatchError(operation, { sessionId }, [actualScope]);\n\t}\n}\n\nexport function assertBranchScope(\n\toperation: Extract<PersistenceWriteOperation, 'saveBranch' | 'saveBranchForSession'>,\n\tsessionId: SessionId,\n\tbranchId: BranchId,\n\tthoughts: readonly ThoughtData[]\n): void {\n\tconst expectedScope = { sessionId, branchId } satisfies PersistenceScope;\n\tconst mismatches = thoughts\n\t\t.map(thoughtScope)\n\t\t.filter(\n\t\t\t(scope) =>\n\t\t\t\tscope.sessionId !== expectedScope.sessionId ||\n\t\t\t\t(scope.branchId !== undefined && scope.branchId !== expectedScope.branchId)\n\t\t);\n\tif (mismatches.length > 0) {\n\t\tthrow new PersistenceScopeMismatchError(operation, expectedScope, mismatches);\n\t}\n}\n\nexport function assertEdgeScopes(sessionId: SessionId, edges: readonly Edge[]): void {\n\tconst actualScopes = edges\n\t\t.filter((edge) => edge.sessionId !== sessionId)\n\t\t.map((edge) => ({ sessionId: edge.sessionId }));\n\tif (actualScopes.length > 0) {\n\t\tthrow new PersistenceScopeMismatchError('saveEdges', { sessionId }, actualScopes);\n\t}\n}\n\nexport function assertSummaryScopes(sessionId: SessionId, summaries: readonly Summary[]): void {\n\tconst actualScopes = summaries\n\t\t.filter((summary) => summary.sessionId !== sessionId)\n\t\t.map((summary) => ({\n\t\t\tsessionId: summary.sessionId,\n\t\t\t...(summary.branchId === undefined ? {} : { branchId: summary.branchId }),\n\t\t}));\n\tif (actualScopes.length > 0) {\n\t\tthrow new PersistenceScopeMismatchError('saveSummaries', { sessionId }, actualScopes);\n\t}\n}\n\nexport function assertUniqueRecordIds(\n\trecords: readonly { readonly id: string }[],\n\tsourcePath: string,\n\trecordKind: 'edge' | 'summary'\n): void {\n\tconst identifiers = new Set<string>();\n\tfor (const record of records) {\n\t\tif (identifiers.has(record.id)) {\n\t\t\tthrow new PersistenceCompatibilityError(\n\t\t\t\tsourcePath,\n\t\t\t\t`duplicate ${recordKind} id '${record.id}'`\n\t\t\t);\n\t\t}\n\t\tidentifiers.add(record.id);\n\t}\n}\n\nexport function compareCodePoint(left: string, right: string): number {\n\treturn left < right ? -1 : left > right ? 1 : 0;\n}\n\nexport function compareCreatedThenId(\n\tleft: { readonly createdAt: number; readonly id: string },\n\tright: { readonly createdAt: number; readonly id: string }\n): number {\n\treturn left.createdAt - right.createdAt || compareCodePoint(left.id, right.id);\n}\n"],"names":["BRANCH_ID_PATTERN","parsePersistenceBranchId","value","sourcePath","PersistenceCompatibilityError","asBranchId","assertPersistableThoughts","thoughts","identifiers","Set","thought","undefined","assertPersistableThoughtCollections","collections","payloadsBySession","Map","collection","sessionPayloads","identifier","existing","isDeepStrictEqual","thoughtScope","GLOBAL_SESSION_ID","assertThoughtScope","operation","sessionId","actualScope","PersistenceScopeMismatchError","assertBranchScope","branchId","expectedScope","mismatches","scope","assertEdgeScopes","edges","actualScopes","edge","assertSummaryScopes","summaries","summary","assertUniqueRecordIds","records","recordKind","record","compareCodePoint","left","right","compareCreatedThenId"],"mappings":";;;;AAcA,MAAMA,oBAAoB;AASnB,SAASC,yBAAyBC,KAAa,EAAEC,UAAkB;IACzE,IAAI,CAACH,kBAAkB,IAAI,CAACE,QAC3B,MAAM,IAAIE,8BAA8BD,YAAY,CAAC,mBAAmB,EAAED,MAAM,CAAC,CAAC;IAEnF,OAAOG,WAAWH;AACnB;AAEO,SAASI,0BACfC,QAAgC,EAChCJ,UAAkB;IAElB,MAAMK,cAAc,IAAIC;IACxB,KAAK,MAAMC,WAAWH,SAAU;QAC/B,IAAIG,AAAeC,WAAfD,QAAQ,EAAE,IAAkBA,AAAsB,MAAtBA,QAAQ,EAAE,CAAC,MAAM,EAChD,MAAM,IAAIN,8BAA8BD,YAAY;QAErD,IAAIK,YAAY,GAAG,CAACE,QAAQ,EAAE,GAC7B,MAAM,IAAIN,8BAA8BD,YAAY,CAAC,sBAAsB,EAAEO,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE3FF,YAAY,GAAG,CAACE,QAAQ,EAAE;IAC3B;AACD;AAYO,SAASE,oCACfC,WAAkD,EAClDV,UAAkB;IAElB,MAAMW,oBAAoB,IAAIC;IAC9B,KAAK,MAAMC,cAAcH,YAAa;QACrCP,0BAA0BU,WAAW,QAAQ,EAAEb;QAC/C,IAAIc,kBAAkBH,kBAAkB,GAAG,CAACE,WAAW,SAAS;QAChE,IAAIC,AAAoBN,WAApBM,iBAA+B;YAClCA,kBAAkB,IAAIF;YACtBD,kBAAkB,GAAG,CAACE,WAAW,SAAS,EAAEC;QAC7C;QACA,KAAK,MAAMP,WAAWM,WAAW,QAAQ,CAAE;YAC1C,MAAME,aAAaR,QAAQ,EAAE;YAC7B,MAAMS,WAAWF,gBAAgB,GAAG,CAACC;YACrC,IAAIC,AAAaR,WAAbQ,YAA0B,CAACC,kBAAkBD,UAAUT,UAC1D,MAAM,IAAIN,8BACTD,YACA,CAAC,wBAAwB,EAAEe,WAAW,CAAC,CAAC;YAG1CD,gBAAgB,GAAG,CAACC,YAAYR;QACjC;IACD;AACD;AAEA,SAASW,aAAaX,OAAoB;IACzC,OAAO;QACN,WAAWA,QAAQ,UAAU,IAAIY;QACjC,GAAIZ,AAAsBC,WAAtBD,QAAQ,SAAS,GAAiB,CAAC,IAAI;YAAE,UAAUA,QAAQ,SAAS;QAAC,CAAC;IAC3E;AACD;AAEO,SAASa,mBACfC,SAAsF,EACtFC,SAAoB,EACpBf,OAAoB;IAEpB,MAAMgB,cAAcL,aAAaX;IACjC,IAAIgB,YAAY,SAAS,KAAKD,WAC7B,MAAM,IAAIE,8BAA8BH,WAAW;QAAEC;IAAU,GAAG;QAACC;KAAY;AAEjF;AAEO,SAASE,kBACfJ,SAAoF,EACpFC,SAAoB,EACpBI,QAAkB,EAClBtB,QAAgC;IAEhC,MAAMuB,gBAAgB;QAAEL;QAAWI;IAAS;IAC5C,MAAME,aAAaxB,SACjB,GAAG,CAACc,cACJ,MAAM,CACN,CAACW,QACAA,MAAM,SAAS,KAAKF,cAAc,SAAS,IAC1CE,AAAmBrB,WAAnBqB,MAAM,QAAQ,IAAkBA,MAAM,QAAQ,KAAKF,cAAc,QAAQ;IAE7E,IAAIC,WAAW,MAAM,GAAG,GACvB,MAAM,IAAIJ,8BAA8BH,WAAWM,eAAeC;AAEpE;AAEO,SAASE,iBAAiBR,SAAoB,EAAES,KAAsB;IAC5E,MAAMC,eAAeD,MACnB,MAAM,CAAC,CAACE,OAASA,KAAK,SAAS,KAAKX,WACpC,GAAG,CAAC,CAACW,OAAU;YAAE,WAAWA,KAAK,SAAS;QAAC;IAC7C,IAAID,aAAa,MAAM,GAAG,GACzB,MAAM,IAAIR,8BAA8B,aAAa;QAAEF;IAAU,GAAGU;AAEtE;AAEO,SAASE,oBAAoBZ,SAAoB,EAAEa,SAA6B;IACtF,MAAMH,eAAeG,UACnB,MAAM,CAAC,CAACC,UAAYA,QAAQ,SAAS,KAAKd,WAC1C,GAAG,CAAC,CAACc,UAAa;YAClB,WAAWA,QAAQ,SAAS;YAC5B,GAAIA,AAAqB5B,WAArB4B,QAAQ,QAAQ,GAAiB,CAAC,IAAI;gBAAE,UAAUA,QAAQ,QAAQ;YAAC,CAAC;QACzE;IACD,IAAIJ,aAAa,MAAM,GAAG,GACzB,MAAM,IAAIR,8BAA8B,iBAAiB;QAAEF;IAAU,GAAGU;AAE1E;AAEO,SAASK,sBACfC,OAA2C,EAC3CtC,UAAkB,EAClBuC,UAA8B;IAE9B,MAAMlC,cAAc,IAAIC;IACxB,KAAK,MAAMkC,UAAUF,QAAS;QAC7B,IAAIjC,YAAY,GAAG,CAACmC,OAAO,EAAE,GAC5B,MAAM,IAAIvC,8BACTD,YACA,CAAC,UAAU,EAAEuC,WAAW,KAAK,EAAEC,OAAO,EAAE,CAAC,CAAC,CAAC;QAG7CnC,YAAY,GAAG,CAACmC,OAAO,EAAE;IAC1B;AACD;AAEO,SAASC,iBAAiBC,IAAY,EAAEC,KAAa;IAC3D,OAAOD,OAAOC,QAAQ,KAAKD,OAAOC,QAAQ,IAAI;AAC/C;AAEO,SAASC,qBACfF,IAAyD,EACzDC,KAA0D;IAE1D,OAAOD,KAAK,SAAS,GAAGC,MAAM,SAAS,IAAIF,iBAAiBC,KAAK,EAAE,EAAEC,MAAM,EAAE;AAC9E"}
@@ -0,0 +1,4 @@
1
+ import type { PersistenceBackend, SessionScopedPersistenceBackend, SessionScopedPersistenceOperation } from '../contracts/PersistenceBackend.js';
2
+ /** Require the complete scoped capability without falling back to legacy global operations. */
3
+ export declare function requireSessionScopedPersistence(backend: PersistenceBackend, operation: SessionScopedPersistenceOperation): SessionScopedPersistenceBackend;
4
+ //# sourceMappingURL=SessionScopedPersistence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionScopedPersistence.d.ts","sourceRoot":"","sources":["../../src/persistence/SessionScopedPersistence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,kBAAkB,EAClB,+BAA+B,EAC/B,iCAAiC,EACjC,MAAM,oCAAoC,CAAC;AAI5C,+FAA+F;AAC/F,wBAAgB,+BAA+B,CAC9C,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,iCAAiC,GAC1C,+BAA+B,CAKjC"}
@@ -0,0 +1,9 @@
1
+ import { supportsSessionScopedPersistence } from "../contracts/PersistenceBackend.js";
2
+ import { PersistenceCapabilityError } from "./PersistenceErrors.js";
3
+ function requireSessionScopedPersistence(backend, operation) {
4
+ if (!supportsSessionScopedPersistence(backend)) throw new PersistenceCapabilityError(operation);
5
+ return backend;
6
+ }
7
+ export { requireSessionScopedPersistence };
8
+
9
+ //# sourceMappingURL=SessionScopedPersistence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence/SessionScopedPersistence.js","sources":["../../src/persistence/SessionScopedPersistence.ts"],"sourcesContent":["import type {\n\tPersistenceBackend,\n\tSessionScopedPersistenceBackend,\n\tSessionScopedPersistenceOperation,\n} from '../contracts/PersistenceBackend.js';\nimport { supportsSessionScopedPersistence } from '../contracts/PersistenceBackend.js';\nimport { PersistenceCapabilityError } from './PersistenceErrors.js';\n\n/** Require the complete scoped capability without falling back to legacy global operations. */\nexport function requireSessionScopedPersistence(\n\tbackend: PersistenceBackend,\n\toperation: SessionScopedPersistenceOperation\n): SessionScopedPersistenceBackend {\n\tif (!supportsSessionScopedPersistence(backend)) {\n\t\tthrow new PersistenceCapabilityError(operation);\n\t}\n\treturn backend;\n}\n"],"names":["requireSessionScopedPersistence","backend","operation","supportsSessionScopedPersistence","PersistenceCapabilityError"],"mappings":";;AASO,SAASA,gCACfC,OAA2B,EAC3BC,SAA4C;IAE5C,IAAI,CAACC,iCAAiCF,UACrC,MAAM,IAAIG,2BAA2BF;IAEtC,OAAOD;AACR"}
@@ -0,0 +1,22 @@
1
+ export interface SqliteRunResult {
2
+ readonly changes: number;
3
+ readonly lastInsertRowid: number | bigint;
4
+ }
5
+ export interface SqliteStatement {
6
+ run(...params: readonly unknown[]): SqliteRunResult;
7
+ get(...params: readonly unknown[]): unknown;
8
+ all(...params: readonly unknown[]): unknown[];
9
+ }
10
+ export interface SqliteDatabase {
11
+ exec(sql: string): void;
12
+ prepare(sql: string): SqliteStatement;
13
+ close(): void;
14
+ pragma(pragma: string): unknown;
15
+ }
16
+ export type SqliteDatabaseConstructor = new (path: string, options?: {
17
+ readonly readonly?: boolean;
18
+ readonly fileMustExist?: boolean;
19
+ }) => SqliteDatabase;
20
+ export declare function runSqliteTransaction<T>(database: SqliteDatabase, operation: () => T): T;
21
+ export declare function runSqliteReadTransaction<T>(database: SqliteDatabase, operation: () => T): T;
22
+ //# sourceMappingURL=SqliteDriver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqliteDriver.d.ts","sourceRoot":"","sources":["../../src/persistence/SqliteDriver.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1C;AAED,MAAM,WAAW,eAAe;IAC/B,GAAG,CAAC,GAAG,MAAM,EAAE,SAAS,OAAO,EAAE,GAAG,eAAe,CAAC;IACpD,GAAG,CAAC,GAAG,MAAM,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5C,GAAG,CAAC,GAAG,MAAM,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;CAC9C;AAED,MAAM,WAAW,cAAc;IAC9B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAC;IACtC,KAAK,IAAI,IAAI,CAAC;IACd,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;CAChC;AAED,MAAM,MAAM,yBAAyB,GAAG,KACvC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,KACvE,cAAc,CAAC;AA8BpB,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,CAEvF;AAED,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,CAE3F"}
@@ -0,0 +1,29 @@
1
+ function runTransaction(database, beginStatement, operation) {
2
+ database.exec(beginStatement);
3
+ try {
4
+ const result = operation();
5
+ database.exec('COMMIT');
6
+ return result;
7
+ } catch (error) {
8
+ try {
9
+ database.exec('ROLLBACK');
10
+ } catch (rollbackError) {
11
+ throw new AggregateError([
12
+ error,
13
+ rollbackError
14
+ ], 'SQLite operation and rollback both failed', {
15
+ cause: rollbackError
16
+ });
17
+ }
18
+ throw error;
19
+ }
20
+ }
21
+ function runSqliteTransaction(database, operation) {
22
+ return runTransaction(database, 'BEGIN IMMEDIATE', operation);
23
+ }
24
+ function runSqliteReadTransaction(database, operation) {
25
+ return runTransaction(database, 'BEGIN', operation);
26
+ }
27
+ export { runSqliteReadTransaction, runSqliteTransaction };
28
+
29
+ //# sourceMappingURL=SqliteDriver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence/SqliteDriver.js","sources":["../../src/persistence/SqliteDriver.ts"],"sourcesContent":["export interface SqliteRunResult {\n\treadonly changes: number;\n\treadonly lastInsertRowid: number | bigint;\n}\n\nexport interface SqliteStatement {\n\trun(...params: readonly unknown[]): SqliteRunResult;\n\tget(...params: readonly unknown[]): unknown;\n\tall(...params: readonly unknown[]): unknown[];\n}\n\nexport interface SqliteDatabase {\n\texec(sql: string): void;\n\tprepare(sql: string): SqliteStatement;\n\tclose(): void;\n\tpragma(pragma: string): unknown;\n}\n\nexport type SqliteDatabaseConstructor = new (\n\tpath: string,\n\toptions?: { readonly readonly?: boolean; readonly fileMustExist?: boolean }\n) => SqliteDatabase;\n\ntype SqliteBeginStatement = 'BEGIN' | 'BEGIN IMMEDIATE';\n\nfunction runTransaction<T>(\n\tdatabase: SqliteDatabase,\n\tbeginStatement: SqliteBeginStatement,\n\toperation: () => T\n): T {\n\tdatabase.exec(beginStatement);\n\ttry {\n\t\tconst result = operation();\n\t\tdatabase.exec('COMMIT');\n\t\treturn result;\n\t} catch (error) {\n\t\ttry {\n\t\t\tdatabase.exec('ROLLBACK');\n\t\t} catch (rollbackError) {\n\t\t\tthrow new AggregateError(\n\t\t\t\t[error, rollbackError],\n\t\t\t\t'SQLite operation and rollback both failed',\n\t\t\t\t{\n\t\t\t\t\tcause: rollbackError,\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\tthrow error;\n\t}\n}\n\nexport function runSqliteTransaction<T>(database: SqliteDatabase, operation: () => T): T {\n\treturn runTransaction(database, 'BEGIN IMMEDIATE', operation);\n}\n\nexport function runSqliteReadTransaction<T>(database: SqliteDatabase, operation: () => T): T {\n\treturn runTransaction(database, 'BEGIN', operation);\n}\n"],"names":["runTransaction","database","beginStatement","operation","result","error","rollbackError","AggregateError","runSqliteTransaction","runSqliteReadTransaction"],"mappings":"AAyBA,SAASA,eACRC,QAAwB,EACxBC,cAAoC,EACpCC,SAAkB;IAElBF,SAAS,IAAI,CAACC;IACd,IAAI;QACH,MAAME,SAASD;QACfF,SAAS,IAAI,CAAC;QACd,OAAOG;IACR,EAAE,OAAOC,OAAO;QACf,IAAI;YACHJ,SAAS,IAAI,CAAC;QACf,EAAE,OAAOK,eAAe;YACvB,MAAM,IAAIC,eACT;gBAACF;gBAAOC;aAAc,EACtB,6CACA;gBACC,OAAOA;YACR;QAEF;QACA,MAAMD;IACP;AACD;AAEO,SAASG,qBAAwBP,QAAwB,EAAEE,SAAkB;IACnF,OAAOH,eAAeC,UAAU,mBAAmBE;AACpD;AAEO,SAASM,yBAA4BR,QAAwB,EAAEE,SAAkB;IACvF,OAAOH,eAAeC,UAAU,SAASE;AAC1C"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Imports an immutable SQLite v1 database into a separately published SQLite v2 destination.
3
+ *
4
+ * @param sourceDbPath - Existing frozen v1 source database opened read-only.
5
+ * @param destinationDbPath - Absent destination path atomically published after validation.
6
+ * @returns A promise that resolves after the validated v2 database is published.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * await importLegacySqliteV1('fixtures/legacy.db', 'output/history.db');
11
+ * ```
12
+ */
13
+ export declare function importLegacySqliteV1(sourceDbPath: string, destinationDbPath: string): Promise<void>;
14
+ //# sourceMappingURL=SqliteLegacyImport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqliteLegacyImport.d.ts","sourceRoot":"","sources":["../../src/persistence/SqliteLegacyImport.ts"],"names":[],"mappings":"AA6KA;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CACzC,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAAC,CAaf"}