noormme 1.0.6 → 1.2.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 (249) hide show
  1. package/README.md +92 -63
  2. package/dist/cjs/agentic/ActionJournal.js +13 -9
  3. package/dist/cjs/agentic/CapabilityManager.d.ts +9 -4
  4. package/dist/cjs/agentic/CapabilityManager.js +113 -17
  5. package/dist/cjs/agentic/CognitiveRepository.js +19 -9
  6. package/dist/cjs/agentic/ContextBuffer.js +24 -12
  7. package/dist/cjs/agentic/Cortex.d.ts +8 -1
  8. package/dist/cjs/agentic/Cortex.js +30 -7
  9. package/dist/cjs/agentic/EpisodicMemory.js +7 -5
  10. package/dist/cjs/agentic/PersonaManager.js +16 -8
  11. package/dist/cjs/agentic/PolicyEnforcer.js +31 -12
  12. package/dist/cjs/agentic/ResourceMonitor.js +4 -4
  13. package/dist/cjs/agentic/SessionCompressor.js +22 -14
  14. package/dist/cjs/agentic/SessionManager.js +36 -18
  15. package/dist/cjs/agentic/VectorIndexer.js +22 -18
  16. package/dist/cjs/agentic/improvement/AblationEngine.js +22 -15
  17. package/dist/cjs/agentic/improvement/ActionRefiner.js +12 -10
  18. package/dist/cjs/agentic/improvement/ConflictResolver.js +5 -5
  19. package/dist/cjs/agentic/improvement/CortexJanitor.d.ts +1 -1
  20. package/dist/cjs/agentic/improvement/CortexJanitor.js +64 -27
  21. package/dist/cjs/agentic/improvement/CuriosityEngine.d.ts +2 -2
  22. package/dist/cjs/agentic/improvement/CuriosityEngine.js +68 -59
  23. package/dist/cjs/agentic/improvement/EvolutionRitual.d.ts +24 -0
  24. package/dist/cjs/agentic/improvement/EvolutionRitual.js +91 -0
  25. package/dist/cjs/agentic/improvement/EvolutionaryPilot.d.ts +5 -0
  26. package/dist/cjs/agentic/improvement/EvolutionaryPilot.js +80 -7
  27. package/dist/cjs/agentic/improvement/GoalArchitect.d.ts +2 -2
  28. package/dist/cjs/agentic/improvement/GoalArchitect.js +20 -18
  29. package/dist/cjs/agentic/improvement/GovernanceManager.d.ts +1 -1
  30. package/dist/cjs/agentic/improvement/GovernanceManager.js +85 -49
  31. package/dist/cjs/agentic/improvement/HiveLink.d.ts +9 -0
  32. package/dist/cjs/agentic/improvement/HiveLink.js +120 -26
  33. package/dist/cjs/agentic/improvement/KnowledgeDistiller.d.ts +2 -0
  34. package/dist/cjs/agentic/improvement/KnowledgeDistiller.js +101 -47
  35. package/dist/cjs/agentic/improvement/RecursiveReasoner.d.ts +7 -1
  36. package/dist/cjs/agentic/improvement/RecursiveReasoner.js +106 -22
  37. package/dist/cjs/agentic/improvement/ReflectionEngine.js +10 -8
  38. package/dist/cjs/agentic/improvement/RitualOrchestrator.js +34 -22
  39. package/dist/cjs/agentic/improvement/RuleEngine.js +22 -17
  40. package/dist/cjs/agentic/improvement/SelfEvolution.js +24 -18
  41. package/dist/cjs/agentic/improvement/SelfTestRegistry.js +18 -15
  42. package/dist/cjs/agentic/improvement/SkillSynthesizer.d.ts +48 -0
  43. package/dist/cjs/agentic/improvement/SkillSynthesizer.js +288 -0
  44. package/dist/cjs/agentic/improvement/SovereignMetrics.js +19 -17
  45. package/dist/cjs/agentic/improvement/StrategicPlanner.d.ts +1 -1
  46. package/dist/cjs/agentic/improvement/StrategicPlanner.js +129 -55
  47. package/dist/cjs/agentic/telemetry/CognitiveSynthesizer.js +26 -12
  48. package/dist/cjs/agentic/telemetry/EventHarvester.js +3 -2
  49. package/dist/cjs/agentic/telemetry/ResearchAlchemist.js +13 -4
  50. package/dist/cjs/cache/cache-manager.js +7 -4
  51. package/dist/cjs/cli/commands/analyze.js +5 -4
  52. package/dist/cjs/cli/commands/generate.js +81 -44
  53. package/dist/cjs/cli/commands/init.js +7 -3
  54. package/dist/cjs/cli/commands/inspect.js +139 -36
  55. package/dist/cjs/cli/commands/migrate.js +5 -4
  56. package/dist/cjs/cli/commands/optimize.js +4 -4
  57. package/dist/cjs/cli/commands/status.js +9 -7
  58. package/dist/cjs/cli/commands/watch.js +7 -6
  59. package/dist/cjs/cli/index.js +2 -2
  60. package/dist/cjs/cli/ui/spinner.d.ts +15 -0
  61. package/dist/cjs/cli/ui/spinner.js +76 -0
  62. package/dist/cjs/dialect/database-introspector.js +3 -1
  63. package/dist/cjs/dialect/postgresql/postgresql-driver.js +3 -1
  64. package/dist/cjs/dialect/postgresql/postgresql-features.js +18 -8
  65. package/dist/cjs/dialect/postgresql/postgresql-introspector.js +2 -2
  66. package/dist/cjs/dialect/sqlite/sqlite-auto-indexer.js +47 -33
  67. package/dist/cjs/dialect/sqlite/sqlite-auto-optimizer.js +8 -7
  68. package/dist/cjs/dialect/sqlite/sqlite-driver.js +2 -2
  69. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +15 -12
  70. package/dist/cjs/edge-runtime/edge-config.js +21 -19
  71. package/dist/cjs/errors/NoormError.js +22 -20
  72. package/dist/cjs/helpers/agent-schema.js +3 -0
  73. package/dist/cjs/helpers/postgresql.js +7 -4
  74. package/dist/cjs/helpers/schema-evolution.js +31 -6
  75. package/dist/cjs/index.d.ts +18 -16
  76. package/dist/cjs/logging/logger.js +8 -4
  77. package/dist/cjs/migration/data_migrator.js +12 -11
  78. package/dist/cjs/migration/database_migration_manager.js +17 -13
  79. package/dist/cjs/migration/schema_differ.js +22 -14
  80. package/dist/cjs/migration/schema_introspector.js +8 -8
  81. package/dist/cjs/migration/type_mapper.js +68 -67
  82. package/dist/cjs/noormme.js +54 -37
  83. package/dist/cjs/performance/index.js +5 -5
  84. package/dist/cjs/performance/query-optimizer.js +26 -21
  85. package/dist/cjs/performance/services/cache-service.js +26 -16
  86. package/dist/cjs/performance/services/connection-factory.js +28 -23
  87. package/dist/cjs/performance/services/metrics-collector.js +41 -36
  88. package/dist/cjs/performance/utils/query-parser.js +15 -16
  89. package/dist/cjs/relationships/relationship-engine.js +10 -8
  90. package/dist/cjs/repository/repository-factory.js +97 -38
  91. package/dist/cjs/schema/core/coordinators/schema-discovery.coordinator.js +1 -3
  92. package/dist/cjs/schema/core/discovery/relationship-discovery.js +16 -16
  93. package/dist/cjs/schema/core/discovery/table-metadata-discovery.js +9 -9
  94. package/dist/cjs/schema/core/discovery/view-discovery.js +5 -4
  95. package/dist/cjs/schema/core/factories/discovery-factory.js +4 -4
  96. package/dist/cjs/schema/core/utils/name-generator.js +14 -5
  97. package/dist/cjs/schema/core/utils/type-mapper.js +24 -24
  98. package/dist/cjs/schema/dialects/postgresql/postgresql-discovery.coordinator.js +8 -7
  99. package/dist/cjs/schema/dialects/sqlite/discovery/sqlite-constraint-discovery.js +17 -15
  100. package/dist/cjs/schema/dialects/sqlite/discovery/sqlite-index-discovery.js +8 -8
  101. package/dist/cjs/schema/dialects/sqlite/introspection/sqlite-schema-introspector.js +6 -11
  102. package/dist/cjs/schema/dialects/sqlite/sqlite-discovery.coordinator.js +14 -13
  103. package/dist/cjs/schema/test/basic-schema-test.js +11 -9
  104. package/dist/cjs/schema/test/dialect-capabilities.test.js +6 -6
  105. package/dist/cjs/schema/test/discovery-factory.test.js +2 -2
  106. package/dist/cjs/schema/test/error-handling.test.js +8 -6
  107. package/dist/cjs/schema/test/integration.test.js +24 -18
  108. package/dist/cjs/schema/test/schema-discovery-coordinator.test.js +9 -9
  109. package/dist/cjs/schema/test/simple-schema-test.js +9 -9
  110. package/dist/cjs/schema/test/sqlite-discovery-coordinator.test.js +64 -48
  111. package/dist/cjs/schema/test/test-runner.js +3 -3
  112. package/dist/cjs/sqlite-migration/index.d.ts +2 -2
  113. package/dist/cjs/sqlite-migration/sqlite-migration-manager.js +21 -17
  114. package/dist/cjs/sqlite-migration/sqlite-migration-provider.js +38 -34
  115. package/dist/cjs/testing/test-utils.js +36 -34
  116. package/dist/cjs/types/index.d.ts +61 -4
  117. package/dist/cjs/types/index.js +6 -3
  118. package/dist/cjs/types/type-generator.js +46 -42
  119. package/dist/cjs/util/safe-sql-helpers.js +1 -1
  120. package/dist/cjs/util/security-validator.js +20 -9
  121. package/dist/cjs/utils/errorHelpers.js +20 -10
  122. package/dist/cjs/watch/schema-watcher.js +22 -23
  123. package/dist/esm/agentic/ActionJournal.js +13 -9
  124. package/dist/esm/agentic/CapabilityManager.d.ts +9 -4
  125. package/dist/esm/agentic/CapabilityManager.js +113 -17
  126. package/dist/esm/agentic/CognitiveRepository.js +19 -9
  127. package/dist/esm/agentic/ContextBuffer.js +24 -12
  128. package/dist/esm/agentic/Cortex.d.ts +8 -1
  129. package/dist/esm/agentic/Cortex.js +30 -7
  130. package/dist/esm/agentic/EpisodicMemory.js +7 -5
  131. package/dist/esm/agentic/PersonaManager.js +16 -8
  132. package/dist/esm/agentic/PolicyEnforcer.js +31 -12
  133. package/dist/esm/agentic/ResourceMonitor.js +4 -4
  134. package/dist/esm/agentic/SessionCompressor.js +22 -14
  135. package/dist/esm/agentic/SessionManager.js +36 -18
  136. package/dist/esm/agentic/VectorIndexer.js +22 -18
  137. package/dist/esm/agentic/improvement/AblationEngine.js +22 -15
  138. package/dist/esm/agentic/improvement/ActionRefiner.js +12 -10
  139. package/dist/esm/agentic/improvement/ConflictResolver.js +5 -5
  140. package/dist/esm/agentic/improvement/CortexJanitor.d.ts +1 -1
  141. package/dist/esm/agentic/improvement/CortexJanitor.js +64 -27
  142. package/dist/esm/agentic/improvement/CuriosityEngine.d.ts +2 -2
  143. package/dist/esm/agentic/improvement/CuriosityEngine.js +68 -59
  144. package/dist/esm/agentic/improvement/EvolutionRitual.d.ts +24 -0
  145. package/dist/esm/agentic/improvement/EvolutionRitual.js +88 -0
  146. package/dist/esm/agentic/improvement/EvolutionaryPilot.d.ts +5 -0
  147. package/dist/esm/agentic/improvement/EvolutionaryPilot.js +80 -7
  148. package/dist/esm/agentic/improvement/GoalArchitect.d.ts +2 -2
  149. package/dist/esm/agentic/improvement/GoalArchitect.js +20 -18
  150. package/dist/esm/agentic/improvement/GovernanceManager.d.ts +1 -1
  151. package/dist/esm/agentic/improvement/GovernanceManager.js +85 -49
  152. package/dist/esm/agentic/improvement/HiveLink.d.ts +9 -0
  153. package/dist/esm/agentic/improvement/HiveLink.js +120 -26
  154. package/dist/esm/agentic/improvement/KnowledgeDistiller.d.ts +2 -0
  155. package/dist/esm/agentic/improvement/KnowledgeDistiller.js +101 -47
  156. package/dist/esm/agentic/improvement/RecursiveReasoner.d.ts +7 -1
  157. package/dist/esm/agentic/improvement/RecursiveReasoner.js +106 -22
  158. package/dist/esm/agentic/improvement/ReflectionEngine.js +10 -8
  159. package/dist/esm/agentic/improvement/RitualOrchestrator.js +34 -22
  160. package/dist/esm/agentic/improvement/RuleEngine.js +22 -17
  161. package/dist/esm/agentic/improvement/SelfEvolution.js +24 -18
  162. package/dist/esm/agentic/improvement/SelfTestRegistry.js +18 -15
  163. package/dist/esm/agentic/improvement/SkillSynthesizer.d.ts +48 -0
  164. package/dist/esm/agentic/improvement/SkillSynthesizer.js +285 -0
  165. package/dist/esm/agentic/improvement/SovereignMetrics.js +19 -17
  166. package/dist/esm/agentic/improvement/StrategicPlanner.d.ts +1 -1
  167. package/dist/esm/agentic/improvement/StrategicPlanner.js +129 -55
  168. package/dist/esm/agentic/telemetry/CognitiveSynthesizer.js +26 -12
  169. package/dist/esm/agentic/telemetry/EventHarvester.js +3 -2
  170. package/dist/esm/agentic/telemetry/ResearchAlchemist.js +13 -4
  171. package/dist/esm/cache/cache-manager.js +7 -4
  172. package/dist/esm/cli/commands/analyze.js +5 -4
  173. package/dist/esm/cli/commands/generate.js +82 -45
  174. package/dist/esm/cli/commands/init.js +8 -4
  175. package/dist/esm/cli/commands/inspect.js +140 -37
  176. package/dist/esm/cli/commands/migrate.js +5 -4
  177. package/dist/esm/cli/commands/optimize.js +4 -4
  178. package/dist/esm/cli/commands/status.js +9 -7
  179. package/dist/esm/cli/commands/watch.js +7 -6
  180. package/dist/esm/cli/index.js +2 -2
  181. package/dist/esm/cli/ui/spinner.d.ts +15 -0
  182. package/dist/esm/cli/ui/spinner.js +70 -0
  183. package/dist/esm/dialect/database-introspector.js +3 -1
  184. package/dist/esm/dialect/postgresql/postgresql-driver.js +3 -1
  185. package/dist/esm/dialect/postgresql/postgresql-features.js +18 -8
  186. package/dist/esm/dialect/postgresql/postgresql-introspector.js +2 -2
  187. package/dist/esm/dialect/sqlite/sqlite-auto-indexer.js +47 -33
  188. package/dist/esm/dialect/sqlite/sqlite-auto-optimizer.js +8 -7
  189. package/dist/esm/dialect/sqlite/sqlite-driver.js +2 -2
  190. package/dist/esm/dialect/sqlite/sqlite-introspector.js +15 -12
  191. package/dist/esm/dynamic/dynamic.js +1 -1
  192. package/dist/esm/edge-runtime/edge-config.js +21 -19
  193. package/dist/esm/errors/NoormError.js +22 -20
  194. package/dist/esm/helpers/agent-schema.js +3 -0
  195. package/dist/esm/helpers/postgresql.js +7 -4
  196. package/dist/esm/helpers/schema-evolution.js +31 -6
  197. package/dist/esm/index.d.ts +18 -16
  198. package/dist/esm/index.js +2 -2
  199. package/dist/esm/logging/logger.js +8 -4
  200. package/dist/esm/migration/data_migrator.js +12 -11
  201. package/dist/esm/migration/database_migration_manager.js +18 -14
  202. package/dist/esm/migration/schema_differ.js +22 -14
  203. package/dist/esm/migration/schema_introspector.js +8 -8
  204. package/dist/esm/migration/type_mapper.js +68 -67
  205. package/dist/esm/noormme.js +54 -37
  206. package/dist/esm/performance/index.js +5 -5
  207. package/dist/esm/performance/query-optimizer.js +26 -21
  208. package/dist/esm/performance/services/cache-service.js +26 -16
  209. package/dist/esm/performance/services/connection-factory.js +28 -23
  210. package/dist/esm/performance/services/metrics-collector.js +41 -36
  211. package/dist/esm/performance/utils/query-parser.js +15 -16
  212. package/dist/esm/raw-builder/sql.js +1 -1
  213. package/dist/esm/relationships/relationship-engine.js +10 -8
  214. package/dist/esm/repository/repository-factory.js +98 -39
  215. package/dist/esm/schema/builders/alter-table-add-index-builder.js +1 -1
  216. package/dist/esm/schema/builders/create-index-builder.js +2 -2
  217. package/dist/esm/schema/core/coordinators/schema-discovery.coordinator.js +1 -3
  218. package/dist/esm/schema/core/discovery/relationship-discovery.js +16 -16
  219. package/dist/esm/schema/core/discovery/table-metadata-discovery.js +9 -9
  220. package/dist/esm/schema/core/discovery/view-discovery.js +5 -4
  221. package/dist/esm/schema/core/factories/discovery-factory.js +4 -4
  222. package/dist/esm/schema/core/utils/name-generator.js +14 -5
  223. package/dist/esm/schema/core/utils/type-mapper.js +24 -24
  224. package/dist/esm/schema/dialects/postgresql/postgresql-discovery.coordinator.js +8 -7
  225. package/dist/esm/schema/dialects/sqlite/discovery/sqlite-constraint-discovery.js +17 -15
  226. package/dist/esm/schema/dialects/sqlite/discovery/sqlite-index-discovery.js +8 -8
  227. package/dist/esm/schema/dialects/sqlite/introspection/sqlite-schema-introspector.js +6 -11
  228. package/dist/esm/schema/dialects/sqlite/sqlite-discovery.coordinator.js +14 -13
  229. package/dist/esm/schema/test/basic-schema-test.js +11 -9
  230. package/dist/esm/schema/test/dialect-capabilities.test.js +6 -6
  231. package/dist/esm/schema/test/discovery-factory.test.js +2 -2
  232. package/dist/esm/schema/test/error-handling.test.js +8 -6
  233. package/dist/esm/schema/test/integration.test.js +24 -18
  234. package/dist/esm/schema/test/schema-discovery-coordinator.test.js +9 -9
  235. package/dist/esm/schema/test/simple-schema-test.js +9 -9
  236. package/dist/esm/schema/test/sqlite-discovery-coordinator.test.js +64 -48
  237. package/dist/esm/schema/test/test-runner.js +3 -3
  238. package/dist/esm/sqlite-migration/index.d.ts +2 -2
  239. package/dist/esm/sqlite-migration/sqlite-migration-manager.js +21 -17
  240. package/dist/esm/sqlite-migration/sqlite-migration-provider.js +38 -34
  241. package/dist/esm/testing/test-utils.js +36 -34
  242. package/dist/esm/types/index.d.ts +61 -4
  243. package/dist/esm/types/index.js +6 -3
  244. package/dist/esm/types/type-generator.js +46 -42
  245. package/dist/esm/util/safe-sql-helpers.js +1 -1
  246. package/dist/esm/util/security-validator.js +20 -9
  247. package/dist/esm/utils/errorHelpers.js +21 -11
  248. package/dist/esm/watch/schema-watcher.js +22 -23
  249. package/package.json +40 -44
