autosnippet 3.2.22 → 3.3.2

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 (309) hide show
  1. package/dashboard/dist/assets/icons-BJ2mUBi8.js +1 -0
  2. package/dashboard/dist/assets/index-B659K9t5.js +128 -0
  3. package/dashboard/dist/assets/index-NCm40PMD.css +1 -0
  4. package/dashboard/dist/index.html +3 -3
  5. package/dist/bin/cli.d.ts +1 -1
  6. package/dist/bin/cli.js +244 -261
  7. package/dist/lib/agent/context/ExplorationTracker.d.ts +2 -0
  8. package/dist/lib/agent/context/ExplorationTracker.js +21 -3
  9. package/dist/lib/agent/core/ToolExecutionPipeline.d.ts +3 -1
  10. package/dist/lib/agent/core/ToolExecutionPipeline.js +8 -1
  11. package/dist/lib/agent/forge/DynamicComposer.d.ts +58 -0
  12. package/dist/lib/agent/forge/DynamicComposer.js +99 -0
  13. package/dist/lib/agent/forge/SandboxRunner.d.ts +60 -0
  14. package/dist/lib/agent/forge/SandboxRunner.js +251 -0
  15. package/dist/lib/agent/forge/TemporaryToolRegistry.d.ts +76 -0
  16. package/dist/lib/agent/forge/TemporaryToolRegistry.js +154 -0
  17. package/dist/lib/agent/forge/ToolForge.d.ts +92 -0
  18. package/dist/lib/agent/forge/ToolForge.js +239 -0
  19. package/dist/lib/agent/forge/ToolRequirementAnalyzer.d.ts +44 -0
  20. package/dist/lib/agent/forge/ToolRequirementAnalyzer.js +119 -0
  21. package/dist/lib/agent/tools/ToolRegistry.d.ts +2 -0
  22. package/dist/lib/agent/tools/ToolRegistry.js +4 -0
  23. package/dist/lib/agent/tools/composite.js +0 -1
  24. package/dist/lib/agent/tools/index.d.ts +2 -50
  25. package/dist/lib/agent/tools/index.js +2 -3
  26. package/dist/lib/agent/tools/lifecycle.d.ts +1 -58
  27. package/dist/lib/agent/tools/lifecycle.js +2 -75
  28. package/dist/lib/cli/SetupService.d.ts +46 -2
  29. package/dist/lib/cli/SetupService.js +2 -27
  30. package/dist/lib/cli/deploy/FileManifest.d.ts +0 -21
  31. package/dist/lib/cli/deploy/FileManifest.js +0 -11
  32. package/dist/lib/{platform/ios/spm → core/discovery}/SpmDiscoverer.d.ts +2 -5
  33. package/dist/lib/{platform/ios/spm → core/discovery}/SpmDiscoverer.js +159 -44
  34. package/dist/lib/core/discovery/index.d.ts +1 -1
  35. package/dist/lib/core/discovery/index.js +2 -2
  36. package/dist/lib/domain/knowledge/KnowledgeEntry.d.ts +10 -0
  37. package/dist/lib/domain/knowledge/KnowledgeEntry.js +2 -0
  38. package/dist/lib/domain/knowledge/Lifecycle.d.ts +19 -2
  39. package/dist/lib/domain/knowledge/Lifecycle.js +32 -6
  40. package/dist/lib/domain/knowledge/UnifiedValidator.d.ts +1 -5
  41. package/dist/lib/domain/knowledge/UnifiedValidator.js +7 -44
  42. package/dist/lib/domain/knowledge/values/Stats.d.ts +29 -0
  43. package/dist/lib/domain/knowledge/values/Stats.js +41 -0
  44. package/dist/lib/external/mcp/McpServer.d.ts +19 -38
  45. package/dist/lib/external/mcp/McpServer.js +145 -117
  46. package/dist/lib/external/mcp/autoApproveInjector.js +0 -2
  47. package/dist/lib/external/mcp/handlers/bootstrap/MissionBriefingBuilder.d.ts +26 -1
  48. package/dist/lib/external/mcp/handlers/bootstrap/MissionBriefingBuilder.js +41 -0
  49. package/dist/lib/external/mcp/handlers/bootstrap/pipeline/orchestrator.js +49 -0
  50. package/dist/lib/external/mcp/handlers/bootstrap/shared/bootstrap-phases.d.ts +3 -0
  51. package/dist/lib/external/mcp/handlers/bootstrap/shared/bootstrap-phases.js +27 -0
  52. package/dist/lib/external/mcp/handlers/bootstrap/skills.js +1 -1
  53. package/dist/lib/external/mcp/handlers/bootstrap-external.js +1 -0
  54. package/dist/lib/external/mcp/handlers/bootstrap-internal.js +2 -0
  55. package/dist/lib/external/mcp/handlers/consolidated.d.ts +116 -6
  56. package/dist/lib/external/mcp/handlers/consolidated.js +251 -71
  57. package/dist/lib/external/mcp/handlers/guard.d.ts +150 -0
  58. package/dist/lib/external/mcp/handlers/guard.js +245 -8
  59. package/dist/lib/external/mcp/handlers/knowledge.d.ts +0 -29
  60. package/dist/lib/external/mcp/handlers/knowledge.js +1 -76
  61. package/dist/lib/external/mcp/handlers/panorama.d.ts +36 -0
  62. package/dist/lib/external/mcp/handlers/panorama.js +156 -0
  63. package/dist/lib/external/mcp/handlers/system.d.ts +2 -54
  64. package/dist/lib/external/mcp/handlers/system.js +3 -113
  65. package/dist/lib/external/mcp/handlers/task.d.ts +13 -24
  66. package/dist/lib/external/mcp/handlers/task.js +217 -557
  67. package/dist/lib/external/mcp/handlers/types.d.ts +91 -8
  68. package/dist/lib/external/mcp/handlers/types.js +18 -1
  69. package/dist/lib/external/mcp/handlers/wiki-external.d.ts +18 -1
  70. package/dist/lib/external/mcp/handlers/wiki-external.js +16 -1
  71. package/dist/lib/external/mcp/tools.d.ts +14 -20
  72. package/dist/lib/external/mcp/tools.js +62 -91
  73. package/dist/lib/http/HttpServer.js +52 -6
  74. package/dist/lib/http/routes/{snippets.d.ts → audit.d.ts} +4 -2
  75. package/dist/lib/http/routes/audit.js +51 -0
  76. package/dist/lib/http/routes/commands.d.ts +1 -1
  77. package/dist/lib/http/routes/commands.js +1 -66
  78. package/dist/lib/http/routes/guardReport.d.ts +10 -0
  79. package/dist/lib/http/routes/guardReport.js +143 -0
  80. package/dist/lib/http/routes/knowledge.js +32 -1
  81. package/dist/lib/http/routes/panorama.d.ts +11 -0
  82. package/dist/lib/http/routes/panorama.js +322 -0
  83. package/dist/lib/http/routes/remote.js +0 -5
  84. package/dist/lib/http/routes/signals.d.ts +10 -0
  85. package/dist/lib/http/routes/signals.js +104 -0
  86. package/dist/lib/http/routes/task.d.ts +2 -3
  87. package/dist/lib/http/routes/task.js +17 -347
  88. package/dist/lib/http/routes/violations.js +1 -1
  89. package/dist/lib/infrastructure/audit/AuditLogger.d.ts +6 -1
  90. package/dist/lib/infrastructure/audit/AuditLogger.js +14 -1
  91. package/dist/lib/infrastructure/database/drizzle/schema.d.ts +181 -583
  92. package/dist/lib/infrastructure/database/drizzle/schema.js +28 -69
  93. package/dist/lib/infrastructure/database/migrations/004_evolution_proposals.d.ts +8 -0
  94. package/dist/lib/infrastructure/database/migrations/004_evolution_proposals.js +43 -0
  95. package/dist/lib/infrastructure/logging/Logger.d.ts +2 -0
  96. package/dist/lib/infrastructure/logging/Logger.js +34 -7
  97. package/dist/lib/infrastructure/monitoring/ErrorTracker.js +3 -1
  98. package/dist/lib/infrastructure/monitoring/PerformanceMonitor.d.ts +2 -2
  99. package/dist/lib/infrastructure/monitoring/PerformanceMonitor.js +12 -10
  100. package/dist/lib/infrastructure/notification/LarkNotifier.d.ts +24 -0
  101. package/dist/lib/infrastructure/notification/LarkNotifier.js +97 -0
  102. package/dist/lib/infrastructure/report/ReportStore.d.ts +45 -0
  103. package/dist/lib/infrastructure/report/ReportStore.js +133 -0
  104. package/dist/lib/infrastructure/signal/SignalAggregator.d.ts +18 -0
  105. package/dist/lib/infrastructure/signal/SignalAggregator.js +84 -0
  106. package/dist/lib/infrastructure/signal/SignalBridge.d.ts +13 -0
  107. package/dist/lib/infrastructure/signal/SignalBridge.js +20 -0
  108. package/dist/lib/infrastructure/signal/SignalBus.d.ts +63 -0
  109. package/dist/lib/infrastructure/signal/SignalBus.js +106 -0
  110. package/dist/lib/infrastructure/signal/SignalTraceWriter.d.ts +36 -0
  111. package/dist/lib/infrastructure/signal/SignalTraceWriter.js +130 -0
  112. package/dist/lib/injection/ServiceContainer.js +6 -0
  113. package/dist/lib/injection/ServiceMap.d.ts +16 -19
  114. package/dist/lib/injection/modules/AgentModule.d.ts +1 -1
  115. package/dist/lib/injection/modules/AgentModule.js +7 -1
  116. package/dist/lib/injection/modules/AppModule.d.ts +3 -4
  117. package/dist/lib/injection/modules/AppModule.js +7 -43
  118. package/dist/lib/injection/modules/GuardModule.js +27 -2
  119. package/dist/lib/injection/modules/InfraModule.d.ts +0 -1
  120. package/dist/lib/injection/modules/InfraModule.js +9 -7
  121. package/dist/lib/injection/modules/KnowledgeModule.js +51 -0
  122. package/dist/lib/injection/modules/PanoramaModule.d.ts +18 -0
  123. package/dist/lib/injection/modules/PanoramaModule.js +76 -0
  124. package/dist/lib/injection/modules/SignalModule.d.ts +10 -0
  125. package/dist/lib/injection/modules/SignalModule.js +84 -0
  126. package/dist/lib/repository/knowledge/KnowledgeRepository.impl.d.ts +1 -0
  127. package/dist/lib/repository/knowledge/KnowledgeRepository.impl.js +6 -0
  128. package/dist/lib/service/bootstrap/BootstrapTaskManager.d.ts +3 -1
  129. package/dist/lib/service/bootstrap/BootstrapTaskManager.js +20 -1
  130. package/dist/lib/service/delivery/AgentInstructionsGenerator.js +4 -5
  131. package/dist/lib/service/delivery/CursorDeliveryPipeline.d.ts +3 -1
  132. package/dist/lib/service/delivery/CursorDeliveryPipeline.js +13 -10
  133. package/dist/lib/service/delivery/RulesGenerator.js +3 -2
  134. package/dist/lib/service/evolution/ConsolidationAdvisor.d.ts +114 -0
  135. package/dist/lib/service/evolution/ConsolidationAdvisor.js +542 -0
  136. package/dist/lib/service/evolution/ContradictionDetector.d.ts +54 -0
  137. package/dist/lib/service/evolution/ContradictionDetector.js +253 -0
  138. package/dist/lib/service/evolution/DecayDetector.d.ts +71 -0
  139. package/dist/lib/service/evolution/DecayDetector.js +244 -0
  140. package/dist/lib/service/evolution/EnhancementSuggester.d.ts +38 -0
  141. package/dist/lib/service/evolution/EnhancementSuggester.js +220 -0
  142. package/dist/lib/service/evolution/KnowledgeMetabolism.d.ts +82 -0
  143. package/dist/lib/service/evolution/KnowledgeMetabolism.js +167 -0
  144. package/dist/lib/service/evolution/RedundancyAnalyzer.d.ts +53 -0
  145. package/dist/lib/service/evolution/RedundancyAnalyzer.js +210 -0
  146. package/dist/lib/service/evolution/StagingManager.d.ts +57 -0
  147. package/dist/lib/service/evolution/StagingManager.js +201 -0
  148. package/dist/lib/service/guard/ComplianceReporter.d.ts +42 -2
  149. package/dist/lib/service/guard/ComplianceReporter.js +43 -5
  150. package/dist/lib/service/guard/CoverageAnalyzer.d.ts +54 -0
  151. package/dist/lib/service/guard/CoverageAnalyzer.js +149 -0
  152. package/dist/lib/service/guard/GuardCheckEngine.d.ts +42 -0
  153. package/dist/lib/service/guard/GuardCheckEngine.js +465 -14
  154. package/dist/lib/service/guard/GuardFeedbackLoop.d.ts +3 -0
  155. package/dist/lib/service/guard/GuardFeedbackLoop.js +9 -0
  156. package/dist/lib/service/guard/ReverseGuard.d.ts +73 -0
  157. package/dist/lib/service/guard/ReverseGuard.js +256 -0
  158. package/dist/lib/service/guard/RuleLearner.d.ts +12 -0
  159. package/dist/lib/service/guard/RuleLearner.js +38 -0
  160. package/dist/lib/service/guard/UncertaintyCollector.d.ts +83 -0
  161. package/dist/lib/service/guard/UncertaintyCollector.js +149 -0
  162. package/dist/lib/service/guard/ViolationsStore.d.ts +1 -0
  163. package/dist/lib/service/guard/ViolationsStore.js +33 -3
  164. package/dist/lib/service/knowledge/ConfidenceRouter.d.ts +13 -0
  165. package/dist/lib/service/knowledge/ConfidenceRouter.js +14 -0
  166. package/dist/lib/service/knowledge/KnowledgeService.js +22 -4
  167. package/dist/lib/service/module/ModuleService.js +3 -13
  168. package/dist/lib/service/panorama/CouplingAnalyzer.d.ts +27 -0
  169. package/dist/lib/service/panorama/CouplingAnalyzer.js +192 -0
  170. package/dist/lib/service/panorama/DimensionAnalyzer.d.ts +28 -0
  171. package/dist/lib/service/panorama/DimensionAnalyzer.js +320 -0
  172. package/dist/lib/service/panorama/LayerInferrer.d.ts +19 -0
  173. package/dist/lib/service/panorama/LayerInferrer.js +182 -0
  174. package/dist/lib/service/panorama/ModuleDiscoverer.d.ts +24 -0
  175. package/dist/lib/service/panorama/ModuleDiscoverer.js +185 -0
  176. package/dist/lib/service/panorama/PanoramaAggregator.d.ts +29 -0
  177. package/dist/lib/service/panorama/PanoramaAggregator.js +228 -0
  178. package/dist/lib/service/panorama/PanoramaScanner.d.ts +52 -0
  179. package/dist/lib/service/panorama/PanoramaScanner.js +188 -0
  180. package/dist/lib/service/panorama/PanoramaService.d.ts +108 -0
  181. package/dist/lib/service/panorama/PanoramaService.js +220 -0
  182. package/dist/lib/service/panorama/PanoramaTypes.d.ts +134 -0
  183. package/dist/lib/service/panorama/PanoramaTypes.js +6 -0
  184. package/dist/lib/service/panorama/RoleRefiner.d.ts +48 -0
  185. package/dist/lib/service/panorama/RoleRefiner.js +535 -0
  186. package/dist/lib/service/search/MultiSignalRanker.d.ts +1 -0
  187. package/dist/lib/service/search/MultiSignalRanker.js +16 -0
  188. package/dist/lib/service/search/SearchEngine.d.ts +1 -0
  189. package/dist/lib/service/search/SearchEngine.js +9 -1
  190. package/dist/lib/service/search/SearchTypes.d.ts +2 -0
  191. package/dist/lib/service/signal/HitRecorder.d.ts +68 -0
  192. package/dist/lib/service/signal/HitRecorder.js +173 -0
  193. package/dist/lib/service/skills/SignalCollector.d.ts +3 -1
  194. package/dist/lib/service/skills/SignalCollector.js +31 -1
  195. package/dist/lib/service/task/IntentExtractor.d.ts +58 -0
  196. package/dist/lib/service/task/IntentExtractor.js +142 -0
  197. package/dist/lib/service/task/PrimeSearchPipeline.d.ts +54 -0
  198. package/dist/lib/service/task/PrimeSearchPipeline.js +98 -0
  199. package/dist/lib/shared/constants.d.ts +0 -15
  200. package/dist/lib/shared/constants.js +0 -10
  201. package/dist/lib/shared/schemas/mcp-tools.d.ts +41 -96
  202. package/dist/lib/shared/schemas/mcp-tools.js +59 -119
  203. package/dist/scripts/analyze-signals.d.ts +20 -0
  204. package/dist/scripts/analyze-signals.js +155 -0
  205. package/dist/scripts/diagnose-mcp.js +1 -1
  206. package/dist/scripts/release.js +2 -10
  207. package/package.json +4 -19
  208. package/skills/autosnippet-devdocs/SKILL.md +11 -8
  209. package/templates/claude-code/hooks/autosnippet-session.sh +10 -15
  210. package/templates/cursor-hooks/hooks/session-start.sh +1 -1
  211. package/templates/instructions/agent-static.md +2 -1
  212. package/templates/instructions/conventions.md +5 -6
  213. package/templates/recipes-setup/README.md +1 -2
  214. package/dashboard/dist/assets/icons-C1dUryS-.js +0 -1
  215. package/dashboard/dist/assets/index-D0whuycy.css +0 -1
  216. package/dashboard/dist/assets/index-DdvZE4Yd.js +0 -128
  217. package/dist/lib/domain/task/Task.d.ts +0 -140
  218. package/dist/lib/domain/task/Task.js +0 -254
  219. package/dist/lib/domain/task/TaskDependency.d.ts +0 -23
  220. package/dist/lib/domain/task/TaskDependency.js +0 -34
  221. package/dist/lib/domain/task/TaskIdGenerator.d.ts +0 -40
  222. package/dist/lib/domain/task/TaskIdGenerator.js +0 -75
  223. package/dist/lib/domain/task/index.d.ts +0 -4
  224. package/dist/lib/domain/task/index.js +0 -4
  225. package/dist/lib/http/routes/snippets.js +0 -49
  226. package/dist/lib/infrastructure/database/migrations/002_add_tasks.d.ts +0 -11
  227. package/dist/lib/infrastructure/database/migrations/002_add_tasks.js +0 -86
  228. package/dist/lib/platform/ClipboardManager.d.ts +0 -24
  229. package/dist/lib/platform/ClipboardManager.js +0 -142
  230. package/dist/lib/platform/NativeUi.d.ts +0 -53
  231. package/dist/lib/platform/NativeUi.js +0 -284
  232. package/dist/lib/platform/ios/index.d.ts +0 -38
  233. package/dist/lib/platform/ios/index.js +0 -42
  234. package/dist/lib/platform/ios/routes/spm.d.ts +0 -9
  235. package/dist/lib/platform/ios/routes/spm.js +0 -371
  236. package/dist/lib/platform/ios/snippet/PlaceholderConverter.d.ts +0 -21
  237. package/dist/lib/platform/ios/snippet/PlaceholderConverter.js +0 -48
  238. package/dist/lib/platform/ios/snippet/XcodeCodec.d.ts +0 -23
  239. package/dist/lib/platform/ios/snippet/XcodeCodec.js +0 -96
  240. package/dist/lib/platform/ios/spm/DependencyGraph.d.ts +0 -56
  241. package/dist/lib/platform/ios/spm/DependencyGraph.js +0 -195
  242. package/dist/lib/platform/ios/spm/PackageSwiftParser.d.ts +0 -69
  243. package/dist/lib/platform/ios/spm/PackageSwiftParser.js +0 -231
  244. package/dist/lib/platform/ios/spm/PathFinder.d.ts +0 -28
  245. package/dist/lib/platform/ios/spm/PathFinder.js +0 -117
  246. package/dist/lib/platform/ios/spm/PolicyEngine.d.ts +0 -44
  247. package/dist/lib/platform/ios/spm/PolicyEngine.js +0 -79
  248. package/dist/lib/platform/ios/spm/SpmHelper.d.ts +0 -102
  249. package/dist/lib/platform/ios/spm/SpmHelper.js +0 -464
  250. package/dist/lib/platform/ios/xcode/HeaderResolver.d.ts +0 -33
  251. package/dist/lib/platform/ios/xcode/HeaderResolver.js +0 -90
  252. package/dist/lib/platform/ios/xcode/SaveEventFilter.d.ts +0 -66
  253. package/dist/lib/platform/ios/xcode/SaveEventFilter.js +0 -142
  254. package/dist/lib/platform/ios/xcode/XcodeAutomation.d.ts +0 -71
  255. package/dist/lib/platform/ios/xcode/XcodeAutomation.js +0 -327
  256. package/dist/lib/platform/ios/xcode/XcodeImportResolver.d.ts +0 -130
  257. package/dist/lib/platform/ios/xcode/XcodeImportResolver.js +0 -404
  258. package/dist/lib/platform/ios/xcode/XcodeIntegration.d.ts +0 -89
  259. package/dist/lib/platform/ios/xcode/XcodeIntegration.js +0 -588
  260. package/dist/lib/platform/ios/xcode/XcodeWriteUtils.d.ts +0 -99
  261. package/dist/lib/platform/ios/xcode/XcodeWriteUtils.js +0 -190
  262. package/dist/lib/repository/task/TaskRepository.impl.d.ts +0 -171
  263. package/dist/lib/repository/task/TaskRepository.impl.js +0 -347
  264. package/dist/lib/service/automation/ActionPipeline.d.ts +0 -34
  265. package/dist/lib/service/automation/ActionPipeline.js +0 -53
  266. package/dist/lib/service/automation/AutomationOrchestrator.d.ts +0 -86
  267. package/dist/lib/service/automation/AutomationOrchestrator.js +0 -57
  268. package/dist/lib/service/automation/ContextCollector.d.ts +0 -24
  269. package/dist/lib/service/automation/ContextCollector.js +0 -35
  270. package/dist/lib/service/automation/DirectiveDetector.d.ts +0 -51
  271. package/dist/lib/service/automation/DirectiveDetector.js +0 -112
  272. package/dist/lib/service/automation/FileWatcher.d.ts +0 -51
  273. package/dist/lib/service/automation/FileWatcher.js +0 -366
  274. package/dist/lib/service/automation/TriggerResolver.d.ts +0 -36
  275. package/dist/lib/service/automation/TriggerResolver.js +0 -62
  276. package/dist/lib/service/automation/handlers/AlinkHandler.d.ts +0 -7
  277. package/dist/lib/service/automation/handlers/AlinkHandler.js +0 -80
  278. package/dist/lib/service/automation/handlers/CreateHandler.d.ts +0 -11
  279. package/dist/lib/service/automation/handlers/CreateHandler.js +0 -170
  280. package/dist/lib/service/automation/handlers/GuardHandler.d.ts +0 -17
  281. package/dist/lib/service/automation/handlers/GuardHandler.js +0 -218
  282. package/dist/lib/service/automation/handlers/HeaderHandler.d.ts +0 -2
  283. package/dist/lib/service/automation/handlers/HeaderHandler.js +0 -32
  284. package/dist/lib/service/automation/handlers/SearchHandler.d.ts +0 -11
  285. package/dist/lib/service/automation/handlers/SearchHandler.js +0 -278
  286. package/dist/lib/service/snippet/SnippetFactory.d.ts +0 -101
  287. package/dist/lib/service/snippet/SnippetFactory.js +0 -145
  288. package/dist/lib/service/snippet/SnippetInstaller.d.ts +0 -91
  289. package/dist/lib/service/snippet/SnippetInstaller.js +0 -276
  290. package/dist/lib/service/snippet/codecs/SnippetCodec.d.ts +0 -44
  291. package/dist/lib/service/snippet/codecs/SnippetCodec.js +0 -35
  292. package/dist/lib/service/snippet/codecs/VSCodeCodec.d.ts +0 -27
  293. package/dist/lib/service/snippet/codecs/VSCodeCodec.js +0 -82
  294. package/dist/lib/service/task/TaskGraphService.d.ts +0 -222
  295. package/dist/lib/service/task/TaskGraphService.js +0 -597
  296. package/dist/lib/service/task/TaskKnowledgeBridge.d.ts +0 -95
  297. package/dist/lib/service/task/TaskKnowledgeBridge.js +0 -298
  298. package/dist/lib/service/task/TaskReadyEngine.d.ts +0 -84
  299. package/dist/lib/service/task/TaskReadyEngine.js +0 -115
  300. package/dist/scripts/build-native-ui.d.ts +0 -3
  301. package/dist/scripts/build-native-ui.js +0 -62
  302. package/dist/scripts/init-snippets.d.ts +0 -30
  303. package/dist/scripts/init-snippets.js +0 -298
  304. package/dist/scripts/install-full.d.ts +0 -7
  305. package/dist/scripts/install-full.js +0 -38
  306. package/resources/native-ui/README.md +0 -29
  307. package/resources/native-ui/combined-window.swift +0 -494
  308. package/resources/native-ui/main.swift +0 -598
  309. package/scripts/postinstall-safe.mjs +0 -89
