autosnippet 3.2.21 → 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 (311) 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 +59 -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 +55 -1
  153. package/dist/lib/service/guard/GuardCheckEngine.js +508 -15
  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/config.d.ts +4 -1
  202. package/dist/lib/shared/schemas/config.js +8 -1
  203. package/dist/lib/shared/schemas/mcp-tools.d.ts +41 -96
  204. package/dist/lib/shared/schemas/mcp-tools.js +59 -119
  205. package/dist/scripts/analyze-signals.d.ts +20 -0
  206. package/dist/scripts/analyze-signals.js +155 -0
  207. package/dist/scripts/diagnose-mcp.js +1 -1
  208. package/dist/scripts/release.js +2 -10
  209. package/package.json +4 -19
  210. package/skills/autosnippet-devdocs/SKILL.md +11 -8
  211. package/templates/claude-code/hooks/autosnippet-session.sh +10 -15
  212. package/templates/cursor-hooks/hooks/session-start.sh +1 -1
  213. package/templates/instructions/agent-static.md +2 -1
  214. package/templates/instructions/conventions.md +5 -6
  215. package/templates/recipes-setup/README.md +1 -2
  216. package/dashboard/dist/assets/icons-C1dUryS-.js +0 -1
  217. package/dashboard/dist/assets/index-D0whuycy.css +0 -1
  218. package/dashboard/dist/assets/index-DdvZE4Yd.js +0 -128
  219. package/dist/lib/domain/task/Task.d.ts +0 -140
  220. package/dist/lib/domain/task/Task.js +0 -254
  221. package/dist/lib/domain/task/TaskDependency.d.ts +0 -23
  222. package/dist/lib/domain/task/TaskDependency.js +0 -34
  223. package/dist/lib/domain/task/TaskIdGenerator.d.ts +0 -40
  224. package/dist/lib/domain/task/TaskIdGenerator.js +0 -75
  225. package/dist/lib/domain/task/index.d.ts +0 -4
  226. package/dist/lib/domain/task/index.js +0 -4
  227. package/dist/lib/http/routes/snippets.js +0 -49
  228. package/dist/lib/infrastructure/database/migrations/002_add_tasks.d.ts +0 -11
  229. package/dist/lib/infrastructure/database/migrations/002_add_tasks.js +0 -86
  230. package/dist/lib/platform/ClipboardManager.d.ts +0 -24
  231. package/dist/lib/platform/ClipboardManager.js +0 -142
  232. package/dist/lib/platform/NativeUi.d.ts +0 -53
  233. package/dist/lib/platform/NativeUi.js +0 -284
  234. package/dist/lib/platform/ios/index.d.ts +0 -38
  235. package/dist/lib/platform/ios/index.js +0 -42
  236. package/dist/lib/platform/ios/routes/spm.d.ts +0 -9
  237. package/dist/lib/platform/ios/routes/spm.js +0 -371
  238. package/dist/lib/platform/ios/snippet/PlaceholderConverter.d.ts +0 -21
  239. package/dist/lib/platform/ios/snippet/PlaceholderConverter.js +0 -48
  240. package/dist/lib/platform/ios/snippet/XcodeCodec.d.ts +0 -23
  241. package/dist/lib/platform/ios/snippet/XcodeCodec.js +0 -96
  242. package/dist/lib/platform/ios/spm/DependencyGraph.d.ts +0 -56
  243. package/dist/lib/platform/ios/spm/DependencyGraph.js +0 -195
  244. package/dist/lib/platform/ios/spm/PackageSwiftParser.d.ts +0 -69
  245. package/dist/lib/platform/ios/spm/PackageSwiftParser.js +0 -231
  246. package/dist/lib/platform/ios/spm/PathFinder.d.ts +0 -28
  247. package/dist/lib/platform/ios/spm/PathFinder.js +0 -117
  248. package/dist/lib/platform/ios/spm/PolicyEngine.d.ts +0 -44
  249. package/dist/lib/platform/ios/spm/PolicyEngine.js +0 -79
  250. package/dist/lib/platform/ios/spm/SpmHelper.d.ts +0 -102
  251. package/dist/lib/platform/ios/spm/SpmHelper.js +0 -464
  252. package/dist/lib/platform/ios/xcode/HeaderResolver.d.ts +0 -33
  253. package/dist/lib/platform/ios/xcode/HeaderResolver.js +0 -90
  254. package/dist/lib/platform/ios/xcode/SaveEventFilter.d.ts +0 -66
  255. package/dist/lib/platform/ios/xcode/SaveEventFilter.js +0 -142
  256. package/dist/lib/platform/ios/xcode/XcodeAutomation.d.ts +0 -71
  257. package/dist/lib/platform/ios/xcode/XcodeAutomation.js +0 -327
  258. package/dist/lib/platform/ios/xcode/XcodeImportResolver.d.ts +0 -130
  259. package/dist/lib/platform/ios/xcode/XcodeImportResolver.js +0 -404
  260. package/dist/lib/platform/ios/xcode/XcodeIntegration.d.ts +0 -89
  261. package/dist/lib/platform/ios/xcode/XcodeIntegration.js +0 -588
  262. package/dist/lib/platform/ios/xcode/XcodeWriteUtils.d.ts +0 -99
  263. package/dist/lib/platform/ios/xcode/XcodeWriteUtils.js +0 -190
  264. package/dist/lib/repository/task/TaskRepository.impl.d.ts +0 -171
  265. package/dist/lib/repository/task/TaskRepository.impl.js +0 -347
  266. package/dist/lib/service/automation/ActionPipeline.d.ts +0 -34
  267. package/dist/lib/service/automation/ActionPipeline.js +0 -53
  268. package/dist/lib/service/automation/AutomationOrchestrator.d.ts +0 -86
  269. package/dist/lib/service/automation/AutomationOrchestrator.js +0 -57
  270. package/dist/lib/service/automation/ContextCollector.d.ts +0 -24
  271. package/dist/lib/service/automation/ContextCollector.js +0 -35
  272. package/dist/lib/service/automation/DirectiveDetector.d.ts +0 -51
  273. package/dist/lib/service/automation/DirectiveDetector.js +0 -112
  274. package/dist/lib/service/automation/FileWatcher.d.ts +0 -51
  275. package/dist/lib/service/automation/FileWatcher.js +0 -366
  276. package/dist/lib/service/automation/TriggerResolver.d.ts +0 -36
  277. package/dist/lib/service/automation/TriggerResolver.js +0 -62
  278. package/dist/lib/service/automation/handlers/AlinkHandler.d.ts +0 -7
  279. package/dist/lib/service/automation/handlers/AlinkHandler.js +0 -80
  280. package/dist/lib/service/automation/handlers/CreateHandler.d.ts +0 -11
  281. package/dist/lib/service/automation/handlers/CreateHandler.js +0 -170
  282. package/dist/lib/service/automation/handlers/GuardHandler.d.ts +0 -17
  283. package/dist/lib/service/automation/handlers/GuardHandler.js +0 -218
  284. package/dist/lib/service/automation/handlers/HeaderHandler.d.ts +0 -2
  285. package/dist/lib/service/automation/handlers/HeaderHandler.js +0 -32
  286. package/dist/lib/service/automation/handlers/SearchHandler.d.ts +0 -11
  287. package/dist/lib/service/automation/handlers/SearchHandler.js +0 -278
  288. package/dist/lib/service/snippet/SnippetFactory.d.ts +0 -101
  289. package/dist/lib/service/snippet/SnippetFactory.js +0 -145
  290. package/dist/lib/service/snippet/SnippetInstaller.d.ts +0 -91
  291. package/dist/lib/service/snippet/SnippetInstaller.js +0 -276
  292. package/dist/lib/service/snippet/codecs/SnippetCodec.d.ts +0 -44
  293. package/dist/lib/service/snippet/codecs/SnippetCodec.js +0 -35
  294. package/dist/lib/service/snippet/codecs/VSCodeCodec.d.ts +0 -27
  295. package/dist/lib/service/snippet/codecs/VSCodeCodec.js +0 -82
  296. package/dist/lib/service/task/TaskGraphService.d.ts +0 -222
  297. package/dist/lib/service/task/TaskGraphService.js +0 -597
  298. package/dist/lib/service/task/TaskKnowledgeBridge.d.ts +0 -95
  299. package/dist/lib/service/task/TaskKnowledgeBridge.js +0 -298
  300. package/dist/lib/service/task/TaskReadyEngine.d.ts +0 -84
  301. package/dist/lib/service/task/TaskReadyEngine.js +0 -115
  302. package/dist/scripts/build-native-ui.d.ts +0 -3
  303. package/dist/scripts/build-native-ui.js +0 -62
  304. package/dist/scripts/init-snippets.d.ts +0 -30
  305. package/dist/scripts/init-snippets.js +0 -298
  306. package/dist/scripts/install-full.d.ts +0 -7
  307. package/dist/scripts/install-full.js +0 -38
  308. package/resources/native-ui/README.md +0 -29
  309. package/resources/native-ui/combined-window.swift +0 -494
  310. package/resources/native-ui/main.swift +0 -598
  311. package/scripts/postinstall-safe.mjs +0 -89
