autosnippet 3.2.12 → 3.2.15

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 (296) hide show
  1. package/config/constitution.yaml +19 -0
  2. package/config/default.json +6 -1
  3. package/dist/bin/cli.d.ts +2 -1
  4. package/dist/bin/cli.d.ts.map +1 -1
  5. package/dist/bin/cli.js +231 -22
  6. package/dist/bin/cli.js.map +1 -1
  7. package/dist/lib/bootstrap.d.ts.map +1 -1
  8. package/dist/lib/bootstrap.js +2 -1
  9. package/dist/lib/bootstrap.js.map +1 -1
  10. package/dist/lib/cli/SetupService.d.ts +70 -6
  11. package/dist/lib/cli/SetupService.d.ts.map +1 -1
  12. package/dist/lib/cli/SetupService.js +238 -50
  13. package/dist/lib/cli/SetupService.js.map +1 -1
  14. package/dist/lib/cli/UpgradeService.d.ts.map +1 -1
  15. package/dist/lib/cli/UpgradeService.js +3 -2
  16. package/dist/lib/cli/UpgradeService.js.map +1 -1
  17. package/dist/lib/cli/deploy/FileDeployer.d.ts.map +1 -1
  18. package/dist/lib/cli/deploy/FileDeployer.js +6 -4
  19. package/dist/lib/cli/deploy/FileDeployer.js.map +1 -1
  20. package/dist/lib/cli/deploy/FileManifest.d.ts.map +1 -1
  21. package/dist/lib/cli/deploy/FileManifest.js +3 -2
  22. package/dist/lib/cli/deploy/FileManifest.js.map +1 -1
  23. package/dist/lib/core/capability/CapabilityProbe.d.ts +13 -0
  24. package/dist/lib/core/capability/CapabilityProbe.d.ts.map +1 -1
  25. package/dist/lib/core/capability/CapabilityProbe.js +36 -17
  26. package/dist/lib/core/capability/CapabilityProbe.js.map +1 -1
  27. package/dist/lib/external/mcp/McpServer.d.ts +13 -0
  28. package/dist/lib/external/mcp/McpServer.d.ts.map +1 -1
  29. package/dist/lib/external/mcp/McpServer.js +44 -3
  30. package/dist/lib/external/mcp/McpServer.js.map +1 -1
  31. package/dist/lib/external/mcp/handlers/bootstrap/pipeline/orchestrator.d.ts.map +1 -1
  32. package/dist/lib/external/mcp/handlers/bootstrap/pipeline/orchestrator.js +16 -1
  33. package/dist/lib/external/mcp/handlers/bootstrap/pipeline/orchestrator.js.map +1 -1
  34. package/dist/lib/external/mcp/handlers/bootstrap-external.js.map +1 -1
  35. package/dist/lib/external/mcp/handlers/consolidated.d.ts +22 -24
  36. package/dist/lib/external/mcp/handlers/consolidated.d.ts.map +1 -1
  37. package/dist/lib/external/mcp/handlers/dimension-complete-external.js.map +1 -1
  38. package/dist/lib/external/mcp/handlers/search.d.ts +115 -39
  39. package/dist/lib/external/mcp/handlers/search.d.ts.map +1 -1
  40. package/dist/lib/external/mcp/handlers/search.js +107 -190
  41. package/dist/lib/external/mcp/handlers/search.js.map +1 -1
  42. package/dist/lib/external/mcp/handlers/task.d.ts +3 -0
  43. package/dist/lib/external/mcp/handlers/task.d.ts.map +1 -1
  44. package/dist/lib/external/mcp/handlers/task.js +10 -1
  45. package/dist/lib/external/mcp/handlers/task.js.map +1 -1
  46. package/dist/lib/external/mcp/handlers/wiki-external.d.ts.map +1 -1
  47. package/dist/lib/external/mcp/handlers/wiki-external.js +4 -3
  48. package/dist/lib/external/mcp/handlers/wiki-external.js.map +1 -1
  49. package/dist/lib/http/HttpServer.js +2 -2
  50. package/dist/lib/http/HttpServer.js.map +1 -1
  51. package/dist/lib/http/middleware/gatewayMiddleware.js +2 -2
  52. package/dist/lib/http/middleware/gatewayMiddleware.js.map +1 -1
  53. package/dist/lib/http/routes/ai.d.ts.map +1 -1
  54. package/dist/lib/http/routes/ai.js +7 -15
  55. package/dist/lib/http/routes/ai.js.map +1 -1
  56. package/dist/lib/http/routes/candidates.d.ts.map +1 -1
  57. package/dist/lib/http/routes/candidates.js +3 -1
  58. package/dist/lib/http/routes/candidates.js.map +1 -1
  59. package/dist/lib/http/routes/commands.d.ts.map +1 -1
  60. package/dist/lib/http/routes/commands.js +37 -9
  61. package/dist/lib/http/routes/commands.js.map +1 -1
  62. package/dist/lib/http/routes/guard.d.ts.map +1 -1
  63. package/dist/lib/http/routes/guard.js.map +1 -1
  64. package/dist/lib/http/routes/guardRules.d.ts.map +1 -1
  65. package/dist/lib/http/routes/guardRules.js +7 -7
  66. package/dist/lib/http/routes/guardRules.js.map +1 -1
  67. package/dist/lib/http/routes/knowledge.d.ts.map +1 -1
  68. package/dist/lib/http/routes/knowledge.js +62 -18
  69. package/dist/lib/http/routes/knowledge.js.map +1 -1
  70. package/dist/lib/http/routes/modules.d.ts.map +1 -1
  71. package/dist/lib/http/routes/modules.js +7 -5
  72. package/dist/lib/http/routes/modules.js.map +1 -1
  73. package/dist/lib/http/routes/recipes.js +1 -1
  74. package/dist/lib/http/routes/recipes.js.map +1 -1
  75. package/dist/lib/http/routes/remote.d.ts.map +1 -1
  76. package/dist/lib/http/routes/remote.js +16 -5
  77. package/dist/lib/http/routes/remote.js.map +1 -1
  78. package/dist/lib/http/routes/search.d.ts.map +1 -1
  79. package/dist/lib/http/routes/search.js +31 -23
  80. package/dist/lib/http/routes/search.js.map +1 -1
  81. package/dist/lib/http/routes/snippets.js +2 -2
  82. package/dist/lib/http/routes/snippets.js.map +1 -1
  83. package/dist/lib/http/routes/task.js.map +1 -1
  84. package/dist/lib/http/routes/violations.js +2 -2
  85. package/dist/lib/http/routes/violations.js.map +1 -1
  86. package/dist/lib/http/routes/wiki.d.ts.map +1 -1
  87. package/dist/lib/http/routes/wiki.js +3 -2
  88. package/dist/lib/http/routes/wiki.js.map +1 -1
  89. package/dist/lib/http/utils/routeHelpers.d.ts +2 -2
  90. package/dist/lib/http/utils/routeHelpers.js +2 -2
  91. package/dist/lib/http/utils/routeHelpers.js.map +1 -1
  92. package/dist/lib/infrastructure/config/Defaults.d.ts +3 -0
  93. package/dist/lib/infrastructure/config/Defaults.d.ts.map +1 -1
  94. package/dist/lib/infrastructure/config/Defaults.js +10 -6
  95. package/dist/lib/infrastructure/config/Defaults.js.map +1 -1
  96. package/dist/lib/infrastructure/config/Paths.d.ts +1 -1
  97. package/dist/lib/infrastructure/config/Paths.d.ts.map +1 -1
  98. package/dist/lib/infrastructure/config/Paths.js +4 -16
  99. package/dist/lib/infrastructure/config/Paths.js.map +1 -1
  100. package/dist/lib/infrastructure/vector/HnswVectorAdapter.d.ts +4 -1
  101. package/dist/lib/infrastructure/vector/HnswVectorAdapter.d.ts.map +1 -1
  102. package/dist/lib/infrastructure/vector/HnswVectorAdapter.js +26 -6
  103. package/dist/lib/infrastructure/vector/HnswVectorAdapter.js.map +1 -1
  104. package/dist/lib/infrastructure/vector/IndexingPipeline.d.ts +20 -0
  105. package/dist/lib/infrastructure/vector/IndexingPipeline.d.ts.map +1 -1
  106. package/dist/lib/infrastructure/vector/IndexingPipeline.js +65 -3
  107. package/dist/lib/infrastructure/vector/IndexingPipeline.js.map +1 -1
  108. package/dist/lib/infrastructure/vector/JsonVectorAdapter.d.ts +1 -1
  109. package/dist/lib/infrastructure/vector/JsonVectorAdapter.js +1 -1
  110. package/dist/lib/injection/ServiceContainer.d.ts +12 -2
  111. package/dist/lib/injection/ServiceContainer.d.ts.map +1 -1
  112. package/dist/lib/injection/ServiceContainer.js +10 -85
  113. package/dist/lib/injection/ServiceContainer.js.map +1 -1
  114. package/dist/lib/injection/ServiceMap.d.ts +124 -0
  115. package/dist/lib/injection/ServiceMap.d.ts.map +1 -0
  116. package/dist/lib/injection/ServiceMap.js +10 -0
  117. package/dist/lib/injection/ServiceMap.js.map +1 -0
  118. package/dist/lib/injection/modules/AiModule.d.ts +36 -0
  119. package/dist/lib/injection/modules/AiModule.d.ts.map +1 -0
  120. package/dist/lib/injection/modules/AiModule.js +99 -0
  121. package/dist/lib/injection/modules/AiModule.js.map +1 -0
  122. package/dist/lib/injection/modules/AppModule.js.map +1 -1
  123. package/dist/lib/injection/modules/GuardModule.js.map +1 -1
  124. package/dist/lib/injection/modules/KnowledgeModule.d.ts +1 -1
  125. package/dist/lib/injection/modules/KnowledgeModule.d.ts.map +1 -1
  126. package/dist/lib/injection/modules/KnowledgeModule.js +4 -10
  127. package/dist/lib/injection/modules/KnowledgeModule.js.map +1 -1
  128. package/dist/lib/injection/modules/VectorModule.d.ts +20 -0
  129. package/dist/lib/injection/modules/VectorModule.d.ts.map +1 -0
  130. package/dist/lib/injection/modules/VectorModule.js +74 -0
  131. package/dist/lib/injection/modules/VectorModule.js.map +1 -0
  132. package/dist/lib/platform/ios/routes/spm.d.ts.map +1 -1
  133. package/dist/lib/platform/ios/routes/spm.js +7 -5
  134. package/dist/lib/platform/ios/routes/spm.js.map +1 -1
  135. package/dist/lib/service/agent/AgentRuntime.d.ts +3 -73
  136. package/dist/lib/service/agent/AgentRuntime.d.ts.map +1 -1
  137. package/dist/lib/service/agent/AgentRuntime.js +2 -2
  138. package/dist/lib/service/agent/AgentRuntime.js.map +1 -1
  139. package/dist/lib/service/agent/AgentRuntimeTypes.d.ts +113 -0
  140. package/dist/lib/service/agent/AgentRuntimeTypes.d.ts.map +1 -0
  141. package/dist/lib/service/agent/AgentRuntimeTypes.js +11 -0
  142. package/dist/lib/service/agent/AgentRuntimeTypes.js.map +1 -0
  143. package/dist/lib/service/agent/IntentClassifier.d.ts +20 -0
  144. package/dist/lib/service/agent/IntentClassifier.d.ts.map +1 -1
  145. package/dist/lib/service/agent/IntentClassifier.js +59 -4
  146. package/dist/lib/service/agent/IntentClassifier.js.map +1 -1
  147. package/dist/lib/service/agent/LarkTransport.d.ts.map +1 -1
  148. package/dist/lib/service/agent/LarkTransport.js +37 -18
  149. package/dist/lib/service/agent/LarkTransport.js.map +1 -1
  150. package/dist/lib/service/agent/PipelineStrategy.d.ts +1 -1
  151. package/dist/lib/service/agent/PipelineStrategy.d.ts.map +1 -1
  152. package/dist/lib/service/agent/PipelineStrategy.js +3 -3
  153. package/dist/lib/service/agent/PipelineStrategy.js.map +1 -1
  154. package/dist/lib/service/agent/core/ChatAgentPrompts.d.ts +2 -2
  155. package/dist/lib/service/agent/core/ChatAgentPrompts.d.ts.map +1 -1
  156. package/dist/lib/service/agent/core/ChatAgentPrompts.js +2 -2
  157. package/dist/lib/service/agent/core/ChatAgentPrompts.js.map +1 -1
  158. package/dist/lib/service/agent/domain/insight-analyst.d.ts +3 -3
  159. package/dist/lib/service/agent/domain/insight-analyst.d.ts.map +1 -1
  160. package/dist/lib/service/agent/domain/insight-analyst.js +3 -3
  161. package/dist/lib/service/agent/domain/insight-analyst.js.map +1 -1
  162. package/dist/lib/service/agent/memory/MemoryCoordinator.d.ts +3 -3
  163. package/dist/lib/service/agent/memory/MemoryCoordinator.d.ts.map +1 -1
  164. package/dist/lib/service/agent/memory/MemoryCoordinator.js +6 -6
  165. package/dist/lib/service/agent/memory/MemoryCoordinator.js.map +1 -1
  166. package/dist/lib/service/agent/memory/MemoryRetriever.d.ts +18 -12
  167. package/dist/lib/service/agent/memory/MemoryRetriever.d.ts.map +1 -1
  168. package/dist/lib/service/agent/memory/MemoryRetriever.js +70 -17
  169. package/dist/lib/service/agent/memory/MemoryRetriever.js.map +1 -1
  170. package/dist/lib/service/agent/memory/MemoryStore.d.ts +38 -0
  171. package/dist/lib/service/agent/memory/MemoryStore.d.ts.map +1 -1
  172. package/dist/lib/service/agent/memory/MemoryStore.js +70 -3
  173. package/dist/lib/service/agent/memory/MemoryStore.js.map +1 -1
  174. package/dist/lib/service/agent/memory/PersistentMemory.d.ts +18 -4
  175. package/dist/lib/service/agent/memory/PersistentMemory.d.ts.map +1 -1
  176. package/dist/lib/service/agent/memory/PersistentMemory.js +24 -4
  177. package/dist/lib/service/agent/memory/PersistentMemory.js.map +1 -1
  178. package/dist/lib/service/agent/presets.d.ts +2 -2
  179. package/dist/lib/service/agent/tools/index.d.ts +0 -5
  180. package/dist/lib/service/agent/tools/index.d.ts.map +1 -1
  181. package/dist/lib/service/agent/tools/query.d.ts +0 -5
  182. package/dist/lib/service/agent/tools/query.d.ts.map +1 -1
  183. package/dist/lib/service/agent/tools/query.js +41 -32
  184. package/dist/lib/service/agent/tools/query.js.map +1 -1
  185. package/dist/lib/service/automation/FileWatcher.js +9 -9
  186. package/dist/lib/service/automation/FileWatcher.js.map +1 -1
  187. package/dist/lib/service/automation/handlers/AlinkHandler.d.ts.map +1 -1
  188. package/dist/lib/service/automation/handlers/AlinkHandler.js +1 -1
  189. package/dist/lib/service/automation/handlers/AlinkHandler.js.map +1 -1
  190. package/dist/lib/service/automation/handlers/GuardHandler.js +1 -1
  191. package/dist/lib/service/automation/handlers/GuardHandler.js.map +1 -1
  192. package/dist/lib/service/automation/handlers/SearchHandler.d.ts.map +1 -1
  193. package/dist/lib/service/automation/handlers/SearchHandler.js +10 -10
  194. package/dist/lib/service/automation/handlers/SearchHandler.js.map +1 -1
  195. package/dist/lib/service/cursor/CursorDeliveryPipeline.d.ts.map +1 -1
  196. package/dist/lib/service/cursor/CursorDeliveryPipeline.js +2 -1
  197. package/dist/lib/service/cursor/CursorDeliveryPipeline.js.map +1 -1
  198. package/dist/lib/service/cursor/SkillsSyncer.d.ts.map +1 -1
  199. package/dist/lib/service/cursor/SkillsSyncer.js +2 -1
  200. package/dist/lib/service/cursor/SkillsSyncer.js.map +1 -1
  201. package/dist/lib/service/guard/ExclusionManager.d.ts.map +1 -1
  202. package/dist/lib/service/guard/ExclusionManager.js +2 -1
  203. package/dist/lib/service/guard/ExclusionManager.js.map +1 -1
  204. package/dist/lib/service/guard/RuleLearner.d.ts.map +1 -1
  205. package/dist/lib/service/guard/RuleLearner.js +2 -1
  206. package/dist/lib/service/guard/RuleLearner.js.map +1 -1
  207. package/dist/lib/service/knowledge/KnowledgeService.d.ts +5 -0
  208. package/dist/lib/service/knowledge/KnowledgeService.d.ts.map +1 -1
  209. package/dist/lib/service/knowledge/KnowledgeService.js +27 -0
  210. package/dist/lib/service/knowledge/KnowledgeService.js.map +1 -1
  211. package/dist/lib/service/module/ModuleService.d.ts.map +1 -1
  212. package/dist/lib/service/module/ModuleService.js +1 -0
  213. package/dist/lib/service/module/ModuleService.js.map +1 -1
  214. package/dist/lib/service/quality/FeedbackCollector.d.ts.map +1 -1
  215. package/dist/lib/service/quality/FeedbackCollector.js +2 -1
  216. package/dist/lib/service/quality/FeedbackCollector.js.map +1 -1
  217. package/dist/lib/service/search/BM25Scorer.d.ts +52 -0
  218. package/dist/lib/service/search/BM25Scorer.d.ts.map +1 -0
  219. package/dist/lib/service/search/BM25Scorer.js +155 -0
  220. package/dist/lib/service/search/BM25Scorer.js.map +1 -0
  221. package/dist/lib/service/search/CrossEncoderReranker.js +1 -1
  222. package/dist/lib/service/search/CrossEncoderReranker.js.map +1 -1
  223. package/dist/lib/service/search/MultiSignalRanker.d.ts +7 -0
  224. package/dist/lib/service/search/MultiSignalRanker.d.ts.map +1 -1
  225. package/dist/lib/service/search/MultiSignalRanker.js +37 -18
  226. package/dist/lib/service/search/MultiSignalRanker.js.map +1 -1
  227. package/dist/lib/service/search/SearchEngine.d.ts +15 -215
  228. package/dist/lib/service/search/SearchEngine.d.ts.map +1 -1
  229. package/dist/lib/service/search/SearchEngine.js +127 -270
  230. package/dist/lib/service/search/SearchEngine.js.map +1 -1
  231. package/dist/lib/service/search/SearchTypes.d.ts +258 -0
  232. package/dist/lib/service/search/SearchTypes.d.ts.map +1 -0
  233. package/dist/lib/service/search/SearchTypes.js +50 -0
  234. package/dist/lib/service/search/SearchTypes.js.map +1 -0
  235. package/dist/lib/service/search/contextBoost.d.ts +1 -1
  236. package/dist/lib/service/search/contextBoost.js +2 -2
  237. package/dist/lib/service/search/contextBoost.js.map +1 -1
  238. package/dist/lib/service/search/tokenizer.d.ts +18 -0
  239. package/dist/lib/service/search/tokenizer.d.ts.map +1 -0
  240. package/dist/lib/service/search/tokenizer.js +215 -0
  241. package/dist/lib/service/search/tokenizer.js.map +1 -0
  242. package/dist/lib/service/task/TaskGraphService.d.ts +15 -6
  243. package/dist/lib/service/task/TaskGraphService.d.ts.map +1 -1
  244. package/dist/lib/service/task/TaskGraphService.js +55 -5
  245. package/dist/lib/service/task/TaskGraphService.js.map +1 -1
  246. package/dist/lib/service/task/TaskKnowledgeBridge.d.ts +90 -25
  247. package/dist/lib/service/task/TaskKnowledgeBridge.d.ts.map +1 -1
  248. package/dist/lib/service/task/TaskKnowledgeBridge.js +253 -35
  249. package/dist/lib/service/task/TaskKnowledgeBridge.js.map +1 -1
  250. package/dist/lib/service/vector/ContextualEnricher.d.ts +62 -0
  251. package/dist/lib/service/vector/ContextualEnricher.d.ts.map +1 -0
  252. package/dist/lib/service/vector/ContextualEnricher.js +150 -0
  253. package/dist/lib/service/vector/ContextualEnricher.js.map +1 -0
  254. package/dist/lib/service/vector/SyncCoordinator.d.ts +63 -0
  255. package/dist/lib/service/vector/SyncCoordinator.d.ts.map +1 -0
  256. package/dist/lib/service/vector/SyncCoordinator.js +290 -0
  257. package/dist/lib/service/vector/SyncCoordinator.js.map +1 -0
  258. package/dist/lib/service/vector/VectorService.d.ts +176 -0
  259. package/dist/lib/service/vector/VectorService.d.ts.map +1 -0
  260. package/dist/lib/service/vector/VectorService.js +456 -0
  261. package/dist/lib/service/vector/VectorService.js.map +1 -0
  262. package/dist/lib/service/wiki/WikiGenerator.d.ts.map +1 -1
  263. package/dist/lib/service/wiki/WikiGenerator.js +2 -1
  264. package/dist/lib/service/wiki/WikiGenerator.js.map +1 -1
  265. package/dist/lib/service/wiki/WikiRenderers.d.ts +4 -128
  266. package/dist/lib/service/wiki/WikiRenderers.d.ts.map +1 -1
  267. package/dist/lib/service/wiki/WikiRenderers.js +2 -0
  268. package/dist/lib/service/wiki/WikiRenderers.js.map +1 -1
  269. package/dist/lib/service/wiki/WikiTypes.d.ts +146 -0
  270. package/dist/lib/service/wiki/WikiTypes.d.ts.map +1 -0
  271. package/dist/lib/service/wiki/WikiTypes.js +10 -0
  272. package/dist/lib/service/wiki/WikiTypes.js.map +1 -0
  273. package/dist/lib/service/wiki/WikiUtils.d.ts.map +1 -1
  274. package/dist/lib/service/wiki/WikiUtils.js +2 -1
  275. package/dist/lib/service/wiki/WikiUtils.js.map +1 -1
  276. package/dist/lib/shared/PathGuard.d.ts.map +1 -1
  277. package/dist/lib/shared/PathGuard.js +8 -17
  278. package/dist/lib/shared/PathGuard.js.map +1 -1
  279. package/dist/lib/shared/ProjectMarkers.d.ts +67 -0
  280. package/dist/lib/shared/ProjectMarkers.d.ts.map +1 -0
  281. package/dist/lib/shared/ProjectMarkers.js +142 -0
  282. package/dist/lib/shared/ProjectMarkers.js.map +1 -0
  283. package/dist/lib/shared/schemas/mcp-tools.d.ts +3 -0
  284. package/dist/lib/shared/schemas/mcp-tools.d.ts.map +1 -1
  285. package/dist/lib/shared/schemas/mcp-tools.js +6 -0
  286. package/dist/lib/shared/schemas/mcp-tools.js.map +1 -1
  287. package/package.json +1 -1
  288. package/templates/constitution.yaml +23 -2
  289. package/dist/lib/service/search/InvertedIndex.d.ts +0 -34
  290. package/dist/lib/service/search/InvertedIndex.d.ts.map +0 -1
  291. package/dist/lib/service/search/InvertedIndex.js +0 -83
  292. package/dist/lib/service/search/InvertedIndex.js.map +0 -1
  293. package/dist/lib/service/search/RetrievalFunnel.d.ts +0 -26
  294. package/dist/lib/service/search/RetrievalFunnel.d.ts.map +0 -1
  295. package/dist/lib/service/search/RetrievalFunnel.js +0 -77
  296. package/dist/lib/service/search/RetrievalFunnel.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../lib/bootstrap.ts"],"names":[],"mappings":"AAEA,OAAO,YAAY,MAAM,qCAAqC,CAAC;AAC/D,OAAO,qBAAqB,MAAM,8CAA8C,CAAC;AACjF,OAAO,OAA+B,MAAM,2BAA2B,CAAC;AACxE,OAAO,iBAAiB,MAAM,wCAAwC,CAAC;AACvE,OAAO,WAAW,MAAM,uCAAuC,CAAC;AAChE,OAAO,UAAU,MAAM,sCAAsC,CAAC;AAC9D,OAAO,YAAY,MAAM,yCAAyC,CAAC;AACnE,OAAO,kBAAkB,MAAM,iDAAiD,CAAC;AACjF,OAAO,MAAM,MAAM,oCAAoC,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAI5D;;GAEG;AACH,sBAAsB;AACtB,UAAU,gBAAgB;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,wBAAwB;AACxB,UAAU,mBAAmB;IAC3B,MAAM,CAAC,EAAE,OAAO,YAAY,CAAC;IAC7B,MAAM,CAAC,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC;IAC/C,EAAE,CAAC,EAAE,YAAY,CAAC,OAAO,kBAAkB,CAAC,CAAC;IAC7C,YAAY,CAAC,EAAE,YAAY,CAAC,OAAO,YAAY,CAAC,CAAC;IACjD,qBAAqB,CAAC,EAAE,YAAY,CAAC,OAAO,qBAAqB,CAAC,CAAC;IACnE,iBAAiB,CAAC,EAAE,YAAY,CAAC,OAAO,iBAAiB,CAAC,CAAC;IAC3D,UAAU,CAAC,EAAE,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;IAC7C,WAAW,CAAC,EAAE,YAAY,CAAC,OAAO,WAAW,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,YAAY,CAAC,OAAO,OAAO,CAAC,CAAC;IACvC,UAAU,CAAC,EAAE,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;IAC7C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,qBAAa,SAAS;IACpB,UAAU,EAAE,mBAAmB,CAAC;IAChC,OAAO,EAAE,gBAAgB,CAAC;gBACd,OAAO,GAAE,gBAAqB;IAK1C;;;;;OAKG;IACH,MAAM,CAAC,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM;IASxE;;OAEG;IACG,UAAU;IA+ChB;;OAEG;IACG,UAAU;IAgBhB;;OAEG;IACG,UAAU;IAMhB;;OAEG;IACG,gBAAgB;IAQtB;;OAEG;IACG,kBAAkB;IAWxB;;OAEG;IACG,gBAAgB;IAOtB;;OAEG;IACG,wBAAwB;IA2B9B;;OAEG;IACG,iBAAiB;IAkBvB;;OAEG;IACG,QAAQ;IAkBd;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM;IAIzB;;OAEG;IACH,gBAAgB;CAGjB;AAED,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../lib/bootstrap.ts"],"names":[],"mappings":"AAEA,OAAO,YAAY,MAAM,qCAAqC,CAAC;AAC/D,OAAO,qBAAqB,MAAM,8CAA8C,CAAC;AACjF,OAAO,OAA+B,MAAM,2BAA2B,CAAC;AACxE,OAAO,iBAAiB,MAAM,wCAAwC,CAAC;AACvE,OAAO,WAAW,MAAM,uCAAuC,CAAC;AAChE,OAAO,UAAU,MAAM,sCAAsC,CAAC;AAC9D,OAAO,YAAY,MAAM,yCAAyC,CAAC;AACnE,OAAO,kBAAkB,MAAM,iDAAiD,CAAC;AACjF,OAAO,MAAM,MAAM,oCAAoC,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAI5D;;GAEG;AACH,sBAAsB;AACtB,UAAU,gBAAgB;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,wBAAwB;AACxB,UAAU,mBAAmB;IAC3B,MAAM,CAAC,EAAE,OAAO,YAAY,CAAC;IAC7B,MAAM,CAAC,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC;IAC/C,EAAE,CAAC,EAAE,YAAY,CAAC,OAAO,kBAAkB,CAAC,CAAC;IAC7C,YAAY,CAAC,EAAE,YAAY,CAAC,OAAO,YAAY,CAAC,CAAC;IACjD,qBAAqB,CAAC,EAAE,YAAY,CAAC,OAAO,qBAAqB,CAAC,CAAC;IACnE,iBAAiB,CAAC,EAAE,YAAY,CAAC,OAAO,iBAAiB,CAAC,CAAC;IAC3D,UAAU,CAAC,EAAE,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;IAC7C,WAAW,CAAC,EAAE,YAAY,CAAC,OAAO,WAAW,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,YAAY,CAAC,OAAO,OAAO,CAAC,CAAC;IACvC,UAAU,CAAC,EAAE,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;IAC7C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,qBAAa,SAAS;IACpB,UAAU,EAAE,mBAAmB,CAAC;IAChC,OAAO,EAAE,gBAAgB,CAAC;gBACd,OAAO,GAAE,gBAAqB;IAK1C;;;;;OAKG;IACH,MAAM,CAAC,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM;IASxE;;OAEG;IACG,UAAU;IA+ChB;;OAEG;IACG,UAAU;IAiBhB;;OAEG;IACG,UAAU;IAMhB;;OAEG;IACG,gBAAgB;IAQtB;;OAEG;IACG,kBAAkB;IAWxB;;OAEG;IACG,gBAAgB;IAOtB;;OAEG;IACG,wBAAwB;IA2B9B;;OAEG;IACG,iBAAiB;IAkBvB;;OAEG;IACG,QAAQ;IAkBd;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM;IAIzB;;OAEG;IACH,gBAAgB;CAGjB;AAED,eAAe,SAAS,CAAC"}
