autosnippet 3.3.6 → 3.3.8

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 (275) hide show
  1. package/README.md +1 -0
  2. package/dashboard/dist/assets/icons-BMNb0V6L.js +1 -0
  3. package/dashboard/dist/assets/index-DHJ1Dj7u.css +1 -0
  4. package/dashboard/dist/assets/index-DV8biUkH.js +112 -0
  5. package/dashboard/dist/index.html +3 -3
  6. package/dist/bin/cli.js +8 -4
  7. package/dist/lib/agent/AgentRuntime.d.ts +2 -2
  8. package/dist/lib/agent/AgentRuntime.js +26 -18
  9. package/dist/lib/agent/core/ChatAgentPrompts.js +57 -21
  10. package/dist/lib/agent/core/LoopContext.d.ts +1 -0
  11. package/dist/lib/agent/core/ToolExecutionPipeline.js +13 -0
  12. package/dist/lib/agent/domain/ChatAgentTasks.js +4 -0
  13. package/dist/lib/agent/forced-summary.js +7 -2
  14. package/dist/lib/agent/memory/ActiveContext.d.ts +0 -2
  15. package/dist/lib/agent/memory/ActiveContext.js +0 -2
  16. package/dist/lib/agent/memory/MemoryEmbeddingStore.d.ts +49 -0
  17. package/dist/lib/agent/memory/MemoryEmbeddingStore.js +159 -0
  18. package/dist/lib/agent/memory/MemoryRetriever.d.ts +2 -0
  19. package/dist/lib/agent/memory/MemoryRetriever.js +25 -11
  20. package/dist/lib/agent/memory/MemoryStore.d.ts +8 -41
  21. package/dist/lib/agent/memory/MemoryStore.js +196 -261
  22. package/dist/lib/agent/memory/PersistentMemory.d.ts +2 -0
  23. package/dist/lib/agent/memory/PersistentMemory.js +4 -5
  24. package/dist/lib/agent/memory/SessionStore.d.ts +0 -2
  25. package/dist/lib/agent/memory/SessionStore.js +0 -2
  26. package/dist/lib/agent/tools/ast-graph.js +21 -19
  27. package/dist/lib/agent/tools/infrastructure.js +3 -2
  28. package/dist/lib/agent/tools/project-access.d.ts +2 -2
  29. package/dist/lib/agent/tools/project-access.js +5 -4
  30. package/dist/lib/bootstrap.js +2 -1
  31. package/dist/lib/cli/AiScanService.js +8 -21
  32. package/dist/lib/cli/KnowledgeSyncService.d.ts +7 -37
  33. package/dist/lib/cli/KnowledgeSyncService.js +23 -51
  34. package/dist/lib/core/ast/ProjectGraph.js +5 -27
  35. package/dist/lib/core/discovery/ConfigWatcher.d.ts +64 -0
  36. package/dist/lib/core/discovery/ConfigWatcher.js +336 -0
  37. package/dist/lib/core/discovery/CustomConfigDiscoverer.d.ts +28 -0
  38. package/dist/lib/core/discovery/CustomConfigDiscoverer.js +1303 -0
  39. package/dist/lib/core/discovery/DiscovererPreference.d.ts +44 -0
  40. package/dist/lib/core/discovery/DiscovererPreference.js +141 -0
  41. package/dist/lib/core/discovery/DiscovererRegistry.d.ts +10 -1
  42. package/dist/lib/core/discovery/DiscovererRegistry.js +42 -2
  43. package/dist/lib/core/discovery/ProjectDiscoverer.d.ts +19 -0
  44. package/dist/lib/core/discovery/index.d.ts +2 -0
  45. package/dist/lib/core/discovery/index.js +4 -0
  46. package/dist/lib/core/discovery/parsers/CMakeParser.d.ts +32 -0
  47. package/dist/lib/core/discovery/parsers/CMakeParser.js +148 -0
  48. package/dist/lib/core/discovery/parsers/GradleDslParser.d.ts +43 -0
  49. package/dist/lib/core/discovery/parsers/GradleDslParser.js +171 -0
  50. package/dist/lib/core/discovery/parsers/JsonConfigParser.d.ts +45 -0
  51. package/dist/lib/core/discovery/parsers/JsonConfigParser.js +122 -0
  52. package/dist/lib/core/discovery/parsers/RubyDslParser.d.ts +49 -0
  53. package/dist/lib/core/discovery/parsers/RubyDslParser.js +282 -0
  54. package/dist/lib/core/discovery/parsers/StarlarkParser.d.ts +33 -0
  55. package/dist/lib/core/discovery/parsers/StarlarkParser.js +229 -0
  56. package/dist/lib/core/discovery/parsers/YamlConfigParser.d.ts +37 -0
  57. package/dist/lib/core/discovery/parsers/YamlConfigParser.js +212 -0
  58. package/dist/lib/domain/dimension/DimensionRegistry.d.ts +0 -2
  59. package/dist/lib/domain/dimension/DimensionRegistry.js +0 -2
  60. package/dist/lib/domain/dimension/DimensionSop.js +44 -33
  61. package/dist/lib/domain/dimension/UnifiedDimension.d.ts +0 -2
  62. package/dist/lib/domain/dimension/UnifiedDimension.js +0 -2
  63. package/dist/lib/domain/knowledge/KnowledgeEntry.d.ts +7 -1
  64. package/dist/lib/domain/knowledge/KnowledgeEntry.js +17 -3
  65. package/dist/lib/domain/knowledge/Lifecycle.d.ts +26 -0
  66. package/dist/lib/domain/knowledge/Lifecycle.js +42 -0
  67. package/dist/lib/domain/knowledge/index.d.ts +2 -1
  68. package/dist/lib/domain/knowledge/index.js +1 -1
  69. package/dist/lib/external/ai/AiProvider.d.ts +12 -0
  70. package/dist/lib/external/ai/AiProvider.js +24 -0
  71. package/dist/lib/external/ai/AiProviderManager.d.ts +101 -0
  72. package/dist/lib/external/ai/AiProviderManager.js +193 -0
  73. package/dist/lib/external/ai/providers/ClaudeProvider.js +11 -0
  74. package/dist/lib/external/ai/providers/GoogleGeminiProvider.js +18 -0
  75. package/dist/lib/external/ai/providers/MockProvider.d.ts +21 -3
  76. package/dist/lib/external/ai/providers/MockProvider.js +290 -14
  77. package/dist/lib/external/ai/providers/OpenAiProvider.js +16 -0
  78. package/dist/lib/external/lark/LarkTransport.d.ts +5 -1
  79. package/dist/lib/external/lark/LarkTransport.js +10 -2
  80. package/dist/lib/external/mcp/handlers/bootstrap/pipeline/BootstrapSnapshot.d.ts +2 -1
  81. package/dist/lib/external/mcp/handlers/bootstrap/pipeline/BootstrapSnapshot.js +102 -153
  82. package/dist/lib/external/mcp/handlers/bootstrap/pipeline/mock-pipeline.d.ts +20 -0
  83. package/dist/lib/external/mcp/handlers/bootstrap/pipeline/mock-pipeline.js +432 -0
  84. package/dist/lib/external/mcp/handlers/bootstrap/pipeline/orchestrator.js +49 -24
  85. package/dist/lib/external/mcp/handlers/bootstrap/refine.js +8 -0
  86. package/dist/lib/external/mcp/handlers/bootstrap/shared/bootstrap-phases.d.ts +1 -1
  87. package/dist/lib/external/mcp/handlers/bootstrap/shared/bootstrap-phases.js +41 -37
  88. package/dist/lib/external/mcp/handlers/bootstrap-external.d.ts +9 -0
  89. package/dist/lib/external/mcp/handlers/bootstrap-external.js +3 -1
  90. package/dist/lib/external/mcp/handlers/bootstrap-internal.js +2 -0
  91. package/dist/lib/external/mcp/handlers/consolidated.js +2 -1
  92. package/dist/lib/external/mcp/handlers/dimension-complete-external.js +9 -4
  93. package/dist/lib/external/mcp/handlers/evolve-external.d.ts +1 -0
  94. package/dist/lib/external/mcp/handlers/evolve-external.js +18 -18
  95. package/dist/lib/external/mcp/handlers/guard.js +15 -24
  96. package/dist/lib/external/mcp/handlers/knowledge.js +5 -4
  97. package/dist/lib/external/mcp/handlers/panorama.js +9 -9
  98. package/dist/lib/external/mcp/handlers/rescan-external.js +7 -6
  99. package/dist/lib/external/mcp/handlers/rescan-internal.js +9 -5
  100. package/dist/lib/external/mcp/handlers/search.js +3 -1
  101. package/dist/lib/external/mcp/handlers/skill.js +4 -4
  102. package/dist/lib/external/mcp/handlers/structure.js +8 -12
  103. package/dist/lib/external/mcp/handlers/system.js +10 -34
  104. package/dist/lib/http/routes/ai.js +109 -30
  105. package/dist/lib/http/routes/candidates.js +11 -4
  106. package/dist/lib/http/routes/commands.js +10 -1
  107. package/dist/lib/http/routes/guardReport.js +3 -5
  108. package/dist/lib/http/routes/health.js +11 -0
  109. package/dist/lib/http/routes/modules.js +27 -0
  110. package/dist/lib/http/routes/panorama.js +12 -12
  111. package/dist/lib/http/routes/recipes.js +66 -8
  112. package/dist/lib/http/routes/remote.js +3 -13
  113. package/dist/lib/http/routes/search.js +11 -8
  114. package/dist/lib/http/utils/routeHelpers.js +2 -1
  115. package/dist/lib/infrastructure/audit/AuditLogger.d.ts +20 -3
  116. package/dist/lib/infrastructure/audit/AuditStore.d.ts +28 -29
  117. package/dist/lib/infrastructure/audit/AuditStore.js +81 -88
  118. package/dist/lib/infrastructure/database/drizzle/schema.d.ts +180 -2
  119. package/dist/lib/infrastructure/database/drizzle/schema.js +23 -3
  120. package/dist/lib/injection/ServiceContainer.d.ts +6 -5
  121. package/dist/lib/injection/ServiceContainer.js +18 -31
  122. package/dist/lib/injection/ServiceMap.d.ts +22 -0
  123. package/dist/lib/injection/modules/AiModule.d.ts +6 -9
  124. package/dist/lib/injection/modules/AiModule.js +82 -39
  125. package/dist/lib/injection/modules/AppModule.js +2 -1
  126. package/dist/lib/injection/modules/GuardModule.js +5 -5
  127. package/dist/lib/injection/modules/InfraModule.js +60 -0
  128. package/dist/lib/injection/modules/KnowledgeModule.js +86 -51
  129. package/dist/lib/injection/modules/PanoramaModule.js +16 -10
  130. package/dist/lib/injection/modules/VectorModule.js +3 -0
  131. package/dist/lib/repository/audit/AuditRepository.d.ts +107 -0
  132. package/dist/lib/repository/audit/AuditRepository.js +272 -0
  133. package/dist/lib/repository/base/RepositoryBase.d.ts +46 -0
  134. package/dist/lib/repository/base/RepositoryBase.js +32 -0
  135. package/dist/lib/repository/bootstrap/BootstrapRepository.d.ts +94 -0
  136. package/dist/lib/repository/bootstrap/BootstrapRepository.js +246 -0
  137. package/dist/lib/repository/code/CodeEntityRepository.d.ts +91 -0
  138. package/dist/lib/repository/code/CodeEntityRepository.js +361 -0
  139. package/dist/lib/repository/delivery/DeliveryRepoAdapter.d.ts +39 -0
  140. package/dist/lib/repository/delivery/DeliveryRepoAdapter.js +23 -0
  141. package/dist/lib/repository/evolution/LifecycleEventRepository.d.ts +51 -0
  142. package/dist/lib/repository/evolution/LifecycleEventRepository.js +119 -0
  143. package/dist/lib/repository/evolution/ProposalRepository.d.ts +9 -12
  144. package/dist/lib/repository/evolution/ProposalRepository.js +114 -57
  145. package/dist/lib/repository/guard/GuardViolationRepository.d.ts +104 -0
  146. package/dist/lib/repository/guard/GuardViolationRepository.js +217 -0
  147. package/dist/lib/repository/knowledge/KnowledgeEdgeRepository.d.ts +129 -0
  148. package/dist/lib/repository/knowledge/KnowledgeEdgeRepository.js +475 -0
  149. package/dist/lib/repository/knowledge/KnowledgeFileStore.d.ts +39 -0
  150. package/dist/lib/repository/knowledge/KnowledgeFileStore.js +12 -0
  151. package/dist/lib/repository/knowledge/KnowledgeRepository.impl.d.ts +295 -11
  152. package/dist/lib/repository/knowledge/KnowledgeRepository.impl.js +608 -13
  153. package/dist/lib/repository/knowledge/KnowledgeUnitOfWork.d.ts +61 -0
  154. package/dist/lib/repository/knowledge/KnowledgeUnitOfWork.js +156 -0
  155. package/dist/lib/repository/memory/MemoryRepository.d.ts +90 -0
  156. package/dist/lib/repository/memory/MemoryRepository.js +260 -0
  157. package/dist/lib/repository/search/SearchRepoAdapter.d.ts +92 -0
  158. package/dist/lib/repository/search/SearchRepoAdapter.js +124 -0
  159. package/dist/lib/repository/session/SessionRepository.d.ts +46 -0
  160. package/dist/lib/repository/session/SessionRepository.js +110 -0
  161. package/dist/lib/repository/sourceref/RecipeSourceRefRepository.d.ts +66 -0
  162. package/dist/lib/repository/sourceref/RecipeSourceRefRepository.js +182 -0
  163. package/dist/lib/repository/sync/SyncRepoAdapter.d.ts +58 -0
  164. package/dist/lib/repository/sync/SyncRepoAdapter.js +58 -0
  165. package/dist/lib/service/bootstrap/UiStartupTasks.js +5 -6
  166. package/dist/lib/service/bootstrap/bootstrap-event-types.d.ts +0 -1
  167. package/dist/lib/service/bootstrap/bootstrap-event-types.js +0 -1
  168. package/dist/lib/service/cleanup/CleanupService.d.ts +54 -7
  169. package/dist/lib/service/cleanup/CleanupService.js +291 -40
  170. package/dist/lib/service/delivery/CursorDeliveryPipeline.js +6 -8
  171. package/dist/lib/service/evolution/ConsolidationAdvisor.d.ts +4 -9
  172. package/dist/lib/service/evolution/ConsolidationAdvisor.js +34 -70
  173. package/dist/lib/service/evolution/ContentPatcher.d.ts +4 -12
  174. package/dist/lib/service/evolution/ContentPatcher.js +48 -19
  175. package/dist/lib/service/evolution/ContradictionDetector.d.ts +3 -7
  176. package/dist/lib/service/evolution/ContradictionDetector.js +17 -24
  177. package/dist/lib/service/evolution/DecayDetector.d.ts +10 -9
  178. package/dist/lib/service/evolution/DecayDetector.js +63 -57
  179. package/dist/lib/service/evolution/EnhancementSuggester.d.ts +3 -9
  180. package/dist/lib/service/evolution/EnhancementSuggester.js +42 -86
  181. package/dist/lib/service/evolution/KnowledgeMetabolism.d.ts +4 -4
  182. package/dist/lib/service/evolution/KnowledgeMetabolism.js +102 -71
  183. package/dist/lib/service/evolution/ProposalExecutor.d.ts +5 -12
  184. package/dist/lib/service/evolution/ProposalExecutor.js +64 -69
  185. package/dist/lib/service/evolution/RecipeLifecycleSupervisor.d.ts +9 -14
  186. package/dist/lib/service/evolution/RecipeLifecycleSupervisor.js +94 -155
  187. package/dist/lib/service/evolution/RecipeRelevanceAuditor.d.ts +4 -1
  188. package/dist/lib/service/evolution/RecipeRelevanceAuditor.js +50 -49
  189. package/dist/lib/service/evolution/RedundancyAnalyzer.d.ts +3 -7
  190. package/dist/lib/service/evolution/RedundancyAnalyzer.js +15 -22
  191. package/dist/lib/service/evolution/StagingManager.d.ts +6 -15
  192. package/dist/lib/service/evolution/StagingManager.js +37 -95
  193. package/dist/lib/service/evolution/createSupersedeProposal.d.ts +1 -1
  194. package/dist/lib/service/evolution/createSupersedeProposal.js +7 -8
  195. package/dist/lib/service/guard/CoverageAnalyzer.d.ts +3 -7
  196. package/dist/lib/service/guard/CoverageAnalyzer.js +9 -11
  197. package/dist/lib/service/guard/GuardCheckEngine.d.ts +3 -0
  198. package/dist/lib/service/guard/GuardCheckEngine.js +14 -22
  199. package/dist/lib/service/guard/ReverseGuard.d.ts +4 -7
  200. package/dist/lib/service/guard/ReverseGuard.js +21 -31
  201. package/dist/lib/service/guard/ViolationsStore.d.ts +15 -21
  202. package/dist/lib/service/guard/ViolationsStore.js +75 -69
  203. package/dist/lib/service/knowledge/CodeEntityGraph.d.ts +45 -63
  204. package/dist/lib/service/knowledge/CodeEntityGraph.js +418 -496
  205. package/dist/lib/service/knowledge/ConfidenceRouter.js +18 -9
  206. package/dist/lib/service/knowledge/KnowledgeFileWriter.d.ts +2 -1
  207. package/dist/lib/service/knowledge/KnowledgeGraphService.d.ts +18 -60
  208. package/dist/lib/service/knowledge/KnowledgeGraphService.js +58 -109
  209. package/dist/lib/service/knowledge/KnowledgeService.d.ts +15 -1
  210. package/dist/lib/service/knowledge/KnowledgeService.js +97 -46
  211. package/dist/lib/service/knowledge/RecipeProductionGateway.d.ts +0 -2
  212. package/dist/lib/service/knowledge/RecipeProductionGateway.js +0 -2
  213. package/dist/lib/service/knowledge/SourceRefReconciler.d.ts +5 -13
  214. package/dist/lib/service/knowledge/SourceRefReconciler.js +58 -78
  215. package/dist/lib/service/module/ModuleService.js +10 -19
  216. package/dist/lib/service/panorama/CouplingAnalyzer.d.ts +14 -3
  217. package/dist/lib/service/panorama/CouplingAnalyzer.js +137 -32
  218. package/dist/lib/service/panorama/DimensionAnalyzer.d.ts +7 -4
  219. package/dist/lib/service/panorama/DimensionAnalyzer.js +94 -33
  220. package/dist/lib/service/panorama/LayerInferrer.d.ts +16 -1
  221. package/dist/lib/service/panorama/LayerInferrer.js +118 -1
  222. package/dist/lib/service/panorama/ModuleDiscoverer.d.ts +14 -4
  223. package/dist/lib/service/panorama/ModuleDiscoverer.js +209 -61
  224. package/dist/lib/service/panorama/PanoramaAggregator.d.ts +15 -4
  225. package/dist/lib/service/panorama/PanoramaAggregator.js +128 -62
  226. package/dist/lib/service/panorama/PanoramaScanner.d.ts +5 -1
  227. package/dist/lib/service/panorama/PanoramaScanner.js +60 -31
  228. package/dist/lib/service/panorama/PanoramaService.d.ts +11 -8
  229. package/dist/lib/service/panorama/PanoramaService.js +49 -69
  230. package/dist/lib/service/panorama/PanoramaTypes.d.ts +41 -0
  231. package/dist/lib/service/panorama/RoleRefiner.d.ts +10 -5
  232. package/dist/lib/service/panorama/RoleRefiner.js +92 -282
  233. package/dist/lib/service/panorama/TechStackProfiler.d.ts +13 -0
  234. package/dist/lib/service/panorama/TechStackProfiler.js +79 -0
  235. package/dist/lib/service/quality/QualityScorer.d.ts +45 -26
  236. package/dist/lib/service/quality/QualityScorer.js +157 -83
  237. package/dist/lib/service/search/SearchEngine.d.ts +1 -0
  238. package/dist/lib/service/search/SearchEngine.js +32 -37
  239. package/dist/lib/service/signal/HitRecorder.js +5 -5
  240. package/dist/lib/service/skills/RuleRecallStrategy.js +7 -3
  241. package/dist/lib/service/skills/SignalCollector.d.ts +6 -8
  242. package/dist/lib/service/skills/SignalCollector.js +34 -60
  243. package/dist/lib/service/skills/SkillAdvisor.d.ts +7 -13
  244. package/dist/lib/service/skills/SkillAdvisor.js +30 -79
  245. package/dist/lib/service/vector/ContextualEnricher.d.ts +1 -0
  246. package/dist/lib/service/vector/ContextualEnricher.js +4 -0
  247. package/dist/lib/service/vector/SyncCoordinator.d.ts +3 -1
  248. package/dist/lib/service/vector/SyncCoordinator.js +25 -3
  249. package/dist/lib/service/vector/VectorService.d.ts +2 -0
  250. package/dist/lib/service/vector/VectorService.js +3 -0
  251. package/dist/lib/service/wiki/WikiGenerator.js +1 -1
  252. package/dist/lib/shared/LanguageProfiles.d.ts +109 -0
  253. package/dist/lib/shared/LanguageProfiles.js +939 -0
  254. package/dist/lib/shared/LanguageService.d.ts +6 -0
  255. package/dist/lib/shared/LanguageService.js +19 -0
  256. package/dist/lib/shared/constants.d.ts +19 -19
  257. package/dist/lib/shared/constants.js +10 -10
  258. package/dist/lib/shared/developer-identity.d.ts +18 -0
  259. package/dist/lib/shared/developer-identity.js +62 -0
  260. package/dist/lib/shared/schemas/http-requests.d.ts +8 -17
  261. package/dist/lib/shared/schemas/http-requests.js +9 -6
  262. package/dist/lib/shared/schemas/mcp-tools.d.ts +1 -1
  263. package/dist/lib/types/knowledge-wire.d.ts +1 -0
  264. package/dist/lib/types/project-snapshot-builder.d.ts +0 -1
  265. package/dist/lib/types/project-snapshot-builder.js +0 -1
  266. package/dist/lib/types/project-snapshot.d.ts +0 -1
  267. package/dist/lib/types/project-snapshot.js +0 -1
  268. package/dist/lib/types/snapshot-views.d.ts +0 -2
  269. package/dist/lib/types/snapshot-views.js +0 -1
  270. package/package.json +2 -1
  271. package/dashboard/dist/assets/icons-D1aVZYFW.js +0 -1
  272. package/dashboard/dist/assets/index-CxHOu8Hd.css +0 -1
  273. package/dashboard/dist/assets/index-DDdAOpYT.js +0 -128
  274. package/dist/lib/repository/base/BaseRepository.d.ts +0 -53
  275. package/dist/lib/repository/base/BaseRepository.js +0 -226
