@nahisaho/musubix-core 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/bin/musubix.js +18 -0
  2. package/dist/__tests__/index.test.d.ts +2 -0
  3. package/dist/__tests__/index.test.d.ts.map +1 -0
  4. package/dist/__tests__/index.test.js +27 -0
  5. package/dist/__tests__/index.test.js.map +1 -0
  6. package/dist/auth/auth-manager.d.ts +320 -0
  7. package/dist/auth/auth-manager.d.ts.map +1 -0
  8. package/dist/auth/auth-manager.js +580 -0
  9. package/dist/auth/auth-manager.js.map +1 -0
  10. package/dist/cli/base.d.ts +58 -0
  11. package/dist/cli/base.d.ts.map +1 -0
  12. package/dist/cli/base.js +93 -0
  13. package/dist/cli/base.js.map +1 -0
  14. package/dist/cli/commands/help.d.ts +17 -0
  15. package/dist/cli/commands/help.d.ts.map +1 -0
  16. package/dist/cli/commands/help.js +228 -0
  17. package/dist/cli/commands/help.js.map +1 -0
  18. package/dist/cli/commands/index.d.ts +14 -0
  19. package/dist/cli/commands/index.d.ts.map +1 -0
  20. package/dist/cli/commands/index.js +25 -0
  21. package/dist/cli/commands/index.js.map +1 -0
  22. package/dist/cli/commands/init.d.ts +38 -0
  23. package/dist/cli/commands/init.d.ts.map +1 -0
  24. package/dist/cli/commands/init.js +258 -0
  25. package/dist/cli/commands/init.js.map +1 -0
  26. package/dist/cli/index.d.ts +9 -0
  27. package/dist/cli/index.d.ts.map +1 -0
  28. package/dist/cli/index.js +9 -0
  29. package/dist/cli/index.js.map +1 -0
  30. package/dist/codegen/coding-standards.d.ts +250 -0
  31. package/dist/codegen/coding-standards.d.ts.map +1 -0
  32. package/dist/codegen/coding-standards.js +976 -0
  33. package/dist/codegen/coding-standards.js.map +1 -0
  34. package/dist/codegen/coverage-reporter.d.ts +264 -0
  35. package/dist/codegen/coverage-reporter.d.ts.map +1 -0
  36. package/dist/codegen/coverage-reporter.js +697 -0
  37. package/dist/codegen/coverage-reporter.js.map +1 -0
  38. package/dist/codegen/dependency-analyzer.d.ts +271 -0
  39. package/dist/codegen/dependency-analyzer.d.ts.map +1 -0
  40. package/dist/codegen/dependency-analyzer.js +661 -0
  41. package/dist/codegen/dependency-analyzer.js.map +1 -0
  42. package/dist/codegen/generator.d.ts +275 -0
  43. package/dist/codegen/generator.d.ts.map +1 -0
  44. package/dist/codegen/generator.js +781 -0
  45. package/dist/codegen/generator.js.map +1 -0
  46. package/dist/codegen/index.d.ts +18 -0
  47. package/dist/codegen/index.d.ts.map +1 -0
  48. package/dist/codegen/index.js +27 -0
  49. package/dist/codegen/index.js.map +1 -0
  50. package/dist/codegen/integration-test-generator.d.ts +312 -0
  51. package/dist/codegen/integration-test-generator.d.ts.map +1 -0
  52. package/dist/codegen/integration-test-generator.js +765 -0
  53. package/dist/codegen/integration-test-generator.js.map +1 -0
  54. package/dist/codegen/pattern-conformance.d.ts +309 -0
  55. package/dist/codegen/pattern-conformance.d.ts.map +1 -0
  56. package/dist/codegen/pattern-conformance.js +590 -0
  57. package/dist/codegen/pattern-conformance.js.map +1 -0
  58. package/dist/codegen/quality-metrics.d.ts +235 -0
  59. package/dist/codegen/quality-metrics.d.ts.map +1 -0
  60. package/dist/codegen/quality-metrics.js +439 -0
  61. package/dist/codegen/quality-metrics.js.map +1 -0
  62. package/dist/codegen/security-scanner.d.ts +179 -0
  63. package/dist/codegen/security-scanner.d.ts.map +1 -0
  64. package/dist/codegen/security-scanner.js +495 -0
  65. package/dist/codegen/security-scanner.js.map +1 -0
  66. package/dist/codegen/static-analyzer.d.ts +188 -0
  67. package/dist/codegen/static-analyzer.d.ts.map +1 -0
  68. package/dist/codegen/static-analyzer.js +490 -0
  69. package/dist/codegen/static-analyzer.js.map +1 -0
  70. package/dist/codegen/unit-test-generator.d.ts +289 -0
  71. package/dist/codegen/unit-test-generator.d.ts.map +1 -0
  72. package/dist/codegen/unit-test-generator.js +634 -0
  73. package/dist/codegen/unit-test-generator.js.map +1 -0
  74. package/dist/design/adr-generator.d.ts +227 -0
  75. package/dist/design/adr-generator.d.ts.map +1 -0
  76. package/dist/design/adr-generator.js +423 -0
  77. package/dist/design/adr-generator.js.map +1 -0
  78. package/dist/design/c4-generator.d.ts +267 -0
  79. package/dist/design/c4-generator.d.ts.map +1 -0
  80. package/dist/design/c4-generator.js +453 -0
  81. package/dist/design/c4-generator.js.map +1 -0
  82. package/dist/design/framework-optimizer.d.ts +190 -0
  83. package/dist/design/framework-optimizer.d.ts.map +1 -0
  84. package/dist/design/framework-optimizer.js +589 -0
  85. package/dist/design/framework-optimizer.js.map +1 -0
  86. package/dist/design/index.d.ts +12 -0
  87. package/dist/design/index.d.ts.map +1 -0
  88. package/dist/design/index.js +13 -0
  89. package/dist/design/index.js.map +1 -0
  90. package/dist/design/pattern-detector.d.ts +270 -0
  91. package/dist/design/pattern-detector.d.ts.map +1 -0
  92. package/dist/design/pattern-detector.js +621 -0
  93. package/dist/design/pattern-detector.js.map +1 -0
  94. package/dist/design/solid-validator.d.ts +188 -0
  95. package/dist/design/solid-validator.d.ts.map +1 -0
  96. package/dist/design/solid-validator.js +579 -0
  97. package/dist/design/solid-validator.js.map +1 -0
  98. package/dist/error/data-persistence.d.ts +311 -0
  99. package/dist/error/data-persistence.d.ts.map +1 -0
  100. package/dist/error/data-persistence.js +586 -0
  101. package/dist/error/data-persistence.js.map +1 -0
  102. package/dist/error/graceful-degradation.d.ts +309 -0
  103. package/dist/error/graceful-degradation.d.ts.map +1 -0
  104. package/dist/error/graceful-degradation.js +510 -0
  105. package/dist/error/graceful-degradation.js.map +1 -0
  106. package/dist/error/index.d.ts +11 -0
  107. package/dist/error/index.d.ts.map +1 -0
  108. package/dist/error/index.js +19 -0
  109. package/dist/error/index.js.map +1 -0
  110. package/dist/explanation/explanation-generator.d.ts +228 -0
  111. package/dist/explanation/explanation-generator.d.ts.map +1 -0
  112. package/dist/explanation/explanation-generator.js +662 -0
  113. package/dist/explanation/explanation-generator.js.map +1 -0
  114. package/dist/explanation/index.d.ts +11 -0
  115. package/dist/explanation/index.d.ts.map +1 -0
  116. package/dist/explanation/index.js +19 -0
  117. package/dist/explanation/index.js.map +1 -0
  118. package/dist/explanation/reasoning-chain.d.ts +314 -0
  119. package/dist/explanation/reasoning-chain.d.ts.map +1 -0
  120. package/dist/explanation/reasoning-chain.js +414 -0
  121. package/dist/explanation/reasoning-chain.js.map +1 -0
  122. package/dist/explanation/visual-explanation.d.ts +315 -0
  123. package/dist/explanation/visual-explanation.d.ts.map +1 -0
  124. package/dist/explanation/visual-explanation.js +667 -0
  125. package/dist/explanation/visual-explanation.js.map +1 -0
  126. package/dist/index.d.ts +33 -0
  127. package/dist/index.d.ts.map +1 -0
  128. package/dist/index.js +47 -0
  129. package/dist/index.js.map +1 -0
  130. package/dist/requirements/decomposer.d.ts +235 -0
  131. package/dist/requirements/decomposer.d.ts.map +1 -0
  132. package/dist/requirements/decomposer.js +587 -0
  133. package/dist/requirements/decomposer.js.map +1 -0
  134. package/dist/requirements/related-finder.d.ts +261 -0
  135. package/dist/requirements/related-finder.d.ts.map +1 -0
  136. package/dist/requirements/related-finder.js +629 -0
  137. package/dist/requirements/related-finder.js.map +1 -0
  138. package/dist/traceability/impact.d.ts +196 -0
  139. package/dist/traceability/impact.d.ts.map +1 -0
  140. package/dist/traceability/impact.js +438 -0
  141. package/dist/traceability/impact.js.map +1 -0
  142. package/dist/traceability/index.d.ts +9 -0
  143. package/dist/traceability/index.d.ts.map +1 -0
  144. package/dist/traceability/index.js +10 -0
  145. package/dist/traceability/index.js.map +1 -0
  146. package/dist/traceability/manager.d.ts +266 -0
  147. package/dist/traceability/manager.d.ts.map +1 -0
  148. package/dist/traceability/manager.js +412 -0
  149. package/dist/traceability/manager.js.map +1 -0
  150. package/dist/types/common.d.ts +294 -0
  151. package/dist/types/common.d.ts.map +1 -0
  152. package/dist/types/common.js +15 -0
  153. package/dist/types/common.js.map +1 -0
  154. package/dist/types/ears.d.ts +158 -0
  155. package/dist/types/ears.d.ts.map +1 -0
  156. package/dist/types/ears.js +33 -0
  157. package/dist/types/ears.js.map +1 -0
  158. package/dist/types/errors.d.ts +176 -0
  159. package/dist/types/errors.d.ts.map +1 -0
  160. package/dist/types/errors.js +55 -0
  161. package/dist/types/errors.js.map +1 -0
  162. package/dist/types/index.d.ts +10 -0
  163. package/dist/types/index.d.ts.map +1 -0
  164. package/dist/types/index.js +10 -0
  165. package/dist/types/index.js.map +1 -0
  166. package/dist/utils/data-protector.d.ts +122 -0
  167. package/dist/utils/data-protector.d.ts.map +1 -0
  168. package/dist/utils/data-protector.js +275 -0
  169. package/dist/utils/data-protector.js.map +1 -0
  170. package/dist/utils/error-handler.d.ts +101 -0
  171. package/dist/utils/error-handler.d.ts.map +1 -0
  172. package/dist/utils/error-handler.js +324 -0
  173. package/dist/utils/error-handler.js.map +1 -0
  174. package/dist/utils/i18n-manager.d.ts +259 -0
  175. package/dist/utils/i18n-manager.d.ts.map +1 -0
  176. package/dist/utils/i18n-manager.js +554 -0
  177. package/dist/utils/i18n-manager.js.map +1 -0
  178. package/dist/utils/index.d.ts +10 -0
  179. package/dist/utils/index.d.ts.map +1 -0
  180. package/dist/utils/index.js +10 -0
  181. package/dist/utils/index.js.map +1 -0
  182. package/dist/utils/logger.d.ts +120 -0
  183. package/dist/utils/logger.d.ts.map +1 -0
  184. package/dist/utils/logger.js +237 -0
  185. package/dist/utils/logger.js.map +1 -0
  186. package/dist/utils/performance-profiler.d.ts +251 -0
  187. package/dist/utils/performance-profiler.d.ts.map +1 -0
  188. package/dist/utils/performance-profiler.js +458 -0
  189. package/dist/utils/performance-profiler.js.map +1 -0
  190. package/dist/utils/scalability-optimizer.d.ts +294 -0
  191. package/dist/utils/scalability-optimizer.d.ts.map +1 -0
  192. package/dist/utils/scalability-optimizer.js +606 -0
  193. package/dist/utils/scalability-optimizer.js.map +1 -0
  194. package/dist/utils/structured-logger.d.ts +294 -0
  195. package/dist/utils/structured-logger.d.ts.map +1 -0
  196. package/dist/utils/structured-logger.js +630 -0
  197. package/dist/utils/structured-logger.js.map +1 -0
  198. package/dist/utils/version-compatibility.d.ts +217 -0
  199. package/dist/utils/version-compatibility.d.ts.map +1 -0
  200. package/dist/utils/version-compatibility.js +443 -0
  201. package/dist/utils/version-compatibility.js.map +1 -0
  202. package/dist/validators/ears-validator.d.ts +182 -0
  203. package/dist/validators/ears-validator.d.ts.map +1 -0
  204. package/dist/validators/ears-validator.js +357 -0
  205. package/dist/validators/ears-validator.js.map +1 -0
  206. package/dist/validators/index.d.ts +8 -0
  207. package/dist/validators/index.d.ts.map +1 -0
  208. package/dist/validators/index.js +9 -0
  209. package/dist/validators/index.js.map +1 -0
  210. package/dist/version.d.ts +8 -0
  211. package/dist/version.d.ts.map +1 -0
  212. package/dist/version.js +8 -0
  213. package/dist/version.js.map +1 -0
  214. package/package.json +100 -0