@@ -82,7 +82,8 @@ export class Bootstrap {
82
82
  for (const envPath of candidates) {
83
83
  if (existsSync(envPath)) {
84
84
  const dotenv = await import('dotenv');
85
- dotenv.config({ path: envPath, override: false });
85
+ // quiet: true 禁止 dotenv v17 的 stdout banner,避免污染 MCP stdio 传输
86
+ dotenv.config({ path: envPath, override: false, quiet: true });
86
87
  break;
87
88
  }
88
89
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../lib/bootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../lib/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,YAAY,MAAM,qCAAqC,CAAC;AAC/D,OAAO,qBAAqB,MAAM,8CAA8C,CAAC;AACjF,OAAO,OAA+B,MAAM,2BAA2B,CAAC;AACxE,OAAO,iBAAiB,MAAM,wCAAwC,CAAC;AACvE,OAAO,WAAW,MAAM,uCAAuC,CAAC;AAChE,OAAO,UAAU,MAAM,sCAAsC,CAAC;AAC9D,OAAO,YAAY,MAAM,yCAAyC,CAAC;AACnE,OAAO,kBAAkB,MAAM,iDAAiD,CAAC;AACjF,OAAO,MAAM,MAAM,oCAAoC,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,SAAS,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AA4BpE,MAAM,OAAO,SAAS;IACpB,UAAU,CAAsB;IAChC,OAAO,CAAmB;IAC1B,YAAY,UAA4B,EAAE;QACxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,kBAAkB,CAAC,WAAmB,EAAE,gBAAyB;QACtE,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,WAAW,EAAE,CAAC;YACzC,SAAS,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACpF,CAAC;aAAM,IAAI,gBAAgB,EAAE,CAAC;YAC5B,oBAAoB;YACpB,SAAS,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC;YACH,6BAA6B;YAC7B,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YAExB,mCAAmC;YACnC,2CAA2C;YAC3C,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;gBAC1B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;gBACjE,SAAS,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;YAC5C,CAAC;YAED,UAAU;YACV,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YAExB,aAAa;YACb,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAE9B,IAAI,CAAC,UAAU,CAAC,MAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;YAEzE,WAAW;YACX,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAEhC,UAAU;YACV,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAE9B,aAAa;YACb,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAEtC,WAAW;YACX,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAE/B,oBAAoB;YACpB,+BAA+B;YAE/B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACxC,IAAI,CAAC,UAAU,CAAC,MAAO,CAAC,IAAI,CAAC,yCAAyC,QAAQ,KAAK,CAAC,CAAC;YAErF,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;YAC1D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,CAAC;YACH,6CAA6C;YAC7C,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;YAC7F,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE,CAAC;gBACjC,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBACxB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;oBACtC,gEAAgE;oBAChE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC/D,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,GAAG,GAAI,IAAI,CAAC,OAAO,CAAC,GAAc,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAC;QAClF,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,YAAY,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAO,CAAC,GAAG,CAAC,SAAS,CAEhD,CAAC;QACL,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAO,CAAC,GAAG,CAAC,UAAU,CAEnD,CAAC;QACL,MAAM,EAAE,GAAG,IAAI,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,EAAE,CAAC,aAAa,EAAE,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,UAAU,CAAC,MAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB;QACpB,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;QACpE,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,gBAAgB,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,YAAY,CAAC;QAC5C,IAAI,CAAC,UAAU,CAAC,MAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,wBAAwB;QAC5B,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;QAErD,yBAAyB;QACzB,MAAM,qBAAqB,GAAG,IAAI,qBAAqB,CAAC,YAAa,CAAC,CAAC;QACvE,IAAI,CAAC,UAAU,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QAC9D,MAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAElD,qBAAqB;QACrB,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,YAAa,CAAC,CAAC;QAC/D,IAAI,CAAC,UAAU,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QACtD,MAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAE9C,eAAe;QACf,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,EAAG,CAAC,CAAC;QACvC,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,WAAW,CAAC;QAC1C,MAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAEzC,qEAAqE;QACrE,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;QACpC,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC;QACxC,MAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QACrB,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,MAAO,CAAC,GAAG,CAAC,SAAS,CAAC;YAC1D,CAAC,CAAE,IAAI,CAAC,UAAU,CAAC,MAAO,CAAC,GAAG,CAAC,SAAS,CAAmB;YAC3D,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;QAE3C,OAAO;QACP,OAAO,CAAC,eAAe,CAAC;YACtB,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY;YAC1C,qBAAqB,EAAE,IAAI,CAAC,UAAU,CAAC,qBAAqB;YAC5D,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC,iBAAiB;YACpD,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW;SACzC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;QAClC,IAAI,CAAC,UAAU,CAAC,MAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAE/D,kCAAkC;QAClC,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,4BAA4B;gBAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;gBACzC,KAAK,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;YAC3C,CAAC;YAAC,MAAM,CAAC;gBACP,gCAAgC;YAClC,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;CACF;AAED,eAAe,SAAS,CAAC"}
@@ -4,7 +4,7 @@
4
4
  * 一键初始化 AutoSnippet V2 工作空间,5 步完成:
5
5
  *
6
6
  * Step 1 .autosnippet/ 运行时目录 + config.json + .gitignore
7
- * Step 2 AutoSnippet/ 子仓库(核心数据 + 权限能力 + skills/)
7
+ * Step 2 AutoSnippet/ 知识库目录结构 + AutoSnippet/recipes/(有 --repo 则 clone,无则为普通目录)
8
8
  * Step 3 IDE 集成(VSCode MCP + Cursor MCP + copilot-instructions + cursor-rules
9
9
  * + skills-template + cursor-workflow + claude-hooks + guard-ci + pre-commit-hook)
10
10
  * Step 4 SQLite 数据库 + V1 数据迁移
@@ -14,15 +14,17 @@
14
14
  *
15
15
  * 数据架构(核心数据在子仓库,受 git 权限保护)
16
16
  * ─────────────────────────────────────────────
17
- * AutoSnippet/ (Git 子仓库 = 唯一真实来源 Source of Truth)
17
+ * AutoSnippet/ (知识库根目录)
18
18
  * ├─ constitution.yaml 权限宪法:角色 + 权限矩阵 + 治理规则 + 能力探测
19
19
  * ├─ boxspec.json 项目规格定义
20
- * ├─ recipes/*.md 统一知识实体(代码规范/模式/架构/调用链/数据流/...)
21
- * ├─ skills/ Project Skills(冷启动自动生成 + 手动创建)
20
+ * ├─ recipes/ Git 子仓库 = 唯一真实来源 Source of Truth
21
+ * │ └─ *.md 统一知识实体(代码规范/模式/架构/调用链/数据流/...)
22
+ * ├─ candidates/ 候选知识(待审批)
23
+ * ├─ skills/ Project Skills(冷启动自动生成 + 手动创建)
22
24
  * └─ README.md
23
25
  *
24
26
  * .autosnippet/ (运行时缓存,gitignored)
25
- * ├─ config.json 项目配置
27
+ * ├─ config.json 项目配置(含 core.subRepoDir 子仓库路径)
26
28
  * ├─ autosnippet.db SQLite 运行时缓存(从子仓库同步 + candidates/snippets/audit)
27
29
  * ├─ context/ 向量索引缓存
28
30
  * └─ logs/ 运行日志
@@ -58,13 +60,23 @@ export declare class SetupService {
58
60
  runtimeDir: string;
59
61
  seed: boolean;
60
62
  skillsDir: string;
63
+ /** 子仓库相对路径(相对于 projectRoot),如 'AutoSnippet/recipes' */
64
+ subRepoDir: string;
65
+ /** 子仓库绝对路径 */
66
+ subRepoPath: string;
67
+ /** 子仓库远程仓库 URL(为空则 recipes/ 作为普通目录随主仓库提交) */
68
+ subRepoUrl: string | undefined;
61
69
  /**
62
- * @param {{ projectRoot: string, force?: boolean }} options
70
+ * @param {{ projectRoot: string, force?: boolean, seed?: boolean, subRepoDir?: string, subRepoUrl?: string }} options
63
71
  */
64
72
  constructor(options: {
65
73
  projectRoot: string;
66
74
  force?: boolean;
67
75
  seed?: boolean;
76
+ /** 自定义子仓库相对路径(默认 'AutoSnippet/recipes') */
77
+ subRepoDir?: string;
78
+ /** 子仓库远程仓库 URL(提供则 clone,不提供则 recipes/ 为普通目录) */
79
+ subRepoUrl?: string;
68
80
  });
69
81
  getSteps(): ({
70
82
  label: string;
@@ -76,6 +88,8 @@ export declare class SetupService {
76
88
  fn: () => {
77
89
  coreInit: boolean;
78
90
  alreadyRepo: boolean;
91
+ subRepoPath: string;
92
+ hasUrl: boolean;
79
93
  };
80
94
  } | {
81
95
  label: string;
@@ -101,6 +115,8 @@ export declare class SetupService {
101
115
  stepCoreRepo(): {
102
116
  coreInit: boolean;
103
117
  alreadyRepo: boolean;
118
+ subRepoPath: string;
119
+ hasUrl: boolean;
104
120
  };
105
121
  /** @private 写入 constitution.yaml(优先从模板复制) */
106
122
  _writeConstitution(): void;
@@ -131,6 +147,54 @@ export declare class SetupService {
131
147
  _ensureEnvFile(): void;
132
148
  /** @private 在指定目录执行 git 命令 */
133
149
  _git(args: string[], cwd: string): string;
150
+ /** @private 检查目录中是否有文件(排除 . 和 ..) */
151
+ _hasFiles(dirPath: string): boolean;
152
+ /** @private 确保子仓库的 remote origin 与给定 URL 一致 */
153
+ _ensureRemote(url: string): void;
154
+ /**
155
+ * @private 备份已有文件 → clone → 合并回来(不覆盖远端文件)
156
+ * 适用于 recipes/ 有模板文件但还不是 git 仓库的场景
157
+ */
158
+ _cloneWithMerge(url: string): void;
159
+ /**
160
+ * 尝试初始化向量索引: 检查 embedding provider 可用性,
161
+ * 若可用则自动构建初始索引;否则提示用户手动运行 asd embed。
162
+ *
163
+ * 此步骤为 best-effort: 失败不阻塞 setup 流程。
164
+ */
165
+ stepVectorIndex(): Promise<{
166
+ status: string;
167
+ reason: string;
168
+ hint: string;
169
+ indexed?: undefined;
170
+ skipped?: undefined;
171
+ errors?: undefined;
172
+ error?: undefined;
173
+ } | {
174
+ status: string;
175
+ reason: string;
176
+ hint?: undefined;
177
+ indexed?: undefined;
178
+ skipped?: undefined;
179
+ errors?: undefined;
180
+ error?: undefined;
181
+ } | {
182
+ status: string;
183
+ indexed: number;
184
+ skipped: number;
185
+ errors: number;
186
+ reason?: undefined;
187
+ hint?: undefined;
188
+ error?: undefined;
189
+ } | {
190
+ status: string;
191
+ error: string;
192
+ hint: string;
193
+ reason?: undefined;
194
+ indexed?: undefined;
195
+ skipped?: undefined;
196
+ errors?: undefined;
197
+ }>;
134
198
  }
135
199
  export default SetupService;
136
200
  //# sourceMappingURL=SetupService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SetupService.d.ts","sourceRoot":"","sources":["../../../lib/cli/SetupService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAcH,qBAAa,YAAY;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAQ;IAC5F,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;gBACS,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE;IA4B7E,QAAQ;;;;;;;;;;;;;;;;;;;;IAUF,GAAG;cAEsB,MAAM;eAAS,MAAM;YAAM,OAAO;gBAAU,MAAM;;IAqBjF,4BAA4B;IAC5B,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAiBxD,YAAY;IAQZ,WAAW;;;IAkCX,YAAY;;;;IA+CZ,6CAA6C;IAC7C,kBAAkB;IAoDlB,+BAA+B;IAC/B,aAAa;IAuBb,0CAA0C;IAC1C,mBAAmB;IAanB,kCAAkC;IAClC,gBAAgB;IA2BhB,6BAA6B;IAC7B,gBAAgB;IAkFhB,OAAO;;;IAkBD,YAAY;;;IAsBlB;;;OAGG;IACG,gBAAgB,CAAC,EAAE,EAAE,OAAO;IAiB5B,YAAY;IA+BlB;;;OAGG;IACH,cAAc;IA0Bd,8BAA8B;IAC9B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM;CAcjC;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"SetupService.d.ts","sourceRoot":"","sources":["../../../lib/cli/SetupService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AA6BH,qBAAa,YAAY;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAQ;IAC5F,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,6CAA6C;IAC7C,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B;;OAEG;gBACS,OAAO,EAAE;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,2CAA2C;QAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,iDAAiD;QACjD,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB;IAiCD,QAAQ;;;;;;;;;;;;;;;;;;;;;;IAWF,GAAG;cAEsB,MAAM;eAAS,MAAM;YAAM,OAAO;gBAAU,MAAM;;IAqBjF,4BAA4B;IAC5B,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAiBxD,YAAY;IAQZ,WAAW;;;IAoCX,YAAY;;;;;;IA0EZ,6CAA6C;IAC7C,kBAAkB;IA0DlB,+BAA+B;IAC/B,aAAa;IAwBb,0CAA0C;IAC1C,mBAAmB;IAanB,kCAAkC;IAClC,gBAAgB;IA2BhB,6BAA6B;IAC7B,gBAAgB;IAiGhB,OAAO;;;IAkBD,YAAY;;;IAsBlB;;;OAGG;IACG,gBAAgB,CAAC,EAAE,EAAE,OAAO;IAiB5B,YAAY;IA+BlB;;;OAGG;IACH,cAAc;IA0Bd,8BAA8B;IAC9B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM;IAehC,qCAAqC;IACrC,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IASnC,+CAA+C;IAC/C,aAAa,CAAC,GAAG,EAAE,MAAM;IAYzB;;;OAGG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM;IA0C3B;;;;;OAKG;IACG,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDtB;AAED,eAAe,YAAY,CAAC"}
@@ -4,7 +4,7 @@
4
4
  * 一键初始化 AutoSnippet V2 工作空间,5 步完成:
5
5
  *
6
6
  * Step 1 .autosnippet/ 运行时目录 + config.json + .gitignore
7
- * Step 2 AutoSnippet/ 子仓库(核心数据 + 权限能力 + skills/)
7
+ * Step 2 AutoSnippet/ 知识库目录结构 + AutoSnippet/recipes/(有 --repo 则 clone,无则为普通目录)
8
8
  * Step 3 IDE 集成(VSCode MCP + Cursor MCP + copilot-instructions + cursor-rules
9
9
  * + skills-template + cursor-workflow + claude-hooks + guard-ci + pre-commit-hook)
10
10
  * Step 4 SQLite 数据库 + V1 数据迁移
@@ -14,15 +14,17 @@
14
14
  *
15
15
  * 数据架构(核心数据在子仓库,受 git 权限保护)
16
16
  * ─────────────────────────────────────────────
17
- * AutoSnippet/ (Git 子仓库 = 唯一真实来源 Source of Truth)
17
+ * AutoSnippet/ (知识库根目录)
18
18
  * ├─ constitution.yaml 权限宪法:角色 + 权限矩阵 + 治理规则 + 能力探测
19
19
  * ├─ boxspec.json 项目规格定义
20
- * ├─ recipes/*.md 统一知识实体(代码规范/模式/架构/调用链/数据流/...)
21
- * ├─ skills/ Project Skills(冷启动自动生成 + 手动创建)
20
+ * ├─ recipes/ Git 子仓库 = 唯一真实来源 Source of Truth
21
+ * │ └─ *.md 统一知识实体(代码规范/模式/架构/调用链/数据流/...)
22
+ * ├─ candidates/ 候选知识(待审批)
23
+ * ├─ skills/ Project Skills(冷启动自动生成 + 手动创建)
22
24
  * └─ README.md
23
25
  *
24
26
  * .autosnippet/ (运行时缓存,gitignored)
25
- * ├─ config.json 项目配置
27
+ * ├─ config.json 项目配置(含 core.subRepoDir 子仓库路径)
26
28
  * ├─ autosnippet.db SQLite 运行时缓存(从子仓库同步 + candidates/snippets/audit)
27
29
  * ├─ context/ 向量索引缓存
28
30
  * └─ logs/ 运行日志
@@ -42,9 +44,10 @@
42
44
  * 子仓库 git 权限只是"一种能力(capability)",最终裁决权在 Constitution YAML。
43
45
  */
44
46
  import { execSync } from 'node:child_process';
45
- import { copyFileSync, existsSync, mkdirSync, readdirSync, writeFileSync } from 'node:fs';
47
+ import { copyFileSync, cpSync, existsSync, mkdirSync, readdirSync, renameSync, rmdirSync, rmSync, writeFileSync, } from 'node:fs';
46
48
  import { join, resolve } from 'node:path';
47
49
  import { isAutoSnippetDevRepo } from '../shared/isOwnDevRepo.js';
50
+ import { DEFAULT_KNOWLEDGE_BASE_DIR, DEFAULT_SUB_REPO_DIR, isGitRepo, } from '../shared/ProjectMarkers.js';
48
51
  import { PACKAGE_ROOT } from '../shared/package-root.js';
49
52
  import { FileDeployer } from './deploy/FileDeployer.js';
50
53
  /** AutoSnippet 源码仓库根目录(定位 templates/ 等资源) */
@@ -62,14 +65,22 @@ export class SetupService {
62
65
  runtimeDir;
63
66
  seed;
64
67
  skillsDir;
68
+ /** 子仓库相对路径(相对于 projectRoot),如 'AutoSnippet/recipes' */
69
+ subRepoDir;
70
+ /** 子仓库绝对路径 */
71
+ subRepoPath;
72
+ /** 子仓库远程仓库 URL(为空则 recipes/ 作为普通目录随主仓库提交) */
73
+ subRepoUrl;
65
74
  /**
66
- * @param {{ projectRoot: string, force?: boolean }} options
75
+ * @param {{ projectRoot: string, force?: boolean, seed?: boolean, subRepoDir?: string, subRepoUrl?: string }} options
67
76
  */
68
77
  constructor(options) {
69
78
  this.projectRoot = resolve(options.projectRoot);
70
79
  this.projectName = this.projectRoot.split('/').pop() || '';
71
80
  this.force = options.force || false;
72
81
  this.seed = options.seed || false;
82
+ this.subRepoDir = options.subRepoDir || DEFAULT_SUB_REPO_DIR;
83
+ this.subRepoUrl = options.subRepoUrl;
73
84
  // ── 开发仓库保护 ──────────────────────────────────
74
85
  if (isAutoSnippetDevRepo(this.projectRoot)) {
75
86
  throw new Error('[SetupService] 检测到当前目录是 AutoSnippet 源码开发仓库,' +
@@ -79,20 +90,23 @@ export class SetupService {
79
90
  // 运行时目录(gitignored)
80
91
  this.runtimeDir = join(this.projectRoot, '.autosnippet');
81
92
  this.dbPath = join(this.runtimeDir, 'autosnippet.db');
82
- // 核心数据目录(子仓库)
83
- this.coreDir = join(this.projectRoot, 'AutoSnippet');
93
+ // 知识库根目录
94
+ this.coreDir = join(this.projectRoot, DEFAULT_KNOWLEDGE_BASE_DIR);
84
95
  this.recipesDir = join(this.coreDir, 'recipes');
85
96
  this.candidatesDir = join(this.coreDir, 'candidates');
86
97
  this.skillsDir = join(this.coreDir, 'skills');
98
+ // 子仓库绝对路径
99
+ this.subRepoPath = join(this.projectRoot, this.subRepoDir);
87
100
  }
88
101
  /* ═══ 公共入口 ═══════════════════════════════════════ */
89
102
  getSteps() {
90
103
  return [
91
104
  { label: '创建运行时目录与配置', fn: () => this.stepRuntime() },
92
- { label: '初始化核心数据子仓库', fn: () => this.stepCoreRepo() },
105
+ { label: '初始化知识库与 recipes 子仓库', fn: () => this.stepCoreRepo() },
93
106
  { label: '配置 IDE 集成', fn: () => this.stepIDE() },
94
107
  { label: '初始化数据库', fn: () => this.stepDatabase() },
95
108
  { label: '平台相关初始化', fn: () => this.stepPlatform() },
109
+ { label: '初始化向量索引', fn: () => this.stepVectorIndex() },
96
110
  ];
97
111
  }
98
112
  async run() {
@@ -151,8 +165,10 @@ export class SetupService {
151
165
  projectName: this.projectName,
152
166
  database: this.dbPath,
153
167
  core: {
154
- dir: 'AutoSnippet',
155
- constitution: 'AutoSnippet/constitution.yaml',
168
+ dir: DEFAULT_KNOWLEDGE_BASE_DIR,
169
+ constitution: `${DEFAULT_KNOWLEDGE_BASE_DIR}/constitution.yaml`,
170
+ subRepoDir: this.subRepoDir,
171
+ ...(this.subRepoUrl ? { subRepoUrl: this.subRepoUrl } : {}),
156
172
  },
157
173
  ai: { provider: process.env.ASD_AI_PROVIDER || 'auto' },
158
174
  guard: { enabled: true },
@@ -168,20 +184,35 @@ export class SetupService {
168
184
  this._ensureEnvFile();
169
185
  return { created: 'runtime' };
170
186
  }
171
- /* ═══ Step 2: 核心数据子仓库 ═════════════════════════ */
187
+ /* ═══ Step 2: 知识库目录 + recipes 子仓库 ═════════════ */
172
188
  stepCoreRepo() {
173
- const coreGit = join(this.coreDir, '.git');
174
- const alreadyRepo = existsSync(coreGit);
189
+ const alreadyRepo = isGitRepo(this.subRepoPath);
175
190
  // 创建目录结构
176
191
  for (const d of [this.coreDir, this.recipesDir, this.candidatesDir, this.skillsDir]) {
177
192
  mkdirSync(d, { recursive: true });
178
193
  }
179
- // 初始化 git(如果还不是 git 仓库)
180
- if (!alreadyRepo) {
181
- this._git(['init'], this.coreDir);
182
- }
183
- else {
194
+ // ── 子仓库处理:有 URL → clone 模式;无 URL → 普通目录 ──
195
+ if (this.subRepoUrl) {
196
+ if (alreadyRepo) {
197
+ // 幂等:已是 git 仓库,确保 remote 一致
198
+ this._ensureRemote(this.subRepoUrl);
199
+ }
200
+ else if (this._hasFiles(this.subRepoPath)) {
201
+ // 有文件但不是 git 仓库 → 备份 + clone + 合并
202
+ this._cloneWithMerge(this.subRepoUrl);
203
+ }
204
+ else {
205
+ // 空目录 → 直接 clone(先移除空目录,git clone 需要目标不存在)
206
+ try {
207
+ rmdirSync(this.subRepoPath);
208
+ }
209
+ catch {
210
+ /* 目录可能不存在或不为空,忽略 */
211
+ }
212
+ this._git(['clone', this.subRepoUrl, this.subRepoPath], this.projectRoot);
213
+ }
184
214
  }
215
+ // else: 无 URL → recipes/ 是普通目录,随主仓库提交,不执行 git init
185
216
  // constitution.yaml — 权限宪法
186
217
  this._writeConstitution();
187
218
  // boxspec.json — 项目规格
@@ -194,17 +225,32 @@ export class SetupService {
194
225
  }
195
226
  // README.md
196
227
  this._writeCoreReadme();
197
- // .gitignore(子仓库自身)
198
- const giPath = join(this.coreDir, '.gitignore');
199
- if (!existsSync(giPath)) {
200
- writeFileSync(giPath, '.DS_Store\n*.swp\n');
228
+ // .gitignore(子仓库自身,仅在有 URL 即子仓库模式时写入)
229
+ if (this.subRepoUrl) {
230
+ const giPath = join(this.subRepoPath, '.gitignore');
231
+ if (!existsSync(giPath)) {
232
+ writeFileSync(giPath, '.DS_Store\n*.swp\n');
233
+ }
201
234
  }
202
- // 初始提交
203
- if (!alreadyRepo) {
204
- this._git(['add', '.'], this.coreDir);
205
- this._git(['commit', '-m', 'Init AutoSnippet knowledge base'], this.coreDir);
235
+ // clone 后可能写入了模板文件,提交它们(仅新 clone 时)
236
+ if (this.subRepoUrl && !alreadyRepo && isGitRepo(this.subRepoPath)) {
237
+ try {
238
+ const status = this._git(['status', '--porcelain'], this.subRepoPath);
239
+ if (status.trim().length > 0) {
240
+ this._git(['add', '.'], this.subRepoPath);
241
+ this._git(['commit', '-m', 'Add AutoSnippet template files'], this.subRepoPath);
242
+ }
243
+ }
244
+ catch {
245
+ /* clone 的空仓库首次 commit 可能无变更,忽略 */
246
+ }
206
247
  }
207
- return { coreInit: true, alreadyRepo };
248
+ return {
249
+ coreInit: true,
250
+ alreadyRepo,
251
+ subRepoPath: this.subRepoDir,
252
+ hasUrl: Boolean(this.subRepoUrl),
253
+ };
208
254
  }
209
255
  /** @private 写入 constitution.yaml(优先从模板复制) */
210
256
  _writeConstitution() {
@@ -224,7 +270,7 @@ export class SetupService {
224
270
  '',
225
271
  'capabilities:',
226
272
  ' git_write:',
227
- ' description: "子仓库 git push 权限"',
273
+ ' description: "recipes 子仓库 git push 权限"',
228
274
  ' probe: "git push --dry-run"',
229
275
  ' no_subrepo: "allow"',
230
276
  ' no_remote: "allow"',
@@ -245,6 +291,12 @@ export class SetupService {
245
291
  ' name: "Developer"',
246
292
  ' permissions: ["*"]',
247
293
  ' requires_capability: ["git_write"]',
294
+ ' - id: "contributor"',
295
+ ' name: "Contributor"',
296
+ ' permissions: ["read:recipes", "read:candidates", "read:guard_rules", "read:audit_logs:self"]',
297
+ ' - id: "visitor"',
298
+ ' name: "Visitor"',
299
+ ' permissions: ["read:recipes", "read:guard_rules"]',
248
300
  ' - id: "external_agent"',
249
301
  ' name: "External Agent"',
250
302
  ' permissions: ["read:recipes", "read:guard_rules", "create:candidates", "submit:knowledge"]',
@@ -266,8 +318,9 @@ export class SetupService {
266
318
  schemaVersion: 2,
267
319
  kind: 'root',
268
320
  root: true,
269
- knowledgeBase: { dir: 'AutoSnippet' },
270
- module: { rootDir: 'AutoSnippet' },
321
+ knowledgeBase: { dir: DEFAULT_KNOWLEDGE_BASE_DIR },
322
+ subRepo: { dir: this.subRepoDir },
323
+ module: { rootDir: DEFAULT_KNOWLEDGE_BASE_DIR },
271
324
  }, null, 2));
272
325
  }
273
326
  /** @private 复制 _template.md 到 recipes/ */
@@ -317,7 +370,7 @@ export class SetupService {
317
370
  writeFileSync(dest, [
318
371
  `# ${this.projectName} — AutoSnippet Knowledge Base`,
319
372
  '',
320
- '此目录是项目的 **核心知识库**,通过 Git 子仓库管理,同时承载数据存储与权限控制。',
373
+ '此目录是项目的 **核心知识库**,`recipes/` 目录存放核心知识数据。',
321
374
  '',
322
375
  '## 目录结构',
323
376
  '',
@@ -325,11 +378,15 @@ export class SetupService {
325
378
  'AutoSnippet/',
326
379
  '├── constitution.yaml 权限宪法(角色 + 权限 + 治理规则 + 能力探测)',
327
380
  '├── boxspec.json 项目规格',
328
- '├── recipes/ 统一知识实体(Markdown + YAML front-matter)',
381
+ ...(this.subRepoUrl
382
+ ? [
383
+ '├── recipes/ ★ 独立 Git 子仓库 — 统一知识实体(Source of Truth)',
384
+ '│ ├── .git/ 独立 git 仓库',
385
+ ]
386
+ : ['├── recipes/ ★ 知识目录 — 统一知识实体(Source of Truth)']),
329
387
  '│ ├── _template.md 格式参考',
330
- '│ ├── naming-rules.md 代码规范示例',
331
- '│ ├── mvvm-arch.md 架构模式示例',
332
388
  '│ └── ... 代码模式/调用链/数据流/约束/风格/...',
389
+ '├── candidates/ 候选知识(待审批)',
333
390
  '├── skills/ Project Skills(冷启动自动生成 + 手动创建)',
334
391
  '│ └── <name>/SKILL.md AI Agent 知识增强文档',
335
392
  '└── README.md',
@@ -360,27 +417,38 @@ export class SetupService {
360
417
  '',
361
418
  '| 层级 | 机制 | 职责 |',
362
419
  '|------|------|------|',
363
- '| ① 能力层 | `git push --dry-run` | 探测子仓库物理写权限 |',
420
+ '| ① 能力层 | `git push --dry-run` | 探测 recipes 子仓库物理写权限 |',
364
421
  '| ② 角色层 | `constitution.yaml` roles | 角色权限矩阵 (action:resource) |',
365
422
  '| ③ 治理层 | `constitution.yaml` priorities | 业务规则引擎 |',
366
423
  '',
367
424
  'git 权限只是"能力信号",**最终裁决权在 Constitution YAML**。',
368
425
  '',
369
- '## 团队使用',
370
- '',
371
- '```bash',
372
- '# 方式 1: 添加远程仓库',
373
- 'cd AutoSnippet',
374
- 'git remote add origin <your-repo-url>',
375
- '',
376
- '# 方式 2: 使用 git submodule(推荐)',
377
- 'cd ..',
378
- 'rm -rf AutoSnippet',
379
- 'git submodule add <your-repo-url> AutoSnippet',
380
- '```',
426
+ ...(this.subRepoUrl
427
+ ? [
428
+ '## 团队协作',
429
+ '',
430
+ '团队成员克隆主仓库后,需额外获取 recipes 子仓库:',
431
+ '',
432
+ '```bash',
433
+ '# 方式 A:git submodule(推荐,自动关联)',
434
+ `git submodule add ${this.subRepoUrl} ${this.subRepoDir}`,
435
+ '',
436
+ '# 方式 B:独立 clone',
437
+ `git clone ${this.subRepoUrl} ${this.subRepoDir}`,
438
+ '```',
439
+ ]
440
+ : [
441
+ '## Recipes 知识库',
442
+ '',
443
+ '`recipes/` 目录随主仓库提交。如需独立管理(团队权限控制),运行:',
444
+ '',
445
+ '```bash',
446
+ 'asd remote <your-recipes-repo-url>',
447
+ '```',
448
+ ]),
381
449
  '',
382
450
  '> 运行时缓存(DB 索引、Candidates、Snippets、审计日志)在 `.autosnippet/autosnippet.db`。',
383
- '> **核心数据的唯一真实来源是此目录中的文件**,DB 仅做缓存。修改 Recipe/Guard 规则必须通过 git。',
451
+ '> **核心数据的唯一真实来源是 `recipes/` 目录中的文件**,DB 仅做缓存。',
384
452
  '',
385
453
  ].join('\n'));
386
454
  }
@@ -505,6 +573,126 @@ export class SetupService {
505
573
  throw e;
506
574
  }
507
575
  }
576
+ /** @private 检查目录中是否有文件(排除 . 和 ..) */
577
+ _hasFiles(dirPath) {
578
+ try {
579
+ const entries = readdirSync(dirPath);
580
+ return entries.length > 0;
581
+ }
582
+ catch {
583
+ return false;
584
+ }
585
+ }
586
+ /** @private 确保子仓库的 remote origin 与给定 URL 一致 */
587
+ _ensureRemote(url) {
588
+ try {
589
+ const currentUrl = this._git(['remote', 'get-url', 'origin'], this.subRepoPath);
590
+ if (currentUrl !== url) {
591
+ this._git(['remote', 'set-url', 'origin', url], this.subRepoPath);
592
+ }
593
+ }
594
+ catch {
595
+ // 没有 origin remote → 添加
596
+ this._git(['remote', 'add', 'origin', url], this.subRepoPath);
597
+ }
598
+ }
599
+ /**
600
+ * @private 备份已有文件 → clone → 合并回来(不覆盖远端文件)
601
+ * 适用于 recipes/ 有模板文件但还不是 git 仓库的场景
602
+ */
603
+ _cloneWithMerge(url) {
604
+ const backupDir = `${this.subRepoPath}-backup-${Date.now()}`;
605
+ // 1. 备份
606
+ renameSync(this.subRepoPath, backupDir);
607
+ // 2. clone
608
+ try {
609
+ this._git(['clone', url, this.subRepoPath], this.projectRoot);
610
+ }
611
+ catch (err) {
612
+ // clone 失败 → 恢复备份
613
+ try {
614
+ renameSync(backupDir, this.subRepoPath);
615
+ }
616
+ catch {
617
+ /* 尽力恢复 */
618
+ }
619
+ throw err;
620
+ }
621
+ // 3. 合并备份文件到 clone 结果(不覆盖已有文件)
622
+ try {
623
+ const files = readdirSync(backupDir);
624
+ for (const file of files) {
625
+ const dest = join(this.subRepoPath, file);
626
+ if (!existsSync(dest)) {
627
+ cpSync(join(backupDir, file), dest, { recursive: true });
628
+ }
629
+ }
630
+ }
631
+ catch {
632
+ /* 合并阶段出错不影响 clone 结果 */
633
+ }
634
+ // 4. 清理备份
635
+ try {
636
+ rmSync(backupDir, { recursive: true, force: true });
637
+ }
638
+ catch {
639
+ /* 清理失败不影响主流程 */
640
+ }
641
+ }
642
+ /* ═══ Step 6: 向量索引初始化 ═══════════════════════════ */
643
+ /**
644
+ * 尝试初始化向量索引: 检查 embedding provider 可用性,
645
+ * 若可用则自动构建初始索引;否则提示用户手动运行 asd embed。
646
+ *
647
+ * 此步骤为 best-effort: 失败不阻塞 setup 流程。
648
+ */
649
+ async stepVectorIndex() {
650
+ try {
651
+ const { getServiceContainer } = await import('../injection/ServiceContainer.js');
652
+ const container = getServiceContainer();
653
+ // 检查 VectorService 是否已注册
654
+ if (!container.services.vectorService) {
655
+ return {
656
+ status: 'skipped',
657
+ reason: 'vectorService 未注册(AI Provider 未配置或容器未完全初始化)',
658
+ hint: '运行 `asd embed` 构建语义向量索引',
659
+ };
660
+ }
661
+ const vectorService = container.get('vectorService');
662
+ const stats = await vectorService.getStats();
663
+ // 如果 embedding provider 不可用,提示用户
664
+ if (!stats.embedProviderAvailable) {
665
+ return {
666
+ status: 'skipped',
667
+ reason: '未配置 AI API Key',
668
+ hint: '配置 API Key 后运行 `asd embed` 启用语义搜索',
669
+ };
670
+ }
671
+ // 如果索引已有数据,跳过
672
+ if (stats.count > 0 && !this.force) {
673
+ return {
674
+ status: 'skipped',
675
+ reason: `向量索引已存在 (${stats.count} entries)`,
676
+ };
677
+ }
678
+ // 构建初始索引
679
+ const result = await vectorService.fullBuild({ force: this.force });
680
+ return {
681
+ status: 'done',
682
+ indexed: result.upserted ?? 0,
683
+ skipped: result.skipped ?? 0,
684
+ errors: result.errors ?? 0,
685
+ };
686
+ }
687
+ catch (err) {
688
+ // 向量初始化失败不阻塞 setup 流程
689
+ return {
690
+ status: 'warning',
691
+ error: err instanceof Error ? err.message : String(err),
692
+ hint: '运行 `asd embed` 手动构建向量索引',
693
+ };
694
+ }
695
+ }
508
696
  }
509
697
  export default SetupService;
510
698
  //# sourceMappingURL=SetupService.js.map