@@ -16,7 +16,18 @@ import { EventBus } from '../../infrastructure/event/EventBus.js';
16
16
  import Logger from '../../infrastructure/logging/Logger.js';
17
17
  import { getRealtimeService as _getRealtimeService } from '../../infrastructure/realtime/RealtimeService.js';
18
18
  import { ReportStore } from '../../infrastructure/report/ReportStore.js';
19
+ import { AuditRepositoryImpl } from '../../repository/audit/AuditRepository.js';
20
+ import { BootstrapRepositoryImpl } from '../../repository/bootstrap/BootstrapRepository.js';
21
+ import { CodeEntityRepositoryImpl } from '../../repository/code/CodeEntityRepository.js';
22
+ import { ProposalRepository } from '../../repository/evolution/ProposalRepository.js';
23
+ import { GuardViolationRepositoryImpl } from '../../repository/guard/GuardViolationRepository.js';
24
+ import { KnowledgeEdgeRepositoryImpl } from '../../repository/knowledge/KnowledgeEdgeRepository.js';
19
25
  import { KnowledgeRepositoryImpl } from '../../repository/knowledge/KnowledgeRepository.impl.js';
26
+ import { MemoryRepositoryImpl } from '../../repository/memory/MemoryRepository.js';
27
+ import { RemoteCommandRepository } from '../../repository/remote/RemoteCommandRepository.js';
28
+ import { unwrapRawDb } from '../../repository/search/SearchRepoAdapter.js';
29
+ import { SessionRepositoryImpl } from '../../repository/session/SessionRepository.js';
30
+ import { RecipeSourceRefRepositoryImpl } from '../../repository/sourceref/RecipeSourceRefRepository.js';
20
31
  import { BootstrapTaskManager } from '../../service/bootstrap/BootstrapTaskManager.js';
