@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,72 @@
1
+ import { getRequestId } from "../context/RequestContext.js";
2
+ class StructuredLogger {
3
+ _level;
4
+ _context;
5
+ _pretty;
6
+ static LEVEL_PRIORITY = {
7
+ debug: 0,
8
+ info: 1,
9
+ warn: 2,
10
+ error: 3
11
+ };
12
+ constructor(options = {}){
13
+ this._level = options.level ?? 'info';
14
+ this._context = options.context ?? 'SequentialThinking';
15
+ this._pretty = options.pretty ?? true;
16
+ }
17
+ shouldLog(level) {
18
+ return StructuredLogger.LEVEL_PRIORITY[level] >= StructuredLogger.LEVEL_PRIORITY[this._level];
19
+ }
20
+ format(entry) {
21
+ if (this._pretty) {
22
+ const metaStr = entry.meta ? ` ${JSON.stringify(entry.meta)}` : '';
23
+ const requestIdStr = entry.requestId ? ` [${entry.requestId}]` : '';
24
+ return `[${entry.timestamp}] [${entry.level.toUpperCase()}]${entry.context ? ` [${entry.context}]` : ''}${requestIdStr} ${entry.message}${metaStr}`;
25
+ }
26
+ return JSON.stringify(entry);
27
+ }
28
+ log(level, message, meta) {
29
+ if (!this.shouldLog(level)) return;
30
+ const requestId = getRequestId();
31
+ const entry = {
32
+ level,
33
+ message,
34
+ timestamp: new Date().toISOString(),
35
+ context: this._context,
36
+ meta,
37
+ ...requestId ? {
38
+ requestId
39
+ } : {}
40
+ };
41
+ const formatted = this.format(entry);
42
+ console.error(formatted);
43
+ }
44
+ debug(message, meta) {
45
+ this.log('debug', message, meta);
46
+ }
47
+ info(message, meta) {
48
+ this.log('info', message, meta);
49
+ }
50
+ warn(message, meta) {
51
+ this.log('warn', message, meta);
52
+ }
53
+ error(message, meta) {
54
+ this.log('error', message, meta);
55
+ }
56
+ createChild(context) {
57
+ return new StructuredLogger({
58
+ level: this._level,
59
+ context: `${this._context}:${context}`,
60
+ pretty: this._pretty
61
+ });
62
+ }
63
+ setLevel(level) {
64
+ this._level = level;
65
+ }
66
+ getLevel() {
67
+ return this._level;
68
+ }
69
+ }
70
+ export { StructuredLogger };
71
+
72
+ //# sourceMappingURL=StructuredLogger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger/StructuredLogger.js","sources":["../../src/logger/StructuredLogger.ts"],"sourcesContent":["/**\n * Lightweight structured logging without external dependencies.\n *\n * This module provides a structured logging implementation that writes to stderr\n * for MCP server compatibility. It supports multiple log levels, pretty printing,\n * and hierarchical child loggers with inherited context.\n *\n * @module logger\n */\n\nimport { getRequestId } from '../context/RequestContext.js';\n\n/**\n * Log level severity ordering.\n *\n * Levels are ordered from least severe (debug) to most severe (error).\n * Only messages at or above the configured level will be logged.\n */\nexport type LogLevel = 'debug' | 'info' | 'warn' | 'error';\n\n/**\n * Common logger interface for all logger implementations.\n *\n * This interface defines the contract that all loggers must implement,\n * allowing them to be used interchangeably throughout the application.\n */\nexport interface Logger {\n\t/**\n\t * Log a debug message.\n\t * @param message - The message to log\n\t * @param meta - Optional structured metadata\n\t */\n\tdebug(message: string, meta?: Record<string, unknown>): void;\n\n\t/**\n\t * Log an info message.\n\t * @param message - The message to log\n\t * @param meta - Optional structured metadata\n\t */\n\tinfo(message: string, meta?: Record<string, unknown>): void;\n\n\t/**\n\t * Log a warning message.\n\t * @param message - The message to log\n\t * @param meta - Optional structured metadata\n\t */\n\twarn(message: string, meta?: Record<string, unknown>): void;\n\n\t/**\n\t * Log an error message.\n\t * @param message - The message to log\n\t * @param meta - Optional structured metadata\n\t */\n\terror(message: string, meta?: Record<string, unknown>): void;\n\n\t/**\n\t * Sets the minimum log level.\n\t * @param level - The new minimum log level\n\t */\n\tsetLevel(level: LogLevel): void;\n\n\t/**\n\t * Gets the current minimum log level.\n\t * @returns The current log level\n\t */\n\tgetLevel(): LogLevel;\n}\n\n/**\n * A single log entry with all relevant metadata.\n *\n * @example\n * ```typescript\n * const entry: LogEntry = {\n * level: 'info',\n * message: 'Server started',\n * timestamp: '2026-01-18T10:30:00.000Z',\n * context: 'SequentialThinking',\n * meta: { port: 3000 }\n * };\n * ```\n */\nexport interface LogEntry {\n\t/** Severity level of the log entry. */\n\treadonly level: LogLevel;\n\n\t/** The primary log message. */\n\treadonly message: string;\n\n\t/** ISO 8601 timestamp of when the log was created. */\n\treadonly timestamp: string;\n\n\t/** Optional context/module name for categorization. */\n\treadonly context?: string;\n\n\t/** Optional request correlation ID for tracing. */\n\treadonly requestId?: string;\n\n\t/** Additional structured metadata to include with the log. */\n\treadonly meta?: Record<string, unknown>;\n}\n\n/**\n * Configuration options for creating a `StructuredLogger` instance.\n *\n * @example\n * ```typescript\n * const options: LoggerOptions = {\n * level: 'debug',\n * context: 'MyModule',\n * pretty: true\n * };\n * ```\n */\nexport interface LoggerOptions {\n\t/**\n\t * Minimum log level to output.\n\t * Messages below this level will be suppressed.\n\t * @default 'info'\n\t */\n\tlevel?: LogLevel;\n\n\t/**\n\t * Default context for log messages.\n\t * Can be extended with child loggers.\n\t * @default 'SequentialThinking'\n\t */\n\tcontext?: string;\n\n\t/**\n\t * Whether to enable pretty (human-readable) output.\n\t * When false, outputs JSON-formatted logs.\n\t * @default true\n\t */\n\tpretty?: boolean;\n}\n\n/**\n * Structured logger with level filtering and context support.\n *\n * This logger provides structured logging capabilities with configurable\n * output formats, log levels, and hierarchical context. All output is\n * written to stderr for compatibility with MCP servers.\n *\n * @remarks\n * **Log Level Priority** (lowest to highest):\n * - `debug` (0) - Detailed debugging information\n * - `info` (1) - General informational messages\n * - `warn` (2) - Warning messages for potential issues\n * - `error` (3) - Error messages for failures\n *\n * Only messages at or above the configured level will be output.\n *\n * **Output Formats:**\n * - Pretty (default): `[timestamp] [LEVEL] [context] message {meta}`\n * - JSON: `{\"level\":\"info\",\"message\":\"...\",\"timestamp\":\"...\",\"context\":\"...\",\"meta\":{...}}`\n *\n * @example\n * ```typescript\n * // Create a logger\n * const logger = new StructuredLogger({\n * level: 'info',\n * context: 'SequentialThinking',\n * pretty: true\n * });\n *\n * // Log messages\n * logger.debug('Detailed debug info', { userId: '123' });\n * logger.info('Server started', { port: 3000 });\n * logger.warn('High memory usage', { usage: '85%' });\n * logger.error('Connection failed', { error: 'ECONNREFUSED' });\n *\n * // Create a child logger with extended context\n * const childLogger = logger.createChild('Database');\n * childLogger.info('Query executed', { rows: 42 });\n * // Output: [timestamp] [INFO] [SequentialThinking:Database] Query executed {\"rows\":42}\n * ```\n */\nexport class StructuredLogger {\n\t/** Current minimum log level. */\n\tprivate _level: LogLevel;\n\n\t/** Default context for log messages. */\n\tprivate _context: string;\n\n\t/** Whether pretty printing is enabled. */\n\tprivate _pretty: boolean;\n\n\t/**\n\t * Log level priority ordering for filtering.\n\t * Higher numbers = higher severity.\n\t * @private\n\t */\n\tprivate static readonly LEVEL_PRIORITY: Record<LogLevel, number> = {\n\t\tdebug: 0,\n\t\tinfo: 1,\n\t\twarn: 2,\n\t\terror: 3,\n\t};\n\n\t/**\n\t * Creates a new StructuredLogger instance.\n\t *\n\t * @param options - Configuration options for the logger\n\t *\n\t * @example\n\t * ```typescript\n\t * // Default configuration\n\t * const logger1 = new StructuredLogger();\n\t *\n\t * // Custom configuration\n\t * const logger2 = new StructuredLogger({\n\t * level: 'debug',\n\t * context: 'MyApp',\n\t * pretty: false // JSON output\n\t * });\n\t * ```\n\t */\n\tconstructor(options: LoggerOptions = {}) {\n\t\tthis._level = options.level ?? 'info';\n\t\tthis._context = options.context ?? 'SequentialThinking';\n\t\tthis._pretty = options.pretty ?? true;\n\t}\n\n\t/**\n\t * Determines whether a message at the given level should be logged.\n\t * @param level - The log level to check\n\t * @returns true if the level meets the threshold, false otherwise\n\t * @private\n\t */\n\tprivate shouldLog(level: LogLevel): boolean {\n\t\treturn StructuredLogger.LEVEL_PRIORITY[level] >= StructuredLogger.LEVEL_PRIORITY[this._level];\n\t}\n\n\t/**\n\t * Formats a log entry for output.\n\t * @param entry - The log entry to format\n\t * @returns Formatted string representation\n\t * @private\n\t */\n\tprivate format(entry: LogEntry): string {\n\t\tif (this._pretty) {\n\t\t\tconst metaStr = entry.meta ? ` ${JSON.stringify(entry.meta)}` : '';\n\t\t\tconst requestIdStr = entry.requestId ? ` [${entry.requestId}]` : '';\n\t\t\treturn `[${entry.timestamp}] [${entry.level.toUpperCase()}]${entry.context ? ` [${entry.context}]` : ''}${requestIdStr} ${entry.message}${metaStr}`;\n\t\t}\n\t\treturn JSON.stringify(entry);\n\t}\n\n\t/**\n\t * Internal logging method that handles level filtering and output.\n\t * @param level - The log level for this message\n\t * @param message - The message to log\n\t * @param meta - Optional structured metadata\n\t * @private\n\t */\n\tprivate log(level: LogLevel, message: string, meta?: Record<string, unknown>): void {\n\t\tif (!this.shouldLog(level)) return;\n\n\t\tconst requestId = getRequestId();\n\n\t\tconst entry: LogEntry = {\n\t\t\tlevel,\n\t\t\tmessage,\n\t\t\ttimestamp: new Date().toISOString(),\n\t\t\tcontext: this._context,\n\t\t\tmeta,\n\t\t\t...(requestId ? { requestId } : {}),\n\t\t};\n\n\t\tconst formatted = this.format(entry);\n\n\t\t// Write to stderr for MCP server compatibility\n\t\tconsole.error(formatted);\n\t}\n\n\t/**\n\t * Log a debug message.\n\t *\n\t * Debug messages contain detailed information typically used for\n\t * troubleshooting and development. Only output when log level is 'debug'.\n\t *\n\t * @param message - The message to log\n\t * @param meta - Optional structured metadata\n\t *\n\t * @example\n\t * ```typescript\n\t * logger.debug('Processing request', { path: '/api/users', method: 'GET' });\n\t * ```\n\t */\n\tdebug(message: string, meta?: Record<string, unknown>): void {\n\t\tthis.log('debug', message, meta);\n\t}\n\n\t/**\n\t * Log an info message.\n\t *\n\t * Info messages contain general informational messages about normal operation.\n\t * Output when log level is 'info' or lower.\n\t *\n\t * @param message - The message to log\n\t * @param meta - Optional structured metadata\n\t *\n\t * @example\n\t * ```typescript\n\t * logger.info('Server started', { port: 3000, env: 'production' });\n\t * ```\n\t */\n\tinfo(message: string, meta?: Record<string, unknown>): void {\n\t\tthis.log('info', message, meta);\n\t}\n\n\t/**\n\t * Log a warning message.\n\t *\n\t * Warning messages indicate potential issues that don't prevent operation\n\t * but may require attention. Output when log level is 'warn' or lower.\n\t *\n\t * @param message - The message to log\n\t * @param meta - Optional structured metadata\n\t *\n\t * @example\n\t * ```typescript\n\t * logger.warn('High memory usage detected', { usage: '85%', threshold: '80%' });\n\t * ```\n\t */\n\twarn(message: string, meta?: Record<string, unknown>): void {\n\t\tthis.log('warn', message, meta);\n\t}\n\n\t/**\n\t * Log an error message.\n\t *\n\t * Error messages indicate failures or error conditions. Always output\n\t * regardless of log level setting.\n\t *\n\t * @param message - The message to log\n\t * @param meta - Optional structured metadata\n\t *\n\t * @example\n\t * ```typescript\n\t * logger.error('Database connection failed', { error: err.message, code: err.code });\n\t * ```\n\t */\n\terror(message: string, meta?: Record<string, unknown>): void {\n\t\tthis.log('error', message, meta);\n\t}\n\n\t/**\n\t * Creates a child logger with inherited settings and extended context.\n\t *\n\t * Child loggers inherit the parent's log level and pretty print setting,\n\t * but have their context appended to the parent's context for hierarchical logging.\n\t *\n\t * @param context - Additional context to append to the parent's context\n\t * @returns A new logger instance with extended context\n\t *\n\t * @example\n\t * ```typescript\n\t * const parentLogger = new StructuredLogger({ context: 'App' });\n\t * const dbLogger = parentLogger.createChild('Database');\n\t * const queryLogger = dbLogger.createChild('Query');\n\t *\n\t * parentLogger.info('Starting up');\n\t * // Output: [timestamp] [INFO] [App] Starting up\n\t *\n\t * dbLogger.info('Connected');\n\t * // Output: [timestamp] [INFO] [App:Database] Connected\n\t *\n\t * queryLogger.info('Executed in 5ms');\n\t * // Output: [timestamp] [INFO] [App:Database:Query] Executed in 5ms\n\t * ```\n\t */\n\tcreateChild(context: string): StructuredLogger {\n\t\treturn new StructuredLogger({\n\t\t\tlevel: this._level,\n\t\t\tcontext: `${this._context}:${context}`,\n\t\t\tpretty: this._pretty,\n\t\t});\n\t}\n\n\t/**\n\t * Sets the minimum log level.\n\t *\n\t * Only messages at or above this level will be output.\n\t *\n\t * @param level - The new minimum log level\n\t *\n\t * @example\n\t * ```typescript\n\t * logger.setLevel('debug'); // Enable all logging\n\t * logger.setLevel('error'); // Only show errors\n\t * ```\n\t */\n\tsetLevel(level: LogLevel): void {\n\t\tthis._level = level;\n\t}\n\n\t/**\n\t * Gets the current minimum log level.\n\t *\n\t * @returns The current log level\n\t *\n\t * @example\n\t * ```typescript\n\t * const currentLevel = logger.getLevel();\n\t * console.log(`Current level: ${currentLevel}`);\n\t * ```\n\t */\n\tgetLevel(): LogLevel {\n\t\treturn this._level;\n\t}\n}\n"],"names":["StructuredLogger","options","level","entry","metaStr","JSON","requestIdStr","message","meta","requestId","getRequestId","Date","formatted","console","context"],"mappings":";AAkLO,MAAMA;IAEJ,OAAiB;IAGjB,SAAiB;IAGjB,QAAiB;IAOzB,OAAwB,iBAA2C;QAClE,OAAO;QACP,MAAM;QACN,MAAM;QACN,OAAO;IACR,EAAE;IAoBF,YAAYC,UAAyB,CAAC,CAAC,CAAE;QACxC,IAAI,CAAC,MAAM,GAAGA,QAAQ,KAAK,IAAI;QAC/B,IAAI,CAAC,QAAQ,GAAGA,QAAQ,OAAO,IAAI;QACnC,IAAI,CAAC,OAAO,GAAGA,QAAQ,MAAM,IAAI;IAClC;IAQQ,UAAUC,KAAe,EAAW;QAC3C,OAAOF,iBAAiB,cAAc,CAACE,MAAM,IAAIF,iBAAiB,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;IAC9F;IAQQ,OAAOG,KAAe,EAAU;QACvC,IAAI,IAAI,CAAC,OAAO,EAAE;YACjB,MAAMC,UAAUD,MAAM,IAAI,GAAG,CAAC,CAAC,EAAEE,KAAK,SAAS,CAACF,MAAM,IAAI,GAAG,GAAG;YAChE,MAAMG,eAAeH,MAAM,SAAS,GAAG,CAAC,EAAE,EAAEA,MAAM,SAAS,CAAC,CAAC,CAAC,GAAG;YACjE,OAAO,CAAC,CAAC,EAAEA,MAAM,SAAS,CAAC,GAAG,EAAEA,MAAM,KAAK,CAAC,WAAW,GAAG,CAAC,EAAEA,MAAM,OAAO,GAAG,CAAC,EAAE,EAAEA,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,KAAKG,aAAa,CAAC,EAAEH,MAAM,OAAO,GAAGC,SAAS;QACpJ;QACA,OAAOC,KAAK,SAAS,CAACF;IACvB;IASQ,IAAID,KAAe,EAAEK,OAAe,EAAEC,IAA8B,EAAQ;QACnF,IAAI,CAAC,IAAI,CAAC,SAAS,CAACN,QAAQ;QAE5B,MAAMO,YAAYC;QAElB,MAAMP,QAAkB;YACvBD;YACAK;YACA,WAAW,IAAII,OAAO,WAAW;YACjC,SAAS,IAAI,CAAC,QAAQ;YACtBH;YACA,GAAIC,YAAY;gBAAEA;YAAU,IAAI,CAAC,CAAC;QACnC;QAEA,MAAMG,YAAY,IAAI,CAAC,MAAM,CAACT;QAG9BU,QAAQ,KAAK,CAACD;IACf;IAgBA,MAAML,OAAe,EAAEC,IAA8B,EAAQ;QAC5D,IAAI,CAAC,GAAG,CAAC,SAASD,SAASC;IAC5B;IAgBA,KAAKD,OAAe,EAAEC,IAA8B,EAAQ;QAC3D,IAAI,CAAC,GAAG,CAAC,QAAQD,SAASC;IAC3B;IAgBA,KAAKD,OAAe,EAAEC,IAA8B,EAAQ;QAC3D,IAAI,CAAC,GAAG,CAAC,QAAQD,SAASC;IAC3B;IAgBA,MAAMD,OAAe,EAAEC,IAA8B,EAAQ;QAC5D,IAAI,CAAC,GAAG,CAAC,SAASD,SAASC;IAC5B;IA2BA,YAAYM,OAAe,EAAoB;QAC9C,OAAO,IAAId,iBAAiB;YAC3B,OAAO,IAAI,CAAC,MAAM;YAClB,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAEc,SAAS;YACtC,QAAQ,IAAI,CAAC,OAAO;QACrB;IACD;IAeA,SAASZ,KAAe,EAAQ;QAC/B,IAAI,CAAC,MAAM,GAAGA;IACf;IAaA,WAAqB;QACpB,OAAO,IAAI,CAAC,MAAM;IACnB;AACD"}
@@ -0,0 +1,252 @@
1
+ /**
2
+ * Prometheus-compatible metrics collection.
3
+ *
4
+ * This module provides metrics collection and export in Prometheus text format.
5
+ * Supports counters, gauges, and histograms for observability.
6
+ *
7
+ * @module metrics
8
+ */
9
+ /**
10
+ * Metric types supported by the metrics collector.
11
+ */
12
+ export declare enum MetricType {
13
+ /** Counter - a cumulative metric that only increases */
14
+ Counter = "counter",
15
+ /** Gauge - a metric that can go up and down */
16
+ Gauge = "gauge",
17
+ /** Histogram - a metric for sampling observations */
18
+ Histogram = "histogram"
19
+ }
20
+ /**
21
+ * A collected metric with its value and labels.
22
+ */
23
+ export interface Metric {
24
+ /** Name of the metric */
25
+ name: string;
26
+ /** Type of metric (counter, gauge, histogram) */
27
+ type: MetricType;
28
+ /** Current value */
29
+ value: number;
30
+ /** Labels for the metric */
31
+ labels: Record<string, string>;
32
+ /** Help text describing the metric */
33
+ help?: string;
34
+ /** Timestamp when metric was recorded (Unix epoch) */
35
+ timestamp?: number;
36
+ }
37
+ /**
38
+ * Prometheus-compatible metrics collector.
39
+ *
40
+ * Collects and exports metrics in Prometheus text format for scraping.
41
+ * Thread-safe and supports counters, gauges, and histograms.
42
+ *
43
+ * @remarks
44
+ * **Metric Types:**
45
+ * - **Counter**: Cumulative value that only increases (e.g., request counts)
46
+ * - **Gauge**: Value that can go up or down (e.g., active connections)
47
+ * - **Histogram**: Sampling observations (e.g., request latency)
48
+ *
49
+ * **Labels:**
50
+ * Metrics can have labels for dimensional data:
51
+ * ```typescript
52
+ * counter('http_requests_total', { method: 'GET', status: '200' });
53
+ * ```
54
+ *
55
+ * **Export Format:**
56
+ * Metrics are exported in Prometheus text format:
57
+ * ```
58
+ * # HELP http_requests_total Total HTTP requests
59
+ * # TYPE http_requests_total counter
60
+ * http_requests_total{method="GET",status="200"} 1234
61
+ * ```
62
+ *
63
+ * @example
64
+ * ```typescript
65
+ * const metrics = new Metrics({ prefix: 'mcp_server' });
66
+ *
67
+ * // Count requests
68
+ * metrics.counter('requests_total', { method: 'GET' }).inc();
69
+ *
70
+ * // Track active connections
71
+ * const activeConnections = metrics.gauge('active_connections');
72
+ * activeConnections.set(5);
73
+ * activeConnections.dec();
74
+ *
75
+ * // Record latency
76
+ * metrics.histogram('request_duration_seconds').observe(0.023);
77
+ *
78
+ * // Export for Prometheus
79
+ * const prometheusText = metrics.export();
80
+ * ```
81
+ */
82
+ export declare class Metrics {
83
+ /** Metrics storage indexed by name and label hash */
84
+ private _metrics;
85
+ /** Histogram samples */
86
+ private _histograms;
87
+ /** Prefix for all metric names */
88
+ private _prefix;
89
+ /** Default labels to apply to all metrics */
90
+ private _defaultLabels;
91
+ /** Counter for metric collection operations */
92
+ private _operationsCounter;
93
+ /**
94
+ * Creates a new Metrics instance.
95
+ *
96
+ * @param options - Configuration options
97
+ *
98
+ * @example
99
+ * ```typescript
100
+ * const metrics = new Metrics({ prefix: 'mcp_server' });
101
+ * ```
102
+ */
103
+ constructor(options?: {
104
+ prefix?: string;
105
+ defaultLabels?: Record<string, string>;
106
+ });
107
+ /**
108
+ * Creates a counter metric.
109
+ *
110
+ * @param name - Metric name
111
+ * @param value - Increment value (default: 1)
112
+ * @param labels - Optional labels
113
+ * @param help - Help text
114
+ *
115
+ * @example
116
+ * ```typescript
117
+ * metrics.counter('requests_total', 1, { method: 'GET' });
118
+ * metrics.counter('errors_total', 1, { type: 'timeout' });
119
+ * ```
120
+ */
121
+ counter(name: string, value?: number, labels?: Record<string, string>, help?: string): void;
122
+ /**
123
+ * Creates a gauge metric.
124
+ *
125
+ * @param name - Metric name
126
+ * @param value - Current value
127
+ * @param labels - Optional labels
128
+ * @param help - Help text
129
+ *
130
+ * @example
131
+ * ```typescript
132
+ * const activeConnections = metrics.gauge('active_connections');
133
+ * activeConnections.set(5);
134
+ * activeConnections.dec();
135
+ * ```
136
+ */
137
+ gauge(name: string, value: number, labels?: Record<string, string>, help?: string): void;
138
+ /**
139
+ * Records a histogram observation.
140
+ *
141
+ * @param name - Histogram name
142
+ * @param value - Observed value
143
+ * @param labels - Optional labels
144
+ * @param help - Help text
145
+ * @param buckets - Custom bucket boundaries
146
+ *
147
+ * @example
148
+ * ```typescript
149
+ * metrics.histogram('request_duration_seconds').observe(0.023);
150
+ * metrics.histogram('thought_processing_ms').observe(45);
151
+ * ```
152
+ */
153
+ histogram(name: string, value: number, labels?: Record<string, string>, buckets?: number[]): void;
154
+ /**
155
+ * Gets the current value of a metric.
156
+ *
157
+ * @param name - Metric name
158
+ * @param labels - Labels
159
+ * @returns Current value or undefined if not found
160
+ *
161
+ * @example
162
+ * ```typescript
163
+ * const count = metrics.get('requests_total', { method: 'GET' });
164
+ * ```
165
+ */
166
+ get(name: string, labels?: Record<string, string>): number | undefined;
167
+ /**
168
+ * Increments a counter by 1.
169
+ *
170
+ * @param name - Metric name
171
+ * @param labels - Optional labels
172
+ *
173
+ * @example
174
+ * ```typescript
175
+ * metrics.inc('requests_total', { method: 'GET' });
176
+ * ```
177
+ */
178
+ inc(name: string, labels?: Record<string, string>): void;
179
+ /**
180
+ * Decrements a gauge by 1.
181
+ *
182
+ * @param name - Metric name
183
+ * @param labels - Optional labels
184
+ *
185
+ * @example
186
+ * ```typescript
187
+ * metrics.dec('active_connections');
188
+ * ```
189
+ */
190
+ dec(name: string, labels?: Record<string, string>): void;
191
+ /**
192
+ * Resets all metrics to zero.
193
+ * Useful for testing or on server restart.
194
+ *
195
+ * @example
196
+ * ```typescript
197
+ * metrics.reset();
198
+ * ```
199
+ */
200
+ reset(): void;
201
+ /**
202
+ * Gets the number of metric operations performed.
203
+ * Useful for testing.
204
+ *
205
+ * @returns Operation count
206
+ *
207
+ * @example
208
+ * ```typescript
209
+ * const ops = metrics.getOperationCount();
210
+ * ```
211
+ */
212
+ getOperationCount(): number;
213
+ /**
214
+ * Exports metrics in Prometheus text format.
215
+ *
216
+ * @returns Prometheus text format string
217
+ *
218
+ * @example
219
+ * ```typescript
220
+ * const prometheusText = metrics.export();
221
+ * console.log(prometheusText);
222
+ * // Output:
223
+ * // # HELP http_requests_total Total HTTP requests
224
+ * // # TYPE http_requests_total counter
225
+ * // http_requests_total{method="GET",status="200"} 1234
226
+ * ```
227
+ */
228
+ export(): string;
229
+ /**
230
+ * Gets metric name with prefix.
231
+ * @param name - Metric name
232
+ * @returns Full metric name
233
+ * @private
234
+ */
235
+ private _fullName;
236
+ /**
237
+ * Creates a unique key for a metric with labels.
238
+ * @param name - Metric name
239
+ * @param labels - Labels
240
+ * @returns Unique key
241
+ * @private
242
+ */
243
+ private _metricKey;
244
+ /**
245
+ * Parses a metric key back into name and labels.
246
+ * @param key - Metric key
247
+ * @returns Name and labels
248
+ * @private
249
+ */
250
+ private _parseMetricKey;
251
+ }
252
+ //# sourceMappingURL=metrics.impl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.impl.d.ts","sourceRoot":"","sources":["../../src/metrics/metrics.impl.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,oBAAY,UAAU;IACrB,wDAAwD;IACxD,OAAO,YAAY;IAEnB,+CAA+C;IAC/C,KAAK,UAAU;IAEf,qDAAqD;IACrD,SAAS,cAAc;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACtB,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IAEb,iDAAiD;IACjD,IAAI,EAAE,UAAU,CAAC;IAEjB,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IAEd,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE/B,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAOD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,qBAAa,OAAO;IACnB,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAsB;IAEtC,wBAAwB;IACxB,OAAO,CAAC,WAAW,CAA4E;IAE/F,kCAAkC;IAClC,OAAO,CAAC,OAAO,CAAS;IAExB,6CAA6C;IAC7C,OAAO,CAAC,cAAc,CAAyB;IAE/C,+CAA+C;IAC/C,OAAO,CAAC,kBAAkB,CAAa;IAEvC;;;;;;;;;OASG;gBACS,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAO;IAOrF;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAI,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAuB1F;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAe5F;;;;;;;;;;;;;;OAcG;IACH,SAAS,CACR,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACnC,OAAO,WAAkB,GACvB,IAAI;IAgCP;;;;;;;;;;;OAWG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,MAAM,GAAG,SAAS;IAO1E;;;;;;;;;;OAUG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAIxD;;;;;;;;;;OAUG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAKxD;;;;;;;;OAQG;IACH,KAAK,IAAI,IAAI;IAMb;;;;;;;;;;OAUG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;;;;;;;;;;;;;OAcG;IACH,MAAM,IAAI,MAAM;IAiEhB;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IASjB;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;IAQlB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;CAyBvB"}
@@ -0,0 +1,197 @@
1
+ var metrics_impl_MetricType = /*#__PURE__*/ function(MetricType) {
2
+ MetricType["Counter"] = "counter";
3
+ MetricType["Gauge"] = "gauge";
4
+ MetricType["Histogram"] = "histogram";
5
+ return MetricType;
6
+ }({});
7
+ const DEFAULT_BUCKETS = [
8
+ 0.005,
9
+ 0.01,
10
+ 0.025,
11
+ 0.05,
12
+ 0.1,
13
+ 0.25,
14
+ 0.5,
15
+ 1,
16
+ 2.5,
17
+ 5,
18
+ 10
19
+ ];
20
+ class Metrics {
21
+ _metrics;
22
+ _histograms;
23
+ _prefix;
24
+ _defaultLabels;
25
+ _operationsCounter = 0;
26
+ constructor(options = {}){
27
+ this._metrics = new Map();
28
+ this._histograms = new Map();
29
+ this._prefix = options.prefix ?? '';
30
+ this._defaultLabels = options.defaultLabels ?? {};
31
+ }
32
+ counter(name, value = 1, labels = {}, help) {
33
+ const fullName = this._fullName(name);
34
+ const allLabels = {
35
+ ...this._defaultLabels,
36
+ ...labels
37
+ };
38
+ const key = this._metricKey(fullName, allLabels);
39
+ const existing = this._metrics.get(key);
40
+ if (existing) {
41
+ existing.value += value;
42
+ if (help && !existing.help) existing.help = help;
43
+ } else this._metrics.set(key, {
44
+ name: fullName,
45
+ type: "counter",
46
+ value,
47
+ labels: allLabels,
48
+ help
49
+ });
50
+ this._operationsCounter++;
51
+ }
52
+ gauge(name, value, labels = {}, help) {
53
+ const fullName = this._fullName(name);
54
+ const allLabels = {
55
+ ...this._defaultLabels,
56
+ ...labels
57
+ };
58
+ const key = this._metricKey(fullName, allLabels);
59
+ const existing = this._metrics.get(key);
60
+ this._metrics.set(key, {
61
+ name: fullName,
62
+ type: "gauge",
63
+ value,
64
+ labels: allLabels,
65
+ help: help ?? existing?.help
66
+ });
67
+ this._operationsCounter++;
68
+ }
69
+ histogram(name, value, labels = {}, buckets = DEFAULT_BUCKETS) {
70
+ const fullName = this._fullName(name);
71
+ const allLabels = {
72
+ ...this._defaultLabels,
73
+ ...labels
74
+ };
75
+ const key = this._metricKey(fullName, allLabels);
76
+ const histogram = this._histograms.get(key);
77
+ if (histogram) {
78
+ histogram.sum += value;
79
+ histogram.count += 1;
80
+ for (const boundary of buckets)if (value <= boundary) histogram.buckets.set(boundary, (histogram.buckets.get(boundary) ?? 0) + 1);
81
+ else histogram.buckets.set(boundary, histogram.buckets.get(boundary) ?? 0);
82
+ histogram.buckets.set(1 / 0, (histogram.buckets.get(1 / 0) ?? 0) + 1);
83
+ } else {
84
+ const histogramData = {
85
+ sum: value,
86
+ count: 1,
87
+ buckets: new Map()
88
+ };
89
+ for (const boundary of buckets)histogramData.buckets.set(boundary, value <= boundary ? 1 : 0);
90
+ histogramData.buckets.set(1 / 0, 1);
91
+ this._histograms.set(key, histogramData);
92
+ }
93
+ this._operationsCounter++;
94
+ }
95
+ get(name, labels = {}) {
96
+ const fullName = this._fullName(name);
97
+ const allLabels = {
98
+ ...this._defaultLabels,
99
+ ...labels
100
+ };
101
+ const key = this._metricKey(fullName, allLabels);
102
+ return this._metrics.get(key)?.value;
103
+ }
104
+ inc(name, labels) {
105
+ this.counter(name, 1, labels);
106
+ }
107
+ dec(name, labels) {
108
+ const value = this.get(name, labels) ?? 0;
109
+ this.gauge(name, value - 1, labels);
110
+ }
111
+ reset() {
112
+ this._metrics.clear();
113
+ this._histograms.clear();
114
+ this._operationsCounter = 0;
115
+ }
116
+ getOperationCount() {
117
+ return this._operationsCounter;
118
+ }
119
+ export() {
120
+ const lines = [];
121
+ const metrics = Array.from(this._metrics.values());
122
+ const histograms = Array.from(this._histograms.entries());
123
+ const helpEntries = new Map();
124
+ const typeEntries = new Map();
125
+ for (const metric of metrics){
126
+ if (!helpEntries.has(metric.name)) {
127
+ const helpText = metric.help ?? `${metric.name} metric`;
128
+ lines.push(`# HELP ${metric.name} ${helpText}`);
129
+ helpEntries.set(metric.name, helpText);
130
+ }
131
+ if (!typeEntries.has(metric.name)) {
132
+ lines.push(`# TYPE ${metric.name} ${metric.type}`);
133
+ typeEntries.set(metric.name, metric.type);
134
+ }
135
+ const labelStr = Object.entries(metric.labels).map(([k, v])=>`${k}="${v}"`).join(',');
136
+ lines.push(`${metric.name}{${labelStr}} ${metric.value}`);
137
+ }
138
+ for (const [key, histogram] of histograms){
139
+ const { name: fullName, labels } = this._parseMetricKey(key);
140
+ if (histogram.count > 0) {
141
+ if (!typeEntries.has(fullName)) {
142
+ lines.push(`# TYPE ${fullName} histogram`);
143
+ typeEntries.set(fullName, "histogram");
144
+ }
145
+ const labelStr = Object.entries(labels).map(([k, v])=>`${k}="${v}"`).join(',');
146
+ const formatMetricLine = (suffix, value)=>{
147
+ if (0 === labelStr.length) return `${fullName}${suffix} ${value}`;
148
+ return `${fullName}${suffix}{${labelStr}} ${value}`;
149
+ };
150
+ lines.push(formatMetricLine('_sum', histogram.sum));
151
+ lines.push(formatMetricLine('_count', histogram.count));
152
+ for (const [boundary, count] of histogram.buckets.entries()){
153
+ const boundaryLabel = 1 / 0 === boundary ? '+Inf' : Number.isFinite(boundary) ? String(boundary) : String(boundary);
154
+ const bucketLabels = 0 === labelStr.length ? `le="${boundaryLabel}"` : `${labelStr},le="${boundaryLabel}"`;
155
+ lines.push(`${fullName}_bucket{${bucketLabels}} ${count}`);
156
+ }
157
+ }
158
+ }
159
+ return lines.join('\n');
160
+ }
161
+ _fullName(name) {
162
+ if (!this._prefix) return name;
163
+ const prefix = `${this._prefix}_`;
164
+ return name.startsWith(prefix) ? name : `${prefix}${name}`;
165
+ }
166
+ _metricKey(name, labels) {
167
+ const sortedLabels = Object.entries(labels).sort(([a], [b])=>a.localeCompare(b)).map(([k, v])=>`${k}=${v}`).join(',');
168
+ return `${name}{${sortedLabels}}`;
169
+ }
170
+ _parseMetricKey(key) {
171
+ const match = key.match(/^([^{}]+)\{([^{}]*)\}$/);
172
+ if (!match) return {
173
+ name: key,
174
+ labels: {}
175
+ };
176
+ const [, name, labelsPart] = match;
177
+ if (!labelsPart) return {
178
+ name,
179
+ labels: {}
180
+ };
181
+ const labels = {};
182
+ for (const label of labelsPart.split(',')){
183
+ const separatorIndex = label.indexOf('=');
184
+ if (separatorIndex <= 0) continue;
185
+ const labelKey = label.slice(0, separatorIndex);
186
+ const labelValue = label.slice(separatorIndex + 1);
187
+ labels[labelKey] = labelValue;
188
+ }
189
+ return {
190
+ name,
191
+ labels
192
+ };
193
+ }
194
+ }
195
+ export { Metrics, metrics_impl_MetricType as MetricType };
196
+
197
+ //# sourceMappingURL=metrics.impl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics/metrics.impl.js","sources":["../../src/metrics/metrics.impl.ts"],"sourcesContent":["/**\n * Prometheus-compatible metrics collection.\n *\n * This module provides metrics collection and export in Prometheus text format.\n * Supports counters, gauges, and histograms for observability.\n *\n * @module metrics\n */\n\n/**\n * Metric types supported by the metrics collector.\n */\nexport enum MetricType {\n\t/** Counter - a cumulative metric that only increases */\n\tCounter = 'counter',\n\n\t/** Gauge - a metric that can go up and down */\n\tGauge = 'gauge',\n\n\t/** Histogram - a metric for sampling observations */\n\tHistogram = 'histogram',\n}\n\n/**\n * A collected metric with its value and labels.\n */\nexport interface Metric {\n\t/** Name of the metric */\n\tname: string;\n\n\t/** Type of metric (counter, gauge, histogram) */\n\ttype: MetricType;\n\n\t/** Current value */\n\tvalue: number;\n\n\t/** Labels for the metric */\n\tlabels: Record<string, string>;\n\n\t/** Help text describing the metric */\n\thelp?: string;\n\n\t/** Timestamp when metric was recorded (Unix epoch) */\n\ttimestamp?: number;\n}\n\n/**\n * Histogram bucket boundaries for latency tracking.\n */\nconst DEFAULT_BUCKETS = [0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10];\n\n/**\n * Prometheus-compatible metrics collector.\n *\n * Collects and exports metrics in Prometheus text format for scraping.\n * Thread-safe and supports counters, gauges, and histograms.\n *\n * @remarks\n * **Metric Types:**\n * - **Counter**: Cumulative value that only increases (e.g., request counts)\n * - **Gauge**: Value that can go up or down (e.g., active connections)\n * - **Histogram**: Sampling observations (e.g., request latency)\n *\n * **Labels:**\n * Metrics can have labels for dimensional data:\n * ```typescript\n * counter('http_requests_total', { method: 'GET', status: '200' });\n * ```\n *\n * **Export Format:**\n * Metrics are exported in Prometheus text format:\n * ```\n * # HELP http_requests_total Total HTTP requests\n * # TYPE http_requests_total counter\n * http_requests_total{method=\"GET\",status=\"200\"} 1234\n * ```\n *\n * @example\n * ```typescript\n * const metrics = new Metrics({ prefix: 'mcp_server' });\n *\n * // Count requests\n * metrics.counter('requests_total', { method: 'GET' }).inc();\n *\n * // Track active connections\n * const activeConnections = metrics.gauge('active_connections');\n * activeConnections.set(5);\n * activeConnections.dec();\n *\n * // Record latency\n * metrics.histogram('request_duration_seconds').observe(0.023);\n *\n * // Export for Prometheus\n * const prometheusText = metrics.export();\n * ```\n */\nexport class Metrics {\n\t/** Metrics storage indexed by name and label hash */\n\tprivate _metrics: Map<string, Metric>;\n\n\t/** Histogram samples */\n\tprivate _histograms: Map<string, { sum: number; count: number; buckets: Map<number, number> }>;\n\n\t/** Prefix for all metric names */\n\tprivate _prefix: string;\n\n\t/** Default labels to apply to all metrics */\n\tprivate _defaultLabels: Record<string, string>;\n\n\t/** Counter for metric collection operations */\n\tprivate _operationsCounter: number = 0;\n\n\t/**\n\t * Creates a new Metrics instance.\n\t *\n\t * @param options - Configuration options\n\t *\n\t * @example\n\t * ```typescript\n\t * const metrics = new Metrics({ prefix: 'mcp_server' });\n\t * ```\n\t */\n\tconstructor(options: { prefix?: string; defaultLabels?: Record<string, string> } = {}) {\n\t\tthis._metrics = new Map();\n\t\tthis._histograms = new Map();\n\t\tthis._prefix = options.prefix ?? '';\n\t\tthis._defaultLabels = options.defaultLabels ?? {};\n\t}\n\n\t/**\n\t * Creates a counter metric.\n\t *\n\t * @param name - Metric name\n\t * @param value - Increment value (default: 1)\n\t * @param labels - Optional labels\n\t * @param help - Help text\n\t *\n\t * @example\n\t * ```typescript\n\t * metrics.counter('requests_total', 1, { method: 'GET' });\n\t * metrics.counter('errors_total', 1, { type: 'timeout' });\n\t * ```\n\t */\n\tcounter(name: string, value = 1, labels: Record<string, string> = {}, help?: string): void {\n\t\tconst fullName = this._fullName(name);\n\t\tconst allLabels = { ...this._defaultLabels, ...labels };\n\t\tconst key = this._metricKey(fullName, allLabels);\n\t\tconst existing = this._metrics.get(key);\n\n\t\tif (existing) {\n\t\t\texisting.value += value;\n\t\t\tif (help && !existing.help) {\n\t\t\t\texisting.help = help;\n\t\t\t}\n\t\t} else {\n\t\t\tthis._metrics.set(key, {\n\t\t\t\tname: fullName,\n\t\t\t\ttype: MetricType.Counter,\n\t\t\t\tvalue,\n\t\t\t\tlabels: allLabels,\n\t\t\t\thelp,\n\t\t\t});\n\t\t}\n\t\tthis._operationsCounter++;\n\t}\n\n\t/**\n\t * Creates a gauge metric.\n\t *\n\t * @param name - Metric name\n\t * @param value - Current value\n\t * @param labels - Optional labels\n\t * @param help - Help text\n\t *\n\t * @example\n\t * ```typescript\n\t * const activeConnections = metrics.gauge('active_connections');\n\t * activeConnections.set(5);\n\t * activeConnections.dec();\n\t * ```\n\t */\n\tgauge(name: string, value: number, labels: Record<string, string> = {}, help?: string): void {\n\t\tconst fullName = this._fullName(name);\n\t\tconst allLabels = { ...this._defaultLabels, ...labels };\n\t\tconst key = this._metricKey(fullName, allLabels);\n\t\tconst existing = this._metrics.get(key);\n\t\tthis._metrics.set(key, {\n\t\t\tname: fullName,\n\t\t\ttype: MetricType.Gauge,\n\t\t\tvalue,\n\t\t\tlabels: allLabels,\n\t\t\thelp: help ?? existing?.help,\n\t\t});\n\t\tthis._operationsCounter++;\n\t}\n\n\t/**\n\t * Records a histogram observation.\n\t *\n\t * @param name - Histogram name\n\t * @param value - Observed value\n\t * @param labels - Optional labels\n\t * @param help - Help text\n\t * @param buckets - Custom bucket boundaries\n\t *\n\t * @example\n\t * ```typescript\n\t * metrics.histogram('request_duration_seconds').observe(0.023);\n\t * metrics.histogram('thought_processing_ms').observe(45);\n\t * ```\n\t */\n\thistogram(\n\t\tname: string,\n\t\tvalue: number,\n\t\tlabels: Record<string, string> = {},\n\t\tbuckets = DEFAULT_BUCKETS\n\t): void {\n\t\tconst fullName = this._fullName(name);\n\t\tconst allLabels = { ...this._defaultLabels, ...labels };\n\t\tconst key = this._metricKey(fullName, allLabels);\n\t\tconst histogram = this._histograms.get(key);\n\n\t\tif (histogram) {\n\t\t\thistogram.sum += value;\n\t\t\thistogram.count += 1;\n\t\t\tfor (const boundary of buckets) {\n\t\t\t\tif (value <= boundary) {\n\t\t\t\t\thistogram.buckets.set(boundary, (histogram.buckets.get(boundary) ?? 0) + 1);\n\t\t\t\t} else {\n\t\t\t\t\thistogram.buckets.set(boundary, histogram.buckets.get(boundary) ?? 0);\n\t\t\t\t}\n\t\t\t}\n\t\t\thistogram.buckets.set(Infinity, (histogram.buckets.get(Infinity) ?? 0) + 1);\n\t\t} else {\n\t\t\tconst histogramData = {\n\t\t\t\tsum: value,\n\t\t\t\tcount: 1,\n\t\t\t\tbuckets: new Map<number, number>(),\n\t\t\t};\n\t\t\tfor (const boundary of buckets) {\n\t\t\t\thistogramData.buckets.set(boundary, value <= boundary ? 1 : 0);\n\t\t\t}\n\t\t\thistogramData.buckets.set(Infinity, 1);\n\t\t\tthis._histograms.set(key, histogramData);\n\t\t}\n\t\tthis._operationsCounter++;\n\t}\n\n\t/**\n\t * Gets the current value of a metric.\n\t *\n\t * @param name - Metric name\n\t * @param labels - Labels\n\t * @returns Current value or undefined if not found\n\t *\n\t * @example\n\t * ```typescript\n\t * const count = metrics.get('requests_total', { method: 'GET' });\n\t * ```\n\t */\n\tget(name: string, labels: Record<string, string> = {}): number | undefined {\n\t\tconst fullName = this._fullName(name);\n\t\tconst allLabels = { ...this._defaultLabels, ...labels };\n\t\tconst key = this._metricKey(fullName, allLabels);\n\t\treturn this._metrics.get(key)?.value;\n\t}\n\n\t/**\n\t * Increments a counter by 1.\n\t *\n\t * @param name - Metric name\n\t * @param labels - Optional labels\n\t *\n\t * @example\n\t * ```typescript\n\t * metrics.inc('requests_total', { method: 'GET' });\n\t * ```\n\t */\n\tinc(name: string, labels?: Record<string, string>): void {\n\t\tthis.counter(name, 1, labels);\n\t}\n\n\t/**\n\t * Decrements a gauge by 1.\n\t *\n\t * @param name - Metric name\n\t * @param labels - Optional labels\n\t *\n\t * @example\n\t * ```typescript\n\t * metrics.dec('active_connections');\n\t * ```\n\t */\n\tdec(name: string, labels?: Record<string, string>): void {\n\t\tconst value = this.get(name, labels) ?? 0;\n\t\tthis.gauge(name, value - 1, labels);\n\t}\n\n\t/**\n\t * Resets all metrics to zero.\n\t * Useful for testing or on server restart.\n\t *\n\t * @example\n\t * ```typescript\n\t * metrics.reset();\n\t * ```\n\t */\n\treset(): void {\n\t\tthis._metrics.clear();\n\t\tthis._histograms.clear();\n\t\tthis._operationsCounter = 0;\n\t}\n\n\t/**\n\t * Gets the number of metric operations performed.\n\t * Useful for testing.\n\t *\n\t * @returns Operation count\n\t *\n\t * @example\n\t * ```typescript\n\t * const ops = metrics.getOperationCount();\n\t * ```\n\t */\n\tgetOperationCount(): number {\n\t\treturn this._operationsCounter;\n\t}\n\n\t/**\n\t * Exports metrics in Prometheus text format.\n\t *\n\t * @returns Prometheus text format string\n\t *\n\t * @example\n\t * ```typescript\n\t * const prometheusText = metrics.export();\n\t * console.log(prometheusText);\n\t * // Output:\n\t * // # HELP http_requests_total Total HTTP requests\n\t * // # TYPE http_requests_total counter\n\t * // http_requests_total{method=\"GET\",status=\"200\"} 1234\n\t * ```\n\t */\n\texport(): string {\n\t\tconst lines: string[] = [];\n\n\t\tconst metrics = Array.from(this._metrics.values());\n\t\tconst histograms = Array.from(this._histograms.entries());\n\n\t\tconst helpEntries = new Map<string, string>();\n\t\tconst typeEntries = new Map<string, MetricType>();\n\n\t\tfor (const metric of metrics) {\n\t\t\tif (!helpEntries.has(metric.name)) {\n\t\t\t\tconst helpText = metric.help ?? `${metric.name} metric`;\n\t\t\t\tlines.push(`# HELP ${metric.name} ${helpText}`);\n\t\t\t\thelpEntries.set(metric.name, helpText);\n\t\t\t}\n\t\t\tif (!typeEntries.has(metric.name)) {\n\t\t\t\tlines.push(`# TYPE ${metric.name} ${metric.type}`);\n\t\t\t\ttypeEntries.set(metric.name, metric.type);\n\t\t\t}\n\n\t\t\tconst labelStr = Object.entries(metric.labels)\n\t\t\t\t.map(([k, v]) => `${k}=\"${v}\"`)\n\t\t\t\t.join(',');\n\t\t\tlines.push(`${metric.name}{${labelStr}} ${metric.value}`);\n\t\t}\n\n\t\tfor (const [key, histogram] of histograms) {\n\t\t\tconst { name: fullName, labels } = this._parseMetricKey(key);\n\t\t\tif (histogram.count > 0) {\n\t\t\t\tif (!typeEntries.has(fullName)) {\n\t\t\t\t\tlines.push(`# TYPE ${fullName} histogram`);\n\t\t\t\t\ttypeEntries.set(fullName, MetricType.Histogram);\n\t\t\t\t}\n\n\t\t\t\tconst labelStr = Object.entries(labels)\n\t\t\t\t\t.map(([k, v]) => `${k}=\"${v}\"`)\n\t\t\t\t\t.join(',');\n\t\t\t\tconst formatMetricLine = (suffix: string, value: number): string => {\n\t\t\t\t\tif (labelStr.length === 0) {\n\t\t\t\t\t\treturn `${fullName}${suffix} ${value}`;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn `${fullName}${suffix}{${labelStr}} ${value}`;\n\t\t\t\t};\n\n\t\t\t\tlines.push(formatMetricLine('_sum', histogram.sum));\n\t\t\t\tlines.push(formatMetricLine('_count', histogram.count));\n\n\t\t\t\tfor (const [boundary, count] of histogram.buckets.entries()) {\n\t\t\t\t\tconst boundaryLabel =\n\t\t\t\t\t\tboundary === Infinity\n\t\t\t\t\t\t\t? '+Inf'\n\t\t\t\t\t\t\t: Number.isFinite(boundary)\n\t\t\t\t\t\t\t\t? String(boundary)\n\t\t\t\t\t\t\t\t: String(boundary);\n\t\t\t\t\tconst bucketLabels =\n\t\t\t\t\t\tlabelStr.length === 0 ? `le=\"${boundaryLabel}\"` : `${labelStr},le=\"${boundaryLabel}\"`;\n\t\t\t\t\tlines.push(`${fullName}_bucket{${bucketLabels}} ${count}`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn lines.join('\\n');\n\t}\n\n\t/**\n\t * Gets metric name with prefix.\n\t * @param name - Metric name\n\t * @returns Full metric name\n\t * @private\n\t */\n\tprivate _fullName(name: string): string {\n\t\tif (!this._prefix) {\n\t\t\treturn name;\n\t\t}\n\n\t\tconst prefix = `${this._prefix}_`;\n\t\treturn name.startsWith(prefix) ? name : `${prefix}${name}`;\n\t}\n\n\t/**\n\t * Creates a unique key for a metric with labels.\n\t * @param name - Metric name\n\t * @param labels - Labels\n\t * @returns Unique key\n\t * @private\n\t */\n\tprivate _metricKey(name: string, labels: Record<string, string>): string {\n\t\tconst sortedLabels = Object.entries(labels)\n\t\t\t.sort(([a], [b]) => a.localeCompare(b))\n\t\t\t.map(([k, v]) => `${k}=${v}`)\n\t\t\t.join(',');\n\t\treturn `${name}{${sortedLabels}}`;\n\t}\n\n\t/**\n\t * Parses a metric key back into name and labels.\n\t * @param key - Metric key\n\t * @returns Name and labels\n\t * @private\n\t */\n\tprivate _parseMetricKey(key: string): { name: string; labels: Record<string, string> } {\n\t\tconst match = key.match(/^([^{}]+)\\{([^{}]*)\\}$/);\n\t\tif (!match) {\n\t\t\treturn { name: key, labels: {} };\n\t\t}\n\n\t\tconst [, name, labelsPart] = match as [string, string, string | undefined];\n\t\tif (!labelsPart) {\n\t\t\treturn { name, labels: {} };\n\t\t}\n\n\t\tconst labels: Record<string, string> = {};\n\t\tfor (const label of labelsPart.split(',')) {\n\t\t\tconst separatorIndex = label.indexOf('=');\n\t\t\tif (separatorIndex <= 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst labelKey = label.slice(0, separatorIndex);\n\t\t\tconst labelValue = label.slice(separatorIndex + 1);\n\t\t\tlabels[labelKey] = labelValue;\n\t\t}\n\n\t\treturn { name, labels };\n\t}\n}\n"],"names":["MetricType","DEFAULT_BUCKETS","Metrics","options","Map","name","value","labels","help","fullName","allLabels","key","existing","buckets","histogram","boundary","Infinity","histogramData","lines","metrics","Array","histograms","helpEntries","typeEntries","metric","helpText","labelStr","Object","k","v","formatMetricLine","suffix","count","boundaryLabel","Number","String","bucketLabels","prefix","sortedLabels","a","b","match","labelsPart","label","separatorIndex","labelKey","labelValue"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function importLegacyFileV1(sourceDataDir: string, destinationDataDir: string): Promise<void>;
2
+ //# sourceMappingURL=FileLegacyImport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileLegacyImport.d.ts","sourceRoot":"","sources":["../../src/persistence/FileLegacyImport.ts"],"names":[],"mappings":"AA4LA,wBAAsB,kBAAkB,CACvC,aAAa,EAAE,MAAM,EACrB,kBAAkB,EAAE,MAAM,GACxB,OAAO,CAAC,IAAI,CAAC,CA2Bf"}