tracelattice 1.2.9 → 1.3.1

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 (287) hide show
  1. package/README.md +83 -13
  2. package/dist/ServerConfig.d.ts +60 -0
  3. package/dist/ServerConfig.d.ts.map +1 -1
  4. package/dist/ServerConfig.js +27 -1
  5. package/dist/ServerConfig.js.map +1 -1
  6. package/dist/__tests__/calibrator/Calibrator.test.d.ts +6 -0
  7. package/dist/__tests__/calibrator/Calibrator.test.d.ts.map +1 -0
  8. package/dist/__tests__/compression/CompressionService.test.d.ts +5 -0
  9. package/dist/__tests__/compression/CompressionService.test.d.ts.map +1 -0
  10. package/dist/__tests__/compression/DehydrationPolicy.test.d.ts +5 -0
  11. package/dist/__tests__/compression/DehydrationPolicy.test.d.ts.map +1 -0
  12. package/dist/__tests__/compression/InMemorySummaryStore.test.d.ts +5 -0
  13. package/dist/__tests__/compression/InMemorySummaryStore.test.d.ts.map +1 -0
  14. package/dist/__tests__/config/ConfigLoader.features.test.d.ts +2 -0
  15. package/dist/__tests__/config/ConfigLoader.features.test.d.ts.map +1 -0
  16. package/dist/__tests__/core/HistoryManager.dag.test.d.ts +9 -0
  17. package/dist/__tests__/core/HistoryManager.dag.test.d.ts.map +1 -0
  18. package/dist/__tests__/core/HistoryManager.edge-persistence.test.d.ts +12 -0
  19. package/dist/__tests__/core/HistoryManager.edge-persistence.test.d.ts.map +1 -0
  20. package/dist/__tests__/core/HistoryManager.toolInvocation.test.d.ts +2 -0
  21. package/dist/__tests__/core/HistoryManager.toolInvocation.test.d.ts.map +1 -0
  22. package/dist/__tests__/core/ThoughtProcessor.newThoughtTypes.test.d.ts +2 -0
  23. package/dist/__tests__/core/ThoughtProcessor.newThoughtTypes.test.d.ts.map +1 -0
  24. package/dist/__tests__/core/ThoughtProcessor.toolInterleave.test.d.ts +2 -0
  25. package/dist/__tests__/core/ThoughtProcessor.toolInterleave.test.d.ts.map +1 -0
  26. package/dist/__tests__/core/graph/Edge.test.d.ts +5 -0
  27. package/dist/__tests__/core/graph/Edge.test.d.ts.map +1 -0
  28. package/dist/__tests__/core/graph/EdgeStore.test.d.ts +5 -0
  29. package/dist/__tests__/core/graph/EdgeStore.test.d.ts.map +1 -0
  30. package/dist/__tests__/core/graph/GraphView.test.d.ts +5 -0
  31. package/dist/__tests__/core/graph/GraphView.test.d.ts.map +1 -0
  32. package/dist/__tests__/core/reasoning/OutcomeRecorder.test.d.ts +5 -0
  33. package/dist/__tests__/core/reasoning/OutcomeRecorder.test.d.ts.map +1 -0
  34. package/dist/__tests__/core/reasoning/strategies/TreeOfThought.newTypes.test.d.ts +2 -0
  35. package/dist/__tests__/core/reasoning/strategies/TreeOfThought.newTypes.test.d.ts.map +1 -0
  36. package/dist/__tests__/core/retraction.test.d.ts +2 -0
  37. package/dist/__tests__/core/retraction.test.d.ts.map +1 -0
  38. package/dist/__tests__/core/thought-id.test.d.ts +13 -0
  39. package/dist/__tests__/core/thought-id.test.d.ts.map +1 -0
  40. package/dist/__tests__/core/tools/InMemorySuspensionStore.test.d.ts +2 -0
  41. package/dist/__tests__/core/tools/InMemorySuspensionStore.test.d.ts.map +1 -0
  42. package/dist/__tests__/eval/fixtures/scenarios.d.ts +37 -0
  43. package/dist/__tests__/eval/fixtures/scenarios.d.ts.map +1 -0
  44. package/dist/__tests__/eval/totVsSequential.eval.d.ts +16 -0
  45. package/dist/__tests__/eval/totVsSequential.eval.d.ts.map +1 -0
  46. package/dist/__tests__/evaluator/EvaluatorBackwardCompat.test.d.ts +15 -0
  47. package/dist/__tests__/evaluator/EvaluatorBackwardCompat.test.d.ts.map +1 -0
  48. package/dist/__tests__/helpers/factories.d.ts +2 -0
  49. package/dist/__tests__/helpers/factories.d.ts.map +1 -1
  50. package/dist/__tests__/integration/CompressionAutoTrigger.test.d.ts +11 -0
  51. package/dist/__tests__/integration/CompressionAutoTrigger.test.d.ts.map +1 -0
  52. package/dist/__tests__/integration/CompressionPersistence.test.d.ts +17 -0
  53. package/dist/__tests__/integration/CompressionPersistence.test.d.ts.map +1 -0
  54. package/dist/__tests__/integration/StrategyIntegration.test.d.ts +10 -0
  55. package/dist/__tests__/integration/StrategyIntegration.test.d.ts.map +1 -0
  56. package/dist/__tests__/integration/ToTStrategyIntegration.test.d.ts +18 -0
  57. package/dist/__tests__/integration/ToTStrategyIntegration.test.d.ts.map +1 -0
  58. package/dist/__tests__/integration/dag-edges.test.d.ts +17 -0
  59. package/dist/__tests__/integration/dag-edges.test.d.ts.map +1 -0
  60. package/dist/__tests__/strategies/SequentialStrategy.test.d.ts +2 -0
  61. package/dist/__tests__/strategies/SequentialStrategy.test.d.ts.map +1 -0
  62. package/dist/__tests__/strategies/StrategyContract.test.d.ts +18 -0
  63. package/dist/__tests__/strategies/StrategyContract.test.d.ts.map +1 -0
  64. package/dist/__tests__/strategies/TreeOfThoughtStrategy.test.d.ts +9 -0
  65. package/dist/__tests__/strategies/TreeOfThoughtStrategy.test.d.ts.map +1 -0
  66. package/dist/__tests__/strategies/plateau.test.d.ts +2 -0
  67. package/dist/__tests__/strategies/plateau.test.d.ts.map +1 -0
  68. package/dist/__tests__/strategies/totScoring.test.d.ts +2 -0
  69. package/dist/__tests__/strategies/totScoring.test.d.ts.map +1 -0
  70. package/dist/cli.js +9 -9
  71. package/dist/cli.js.map +1 -1
  72. package/dist/config/ConfigLoader.d.ts +37 -0
  73. package/dist/config/ConfigLoader.d.ts.map +1 -1
  74. package/dist/config/ConfigLoader.js +52 -2
  75. package/dist/config/ConfigLoader.js.map +1 -1
  76. package/dist/context/RequestContext.d.ts +2 -46
  77. package/dist/context/RequestContext.d.ts.map +1 -1
  78. package/dist/context/RequestContext.js +1 -10
  79. package/dist/context/RequestContext.js.map +1 -1
  80. package/dist/contracts/calibrator.d.ts +88 -0
  81. package/dist/contracts/calibrator.d.ts.map +1 -0
  82. package/dist/contracts/calibrator.js +1 -0
  83. package/dist/contracts/index.d.ts +5 -1
  84. package/dist/contracts/index.d.ts.map +1 -1
  85. package/dist/contracts/interfaces.d.ts +114 -35
  86. package/dist/contracts/interfaces.d.ts.map +1 -1
  87. package/dist/contracts/strategy.d.ts +106 -0
  88. package/dist/contracts/strategy.d.ts.map +1 -0
  89. package/dist/contracts/strategy.js +1 -0
  90. package/dist/contracts/summary.d.ts +104 -0
  91. package/dist/contracts/summary.d.ts.map +1 -0
  92. package/dist/contracts/summary.js +1 -0
  93. package/dist/contracts/suspension.d.ts +181 -0
  94. package/dist/contracts/suspension.d.ts.map +1 -0
  95. package/dist/contracts/suspension.js +1 -0
  96. package/dist/core/HistoryManager.d.ts +54 -441
  97. package/dist/core/HistoryManager.d.ts.map +1 -1
  98. package/dist/core/HistoryManager.js +132 -145
  99. package/dist/core/HistoryManager.js.map +1 -1
  100. package/dist/core/IHistoryManager.d.ts +17 -0
  101. package/dist/core/IHistoryManager.d.ts.map +1 -1
  102. package/dist/core/InputNormalizer.d.ts.map +1 -1
  103. package/dist/core/InputNormalizer.js +13 -24
  104. package/dist/core/InputNormalizer.js.map +1 -1
  105. package/dist/core/PersistenceBuffer.d.ts +110 -0
  106. package/dist/core/PersistenceBuffer.d.ts.map +1 -0
  107. package/dist/core/PersistenceBuffer.js +141 -0
  108. package/dist/core/PersistenceBuffer.js.map +1 -0
  109. package/dist/core/SessionManager.d.ts +58 -0
  110. package/dist/core/SessionManager.d.ts.map +1 -0
  111. package/dist/core/SessionManager.js +65 -0
  112. package/dist/core/SessionManager.js.map +1 -0
  113. package/dist/core/ThoughtEvaluator.d.ts +14 -99
  114. package/dist/core/ThoughtEvaluator.d.ts.map +1 -1
  115. package/dist/core/ThoughtEvaluator.js +66 -331
  116. package/dist/core/ThoughtEvaluator.js.map +1 -1
  117. package/dist/core/ThoughtFormatter.d.ts.map +1 -1
  118. package/dist/core/ThoughtFormatter.js +23 -1
  119. package/dist/core/ThoughtFormatter.js.map +1 -1
  120. package/dist/core/ThoughtProcessor.d.ts +68 -50
  121. package/dist/core/ThoughtProcessor.d.ts.map +1 -1
  122. package/dist/core/ThoughtProcessor.js +159 -7
  123. package/dist/core/ThoughtProcessor.js.map +1 -1
  124. package/dist/core/compression/CompressionService.d.ts +74 -0
  125. package/dist/core/compression/CompressionService.d.ts.map +1 -0
  126. package/dist/core/compression/CompressionService.js +159 -0
  127. package/dist/core/compression/CompressionService.js.map +1 -0
  128. package/dist/core/compression/DehydrationPolicy.d.ts +74 -0
  129. package/dist/core/compression/DehydrationPolicy.d.ts.map +1 -0
  130. package/dist/core/compression/DehydrationPolicy.js +45 -0
  131. package/dist/core/compression/DehydrationPolicy.js.map +1 -0
  132. package/dist/core/compression/InMemorySummaryStore.d.ts +130 -0
  133. package/dist/core/compression/InMemorySummaryStore.d.ts.map +1 -0
  134. package/dist/core/compression/InMemorySummaryStore.js +55 -0
  135. package/dist/core/compression/InMemorySummaryStore.js.map +1 -0
  136. package/dist/core/compression/Summary.d.ts +55 -0
  137. package/dist/core/compression/Summary.d.ts.map +1 -0
  138. package/dist/core/compression/Summary.js +1 -0
  139. package/dist/core/evaluator/Aggregator.d.ts +40 -0
  140. package/dist/core/evaluator/Aggregator.d.ts.map +1 -0
  141. package/dist/core/evaluator/Aggregator.js +32 -0
  142. package/dist/core/evaluator/Aggregator.js.map +1 -0
  143. package/dist/core/evaluator/Calibrator.d.ts +49 -0
  144. package/dist/core/evaluator/Calibrator.d.ts.map +1 -0
  145. package/dist/core/evaluator/Calibrator.js +172 -0
  146. package/dist/core/evaluator/Calibrator.js.map +1 -0
  147. package/dist/core/evaluator/PatternDetector.d.ts +69 -0
  148. package/dist/core/evaluator/PatternDetector.d.ts.map +1 -0
  149. package/dist/core/evaluator/PatternDetector.js +188 -0
  150. package/dist/core/evaluator/PatternDetector.js.map +1 -0
  151. package/dist/core/evaluator/SignalComputer.d.ts +116 -0
  152. package/dist/core/evaluator/SignalComputer.d.ts.map +1 -0
  153. package/dist/core/evaluator/SignalComputer.js +106 -0
  154. package/dist/core/evaluator/SignalComputer.js.map +1 -0
  155. package/dist/core/evaluator/internals.d.ts +36 -0
  156. package/dist/core/evaluator/internals.d.ts.map +1 -0
  157. package/dist/core/evaluator/internals.js +43 -0
  158. package/dist/core/evaluator/internals.js.map +1 -0
  159. package/dist/core/graph/Edge.d.ts +51 -0
  160. package/dist/core/graph/Edge.d.ts.map +1 -0
  161. package/dist/core/graph/Edge.js +1 -0
  162. package/dist/core/graph/EdgeEmitter.d.ts +64 -0
  163. package/dist/core/graph/EdgeEmitter.d.ts.map +1 -0
  164. package/dist/core/graph/EdgeEmitter.js +99 -0
  165. package/dist/core/graph/EdgeEmitter.js.map +1 -0
  166. package/dist/core/graph/EdgeStore.d.ts +104 -0
  167. package/dist/core/graph/EdgeStore.d.ts.map +1 -0
  168. package/dist/core/graph/EdgeStore.js +78 -0
  169. package/dist/core/graph/EdgeStore.js.map +1 -0
  170. package/dist/core/graph/GraphView.d.ts +156 -0
  171. package/dist/core/graph/GraphView.d.ts.map +1 -0
  172. package/dist/core/graph/GraphView.js +149 -0
  173. package/dist/core/graph/GraphView.js.map +1 -0
  174. package/dist/core/ids.d.ts +33 -0
  175. package/dist/core/ids.d.ts.map +1 -0
  176. package/dist/core/ids.js +11 -0
  177. package/dist/core/ids.js.map +1 -0
  178. package/dist/core/reasoning/OutcomeRecorder.d.ts +78 -0
  179. package/dist/core/reasoning/OutcomeRecorder.d.ts.map +1 -0
  180. package/dist/core/reasoning/OutcomeRecorder.js +36 -0
  181. package/dist/core/reasoning/OutcomeRecorder.js.map +1 -0
  182. package/dist/core/reasoning/strategies/SequentialStrategy.d.ts +54 -0
  183. package/dist/core/reasoning/strategies/SequentialStrategy.d.ts.map +1 -0
  184. package/dist/core/reasoning/strategies/SequentialStrategy.js +22 -0
  185. package/dist/core/reasoning/strategies/SequentialStrategy.js.map +1 -0
  186. package/dist/core/reasoning/strategies/StrategyFactory.d.ts +25 -0
  187. package/dist/core/reasoning/strategies/StrategyFactory.d.ts.map +1 -0
  188. package/dist/core/reasoning/strategies/StrategyFactory.js +15 -0
  189. package/dist/core/reasoning/strategies/StrategyFactory.js.map +1 -0
  190. package/dist/core/reasoning/strategies/TreeOfThoughtStrategy.d.ts +58 -0
  191. package/dist/core/reasoning/strategies/TreeOfThoughtStrategy.d.ts.map +1 -0
  192. package/dist/core/reasoning/strategies/TreeOfThoughtStrategy.js +98 -0
  193. package/dist/core/reasoning/strategies/TreeOfThoughtStrategy.js.map +1 -0
  194. package/dist/core/reasoning/strategies/plateau.d.ts +18 -0
  195. package/dist/core/reasoning/strategies/plateau.d.ts.map +1 -0
  196. package/dist/core/reasoning/strategies/plateau.js +12 -0
  197. package/dist/core/reasoning/strategies/plateau.js.map +1 -0
  198. package/dist/core/reasoning/strategies/totScoring.d.ts +90 -0
  199. package/dist/core/reasoning/strategies/totScoring.d.ts.map +1 -0
  200. package/dist/core/reasoning/strategies/totScoring.js +79 -0
  201. package/dist/core/reasoning/strategies/totScoring.js.map +1 -0
  202. package/dist/core/reasoning.d.ts +23 -3
  203. package/dist/core/reasoning.d.ts.map +1 -1
  204. package/dist/core/thought.d.ts +36 -0
  205. package/dist/core/thought.d.ts.map +1 -1
  206. package/dist/core/tools/InMemorySuspensionStore.d.ts +59 -0
  207. package/dist/core/tools/InMemorySuspensionStore.d.ts.map +1 -0
  208. package/dist/core/tools/InMemorySuspensionStore.js +91 -0
  209. package/dist/core/tools/InMemorySuspensionStore.js.map +1 -0
  210. package/dist/di/ServiceRegistry.d.ts +14 -0
  211. package/dist/di/ServiceRegistry.d.ts.map +1 -1
  212. package/dist/errors.d.ts +117 -0
  213. package/dist/errors.d.ts.map +1 -1
  214. package/dist/errors.js +40 -1
  215. package/dist/errors.js.map +1 -1
  216. package/dist/health/HealthChecker.d.ts.map +1 -1
  217. package/dist/health/HealthChecker.js +3 -2
  218. package/dist/health/HealthChecker.js.map +1 -1
  219. package/dist/lib.d.ts +0 -5
  220. package/dist/lib.d.ts.map +1 -1
  221. package/dist/lib.js +67 -12
  222. package/dist/lib.js.map +1 -1
  223. package/dist/persistence/FilePersistence.d.ts +55 -0
  224. package/dist/persistence/FilePersistence.d.ts.map +1 -1
  225. package/dist/persistence/FilePersistence.js +120 -1
  226. package/dist/persistence/FilePersistence.js.map +1 -1
  227. package/dist/persistence/MemoryPersistence.d.ts +40 -0
  228. package/dist/persistence/MemoryPersistence.d.ts.map +1 -1
  229. package/dist/persistence/MemoryPersistence.js +33 -0
  230. package/dist/persistence/MemoryPersistence.js.map +1 -1
  231. package/dist/persistence/PersistenceBackend.d.ts +40 -0
  232. package/dist/persistence/PersistenceBackend.d.ts.map +1 -1
  233. package/dist/persistence/SqlitePersistence.d.ts +41 -0
  234. package/dist/persistence/SqlitePersistence.d.ts.map +1 -1
  235. package/dist/persistence/SqlitePersistence.js +102 -0
  236. package/dist/persistence/SqlitePersistence.js.map +1 -1
  237. package/dist/registry/BaseRegistry.d.ts.map +1 -1
  238. package/dist/registry/BaseRegistry.js +4 -3
  239. package/dist/registry/BaseRegistry.js.map +1 -1
  240. package/dist/registry/SkillRegistry.d.ts +1 -1
  241. package/dist/registry/SkillRegistry.js.map +1 -1
  242. package/dist/schema.d.ts +27 -1
  243. package/dist/schema.d.ts.map +1 -1
  244. package/dist/schema.js +41 -9
  245. package/dist/schema.js.map +1 -1
  246. package/dist/transport/BaseTransport.d.ts +1 -20
  247. package/dist/transport/BaseTransport.d.ts.map +1 -1
  248. package/dist/transport/BaseTransport.js +1 -2
  249. package/dist/transport/BaseTransport.js.map +1 -1
  250. package/dist/transport/HttpHelpers.d.ts +0 -7
  251. package/dist/transport/HttpHelpers.d.ts.map +1 -1
  252. package/dist/transport/HttpHelpers.js +1 -7
  253. package/dist/transport/HttpHelpers.js.map +1 -1
  254. package/dist/transport/HttpTransport.d.ts.map +1 -1
  255. package/dist/transport/HttpTransport.js +2 -1
  256. package/dist/transport/HttpTransport.js.map +1 -1
  257. package/dist/transport/StreamableHttpTransport.d.ts +0 -6
  258. package/dist/transport/StreamableHttpTransport.d.ts.map +1 -1
  259. package/dist/transport/StreamableHttpTransport.js +4 -13
  260. package/dist/transport/StreamableHttpTransport.js.map +1 -1
  261. package/dist/watchers/SkillWatcher.d.ts.map +1 -1
  262. package/dist/watchers/SkillWatcher.js +3 -2
  263. package/dist/watchers/SkillWatcher.js.map +1 -1
  264. package/dist/watchers/ToolWatcher.d.ts.map +1 -1
  265. package/dist/watchers/ToolWatcher.js +2 -1
  266. package/dist/watchers/ToolWatcher.js.map +1 -1
  267. package/package.json +4 -4
  268. package/dist/__tests__/request-context.test.d.ts +0 -2
  269. package/dist/__tests__/request-context.test.d.ts.map +0 -1
  270. package/dist/__tests__/worker-manager-cov.test.d.ts +0 -2
  271. package/dist/__tests__/worker-manager-cov.test.d.ts.map +0 -1
  272. package/dist/__tests__/worker-manager.test.d.ts +0 -2
  273. package/dist/__tests__/worker-manager.test.d.ts.map +0 -1
  274. package/dist/cluster/WorkerManager.d.ts +0 -166
  275. package/dist/cluster/WorkerManager.d.ts.map +0 -1
  276. package/dist/cluster/WorkerManager.js +0 -202
  277. package/dist/cluster/WorkerManager.js.map +0 -1
  278. package/dist/cluster/worker.d.ts +0 -11
  279. package/dist/cluster/worker.d.ts.map +0 -1
  280. package/dist/cluster/worker.js +0 -36
  281. package/dist/cluster/worker.js.map +0 -1
  282. package/dist/telemetry/Telemetry.d.ts +0 -36
  283. package/dist/telemetry/Telemetry.d.ts.map +0 -1
  284. package/dist/telemetry/Telemetry.js +0 -68
  285. package/dist/telemetry/Telemetry.js.map +0 -1
  286. package/dist/telemetry/__tests__/Telemetry.test.d.ts +0 -2
  287. package/dist/telemetry/__tests__/Telemetry.test.d.ts.map +0 -1