21
32
  import { KnowledgeFileWriter } from '../../service/knowledge/KnowledgeFileWriter.js';
22
33
  export function register(c) {
@@ -59,6 +70,55 @@ export function register(c) {
59
70
  const drizzle = db.getDrizzle();
60
71
  return new KnowledgeRepositoryImpl(db, drizzle);
61
72
  });
73
+ c.singleton('knowledgeEdgeRepository', (ct) => {
74
+ const db = ct.get('database');
75
+ const drizzle = db.getDrizzle();
76
+ return new KnowledgeEdgeRepositoryImpl(drizzle);
77
+ });
78
+ c.singleton('codeEntityRepository', (ct) => {
79
+ const db = ct.get('database');
80
+ const drizzle = db.getDrizzle();
81
+ return new CodeEntityRepositoryImpl(drizzle);
82
+ });
83
+ c.singleton('bootstrapRepository', (ct) => {
84
+ const db = ct.get('database');
85
+ const drizzle = db.getDrizzle();
86
+ return new BootstrapRepositoryImpl(drizzle);
87
+ });
88
+ c.singleton('guardViolationRepository', (ct) => {
89
+ const db = ct.get('database');
90
+ const drizzle = db.getDrizzle();
91
+ return new GuardViolationRepositoryImpl(drizzle);
92
+ });
93
+ c.singleton('auditRepository', (ct) => {
94
+ const db = ct.get('database');
95
+ const drizzle = db.getDrizzle();
96
+ return new AuditRepositoryImpl(drizzle);
97
+ });
98
+ c.singleton('memoryRepository', (ct) => {
99
+ const db = ct.get('database');
100
+ const drizzle = db.getDrizzle();
101
+ return new MemoryRepositoryImpl(drizzle);
102
+ });
103
+ c.singleton('sessionRepository', (ct) => {
104
+ const db = ct.get('database');
105
+ const drizzle = db.getDrizzle();
106
+ return new SessionRepositoryImpl(drizzle);
107
+ });
108
+ c.singleton('proposalRepository', (ct) => {
109
+ const db = ct.get('database');
110
+ const drizzle = db.getDrizzle();
111
+ return new ProposalRepository(drizzle);
112
+ });
113
+ c.singleton('remoteCommandRepository', (ct) => {
114
+ const db = ct.get('database');
115
+ return new RemoteCommandRepository(unwrapRawDb(db), db.getDrizzle());
116
+ });
117
+ c.singleton('recipeSourceRefRepository', (ct) => {
118
+ const db = ct.get('database');
119
+ const drizzle = db.getDrizzle();
120
+ return new RecipeSourceRefRepositoryImpl(drizzle);
121
+ });
62
122
  c.singleton('knowledgeFileWriter', (ct) => {
63
123
  const projectRoot = resolveProjectRoot(ct);
64
124
  return new KnowledgeFileWriter(projectRoot);
@@ -14,6 +14,7 @@ import { getEnhancementRegistry } from '../../core/enhancement/index.js';
14
14
  import { HnswVectorAdapter } from '../../infrastructure/vector/HnswVectorAdapter.js';
15
15
  import { IndexingPipeline } from '../../infrastructure/vector/IndexingPipeline.js';
16
16
  import { JsonVectorAdapter } from '../../infrastructure/vector/JsonVectorAdapter.js';
17
+ import { LifecycleEventRepository } from '../../repository/evolution/LifecycleEventRepository.js';
17
18
  import { ProposalRepository } from '../../repository/evolution/ProposalRepository.js';
18
19
  import { ConsolidationAdvisor } from '../../service/evolution/ConsolidationAdvisor.js';
19
20
  import { ContentPatcher } from '../../service/evolution/ContentPatcher.js';
@@ -42,11 +43,13 @@ export function register(c) {
42
43
  confidenceRouter: ct.get('confidenceRouter'),
43
44
  qualityScorer: ct.get('qualityScorer'),
44
45
  eventBus: ct.services.eventBus ? ct.get('eventBus') : null,
46
+ edgeRepo: ct.get('knowledgeEdgeRepository'),
47
+ proposalRepo: ct.get('proposalRepository'),
45
48
  }));