@@ -1,276 +0,0 @@
1
- /**
2
- * SnippetInstaller — Codec 驱动的 Snippet 安装器
3
- *
4
- * 支持:
5
- * - Xcode: 每个 snippet 一个 .codesnippet 文件
6
- * - VSCode: 所有 snippets 合并为单个 .code-snippets JSON 文件
7
- *
8
- * 行为由注入的 SnippetCodec 决定。
9
- */
10
- import { existsSync, mkdirSync, readdirSync, readFileSync, unlinkSync, writeFileSync, } from 'node:fs';
11
- import { join } from 'node:path';
12
- export class SnippetInstaller {
13
- #codec;
14
- #snippetFactory;
15
- #snippetsDirOverride;
16
- /**
17
- * @param options.codec IDE codec
18
- * @param [options.snippetsDir] 覆盖 codec 默认目录
19
- */
20
- constructor(options = {}) {
21
- this.#codec = options.codec || null;
22
- this.#snippetFactory = options.snippetFactory || null;
23
- this.#snippetsDirOverride = options.snippetsDir || null;
24
- }
25
- /** codec ID ('xcode' | 'vscode') */
26
- get target() {
27
- return this.#codec?.id || 'unknown';
28
- }
29
- /** 当前安装目录 */
30
- get snippetsDir() {
31
- return this.#snippetsDirOverride || this.#codec?.getInstallDir(process.cwd()) || '';
32
- }
33
- setSnippetFactory(factory) {
34
- this.#snippetFactory = factory;
35
- }
36
- setCodec(codec) {
37
- this.#codec = codec;
38
- }
39
- // ─────────────── 安装 ───────────────
40
- /**
41
- * 安装单个 snippet spec
42
- * @param spec SnippetSpec
43
- * @param [projectRoot] VSCode 需要 projectRoot 确定 .vscode/ 路径
44
- * @returns }
45
- */
46
- install(spec, projectRoot) {
47
- this.#assertCodec();
48
- const codec = this.#codec;
49
- try {
50
- const dir = this.#resolveDir(projectRoot);
51
- this.#ensureDir(dir);
52
- const bundleFilename = codec.getBundleFilename();
53
- if (bundleFilename) {
54
- // Bundle 模式 (VSCode): merge into single JSON file
55
- return this.#installToBundle(spec, dir, bundleFilename);
56
- }
57
- // Per-file 模式 (Xcode): 每个 snippet 一个文件
58
- const content = codec.generate(spec);
59
- const filename = `${spec.identifier}${codec.fileExtension}`;
60
- const filePath = join(dir, filename);
61
- writeFileSync(filePath, content);
62
- return { success: true, path: filePath, message: `Installed: ${filename}` };
63
- }
64
- catch (error) {
65
- const message = error instanceof Error ? error.message : String(error);
66
- return { success: false, path: '', message };
67
- }
68
- }
69
- /**
70
- * 从 Recipe 批量安装
71
- * @returns }
72
- */
73
- installFromRecipes(recipes, projectRoot) {
74
- this.#assertCodec();
75
- this.#assertFactory();
76
- const codec = this.#codec;
77
- const factory = this.#snippetFactory;
78
- const dir = this.#resolveDir(projectRoot);
79
- this.#ensureDir(dir);
80
- const specs = recipes.map((r) => factory.fromRecipe(r));
81
- const bundleFilename = codec.getBundleFilename();
82
- if (bundleFilename) {
83
- // Bundle 模式: 一次性写入整个 bundle
84
- return this.#installBundleFromSpecs(specs, dir, bundleFilename, recipes.length);
85
- }
86
- // Per-file 模式
87
- const details = [];
88
- let successCount = 0;
89
- let errorCount = 0;
90
- for (const spec of specs) {
91
- const result = this.install(spec, projectRoot);
92
- details.push(result);
93
- if (result.success) {
94
- successCount++;
95
- }
96
- else {
97
- errorCount++;
98
- }
99
- }
100
- return { success: errorCount === 0, count: recipes.length, successCount, errorCount, details };
101
- }
102
- // ─────────────── 查询 ───────────────
103
- /**
104
- * 列出已安装的 AutoSnippet 管理的 snippet
105
- * @returns >}
106
- */
107
- listInstalled(projectRoot) {
108
- const dir = this.#resolveDir(projectRoot);
109
- if (!existsSync(dir)) {
110
- return [];
111
- }
112
- const bundleFilename = this.#codec?.getBundleFilename();
113
- if (bundleFilename) {
114
- // VSCode: 检查 bundle 文件是否存在
115
- const bundlePath = join(dir, bundleFilename);
116
- if (!existsSync(bundlePath)) {
117
- return [];
118
- }
119
- try {
120
- const content = JSON.parse(readFileSync(bundlePath, 'utf-8'));
121
- return Object.keys(content).map((key) => ({
122
- filename: key,
123
- path: bundlePath,
124
- }));
125
- }
126
- catch {
127
- return [];
128
- }
129
- }
130
- // Xcode: 列出 com.autosnippet.*.codesnippet 文件
131
- return readdirSync(dir)
132
- .filter((f) => f.startsWith('com.autosnippet.') &&
133
- f.endsWith(this.#codec?.fileExtension || '.codesnippet'))
134
- .map((f) => ({ filename: f, path: join(dir, f) }));
135
- }
136
- // ─────────────── 卸载 ───────────────
137
- /**
138
- * 卸载指定 snippet
139
- * @returns }
140
- */
141
- uninstall(identifier, projectRoot) {
142
- const dir = this.#resolveDir(projectRoot);
143
- const bundleFilename = this.#codec?.getBundleFilename();
144
- if (bundleFilename) {
145
- // VSCode: 从 bundle JSON 中移除对应 key
146
- return this.#removeFromBundle(identifier, dir, bundleFilename);
147
- }
148
- // Xcode: 删除单个文件
149
- const ext = this.#codec?.fileExtension || '.codesnippet';
150
- const filename = identifier.endsWith(ext) ? identifier : `${identifier}${ext}`;
151
- const filePath = join(dir, filename);
152
- if (!existsSync(filePath)) {
153
- return { success: false, message: `Not found: ${filename}` };
154
- }
155
- unlinkSync(filePath);
156
- return { success: true, message: `Uninstalled: ${filename}` };
157
- }
158
- /**
159
- * 清除所有 AutoSnippet 管理的 snippet
160
- * @returns }
161
- */
162
- cleanAll(projectRoot) {
163
- const dir = this.#resolveDir(projectRoot);
164
- const bundleFilename = this.#codec?.getBundleFilename();
165
- if (bundleFilename) {
166
- // VSCode: 删除整个 bundle 文件
167
- const bundlePath = join(dir, bundleFilename);
168
- if (existsSync(bundlePath)) {
169
- unlinkSync(bundlePath);
170
- return { success: true, removed: 1 };
171
- }
172
- return { success: true, removed: 0 };
173
- }
174
- // Xcode: 删除所有 com.autosnippet.* 文件
175
- const installed = this.listInstalled(projectRoot);
176
- let removed = 0;
177
- for (const { path: filePath } of installed) {
178
- try {
179
- unlinkSync(filePath);
180
- removed++;
181
- }
182
- catch {
183
- /* ignore */
184
- }
185
- }
186
- return { success: true, removed };
187
- }
188
- // ─────────────── Private ───────────────
189
- #assertCodec() {
190
- if (!this.#codec) {
191
- throw new Error('SnippetCodec not set');
192
- }
193
- }
194
- #assertFactory() {
195
- if (!this.#snippetFactory) {
196
- throw new Error('SnippetFactory not set');
197
- }
198
- }
199
- #resolveDir(projectRoot) {
200
- if (this.#snippetsDirOverride) {
201
- return this.#snippetsDirOverride;
202
- }
203
- return this.#codec?.getInstallDir(projectRoot || process.cwd()) || '';
204
- }
205
- #ensureDir(dir) {
206
- if (!existsSync(dir)) {
207
- mkdirSync(dir, { recursive: true });
208
- }
209
- }
210
- /** VSCode bundle: 将单个 spec 追加/更新到 bundle JSON */
211
- #installToBundle(spec, dir, bundleFilename) {
212
- const bundlePath = join(dir, bundleFilename);
213
- let bundle = {};
214
- if (existsSync(bundlePath)) {
215
- try {
216
- bundle = JSON.parse(readFileSync(bundlePath, 'utf-8'));
217
- }
218
- catch {
219
- bundle = {};
220
- }
221
- }
222
- const key = `Recipe: ${spec.title || spec.identifier}`;
223
- const content = JSON.parse(this.#codec.generate(spec));
224
- const entryKey = Object.keys(content)[0];
225
- bundle[key] = content[entryKey];
226
- writeFileSync(bundlePath, `${JSON.stringify(bundle, null, 2)}\n`);
227
- return { success: true, path: bundlePath, message: `Installed: ${key}` };
228
- }
229
- /** VSCode bundle: 一次性写入完整 bundle */
230
- #installBundleFromSpecs(specs, dir, bundleFilename, totalCount) {
231
- try {
232
- const content = this.#codec.generateBundle(specs);
233
- const bundlePath = join(dir, bundleFilename);
234
- writeFileSync(bundlePath, typeof content === 'string' ? content : JSON.stringify(content, null, 2));
235
- return {
236
- success: true,
237
- count: totalCount,
238
- successCount: totalCount,
239
- errorCount: 0,
240
- details: [{ success: true, path: bundlePath, message: `Bundle: ${totalCount} snippets` }],
241
- };
242
- }
243
- catch (error) {
244
- const message = error instanceof Error ? error.message : String(error);
245
- return {
246
- success: false,
247
- count: totalCount,
248
- successCount: 0,
249
- errorCount: totalCount,
250
- details: [{ success: false, path: '', message }],
251
- };
252
- }
253
- }
254
- /** VSCode bundle: 从 JSON 中移除一个 snippet */
255
- #removeFromBundle(identifier, dir, bundleFilename) {
256
- const bundlePath = join(dir, bundleFilename);
257
- if (!existsSync(bundlePath)) {
258
- return { success: false, message: `Bundle not found: ${bundleFilename}` };
259
- }
260
- try {
261
- const bundle = JSON.parse(readFileSync(bundlePath, 'utf-8'));
262
- // 按 identifier 或 title 匹配
263
- const keyToRemove = Object.keys(bundle).find((k) => k.includes(identifier) || k === `Recipe: ${identifier}`);
264
- if (!keyToRemove) {
265
- return { success: false, message: `Snippet not found in bundle: ${identifier}` };
266
- }
267
- delete bundle[keyToRemove];
268
- writeFileSync(bundlePath, `${JSON.stringify(bundle, null, 2)}\n`);
269
- return { success: true, message: `Uninstalled: ${keyToRemove}` };
270
- }
271
- catch (error) {
272
- const message = error instanceof Error ? error.message : String(error);
273
- return { success: false, message };
274
- }
275
- }
276
- }
@@ -1,44 +0,0 @@
1
- /**
2
- * SnippetCodec — IDE Snippet 格式抽象接口
3
- *
4
- * 子类实现:
5
- * - XcodeCodec (.codesnippet plist XML)
6
- * - VSCodeCodec (.code-snippets JSON, 兼容 Cursor)
7
- *
8
- * SnippetSpec 结构 (IDE 无关中间表示):
9
- * { identifier, title, completion, summary, code, language }
10
- */
11
- export interface SnippetSpec {
12
- identifier: string;
13
- title?: string;
14
- completion?: string;
15
- trigger?: string;
16
- summary?: string;
17
- code?: string | string[];
18
- language?: string;
19
- [key: string]: unknown;
20
- }
21
- export declare class SnippetCodec {
22
- /** @returns codec 标识 ('xcode' | 'vscode') */
23
- get id(): string;
24
- /** 输出文件的扩展名 ('.codesnippet' | '.code-snippets') */
25
- get fileExtension(): string;
26
- /** 单个 SnippetSpec → IDE 格式字符串 */
27
- generate(spec: SnippetSpec): string;
28
- /**
29
- * 批量 specs → IDE 格式输出
30
- * Xcode: 返回 Array<{ filename, content }>(每个 snippet 一个文件)
31
- * VSCode: 返回 string(单个 JSON bundle 文件内容)
32
- * @returns >}
33
- */
34
- generateBundle(specs: SnippetSpec[]): string | Array<{
35
- filename: string;
36
- content: string;
37
- }>;
38
- /** 目标 snippet 安装目录路径 */
39
- getInstallDir(projectRoot?: string): string;
40
- /** AutoSnippet 语言标识 → IDE 语言标识映射 */
41
- mapLanguage(lang: string): string;
42
- /** 获取 bundle 文件名 (VSCode = 'autosnippet.code-snippets', Xcode = per-file) */
43
- getBundleFilename(): string | null;
44
- }
@@ -1,35 +0,0 @@
1
- export class SnippetCodec {
2
- /** @returns codec 标识 ('xcode' | 'vscode') */
3
- get id() {
4
- throw new Error('SnippetCodec.id is abstract');
5
- }
6
- /** 输出文件的扩展名 ('.codesnippet' | '.code-snippets') */
7
- get fileExtension() {
8
- throw new Error('SnippetCodec.fileExtension is abstract');
9
- }
10
- /** 单个 SnippetSpec → IDE 格式字符串 */
11
- generate(spec) {
12
- throw new Error('SnippetCodec.generate() is abstract');
13
- }
14
- /**
15
- * 批量 specs → IDE 格式输出
16
- * Xcode: 返回 Array<{ filename, content }>(每个 snippet 一个文件)
17
- * VSCode: 返回 string(单个 JSON bundle 文件内容)
18
- * @returns >}
19
- */
20
- generateBundle(specs) {
21
- throw new Error('SnippetCodec.generateBundle() is abstract');
22
- }
23
- /** 目标 snippet 安装目录路径 */
24
- getInstallDir(projectRoot) {
25
- throw new Error('SnippetCodec.getInstallDir() is abstract');
26
- }
27
- /** AutoSnippet 语言标识 → IDE 语言标识映射 */
28
- mapLanguage(lang) {
29
- throw new Error('SnippetCodec.mapLanguage() is abstract');
30
- }
31
- /** 获取 bundle 文件名 (VSCode = 'autosnippet.code-snippets', Xcode = per-file) */
32
- getBundleFilename() {
33
- return null;
34
- }
35
- }
@@ -1,27 +0,0 @@
1
- /**
2
- * VSCodeCodec — VSCode .code-snippets (JSON) 生成器
3
- *
4
- * 特性:
5
- * - 项目级 .vscode/autosnippet.code-snippets 单 bundle 文件
6
- * - 兼容 Cursor (100% VSCode snippet 格式)
7
- * - Xcode 占位符 <#…#> 自动转换为 VSCode ${N:…}
8
- * - 多语言 scope 自动映射
9
- */
10
- import type { SnippetSpec } from './SnippetCodec.js';
11
- import { SnippetCodec } from './SnippetCodec.js';
12
- export declare class VSCodeCodec extends SnippetCodec {
13
- #private;
14
- get id(): string;
15
- get fileExtension(): string;
16
- /** 单个 SnippetSpec → JSON 字符串 */
17
- generate(spec: SnippetSpec): string;
18
- /**
19
- * VSCode: 所有 snippets 合并为单个 JSON bundle 文件
20
- * @returns JSON 字符串
21
- */
22
- generateBundle(specs: SnippetSpec[]): string;
23
- /** VSCode snippets 安装目录 = 项目级 .vscode/ */
24
- getInstallDir(projectRoot: string): string;
25
- mapLanguage(lang: string): string;
26
- getBundleFilename(): string;
27
- }
@@ -1,82 +0,0 @@
1
- /**
2
- * VSCodeCodec — VSCode .code-snippets (JSON) 生成器
3
- *
4
- * 特性:
5
- * - 项目级 .vscode/autosnippet.code-snippets 单 bundle 文件
6
- * - 兼容 Cursor (100% VSCode snippet 格式)
7
- * - Xcode 占位符 <#…#> 自动转换为 VSCode ${N:…}
8
- * - 多语言 scope 自动映射
9
- */
10
- import { join } from 'node:path';
11
- import { PlaceholderConverter } from '#platform/ios/snippet/PlaceholderConverter.js';
12
- import { SnippetCodec } from './SnippetCodec.js';
13
- /** AutoSnippet language → VSCode snippet scope */
14
- const VSCODE_LANGUAGE_MAP = {
15
- swift: 'swift',
16
- 'objective-c': 'objective-c',
17
- objc: 'objective-c',
18
- c: 'c',
19
- 'c++': 'cpp',
20
- go: 'go',
21
- python: 'python',
22
- java: 'java',
23
- kotlin: 'kotlin',
24
- javascript: 'javascript,javascriptreact',
25
- typescript: 'typescript,typescriptreact',
26
- rust: 'rust',
27
- ruby: 'ruby',
28
- };
29
- const BUNDLE_FILENAME = 'autosnippet.code-snippets';
30
- export class VSCodeCodec extends SnippetCodec {
31
- get id() {
32
- return 'vscode';
33
- }
34
- get fileExtension() {
35
- return '.code-snippets';
36
- }
37
- /** 单个 SnippetSpec → JSON 字符串 */
38
- generate(spec) {
39
- const entry = this.#specToEntry(spec);
40
- return JSON.stringify({ [spec.title || spec.identifier]: entry }, null, 2);
41
- }
42
- /**
43
- * VSCode: 所有 snippets 合并为单个 JSON bundle 文件
44
- * @returns JSON 字符串
45
- */
46
- generateBundle(specs) {
47
- const bundle = {};
48
- for (const spec of specs) {
49
- const key = `Recipe: ${spec.title || spec.identifier}`;
50
- bundle[key] = this.#specToEntry(spec);
51
- }
52
- return `${JSON.stringify(bundle, null, 2)}\n`;
53
- }
54
- /** VSCode snippets 安装目录 = 项目级 .vscode/ */
55
- getInstallDir(projectRoot) {
56
- return join(projectRoot, '.vscode');
57
- }
58
- mapLanguage(lang) {
59
- return VSCODE_LANGUAGE_MAP[lang?.toLowerCase()] || '';
60
- }
61
- getBundleFilename() {
62
- return BUNDLE_FILENAME;
63
- }
64
- /** SnippetSpec → VSCode snippet entry */
65
- #specToEntry(spec) {
66
- const code = Array.isArray(spec.code) ? spec.code.join('\n') : spec.code || '';
67
- // 自动将 Xcode 占位符转为 VSCode 格式
68
- const converted = PlaceholderConverter.xcodeToVSCode(code);
69
- const body = converted.split('\n');
70
- const entry = {
71
- prefix: spec.completion || spec.trigger || spec.identifier,
72
- body,
73
- description: spec.summary || '',
74
- };
75
- // 添加语言 scope (空字符串 = 所有语言)
76
- const scope = this.mapLanguage(spec.language || '');
77
- if (scope) {
78
- entry.scope = scope;
79
- }
80
- return entry;
81
- }
82
- }
@@ -1,222 +0,0 @@
1
- import { Task } from '../../domain/task/Task.js';
2
- import Logger from '../../infrastructure/logging/Logger.js';
3
- import type { KnowledgeEnrichOptions } from './TaskKnowledgeBridge.js';
4
- /**
5
- * TaskGraphService — 任务图核心服务
6
- *
7
- * 编排 TaskRepository / TaskReadyEngine / TaskKnowledgeBridge / AuditLog / IdGenerator。
8
- * 对外提供完整的任务生命周期管理。
9
- *
10
- * 设计原则:
11
- * - 所有写操作记录审计事件 (task_events 表)
12
- * - claim 是原子操作 (status + assignee 一起更新)
13
- * - close 时验证不变量 (closedAt 必须存在)
14
- * - 子任务 ID 自动递增 (parent.1, parent.2, ...)
15
- *
16
- * AutoSnippet 增强:
17
- * - ready 返回带知识上下文的任务
18
- * - close 返回 newlyReady 列表(减少 Agent MCP 调用次数)
19
- * - prime 支持会话恢复(幂等)
20
- */
21
- export declare class TaskGraphService {
22
- auditLogger: {
23
- log: (taskId: string, eventType: string, oldValue: string | null, newValue: string | null) => void;
24
- } | null;
25
- bridge: import('./TaskKnowledgeBridge.js').TaskKnowledgeBridge | null;
26
- idGen: import('../../domain/task/TaskIdGenerator.js').TaskIdGenerator;
27
- logger: ReturnType<typeof Logger.getInstance>;
28
- readyEngine: import('./TaskReadyEngine.js').TaskReadyEngine;
29
- repo: import('../../repository/task/TaskRepository.impl.js').TaskRepositoryImpl;
30
- constructor(repository: import('../../repository/task/TaskRepository.impl.js').TaskRepositoryImpl, readyEngine: import('./TaskReadyEngine.js').TaskReadyEngine, knowledgeBridge: import('./TaskKnowledgeBridge.js').TaskKnowledgeBridge | null, auditLogger: {
31
- log: (taskId: string, eventType: string, oldValue: string | null, newValue: string | null) => void;
32
- } | null, idGenerator: import('../../domain/task/TaskIdGenerator.js').TaskIdGenerator);
33
- /**
34
- * 创建任务
35
- * @param data { title, description, design, acceptance, priority, taskType, parentId }
36
- * @returns >}
37
- */
38
- create(data: {
39
- title?: string;
40
- description?: string;
41
- design?: string;
42
- acceptance?: string;
43
- priority?: number;
44
- taskType?: string;
45
- parentId?: string;
46
- }): Promise<{
47
- task: Task;
48
- isDuplicate: boolean;
49
- }>;
50
- /**
51
- * 批量拆解 Epic
52
- * 一次性创建多个子任务 + 依赖关系,减少 Agent 的 MCP 调用次数
53
- *
54
- * @param subtasks [{ title, description, priority, taskType, blockedByIndex }]
55
- */
56
- decompose(epicId: string, subtasks: Array<Record<string, unknown>>): Promise<Task[]>;
57
- /**
58
- * 认领任务
59
- *
60
- * P5: claim-time 知识刷新 — 编码开始时注入最新知识上下文,
61
- * 减少 Agent 额外 MCP 调用。
62
- *
63
- * @param [knowledgeOptions] 上下文信号
64
- */
65
- claim(id: string, assignee?: string, knowledgeOptions?: KnowledgeEnrichOptions): Promise<Task>;
66
- /**
67
- * 关闭任务
68
- * 返回因此解除阻塞的新就绪任务列表
69
- *
70
- * @returns >}
71
- */
72
- close(id: string, reason?: string): Promise<{
73
- task: Task | null;
74
- newlyReady: string[];
75
- }>;
76
- /**
77
- * 标记任务失败
78
- * 释放认领、递增失败计数、回退到 open
79
- */
80
- fail(id: string, reason: string): Promise<Task | null>;
81
- /** 推迟任务 */
82
- defer(id: string, reason?: string): Promise<Task | null>;
83
- /** 上报进度(长任务的中间状态更新) */
84
- progress(id: string, note: string): Promise<Task | null>;
85
- /** 添加依赖 */
86
- addDependency(taskId: string, dependsOnId: string, depType?: string): Promise<void>;
87
- /**
88
- * 获取就绪任务 + 知识上下文
89
- * @param [options] { limit, withKnowledge, userQuery, activeFile, language }
90
- */
91
- ready(options?: {
92
- limit?: number;
93
- withKnowledge?: boolean;
94
- } & KnowledgeEnrichOptions): Promise<Task[]>;
95
- /** 获取被阻塞的任务 */
96
- blocked(): Promise<{
97
- blockedBy: string[];
98
- knowledgeContext?: Record<string, unknown> | undefined;
99
- id?: string | null | undefined;
100
- parentId?: string | null | undefined;
101
- title?: string | undefined;
102
- description?: string | undefined;
103
- design?: string | undefined;
104
- acceptance?: string | undefined;
105
- notes?: string | undefined;
106
- status?: string | undefined;
107
- priority?: number | undefined;
108
- taskType?: string | undefined;
109
- closeReason?: string | undefined;
110
- assignee?: string | undefined;
111
- createdBy?: string | undefined;
112
- createdAt?: number | undefined;
113
- updatedAt?: number | undefined;
114
- closedAt?: number | null | undefined;
115
- contentHash?: string | null | undefined;
116
- failCount?: number | undefined;
117
- lastFailReason?: string | undefined;
118
- metadata?: Record<string, unknown> | undefined;
119
- }[]>;
120
- /** 获取单个任务详情 */
121
- show(id: string): Promise<Task | null>;
122
- /**
123
- * 列表查询
124
- * @param filters { status, taskType, assignee, parentId }
125
- * @param options { limit }
126
- */
127
- list(filters?: Record<string, unknown>, options?: {}): Promise<(Task | null)[]>;
128
- /** 依赖树 */
129
- depTree(taskId: string): Promise<{
130
- depth: unknown;
131
- knowledgeContext?: Record<string, unknown> | undefined;
132
- id?: string | null | undefined;
133
- parentId?: string | null | undefined;
134
- title?: string | undefined;
135
- description?: string | undefined;
136
- design?: string | undefined;
137
- acceptance?: string | undefined;
138
- notes?: string | undefined;
139
- status?: string | undefined;
140
- priority?: number | undefined;
141
- taskType?: string | undefined;
142
- closeReason?: string | undefined;
143
- assignee?: string | undefined;
144
- createdBy?: string | undefined;
145
- createdAt?: number | undefined;
146
- updatedAt?: number | undefined;
147
- closedAt?: number | null | undefined;
148
- contentHash?: string | null | undefined;
149
- failCount?: number | undefined;
150
- lastFailReason?: string | undefined;
151
- metadata?: Record<string, unknown> | undefined;
152
- }[]>;
153
- /** 统计信息 */
154
- stats(): Promise<{
155
- total: number;
156
- open: number;
157
- in_progress: number;
158
- closed: number;
159
- deferred: number;
160
- pinned: number;
161
- }>;
162
- /**
163
- * Prime — 会话恢复(幂等) + 用户输入感知知识注入
164
- *
165
- * 返回当前进行中的任务 + 就绪任务 + 统计信息。
166
- * Agent 在新会话开始或上下文压缩后调用。
167
- *
168
- * P1: 新增 userQuery / activeFile / language 参数,
169
- * 知识注入从「基于历史任务」升级为「基于历史任务 + 当前用户意图」。
170
- *
171
- * @param [options] { withKnowledge, userQuery, activeFile, language }
172
- * @returns >}
173
- */
174
- prime(options?: {
175
- limit?: number;
176
- withKnowledge?: boolean;
177
- } & KnowledgeEnrichOptions): Promise<Record<string, unknown>>;
178
- /**
179
- * 记录决策 — 直接以 pinned 状态创建,避免 open→pinned 的幽灵窗口(C1)
180
- * @param params { title, description, rationale, tags, relatedTaskId }
181
- * @returns >}
182
- */
183
- recordDecision({ title, description, rationale, tags, relatedTaskId, }: {
184
- title: string;
185
- description: string;
186
- rationale?: string;
187
- tags?: string[];
188
- relatedTaskId?: string;
189
- }): Promise<{
190
- task: Task;
191
- isDuplicate: boolean;
192
- }>;
193
- /**
194
- * 修订决策 — 原子事务:创建新决策 + 关闭旧决策 + 建立 supersedes 链(C2+C7)
195
- * @param params { oldDecisionId, title, description, rationale, reason }
196
- * @returns >}
197
- */
198
- reviseDecision({ oldDecisionId, title, description, rationale, reason, }: {
199
- oldDecisionId: string;
200
- title: string;
201
- description: string;
202
- rationale?: string;
203
- reason?: string;
204
- }): Promise<{
205
- newDecision: Task;
206
- oldDecisionId: string;
207
- }>;
208
- /** 取消固定决策 */
209
- unpinDecision(id: string, reason?: string): Promise<Task | null>;
210
- /**
211
- * P2: 获取决策过期阈值(秒)
212
- * 默认 30 天 = 2592000 秒。可通过容器内 'config' 服务配置。
213
- * 返回 0 表示禁用过期检测。
214
- */
215
- _getDecisionStaleThreshold(): number;
216
- /**
217
- * 查找因 closedTaskId 完成而新解除阻塞的任务
218
- */
219
- _checkNewlyUnblocked(closedTaskId: string): string[];
220
- _logEvent(taskId: string, eventType: string, oldValue: string | null, newValue: string | null): void;
221
- }
222
- export default TaskGraphService;