@@ -2,6 +2,7 @@ import { existsSync, readFileSync } from "node:fs";
2
2
  import { homedir } from "node:os";
3
3
  import { join } from "node:path";
4
4
  import { parse } from "yaml";
5
+ import { getErrorMessage } from "../errors.js";
5
6
  class ConfigLoader {
6
7
  _configPaths;
7
8
  constructor(customPath){
@@ -22,7 +23,7 @@ class ConfigLoader {
22
23
  config = this.parseConfig(configPath);
23
24
  break;
24
25
  } catch (error) {
25
- console.error(`Failed to load config from ${configPath}:`, error instanceof Error ? error.message : String(error));
26
+ console.error(`Failed to load config from ${configPath}:`, getErrorMessage(error));
26
27
  }
27
28
  return this.applyEnvironmentOverrides(config || {});
28
29
  }
@@ -64,8 +65,54 @@ class ConfigLoader {
64
65
  result.discoveryCache.maxSize = parsed;
65
66
  }
66
67
  }
68
+ if (process.env.TRACELATTICE_TOOL_INTERLEAVE_TTL_MS) {
69
+ const parsed = parseInt(process.env.TRACELATTICE_TOOL_INTERLEAVE_TTL_MS, 10);
70
+ if (Number.isFinite(parsed)) result.toolInterleaveTtlMs = parsed;
71
+ }
72
+ if (process.env.TRACELATTICE_TOOL_INTERLEAVE_SWEEP_MS) {
73
+ const parsed = parseInt(process.env.TRACELATTICE_TOOL_INTERLEAVE_SWEEP_MS, 10);
74
+ if (Number.isFinite(parsed)) result.toolInterleaveSweepMs = parsed;
75
+ }
76
+ this.applyFeatureFlagOverrides(result);
67
77
  return result;
