@timmeck/brain-core 2.36.73 → 2.36.75

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 (47) hide show
  1. package/command-center.html +74 -0
  2. package/dist/codegen/feature-extractor.js +1 -0
  3. package/dist/codegen/feature-extractor.js.map +1 -1
  4. package/dist/curiosity/curiosity-engine.js +2 -2
  5. package/dist/curiosity/curiosity-engine.js.map +1 -1
  6. package/dist/dashboard/command-center-server.d.ts +2 -0
  7. package/dist/dashboard/command-center-server.js +19 -0
  8. package/dist/dashboard/command-center-server.js.map +1 -1
  9. package/dist/debate/debate-engine.js +1 -1
  10. package/dist/debate/debate-engine.js.map +1 -1
  11. package/dist/governance/engine-token-budget.d.ts +65 -0
  12. package/dist/governance/engine-token-budget.js +198 -0
  13. package/dist/governance/engine-token-budget.js.map +1 -0
  14. package/dist/governance/governance-layer.d.ts +3 -0
  15. package/dist/governance/governance-layer.js +24 -1
  16. package/dist/governance/governance-layer.js.map +1 -1
  17. package/dist/governance/index.d.ts +2 -0
  18. package/dist/governance/index.js +1 -0
  19. package/dist/governance/index.js.map +1 -1
  20. package/dist/hypothesis/engine.js +1 -1
  21. package/dist/hypothesis/engine.js.map +1 -1
  22. package/dist/index.d.ts +4 -0
  23. package/dist/index.js +3 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/llm/llm-service.d.ts +14 -0
  26. package/dist/llm/llm-service.js +59 -7
  27. package/dist/llm/llm-service.js.map +1 -1
  28. package/dist/llm/middleware.d.ts +1 -0
  29. package/dist/missions/mission-engine.js +4 -4
  30. package/dist/missions/mission-engine.js.map +1 -1
  31. package/dist/narrative/narrative-engine.js +4 -4
  32. package/dist/narrative/narrative-engine.js.map +1 -1
  33. package/dist/rag/rag-engine.js +1 -1
  34. package/dist/rag/rag-engine.js.map +1 -1
  35. package/dist/research/cycle-outcome-tracker.d.ts +107 -0
  36. package/dist/research/cycle-outcome-tracker.js +216 -0
  37. package/dist/research/cycle-outcome-tracker.js.map +1 -0
  38. package/dist/research/research-orchestrator.d.ts +3 -0
  39. package/dist/research/research-orchestrator.js +34 -0
  40. package/dist/research/research-orchestrator.js.map +1 -1
  41. package/dist/research/semantic-compressor.js +1 -1
  42. package/dist/research/semantic-compressor.js.map +1 -1
  43. package/dist/techradar/daily-digest.js +2 -1
  44. package/dist/techradar/daily-digest.js.map +1 -1
  45. package/dist/techradar/relevance-scorer.js +1 -1
  46. package/dist/techradar/relevance-scorer.js.map +1 -1
  47. package/package.json +1 -1
@@ -90,6 +90,7 @@ export class ResearchOrchestrator {
90
90
  loopDetector = null;
91
91
  governanceLayer = null;
92
92
  adaptiveScheduler = null;
93
+ cycleOutcomeTracker = null;
93
94
  lastAutoMissionTime = 0;
94
95
  lastGoalMissionTime = 0;
95
96
  roadmapBootstrapped = false;
@@ -151,6 +152,10 @@ export class ResearchOrchestrator {
151
152
  setAdaptiveScheduler(scheduler) {
152
153
  this.adaptiveScheduler = scheduler;
153
154
  }
155
+ /** Set the CycleOutcomeTracker for long-term cycle metrics. */
156
+ setCycleOutcomeTracker(tracker) {
157
+ this.cycleOutcomeTracker = tracker;
158
+ }
154
159
  /** Get the AdaptiveScheduler instance. */
155
160
  getAdaptiveScheduler() {
156
161
  return this.adaptiveScheduler;
@@ -3143,6 +3148,35 @@ export class ResearchOrchestrator {
3143
3148
  durationMs: duration,
3144
3149
  });
3145
3150
  }
3151
+ // Cycle Outcome Tracking: long-term productive/failed/novelty/efficiency rates
3152
+ if (this.cycleOutcomeTracker) {
3153
+ try {
3154
+ const { fingerprint } = await import('./cycle-outcome-tracker.js');
3155
+ const hypSummary = this.hypothesisEngine.getSummary();
3156
+ const llmStats = this.llmService?.getStats?.();
3157
+ // Build output fingerprints from this cycle's concrete artifacts
3158
+ const fps = [];
3159
+ for (const ins of insights.slice(0, 10)) {
3160
+ fps.push(fingerprint(ins.title ?? ins.type ?? JSON.stringify(ins)));
3161
+ }
3162
+ this.cycleOutcomeTracker.recordOutcome({
3163
+ cycle: this.cycleCount,
3164
+ timestamp: Date.now(),
3165
+ durationMs: duration,
3166
+ tokensUsed: llmStats?.tokensThisHour ?? 0,
3167
+ insightsFound: insights.length,
3168
+ rulesLearned: 0,
3169
+ hypothesesConfirmed: hypSummary.confirmed ?? 0,
3170
+ experimentsCompleted: 0, // tracked externally via AutoExperimentEngine
3171
+ actionsExecuted: 0,
3172
+ errored: false,
3173
+ outputFingerprints: fps,
3174
+ });
3175
+ }
3176
+ catch (err) {
3177
+ this.log.debug(`[orchestrator] CycleOutcomeTracker error: ${err.message}`);
3178
+ }
3179
+ }
3146
3180
  // Step-profiling summary: log slow steps if any
3147
3181
  if (stepTimings.length > 0) {
3148
3182
  this.log.warn(`[orchestrator] Cycle #${this.cycleCount} slow steps: ${stepTimings.map(s => `${s.step}(${s.ms}ms)`).join(', ')}`);