@@ -2,18 +2,13 @@
2
2
  * AppModule — 应用层杂项服务注册
3
3
  *
4
4
  * 负责注册:
5
- * - recipeParser, recipeCandidateValidator, snippetFactory, snippetInstaller
5
+ * - recipeParser, recipeCandidateValidator
6
6
  * - qualityScorer, feedbackCollector, tokenUsageStore, recipeExtractor
7
- * - spmService, automationOrchestrator, moduleService
8
- * - cursorDeliveryPipeline
9
- * - taskIdGenerator, taskReadyEngine, taskKnowledgeBridge, taskGraphService
7
+ * - moduleService, cursorDeliveryPipeline
8
+ * - primeSearchPipeline (for prime multi-query search — no DB dependency)
10
9
  */
11
10
  import { resolveProjectRoot } from '#shared/resolveProjectRoot.js';
12
- import { TaskIdGenerator } from '../../domain/task/TaskIdGenerator.js';
13
- import { XcodeCodec } from '../../platform/ios/snippet/XcodeCodec.js';
14
- import { SpmHelper } from '../../platform/ios/spm/SpmHelper.js';
15
11
  import { TokenUsageStore } from '../../repository/token/TokenUsageStore.js';
16
- import { AutomationOrchestrator } from '../../service/automation/AutomationOrchestrator.js';
17
12
  import { CursorDeliveryPipeline } from '../../service/delivery/CursorDeliveryPipeline.js';