68
78
  }
79
+ applyFeatureFlagOverrides(result) {
80
+ const boolMap = {
81
+ TRACELATTICE_FEATURES_DAG_EDGES: 'dagEdges',
82
+ TRACELATTICE_FEATURES_CALIBRATION: 'calibration',
83
+ TRACELATTICE_FEATURES_COMPRESSION: 'compression',
84
+ TRACELATTICE_FEATURES_TOOL_INTERLEAVE: 'toolInterleave',
85
+ TRACELATTICE_FEATURES_NEW_THOUGHT_TYPES: 'newThoughtTypes',
86
+ TRACELATTICE_FEATURES_OUTCOME_RECORDING: 'outcomeRecording'
87
+ };
88
+ for (const [envVar, key] of Object.entries(boolMap)){
89
+ const raw = process.env[envVar];
90
+ if (void 0 === raw) continue;
91
+ const parsed = this.parseBoolean(raw);
92
+ if (void 0 === parsed) {
93
+ console.warn(`Invalid boolean value for ${envVar}: "${raw}" (expected true/false/1/0). Ignoring.`);
94
+ continue;
95
+ }
96
+ result.features = result.features || {};
97
+ result.features[key] = parsed;
98
+ }
99
+ const strategyRaw = process.env.TRACELATTICE_FEATURES_REASONING_STRATEGY;
100
+ if (void 0 !== strategyRaw) {
101
+ const allowed = [
102
+ 'sequential',
103
+ 'tot'
104
+ ];
105
+ if (allowed.includes(strategyRaw)) {
106
+ result.features = result.features || {};
107
+ result.features.reasoningStrategy = strategyRaw;
108
+ } else console.warn(`Invalid value for TRACELATTICE_FEATURES_REASONING_STRATEGY: "${strategyRaw}" (expected one of ${allowed.join(', ')}). Falling back to 'sequential'.`);
109
+ }
110
+ }
111
+ parseBoolean(raw) {
112
+ const v = raw.trim().toLowerCase();
113
+ if ('true' === v || '1' === v) return true;
114
+ if ('false' === v || '0' === v) return false;
115
+ }
69
116
  parseConfig(filePath) {
70
117
  const content = readFileSync(filePath, 'utf-8');
71
118
  const ext = filePath.split('.').pop()?.toLowerCase();
@@ -76,7 +123,10 @@ class ConfigLoader {
76
123
  return {
77
124
  maxHistorySize: config.maxHistorySize,
78
125
  maxBranches: config.maxBranches,
79
- maxBranchSize: config.maxBranchSize
126
+ maxBranchSize: config.maxBranchSize,
127
+ features: config.features,
128
+ toolInterleaveTtlMs: config.toolInterleaveTtlMs,
129
+ toolInterleaveSweepMs: config.toolInterleaveSweepMs
80
130
  };
81
131
  }
82
132
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config/ConfigLoader.js","sources":["../../src/config/ConfigLoader.ts"],"sourcesContent":["/**\n * Configuration file loading with environment variable override support.\n *\n * This module provides the `ConfigLoader` class which handles loading configuration\n * from YAML and JSON files in standard locations, with automatic environment variable\n * overrides for all settings.\n *\n * @module config\n */\n\nimport { existsSync, readFileSync } from 'node:fs';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport { parse as parseYaml } from 'yaml';\nimport type { PersistenceConfig } from '../persistence/PersistenceBackend.js';\n\n/**\n * Configuration options loaded from config files.\n *\n * These options represent the structure of configuration files (JSON or YAML)\n * that can be loaded from standard locations. All values can be overridden\n * by environment variables.\n *\n * @example\n * ```yaml\n * # .claude/config.yaml\n * maxHistorySize: 500\n * maxBranches: 25\n * logLevel: debug\n * prettyLog: true\n * skillDirs:\n * - ./custom-skills\n * discoveryCache:\n * ttl: 600000\n * maxSize: 200\n * persistence:\n * enabled: true\n * backend: sqlite\n * options:\n * dbPath: ./data/history.db\n * ```\n */\nexport interface ConfigFileOptions {\n\t/**\n\t * Maximum number of thoughts to keep in history.\n\t * Can be overridden by `MAX_HISTORY_SIZE` environment variable.\n\t */\n\tmaxHistorySize?: number;\n\n\t/**\n\t * Maximum number of branches to maintain.\n\t * Can be overridden by `MAX_BRANCHES` environment variable.\n\t */\n\tmaxBranches?: number;\n\n\t/**\n\t * Maximum size of each branch.\n\t * Can be overridden by `MAX_BRANCH_SIZE` environment variable.\n\t */\n\tmaxBranchSize?: number;\n\n\t/**\n\t * Logging level for the application.\n\t * Can be overridden by `LOG_LEVEL` environment variable.\n\t */\n\tlogLevel?: 'debug' | 'info' | 'warn' | 'error';\n\n\t/**\n\t * Whether to enable pretty (formatted) logging output.\n\t * Can be overridden by `PRETTY_LOG` environment variable (set to \"false\" to disable).\n\t */\n\tprettyLog?: boolean;\n\n\t/**\n\t * Directory paths to search for skills.\n\t * Can be overridden by `SKILL_DIRS` environment variable (colon-separated).\n\t */\n\tskillDirs?: string[];\n\n\t/**\n\t * Discovery cache configuration.\n\t * Can be overridden by `DISCOVERY_CACHE_TTL` and `DISCOVERY_CACHE_MAX_SIZE` environment variables.\n\t */\n\tdiscoveryCache?: {\n\t\t/**\n\t\t * Time-to-live for cache entries in milliseconds.\n\t\t * Environment variable `DISCOVERY_CACHE_TTL` accepts seconds.\n\t\t */\n\t\tttl?: number;\n\t\t/**\n\t\t * Maximum number of entries in the cache.\n\t\t */\n\t\tmaxSize?: number;\n\t};\n\n\t/**\n\t * Persistence configuration for storing history and state.\n\t */\n\tpersistence?: PersistenceConfig;\n}\n\n/**\n * Loads configuration from files with environment variable overrides.\n *\n * This class searches for configuration files in standard locations and applies\n * environment variable overrides. Files are searched in priority order, with the\n * first match being used. Environment variables always take precedence over file values.\n *\n * @remarks\n * **Config File Search Order (priority):**\n * 1. Custom path (if provided to constructor)\n * 2. `.claude/config.json` (project-local)\n * 3. `.claude/config.yaml` (project-local)\n * 4. `.claude/config.yml` (project-local)\n * 5. `~/.claude/config.json` (user-global)\n * 6. `~/.claude/config.yaml` (user-global)\n * 7. `~/.claude/config.yml` (user-global)\n *\n * **Environment Variable Overrides:**\n * | Variable | Type | Description |\n * |----------|------|-------------|\n * | `MAX_HISTORY_SIZE` | number | Max thoughts in history |\n * | `MAX_BRANCHES` | number | Max number of branches |\n * | `MAX_BRANCH_SIZE` | number | Max size of each branch |\n * | `LOG_LEVEL` | string | Logging level (debug/info/warn/error) |\n * | `PRETTY_LOG` | string | \"false\" to disable pretty logging |\n * | `SKILL_DIRS` | string | Colon-separated directory paths |\n * | `DISCOVERY_CACHE_TTL` | number | TTL in seconds (converted to ms) |\n * | `DISCOVERY_CACHE_MAX_SIZE` | number | Max cache entries |\n *\n * @example\n * ```typescript\n * // Use default search paths\n * const loader1 = new ConfigLoader();\n * const config1 = loader1.load();\n *\n * // Use custom config path\n * const loader2 = new ConfigLoader('./my-config.yaml');\n * const config2 = loader2.load();\n *\n * // Convert to ServerConfig options\n * const serverOptions = loader2.toServerConfigOptions(config2);\n * ```\n */\nexport class ConfigLoader {\n\t/** Array of config file paths to search, in priority order. */\n\tprivate _configPaths: string[];\n\n\t/**\n\t * Creates a new ConfigLoader instance.\n\t *\n\t * @param customPath - Optional custom config file path. If provided, only this path will be checked.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Use default search paths\n\t * const loader1 = new ConfigLoader();\n\t *\n\t * // Use a specific config file\n\t * const loader2 = new ConfigLoader('./custom-config.json');\n\t * ```\n\t */\n\tconstructor(customPath?: string) {\n\t\tthis._configPaths = customPath\n\t\t\t? [customPath]\n\t\t\t: [\n\t\t\t\t\t'.claude/config.json',\n\t\t\t\t\t'.claude/config.yaml',\n\t\t\t\t\t'.claude/config.yml',\n\t\t\t\t\tjoin(homedir(), '.claude/config.json'),\n\t\t\t\t\tjoin(homedir(), '.claude/config.yaml'),\n\t\t\t\t\tjoin(homedir(), '.claude/config.yml'),\n\t\t\t\t];\n\t}\n\n\t/**\n\t * Loads configuration from files and applies environment overrides.\n\t *\n\t * Searches for config files in the configured paths (in priority order),\n\t * parses the first match, and applies environment variable overrides.\n\t * Returns null if no config file is found and no environment overrides are set.\n\t *\n\t * @returns The loaded configuration with environment overrides applied, or null if no config found\n\t *\n\t * @example\n\t * ```typescript\n\t * const loader = new ConfigLoader();\n\t * const config = loader.load();\n\t *\n\t * if (config) {\n\t * console.log('Max history size:', config.maxHistorySize);\n\t * console.log('Log level:', config.logLevel);\n\t * }\n\t * ```\n\t */\n\tload(): ConfigFileOptions | null {\n\t\tlet config: ConfigFileOptions | null = null;\n\n\t\tfor (const configPath of this._configPaths) {\n\t\t\tif (existsSync(configPath)) {\n\t\t\t\ttry {\n\t\t\t\t\tconfig = this.parseConfig(configPath);\n\t\t\t\t\tbreak;\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t`Failed to load config from ${configPath}:`,\n\t\t\t\t\t\terror instanceof Error ? error.message : String(error)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.applyEnvironmentOverrides(config || {});\n\t}\n\n\t/**\n\t * Applies environment variable overrides to the configuration.\n\t *\n\t * Environment variables take precedence over file-based configuration.\n\t * Supported environment variables:\n\t * - `MAX_HISTORY_SIZE`, `MAX_BRANCHES`, `MAX_BRANCH_SIZE` (numbers)\n\t * - `LOG_LEVEL` (debug/info/warn/error)\n\t * - `PRETTY_LOG` (\"false\" to disable)\n\t * - `SKILL_DIRS` (colon-separated paths)\n\t * - `DISCOVERY_CACHE_TTL` (in seconds, converted to ms)\n\t * - `DISCOVERY_CACHE_MAX_SIZE` (number)\n\t *\n\t * @param config - The configuration to apply overrides to\n\t * @returns A new configuration object with environment overrides applied\n\t * @private\n\t */\n\tprivate applyEnvironmentOverrides(config: ConfigFileOptions): ConfigFileOptions {\n\t\tconst result: ConfigFileOptions = { ...config };\n\n\t\tif (process.env.MAX_HISTORY_SIZE) {\n\t\t\tconst parsed = parseInt(process.env.MAX_HISTORY_SIZE, 10);\n\t\t\tif (Number.isFinite(parsed)) {\n\t\t\t\tresult.maxHistorySize = parsed;\n\t\t\t}\n\t\t}\n\t\tif (process.env.MAX_BRANCHES) {\n\t\t\tconst parsed = parseInt(process.env.MAX_BRANCHES, 10);\n\t\t\tif (Number.isFinite(parsed)) {\n\t\t\t\tresult.maxBranches = parsed;\n\t\t\t}\n\t\t}\n\t\tif (process.env.MAX_BRANCH_SIZE) {\n\t\t\tconst parsed = parseInt(process.env.MAX_BRANCH_SIZE, 10);\n\t\t\tif (Number.isFinite(parsed)) {\n\t\t\t\tresult.maxBranchSize = parsed;\n\t\t\t}\n\t\t}\n\t\tif (\n\t\t\tprocess.env.LOG_LEVEL &&\n\t\t\t['debug', 'info', 'warn', 'error'].includes(process.env.LOG_LEVEL)\n\t\t) {\n\t\t\tresult.logLevel = process.env.LOG_LEVEL as 'debug' | 'info' | 'warn' | 'error';\n\t\t}\n\t\tif (process.env.PRETTY_LOG === 'false') {\n\t\t\tresult.prettyLog = false;\n\t\t}\n\t\tif (process.env.SKILL_DIRS) {\n\t\t\tresult.skillDirs = process.env.SKILL_DIRS.split(':');\n\t\t}\n\t\tif (process.env.DISCOVERY_CACHE_TTL) {\n\t\t\tconst parsed = parseInt(process.env.DISCOVERY_CACHE_TTL, 10);\n\t\t\tif (Number.isFinite(parsed)) {\n\t\t\t\tresult.discoveryCache = result.discoveryCache || {};\n\t\t\t\tresult.discoveryCache.ttl = parsed * 1000;\n\t\t\t}\n\t\t}\n\t\tif (process.env.DISCOVERY_CACHE_MAX_SIZE) {\n\t\t\tconst parsed = parseInt(process.env.DISCOVERY_CACHE_MAX_SIZE, 10);\n\t\t\tif (Number.isFinite(parsed)) {\n\t\t\t\tresult.discoveryCache = result.discoveryCache || {};\n\t\t\t\tresult.discoveryCache.maxSize = parsed;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Parses a configuration file (JSON or YAML).\n\t *\n\t * Detects the file type by extension and uses the appropriate parser.\n\t * Supports `.json`, `.yaml`, and `.yml` file extensions.\n\t *\n\t * @param filePath - Path to the configuration file to parse\n\t * @returns The parsed configuration object\n\t * @throws {Error} If the file cannot be parsed\n\t * @private\n\t */\n\tprivate parseConfig(filePath: string): ConfigFileOptions {\n\t\tconst content = readFileSync(filePath, 'utf-8');\n\t\tconst ext = filePath.split('.').pop()?.toLowerCase();\n\n\t\tif (ext === 'yaml' || ext === 'yml') {\n\t\t\treturn parseYaml(content) as ConfigFileOptions;\n\t\t}\n\n\t\treturn JSON.parse(content) as ConfigFileOptions;\n\t}\n\n\t/**\n\t * Converts file-based configuration to ServerConfig options.\n\t *\n\t * This is a convenience method for extracting the ServerConfig-relevant\n\t * options from a file-based configuration.\n\t *\n\t * @param config - The configuration to convert\n\t * @returns An object with ServerConfig-compatible options\n\t *\n\t * @example\n\t * ```typescript\n\t * const loader = new ConfigLoader();\n\t * const config = loader.load();\n\t * if (config) {\n\t * const serverOpts = loader.toServerConfigOptions(config);\n\t * const serverConfig = new ServerConfig(serverOpts);\n\t * }\n\t * ```\n\t */\n\ttoServerConfigOptions(config: ConfigFileOptions): {\n\t\tmaxHistorySize?: number;\n\t\tmaxBranches?: number;\n\t\tmaxBranchSize?: number;\n\t} {\n\t\treturn {\n\t\t\tmaxHistorySize: config.maxHistorySize,\n\t\t\tmaxBranches: config.maxBranches,\n\t\t\tmaxBranchSize: config.maxBranchSize,\n\t\t};\n\t}\n}\n"],"names":["ConfigLoader","customPath","join","homedir","config","configPath","existsSync","error","console","Error","String","result","process","parsed","parseInt","Number","filePath","content","readFileSync","ext","parseYaml","JSON"],"mappings":"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"}
1
+ {"version":3,"file":"config/ConfigLoader.js","sources":["../../src/config/ConfigLoader.ts"],"sourcesContent":["/**\n * Configuration file loading with environment variable override support.\n *\n * This module provides the `ConfigLoader` class which handles loading configuration\n * from YAML and JSON files in standard locations, with automatic environment variable\n * overrides for all settings.\n *\n * @module config\n */\n\nimport { existsSync, readFileSync } from 'node:fs';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport { parse as parseYaml } from 'yaml';\nimport type { PersistenceConfig } from '../persistence/PersistenceBackend.js';\nimport { getErrorMessage } from '../errors.js';\nimport type { FeatureFlags } from '../ServerConfig.js';\n\n/**\n * Configuration options loaded from config files.\n *\n * These options represent the structure of configuration files (JSON or YAML)\n * that can be loaded from standard locations. All values can be overridden\n * by environment variables.\n *\n * @example\n * ```yaml\n * # .claude/config.yaml\n * maxHistorySize: 500\n * maxBranches: 25\n * logLevel: debug\n * prettyLog: true\n * skillDirs:\n * - ./custom-skills\n * discoveryCache:\n * ttl: 600000\n * maxSize: 200\n * persistence:\n * enabled: true\n * backend: sqlite\n * options:\n * dbPath: ./data/history.db\n * ```\n */\nexport interface ConfigFileOptions {\n\t/**\n\t * Maximum number of thoughts to keep in history.\n\t * Can be overridden by `MAX_HISTORY_SIZE` environment variable.\n\t */\n\tmaxHistorySize?: number;\n\n\t/**\n\t * Maximum number of branches to maintain.\n\t * Can be overridden by `MAX_BRANCHES` environment variable.\n\t */\n\tmaxBranches?: number;\n\n\t/**\n\t * Maximum size of each branch.\n\t * Can be overridden by `MAX_BRANCH_SIZE` environment variable.\n\t */\n\tmaxBranchSize?: number;\n\n\t/**\n\t * Logging level for the application.\n\t * Can be overridden by `LOG_LEVEL` environment variable.\n\t */\n\tlogLevel?: 'debug' | 'info' | 'warn' | 'error';\n\n\t/**\n\t * Whether to enable pretty (formatted) logging output.\n\t * Can be overridden by `PRETTY_LOG` environment variable (set to \"false\" to disable).\n\t */\n\tprettyLog?: boolean;\n\n\t/**\n\t * Directory paths to search for skills.\n\t * Can be overridden by `SKILL_DIRS` environment variable (colon-separated).\n\t */\n\tskillDirs?: string[];\n\n\t/**\n\t * Discovery cache configuration.\n\t * Can be overridden by `DISCOVERY_CACHE_TTL` and `DISCOVERY_CACHE_MAX_SIZE` environment variables.\n\t */\n\tdiscoveryCache?: {\n\t\t/**\n\t\t * Time-to-live for cache entries in milliseconds.\n\t\t * Environment variable `DISCOVERY_CACHE_TTL` accepts seconds.\n\t\t */\n\t\tttl?: number;\n\t\t/**\n\t\t * Maximum number of entries in the cache.\n\t\t */\n\t\tmaxSize?: number;\n\t};\n\n\t/**\n\t * Persistence configuration for storing history and state.\n\t */\n\tpersistence?: PersistenceConfig;\n\n\t/**\n\t * Feature flag overrides. Each field can be set independently.\n\t * Can be overridden by `TRACELATTICE_FEATURES_*` environment variables.\n\t */\n\tfeatures?: Partial<FeatureFlags>;\n\n\t/**\n\t * TTL in milliseconds for suspended tool-interleave entries.\n\t * Can be overridden by `TRACELATTICE_TOOL_INTERLEAVE_TTL_MS` environment variable.\n\t */\n\ttoolInterleaveTtlMs?: number;\n\n\t/**\n\t * Sweep interval in milliseconds for SuspensionStore expiration cleanup.\n\t * Can be overridden by `TRACELATTICE_TOOL_INTERLEAVE_SWEEP_MS` environment variable.\n\t */\n\ttoolInterleaveSweepMs?: number;\n}\n\n/**\n * Loads configuration from files with environment variable overrides.\n *\n * This class searches for configuration files in standard locations and applies\n * environment variable overrides. Files are searched in priority order, with the\n * first match being used. Environment variables always take precedence over file values.\n *\n * @remarks\n * **Config File Search Order (priority):**\n * 1. Custom path (if provided to constructor)\n * 2. `.claude/config.json` (project-local)\n * 3. `.claude/config.yaml` (project-local)\n * 4. `.claude/config.yml` (project-local)\n * 5. `~/.claude/config.json` (user-global)\n * 6. `~/.claude/config.yaml` (user-global)\n * 7. `~/.claude/config.yml` (user-global)\n *\n * **Environment Variable Overrides:**\n * | Variable | Type | Description |\n * |----------|------|-------------|\n * | `MAX_HISTORY_SIZE` | number | Max thoughts in history |\n * | `MAX_BRANCHES` | number | Max number of branches |\n * | `MAX_BRANCH_SIZE` | number | Max size of each branch |\n * | `LOG_LEVEL` | string | Logging level (debug/info/warn/error) |\n * | `PRETTY_LOG` | string | \"false\" to disable pretty logging |\n * | `SKILL_DIRS` | string | Colon-separated directory paths |\n * | `DISCOVERY_CACHE_TTL` | number | TTL in seconds (converted to ms) |\n * | `DISCOVERY_CACHE_MAX_SIZE` | number | Max cache entries |\n *\n * @example\n * ```typescript\n * // Use default search paths\n * const loader1 = new ConfigLoader();\n * const config1 = loader1.load();\n *\n * // Use custom config path\n * const loader2 = new ConfigLoader('./my-config.yaml');\n * const config2 = loader2.load();\n *\n * // Convert to ServerConfig options\n * const serverOptions = loader2.toServerConfigOptions(config2);\n * ```\n */\nexport class ConfigLoader {\n\t/** Array of config file paths to search, in priority order. */\n\tprivate _configPaths: string[];\n\n\t/**\n\t * Creates a new ConfigLoader instance.\n\t *\n\t * @param customPath - Optional custom config file path. If provided, only this path will be checked.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Use default search paths\n\t * const loader1 = new ConfigLoader();\n\t *\n\t * // Use a specific config file\n\t * const loader2 = new ConfigLoader('./custom-config.json');\n\t * ```\n\t */\n\tconstructor(customPath?: string) {\n\t\tthis._configPaths = customPath\n\t\t\t? [customPath]\n\t\t\t: [\n\t\t\t\t\t'.claude/config.json',\n\t\t\t\t\t'.claude/config.yaml',\n\t\t\t\t\t'.claude/config.yml',\n\t\t\t\t\tjoin(homedir(), '.claude/config.json'),\n\t\t\t\t\tjoin(homedir(), '.claude/config.yaml'),\n\t\t\t\t\tjoin(homedir(), '.claude/config.yml'),\n\t\t\t\t];\n\t}\n\n\t/**\n\t * Loads configuration from files and applies environment overrides.\n\t *\n\t * Searches for config files in the configured paths (in priority order),\n\t * parses the first match, and applies environment variable overrides.\n\t * Returns null if no config file is found and no environment overrides are set.\n\t *\n\t * @returns The loaded configuration with environment overrides applied, or null if no config found\n\t *\n\t * @example\n\t * ```typescript\n\t * const loader = new ConfigLoader();\n\t * const config = loader.load();\n\t *\n\t * if (config) {\n\t * console.log('Max history size:', config.maxHistorySize);\n\t * console.log('Log level:', config.logLevel);\n\t * }\n\t * ```\n\t */\n\tload(): ConfigFileOptions | null {\n\t\tlet config: ConfigFileOptions | null = null;\n\n\t\tfor (const configPath of this._configPaths) {\n\t\t\tif (existsSync(configPath)) {\n\t\t\t\ttry {\n\t\t\t\t\tconfig = this.parseConfig(configPath);\n\t\t\t\t\tbreak;\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t`Failed to load config from ${configPath}:`,\n\t\t\t\t\t\tgetErrorMessage(error)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.applyEnvironmentOverrides(config || {});\n\t}\n\n\t/**\n\t * Applies environment variable overrides to the configuration.\n\t *\n\t * Environment variables take precedence over file-based configuration.\n\t * Supported environment variables:\n\t * - `MAX_HISTORY_SIZE`, `MAX_BRANCHES`, `MAX_BRANCH_SIZE` (numbers)\n\t * - `LOG_LEVEL` (debug/info/warn/error)\n\t * - `PRETTY_LOG` (\"false\" to disable)\n\t * - `SKILL_DIRS` (colon-separated paths)\n\t * - `DISCOVERY_CACHE_TTL` (in seconds, converted to ms)\n\t * - `DISCOVERY_CACHE_MAX_SIZE` (number)\n\t *\n\t * @param config - The configuration to apply overrides to\n\t * @returns A new configuration object with environment overrides applied\n\t * @private\n\t */\n\tprivate applyEnvironmentOverrides(config: ConfigFileOptions): ConfigFileOptions {\n\t\tconst result: ConfigFileOptions = { ...config };\n\n\t\tif (process.env.MAX_HISTORY_SIZE) {\n\t\t\tconst parsed = parseInt(process.env.MAX_HISTORY_SIZE, 10);\n\t\t\tif (Number.isFinite(parsed)) {\n\t\t\t\tresult.maxHistorySize = parsed;\n\t\t\t}\n\t\t}\n\t\tif (process.env.MAX_BRANCHES) {\n\t\t\tconst parsed = parseInt(process.env.MAX_BRANCHES, 10);\n\t\t\tif (Number.isFinite(parsed)) {\n\t\t\t\tresult.maxBranches = parsed;\n\t\t\t}\n\t\t}\n\t\tif (process.env.MAX_BRANCH_SIZE) {\n\t\t\tconst parsed = parseInt(process.env.MAX_BRANCH_SIZE, 10);\n\t\t\tif (Number.isFinite(parsed)) {\n\t\t\t\tresult.maxBranchSize = parsed;\n\t\t\t}\n\t\t}\n\t\tif (\n\t\t\tprocess.env.LOG_LEVEL &&\n\t\t\t['debug', 'info', 'warn', 'error'].includes(process.env.LOG_LEVEL)\n\t\t) {\n\t\t\tresult.logLevel = process.env.LOG_LEVEL as 'debug' | 'info' | 'warn' | 'error';\n\t\t}\n\t\tif (process.env.PRETTY_LOG === 'false') {\n\t\t\tresult.prettyLog = false;\n\t\t}\n\t\tif (process.env.SKILL_DIRS) {\n\t\t\tresult.skillDirs = process.env.SKILL_DIRS.split(':');\n\t\t}\n\t\tif (process.env.DISCOVERY_CACHE_TTL) {\n\t\t\tconst parsed = parseInt(process.env.DISCOVERY_CACHE_TTL, 10);\n\t\t\tif (Number.isFinite(parsed)) {\n\t\t\t\tresult.discoveryCache = result.discoveryCache || {};\n\t\t\t\tresult.discoveryCache.ttl = parsed * 1000;\n\t\t\t}\n\t\t}\n\t\tif (process.env.DISCOVERY_CACHE_MAX_SIZE) {\n\t\t\tconst parsed = parseInt(process.env.DISCOVERY_CACHE_MAX_SIZE, 10);\n\t\t\tif (Number.isFinite(parsed)) {\n\t\t\t\tresult.discoveryCache = result.discoveryCache || {};\n\t\t\t\tresult.discoveryCache.maxSize = parsed;\n\t\t\t}\n\t\t}\n\t\tif (process.env.TRACELATTICE_TOOL_INTERLEAVE_TTL_MS) {\n\t\t\tconst parsed = parseInt(process.env.TRACELATTICE_TOOL_INTERLEAVE_TTL_MS, 10);\n\t\t\tif (Number.isFinite(parsed)) {\n\t\t\t\tresult.toolInterleaveTtlMs = parsed;\n\t\t\t}\n\t\t}\n\t\tif (process.env.TRACELATTICE_TOOL_INTERLEAVE_SWEEP_MS) {\n\t\t\tconst parsed = parseInt(process.env.TRACELATTICE_TOOL_INTERLEAVE_SWEEP_MS, 10);\n\t\t\tif (Number.isFinite(parsed)) {\n\t\t\t\tresult.toolInterleaveSweepMs = parsed;\n\t\t\t}\n\t\t}\n\n\t\tthis.applyFeatureFlagOverrides(result);\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Applies TRACELATTICE_FEATURES_* environment variable overrides for feature flags.\n\t * Booleans accept 'true'/'false'/'1'/'0' (case-insensitive).\n\t * Invalid reasoningStrategy values are warned and ignored (fall back to default).\n\t *\n\t * @param result - Configuration object to mutate with feature flag overrides\n\t * @private\n\t */\n\tprivate applyFeatureFlagOverrides(result: ConfigFileOptions): void {\n\t\tconst boolMap: Record<string, keyof FeatureFlags> = {\n\t\t\tTRACELATTICE_FEATURES_DAG_EDGES: 'dagEdges',\n\t\t\tTRACELATTICE_FEATURES_CALIBRATION: 'calibration',\n\t\t\tTRACELATTICE_FEATURES_COMPRESSION: 'compression',\n\t\t\tTRACELATTICE_FEATURES_TOOL_INTERLEAVE: 'toolInterleave',\n\t\t\tTRACELATTICE_FEATURES_NEW_THOUGHT_TYPES: 'newThoughtTypes',\n\t\t\tTRACELATTICE_FEATURES_OUTCOME_RECORDING: 'outcomeRecording',\n\t\t};\n\t\tfor (const [envVar, key] of Object.entries(boolMap)) {\n\t\t\tconst raw = process.env[envVar];\n\t\t\tif (raw === undefined) continue;\n\t\t\tconst parsed = this.parseBoolean(raw);\n\t\t\tif (parsed === undefined) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`Invalid boolean value for ${envVar}: \"${raw}\" (expected true/false/1/0). Ignoring.`\n\t\t\t\t);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tresult.features = result.features || {};\n\t\t\t(result.features as Record<string, unknown>)[key] = parsed;\n\t\t}\n\n\t\tconst strategyRaw = process.env.TRACELATTICE_FEATURES_REASONING_STRATEGY;\n\t\tif (strategyRaw !== undefined) {\n\t\t\tconst allowed = ['sequential', 'tot'] as const;\n\t\t\tif ((allowed as readonly string[]).includes(strategyRaw)) {\n\t\t\t\tresult.features = result.features || {};\n\t\t\t\tresult.features.reasoningStrategy =\n\t\t\t\t\tstrategyRaw as FeatureFlags['reasoningStrategy'];\n\t\t\t} else {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`Invalid value for TRACELATTICE_FEATURES_REASONING_STRATEGY: \"${strategyRaw}\" ` +\n\t\t\t\t\t\t`(expected one of ${allowed.join(', ')}). Falling back to 'sequential'.`\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Parses a boolean from an environment variable string.\n\t * Accepts 'true'/'false'/'1'/'0' case-insensitively.\n\t *\n\t * @param raw - Raw environment variable string\n\t * @returns Parsed boolean, or undefined if the value is invalid\n\t * @private\n\t */\n\tprivate parseBoolean(raw: string): boolean | undefined {\n\t\tconst v = raw.trim().toLowerCase();\n\t\tif (v === 'true' || v === '1') return true;\n\t\tif (v === 'false' || v === '0') return false;\n\t\treturn undefined;\n\t}\n\n\t/**\n\t * Parses a configuration file (JSON or YAML).\n\t *\n\t * Detects the file type by extension and uses the appropriate parser.\n\t * Supports `.json`, `.yaml`, and `.yml` file extensions.\n\t *\n\t * @param filePath - Path to the configuration file to parse\n\t * @returns The parsed configuration object\n\t * @throws {Error} If the file cannot be parsed\n\t * @private\n\t */\n\tprivate parseConfig(filePath: string): ConfigFileOptions {\n\t\tconst content = readFileSync(filePath, 'utf-8');\n\t\tconst ext = filePath.split('.').pop()?.toLowerCase();\n\n\t\tif (ext === 'yaml' || ext === 'yml') {\n\t\t\treturn parseYaml(content) as ConfigFileOptions;\n\t\t}\n\n\t\treturn JSON.parse(content) as ConfigFileOptions;\n\t}\n\n\t/**\n\t * Converts file-based configuration to ServerConfig options.\n\t *\n\t * This is a convenience method for extracting the ServerConfig-relevant\n\t * options from a file-based configuration.\n\t *\n\t * @param config - The configuration to convert\n\t * @returns An object with ServerConfig-compatible options\n\t *\n\t * @example\n\t * ```typescript\n\t * const loader = new ConfigLoader();\n\t * const config = loader.load();\n\t * if (config) {\n\t * const serverOpts = loader.toServerConfigOptions(config);\n\t * const serverConfig = new ServerConfig(serverOpts);\n\t * }\n\t * ```\n\t */\n\ttoServerConfigOptions(config: ConfigFileOptions): {\n\t\tmaxHistorySize?: number;\n\t\tmaxBranches?: number;\n\t\tmaxBranchSize?: number;\n\t\tfeatures?: Partial<FeatureFlags>;\n\t\ttoolInterleaveTtlMs?: number;\n\t\ttoolInterleaveSweepMs?: number;\n\t} {\n\t\treturn {\n\t\t\tmaxHistorySize: config.maxHistorySize,\n\t\t\tmaxBranches: config.maxBranches,\n\t\t\tmaxBranchSize: config.maxBranchSize,\n\t\t\tfeatures: config.features,\n\t\t\ttoolInterleaveTtlMs: config.toolInterleaveTtlMs,\n\t\t\ttoolInterleaveSweepMs: config.toolInterleaveSweepMs,\n\t\t};\n\t}\n}\n"],"names":["ConfigLoader","customPath","join","homedir","config","configPath","existsSync","error","console","getErrorMessage","result","process","parsed","parseInt","Number","boolMap","envVar","key","Object","raw","undefined","strategyRaw","allowed","v","filePath","content","readFileSync","ext","parseYaml","JSON"],"mappings":"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"}
@@ -1,61 +1,17 @@
1
1
  /**
2
2
  * Request context management using AsyncLocalStorage for correlation IDs.
3
3
  *
4
- * This module provides a way to track request IDs across async operations
5
- * without explicit parameter passing. Uses Node.js AsyncLocalStorage for
6
- * zero-cost context propagation.
4
+ * Provides zero-cost request ID propagation across async boundaries
5
+ * via Node.js AsyncLocalStorage.
7
6
  *
8
7
  * @module context
9
8
  */
10
- /**
11
- * Run a function within a request context.
12
- *
13
- * The requestId will be available via getRequestId() inside the callback
14
- * and any async operations it spawns.
15
- *
16
- * @param requestId - The correlation ID for this request
17
- * @param fn - The function to run within the context
18
- * @returns The return value of fn
19
- *
20
- * @example
21
- * ```typescript
22
- * await runWithContext('req-123', async () => {
23
- * console.log(getRequestId()); // 'req-123'
24
- * await someAsyncOperation();
25
- * console.log(getRequestId()); // still 'req-123'
26
- * });
27
- * ```
28
- */
29
- export declare function runWithContext<T>(requestId: string, fn: () => T | Promise<T>): T | Promise<T>;
30
9
  /**
31
10
  * Get the current request ID from context.
32
11
  *
33
12
  * Returns undefined if called outside of a runWithContext() call.
34
13
  *
35
14
  * @returns The current request ID or undefined
36
- *
37
- * @example
38
- * ```typescript
39
- * // Outside context
40
- * getRequestId(); // undefined
41
- *
42
- * // Inside context
43
- * runWithContext('abc', () => {
44
- * getRequestId(); // 'abc'
45
- * });
46
- * ```
47
15
  */
48
16
  export declare function getRequestId(): string | undefined;
49
- /**
50
- * Generate a new unique request ID using UUID v4.
51
- *
52
- * @returns A UUID string in standard format
53
- *
54
- * @example
55
- * ```typescript
56
- * const id = generateRequestId();
57
- * // '550e8400-e29b-41d4-a716-446655440000'
58
- * ```
59
- */
60
- export declare function generateRequestId(): string;
61
17
  //# sourceMappingURL=RequestContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RequestContext.d.ts","sourceRoot":"","sources":["../../src/context/RequestContext.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAkBH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAE7F;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,SAAS,CAEjD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C"}
1
+ {"version":3,"file":"RequestContext.d.ts","sourceRoot":"","sources":["../../src/context/RequestContext.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAiBH;;;;;;GAMG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,SAAS,CAEjD"}
@@ -1,17 +1,8 @@
1
1
  import { AsyncLocalStorage } from "node:async_hooks";
2
- import { randomUUID } from "node:crypto";
3
2
  const store = new AsyncLocalStorage();
4
- function runWithContext(requestId, fn) {
5
- return store.run({
6
- requestId
7
- }, fn);
8
- }
9
3
  function getRequestId() {
10
4
  return store.getStore()?.requestId;
11
5
  }
12
- function generateRequestId() {
13
- return randomUUID();
14
- }
15
- export { generateRequestId, getRequestId, runWithContext };
6
+ export { getRequestId };
16
7
 
17
8
  //# sourceMappingURL=RequestContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context/RequestContext.js","sources":["../../src/context/RequestContext.ts"],"sourcesContent":["/**\n * Request context management using AsyncLocalStorage for correlation IDs.\n *\n * This module provides a way to track request IDs across async operations\n * without explicit parameter passing. Uses Node.js AsyncLocalStorage for\n * zero-cost context propagation.\n *\n * @module context\n */\n\nimport { AsyncLocalStorage } from 'node:async_hooks';\nimport { randomUUID } from 'node:crypto';\n\n/**\n * Internal context structure stored per-request.\n */\ninterface RequestCtx {\n\trequestId: string;\n}\n\n/**\n * AsyncLocalStorage instance for request context.\n * Stores requestId that propagates across async boundaries.\n */\nconst store = new AsyncLocalStorage<RequestCtx>();\n\n/**\n * Run a function within a request context.\n *\n * The requestId will be available via getRequestId() inside the callback\n * and any async operations it spawns.\n *\n * @param requestId - The correlation ID for this request\n * @param fn - The function to run within the context\n * @returns The return value of fn\n *\n * @example\n * ```typescript\n * await runWithContext('req-123', async () => {\n * console.log(getRequestId()); // 'req-123'\n * await someAsyncOperation();\n * console.log(getRequestId()); // still 'req-123'\n * });\n * ```\n */\nexport function runWithContext<T>(requestId: string, fn: () => T | Promise<T>): T | Promise<T> {\n\treturn store.run({ requestId }, fn);\n}\n\n/**\n * Get the current request ID from context.\n *\n * Returns undefined if called outside of a runWithContext() call.\n *\n * @returns The current request ID or undefined\n *\n * @example\n * ```typescript\n * // Outside context\n * getRequestId(); // undefined\n *\n * // Inside context\n * runWithContext('abc', () => {\n * getRequestId(); // 'abc'\n * });\n * ```\n */\nexport function getRequestId(): string | undefined {\n\treturn store.getStore()?.requestId;\n}\n\n/**\n * Generate a new unique request ID using UUID v4.\n *\n * @returns A UUID string in standard format\n *\n * @example\n * ```typescript\n * const id = generateRequestId();\n * // '550e8400-e29b-41d4-a716-446655440000'\n * ```\n */\nexport function generateRequestId(): string {\n\treturn randomUUID();\n}\n"],"names":["store","AsyncLocalStorage","runWithContext","requestId","fn","getRequestId","generateRequestId","randomUUID"],"mappings":";;AAwBA,MAAMA,QAAQ,IAAIC;AAqBX,SAASC,eAAkBC,SAAiB,EAAEC,EAAwB;IAC5E,OAAOJ,MAAM,GAAG,CAAC;QAAEG;IAAU,GAAGC;AACjC;AAoBO,SAASC;IACf,OAAOL,MAAM,QAAQ,IAAI;AAC1B;AAaO,SAASM;IACf,OAAOC;AACR"}
1
+ {"version":3,"file":"context/RequestContext.js","sources":["../../src/context/RequestContext.ts"],"sourcesContent":["/**\n * Request context management using AsyncLocalStorage for correlation IDs.\n *\n * Provides zero-cost request ID propagation across async boundaries\n * via Node.js AsyncLocalStorage.\n *\n * @module context\n */\n\nimport { AsyncLocalStorage } from 'node:async_hooks';\n\n/**\n * Internal context structure stored per-request.\n */\ninterface RequestCtx {\n\trequestId: string;\n}\n\n/**\n * AsyncLocalStorage instance for request context.\n * Stores requestId that propagates across async boundaries.\n */\nconst store = new AsyncLocalStorage<RequestCtx>();\n\n/**\n * Get the current request ID from context.\n *\n * Returns undefined if called outside of a runWithContext() call.\n *\n * @returns The current request ID or undefined\n */\nexport function getRequestId(): string | undefined {\n\treturn store.getStore()?.requestId;\n}\n"],"names":["store","AsyncLocalStorage","getRequestId"],"mappings":";AAsBA,MAAMA,QAAQ,IAAIC;AASX,SAASC;IACf,OAAOF,MAAM,QAAQ,IAAI;AAC1B"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Calibrator contracts — interfaces for confidence calibration.
3
+ *
4
+ * Defines the shape of calibration metrics, results, and the calibrator
5
+ * service that maps raw model confidence to calibrated probabilities.
6
+ *
7
+ * @module contracts/calibrator
8
+ */
9
+ import type { ThoughtType } from '../core/reasoning.js';
10
+ /**
11
+ * Aggregate calibration quality metrics for a session (or globally).
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const m: CalibrationMetrics = calibrator.metrics('session-1');
16
+ * console.log(m.brierScore, m.ece, m.sampleCount);
17
+ * ```
18
+ */
19
+ export interface CalibrationMetrics {
20
+ /** Brier score across all samples (lower is better). `null` if no samples. */
21
+ readonly brierScore: number | null;
22
+ /** Expected Calibration Error (lower is better). `null` if no samples. */
23
+ readonly ece: number | null;
24
+ /** Number of (prediction, outcome) samples backing the metrics. */
25
+ readonly sampleCount: number;
26
+ /** Per-thought-type Brier score breakdown. `null` per bucket if empty. */
27
+ readonly perTypeBrier: Record<ThoughtType, number | null>;
28
+ }
29
+ /**
30
+ * Result of calibrating a single raw confidence value.
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * const r: CalibrationResult = calibrator.calibrate(0.9, 'hypothesis', 'session-1');
35
+ * // r.calibrated may be lower than r.raw if the model is over-confident.
36
+ * ```
37
+ */
38
+ export interface CalibrationResult {
39
+ /** Original raw confidence in `[0, 1]`. */
40
+ readonly raw: number;
41
+ /** Calibrated confidence in `[0, 1]`. */
42
+ readonly calibrated: number;
43
+ /** Temperature used in the calibration mapping (1.0 = identity). */
44
+ readonly temperature: number;
45
+ /** Weight applied to the prior when blending with the raw signal. */
46
+ readonly priorWeight: number;
47
+ }
48
+ /**
49
+ * Calibrator service contract — converts raw confidence into calibrated
50
+ * probabilities and reports calibration quality.
51
+ *
52
+ * Implementations should be deterministic for the same `(raw, type, sessionId)`
53
+ * triple given a fixed internal state.
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * const result = calibrator.calibrate(0.85, 'verification', 'session-1');
58
+ * const stats = calibrator.metrics('session-1');
59
+ * calibrator.refit('session-1');
60
+ * ```
61
+ */
62
+ export interface ICalibrator {
63
+ /** Whether calibration is enabled. When `false`, `calibrate()` returns `raw` unchanged. */
64
+ readonly enabled: boolean;
65
+ /**
66
+ * Map a raw confidence value to a calibrated value.
67
+ *
68
+ * @param rawConfidence - Raw confidence in `[0, 1]`.
69
+ * @param type - Thought type the confidence is associated with.
70
+ * @param sessionId - Session identifier for per-session calibration state.
71
+ * @returns The calibration result.
72
+ */
73
+ calibrate(rawConfidence: number, type: ThoughtType, sessionId: string): CalibrationResult;
74
+ /**
75
+ * Get calibration metrics for a session, or globally if `sessionId` is omitted.
76
+ *
77
+ * @param sessionId - Optional session id; omit for global metrics.
78
+ * @returns Aggregate calibration metrics.
79
+ */
80
+ metrics(sessionId?: string): CalibrationMetrics;
81
+ /**
82
+ * Refit the calibration model from accumulated samples.
83
+ *
84
+ * @param sessionId - Optional session id; omit to refit global state.
85
+ */
86
+ refit(sessionId?: string): void;
87
+ }
88
+ //# sourceMappingURL=calibrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calibrator.d.ts","sourceRoot":"","sources":["../../src/contracts/calibrator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAkB;IAClC,8EAA8E;IAC9E,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,0EAA0E;IAC1E,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,mEAAmE;IACnE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,0EAA0E;IAC1E,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;CAC1D;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IACjC,2CAA2C;IAC3C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,oEAAoE;IACpE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,qEAAqE;IACrE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,WAAW;IAC3B,2FAA2F;IAC3F,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B;;;;;;;OAOG;IACH,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,iBAAiB,CAAC;IAC1F;;;;;OAKG;IACH,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAAC;IAChD;;;;OAIG;IACH,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC"}
@@ -0,0 +1 @@
1
+ export { };
@@ -6,5 +6,9 @@
6
6
  *
7
7
  * @module contracts
8
8
  */
9
- export { type DiscoveryCacheOptions, type IDiscoveryCache, type IMetrics, type IServerConfig, type ISkillRegistry, type IThoughtProcessor, type IToolRegistry, } from './interfaces.js';
9
+ export { type DiscoveryCacheOptions, type IDiscoveryCache, type IMetrics, type IOutcomeRecorder, type VerificationOutcome, } from './interfaces.js';
10
+ export type { StrategyContext, StrategyDecision, IReasoningStrategy } from './strategy.js';
11
+ export type { CalibrationMetrics, CalibrationResult, ICalibrator } from './calibrator.js';
12
+ export type { Summary, ISummaryStore } from './summary.js';
13
+ export type { SuspensionRecord, ISuspensionStore } from './suspension.js';
10
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACN,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,aAAa,GAClB,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACN,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,GACxB,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAE3F,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE1F,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE3D,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -10,6 +10,7 @@
10
10
  *
11
11
  * @module contracts
12
12
  */
13
+ import type { Edge } from '../core/graph/Edge.js';
13
14
  /**
14
15
  * Metrics interface for observability.
15
16
  *
@@ -57,51 +58,129 @@ export interface DiscoveryCacheOptions {
57
58
  metrics?: IMetrics;
58
59
  }
59
60
  /**
60
- * Thought processor interface for processing thought data.
61
+ * Outcome recording interface for calibration data collection.
61
62
  *
62
- * Defines the contract for the main processing pipeline.
63
+ * Captures verification outcomes (predicted vs actual) to enable
64
+ * confidence calibration (Brier score, ECE) in later phases.
63
65
  */
64
- export interface IThoughtProcessor {
65
- process(input: unknown): Promise<unknown>;
66
+ export interface VerificationOutcome {
67
+ /** The thought id that made the prediction. */
68
+ thoughtId: string;
69
+ /** The thought number of the prediction (backward compat). */
70
+ thoughtNumber: number;
71
+ /** The session this outcome belongs to. */
72
+ sessionId: string;
73
+ /** The predicted confidence (0-1). */
74
+ predicted: number;
75
+ /** The actual outcome (0 = wrong, 1 = correct). */
76
+ actual: 0 | 1;
77
+ /** The thought type that made the prediction. */
78
+ type: string;
79
+ /** Timestamp of outcome recording. */
80
+ recordedAt: number;
66
81
  }
67
82
  /**
68
- * Server configuration interface.
83
+ * Interface for recording verification outcomes for calibration.
69
84
  *
70
- * Defines the contract for server configuration used by the DI container.
85
+ * Implementation is no-op when feature flags disable outcome recording.
86
+ * Enabled outcomes feed into the Calibrator (Phase 1 Wave A.3) for
87
+ * Brier score and ECE computation.
71
88
  */
72
- export interface IServerConfig {
73
- maxHistorySize: number;
74
- maxBranches: number;
75
- maxBranchSize: number;
76
- skillDirs?: string[];
77
- discoveryCache?: DiscoveryCacheOptions;
78
- persistence?: Record<string, unknown>;
79
- persistenceBufferSize?: number;
80
- persistenceFlushInterval?: number;
81
- persistenceMaxRetries?: number;
89
+ export interface IOutcomeRecorder {
90
+ /**
91
+ * Record a verification outcome.
92
+ * No-op when outcome recording is disabled.
93
+ */
94
+ recordVerification(outcome: Omit<VerificationOutcome, 'recordedAt'>): void;
95
+ /**
96
+ * Get all recorded outcomes for a session.
97
+ * Returns empty array when disabled or no outcomes recorded.
98
+ */
99
+ getOutcomes(sessionId: string): VerificationOutcome[];
100
+ /**
101
+ * Get outcomes across all sessions.
102
+ * Returns empty array when disabled.
103
+ */
104
+ getAllOutcomes(): VerificationOutcome[];
105
+ /**
106
+ * Clear outcomes for a specific session.
107
+ */
108
+ clearOutcomes(sessionId: string): void;
109
+ /**
110
+ * Whether outcome recording is currently enabled.
111
+ */
112
+ readonly enabled: boolean;
82
113
  }
83
114
  /**
84
- * Tool registry interface for managing MCP tools.
115
+ * Edge store interface for managing directed acyclic graph edges.
85
116
  *
86
- * Defines the contract for tool registration and discovery.
87
- */
88
- export interface IToolRegistry {
89
- addTool(tool: unknown): void;
90
- getTool(name: string): unknown;
91
- listTools(): unknown[];
92
- discover(): void;
93
- discoverAsync(): Promise<number>;
94
- }
95
- /**
96
- * Skill registry interface for managing Claude skills.
117
+ * Stores relationships between thoughts as typed directed edges.
118
+ * Each edge connects two thoughts (by their `id` field) with a semantic
119
+ * relationship kind that drives reasoning controller decisions.
120
+ *
121
+ * Implementations must provide per-session isolation — edges in one
122
+ * session are invisible to another.
97
123
  *
98
- * Defines the contract for skill registration and discovery.
124
+ * @example
125
+ * ```typescript
126
+ * const store: IEdgeStore = new EdgeStore();
127
+ * store.addEdge({ id: 'abc', from: 'thought-1', to: 'thought-2', kind: 'sequence', sessionId: 's1', createdAt: Date.now() });
128
+ * const edges = store.outgoing('s1', 'thought-1');
129
+ * ```
99
130
  */
100
- export interface ISkillRegistry {
101
- addSkill(skill: unknown): void;
102
- getSkill(name: string): unknown;
103
- listSkills(): unknown[];
104
- discover(): void;
105
- discoverAsync(): Promise<number>;
131
+ export interface IEdgeStore {
132
+ /**
133
+ * Add a directed edge to the store.
134
+ * Rejects self-edges (from === to) by throwing InvalidEdgeError.
135
+ * Deduplicates identical (from, to, kind, sessionId) tuples silently.
136
+ *
137
+ * @param edge - The edge to add
138
+ * @throws {InvalidEdgeError} When from === to
139
+ */
140
+ addEdge(edge: Edge): void;
141
+ /**
142
+ * Retrieve a specific edge by its id.
143
+ *
144
+ * @param id - The edge's unique identifier
145
+ * @returns The edge, or undefined if not found
146
+ */
147
+ getEdge(id: string): Edge | undefined;
148
+ /**
149
+ * Get all outgoing edges from a thought, sorted by createdAt ascending.
150
+ *
151
+ * @param sessionId - Session to query within
152
+ * @param from - Source thought id
153
+ * @returns Array of outgoing edges (may be empty)
154
+ */
155
+ outgoing(sessionId: string, from: string): readonly Edge[];
156
+ /**
157
+ * Get all incoming edges to a thought, sorted by createdAt ascending.
158
+ *
159
+ * @param sessionId - Session to query within
160
+ * @param to - Target thought id
161
+ * @returns Array of incoming edges (may be empty)
162
+ */
163
+ incoming(sessionId: string, to: string): readonly Edge[];
164
+ /**
165
+ * Get all edges in a session.
166
+ *
167
+ * @param sessionId - Session to query
168
+ * @returns All edges in the session (may be empty)
169
+ */
170
+ edgesForSession(sessionId: string): readonly Edge[];
171
+ /**
172
+ * Clear all edges for a specific session.
173
+ * Other sessions are unaffected.
174
+ *
175
+ * @param sessionId - Session to clear
176
+ */
177
+ clearSession(sessionId: string): void;
178
+ /**
179
+ * Count edges.
180
+ *
181
+ * @param sessionId - If provided, count for that session only
182
+ * @returns Total edge count (across all sessions if no sessionId provided)
183
+ */
184
+ size(sessionId?: string): number;
106
185
  }
107
186
  //# sourceMappingURL=interfaces.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/contracts/interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/contracts/interfaces.ts"],"names":[],"mappings":"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"}