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
@@ -26,62 +26,83 @@ class GovernanceManager {
26
26
  async performAudit() {
27
27
  const issues = [];
28
28
  // Fetch active policies
29
- const policies = await this.db
29
+ const policies = (await this.db
30
30
  .selectFrom(this.policiesTable)
31
31
  .selectAll()
32
32
  .where('is_enabled', '=', true)
33
- .execute();
33
+ .execute());
34
34
  const getPolicyValue = (name, type, fallback) => {
35
- const p = policies.find(p => p.name === name || p.type === type);
35
+ const p = policies.find((p) => p.name === name || p.type === type);
36
36
  if (!p)
37
37
  return fallback;
38
- const def = typeof p.definition === 'string' ? JSON.parse(p.definition) : p.definition;
38
+ const def = typeof p.definition === 'string'
39
+ ? JSON.parse(p.definition)
40
+ : p.definition;
39
41
  return def.threshold ?? fallback;
40
42
  };
41
- // 1. Check for cost spikes in the last hour
42
- const budgetThreshold = getPolicyValue('hourly_budget', 'budget', 1.0);
43
- const recentCost = await this.db
44
- .selectFrom(this.metricsTable)
45
- .select((eb) => eb.fn.sum('metric_value').as('total'))
46
- .where('metric_name', '=', 'total_cost')
47
- .where('created_at', '>', new Date(Date.now() - 3600000))
48
- .executeTakeFirst();
49
- const cost = Number(recentCost?.total || 0);
50
- if (cost > budgetThreshold) {
51
- issues.push(`Critical: High cost detected ($${cost.toFixed(2)} vs limit $${budgetThreshold})`);
43
+ // 1. Budgetary Governance: Check for cost spikes in various windows
44
+ const hourlyLimit = getPolicyValue('hourly_budget', 'budget', 1.0);
45
+ const dailyLimit = getPolicyValue('daily_budget', 'budget', 10.0);
46
+ const getCostInWindow = async (ms) => {
47
+ const result = await this.db
48
+ .selectFrom(this.metricsTable)
49
+ .select((eb) => eb.fn.sum('metric_value').as('total'))
50
+ .where('metric_name', '=', 'total_cost')
51
+ .where('created_at', '>', new Date(Date.now() - ms))
52
+ .executeTakeFirst();
53
+ return Number(result?.total || 0);
54
+ };
55
+ const hCost = await getCostInWindow(3600000);
56
+ if (hCost > hourlyLimit) {
57
+ issues.push(`Budget Violations: Hourly cost ($${hCost.toFixed(2)}) exceeded policy ($${hourlyLimit.toFixed(2)})`);
58
+ }
59
+ const dCost = await getCostInWindow(86400000);
60
+ if (dCost > dailyLimit) {
61
+ issues.push(`Budget Violations: Daily cumulative cost ($${dCost.toFixed(2)}) exceeded safety ceiling ($${dailyLimit.toFixed(2)})`);
52
62
  }
53
- // 2. Check for success rate drop
54
- const successThreshold = getPolicyValue('min_success_rate', 'safety', 0.5);
55
- const avgSuccess = await this.db
63
+ // 2. Performance Governance: Success Rates & Success Stability
64
+ const minSuccess = getPolicyValue('min_success_rate', 'safety', 0.6);
65
+ // Statistical Success Rate (last 100 events)
66
+ const recentSuccess = await this.db
56
67
  .selectFrom(this.metricsTable)
57
68
  .select((eb) => eb.fn.avg('metric_value').as('avg'))
58
69
  .where('metric_name', '=', 'success_rate')
70
+ .orderBy('created_at', 'desc')
71
+ .limit(100)
59
72
  .executeTakeFirst();
60
- const success = Number(avgSuccess?.avg || 1);
61
- if (success < successThreshold) {
62
- issues.push(`Critical: Success rate dropped to ${Math.round(success * 100)}% (limit ${successThreshold * 100}%)`);
73
+ const success = Number(recentSuccess?.avg || 1);
74
+ if (success < minSuccess) {
75
+ issues.push(`Performance Degradation: Rolling success rate (${Math.round(success * 100)}%) is below policy requirement (${minSuccess * 100}%)`);
76
+ }
77
+ // 3. Infrastructure Integrity: Reliability of Verified Skills
78
+ // Detect if any "verified" skills are participating in "failure" loops
79
+ const reliabiltyLimit = getPolicyValue('reliability_floor', 'integrity', 0.7);
80
+ const failingVerified = await this.db
81
+ .selectFrom(this.config.capabilitiesTable || 'agent_capabilities')
82
+ .select(['name', 'reliability'])
83
+ .where('status', '=', 'verified')
84
+ .where('reliability', '<', reliabiltyLimit)
85
+ .execute();
86
+ for (const cap of failingVerified) {
87
+ issues.push(`Integrity Failure: Verified skill '${cap.name}' reliability (${cap.reliability.toFixed(2)}) dropped below floor (${reliabiltyLimit})`);
63
88
  }
64
89
  if (issues.length > 0) {
65
- console.warn(`[GovernanceManager] Audit failed: ${issues.join(', ')}`);
66
- // Critical Self-Healing: If persona is in verification or success rate is catastrophically low
90
+ console.warn(`[GovernanceManager] AUDIT FAILED [${new Date().toISOString()}]: ${issues.length} compliance issues detected.`);
91
+ // Phase 1: Emergency Rollbacks
67
92
  const activePersona = await this.getActivePersona();
68
- if (activePersona) {
69
- const isVerifying = activePersona.metadata?.evolution_status === 'verifying';
70
- if (isVerifying || success < 0.3) {
71
- const reason = isVerifying ? `Verification failed` : `Catastrophic failure`;
72
- console.error(`[GovernanceManager] ${reason} detected. Triggering emergency rollback for persona ${activePersona.id}`);
73
- await this.cortex.strategy.rollbackPersona(activePersona.id);
74
- issues.push(`Self-Healed: Triggered emergency rollback for persona ${activePersona.id} (${reason})`);
75
- }
93
+ if (activePersona && (success < 0.4 || hCost > hourlyLimit * 1.5)) {
94
+ console.error(`[GovernanceManager] CRITICAL THRESHOLD BREACH. Initiating emergency containment for persona ${activePersona.id}`);
95
+ await this.cortex.strategy.rollbackPersona(activePersona.id);
96
+ issues.push(`Containment: Emergency rollback triggered for persona ${activePersona.id}`);
76
97
  }
77
- // Automatically record a "Panic" reflection
78
- await this.cortex.reflections.reflect(null, 'failure', 'Infrastructure Audit Failure', [`Issues found: ${issues.join('; ')}`]);
79
- // Trigger remediation rituals (compression, pruning)
98
+ // Phase 2: Systemic Reflections
99
+ await this.cortex.reflections.reflect(null, 'failure', 'Governance Compliance Audit', issues);
100
+ // Phase 3: Remediation Rituals
80
101
  await this.triggerRemediation(issues);
81
102
  }
82
103
  return {
83
104
  healthy: issues.length === 0,
84
- issues
105
+ issues,
85
106
  };
86
107
  }
87
108
  /**
@@ -91,28 +112,39 @@ class GovernanceManager {
91
112
  const active = await this.db
92
113
  .selectFrom(this.personasTable)
93
114
  .selectAll()
94
- .where('name', '=', 'default') // Or however we track the "active" one
115
+ .where('status', '=', 'active')
95
116
  .executeTakeFirst();
96
117
  if (!active)
97
118
  return null;
98
119
  return {
99
120
  ...active,
100
- metadata: typeof active.metadata === 'string' ? JSON.parse(active.metadata) : (active.metadata || {})
121
+ metadata: typeof active.metadata === 'string'
122
+ ? JSON.parse(active.metadata)
123
+ : active.metadata || {},
101
124
  };
102
125
  }
103
126
  /**
104
- * Trigger autonomous remediation steps
127
+ * Trigger autonomous remediation steps based on specific failure modes
105
128
  */
106
129
  async triggerRemediation(issues) {
107
- console.log(`[GovernanceManager] Triggering automated remediation for ${issues.length} issues...`);
108
130
  for (const issue of issues) {
109
- if (issue.includes('High cost')) {
110
- // Immediate remediation: schedule emergency compression ritual
111
- await this.cortex.rituals.scheduleRitual('Emergency Compression', 'compression', 'hourly', 'Governance triggered emergency compression due to high cost.', { priority: 'high', reason: issue });
131
+ if (issue.includes('Budget Violations')) {
132
+ await this.cortex.rituals.scheduleRitual('Budget Remediation', 'compression', 'hourly', `Automated response to: ${issue}`, { priority: 'critical', enforce_limits: true });
133
+ }
134
+ if (issue.includes('Performance Degradation')) {
135
+ await this.cortex.rituals.scheduleRitual('Reliability Sweep', 'pruning', 'daily', `Sanitizing high-noise memories due to: ${issue}`, { priority: 'medium', target: 'longtail' });
112
136
  }
113
- if (issue.includes('Success rate')) {
114
- // Immediate remediation: prune zombies and zombies
115
- await this.cortex.rituals.scheduleRitual('Emergency Pruning', 'pruning', 'hourly', 'Governance triggered emergency pruning due to low success rate.', { priority: 'high', reason: issue });
137
+ if (issue.includes('Integrity Failure')) {
138
+ // Force demotion of the specific skill back to sandbox or experimental
139
+ const skillName = issue.match(/'([^']+)'/)?.[1];
140
+ if (skillName) {
141
+ console.log(`[GovernanceManager] Demoting tainted skill out of verified pool: ${skillName}`);
142
+ await this.db
143
+ .updateTable(this.config.capabilitiesTable || 'agent_capabilities')
144
+ .set({ status: 'experimental', updated_at: new Date() })
145
+ .where('name', '=', skillName)
146
+ .execute();
147
+ }
116
148
  }
117
149
  }
118
150
  }
@@ -137,11 +169,15 @@ class GovernanceManager {
137
169
  const slowTables = new Set();
138
170
  for (const q of recentSlowQueries) {
139
171
  try {
140
- const meta = typeof q.metadata === 'string' ? JSON.parse(q.metadata) : (q.metadata || {});
172
+ const meta = typeof q.metadata === 'string'
173
+ ? JSON.parse(q.metadata)
174
+ : q.metadata || {};
141
175
  if (meta.table)
142
176
  slowTables.add(meta.table);
143
177
  }
144
- catch (e) { /* ignore parse errors */ }
178
+ catch (e) {
179
+ /* ignore parse errors */
180
+ }
145
181
  }
146
182
  for (const table of slowTables) {
147
183
  repairs.push(`Table '${table}' is experiencing periodic latency spikes. Suggesting 'CREATE INDEX' for common filters.`);
@@ -154,11 +190,11 @@ class GovernanceManager {
154
190
  // 3. Check for cold storage candidates
155
191
  const sessionsTable = this.config.sessionsTable || 'agent_sessions';
156
192
  const oldThreshold = new Date(Date.now() - 30 * 24 * 60 * 60 * 1000); // 30 days
157
- const oldSessions = await this.db
193
+ const oldSessions = (await this.db
158
194
  .selectFrom(sessionsTable)
159
195
  .select((eb) => eb.fn.count('id').as('count'))
160
196
  .where('created_at', '<', oldThreshold)
161
- .executeTakeFirst();
197
+ .executeTakeFirst());
162
198
  if (Number(oldSessions?.count || 0) > 100) {
163
199
  repairs.push(`[STORAGE OPTIMIZATION] Found ${oldSessions.count} sessions older than 30 days. Consider moving to cold storage to reduce primary database size and improve backup speed.`);
164
200
  }
@@ -22,4 +22,13 @@ export declare class HiveLink {
22
22
  * Increases confidence of all items with this tag, representing "domain mastery".
23
23
  */
24
24
  syncDomain(domainTag: string, boostFactor?: number): Promise<number>;
25
+ /**
26
+ * Propagate high-performing capabilities globally and block known-bad ones.
27
+ * High-Throughput Refactor: Batch updates and optimized set-based checks.
28
+ */
29
+ broadcastSkills(): Promise<number>;
30
+ /**
31
+ * Simple semver-style version comparison.
32
+ */
33
+ private compareVersions;
25
34
  }
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.HiveLink = void 0;
4
+ const sql_js_1 = require("../../raw-builder/sql.js");
4
5
  /**
5
6
  * HiveLink facilitates "Collective Intelligence" by synchronizing
6
7
  * knowledge and lessons learned across different agent personas.
@@ -26,12 +27,12 @@ class HiveLink {
26
27
  async broadcastKnowledge(minConfidence = 0.9) {
27
28
  console.log(`[HiveLink] Broadcasting knowledge with confidence >= ${minConfidence}`);
28
29
  // Find high-confidence items that are "local" (have a source_session_id)
29
- const items = await this.typedDb
30
+ const items = (await this.typedDb
30
31
  .selectFrom(this.knowledgeTable)
31
32
  .selectAll()
32
33
  .where('confidence', '>=', minConfidence)
33
34
  .where('source_session_id', 'is not', null) // Only local items
34
- .execute();
35
+ .execute());
35
36
  let promotedCount = 0;
36
37
  for (const item of items) {
37
38
  // Check if a global version already exists
@@ -50,7 +51,7 @@ class HiveLink {
50
51
  .updateTable(this.knowledgeTable)
51
52
  .set({
52
53
  confidence: newConfidence,
53
- updated_at: new Date()
54
+ updated_at: new Date(),
54
55
  })
55
56
  .where('id', '=', existingGlobal.id)
56
57
  .execute();
@@ -71,10 +72,10 @@ class HiveLink {
71
72
  metadata: JSON.stringify({
72
73
  ...item.metadata,
73
74
  promoted_from: item.id,
74
- promoted_at: new Date()
75
+ promoted_at: new Date(),
75
76
  }),
76
77
  created_at: new Date(),
77
- updated_at: new Date()
78
+ updated_at: new Date(),
78
79
  })
79
80
  .execute();
80
81
  promotedCount++;
@@ -87,30 +88,123 @@ class HiveLink {
87
88
  * Increases confidence of all items with this tag, representing "domain mastery".
88
89
  */
89
90
  async syncDomain(domainTag, boostFactor = 0.05) {
90
- console.log(`[HiveLink] Syncing/Boosting domain '${domainTag}'`);
91
- // Find items with this tag
92
- // Note: simplified tag matching using LIKE for JSON array
93
- const items = await this.typedDb
94
- .selectFrom(this.knowledgeTable)
95
- .selectAll()
91
+ console.log(`[HiveLink] Syncing/Boosting domain '${domainTag}' (Set-Based)`);
92
+ // Use a single SQL update for high throughput
93
+ const result = await this.db
94
+ .updateTable(this.knowledgeTable)
95
+ .set({
96
+ confidence: (0, sql_js_1.sql) `MIN(1.0, confidence + ${boostFactor})`,
97
+ updated_at: new Date(),
98
+ })
96
99
  .where('tags', 'like', `%"${domainTag}"%`)
100
+ .where('confidence', '<', 1.0)
97
101
  .execute();
98
- let updatedCount = 0;
99
- for (const item of items) {
100
- if (item.confidence >= 1.0)
101
- continue;
102
- const newConfidence = Math.min(1.0, item.confidence + boostFactor);
103
- await this.db
104
- .updateTable(this.knowledgeTable)
105
- .set({
106
- confidence: newConfidence,
107
- updated_at: new Date()
108
- })
109
- .where('id', '=', item.id)
110
- .execute();
111
- updatedCount++;
102
+ // Kysely update .execute() returns an array of results or similar depending on adapter
103
+ // For simple update, we might just return the count if supported or 1
104
+ return Number(result[0]?.numUpdatedRows ?? 1);
105
+ }
106
+ /**
107
+ * Propagate high-performing capabilities globally and block known-bad ones.
108
+ * High-Throughput Refactor: Batch updates and optimized set-based checks.
109
+ */
110
+ async broadcastSkills() {
111
+ if (!this.config.evolution?.enableHiveLink &&
112
+ this.config.evolution !== undefined) {
113
+ console.log('[HiveLink] Skill broadcasting disabled by config.');
114
+ return 0;
115
+ }
116
+ console.log(`[HiveLink] Broadcasting emergent skills across the Hive (Performance-Aware)...`);
117
+ let broadcastCount = 0;
118
+ const capTable = this.config.capabilitiesTable || 'agent_capabilities';
119
+ await this.db.transaction().execute(async (trx) => {
120
+ // 1. Resolve Verified Skills with "Survival of the Fittest" logic
121
+ const verifiedSkills = await this.cortex.capabilities.getCapabilities('verified');
122
+ for (const skill of verifiedSkills) {
123
+ const meta = typeof skill.metadata === 'string'
124
+ ? JSON.parse(skill.metadata)
125
+ : skill.metadata || {};
126
+ if (meta.broadcasted)
127
+ continue;
128
+ // Check for competing global versions
129
+ const baseName = meta.mutatedFrom || skill.name;
130
+ const competitor = await trx
131
+ .selectFrom(capTable)
132
+ .selectAll()
133
+ .where('name', 'like', `%${baseName}%`)
134
+ .where('status', '=', 'verified')
135
+ .where('id', '!=', skill.id)
136
+ .executeTakeFirst();
137
+ let shouldBroadcast = true;
138
+ if (competitor) {
139
+ const comp = competitor;
140
+ const compRel = comp.reliability || 0;
141
+ // Performance-Based Conflict Resolution: Only broadcast if reliability is strictly better
142
+ // or if it's a direct version upgrade with equal/better reliability
143
+ const isNewer = this.compareVersions(skill.version, comp.version) > 0;
144
+ if (compRel > skill.reliability) {
145
+ shouldBroadcast = false;
146
+ }
147
+ else if (compRel === skill.reliability && !isNewer) {
148
+ shouldBroadcast = false;
149
+ }
150
+ }
151
+ if (shouldBroadcast) {
152
+ await trx
153
+ .updateTable(capTable)
154
+ .set({
155
+ metadata: JSON.stringify({
156
+ ...meta,
157
+ broadcasted: true,
158
+ hive_verified: true,
159
+ broadcasted_at: new Date(),
160
+ conflict_resolved: !!competitor,
161
+ }),
162
+ })
163
+ .where('id', '=', skill.id)
164
+ .execute();
165
+ broadcastCount++;
166
+ }
167
+ }
168
+ // 2. Broadcast Blacklisted Skills (Immediate Immune Propagations)
169
+ const blacklisted = await this.cortex.capabilities.getCapabilities('blacklisted');
170
+ for (const skill of blacklisted) {
171
+ const meta = typeof skill.metadata === 'string'
172
+ ? JSON.parse(skill.metadata)
173
+ : skill.metadata || {};
174
+ if (!meta.broadcasted) {
175
+ await trx
176
+ .updateTable(capTable)
177
+ .set({
178
+ metadata: JSON.stringify({
179
+ ...meta,
180
+ broadcasted: true,
181
+ hive_blacklisted: true,
182
+ blocked_at: new Date(),
183
+ }),
184
+ })
185
+ .where('id', '=', skill.id)
186
+ .execute();
187
+ broadcastCount++;
188
+ }
189
+ }
190
+ });
191
+ return broadcastCount;
192
+ }
193
+ /**
194
+ * Simple semver-style version comparison.
195
+ */
196
+ compareVersions(v1, v2) {
197
+ const p1 = v1.split('.').map(Number);
198
+ const p2 = v2.split('.').map(Number);
199
+ for (let i = 0; i < Math.max(p1.length, p2.length); i++) {
200
+ const num1 = p1[i] || 0;
201
+ const num2 = p2[i] || 0;
202
+ if (num1 > num2)
203
+ return 1;
204
+ if (num2 > num1)
205
+ return -1;
112
206
  }
113
- return updatedCount;
207
+ return 0;
114
208
  }
115
209
  }
116
210
  exports.HiveLink = HiveLink;
@@ -34,6 +34,7 @@ export declare class KnowledgeDistiller {
34
34
  private config;
35
35
  private knowledgeTable;
36
36
  private linksTable;
37
+ private bloomFilter;
37
38
  constructor(db: Kysely<any>, // accepting any Kysely but casting internally for our specific tables
38
39
  config?: AgenticConfig);
39
40
  /**
@@ -100,5 +101,6 @@ export declare class KnowledgeDistiller {
100
101
  */
101
102
  consolidateKnowledge(): Promise<number>;
102
103
  private mergeItems;
104
+ private bloomHash;
103
105
  private parseKnowledge;
104
106
  }