18
13
  import { RecipeExtractor } from '../../service/knowledge/RecipeExtractor.js';
19
14
  import { ModuleService } from '../../service/module/ModuleService.js';
@@ -21,12 +16,7 @@ import { FeedbackCollector } from '../../service/quality/FeedbackCollector.js';
21
16
  import { QualityScorer } from '../../service/quality/QualityScorer.js';
22
17
  import { RecipeCandidateValidator } from '../../service/recipe/RecipeCandidateValidator.js';
23
18
  import { RecipeParser } from '../../service/recipe/RecipeParser.js';
24
- import { VSCodeCodec } from '../../service/snippet/codecs/VSCodeCodec.js';
25
- import { SnippetFactory } from '../../service/snippet/SnippetFactory.js';
26
- import { SnippetInstaller } from '../../service/snippet/SnippetInstaller.js';
27
- import { TaskGraphService } from '../../service/task/TaskGraphService.js';
28
- import { TaskKnowledgeBridge } from '../../service/task/TaskKnowledgeBridge.js';
29
- import { TaskReadyEngine } from '../../service/task/TaskReadyEngine.js';
19
+ import { PrimeSearchPipeline } from '../../service/task/PrimeSearchPipeline.js';
30
20
  export function register(c) {
31
21
  // ═══ Quality + Recipe ═══
32
22
  c.singleton('qualityScorer', () => new QualityScorer());
@@ -41,27 +31,7 @@ export function register(c) {
41
31
  const db = ct.get('database');
42
32
  return new TokenUsageStore(db.getDb(), db.getDrizzle());
43
33
  });