46
- c.singleton('knowledgeGraphService', (ct) => new KnowledgeGraphService(ct.get('database')));
49
+ c.singleton('knowledgeGraphService', (ct) => new KnowledgeGraphService(ct.get('knowledgeEdgeRepository')));
47
50
  c.singleton('codeEntityGraph', (ct) => {
48
51
  const projectRoot = resolveProjectRoot(ct);
49
- return new CodeEntityGraph(ct.get('database'), { projectRoot });
52
+ return new CodeEntityGraph(ct.get('codeEntityRepository'), ct.get('knowledgeEdgeRepository'), { projectRoot });
50
53
  });
51
54
  // ═══ Search + Vector ═══
52
55
  c.singleton('searchEngine', (ct) => {
@@ -58,11 +61,10 @@ export function register(c) {
58
61
  vectorStore: ct.get('vectorStore'),
59
62
  vectorService,
60
63
  hybridRetriever: ct.get('hybridRetriever'),
61
- // CrossEncoderReranker disabled — BM25+vector dual-recall + CoarseRanker + MultiSignalRanker
62
- // is sufficient for knowledge-base scale (hundreds~thousands of entries).
63
- // Re-enable when document scale grows to 10k+ or external noisy sources are integrated.
64
64
  crossEncoderReranker: null,
65
65
  signalBus: ct.singletons.signalBus || null,
66
+ knowledgeRepo: ct.get('knowledgeRepository'),
67
+ sourceRefRepo: ct.get('recipeSourceRefRepository'),
66
68
  });
67
69
  }, { aiDependent: true });
