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,112 +0,0 @@
1
- /**
2
- * DirectiveDetector - 文件内指令检测器
3
- *
4
- * 检测 // as:c(创建)、// as:s(搜索)、// as:a(审计)等指令
5
- * V2 ESM 版本,对应 V1 DirectiveDetector.js
6
- */
7
- import { stripTriggerPrefix, TRIGGER_SYMBOL } from '../../infrastructure/config/TriggerSymbol.js';
8
- import { LanguageService } from '../../shared/LanguageService.js';
9
- /** 指令标记常量 */
10
- export const MARKS = {
11
- HEADER_INCLUDE: '// autosnippet:include ',
12
- HEADER_IMPORT: '// autosnippet:import ',
13
- HEADER_INCLUDE_SHORT: '// as:include ',
14
- HEADER_IMPORT_SHORT: '// as:import ',
15
- CREATE_SHORT: '// as:create',
16
- CREATE_ALIAS: '// as:c',
17
- AUDIT_SHORT: '// as:audit',
18
- AUDIT_ALIAS: '// as:a',
19
- SEARCH_SHORT: '// as:search',
20
- SEARCH_LONG: '// autosnippet:search',
21
- SEARCH_ALIAS: '// as:s',
22
- ALINK: 'alink',
23
- };
24
- /** 正则表达式 */
25
- export const REGEX = {
26
- CREATE_LINE: /^\/\/\s*as:(?:create|c)(?:\s+(-[cf]))?\s*$/,
27
- CREATE_REMOVE: /^@?\s*\/\/\s*as:(?:create|c)(?:\s+-[cf])?\s*\r?\n?/gm,
28
- HEADER_OBJC: /^@?\/\/\s*(?:autosnippet|as):include\s+(?:<([A-Za-z0-9_]+)\/([A-Za-z0-9_+.-]+\.h)>|"([A-Za-z0-9_+./-]+\.h)")(\s+.+)?$/,
29
- HEADER_SWIFT: /^@?\/\/\s*(?:autosnippet|as):import\s+\w+$/,
30
- IMPORT_OBJC: /^#import\s*<[A-Za-z0-9_]+\/[A-Za-z0-9_+.-]+\.h>$/,
31
- IMPORT_SWIFT: /^import\s*\w+$/,
32
- SEARCH_MARK: /\/\/\s*(?:autosnippet|as):(?:search|s)(\s|$)/,
33
- };
34
- /** 推断文件语言 —— 委托给 LanguageService */
35
- function _inferLanguage(filename) {
36
- return LanguageService.inferLang(filename);
37
- }
38
- /**
39
- * 检测文件内容中的所有触发指令
40
- *
41
- * @param data 文件内容
42
- * @param filename 文件名
43
- * @returns {{ importArray: string[], headerLine: string|null, alinkLine: string|null,
44
- * createLine: string|null, createOption: string|null,
45
- * guardLine: string|null, searchLine: string|null, isSwift: boolean, language: string }}
46
- */
47
- export function detectTriggers(data, filename) {
48
- const language = _inferLanguage(filename);
49
- const isSwift = language === 'swift';
50
- // Import/header 自动插入目前仅支持 ObjC/Swift(Xcode 工作流)
51
- const isApple = isSwift || language === 'objectivec';
52
- const currImportReg = isSwift ? REGEX.IMPORT_SWIFT : REGEX.IMPORT_OBJC;
53
- const _currHeaderReg = isSwift ? REGEX.HEADER_SWIFT : REGEX.HEADER_OBJC;
54
- const triggers = {
55
- importArray: [],
56
- headerLine: null,
57
- alinkLine: null,
58
- createLine: null,
59
- createOption: null,
60
- guardLine: null,
61
- searchLine: null,
62
- isSwift, // backward compat
63
- language, // v3.1 多语言标识
64
- };
65
- const lines = data.split('\n');
66
- for (const line of lines) {
67
- const lineVal = line.trim();
68
- const normalizedLineVal = stripTriggerPrefix(lineVal);
69
- // import 收集(仅 ObjC/Swift — Xcode 头文件工作流)
70
- if (isApple && currImportReg.test(lineVal)) {
71
- triggers.importArray.push(lineVal);
72
- }
73
- // header 指令
74
- if (_isHeaderDirective(normalizedLineVal)) {
75
- triggers.headerLine = normalizedLineVal;
76
- }
77
- // alink 指令
78
- if (lineVal.startsWith(TRIGGER_SYMBOL) && lineVal.endsWith(TRIGGER_SYMBOL + MARKS.ALINK)) {
79
- triggers.alinkLine = lineVal;
80
- }
81
- // create 指令
82
- const createMatch = normalizedLineVal.match(REGEX.CREATE_LINE);
83
- if (createMatch) {
84
- triggers.createLine = lineVal;
85
- triggers.createOption = createMatch[1] === '-c' ? 'c' : createMatch[1] === '-f' ? 'f' : null;
86
- }
87
- // guard/audit 指令
88
- if (_isGuardDirective(normalizedLineVal)) {
89
- triggers.guardLine = normalizedLineVal;
90
- }
91
- // search 指令
92
- if (_isSearchDirective(normalizedLineVal)) {
93
- triggers.searchLine = normalizedLineVal;
94
- }
95
- }
96
- return triggers;
97
- }
98
- function _isHeaderDirective(line) {
99
- return (line.startsWith(MARKS.HEADER_INCLUDE) ||
100
- line.startsWith(MARKS.HEADER_IMPORT) ||
101
- line.startsWith(MARKS.HEADER_INCLUDE_SHORT) ||
102
- line.startsWith(MARKS.HEADER_IMPORT_SHORT));
103
- }
104
- function _isGuardDirective(line) {
105
- // 精确匹配: // as:audit 或 // as:a,后面只能是空格或行尾
106
- return /^\/\/\s*as:(?:audit|a)(?:\s|$)/.test(line);
107
- }
108
- function _isSearchDirective(line) {
109
- return (line.startsWith(MARKS.SEARCH_SHORT) ||
110
- line.startsWith(MARKS.SEARCH_LONG) ||
111
- line.startsWith(MARKS.SEARCH_ALIAS));
112
- }
@@ -1,51 +0,0 @@
1
- /**
2
- * FileWatcher - V2 文件监听主服务(精简版)
3
- *
4
- * 监控项目文件变更,检测 // as:c、// as:s、// as:a 等指令并自动处理。
5
- * 具体指令逻辑已拆分至 handlers/ 和 XcodeIntegration.js。
6
- *
7
- * 用法:
8
- * const watcher = new FileWatcher(specPath, projectRoot, { quiet: false });
9
- * watcher.start();
10
- */
11
- export declare class FileWatcher {
12
- _debounceTimers: Map<string, ReturnType<typeof setTimeout>>;
13
- _timeoutHead: ReturnType<typeof setTimeout> | undefined;
14
- _timeoutLink: ReturnType<typeof setTimeout> | undefined;
15
- _watcher: import('chokidar').FSWatcher | null;
16
- exts: string[] | null;
17
- onEvent: ((event: string, path: string) => void) | null;
18
- pathPrefix: string | null;
19
- projectRoot: string;
20
- quiet: boolean;
21
- specPath: string;
22
- /**
23
- * @param specPath boxspec.json 绝对路径
24
- * @param projectRoot 项目根目录
25
- * @param [opts.exts] 可选扩展名列表
26
- * @param [opts.pathPrefix] 可选路径前缀过滤
27
- * @param [opts.onEvent] 可选事件回调
28
- */
29
- constructor(specPath: string, projectRoot: string, opts?: {
30
- quiet?: boolean;
31
- pathPrefix?: string;
32
- onEvent?: ((event: string, path: string) => void) | null;
33
- exts?: string[];
34
- });
35
- /** 启动文件监听 */
36
- start(): import("chokidar").FSWatcher;
37
- /** 停止监听,释放所有资源 */
38
- stop(): Promise<void>;
39
- _processFile(fullPath: string, relativePath: string): Promise<void>;
40
- /** 追加候选项(通过 ServiceContainer 或 HTTP API) */
41
- _appendCandidates(items: Record<string, unknown>[], source: string): Promise<void>;
42
- /** 为候选解析头文件 */
43
- _resolveHeadersIfNeeded(item: Record<string, unknown>, relativePath: string, text: string): Promise<void>;
44
- /** 打开 Dashboard 页面 */
45
- _openDashboard(path: string): void;
46
- /** macOS 通知 */
47
- _notify(msg: string): void;
48
- /** 防抖 */
49
- _debounce(key: string, fn: () => void): void;
50
- }
51
- export default FileWatcher;
@@ -1,366 +0,0 @@
1
- /**
2
- * FileWatcher - V2 文件监听主服务(精简版)
3
- *
4
- * 监控项目文件变更,检测 // as:c、// as:s、// as:a 等指令并自动处理。
5
- * 具体指令逻辑已拆分至 handlers/ 和 XcodeIntegration.js。
6
- *
7
- * 用法:
8
- * const watcher = new FileWatcher(specPath, projectRoot, { quiet: false });
9
- * watcher.start();
10
- */
11
- import { accessSync, readFileSync, statSync } from 'node:fs';
12
- import { basename, join, normalize } from 'node:path';
13
- import { watch as chokidarWatch } from 'chokidar';
14
- import { saveEventFilter } from '../../platform/ios/xcode/SaveEventFilter.js';
15
- import { FILE_WATCHER } from '../../shared/constants.js';
16
- import { detectTriggers, REGEX } from './DirectiveDetector.js';
17
- import { handleAlink } from './handlers/AlinkHandler.js';
18
- /* ── Handler imports ── */
19
- import { handleCreate } from './handlers/CreateHandler.js';
20
- import { handleGuard } from './handlers/GuardHandler.js';
21
- import { handleHeader } from './handlers/HeaderHandler.js';
22
- import { handleSearch } from './handlers/SearchHandler.js';
23
- /* ────────── 配置 ────────── */
24
- const DEFAULT_FILE_PATTERN = [
25
- // ObjC/Swift
26
- '**/*.m',
27
- '**/*.h',
28
- '**/*.mm',
29
- '**/*.swift',
30
- // JS/TS
31
- '**/*.js',
32
- '**/*.ts',
33
- '**/*.jsx',
34
- '**/*.tsx',
35
- '**/*.vue',
36
- '**/*.svelte',
37
- // Python
38
- '**/*.py',
39
- // JVM
40
- '**/*.java',
41
- '**/*.kt',
42
- '**/*.kts',
43
- // Other languages
44
- '**/*.go',
45
- '**/*.rs',
46
- '**/*.rb',
47
- // C/C++
48
- '**/*.c',
49
- '**/*.cpp',
50
- '**/*.cc',
51
- '**/*.hpp',
52
- ];
53
- const IGNORED = [
54
- '**/node_modules/**',
55
- '**/.git/**',
56
- '**/.mgit/**',
57
- '**/.easybox/**',
58
- '**/xcuserdata/**',
59
- '**/.build/**',
60
- '**/*.swp',
61
- '**/*.tmp',
62
- '**/*~.m',
63
- '**/*~.h',
64
- '**/DerivedData/**',
65
- '**/Pods/**',
66
- '**/Carthage/**',
67
- '**/__pycache__/**',
68
- '**/.venv/**',
69
- '**/venv/**',
70
- '**/build/**',
71
- '**/target/**',
72
- '**/.gradle/**',
73
- '**/dist/**',
74
- '**/.next/**',
75
- '**/.nuxt/**',
76
- ];
77
- const DEBOUNCE_DELAY = FILE_WATCHER.DEBOUNCE_DELAY_MS;
78
- /* ────────── FileWatcher ────────── */
79
- export class FileWatcher {
80
- _debounceTimers;
81
- _timeoutHead;
82
- _timeoutLink;
83
- _watcher;
84
- exts;
85
- onEvent;
86
- pathPrefix;
87
- projectRoot;
88
- quiet;
89
- specPath;
90
- /**
91
- * @param specPath boxspec.json 绝对路径
92
- * @param projectRoot 项目根目录
93
- * @param [opts.exts] 可选扩展名列表
94
- * @param [opts.pathPrefix] 可选路径前缀过滤
95
- * @param [opts.onEvent] 可选事件回调
96
- */
97
- constructor(specPath, projectRoot, opts = {}) {
98
- this.specPath = specPath;
99
- this.projectRoot = projectRoot;
100
- this.quiet = !!opts.quiet;
101
- this.pathPrefix = opts.pathPrefix || null;
102
- this.onEvent = opts.onEvent || null;
103
- this.exts = opts.exts || null;
104
- this._debounceTimers = new Map();
105
- this._watcher = null;
106
- this._timeoutLink = undefined;
107
- this._timeoutHead = undefined;
108
- }
109
- /** 启动文件监听 */
110
- start() {
111
- const watchRoot = this.projectRoot;
112
- const filePattern = this.exts
113
- ? this.exts.map((e) => `**/*${e.startsWith('.') ? e : `.${e}`}`)
114
- : DEFAULT_FILE_PATTERN;
115
- if (!this.quiet) {
116
- }
117
- this._watcher = chokidarWatch(filePattern, {
118
- cwd: watchRoot,
119
- ignored: IGNORED,
120
- ignoreInitial: true,
121
- persistent: true,
122
- });
123
- const handleEvent = (relativePath) => {
124
- const fullPath = join(watchRoot, relativePath);
125
- if (process.env.ASD_DEBUG === '1') {
126
- }
127
- if (this.pathPrefix && !normalize(relativePath).startsWith(normalize(this.pathPrefix))) {
128
- return;
129
- }
130
- this._debounce(fullPath, () => {
131
- this._processFile(fullPath, relativePath);
132
- });
133
- };
134
- this._watcher.on('change', handleEvent);
135
- this._watcher.on('add', handleEvent);
136
- this._watcher.on('error', (err) => {
137
- const msg = err instanceof Error ? err.message : String(err);
138
- console.error('文件监听错误:', msg);
139
- });
140
- this._watcher.on('ready', () => {
141
- if (!this.quiet) {
142
- }
143
- if (process.env.ASD_DEBUG === '1') {
144
- }
145
- });
146
- return this._watcher;
147
- }
148
- /** 停止监听,释放所有资源 */
149
- async stop() {
150
- if (this._watcher) {
151
- // 移除所有事件监听器,避免泄漏
152
- this._watcher.removeAllListeners();
153
- await this._watcher.close();
154
- this._watcher = null;
155
- }
156
- // 清理所有防抖定时器
157
- for (const timer of this._debounceTimers.values()) {
158
- clearTimeout(timer);
159
- }
160
- this._debounceTimers.clear();
161
- // 清理 handler 级别的延时定时器
162
- if (this._timeoutLink) {
163
- clearTimeout(this._timeoutLink);
164
- this._timeoutLink = undefined;
165
- }
166
- if (this._timeoutHead) {
167
- clearTimeout(this._timeoutHead);
168
- this._timeoutHead = undefined;
169
- }
170
- }
171
- /* ────────── 内部:文件处理(分派到 handlers) ────────── */
172
- async _processFile(fullPath, relativePath) {
173
- try {
174
- accessSync(fullPath);
175
- const stat = statSync(fullPath);
176
- if (stat.isDirectory() || stat.size > FILE_WATCHER.MAX_FILE_SIZE_BYTES) {
177
- return;
178
- }
179
- }
180
- catch {
181
- return;
182
- }
183
- let data;
184
- try {
185
- data = readFileSync(fullPath, 'utf8');
186
- }
187
- catch (err) {
188
- console.error(`❌ 读取文件失败: ${fullPath}`, err.message);
189
- return;
190
- }
191
- // ── 保存事件过滤:self-write / 内容未变 / Xcode 非前台 ──
192
- const verdict = saveEventFilter.shouldProcess(fullPath, data);
193
- if (!verdict.process) {
194
- if (process.env.ASD_DEBUG === '1') {
195
- }
196
- return;
197
- }
198
- if (process.env.ASD_DEBUG === '1') {
199
- }
200
- const filename = basename(fullPath);
201
- // 检测指令
202
- const triggers = detectTriggers(data, filename);
203
- if (process.env.ASD_DEBUG === '1') {
204
- }
205
- // // as:c — 创建候选
206
- if (triggers.createLine) {
207
- await handleCreate(this, fullPath, relativePath, triggers.createOption);
208
- }
209
- // // as:a — Guard 检查
210
- if (triggers.guardLine) {
211
- await handleGuard(this, fullPath, data, triggers.guardLine);
212
- }
213
- // // as:s — 搜索
214
- if (triggers.searchLine) {
215
- await handleSearch(this, fullPath, relativePath, triggers.searchLine);
216
- }
217
- // alink
218
- if (triggers.alinkLine) {
219
- clearTimeout(this._timeoutLink);
220
- this._timeoutLink = setTimeout(() => {
221
- handleAlink(triggers.alinkLine).catch((err) => {
222
- console.warn(`[Watcher] alink handler failed: ${err.message}`);
223
- });
224
- }, DEBOUNCE_DELAY);
225
- }
226
- // ── 更新内容哈希(处理完毕后记录状态,供下次变更比对) ──
227
- saveEventFilter.updateHash(fullPath, data);
228
- // header 指令
229
- if (triggers.headerLine) {
230
- const isMatch = triggers.isSwift
231
- ? REGEX.HEADER_SWIFT.test(triggers.headerLine)
232
- : REGEX.HEADER_OBJC.test(triggers.headerLine);
233
- if (isMatch) {
234
- clearTimeout(this._timeoutHead);
235
- this._timeoutHead = setTimeout(() => {
236
- handleHeader(this, fullPath, triggers.headerLine, triggers.importArray, triggers.isSwift).catch((err) => {
237
- console.warn(`[Watcher] header handler failed: ${err.message}`);
238
- });
239
- }, DEBOUNCE_DELAY);
240
- }
241
- }
242
- }
243
- /* ────────── 工具方法(供 handlers 通过 watcher 引用调用) ────────── */
244
- /** 追加候选项(通过 ServiceContainer 或 HTTP API) */
245
- async _appendCandidates(items, source) {
246
- // 过滤空 title / 空 code 的无效条目
247
- const validItems = items.filter((item) => {
248
- const title = String(item.title || '').trim();
249
- const code = String(item.code || '').trim();
250
- if (!title || !code) {
251
- console.warn(`[Watcher] 跳过无效候选: title=${JSON.stringify(title)}, code length=${code.length}`);
252
- return false;
253
- }
254
- return true;
255
- });
256
- if (validItems.length === 0) {
257
- throw new Error('所有候选条目缺少 title 或 code,无法提交');
258
- }
259
- // 优先 ServiceContainer
260
- let serviceError = null;
261
- try {
262
- const { ServiceContainer } = await import('../../injection/ServiceContainer.js');
263
- const container = ServiceContainer.getInstance();
264
- const knowledgeService = container.get('knowledgeService');
265
- const context = { userId: 'filewatcher' };
266
- for (const item of validItems) {
267
- await knowledgeService.create({
268
- content: {
269
- pattern: String(item.code || ''),
270
- },
271
- language: String(item.language || 'objc'),
272
- category: String(item.category || 'Utility'),
273
- source: source || 'watch',
274
- title: String(item.title || ''),
275
- description: String(item.summary || item.description || ''),
276
- moduleName: String(item.moduleName || 'watch-create'),
277
- trigger: String(item.trigger || ''),
278
- headers: (item.headers || []),
279
- tags: (item.tags || []),
280
- }, context);
281
- }
282
- return;
283
- }
284
- catch (err) {
285
- serviceError = err;
286
- console.warn('[Watcher] KnowledgeService 创建失败,尝试 HTTP 回退:', err.message);
287
- }
288
- // 回退:HTTP API(使用 knowledge 端点而非 candidates)
289
- const dashboardUrl = process.env.ASD_DASHBOARD_URL || 'http://localhost:3000';
290
- try {
291
- for (const item of validItems) {
292
- const resp = await fetch(`${dashboardUrl}/api/v1/knowledge`, {
293
- method: 'POST',
294
- headers: { 'Content-Type': 'application/json' },
295
- body: JSON.stringify({
296
- title: item.title,
297
- content: { pattern: item.code || '' },
298
- language: item.language || 'objc',
299
- category: item.category || 'Utility',
300
- source: source || 'watch',
301
- description: item.summary || item.description || '',
302
- moduleName: item.moduleName || 'watch-create',
303
- trigger: item.trigger || '',
304
- headers: item.headers || [],
305
- }),
306
- });
307
- if (!resp.ok) {
308
- throw new Error(`HTTP ${resp.status}`);
309
- }
310
- }
311
- return;
312
- }
313
- catch (err) {
314
- console.warn(`[Watcher] HTTP 候选提交也失败: ${err.message}`);
315
- }
316
- // 两条路径都失败 → 抛出原始错误
317
- throw serviceError || new Error('候选提交失败:ServiceContainer 和 HTTP 均不可用');
318
- }
319
- /** 为候选解析头文件 */
320
- async _resolveHeadersIfNeeded(item, relativePath, text) {
321
- if (relativePath && (!item.headers || !item.headers.length)) {
322
- try {
323
- const HeaderResolver = await import('../../platform/ios/xcode/HeaderResolver.js');
324
- const resolved = await HeaderResolver.resolveHeadersForText(this.projectRoot, relativePath, text);
325
- if (resolved?.headers && resolved.headers.length > 0) {
326
- item.headers = resolved.headers;
327
- item.headerPaths = resolved.headerPaths;
328
- item.moduleName = resolved.moduleName;
329
- }
330
- }
331
- catch {
332
- // 头文件解析失败不阻塞
333
- }
334
- }
335
- }
336
- /** 打开 Dashboard 页面 */
337
- _openDashboard(path) {
338
- const base = process.env.ASD_DASHBOARD_URL || 'http://localhost:3000';
339
- const url = `${base}${path}`;
340
- import('../../platform/OpenBrowser.js')
341
- .then(({ openBrowserReuseTab }) => openBrowserReuseTab(url, base))
342
- .catch(() => { });
343
- }
344
- /** macOS 通知 */
345
- _notify(msg) {
346
- import('../../platform/NativeUi.js').then((NU) => NU.notify(msg)).catch(() => { });
347
- }
348
- /** 防抖 */
349
- _debounce(key, fn) {
350
- if (this._debounceTimers.has(key)) {
351
- clearTimeout(this._debounceTimers.get(key));
352
- }
353
- this._debounceTimers.set(key, setTimeout(() => {
354
- this._debounceTimers.delete(key);
355
- Promise.resolve()
356
- .then(() => fn())
357
- .catch((err) => {
358
- console.error('[Watch] 处理文件失败:', err.message);
359
- if (process.env.ASD_DEBUG === '1') {
360
- console.error(err.stack);
361
- }
362
- });
363
- }, DEBOUNCE_DELAY));
364
- }
365
- }
366
- export default FileWatcher;
@@ -1,36 +0,0 @@
1
- /**
2
- * TriggerResolver — 触发器规范化
3
- * 将原始触发输入规范化为标准格式,添加类型标签
4
- */
5
- export declare class TriggerResolver {
6
- #private;
7
- /**
8
- * 规范化触发器
9
- * @returns }
10
- */
11
- resolve(trigger: string | Record<string, unknown>): {
12
- type: string;
13
- name: string;
14
- params: {
15
- option: string;
16
- };
17
- raw: string;
18
- } | {
19
- type: string;
20
- name: string;
21
- params: {
22
- option?: undefined;
23
- };
24
- raw: string;
25
- } | {
26
- type: string;
27
- name: string;
28
- params: Record<string, unknown>;
29
- raw: Record<string, unknown>;
30
- } | {
31
- type: string;
32
- raw: never;
33
- name?: undefined;
34
- params?: undefined;
35
- };
36
- }
@@ -1,62 +0,0 @@
1
- /**
2
- * TriggerResolver — 触发器规范化
3
- * 将原始触发输入规范化为标准格式,添加类型标签
4
- */
5
- export class TriggerResolver {
6
- /**
7
- * 规范化触发器
8
- * @returns }
9
- */
10
- resolve(trigger) {
11
- if (typeof trigger === 'string') {
12
- return this.#resolveString(trigger);
13
- }
14
- if (trigger && typeof trigger === 'object') {
15
- return {
16
- type: String(trigger.type || 'unknown'),
17
- name: String(trigger.name || ''),
18
- params: trigger.params || {},
19
- raw: trigger,
20
- };
21
- }
22
- return { type: 'unknown', raw: trigger };
23
- }
24
- #resolveString(input) {
25
- const trimmed = input.trim();
26
- // 检测 as:xxx 格式
27
- const asMatch = trimmed.match(/^as:(\w+)\s*(.*)/);
28
- if (asMatch) {
29
- return {
30
- type: this.#mapDirectiveType(asMatch[1]),
31
- name: asMatch[1],
32
- params: { option: asMatch[2].trim() },
33
- raw: input,
34
- };
35
- }
36
- // 检测事件类型格式 file:changed, timer:cron
37
- const eventMatch = trimmed.match(/^(\w+):(\w+)\s*(.*)/);
38
- if (eventMatch) {
39
- return {
40
- type: eventMatch[1],
41
- name: eventMatch[2],
42
- params: { option: eventMatch[3].trim() },
43
- raw: input,
44
- };
45
- }
46
- return { type: 'custom', name: trimmed, params: {}, raw: input };
47
- }
48
- #mapDirectiveType(name) {
49
- const map = {
50
- search: 'search',
51
- s: 'search',
52
- create: 'create',
53
- c: 'create',
54
- audit: 'audit',
55
- a: 'audit',
56
- include: 'injection',
57
- import: 'injection',
58
- alink: 'alink',
59
- };
60
- return map[name] || 'directive';
61
- }
62
- }
@@ -1,7 +0,0 @@
1
- /**
2
- * AlinkHandler — 处理 alink 指令
3
- *
4
- * 解析编辑器中的 alink 触发行,提取 completionKey,
5
- * 通过数据库查找匹配的 Recipe,打开 Dashboard 详情页。
6
- */
7
- export declare function handleAlink(alinkLine: string): Promise<void>;