44
- // ═══ Snippet ═══
45
- c.singleton('snippetFactory', (ct) => {
46
- const factory = new SnippetFactory(ct.get('knowledgeRepository'));
47
- factory.registerCodec(new XcodeCodec());
48
- factory.registerCodec(new VSCodeCodec());
49
- return factory;
50
- });
51
- c.singleton('snippetInstaller', (ct) => {
52
- const factory = ct.get('snippetFactory');
53
- return new SnippetInstaller({ codec: factory.getCodec('xcode'), snippetFactory: factory });
54
- });
55
- c.singleton('vscodeSnippetInstaller', (ct) => {
56
- const factory = ct.get('snippetFactory');
57
- return new SnippetInstaller({ codec: factory.getCodec('vscode'), snippetFactory: factory });
58
- });
59
- // ═══ Platform + Automation ═══
60
- c.singleton('spmService', (ct) => {
61
- const projectRoot = resolveProjectRoot(ct);
62
- return new SpmHelper(projectRoot);
63
- });
64
- c.singleton('automationOrchestrator', () => new AutomationOrchestrator());
34
+ // ═══ Module ═══
65
35
  c.singleton('moduleService', (ct) => {
66
36
  const projectRoot = resolveProjectRoot(ct);
67
37
  return new ModuleService(projectRoot, {
@@ -79,14 +49,8 @@ export function register(c) {
79
49
  database: ct.get('database'),
80
50
  logger: ct.logger,
81
51
  }));
82
- // ═══ TaskGraph ═══
83
- c.singleton('taskIdGenerator', (ct) => {
84
- const db = ct.get('database');
85
- return new TaskIdGenerator(db.getDb(), db.getDrizzle());
86
- });
87
- c.singleton('taskReadyEngine', (ct) => new TaskReadyEngine(ct.get('database').getDb()));
88
- c.singleton('taskKnowledgeBridge', (ct) => new TaskKnowledgeBridge(ct.get('searchEngine')));
89
- c.singleton('taskGraphService', (ct) => new TaskGraphService(ct.get('taskRepository'), ct.get('taskReadyEngine'), ct.get('taskKnowledgeBridge'), ct.get('auditLogger'), ct.get('taskIdGenerator')));
52
+ // ═══ PrimeSearchPipeline (for prime multi-query search) ═══
53
+ c.singleton('primeSearchPipeline', (ct) => new PrimeSearchPipeline(ct.get('searchEngine')));
90
54
  }
91
55
  /** 初始化 RecipeExtractor 实例 (在 initialize 期间调用) */
92
56
  export function initRecipeExtractor(c) {
@@ -10,10 +10,12 @@ import fs from 'node:fs';
10
10
  import path from 'node:path';
11
11
  import { resolveProjectRoot } from '#shared/resolveProjectRoot.js';
12
12
  import { ComplianceReporter } from '../../service/guard/ComplianceReporter.js';
13
+ import { CoverageAnalyzer } from '../../service/guard/CoverageAnalyzer.js';
13
14
  import { ExclusionManager } from '../../service/guard/ExclusionManager.js';
14
15
  import { GuardCheckEngine } from '../../service/guard/GuardCheckEngine.js';
15
16
  import { GuardFeedbackLoop } from '../../service/guard/GuardFeedbackLoop.js';
16
17
  import { GuardService } from '../../service/guard/GuardService.js';
18
+ import { ReverseGuard } from '../../service/guard/ReverseGuard.js';
17
19
  import { RuleLearner } from '../../service/guard/RuleLearner.js';
18
20
  import { ViolationsStore } from '../../service/guard/ViolationsStore.js';
19
21
  export function register(c) {
@@ -61,7 +63,10 @@ export function register(c) {
61
63
  const proj = Array.isArray(projectGuard.disabledRules) ? projectGuard.disabledRules : [];
62
64
  merged.disabledRules = [...new Set([...base, ...proj])];
63
65
  }
64
- return new GuardCheckEngine(ct.get('database'), { guardConfig: merged });
66
+ return new GuardCheckEngine(ct.get('database'), {
67
+ guardConfig: merged,
68
+ signalBus: ct.singletons.signalBus || undefined,
69
+ });
65
70
  });
66
71
  c.singleton('exclusionManager', (ct) => {
67
72
  const projectRoot = resolveProjectRoot(ct);
@@ -69,7 +74,9 @@ export function register(c) {
69
74
  });
70
75
  c.singleton('ruleLearner', (ct) => {
71
76
  const projectRoot = resolveProjectRoot(ct);
72
- return new RuleLearner(projectRoot);
77
+ return new RuleLearner(projectRoot, {
78
+ signalBus: ct.singletons.signalBus || undefined,
79
+ });
73
80
  });
74
81
  c.singleton('violationsStore', (ct) => {
75
82
  const db = ct.get('database');
@@ -81,5 +88,23 @@ export function register(c) {
81
88
  });
82
89
  c.singleton('guardFeedbackLoop', (ct) => new GuardFeedbackLoop(ct.get('violationsStore'), ct.get('feedbackCollector'), {
83
90
  guardCheckEngine: ct.get('guardCheckEngine'),
91
+ signalBus: ct.singletons.signalBus || undefined,
84
92
  }));
93
+ c.singleton('reverseGuard', (ct) => {
94
+ const db = ct.get('database');
95
+ return new ReverseGuard(db.getDb(), {
96
+ signalBus: ct.singletons.signalBus || undefined,
97
+ });
98
+ });
99
+ c.singleton('coverageAnalyzer', (ct) => {
100
+ const db = ct.get('database');
101
+ let ruleLearner;
102
+ try {
103
+ ruleLearner = { ruleLearner: ct.get('ruleLearner') };
104
+ }
105
+ catch {
106
+ /* ruleLearner not yet available */
107
+ }
108
+ return new CoverageAnalyzer(db.getDb(), ruleLearner);
109
+ });
85
110
  }
@@ -5,7 +5,6 @@
5
5
  * - database, logger, auditStore, auditLogger
6
6
  * - gateway, eventBus, bootstrapTaskManager
7
7
  * - knowledgeRepository, knowledgeFileWriter, knowledgeSyncService
8
- * - taskRepository
9
8
  */
10
9
  import type { ServiceContainer } from '../ServiceContainer.js';
11
10
  export declare function register(c: ServiceContainer): void;
@@ -5,8 +5,8 @@
5
5
  * - database, logger, auditStore, auditLogger
6
6
  * - gateway, eventBus, bootstrapTaskManager
7
7
  * - knowledgeRepository, knowledgeFileWriter, knowledgeSyncService
8
- * - taskRepository
9
8
  */
9
+ import path from 'node:path';
10
10
  import { resolveProjectRoot } from '#shared/resolveProjectRoot.js';
11
11
  import { KnowledgeSyncService } from '../../cli/KnowledgeSyncService.js';
12
12
  import Gateway from '../../core/gateway/Gateway.js';
@@ -15,8 +15,8 @@ import AuditStore from '../../infrastructure/audit/AuditStore.js';
15
15
  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
+ import { ReportStore } from '../../infrastructure/report/ReportStore.js';
18
19
  import { KnowledgeRepositoryImpl } from '../../repository/knowledge/KnowledgeRepository.impl.js';
19
- import { TaskRepositoryImpl } from '../../repository/task/TaskRepository.impl.js';
20
20
  import { BootstrapTaskManager } from '../../service/bootstrap/BootstrapTaskManager.js';
21
21
  import { KnowledgeFileWriter } from '../../service/knowledge/KnowledgeFileWriter.js';
22
22
  export function register(c) {
@@ -33,7 +33,9 @@ export function register(c) {
33
33
  const drizzle = db.getDrizzle();
34
34
  return new AuditStore(db, drizzle);
35
35
  });
36
- c.singleton('auditLogger', (ct) => new AuditLogger(ct.get('auditStore')));
36
+ c.singleton('auditLogger', (ct) => new AuditLogger(ct.get('auditStore'), ct.services.eventBus
37
+ ? ct.get('eventBus')
38
+ : null));
37
39
  c.singleton('gateway', () => new Gateway());
38
40
  c.singleton('eventBus', () => new EventBus({ maxListeners: 30 }));
39
41
  c.singleton('bootstrapTaskManager', (ct) => {
@@ -65,9 +67,9 @@ export function register(c) {
65
67
  const projectRoot = resolveProjectRoot(ct);
66
68
  return new KnowledgeSyncService(projectRoot);
67
69
  });
68
- c.singleton('taskRepository', (ct) => {
69
- const db = ct.get('database');
70
- const drizzle = db.getDrizzle();
71
- return new TaskRepositoryImpl(db, drizzle);
70
+ // ═══ ReportStore ═══
71
+ c.singleton('reportStore', (ct) => {
72
+ const projectRoot = resolveProjectRoot(ct);
73
+ return new ReportStore(path.join(projectRoot, '.autosnippet', 'logs', 'reports'));
72
74
  });
73
75
  }
@@ -14,6 +14,13 @@ import { HnswVectorAdapter } from '../../infrastructure/vector/HnswVectorAdapter
14
14
  import { IndexingPipeline } from '../../infrastructure/vector/IndexingPipeline.js';
15
15
  import { JsonVectorAdapter } from '../../infrastructure/vector/JsonVectorAdapter.js';
16
16
  import { DimensionCopy } from '../../service/bootstrap/DimensionCopyRegistry.js';
17
+ import { ConsolidationAdvisor } from '../../service/evolution/ConsolidationAdvisor.js';
18
+ import { ContradictionDetector } from '../../service/evolution/ContradictionDetector.js';
19
+ import { DecayDetector } from '../../service/evolution/DecayDetector.js';
20
+ import { EnhancementSuggester } from '../../service/evolution/EnhancementSuggester.js';
21
+ import { KnowledgeMetabolism } from '../../service/evolution/KnowledgeMetabolism.js';
22
+ import { RedundancyAnalyzer } from '../../service/evolution/RedundancyAnalyzer.js';
23
+ import { StagingManager } from '../../service/evolution/StagingManager.js';
17
24
  import { CodeEntityGraph } from '../../service/knowledge/CodeEntityGraph.js';
18
25
  import { ConfidenceRouter } from '../../service/knowledge/ConfidenceRouter.js';
19
26
  import { KnowledgeGraphService } from '../../service/knowledge/KnowledgeGraphService.js';
@@ -50,6 +57,7 @@ export function register(c) {
50
57
  // is sufficient for knowledge-base scale (hundreds~thousands of entries).
51
58
  // Re-enable when document scale grows to 10k+ or external noisy sources are integrated.
52
59
  crossEncoderReranker: null,
60
+ signalBus: ct.singletons.signalBus || null,
53
61
  });
54
62
  }, { aiDependent: true });
55
63
  c.singleton('vectorStore', (ct) => {
@@ -120,4 +128,47 @@ export function register(c) {
120
128
  c.register('constitution', () => c.singletons.constitution || null);
121
129
  c.register('aiProvider', () => c.singletons.aiProvider || null);
122
130
  c.register('projectGraph', () => c.singletons.projectGraph || null);
131
+ // ═══ Governance / Evolution ═══
132
+ c.singleton('stagingManager', (ct) => {
133
+ const db = ct.get('database');
134
+ return new StagingManager(db.getDb(), {
135
+ signalBus: ct.singletons.signalBus || undefined,
136
+ });
137
+ });
138
+ c.singleton('decayDetector', (ct) => {
139
+ const db = ct.get('database');
140
+ return new DecayDetector(db.getDb(), {
141
+ signalBus: ct.singletons.signalBus || undefined,
142
+ });
143
+ });
144
+ c.singleton('contradictionDetector', (ct) => {
145
+ const db = ct.get('database');
146
+ return new ContradictionDetector(db.getDb(), {
147
+ signalBus: ct.singletons.signalBus || undefined,
148
+ });
149
+ });
150
+ c.singleton('redundancyAnalyzer', (ct) => {
151
+ const db = ct.get('database');
152
+ return new RedundancyAnalyzer(db.getDb(), {
153
+ signalBus: ct.singletons.signalBus || undefined,
154
+ });
155
+ });
156
+ c.singleton('enhancementSuggester', (ct) => {
157
+ const db = ct.get('database');
158
+ return new EnhancementSuggester(db.getDb(), {
159
+ signalBus: ct.singletons.signalBus || undefined,
160
+ });
161
+ });
162
+ c.singleton('knowledgeMetabolism', (ct) => {
163
+ return new KnowledgeMetabolism({
164
+ contradictionDetector: ct.get('contradictionDetector'),
165
+ redundancyAnalyzer: ct.get('redundancyAnalyzer'),
166
+ decayDetector: ct.get('decayDetector'),
167
+ signalBus: ct.singletons.signalBus || undefined,
168
+ });
169
+ });
170
+ c.singleton('consolidationAdvisor', (ct) => {
171
+ const db = ct.get('database');
172
+ return new ConsolidationAdvisor(db.getDb());
173
+ });
123
174
  }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * PanoramaModule — DI 注册
3
+ *
4
+ * 注册全景服务到 ServiceContainer:
5
+ * - moduleDiscoverer
6
+ * - roleRefiner
7
+ * - couplingAnalyzer
8
+ * - layerInferrer
9
+ * - panoramaAggregator
10
+ * - panoramaScanner
11
+ * - panoramaService
12
+ *
13
+ * @module PanoramaModule
14
+ */
15
+ import type { ServiceContainer } from '../ServiceContainer.js';
16
+ export declare const PanoramaModule: {
17
+ register(container: ServiceContainer): void;
18
+ };
@@ -0,0 +1,76 @@
1
+ /**
2
+ * PanoramaModule — DI 注册
3
+ *
4
+ * 注册全景服务到 ServiceContainer:
5
+ * - moduleDiscoverer
6
+ * - roleRefiner
7
+ * - couplingAnalyzer
8
+ * - layerInferrer
9
+ * - panoramaAggregator
10
+ * - panoramaScanner
11
+ * - panoramaService
12
+ *
13
+ * @module PanoramaModule
14
+ */
15
+ import { CouplingAnalyzer } from '../../service/panorama/CouplingAnalyzer.js';
16
+ import { DimensionAnalyzer } from '../../service/panorama/DimensionAnalyzer.js';
17
+ import { LayerInferrer } from '../../service/panorama/LayerInferrer.js';
18
+ import { ModuleDiscoverer } from '../../service/panorama/ModuleDiscoverer.js';
19
+ import { PanoramaAggregator } from '../../service/panorama/PanoramaAggregator.js';
20
+ import { PanoramaScanner } from '../../service/panorama/PanoramaScanner.js';
21
+ import { PanoramaService } from '../../service/panorama/PanoramaService.js';
22
+ import { RoleRefiner } from '../../service/panorama/RoleRefiner.js';
23
+ export const PanoramaModule = {
24
+ register(container) {
25
+ const ct = container;
26
+ const getDb = () => {
27
+ const db = ct.singletons.database;
28
+ return (db?.getDb ? db.getDb() : db);
29
+ };
30
+ 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()));
34
+ ct.singleton('layerInferrer', () => new LayerInferrer());
35
+ ct.singleton('dimensionAnalyzer', () => new DimensionAnalyzer(getDb()));
36
+ ct.singleton('panoramaAggregator', (c) => {
37
+ const sc = c;
38
+ const roleRefiner = sc.get('roleRefiner');
39
+ const couplingAnalyzer = sc.get('couplingAnalyzer');
40
+ const layerInferrer = sc.get('layerInferrer');
41
+ const dimensionAnalyzer = sc.get('dimensionAnalyzer');
42
+ return new PanoramaAggregator({
43
+ roleRefiner,
44
+ couplingAnalyzer,
45
+ layerInferrer,
46
+ db: getDb(),
47
+ projectRoot: getProjectRoot(),
48
+ dimensionAnalyzer,
49
+ });
50
+ });
51
+ ct.singleton('panoramaScanner', () => {
52
+ const logger = (ct.singletons.logger ?? {
53
+ info() { },
54
+ warn() { },
55
+ });
56
+ return new PanoramaScanner({
57
+ projectRoot: getProjectRoot(),
58
+ container: container,
59
+ logger,
60
+ });
61
+ });
62
+ ct.singleton('panoramaService', (c) => {
63
+ const sc = c;
64
+ const aggregator = sc.get('panoramaAggregator');
65
+ const scanner = sc.get('panoramaScanner');
66
+ const moduleDiscoverer = sc.get('moduleDiscoverer');
67
+ return new PanoramaService({
68
+ aggregator,
69
+ db: getDb(),
70
+ projectRoot: getProjectRoot(),
71
+ scanner,
72
+ moduleDiscoverer,
73
+ });
74
+ });
75
+ },
76
+ };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * SignalModule — Phase 0 信号基础设施注册
3
+ *
4
+ * 注册:
5
+ * - signalBus: 统一信号总线(基础设施层)
6
+ * - hitRecorder: 批量使用信号采集器(服务层)
7
+ * - intent JSONL persistence subscriber
8
+ */
9
+ import type { ServiceContainer } from '../ServiceContainer.js';
10
+ export declare function register(c: ServiceContainer): void;
@@ -0,0 +1,84 @@
1
+ /**
2
+ * SignalModule — Phase 0 信号基础设施注册
3
+ *
4
+ * 注册:
5
+ * - signalBus: 统一信号总线(基础设施层)
6
+ * - hitRecorder: 批量使用信号采集器(服务层)
7
+ * - intent JSONL persistence subscriber
8
+ */
9
+ import fs from 'node:fs';
10
+ import path from 'node:path';
11
+ import { SignalAggregator } from '../../infrastructure/signal/SignalAggregator.js';
12
+ import { SignalBridge } from '../../infrastructure/signal/SignalBridge.js';
13
+ import { SignalBus } from '../../infrastructure/signal/SignalBus.js';
14
+ import { SignalTraceWriter } from '../../infrastructure/signal/SignalTraceWriter.js';
15
+ import { HitRecorder } from '../../service/signal/HitRecorder.js';
16
+ import { resolveProjectRoot } from '../../shared/resolveProjectRoot.js';
17
+ import { shutdown } from '../../shared/shutdown.js';
18
+ /**
19
+ * Register intent signal subscriber for JSONL persistence.
20
+ * Replaces standalone SignalLogger — writes IntentChainRecord to .autosnippet/logs/signals/YYYY-MM-DD.jsonl.
21
+ */
22
+ function registerIntentPersistence(signalBus, projectRoot) {
23
+ signalBus.subscribe('intent', (signal) => {
24
+ try {
25
+ const chain = signal.metadata?.chain;
26
+ if (!chain) {
27
+ return;
28
+ }
29
+ const dir = path.join(projectRoot, '.autosnippet', 'logs', 'signals');
30
+ fs.mkdirSync(dir, { recursive: true });
31
+ const d = new Date(signal.timestamp);
32
+ const dateStr = `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}`;
33
+ const filePath = path.join(dir, `${dateStr}.jsonl`);
34
+ fs.appendFileSync(filePath, `${JSON.stringify(chain)}\n`, 'utf8');
35
+ }
36
+ catch {
37
+ // Write failure is non-blocking
38
+ }
39
+ });
40
+ }
41
+ export function register(c) {
42
+ // ═══ Infrastructure ═══
43
+ c.singleton('signalBus', () => new SignalBus());
44
+ // ═══ Service ═══
45
+ c.singleton('hitRecorder', (ct) => {
46
+ const bus = ct.get('signalBus');
47
+ const db = ct.get('database');
48
+ const recorder = new HitRecorder(bus, db);
49
+ recorder.start();
50
+ // shutdown hook: 在 DB close 之前 flush buffer
51
+ shutdown.register(async () => {
52
+ await recorder.stop();
53
+ }, 'hitRecorder');
54
+ return recorder;
55
+ });
56
+ // ═══ Intent Signal Persistence ═══
57
+ // Register after signalBus is created — subscribe for JSONL persistence
58
+ const signalBus = c.get('signalBus');
59
+ const projectRoot = resolveProjectRoot(c);
60
+ registerIntentPersistence(signalBus, projectRoot);
61
+ // ═══ SignalBridge — SignalBus → EventBus 桥接 ═══
62
+ c.singleton('signalBridge', (ct) => {
63
+ const bus = ct.get('signalBus');
64
+ const eventBus = ct.get('eventBus');
65
+ return new SignalBridge(bus, eventBus);
66
+ });
67
+ // ═══ SignalTraceWriter — 全类型信号 JSONL 留痕 ═══
68
+ c.singleton('signalTraceWriter', (ct) => {
69
+ const bus = ct.get('signalBus');
70
+ const root = resolveProjectRoot(ct);
71
+ return new SignalTraceWriter(bus, path.join(root, '.autosnippet', 'logs', 'signals'));
72
+ });
73
+ // ═══ SignalAggregator — 滑窗统计 + 异常检测 ═══
74
+ c.singleton('signalAggregator', (ct) => {
75
+ const bus = ct.get('signalBus');
76
+ const reportStore = ct.get('reportStore');
77
+ const agg = new SignalAggregator(bus, reportStore);
78
+ agg.start();
79
+ shutdown.register(async () => {
80
+ agg.stop();
81
+ }, 'signalAggregator');
82
+ return agg;
83
+ });
84
+ }
@@ -169,6 +169,7 @@ export declare class KnowledgeRepositoryImpl extends BaseRepository {
169
169
  updatedAt: number;
170
170
  publishedAt: number | null;
171
171
  publishedBy: string | null;
172
+ staging_deadline: number | null;
172
173
  };
173
174
  /**
174
175
  * 覆写 BaseRepository 的 _mapRowToEntity
@@ -200,7 +200,10 @@ export class KnowledgeRepositoryImpl extends BaseRepository {
200
200
  SELECT
201
201
  COUNT(*) as total,
202
202
  SUM(CASE WHEN lifecycle = 'pending' THEN 1 ELSE 0 END) as pending,
203
+ SUM(CASE WHEN lifecycle = 'staging' THEN 1 ELSE 0 END) as staging,
203
204
  SUM(CASE WHEN lifecycle = 'active' THEN 1 ELSE 0 END) as active,
205
+ SUM(CASE WHEN lifecycle = 'evolving' THEN 1 ELSE 0 END) as evolving,
206
+ SUM(CASE WHEN lifecycle = 'decaying' THEN 1 ELSE 0 END) as decaying,
204
207
  SUM(CASE WHEN lifecycle = 'deprecated' THEN 1 ELSE 0 END) as deprecated,
205
208
  SUM(CASE WHEN kind = 'rule' THEN 1 ELSE 0 END) as rules,
206
209
  SUM(CASE WHEN kind = 'pattern' THEN 1 ELSE 0 END) as patterns,
@@ -238,6 +241,8 @@ export class KnowledgeRepositoryImpl extends BaseRepository {
238
241
  // SQLite INTEGER → boolean
239
242
  autoApprovable: !!row.autoApprovable,
240
243
  includeHeaders: !!row.includeHeaders,
244
+ // Staging support
245
+ stagingDeadline: row.staging_deadline || null,
241
246
  });
242
247
  }
243
248
  /** KnowledgeEntry → DB Row (camelCase 列名 = 属性名,直传) */
@@ -287,6 +292,7 @@ export class KnowledgeRepositoryImpl extends BaseRepository {
287
292
  updatedAt: e.updatedAt || now,
288
293
  publishedAt: e.publishedAt || null,
289
294
  publishedBy: e.publishedBy || null,
295
+ staging_deadline: e.stagingDeadline || null,
290
296
  };
291
297
  }