68
70
  c.singleton('vectorStore', (ct) => {
@@ -135,39 +137,47 @@ export function register(c) {
135
137
  c.register('projectGraph', () => c.singletons.projectGraph || null);
136
138
  // ═══ Governance / Evolution ═══
137
139
  c.singleton('sourceRefReconciler', (ct) => {
138
- const db = ct.get('database');
139
140
  const projectRoot = resolveProjectRoot();
140
- return new SourceRefReconciler(projectRoot, db.getDb(), {
141
+ const sourceRefRepo = ct.get('recipeSourceRefRepository');
142
+ const knowledgeRepo = ct.get('knowledgeRepository');
143
+ return new SourceRefReconciler(projectRoot, sourceRefRepo, knowledgeRepo, {
141
144
  signalBus: ct.singletons.signalBus || undefined,
142
145
  });
143
146
  });
144
147
  c.singleton('stagingManager', (ct) => {
145
- const db = ct.get('database');
146
- return new StagingManager(db.getDb(), {
148
+ const knowledgeRepo = ct.get('knowledgeRepository');
149
+ return new StagingManager(knowledgeRepo, {
147
150
  signalBus: ct.singletons.signalBus || undefined,
148
151
  });
149
152
  });
150
153
  c.singleton('decayDetector', (ct) => {
151
- const db = ct.get('database');
152
- return new DecayDetector(db.getDb(), {
154
+ const knowledgeRepo = ct.get('knowledgeRepository');
155
+ return new DecayDetector(knowledgeRepo, {
153
156
  signalBus: ct.singletons.signalBus || undefined,
157
+ knowledgeEdgeRepo: ct.services.knowledgeEdgeRepository
158
+ ? ct.get('knowledgeEdgeRepository')
159
+ : undefined,
160
+ sourceRefRepo: ct.services.recipeSourceRefRepository
161
+ ? ct.get('recipeSourceRefRepository')
162
+ : undefined,
163
+ drizzle: ct.get('database').getDrizzle(),
154
164
  });
155
165
  });
156
166
  c.singleton('contradictionDetector', (ct) => {
157
- const db = ct.get('database');
158
- return new ContradictionDetector(db.getDb(), {
167
+ const knowledgeRepo = ct.get('knowledgeRepository');
168
+ return new ContradictionDetector(knowledgeRepo, {
159
169
  signalBus: ct.singletons.signalBus || undefined,
160
170
  });
161
171
  });
162
172
  c.singleton('redundancyAnalyzer', (ct) => {
163
- const db = ct.get('database');
164
- return new RedundancyAnalyzer(db.getDb(), {
173
+ const knowledgeRepo = ct.get('knowledgeRepository');
174
+ return new RedundancyAnalyzer(knowledgeRepo, {
165
175
  signalBus: ct.singletons.signalBus || undefined,
166
176
  });
167
177
  });
168
178
  c.singleton('enhancementSuggester', (ct) => {
169
- const db = ct.get('database');
170
- return new EnhancementSuggester(db.getDb(), {
179
+ const knowledgeRepo = ct.get('knowledgeRepository');
180
+ return new EnhancementSuggester(knowledgeRepo, {
171
181
  signalBus: ct.singletons.signalBus || undefined,
172
182
  });
173
183
  });
@@ -184,29 +194,45 @@ export function register(c) {
184
194
  });
185
195
  c.singleton('proposalRepository', (ct) => {
186
196
  const db = ct.get('database');
187
- return new ProposalRepository(db.getDb());
197
+ const drizzle = db.getDrizzle();
198
+ return new ProposalRepository(drizzle);
188
199
  });
189
200
  c.singleton('contentPatcher', (ct) => {
201
+ const knowledgeRepo = ct.get('knowledgeRepository');
202
+ const sourceRefRepo = ct.get('recipeSourceRefRepository');
203
+ return new ContentPatcher(knowledgeRepo, sourceRefRepo);
204
+ });
205
+ c.singleton('lifecycleEventRepository', (ct) => {
190
206
  const db = ct.get('database');
191
- return new ContentPatcher(db.getDb());
207
+ const drizzle = db.getDrizzle();
208
+ return new LifecycleEventRepository(drizzle);
192
209
  });
193
210
  c.singleton('lifecycleSupervisor', (ct) => {
194
- const db = ct.get('database');
195
- return new RecipeLifecycleSupervisor(db.getDb(), {
211
+ const knowledgeRepo = ct.get('knowledgeRepository');
212
+ return new RecipeLifecycleSupervisor(knowledgeRepo, {
196
213
  signalBus: ct.singletons.signalBus || undefined,
214
+ lifecycleEventRepo: ct.services.lifecycleEventRepository
215
+ ? ct.get('lifecycleEventRepository')
216
+ : undefined,
217
+ proposalRepo: ct.services.proposalRepository
218
+ ? ct.get('proposalRepository')
219
+ : undefined,
197
220
  });
198
221
  });
199
222
  c.singleton('proposalExecutor', (ct) => {
200
- const db = ct.get('database');
201
- return new ProposalExecutor(db.getDb(), ct.get('proposalRepository'), {
223
+ const knowledgeRepo = ct.get('knowledgeRepository');
224
+ return new ProposalExecutor(knowledgeRepo, ct.get('proposalRepository'), {
202
225
  signalBus: ct.singletons.signalBus || undefined,
203
226
  contentPatcher: ct.get('contentPatcher'),
204
227
  supervisor: ct.get('lifecycleSupervisor'),
228
+ knowledgeEdgeRepo: ct.services.knowledgeEdgeRepository
229
+ ? ct.get('knowledgeEdgeRepository')
230
+ : undefined,
205
231
  });
206
232
  });
207
233
  c.singleton('consolidationAdvisor', (ct) => {
208
- const db = ct.get('database');
209
- return new ConsolidationAdvisor(db.getDb());
234
+ const knowledgeRepo = ct.get('knowledgeRepository');
235
+ return new ConsolidationAdvisor(knowledgeRepo);
210
236
  });
211
237
  }
212
238
  /**
@@ -235,7 +261,7 @@ export function initializeKnowledgeServices(c) {
235
261
  try {
236
262
  const d = data;
237
263
  if (d.action === 'create' && d.entryId) {
238
- _populateSourceRefsForEntry(c, d.entryId);
264
+ void _populateSourceRefsForEntry(c, d.entryId);
239
265
  }
240
266
  }
241
267
  catch {
@@ -256,36 +282,45 @@ function await_import_EventBus() {
256
282
  }
257
283
  /**
258
284
  * 从 knowledge_entries.reasoning 中提取 sources 并填充 recipe_source_refs 桥接表
285
+ * 使用 KnowledgeRepository + RecipeSourceRefRepository 类型安全 API
259
286
  */
260
- function _populateSourceRefsForEntry(c, entryId) {
261
- const db = c.get('database');
262
- const rawDb = db.getDb();
263
- const row = rawDb.prepare(`SELECT reasoning FROM knowledge_entries WHERE id = ?`).get(entryId);
264
- if (!row?.reasoning) {
265
- return;
266
- }
267
- let sources = [];
287
+ async function _populateSourceRefsForEntry(c, entryId) {
268
288
  try {
269
- const reasoning = JSON.parse(row.reasoning);
270
- sources = Array.isArray(reasoning.sources)
271
- ? reasoning.sources.filter((s) => typeof s === 'string' && s.length > 0)
272
- : [];
273
- }
274
- catch {
275
- return;
276
- }
277
- if (sources.length === 0) {
278
- return;
279
- }
280
- const now = Date.now();
281
- const upsert = rawDb.prepare(`INSERT OR REPLACE INTO recipe_source_refs (recipe_id, source_path, status, verified_at)
282
- VALUES (?, ?, 'active', ?)`);
283
- for (const sourcePath of sources) {
289
+ const knowledgeRepo = c.get('knowledgeRepository');
290
+ const sourceRefRepo = c.get('recipeSourceRefRepository');
291
+ const row = await knowledgeRepo.findSourceFileAndReasoning(entryId);
292
+ if (!row?.reasoning) {
293
+ return;
294
+ }
295
+ let sources = [];
284
296
  try {
285
- upsert.run(entryId, sourcePath, now);
297
+ const reasoning = JSON.parse(row.reasoning);
298
+ sources = Array.isArray(reasoning.sources)
299
+ ? reasoning.sources.filter((s) => typeof s === 'string' && s.length > 0)
300
+ : [];
286
301
  }
287
302
  catch {
288
- /* table may not exist yet */
303
+ return;
304
+ }
305
+ if (sources.length === 0) {
306
+ return;
289
307
  }
308
+ const now = Date.now();
309
+ for (const sourcePath of sources) {
310
+ try {
311
+ sourceRefRepo.upsert({
312
+ recipeId: entryId,
313
+ sourcePath,
314
+ status: 'active',
315
+ verifiedAt: now,
316
+ });
317
+ }
318
+ catch {
319
+ /* table may not exist yet */
320
+ }
321
+ }
322
+ }
323
+ catch {
324
+ /* repos may not be registered yet */
290
325
  }
291
326
  }
@@ -23,16 +23,16 @@ import { RoleRefiner } from '../../service/panorama/RoleRefiner.js';
23
23
  export const PanoramaModule = {
24
24
  register(container) {
25
25
  const ct = container;
26
- const getDb = () => {
27
- const db = ct.singletons.database;
28
- return (db?.getDb ? db.getDb() : db);
29
- };
30
26
  const getProjectRoot = () => ct.config?.projectRoot ?? process.cwd();
31
- ct.singleton('moduleDiscoverer', () => new ModuleDiscoverer(getDb(), getProjectRoot()));
32
- ct.singleton('roleRefiner', () => new RoleRefiner(getDb(), getProjectRoot()));
33
- ct.singleton('couplingAnalyzer', () => new CouplingAnalyzer(getDb(), getProjectRoot()));
27
+ const getBootstrapRepo = () => container.get('bootstrapRepository');
28
+ const getEntityRepo = () => container.get('codeEntityRepository');
29
+ const getEdgeRepo = () => container.get('knowledgeEdgeRepository');
30
+ const getKnowledgeRepo = () => container.get('knowledgeRepository');
31
+ ct.singleton('moduleDiscoverer', () => new ModuleDiscoverer(getEntityRepo(), getEdgeRepo(), getProjectRoot()));
32
+ ct.singleton('roleRefiner', () => new RoleRefiner(getBootstrapRepo(), getEntityRepo(), getEdgeRepo(), getProjectRoot()));
33
+ ct.singleton('couplingAnalyzer', () => new CouplingAnalyzer(getEdgeRepo(), getEntityRepo(), getProjectRoot()));
34
34
  ct.singleton('layerInferrer', () => new LayerInferrer());
35
- ct.singleton('dimensionAnalyzer', () => new DimensionAnalyzer(getDb()));
35
+ ct.singleton('dimensionAnalyzer', () => new DimensionAnalyzer(getBootstrapRepo(), getEntityRepo(), getKnowledgeRepo(), getProjectRoot()));
36
36
  ct.singleton('panoramaAggregator', (c) => {
37
37
  const sc = c;
38
38
  const roleRefiner = sc.get('roleRefiner');
@@ -43,7 +43,10 @@ export const PanoramaModule = {
43
43
  roleRefiner,
44
44
  couplingAnalyzer,
45
45
  layerInferrer,
46
- db: getDb(),
46
+ bootstrapRepo: getBootstrapRepo(),
47
+ entityRepo: getEntityRepo(),
48
+ edgeRepo: getEdgeRepo(),
49
+ knowledgeRepo: getKnowledgeRepo(),
47
50
  projectRoot: getProjectRoot(),
48
51
  dimensionAnalyzer,
49
52
  });
@@ -56,6 +59,8 @@ export const PanoramaModule = {
56
59
  return new PanoramaScanner({
57
60
  projectRoot: getProjectRoot(),
58
61
  container: container,
62
+ entityRepo: getEntityRepo(),
63
+ edgeRepo: getEdgeRepo(),
59
64
  logger,
60
65
  });
61
66
  });
@@ -66,7 +71,8 @@ export const PanoramaModule = {
66
71
  const moduleDiscoverer = sc.get('moduleDiscoverer');
67
72
  return new PanoramaService({
68
73
  aggregator,
69
- db: getDb(),
74
+ edgeRepo: getEdgeRepo(),
75
+ knowledgeRepo: getKnowledgeRepo(),
70
76
  projectRoot: getProjectRoot(),
71
77
  scanner,
72
78
  moduleDiscoverer,
@@ -39,6 +39,9 @@ export function register(c) {
39
39
  : null,
40
40
  autoSyncOnCrud: config.autoSyncOnCrud !== false,
41
41
  syncDebounceMs: config.syncDebounceMs || 2000,
42
+ drizzle: ct.services.database
43
+ ? ct.get('database').getDrizzle?.()
44
+ : undefined,
42
45
  });
43
46
  }, { aiDependent: true });
44
47
  }
@@ -0,0 +1,107 @@
1
+ /**
2
+ * AuditRepository — 审计日志的仓储实现
3
+ *
4
+ * 从 AuditStore 提取的数据操作,
5
+ * 使用 Drizzle 类型安全 API 操作 audit_logs 表。
6
+ */
7
+ import { auditLogs } from '../../infrastructure/database/drizzle/schema.js';
8
+ import { RepositoryBase } from '../base/RepositoryBase.js';
9
+ export interface AuditLogEntity {
10
+ id: string;
11
+ timestamp: number;
12
+ actor: string;
13
+ actorContext: Record<string, unknown>;
14
+ action: string;
15
+ resource: string | null;
16
+ operationData: Record<string, unknown>;
17
+ result: string;
18
+ errorMessage: string | null;
19
+ duration: number | null;
20
+ }
21
+ export interface AuditLogInsert {
22
+ id: string;
23
+ timestamp: number;
24
+ actor: string;
25
+ actorContext?: string;
26
+ action: string;
27
+ resource?: string;
28
+ operationData?: string;
29
+ result: string;
30
+ errorMessage?: string | null;
31
+ duration?: number | null;
32
+ }
33
+ export interface AuditQueryFilters {
34
+ actor?: string;
35
+ action?: string;
36
+ result?: string;
37
+ startDate?: number;
38
+ endDate?: number;
39
+ limit?: number;
40
+ }
41
+ export interface AuditStats {
42
+ timeRange: string;
43
+ total: number;
44
+ success: number;
45
+ failure: number;
46
+ successRate: string;
47
+ avgDuration: string;
48
+ byActor: Array<{
49
+ actor: string;
50
+ count: number;
51
+ }>;
52
+ byAction: Array<{
53
+ action: string;
54
+ count: number;
55
+ }>;
56
+ }
57
+ export declare class AuditRepositoryImpl extends RepositoryBase<typeof auditLogs, AuditLogEntity> {
58
+ #private;
59
+ constructor(drizzle: ConstructorParameters<typeof RepositoryBase<typeof auditLogs, AuditLogEntity>>[0]);
60
+ findById(id: string): Promise<AuditLogEntity | null>;
61
+ create(data: AuditLogInsert): Promise<AuditLogEntity>;
62
+ delete(id: string): Promise<boolean>;
63
+ /** 动态多条件查询 */
64
+ query(filters?: AuditQueryFilters): Promise<AuditLogEntity[]>;
65
+ /** 根据请求 ID 查询 */
66
+ findByRequestId(requestId: string): Promise<AuditLogEntity | null>;
67
+ /** 根据角色查询 */
68
+ findByActor(actor: string, limit?: number): Promise<AuditLogEntity[]>;
69
+ /** 根据操作查询 */
70
+ findByAction(action: string, limit?: number): Promise<AuditLogEntity[]>;
71
+ /** 根据结果查询 */
72
+ findByResult(result: string, limit?: number): Promise<AuditLogEntity[]>;
73
+ /** 获取统计数据 */
74
+ getStats(timeRange?: string): Promise<AuditStats>;
75
+ /**
76
+ * 清理过期审计日志
77
+ * @param maxAgeDays 保留天数
78
+ */
79
+ cleanup(maxAgeDays?: number): Promise<{
80
+ deleted: number;
81
+ }>;
82
+ /**
83
+ * Guard 违规规则名 TOP-N (SkillAdvisor.#getGuardPatterns)
84
+ */
85
+ findTopGuardViolationRules(minCount: number, limit: number): Promise<Array<{
86
+ ruleName: string;
87
+ cnt: number;
88
+ }>>;
89
+ /**
90
+ * Guard 违规信号 (SignalCollector.#collectGuardSignals)
91
+ */
92
+ findGuardViolationSignals(limit: number): Promise<Array<{
93
+ ruleName: string;
94
+ cnt: number;
95
+ lastAt: number;
96
+ }>>;
97
+ /**
98
+ * 最近动作日志 (SignalCollector.#collectActionSignals)
99
+ */
100
+ findRecentActions(sinceTs: number, limit: number): Promise<Array<{
101
+ actor: string;
102
+ action: string;
103
+ resource: string | null;
104
+ result: string;
105
+ timestamp: number;
106
+ }>>;
107
+ }