@@ -0,0 +1,414 @@
1
+ /**
2
+ * Reasoning Chain Recorder
3
+ *
4
+ * Records AI reasoning chains for explainability
5
+ *
6
+ * @packageDocumentation
7
+ * @module explanation/reasoning-chain
8
+ *
9
+ * @see REQ-EXP-001 - Reasoning Chain Recording
10
+ * @see Article VIII - Transparency Standards
11
+ */
12
+ /**
13
+ * Default configuration
14
+ */
15
+ export const DEFAULT_RECORDER_CONFIG = {
16
+ maxStepsPerChain: 100,
17
+ maxChainsInMemory: 1000,
18
+ autoPersist: true,
19
+ persistThreshold: 100,
20
+ recordEvidence: true,
21
+ recordAlternatives: true,
22
+ minConfidenceToRecord: 0,
23
+ };
24
+ /**
25
+ * Reasoning Chain Recorder
26
+ */
27
+ export class ReasoningChainRecorder {
28
+ config;
29
+ chains;
30
+ activeChain = null;
31
+ stepCounter = 0;
32
+ persistedChains = [];
33
+ constructor(config) {
34
+ this.config = { ...DEFAULT_RECORDER_CONFIG, ...config };
35
+ this.chains = new Map();
36
+ }
37
+ /**
38
+ * Start a new reasoning chain
39
+ */
40
+ startChain(task, sessionId) {
41
+ const chainId = this.generateId('chain');
42
+ const chain = {
43
+ id: chainId,
44
+ sessionId: sessionId ?? this.generateId('session'),
45
+ task,
46
+ steps: [],
47
+ startTime: new Date(),
48
+ overallConfidence: 1,
49
+ status: 'in-progress',
50
+ };
51
+ this.chains.set(chainId, chain);
52
+ this.activeChain = chain;
53
+ // Check memory limit
54
+ this.checkMemoryLimit();
55
+ return chainId;
56
+ }
57
+ /**
58
+ * Add a step to the current chain
59
+ */
60
+ addStep(type, description, options) {
61
+ if (!this.activeChain) {
62
+ throw new Error('No active reasoning chain. Call startChain() first.');
63
+ }
64
+ if (this.activeChain.steps.length >= this.config.maxStepsPerChain) {
65
+ throw new Error(`Maximum steps (${this.config.maxStepsPerChain}) reached for this chain.`);
66
+ }
67
+ const stepId = this.generateId('step');
68
+ const confidenceScore = options?.confidence ?? 1;
69
+ const step = {
70
+ id: stepId,
71
+ type,
72
+ description,
73
+ input: options?.input,
74
+ output: options?.output,
75
+ confidence: this.scoreToLevel(confidenceScore),
76
+ confidenceScore,
77
+ timestamp: new Date(),
78
+ parentId: options?.parentId,
79
+ evidence: this.config.recordEvidence ? options?.evidence : undefined,
80
+ alternatives: this.config.recordAlternatives ? options?.alternatives : undefined,
81
+ metadata: options?.metadata,
82
+ };
83
+ // Calculate duration from previous step
84
+ if (this.activeChain.steps.length > 0) {
85
+ const prevStep = this.activeChain.steps[this.activeChain.steps.length - 1];
86
+ prevStep.duration = step.timestamp.getTime() - prevStep.timestamp.getTime();
87
+ }
88
+ // Filter by minimum confidence
89
+ if (confidenceScore >= this.config.minConfidenceToRecord) {
90
+ this.activeChain.steps.push(step);
91
+ }
92
+ // Update overall confidence
93
+ this.updateOverallConfidence();
94
+ return stepId;
95
+ }
96
+ /**
97
+ * Record input step
98
+ */
99
+ recordInput(description, input, confidence = 1) {
100
+ return this.addStep('input', description, { input, confidence });
101
+ }
102
+ /**
103
+ * Record analysis step
104
+ */
105
+ recordAnalysis(description, input, output, confidence = 1, evidence) {
106
+ return this.addStep('analysis', description, { input, output, confidence, evidence });
107
+ }
108
+ /**
109
+ * Record inference step
110
+ */
111
+ recordInference(description, premises, conclusion, confidence = 1, alternatives) {
112
+ return this.addStep('inference', description, {
113
+ input: premises,
114
+ output: conclusion,
115
+ confidence,
116
+ alternatives,
117
+ });
118
+ }
119
+ /**
120
+ * Record decision step
121
+ */
122
+ recordDecision(description, options, chosen, confidence = 1, alternatives) {
123
+ return this.addStep('decision', description, {
124
+ input: options,
125
+ output: chosen,
126
+ confidence,
127
+ alternatives,
128
+ });
129
+ }
130
+ /**
131
+ * Record action step
132
+ */
133
+ recordAction(description, action, result, confidence = 1) {
134
+ return this.addStep('action', description, { input: action, output: result, confidence });
135
+ }
136
+ /**
137
+ * Record validation step
138
+ */
139
+ recordValidation(description, data, isValid, confidence = 1, evidence) {
140
+ return this.addStep('validation', description, {
141
+ input: data,
142
+ output: isValid,
143
+ confidence,
144
+ evidence,
145
+ });
146
+ }
147
+ /**
148
+ * Record output step
149
+ */
150
+ recordOutput(description, output, confidence = 1) {
151
+ return this.addStep('output', description, { output, confidence });
152
+ }
153
+ /**
154
+ * Record error step
155
+ */
156
+ recordError(description, error, confidence = 1) {
157
+ return this.addStep('error', description, { input: error, confidence });
158
+ }
159
+ /**
160
+ * Record fallback step
161
+ */
162
+ recordFallback(description, reason, fallbackAction, confidence = 1) {
163
+ return this.addStep('fallback', description, {
164
+ input: reason,
165
+ output: fallbackAction,
166
+ confidence,
167
+ });
168
+ }
169
+ /**
170
+ * Complete the current chain
171
+ */
172
+ completeChain(outcome) {
173
+ if (!this.activeChain) {
174
+ throw new Error('No active reasoning chain to complete.');
175
+ }
176
+ this.activeChain.endTime = new Date();
177
+ this.activeChain.outcome = outcome;
178
+ this.activeChain.status = outcome.success ? 'completed' : 'failed';
179
+ // Calculate final step duration
180
+ if (this.activeChain.steps.length > 0) {
181
+ const lastStep = this.activeChain.steps[this.activeChain.steps.length - 1];
182
+ lastStep.duration = this.activeChain.endTime.getTime() - lastStep.timestamp.getTime();
183
+ }
184
+ const completedChain = this.activeChain;
185
+ this.activeChain = null;
186
+ // Auto-persist if configured
187
+ if (this.config.autoPersist && this.chains.size >= this.config.persistThreshold) {
188
+ this.persistChains();
189
+ }
190
+ return completedChain;
191
+ }
192
+ /**
193
+ * Cancel the current chain
194
+ */
195
+ cancelChain(reason) {
196
+ if (this.activeChain) {
197
+ this.activeChain.endTime = new Date();
198
+ this.activeChain.status = 'cancelled';
199
+ this.activeChain.error = reason;
200
+ this.activeChain = null;
201
+ }
202
+ }
203
+ /**
204
+ * Fail the current chain
205
+ */
206
+ failChain(error) {
207
+ if (!this.activeChain) {
208
+ return null;
209
+ }
210
+ this.activeChain.endTime = new Date();
211
+ this.activeChain.status = 'failed';
212
+ this.activeChain.error = error;
213
+ const failedChain = this.activeChain;
214
+ this.activeChain = null;
215
+ return failedChain;
216
+ }
217
+ /**
218
+ * Get current active chain
219
+ */
220
+ getActiveChain() {
221
+ return this.activeChain;
222
+ }
223
+ /**
224
+ * Get chain by ID
225
+ */
226
+ getChain(chainId) {
227
+ return this.chains.get(chainId);
228
+ }
229
+ /**
230
+ * Query chains
231
+ */
232
+ queryChains(query) {
233
+ let results = [...this.chains.values(), ...this.persistedChains];
234
+ // Filter by session IDs
235
+ if (query.sessionIds?.length) {
236
+ results = results.filter((c) => query.sessionIds.includes(c.sessionId));
237
+ }
238
+ // Filter by time range
239
+ if (query.timeRange) {
240
+ results = results.filter((c) => c.startTime >= query.timeRange.start &&
241
+ c.startTime <= query.timeRange.end);
242
+ }
243
+ // Filter by status
244
+ if (query.status?.length) {
245
+ results = results.filter((c) => query.status.includes(c.status));
246
+ }
247
+ // Filter by confidence
248
+ if (query.minConfidence !== undefined) {
249
+ results = results.filter((c) => c.overallConfidence >= query.minConfidence);
250
+ }
251
+ // Filter by task pattern
252
+ if (query.taskPattern) {
253
+ const pattern = new RegExp(query.taskPattern, 'i');
254
+ results = results.filter((c) => pattern.test(c.task));
255
+ }
256
+ // Sort by start time (newest first)
257
+ results.sort((a, b) => b.startTime.getTime() - a.startTime.getTime());
258
+ // Apply limit
259
+ if (query.limit) {
260
+ results = results.slice(0, query.limit);
261
+ }
262
+ return results;
263
+ }
264
+ /**
265
+ * Get statistics
266
+ */
267
+ getStatistics() {
268
+ const allChains = [...this.chains.values(), ...this.persistedChains];
269
+ const stepTypeDistribution = {
270
+ input: 0,
271
+ analysis: 0,
272
+ inference: 0,
273
+ decision: 0,
274
+ action: 0,
275
+ validation: 0,
276
+ output: 0,
277
+ error: 0,
278
+ fallback: 0,
279
+ };
280
+ const confidenceDistribution = {
281
+ high: 0,
282
+ medium: 0,
283
+ low: 0,
284
+ uncertain: 0,
285
+ };
286
+ let totalSteps = 0;
287
+ let totalConfidence = 0;
288
+ let totalDuration = 0;
289
+ let completedCount = 0;
290
+ let failedCount = 0;
291
+ for (const chain of allChains) {
292
+ totalSteps += chain.steps.length;
293
+ totalConfidence += chain.overallConfidence;
294
+ if (chain.endTime) {
295
+ totalDuration += chain.endTime.getTime() - chain.startTime.getTime();
296
+ }
297
+ if (chain.status === 'completed')
298
+ completedCount++;
299
+ if (chain.status === 'failed')
300
+ failedCount++;
301
+ for (const step of chain.steps) {
302
+ stepTypeDistribution[step.type]++;
303
+ confidenceDistribution[step.confidence]++;
304
+ }
305
+ }
306
+ const chainCount = allChains.length;
307
+ return {
308
+ totalChains: chainCount,
309
+ completedChains: completedCount,
310
+ failedChains: failedCount,
311
+ avgStepsPerChain: chainCount > 0 ? Math.round((totalSteps / chainCount) * 100) / 100 : 0,
312
+ avgConfidence: chainCount > 0 ? Math.round((totalConfidence / chainCount) * 100) / 100 : 0,
313
+ avgDuration: chainCount > 0 ? Math.round(totalDuration / chainCount) : 0,
314
+ stepTypeDistribution,
315
+ confidenceDistribution,
316
+ };
317
+ }
318
+ /**
319
+ * Export chain to JSON
320
+ */
321
+ exportChain(chainId) {
322
+ const chain = this.getChain(chainId);
323
+ if (!chain)
324
+ return null;
325
+ return JSON.stringify(chain, null, 2);
326
+ }
327
+ /**
328
+ * Import chain from JSON
329
+ */
330
+ importChain(json) {
331
+ const chain = JSON.parse(json);
332
+ chain.startTime = new Date(chain.startTime);
333
+ if (chain.endTime)
334
+ chain.endTime = new Date(chain.endTime);
335
+ for (const step of chain.steps) {
336
+ step.timestamp = new Date(step.timestamp);
337
+ }
338
+ this.chains.set(chain.id, chain);
339
+ return chain;
340
+ }
341
+ /**
342
+ * Clear all chains
343
+ */
344
+ clear() {
345
+ this.chains.clear();
346
+ this.persistedChains = [];
347
+ this.activeChain = null;
348
+ }
349
+ /**
350
+ * Generate unique ID
351
+ */
352
+ generateId(prefix) {
353
+ this.stepCounter++;
354
+ return `${prefix}-${Date.now()}-${this.stepCounter}`;
355
+ }
356
+ /**
357
+ * Convert confidence score to level
358
+ */
359
+ scoreToLevel(score) {
360
+ if (score >= 0.8)
361
+ return 'high';
362
+ if (score >= 0.5)
363
+ return 'medium';
364
+ if (score >= 0.2)
365
+ return 'low';
366
+ return 'uncertain';
367
+ }
368
+ /**
369
+ * Update overall confidence of active chain
370
+ */
371
+ updateOverallConfidence() {
372
+ if (!this.activeChain || this.activeChain.steps.length === 0)
373
+ return;
374
+ const scores = this.activeChain.steps.map((s) => s.confidenceScore);
375
+ // Use geometric mean for combined confidence
376
+ const product = scores.reduce((a, b) => a * b, 1);
377
+ this.activeChain.overallConfidence = Math.pow(product, 1 / scores.length);
378
+ }
379
+ /**
380
+ * Check and enforce memory limit
381
+ */
382
+ checkMemoryLimit() {
383
+ if (this.chains.size > this.config.maxChainsInMemory) {
384
+ // Persist oldest chains
385
+ const chainsToMove = this.chains.size - this.config.maxChainsInMemory + 10;
386
+ const sortedChains = [...this.chains.entries()]
387
+ .sort((a, b) => a[1].startTime.getTime() - b[1].startTime.getTime());
388
+ for (let i = 0; i < chainsToMove && i < sortedChains.length; i++) {
389
+ const [id, chain] = sortedChains[i];
390
+ if (chain !== this.activeChain) {
391
+ this.persistedChains.push(chain);
392
+ this.chains.delete(id);
393
+ }
394
+ }
395
+ }
396
+ }
397
+ /**
398
+ * Persist chains to storage
399
+ */
400
+ persistChains() {
401
+ const completedChains = [...this.chains.values()].filter((c) => c.status !== 'in-progress' && c !== this.activeChain);
402
+ for (const chain of completedChains) {
403
+ this.persistedChains.push(chain);
404
+ this.chains.delete(chain.id);
405
+ }
406
+ }
407
+ }
408
+ /**
409
+ * Create reasoning chain recorder instance
410
+ */
411
+ export function createReasoningChainRecorder(config) {
412
+ return new ReasoningChainRecorder(config);
413
+ }
414
+ //# sourceMappingURL=reasoning-chain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reasoning-chain.js","sourceRoot":"","sources":["../../src/explanation/reasoning-chain.ts"],"names":[],"mappings":"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"}