292
298
  /**
@@ -18,6 +18,7 @@
18
18
  * bootstrap:all-completed — 全部任务完成
19
19
  */
20
20
  import type { EventBus } from '../../infrastructure/event/EventBus.js';
21
+ import type { SignalBus } from '../../infrastructure/signal/SignalBus.js';
21
22
  interface TaskMeta {
22
23
  type?: string;
23
24
  dimId?: string;
@@ -40,6 +41,7 @@ interface TaskDef {
40
41
  }
41
42
  interface BootstrapTaskManagerOpts {
42
43
  eventBus?: EventBus | null;
44
+ signalBus?: SignalBus | null;
43
45
  getRealtimeService?: (() => {
44
46
  broadcastEvent(name: string, data: unknown): void;
45
47
  } | null) | null;
@@ -96,7 +98,7 @@ declare class BootstrapSession {
96
98
  }
97
99
  export declare class BootstrapTaskManager {
98
100
  #private;
99
- constructor({ eventBus, getRealtimeService }?: BootstrapTaskManagerOpts);
101
+ constructor({ eventBus, signalBus, getRealtimeService }?: BootstrapTaskManagerOpts);
100
102
  /**
101
103
  * 启动新的 bootstrap 会话
102
104
  *
@@ -118,10 +118,12 @@ class BootstrapSession {
118
118
  export class BootstrapTaskManager {
119
119
  #currentSession = null;
120
120
  #eventBus = null;
121
+ #signalBus = null;
121
122
  /** 获取 RealtimeService 的 getter(延迟获取,避免循环依赖) */
122
123
  #getRealtimeService = null;
123
- constructor({ eventBus, getRealtimeService } = {}) {
124
+ constructor({ eventBus, signalBus, getRealtimeService } = {}) {
124
125
  this.#eventBus = eventBus || null;
126
+ this.#signalBus = signalBus || null;
125
127
  this.#getRealtimeService = getRealtimeService || null;
126
128
  }
127
129
  // ═══════════════════════════════════════════════════════════
@@ -197,6 +199,15 @@ export class BootstrapTaskManager {
197
199
  error: t.error,
198
200
  })),
199
201
  });