@@ -27,9 +27,9 @@ export class StrategicPlanner {
27
27
  const mutations = [];
28
28
  // 0. Pre-Flight System Health Check (Phase 4)
29
29
  const tests = await this.cortex.tests.runAllProbes();
30
- const failedTests = tests.filter(t => !t.success);
30
+ const failedTests = tests.filter((t) => !t.success);
31
31
  if (failedTests.length > 0) {
32
- console.warn(`[StrategicPlanner] Mutation cycle aborted. System health probes failed: ${failedTests.map(t => t.name).join(', ')}`);
32
+ console.warn(`[StrategicPlanner] Mutation cycle aborted. System health probes failed: ${failedTests.map((t) => t.name).join(', ')}`);
33
33
  return [];
34
34
  }
35
35
  const personas = await this.typedDb
@@ -50,12 +50,20 @@ export class StrategicPlanner {
50
50
  const report = await this.analyzePersona(persona.id);
51
51
  // 3. Blacklist Check (Local & Global Phase 5)
52
52
  const lastMutation = persona.metadata?.last_failed_mutation;
53
- const allPersonas = await this.typedDb.selectFrom(this.personasTable).selectAll().execute();
54
- const isGloballyBlacklisted = allPersonas.some(p => {
53
+ const allPersonas = await this.typedDb
54
+ .selectFrom(this.personasTable)
55
+ .selectAll()
56
+ .execute();
57
+ const isGloballyBlacklisted = allPersonas.some((p) => {
55
58
  const mp = this.parsePersona(p);
56
- return mp.metadata?.last_failed_mutation?.type === report.recommendation && (Date.now() - (mp.metadata?.last_failed_mutation?.timestamp || 0) < 3600000);
59
+ return (mp.metadata?.last_failed_mutation?.type === report.recommendation &&
60
+ Date.now() - (mp.metadata?.last_failed_mutation?.timestamp || 0) <
61
+ 3600000);
57
62
  });
58
- if (isGloballyBlacklisted || (lastMutation && report.recommendation === lastMutation.type && (Date.now() - lastMutation.timestamp < 86400000))) {
63
+ if (isGloballyBlacklisted ||
64
+ (lastMutation &&
65
+ report.recommendation === lastMutation.type &&
66
+ Date.now() - lastMutation.timestamp < 86400000)) {
59
67
  console.log(`[StrategicPlanner] Skipping blacklisted mutation ${report.recommendation} for persona ${persona.id} (Global=${isGloballyBlacklisted})`);
60
68
  continue;
61
69
  }
@@ -74,22 +82,33 @@ export class StrategicPlanner {
74
82
  */
75
83
  async applyDirectMutation(persona, report, failures = []) {
76
84
  return await this.db.transaction().execute(async (trx) => {
77
- const reason = failures.length > 0 ? `Failure Patterns: ${failures.join(', ')}` : report.recommendation;
85
+ const reason = failures.length > 0
86
+ ? `Failure Patterns: ${failures.join(', ')}`
87
+ : report.recommendation;
78
88
  console.log(`[StrategicPlanner] Applying direct mutation to persona ${persona.id} (Reason: ${reason})`);
79
89
  let updates = {};
80
90
  let mutationType = 'role_update';
81
91
  if (failures.length > 0) {
82
92
  // Lesson-Driven Synthesis: Pull categories of lessons
83
93
  const lessons = await this.cortex.reasoner.synthesizeLessons();
84
- const relevantLessons = updates.role ? [] : (lessons['general'] || []).slice(0, 2);
85
- updates = { role: `${persona.role || ''} (Optimized for: ${failures.join(', ')}. Patterns: ${relevantLessons.join('; ')})`.trim() };
94
+ const relevantLessons = updates.role
95
+ ? []
96
+ : (lessons['general'] || []).slice(0, 2);
97
+ updates = {
98
+ role: `${persona.role || ''} (Optimized for: ${failures.join(', ')}. Patterns: ${relevantLessons.join('; ')})`.trim(),
99
+ };
86
100
  }
87
101
  else {
88
102
  // Evolutionary Cross-Pollination (Phase 5)
89
- const allPersonas = await this.typedDb.selectFrom(this.personasTable).selectAll().execute();
103
+ const allPersonas = await trx
104
+ .selectFrom(this.personasTable)
105
+ .selectAll()
106
+ .execute();
90
107
  const winningMutations = allPersonas
91
- .map(p => this.parsePersona(p))
92
- .filter(p => (p.metadata?.evolution_status === 'stable' || !p.metadata?.evolution_status) && p.metadata?.mutation_reason?.includes(report.recommendation));
108
+ .map((p) => this.parsePersona(p))
109
+ .filter((p) => (p.metadata?.evolution_status === 'stable' ||
110
+ !p.metadata?.evolution_status) &&
111
+ p.metadata?.mutation_reason?.includes(report.recommendation));
93
112
  if (winningMutations.length > 0 && Math.random() > 0.5) {
94
113
  console.log(`[StrategicPlanner] Cross-Pollinating success from Persona ${winningMutations[0].id}`);
95
114
  updates = { role: winningMutations[0].role || persona.role };
@@ -97,10 +116,18 @@ export class StrategicPlanner {
97
116
  else {
98
117
  switch (report.recommendation) {
99
118
  case 'optimize_accuracy':
100
- updates = { role: `${persona.role || ''} (Focus strictly on accuracy and detailed verification)`.trim() };
119
+ updates = {
120
+ role: `${persona.role || ''} (Focus strictly on accuracy and detailed verification)`.trim(),
121
+ };
101
122
  break;
102
123
  case 'optimize_efficiency':
103
- updates = { policies: [...(persona.policies || []), 'timeout_reduction', 'concise_output'] };
124
+ updates = {
125
+ policies: [
126
+ ...(persona.policies || []),
127
+ 'timeout_reduction',
128
+ 'concise_output',
129
+ ],
130
+ };
104
131
  mutationType = 'policy_update';
105
132
  break;
106
133
  case 'critical_intervention':
@@ -128,10 +155,10 @@ export class StrategicPlanner {
128
155
  previousState: {
129
156
  role: persona.role,
130
157
  policies: persona.policies,
131
- capabilities: persona.capabilities
158
+ capabilities: persona.capabilities,
132
159
  },
133
160
  newState: { ...updates },
134
- reason: `Auto-mutation triggered by ${report.recommendation}`
161
+ reason: `Auto-mutation triggered by ${report.recommendation}`,
135
162
  };
136
163
  const history = [...(persona.metadata?.mutationHistory || []), mutation];
137
164
  if (history.length > 5)
@@ -144,17 +171,21 @@ export class StrategicPlanner {
144
171
  verification_started_at: Date.now(),
145
172
  verification_baseline: {
146
173
  successRate: report.successRate,
147
- averageLatency: report.averageLatency
148
- }
174
+ averageLatency: report.averageLatency,
175
+ },
149
176
  };
150
177
  await trx
151
178
  .updateTable(this.personasTable)
152
179
  .set({
153
180
  role: updates.role || persona.role,
154
- policies: updates.policies ? JSON.stringify(updates.policies) : undefined,
155
- capabilities: updates.capabilities ? JSON.stringify(updates.capabilities) : undefined,
181
+ policies: updates.policies
182
+ ? JSON.stringify(updates.policies)
183
+ : undefined,
184
+ capabilities: updates.capabilities
185
+ ? JSON.stringify(updates.capabilities)
186
+ : undefined,
156
187
  metadata: JSON.stringify(newMetadata),
157
- updated_at: new Date()
188
+ updated_at: new Date(),
158
189
  })
159
190
  .where('id', '=', persona.id)
160
191
  .execute();
@@ -169,25 +200,46 @@ export class StrategicPlanner {
169
200
  const report = await this.analyzePersona(persona.id);
170
201
  // Adaptive Meta-Tuning: Increase window based on rollback history (Phase 4)
171
202
  const rollbackHistory = persona.metadata?.rollbackHistory || [];
172
- const recentRollbacks = rollbackHistory.filter(ts => (Date.now() - ts < 604800000)).length;
203
+ const recentRollbacks = rollbackHistory.filter((ts) => Date.now() - ts < 604800000).length;
173
204
  // Hive-Mind Verification Speedups (Phase 5)
174
- const allPersonas = await this.typedDb.selectFrom(this.personasTable).selectAll().execute();
175
- const hiveTrusted = allPersonas.map(p => this.parsePersona(p)).filter(p => p.metadata?.evolution_status === 'stable' && p.metadata?.mutation_reason === (persona.metadata?.mutation_reason)).length;
176
- let sampleSizeThreshold = 10 + (recentRollbacks * 10);
205
+ const allPersonas = await this.typedDb
206
+ .selectFrom(this.personasTable)
207
+ .selectAll()
208
+ .execute();
209
+ const hiveTrusted = allPersonas
210
+ .map((p) => this.parsePersona(p))
211
+ .filter((p) => p.metadata?.evolution_status === 'stable' &&
212
+ p.metadata?.mutation_reason === persona.metadata?.mutation_reason).length;
213
+ let sampleSizeThreshold = 10 + recentRollbacks * 10;
214
+ // Pass 5: Adaptive Verification Windows
215
+ // If a mutation is performing exceptionally well early on (Z-score check), accelerate stabilization.
216
+ const earlyStats = await this.analyzePersona(persona.id);
217
+ const earlyBaseline = persona.metadata?.verification_baseline || {
218
+ successRate: 0.8,
219
+ };
220
+ const earlyZ = (earlyStats.successRate - earlyBaseline.successRate) / 0.1; // Use nominal stdDev for early check
221
+ if (earlyZ > 3.0 && earlyStats.sampleSize >= 5) {
222
+ console.log(`[StrategicPlanner] High Performance Detected (Z=${earlyZ.toFixed(2)}). Accelerating stabilization threshold.`);
223
+ sampleSizeThreshold = 5; // Accelerated Stabilization
224
+ }
177
225
  if (hiveTrusted >= 3) {
178
226
  console.log(`[StrategicPlanner] Accelerating verification for Persona ${persona.id} (Hive-Mind Trusted)`);
179
227
  sampleSizeThreshold = Math.max(5, Math.floor(sampleSizeThreshold / 2));
180
228
  }
181
229
  if (report.sampleSize < sampleSizeThreshold)
182
230
  return null;
183
- const baseline = persona.metadata?.verification_baseline || { successRate: 0.8, averageLatency: 500 };
231
+ const baseline = persona.metadata?.verification_baseline || {
232
+ successRate: 0.8,
233
+ averageLatency: 500,
234
+ };
184
235
  // Dynamic Variance Calculation (Intelligence Refinement)
185
236
  const recentMetrics = await this.cortex.metrics.getRecentMetrics(100);
186
237
  const values = recentMetrics
187
- .filter(m => m.metricName === 'success_rate')
188
- .map(m => Number(m.metricValue));
238
+ .filter((m) => m.metricName === 'success_rate')
239
+ .map((m) => Number(m.metricValue));
189
240
  const mean = values.reduce((a, b) => a + b, 0) / (values.length || 1);
190
- const variance = values.reduce((a, b) => a + Math.pow(b - mean, 2), 0) / (values.length || 1);
241
+ const variance = values.reduce((a, b) => a + Math.pow(b - mean, 2), 0) /
242
+ (values.length || 1);
191
243
  const stdDev = Math.sqrt(variance) || 0.1;
192
244
  const zScore = (report.successRate - baseline.successRate) / (stdDev || 1);
193
245
  console.log(`[StrategicPlanner] Verifying persona ${persona.id}: Success=${report.successRate.toFixed(2)} (Baseline=${baseline.successRate.toFixed(2)}, σ=${stdDev.toFixed(3)}, Z-Score=${zScore.toFixed(2)}, Threshold=${sampleSizeThreshold})`);
@@ -197,18 +249,26 @@ export class StrategicPlanner {
197
249
  return await this.rollbackPersona(persona.id);
198
250
  }
199
251
  // 2. Stabilization (Proven improvement or stability)
200
- if (report.sampleSize >= (sampleSizeThreshold * 2) && zScore >= -0.5) {
252
+ if (report.sampleSize >= sampleSizeThreshold * 2 && zScore >= -0.5) {
201
253
  console.log(`[StrategicPlanner] Evolution for persona ${persona.id} STABILIZED.`);
202
254
  // Cognitive Rule Distillation (Phase 4)
203
255
  if (persona.metadata?.mutation_reason?.includes('optimize_efficiency')) {
204
256
  await this.cortex.rules.defineRule('all', 'all', 'audit', {
205
257
  condition: 'latency > 500',
206
258
  priority: 10,
207
- metadata: { reason: `Distilled from successful persona ${persona.id} optimization` }
259
+ metadata: {
260
+ reason: `Distilled from successful persona ${persona.id} optimization`,
261
+ },
208
262
  });
209
263
  }
210
- await this.db.updateTable(this.personasTable)
211
- .set({ metadata: JSON.stringify({ ...persona.metadata, evolution_status: 'stable' }) })
264
+ await this.db
265
+ .updateTable(this.personasTable)
266
+ .set({
267
+ metadata: JSON.stringify({
268
+ ...persona.metadata,
269
+ evolution_status: 'stable',
270
+ }),
271
+ })
212
272
  .where('id', '=', persona.id)
213
273
  .execute();
214
274
  return `Evolution stabilized for persona ${persona.id}`;
@@ -230,7 +290,7 @@ export class StrategicPlanner {
230
290
  try {
231
291
  const failureReport = await this.cortex.actions.getFailureReport();
232
292
  // Only consider tools that failed more than once
233
- const frequentFailures = failureReport.filter(f => f.failureCount > 1);
293
+ const frequentFailures = failureReport.filter((f) => f.failureCount > 1);
234
294
  for (const fail of frequentFailures) {
235
295
  patterns.push(`tool_failure_${fail.toolName}`);
236
296
  }
@@ -250,7 +310,7 @@ export class StrategicPlanner {
250
310
  .selectAll()
251
311
  .where((eb) => eb.or([
252
312
  eb(sql `json_extract(metadata, '$.persona_id')`, '=', id),
253
- eb(sql `metadata->>'persona_id'`, '=', String(id))
313
+ eb(sql `metadata->>'persona_id'`, '=', String(id)),
254
314
  ]))
255
315
  .orderBy('created_at', 'desc')
256
316
  .limit(50)
@@ -258,7 +318,9 @@ export class StrategicPlanner {
258
318
  // 1. Fetch Global Baseline for Dynamic Thresholds
259
319
  const globalMetrics = await this.cortex.metrics.getRecentMetrics(200);
260
320
  const calcStats = (metricName) => {
261
- const vals = globalMetrics.filter(m => m.metricName === metricName).map(m => Number(m.metricValue));
321
+ const vals = globalMetrics
322
+ .filter((m) => m.metricName === metricName)
323
+ .map((m) => Number(m.metricValue));
262
324
  if (vals.length < 10)
263
325
  return { mean: metricName === 'query_latency' ? 500 : 0.9, stdDev: 0.1 };
264
326
  const mean = vals.reduce((a, b) => a + b, 0) / vals.length;
@@ -273,25 +335,27 @@ export class StrategicPlanner {
273
335
  successRate: successStats.mean,
274
336
  averageLatency: latencyStats.mean,
275
337
  sampleSize: 0,
276
- recommendation: 'maintain'
338
+ recommendation: 'maintain',
277
339
  };
278
340
  }
279
- const successMetrics = recentMetrics.filter(m => m.metric_name === 'task_success_rate');
280
- const latencyMetrics = recentMetrics.filter(m => m.metric_name === 'query_latency');
341
+ const successMetrics = recentMetrics.filter((m) => m.metric_name === 'task_success_rate');
342
+ const latencyMetrics = recentMetrics.filter((m) => m.metric_name === 'query_latency');
281
343
  const avgSuccess = successMetrics.length > 0
282
- ? successMetrics.reduce((sum, m) => sum + Number(m.metric_value), 0) / successMetrics.length
344
+ ? successMetrics.reduce((sum, m) => sum + Number(m.metric_value), 0) /
345
+ successMetrics.length
283
346
  : successStats.mean;
284
347
  const avgLatency = latencyMetrics.length > 0
285
- ? latencyMetrics.reduce((sum, m) => sum + Number(m.metric_value), 0) / latencyMetrics.length
348
+ ? latencyMetrics.reduce((sum, m) => sum + Number(m.metric_value), 0) /
349
+ latencyMetrics.length
286
350
  : latencyStats.mean;
287
351
  let recommendation = 'maintain';
288
352
  // 2. Map Dynamic Thresholds to Recommendations
289
353
  // Critical: Worse than 2.5 standard deviations from mean
290
- const criticalThreshold = successStats.mean - (2.5 * successStats.stdDev);
354
+ const criticalThreshold = successStats.mean - 2.5 * successStats.stdDev;
291
355
  // Optimize: Worse than 1.0 standard deviations from mean
292
- const accuracyThreshold = successStats.mean - (1.0 * successStats.stdDev);
356
+ const accuracyThreshold = successStats.mean - 1.0 * successStats.stdDev;
293
357
  // Efficiency: Latency > 2 standard deviations above mean
294
- const efficiencyThreshold = latencyStats.mean + (2.0 * latencyStats.stdDev);
358
+ const efficiencyThreshold = latencyStats.mean + 2.0 * latencyStats.stdDev;
295
359
  if (avgSuccess < criticalThreshold) {
296
360
  recommendation = 'critical_intervention';
297
361
  }
@@ -307,11 +371,11 @@ export class StrategicPlanner {
307
371
  successRate: avgSuccess,
308
372
  averageLatency: avgLatency,
309
373
  sampleSize: recentMetrics.length,
310
- recommendation
374
+ recommendation,
311
375
  };
312
376
  }
313
377
  /**
314
- * (Deprecated in favor of initiateAblationMutation) Evolve a persona directly.
378
+ * Evolve a persona directly based on performance.
315
379
  */
316
380
  async evolvePersona(persona, report) {
317
381
  return await this.applyDirectMutation(persona, report);
@@ -343,19 +407,23 @@ export class StrategicPlanner {
343
407
  rollbackHistory: rollbackHistory,
344
408
  last_failed_mutation: {
345
409
  type: lastMutation.type,
346
- timestamp: Date.now()
410
+ timestamp: Date.now(),
347
411
  },
348
412
  evolution_status: 'stable',
349
- lastRollback: Date.now()
413
+ lastRollback: Date.now(),
350
414
  };
351
415
  await trx
352
416
  .updateTable(this.personasTable)
353
417
  .set({
354
418
  role: previous.role,
355
- policies: previous.policies ? JSON.stringify(previous.policies) : undefined,
356
- capabilities: previous.capabilities ? JSON.stringify(previous.capabilities) : undefined,
419
+ policies: previous.policies
420
+ ? JSON.stringify(previous.policies)
421
+ : undefined,
422
+ capabilities: previous.capabilities
423
+ ? JSON.stringify(previous.capabilities)
424
+ : undefined,
357
425
  metadata: JSON.stringify(newMetadata),
358
- updated_at: new Date()
426
+ updated_at: new Date(),
359
427
  })
360
428
  .where('id', '=', id)
361
429
  .execute();
@@ -367,11 +435,17 @@ export class StrategicPlanner {
367
435
  id: p.id,
368
436
  name: p.name,
369
437
  role: p.role,
370
- capabilities: typeof p.capabilities === 'string' ? JSON.parse(p.capabilities) : (p.capabilities || []),
371
- policies: typeof p.policies === 'string' ? JSON.parse(p.policies) : (p.policies || []),
372
- metadata: typeof p.metadata === 'string' ? JSON.parse(p.metadata) : (p.metadata || {}),
438
+ capabilities: typeof p.capabilities === 'string'
439
+ ? JSON.parse(p.capabilities)
440
+ : p.capabilities || [],
441
+ policies: typeof p.policies === 'string'
442
+ ? JSON.parse(p.policies)
443
+ : p.policies || [],
444
+ metadata: typeof p.metadata === 'string'
445
+ ? JSON.parse(p.metadata)
446
+ : p.metadata || {},
373
447
  createdAt: new Date(p.created_at),
374
- updatedAt: new Date(p.updated_at)
448
+ updatedAt: new Date(p.updated_at),
375
449
  };
376
450
  }
377
451
  }
@@ -11,7 +11,8 @@ export class CognitiveSynthesizer {
11
11
  constructor(db, config = {}) {
12
12
  this.db = db;
13
13
  this.config = config;
14
- this.evolutionTable = config.sessionEvolutionTable || 'agent_session_evolution';
14
+ this.evolutionTable =
15
+ config.sessionEvolutionTable || 'agent_session_evolution';
15
16
  }
16
17
  /**
17
18
  * Infer goals and update session evolution with production-grade persistence.
@@ -31,12 +32,13 @@ export class CognitiveSynthesizer {
31
32
  if (existing) {
32
33
  const currentPath = this.parsePath(existing.evolution_path);
33
34
  // Only append to path if goal or strategy shifted significantly
34
- if (existing.inferred_goal !== goalInferred || existing.strategy !== strategy) {
35
+ if (existing.inferred_goal !== goalInferred ||
36
+ existing.strategy !== strategy) {
35
37
  currentPath.push({
36
38
  timestamp: new Date().toISOString(),
37
39
  previousGoal: existing.inferred_goal,
38
40
  newGoal: goalInferred,
39
- strategyShift: strategy
41
+ strategyShift: strategy,
40
42
  });
41
43
  }
42
44
  await trx
@@ -47,7 +49,7 @@ export class CognitiveSynthesizer {
47
49
  evolution_path: JSON.stringify(currentPath),
48
50
  status: 'active',
49
51
  autonomy_level: this.calculateAutonomy(currentPath.length, existing.autonomy_level || 1),
50
- updated_at: new Date()
52
+ updated_at: new Date(),
51
53
  })
52
54
  .where('session_id', '=', sessionId)
53
55
  .execute();
@@ -59,14 +61,16 @@ export class CognitiveSynthesizer {
59
61
  session_id: sessionId,
60
62
  inferred_goal: goalInferred,
61
63
  strategy,
62
- evolution_path: JSON.stringify([{
64
+ evolution_path: JSON.stringify([
65
+ {
63
66
  timestamp: new Date().toISOString(),
64
67
  event: 'session_start',
65
- initialGoal: goalInferred
66
- }]),
68
+ initialGoal: goalInferred,
69
+ },
70
+ ]),
67
71
  status: 'active',
68
72
  autonomy_level: 1,
69
- updated_at: new Date()
73
+ updated_at: new Date(),
70
74
  })
71
75
  .execute();
72
76
  }
@@ -95,7 +99,9 @@ export class CognitiveSynthesizer {
95
99
  timestamp: new Date().toISOString(),
96
100
  type: 'shift',
97
101
  shift: shiftType,
98
- reason: shiftType === 'abandonment' ? 'User manual termination or lack of progress' : 'Strategic goal shift'
102
+ reason: shiftType === 'abandonment'
103
+ ? 'User manual termination or lack of progress'
104
+ : 'Strategic goal shift',
99
105
  });
100
106
  await trx
101
107
  .updateTable(this.evolutionTable)
@@ -103,7 +109,7 @@ export class CognitiveSynthesizer {
103
109
  status: shiftType === 'pivot' ? 'pivoted' : 'abandoned',
104
110
  strategy: shiftType === 'pivot' ? 'Strategic Pivot' : 'Terminated',
105
111
  evolution_path: JSON.stringify(currentPath),
106
- updated_at: new Date()
112
+ updated_at: new Date(),
107
113
  })
108
114
  .where('session_id', '=', sessionId)
109
115
  .execute();
@@ -119,7 +125,15 @@ export class CognitiveSynthesizer {
119
125
  if (clean.length < 100)
120
126
  return clean;
121
127
  // Simple heuristic: look for "need", "want", "please", "can you"
122
- const keywords = ['need', 'want', 'please', 'can you', 'implement', 'fix', 'add'];
128
+ const keywords = [
129
+ 'need',
130
+ 'want',
131
+ 'please',
132
+ 'can you',
133
+ 'implement',
134
+ 'fix',
135
+ 'add',
136
+ ];
123
137
  for (const kw of keywords) {
124
138
  const index = clean.toLowerCase().indexOf(kw);
125
139
  if (index !== -1) {
@@ -139,7 +153,7 @@ export class CognitiveSynthesizer {
139
153
  return 'Adaptive Exploration';
140
154
  }
141
155
  calculateAutonomy(pivots, currentLevel) {
142
- // Logic: frequent pivots without completion decrease autonomy.
156
+ // Logic: frequent pivots without completion decrease autonomy.
143
157
  // Consistent execution increases it.
144
158
  if (pivots > 5)
145
159
  return Math.min(4, currentLevel + 1);
@@ -6,7 +6,8 @@ export class EventHarvester {
6
6
  constructor(db, config = {}) {
7
7
  this.db = db;
8
8
  this.config = config;
9
- this.telemetryTable = config.telemetryEventsTable || 'agent_telemetry_events';
9
+ this.telemetryTable =
10
+ config.telemetryEventsTable || 'agent_telemetry_events';
10
11
  }
11
12
  /**
12
13
  * Persist a raw telemetry event
@@ -20,7 +21,7 @@ export class EventHarvester {
20
21
  type,
21
22
  content,
22
23
  metadata: metadata ? JSON.stringify(metadata) : null,
23
- created_at: new Date()
24
+ created_at: new Date(),
24
25
  })
25
26
  .execute();
26
27
  }
@@ -20,7 +20,7 @@ export class ResearchAlchemist {
20
20
  metric_name: metricName,
21
21
  value: value,
22
22
  metadata: metadata ? JSON.stringify(metadata) : null,
23
- created_at: new Date()
23
+ created_at: new Date(),
24
24
  })
25
25
  .execute();
26
26
  }
@@ -32,9 +32,18 @@ export class ResearchAlchemist {
32
32
  * Calculate novelty or Discovery Index
33
33
  */
34
34
  async trackDiscovery(sessionId, taskType) {
35
- // Mock logic: higher value if taskType is unseen
36
- const discoveryValue = Math.random() > 0.8 ? 0.9 : 0.2;
37
- await this.transmute(sessionId, 'discovery_index', discoveryValue, { taskType });
35
+ // Production Hardening: Real database-backed novelty check
36
+ const existing = await this.db
37
+ .selectFrom(this.metricsTable)
38
+ .select('id')
39
+ .where('metric_name', '=', 'discovery_index')
40
+ .where('metadata', 'like', `%${taskType}%`)
41
+ .executeTakeFirst();
42
+ const discoveryValue = existing ? 0.1 : 1.0; // 1.0 for first-time discovery, 0.1 for repeat
43
+ await this.transmute(sessionId, 'discovery_index', discoveryValue, {
44
+ taskType,
45
+ firstDiscovery: !existing,
46
+ });
38
47
  }
39
48
  /**
40
49
  * Record a "Magic" moment
@@ -38,7 +38,7 @@ export class CacheManager {
38
38
  const item = {
39
39
  value,
40
40
  timestamp: Date.now(),
41
- ttl: ttl || this.config.ttl || 300000 // 5 minutes default
41
+ ttl: ttl || this.config.ttl || 300000, // 5 minutes default
42
42
  };
43
43
  // Refresh LRU position if exists
44
44
  if (this.cache.has(key)) {
@@ -74,7 +74,7 @@ export class CacheManager {
74
74
  size: this.cache.size,
75
75
  hits: this.hits,
76
76
  misses: this.misses,
77
- hitRate: total > 0 ? this.hits / total : 0
77
+ hitRate: total > 0 ? this.hits / total : 0,
78
78
  };
79
79
  }
80
80
  /**
@@ -157,12 +157,15 @@ export class CacheManager {
157
157
  * Get all cache values
158
158
  */
159
159
  values() {
160
- return Array.from(this.cache.values()).map(item => item.value);
160
+ return Array.from(this.cache.values()).map((item) => item.value);
161
161
  }
162
162
  /**
163
163
  * Get all cache entries
164
164
  */
165
165
  entries() {
166
- return Array.from(this.cache.entries()).map(([key, item]) => [key, item.value]);
166
+ return Array.from(this.cache.entries()).map(([key, item]) => [
167
+ key,
168
+ item.value,
169
+ ]);
167
170
  }
168
171
  }
@@ -13,11 +13,11 @@ export async function analyze(options) {
13
13
  host: 'localhost',
14
14
  port: 0,
15
15
  username: '',
16
- password: ''
16
+ password: '',
17
17
  },
18
18
  performance: {
19
- enableQueryOptimization: true
20
- }
19
+ enableQueryOptimization: true,
20
+ },
21
21
  });
22
22
  await db.initialize();
23
23
  console.log(chalk.gray(`šŸ“ Database: ${databasePath}\n`));
@@ -106,7 +106,8 @@ export async function analyze(options) {
106
106
  console.log(chalk.gray(` Average query time: ${sqliteMetrics.averageQueryTime.toFixed(2)}ms`));
107
107
  console.log(chalk.gray(` Total queries executed: ${sqliteMetrics.totalQueries}`));
108
108
  console.log(chalk.gray(` Slow queries (>1000ms): ${sqliteMetrics.slowQueries}`));
109
- if (metrics.warningCount && Object.keys(metrics.warningCount).length > 0) {
109
+ if (metrics.warningCount &&
110
+ Object.keys(metrics.warningCount).length > 0) {
110
111
  console.log(chalk.yellow('\nāš ļø Warnings:'));
111
112
  Object.entries(metrics.warningCount).forEach(([type, count]) => {
112
113
  console.log(chalk.gray(` ${type}: ${count}`));