@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.
- package/bin/musubix.js +18 -0
- package/dist/__tests__/index.test.d.ts +2 -0
- package/dist/__tests__/index.test.d.ts.map +1 -0
- package/dist/__tests__/index.test.js +27 -0
- package/dist/__tests__/index.test.js.map +1 -0
- package/dist/auth/auth-manager.d.ts +320 -0
- package/dist/auth/auth-manager.d.ts.map +1 -0
- package/dist/auth/auth-manager.js +580 -0
- package/dist/auth/auth-manager.js.map +1 -0
- package/dist/cli/base.d.ts +58 -0
- package/dist/cli/base.d.ts.map +1 -0
- package/dist/cli/base.js +93 -0
- package/dist/cli/base.js.map +1 -0
- package/dist/cli/commands/help.d.ts +17 -0
- package/dist/cli/commands/help.d.ts.map +1 -0
- package/dist/cli/commands/help.js +228 -0
- package/dist/cli/commands/help.js.map +1 -0
- package/dist/cli/commands/index.d.ts +14 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +25 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/init.d.ts +38 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +258 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/index.d.ts +9 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +9 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/codegen/coding-standards.d.ts +250 -0
- package/dist/codegen/coding-standards.d.ts.map +1 -0
- package/dist/codegen/coding-standards.js +976 -0
- package/dist/codegen/coding-standards.js.map +1 -0
- package/dist/codegen/coverage-reporter.d.ts +264 -0
- package/dist/codegen/coverage-reporter.d.ts.map +1 -0
- package/dist/codegen/coverage-reporter.js +697 -0
- package/dist/codegen/coverage-reporter.js.map +1 -0
- package/dist/codegen/dependency-analyzer.d.ts +271 -0
- package/dist/codegen/dependency-analyzer.d.ts.map +1 -0
- package/dist/codegen/dependency-analyzer.js +661 -0
- package/dist/codegen/dependency-analyzer.js.map +1 -0
- package/dist/codegen/generator.d.ts +275 -0
- package/dist/codegen/generator.d.ts.map +1 -0
- package/dist/codegen/generator.js +781 -0
- package/dist/codegen/generator.js.map +1 -0
- package/dist/codegen/index.d.ts +18 -0
- package/dist/codegen/index.d.ts.map +1 -0
- package/dist/codegen/index.js +27 -0
- package/dist/codegen/index.js.map +1 -0
- package/dist/codegen/integration-test-generator.d.ts +312 -0
- package/dist/codegen/integration-test-generator.d.ts.map +1 -0
- package/dist/codegen/integration-test-generator.js +765 -0
- package/dist/codegen/integration-test-generator.js.map +1 -0
- package/dist/codegen/pattern-conformance.d.ts +309 -0
- package/dist/codegen/pattern-conformance.d.ts.map +1 -0
- package/dist/codegen/pattern-conformance.js +590 -0
- package/dist/codegen/pattern-conformance.js.map +1 -0
- package/dist/codegen/quality-metrics.d.ts +235 -0
- package/dist/codegen/quality-metrics.d.ts.map +1 -0
- package/dist/codegen/quality-metrics.js +439 -0
- package/dist/codegen/quality-metrics.js.map +1 -0
- package/dist/codegen/security-scanner.d.ts +179 -0
- package/dist/codegen/security-scanner.d.ts.map +1 -0
- package/dist/codegen/security-scanner.js +495 -0
- package/dist/codegen/security-scanner.js.map +1 -0
- package/dist/codegen/static-analyzer.d.ts +188 -0
- package/dist/codegen/static-analyzer.d.ts.map +1 -0
- package/dist/codegen/static-analyzer.js +490 -0
- package/dist/codegen/static-analyzer.js.map +1 -0
- package/dist/codegen/unit-test-generator.d.ts +289 -0
- package/dist/codegen/unit-test-generator.d.ts.map +1 -0
- package/dist/codegen/unit-test-generator.js +634 -0
- package/dist/codegen/unit-test-generator.js.map +1 -0
- package/dist/design/adr-generator.d.ts +227 -0
- package/dist/design/adr-generator.d.ts.map +1 -0
- package/dist/design/adr-generator.js +423 -0
- package/dist/design/adr-generator.js.map +1 -0
- package/dist/design/c4-generator.d.ts +267 -0
- package/dist/design/c4-generator.d.ts.map +1 -0
- package/dist/design/c4-generator.js +453 -0
- package/dist/design/c4-generator.js.map +1 -0
- package/dist/design/framework-optimizer.d.ts +190 -0
- package/dist/design/framework-optimizer.d.ts.map +1 -0
- package/dist/design/framework-optimizer.js +589 -0
- package/dist/design/framework-optimizer.js.map +1 -0
- package/dist/design/index.d.ts +12 -0
- package/dist/design/index.d.ts.map +1 -0
- package/dist/design/index.js +13 -0
- package/dist/design/index.js.map +1 -0
- package/dist/design/pattern-detector.d.ts +270 -0
- package/dist/design/pattern-detector.d.ts.map +1 -0
- package/dist/design/pattern-detector.js +621 -0
- package/dist/design/pattern-detector.js.map +1 -0
- package/dist/design/solid-validator.d.ts +188 -0
- package/dist/design/solid-validator.d.ts.map +1 -0
- package/dist/design/solid-validator.js +579 -0
- package/dist/design/solid-validator.js.map +1 -0
- package/dist/error/data-persistence.d.ts +311 -0
- package/dist/error/data-persistence.d.ts.map +1 -0
- package/dist/error/data-persistence.js +586 -0
- package/dist/error/data-persistence.js.map +1 -0
- package/dist/error/graceful-degradation.d.ts +309 -0
- package/dist/error/graceful-degradation.d.ts.map +1 -0
- package/dist/error/graceful-degradation.js +510 -0
- package/dist/error/graceful-degradation.js.map +1 -0
- package/dist/error/index.d.ts +11 -0
- package/dist/error/index.d.ts.map +1 -0
- package/dist/error/index.js +19 -0
- package/dist/error/index.js.map +1 -0
- package/dist/explanation/explanation-generator.d.ts +228 -0
- package/dist/explanation/explanation-generator.d.ts.map +1 -0
- package/dist/explanation/explanation-generator.js +662 -0
- package/dist/explanation/explanation-generator.js.map +1 -0
- package/dist/explanation/index.d.ts +11 -0
- package/dist/explanation/index.d.ts.map +1 -0
- package/dist/explanation/index.js +19 -0
- package/dist/explanation/index.js.map +1 -0
- package/dist/explanation/reasoning-chain.d.ts +314 -0
- package/dist/explanation/reasoning-chain.d.ts.map +1 -0
- package/dist/explanation/reasoning-chain.js +414 -0
- package/dist/explanation/reasoning-chain.js.map +1 -0
- package/dist/explanation/visual-explanation.d.ts +315 -0
- package/dist/explanation/visual-explanation.d.ts.map +1 -0
- package/dist/explanation/visual-explanation.js +667 -0
- package/dist/explanation/visual-explanation.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/requirements/decomposer.d.ts +235 -0
- package/dist/requirements/decomposer.d.ts.map +1 -0
- package/dist/requirements/decomposer.js +587 -0
- package/dist/requirements/decomposer.js.map +1 -0
- package/dist/requirements/related-finder.d.ts +261 -0
- package/dist/requirements/related-finder.d.ts.map +1 -0
- package/dist/requirements/related-finder.js +629 -0
- package/dist/requirements/related-finder.js.map +1 -0
- package/dist/traceability/impact.d.ts +196 -0
- package/dist/traceability/impact.d.ts.map +1 -0
- package/dist/traceability/impact.js +438 -0
- package/dist/traceability/impact.js.map +1 -0
- package/dist/traceability/index.d.ts +9 -0
- package/dist/traceability/index.d.ts.map +1 -0
- package/dist/traceability/index.js +10 -0
- package/dist/traceability/index.js.map +1 -0
- package/dist/traceability/manager.d.ts +266 -0
- package/dist/traceability/manager.d.ts.map +1 -0
- package/dist/traceability/manager.js +412 -0
- package/dist/traceability/manager.js.map +1 -0
- package/dist/types/common.d.ts +294 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +15 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/ears.d.ts +158 -0
- package/dist/types/ears.d.ts.map +1 -0
- package/dist/types/ears.js +33 -0
- package/dist/types/ears.js.map +1 -0
- package/dist/types/errors.d.ts +176 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +55 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +10 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/data-protector.d.ts +122 -0
- package/dist/utils/data-protector.d.ts.map +1 -0
- package/dist/utils/data-protector.js +275 -0
- package/dist/utils/data-protector.js.map +1 -0
- package/dist/utils/error-handler.d.ts +101 -0
- package/dist/utils/error-handler.d.ts.map +1 -0
- package/dist/utils/error-handler.js +324 -0
- package/dist/utils/error-handler.js.map +1 -0
- package/dist/utils/i18n-manager.d.ts +259 -0
- package/dist/utils/i18n-manager.d.ts.map +1 -0
- package/dist/utils/i18n-manager.js +554 -0
- package/dist/utils/i18n-manager.js.map +1 -0
- package/dist/utils/index.d.ts +10 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +10 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +120 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +237 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/performance-profiler.d.ts +251 -0
- package/dist/utils/performance-profiler.d.ts.map +1 -0
- package/dist/utils/performance-profiler.js +458 -0
- package/dist/utils/performance-profiler.js.map +1 -0
- package/dist/utils/scalability-optimizer.d.ts +294 -0
- package/dist/utils/scalability-optimizer.d.ts.map +1 -0
- package/dist/utils/scalability-optimizer.js +606 -0
- package/dist/utils/scalability-optimizer.js.map +1 -0
- package/dist/utils/structured-logger.d.ts +294 -0
- package/dist/utils/structured-logger.d.ts.map +1 -0
- package/dist/utils/structured-logger.js +630 -0
- package/dist/utils/structured-logger.js.map +1 -0
- package/dist/utils/version-compatibility.d.ts +217 -0
- package/dist/utils/version-compatibility.d.ts.map +1 -0
- package/dist/utils/version-compatibility.js +443 -0
- package/dist/utils/version-compatibility.js.map +1 -0
- package/dist/validators/ears-validator.d.ts +182 -0
- package/dist/validators/ears-validator.d.ts.map +1 -0
- package/dist/validators/ears-validator.js +357 -0
- package/dist/validators/ears-validator.js.map +1 -0
- package/dist/validators/index.d.ts +8 -0
- package/dist/validators/index.d.ts.map +1 -0
- package/dist/validators/index.js +9 -0
- package/dist/validators/index.js.map +1 -0
- package/dist/version.d.ts +8 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +8 -0
- package/dist/version.js.map +1 -0
- 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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"}
|