202
+ this.#signalBus?.send('lifecycle', 'Bootstrap', 0.3, {
203
+ metadata: {
204
+ action: 'bootstrap_aborted',
205
+ sessionId: session.id,
206
+ reason,
207
+ completed: session.completedTasks,
208
+ failed: session.failedTasks,
209
+ },
210
+ });
200
211
  }
201
212
  /**
202
213
  * 验证 sessionId 是否仍然是活跃 session
@@ -350,6 +361,14 @@ export class BootstrapTaskManager {
350
361
  error: t.error,
351
362
  })),
352
363
  });
364
+ this.#signalBus?.send('lifecycle', 'Bootstrap', 1, {
365
+ metadata: {
366
+ action: 'bootstrap_completed',
367
+ sessionId: session.id,
368
+ completed: session.completedTasks,
369
+ failed: session.failedTasks,
370
+ },
371
+ });
353
372
  }
354
373
  /** 发射事件到 EventBus + 推送到前端 Socket.io */
355
374
  #emit(eventName, data) {
@@ -44,16 +44,15 @@ const MCP_TOOLS_SUMMARY = [
44
44
  name: 'autosnippet_submit_knowledge',
45
45
  desc: 'Submit a knowledge candidate (strict validation)',
46
46
  },
47
- {
48
- name: 'autosnippet_submit_knowledge_batch',
49
- desc: 'Batch submit candidates (with dedup + throttle)',
50
- },
51
47
  { name: 'autosnippet_guard', desc: 'Code compliance check (single file or batch audit)' },
52
48
  { name: 'autosnippet_structure', desc: 'Project structure discovery (targets/files/metadata)' },
53
49
  { name: 'autosnippet_graph', desc: 'Knowledge graph query (query/impact/path/stats)' },
54
50
  { name: 'autosnippet_skill', desc: 'Skill management (list/load/create/update/delete)' },
55
- { name: 'autosnippet_save_document', desc: 'Save development document (auto-publish)' },
56
51
  { name: 'autosnippet_bootstrap', desc: 'Project cold-start & scan' },
52
+ {
53
+ name: 'autosnippet_panorama',
54
+ desc: 'Project panorama (operation: overview/module/gaps/health)',
55
+ },
57
56
  { name: 'autosnippet_health', desc: 'Service health & KB statistics' },
58
57
  { name: 'autosnippet_capabilities', desc: 'List all available MCP tools (self-discovery)' },
59
58
  ];
@@ -157,7 +157,9 @@ export declare class CursorDeliveryPipeline {
157
157
  };
158
158
  }>;
159
159
  /**
160
- * 加载知识条目(active + high-confidence pending)
160
+ * 加载知识条目(active + staging + high-confidence pending)
161
+ *
162
+ * M2 六态状态机: staging/active/evolving 均为 CONSUMABLE 状态
161
163
  */
162
164
  _loadEntries(): Promise<KnowledgeEntryProps[]>;
163
165
  /**
@@ -137,24 +137,27 @@ export class CursorDeliveryPipeline {
137
137
  }
138
138
  // ─── 内部方法 ───────────────────────────────────────
139
139
  /**
140
- * 加载知识条目(active + high-confidence pending)
140
+ * 加载知识条目(active + staging + high-confidence pending)
141
+ *
142
+ * M2 六态状态机: staging/active/evolving 均为 CONSUMABLE 状态
141
143
  */
142
144
  async _loadEntries() {
143
145
  const allEntries = [];
144
- // 加载 active
145
- try {
146
- const active = await this.knowledgeService.list({ lifecycle: 'active' }, { page: 1, pageSize: 200 });
147
- const activeItems = this._extractItems(active);
148
- allEntries.push(...activeItems);
149
- }
150
- catch (e) {
151
- this.logger.warn?.(`[CursorDelivery] Failed to load active entries: ${e.message}`);
146
+ // 加载 active + staging + evolving(CONSUMABLE 状态)
147
+ for (const state of ['active', 'staging', 'evolving']) {
148
+ try {
149
+ const result = await this.knowledgeService.list({ lifecycle: state }, { page: 1, pageSize: 200 });
150
+ const items = this._extractItems(result);
151
+ allEntries.push(...items);
152
+ }
153
+ catch (e) {
154
+ this.logger.warn?.(`[CursorDelivery] Failed to load ${state} entries: ${e.message}`);
155
+ }
152
156
  }
153
157
  // 加载 pending(高置信度的也纳入)
154
158
  try {
155
159
  const pending = await this.knowledgeService.list({ lifecycle: 'pending' }, { page: 1, pageSize: 200 });
156
160
  const pendingItems = this._extractItems(pending);
157
- // 过滤高置信度 pending(quality.confidence >= PENDING_MIN 或无 quality 字段)
158
161
  const highConfPending = pendingItems.filter((e) => {
159
162
  const qual = e.quality;
160
163
  const conf = qual?.confidence;
@@ -173,9 +173,10 @@ export class RulesGenerator {
173
173
  '',
174
174
  '- `autosnippet_bootstrap` — Cold-start: analyze the project and generate initial knowledge entries',
175
175
  '- `autosnippet_search({ query })` — Search knowledge base (BM25 + semantic)',
176
- '- `autosnippet_create_recipe` — Create a new coding recipe from current context',
176
+ '- `autosnippet_submit_knowledge` — Submit a knowledge candidate (strict validation)',
177
177
  '- `autosnippet_guard` — Run compliance review on current changes',
178
- '- `autosnippet_task_start` / `autosnippet_task_close` Track coding tasks with automatic knowledge capture',
178
+ '- `autosnippet_task` — Task & decision management (prime/create/claim/close/record_decision)',
179
+ '- `autosnippet_panorama` — Project panorama (overview/module/gaps/health)',
179
180
  '',
180
181
  '## Recommended First Steps',
181
182
  '',