autosnippet 3.2.13 → 3.2.16
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.
- package/config/constitution.yaml +19 -0
- package/config/default.json +6 -1
- package/dist/bin/cli.d.ts +2 -1
- package/dist/bin/cli.d.ts.map +1 -1
- package/dist/bin/cli.js +241 -22
- package/dist/bin/cli.js.map +1 -1
- package/dist/lib/cli/SetupService.d.ts +70 -6
- package/dist/lib/cli/SetupService.d.ts.map +1 -1
- package/dist/lib/cli/SetupService.js +238 -50
- package/dist/lib/cli/SetupService.js.map +1 -1
- package/dist/lib/cli/UpgradeService.d.ts.map +1 -1
- package/dist/lib/cli/UpgradeService.js +3 -2
- package/dist/lib/cli/UpgradeService.js.map +1 -1
- package/dist/lib/cli/deploy/FileDeployer.d.ts.map +1 -1
- package/dist/lib/cli/deploy/FileDeployer.js +6 -4
- package/dist/lib/cli/deploy/FileDeployer.js.map +1 -1
- package/dist/lib/cli/deploy/FileManifest.d.ts.map +1 -1
- package/dist/lib/cli/deploy/FileManifest.js +3 -2
- package/dist/lib/cli/deploy/FileManifest.js.map +1 -1
- package/dist/lib/core/capability/CapabilityProbe.d.ts +13 -0
- package/dist/lib/core/capability/CapabilityProbe.d.ts.map +1 -1
- package/dist/lib/core/capability/CapabilityProbe.js +36 -17
- package/dist/lib/core/capability/CapabilityProbe.js.map +1 -1
- package/dist/lib/external/mcp/McpServer.d.ts +13 -0
- package/dist/lib/external/mcp/McpServer.d.ts.map +1 -1
- package/dist/lib/external/mcp/McpServer.js +44 -3
- package/dist/lib/external/mcp/McpServer.js.map +1 -1
- package/dist/lib/external/mcp/handlers/bootstrap/pipeline/orchestrator.d.ts.map +1 -1
- package/dist/lib/external/mcp/handlers/bootstrap/pipeline/orchestrator.js +16 -1
- package/dist/lib/external/mcp/handlers/bootstrap/pipeline/orchestrator.js.map +1 -1
- package/dist/lib/external/mcp/handlers/bootstrap-external.js.map +1 -1
- package/dist/lib/external/mcp/handlers/consolidated.d.ts +22 -24
- package/dist/lib/external/mcp/handlers/consolidated.d.ts.map +1 -1
- package/dist/lib/external/mcp/handlers/consolidated.js +4 -2
- package/dist/lib/external/mcp/handlers/consolidated.js.map +1 -1
- package/dist/lib/external/mcp/handlers/dimension-complete-external.js.map +1 -1
- package/dist/lib/external/mcp/handlers/search.d.ts +115 -39
- package/dist/lib/external/mcp/handlers/search.d.ts.map +1 -1
- package/dist/lib/external/mcp/handlers/search.js +107 -190
- package/dist/lib/external/mcp/handlers/search.js.map +1 -1
- package/dist/lib/external/mcp/handlers/skill.d.ts +17 -0
- package/dist/lib/external/mcp/handlers/skill.d.ts.map +1 -1
- package/dist/lib/external/mcp/handlers/skill.js +166 -0
- package/dist/lib/external/mcp/handlers/skill.js.map +1 -1
- package/dist/lib/external/mcp/handlers/task.d.ts +3 -0
- package/dist/lib/external/mcp/handlers/task.d.ts.map +1 -1
- package/dist/lib/external/mcp/handlers/task.js +10 -1
- package/dist/lib/external/mcp/handlers/task.js.map +1 -1
- package/dist/lib/external/mcp/handlers/wiki-external.d.ts.map +1 -1
- package/dist/lib/external/mcp/handlers/wiki-external.js +4 -3
- package/dist/lib/external/mcp/handlers/wiki-external.js.map +1 -1
- package/dist/lib/http/HttpServer.js +2 -2
- package/dist/lib/http/HttpServer.js.map +1 -1
- package/dist/lib/http/middleware/gatewayMiddleware.js +2 -2
- package/dist/lib/http/middleware/gatewayMiddleware.js.map +1 -1
- package/dist/lib/http/routes/ai.js +3 -3
- package/dist/lib/http/routes/ai.js.map +1 -1
- package/dist/lib/http/routes/candidates.d.ts.map +1 -1
- package/dist/lib/http/routes/candidates.js +3 -1
- package/dist/lib/http/routes/candidates.js.map +1 -1
- package/dist/lib/http/routes/commands.d.ts.map +1 -1
- package/dist/lib/http/routes/commands.js +37 -9
- package/dist/lib/http/routes/commands.js.map +1 -1
- package/dist/lib/http/routes/guard.d.ts.map +1 -1
- package/dist/lib/http/routes/guard.js.map +1 -1
- package/dist/lib/http/routes/guardRules.d.ts.map +1 -1
- package/dist/lib/http/routes/guardRules.js +7 -7
- package/dist/lib/http/routes/guardRules.js.map +1 -1
- package/dist/lib/http/routes/knowledge.d.ts.map +1 -1
- package/dist/lib/http/routes/knowledge.js +62 -18
- package/dist/lib/http/routes/knowledge.js.map +1 -1
- package/dist/lib/http/routes/modules.d.ts.map +1 -1
- package/dist/lib/http/routes/modules.js +7 -5
- package/dist/lib/http/routes/modules.js.map +1 -1
- package/dist/lib/http/routes/recipes.js +1 -1
- package/dist/lib/http/routes/recipes.js.map +1 -1
- package/dist/lib/http/routes/remote.d.ts.map +1 -1
- package/dist/lib/http/routes/remote.js +1 -1
- package/dist/lib/http/routes/remote.js.map +1 -1
- package/dist/lib/http/routes/search.d.ts.map +1 -1
- package/dist/lib/http/routes/search.js +31 -23
- package/dist/lib/http/routes/search.js.map +1 -1
- package/dist/lib/http/routes/skills.d.ts.map +1 -1
- package/dist/lib/http/routes/skills.js +73 -0
- package/dist/lib/http/routes/skills.js.map +1 -1
- package/dist/lib/http/routes/snippets.js +2 -2
- package/dist/lib/http/routes/snippets.js.map +1 -1
- package/dist/lib/http/routes/task.js.map +1 -1
- package/dist/lib/http/routes/violations.js +2 -2
- package/dist/lib/http/routes/violations.js.map +1 -1
- package/dist/lib/http/routes/wiki.d.ts.map +1 -1
- package/dist/lib/http/routes/wiki.js +3 -2
- package/dist/lib/http/routes/wiki.js.map +1 -1
- package/dist/lib/http/utils/routeHelpers.d.ts +2 -2
- package/dist/lib/http/utils/routeHelpers.js +2 -2
- package/dist/lib/http/utils/routeHelpers.js.map +1 -1
- package/dist/lib/infrastructure/config/Defaults.d.ts +3 -0
- package/dist/lib/infrastructure/config/Defaults.d.ts.map +1 -1
- package/dist/lib/infrastructure/config/Defaults.js +10 -6
- package/dist/lib/infrastructure/config/Defaults.js.map +1 -1
- package/dist/lib/infrastructure/config/Paths.d.ts +1 -1
- package/dist/lib/infrastructure/config/Paths.d.ts.map +1 -1
- package/dist/lib/infrastructure/config/Paths.js +4 -16
- package/dist/lib/infrastructure/config/Paths.js.map +1 -1
- package/dist/lib/infrastructure/vector/HnswVectorAdapter.d.ts +4 -1
- package/dist/lib/infrastructure/vector/HnswVectorAdapter.d.ts.map +1 -1
- package/dist/lib/infrastructure/vector/HnswVectorAdapter.js +26 -6
- package/dist/lib/infrastructure/vector/HnswVectorAdapter.js.map +1 -1
- package/dist/lib/infrastructure/vector/IndexingPipeline.d.ts +20 -0
- package/dist/lib/infrastructure/vector/IndexingPipeline.d.ts.map +1 -1
- package/dist/lib/infrastructure/vector/IndexingPipeline.js +65 -3
- package/dist/lib/infrastructure/vector/IndexingPipeline.js.map +1 -1
- package/dist/lib/infrastructure/vector/JsonVectorAdapter.d.ts +1 -1
- package/dist/lib/infrastructure/vector/JsonVectorAdapter.js +1 -1
- package/dist/lib/injection/ServiceContainer.d.ts +12 -2
- package/dist/lib/injection/ServiceContainer.d.ts.map +1 -1
- package/dist/lib/injection/ServiceContainer.js +10 -85
- package/dist/lib/injection/ServiceContainer.js.map +1 -1
- package/dist/lib/injection/ServiceMap.d.ts +124 -0
- package/dist/lib/injection/ServiceMap.d.ts.map +1 -0
- package/dist/lib/injection/ServiceMap.js +10 -0
- package/dist/lib/injection/ServiceMap.js.map +1 -0
- package/dist/lib/injection/modules/AgentModule.d.ts +1 -0
- package/dist/lib/injection/modules/AgentModule.d.ts.map +1 -1
- package/dist/lib/injection/modules/AgentModule.js +28 -0
- package/dist/lib/injection/modules/AgentModule.js.map +1 -1
- package/dist/lib/injection/modules/AiModule.d.ts +36 -0
- package/dist/lib/injection/modules/AiModule.d.ts.map +1 -0
- package/dist/lib/injection/modules/AiModule.js +99 -0
- package/dist/lib/injection/modules/AiModule.js.map +1 -0
- package/dist/lib/injection/modules/AppModule.js.map +1 -1
- package/dist/lib/injection/modules/GuardModule.js.map +1 -1
- package/dist/lib/injection/modules/KnowledgeModule.d.ts +1 -1
- package/dist/lib/injection/modules/KnowledgeModule.d.ts.map +1 -1
- package/dist/lib/injection/modules/KnowledgeModule.js +4 -10
- package/dist/lib/injection/modules/KnowledgeModule.js.map +1 -1
- package/dist/lib/injection/modules/VectorModule.d.ts +20 -0
- package/dist/lib/injection/modules/VectorModule.d.ts.map +1 -0
- package/dist/lib/injection/modules/VectorModule.js +74 -0
- package/dist/lib/injection/modules/VectorModule.js.map +1 -0
- package/dist/lib/platform/ios/routes/spm.d.ts.map +1 -1
- package/dist/lib/platform/ios/routes/spm.js +7 -5
- package/dist/lib/platform/ios/routes/spm.js.map +1 -1
- package/dist/lib/platform/ios/spm/SpmHelper.d.ts +1 -1
- package/dist/lib/service/agent/AgentRuntime.d.ts +3 -73
- package/dist/lib/service/agent/AgentRuntime.d.ts.map +1 -1
- package/dist/lib/service/agent/AgentRuntime.js +2 -2
- package/dist/lib/service/agent/AgentRuntime.js.map +1 -1
- package/dist/lib/service/agent/AgentRuntimeTypes.d.ts +113 -0
- package/dist/lib/service/agent/AgentRuntimeTypes.d.ts.map +1 -0
- package/dist/lib/service/agent/AgentRuntimeTypes.js +11 -0
- package/dist/lib/service/agent/AgentRuntimeTypes.js.map +1 -0
- package/dist/lib/service/agent/PipelineStrategy.d.ts +1 -1
- package/dist/lib/service/agent/PipelineStrategy.d.ts.map +1 -1
- package/dist/lib/service/agent/PipelineStrategy.js +3 -3
- package/dist/lib/service/agent/PipelineStrategy.js.map +1 -1
- package/dist/lib/service/agent/core/ChatAgentPrompts.d.ts +2 -2
- package/dist/lib/service/agent/core/ChatAgentPrompts.d.ts.map +1 -1
- package/dist/lib/service/agent/core/ChatAgentPrompts.js +2 -2
- package/dist/lib/service/agent/core/ChatAgentPrompts.js.map +1 -1
- package/dist/lib/service/agent/domain/insight-analyst.d.ts +3 -3
- package/dist/lib/service/agent/domain/insight-analyst.d.ts.map +1 -1
- package/dist/lib/service/agent/domain/insight-analyst.js +3 -3
- package/dist/lib/service/agent/domain/insight-analyst.js.map +1 -1
- package/dist/lib/service/agent/memory/MemoryCoordinator.d.ts +3 -3
- package/dist/lib/service/agent/memory/MemoryCoordinator.d.ts.map +1 -1
- package/dist/lib/service/agent/memory/MemoryCoordinator.js +6 -6
- package/dist/lib/service/agent/memory/MemoryCoordinator.js.map +1 -1
- package/dist/lib/service/agent/memory/MemoryRetriever.d.ts +18 -12
- package/dist/lib/service/agent/memory/MemoryRetriever.d.ts.map +1 -1
- package/dist/lib/service/agent/memory/MemoryRetriever.js +70 -17
- package/dist/lib/service/agent/memory/MemoryRetriever.js.map +1 -1
- package/dist/lib/service/agent/memory/MemoryStore.d.ts +38 -0
- package/dist/lib/service/agent/memory/MemoryStore.d.ts.map +1 -1
- package/dist/lib/service/agent/memory/MemoryStore.js +70 -3
- package/dist/lib/service/agent/memory/MemoryStore.js.map +1 -1
- package/dist/lib/service/agent/memory/PersistentMemory.d.ts +18 -4
- package/dist/lib/service/agent/memory/PersistentMemory.d.ts.map +1 -1
- package/dist/lib/service/agent/memory/PersistentMemory.js +24 -4
- package/dist/lib/service/agent/memory/PersistentMemory.js.map +1 -1
- package/dist/lib/service/agent/presets.d.ts +2 -2
- package/dist/lib/service/agent/tools/index.d.ts +0 -5
- package/dist/lib/service/agent/tools/index.d.ts.map +1 -1
- package/dist/lib/service/agent/tools/query.d.ts +0 -5
- package/dist/lib/service/agent/tools/query.d.ts.map +1 -1
- package/dist/lib/service/agent/tools/query.js +41 -32
- package/dist/lib/service/agent/tools/query.js.map +1 -1
- package/dist/lib/service/automation/FileWatcher.js +9 -9
- package/dist/lib/service/automation/FileWatcher.js.map +1 -1
- package/dist/lib/service/automation/handlers/AlinkHandler.d.ts.map +1 -1
- package/dist/lib/service/automation/handlers/AlinkHandler.js +1 -1
- package/dist/lib/service/automation/handlers/AlinkHandler.js.map +1 -1
- package/dist/lib/service/automation/handlers/GuardHandler.js +1 -1
- package/dist/lib/service/automation/handlers/GuardHandler.js.map +1 -1
- package/dist/lib/service/automation/handlers/SearchHandler.d.ts.map +1 -1
- package/dist/lib/service/automation/handlers/SearchHandler.js +10 -10
- package/dist/lib/service/automation/handlers/SearchHandler.js.map +1 -1
- package/dist/lib/service/cursor/CursorDeliveryPipeline.d.ts.map +1 -1
- package/dist/lib/service/cursor/CursorDeliveryPipeline.js +2 -1
- package/dist/lib/service/cursor/CursorDeliveryPipeline.js.map +1 -1
- package/dist/lib/service/cursor/SkillsSyncer.d.ts.map +1 -1
- package/dist/lib/service/cursor/SkillsSyncer.js +2 -1
- package/dist/lib/service/cursor/SkillsSyncer.js.map +1 -1
- package/dist/lib/service/guard/ExclusionManager.d.ts.map +1 -1
- package/dist/lib/service/guard/ExclusionManager.js +2 -1
- package/dist/lib/service/guard/ExclusionManager.js.map +1 -1
- package/dist/lib/service/guard/RuleLearner.d.ts.map +1 -1
- package/dist/lib/service/guard/RuleLearner.js +2 -1
- package/dist/lib/service/guard/RuleLearner.js.map +1 -1
- package/dist/lib/service/knowledge/KnowledgeService.d.ts +5 -0
- package/dist/lib/service/knowledge/KnowledgeService.d.ts.map +1 -1
- package/dist/lib/service/knowledge/KnowledgeService.js +27 -0
- package/dist/lib/service/knowledge/KnowledgeService.js.map +1 -1
- package/dist/lib/service/module/ModuleService.d.ts.map +1 -1
- package/dist/lib/service/module/ModuleService.js +1 -0
- package/dist/lib/service/module/ModuleService.js.map +1 -1
- package/dist/lib/service/quality/FeedbackCollector.d.ts.map +1 -1
- package/dist/lib/service/quality/FeedbackCollector.js +2 -1
- package/dist/lib/service/quality/FeedbackCollector.js.map +1 -1
- package/dist/lib/service/search/BM25Scorer.d.ts +52 -0
- package/dist/lib/service/search/BM25Scorer.d.ts.map +1 -0
- package/dist/lib/service/search/BM25Scorer.js +155 -0
- package/dist/lib/service/search/BM25Scorer.js.map +1 -0
- package/dist/lib/service/search/CrossEncoderReranker.js +1 -1
- package/dist/lib/service/search/CrossEncoderReranker.js.map +1 -1
- package/dist/lib/service/search/MultiSignalRanker.d.ts +7 -0
- package/dist/lib/service/search/MultiSignalRanker.d.ts.map +1 -1
- package/dist/lib/service/search/MultiSignalRanker.js +37 -18
- package/dist/lib/service/search/MultiSignalRanker.js.map +1 -1
- package/dist/lib/service/search/SearchEngine.d.ts +15 -215
- package/dist/lib/service/search/SearchEngine.d.ts.map +1 -1
- package/dist/lib/service/search/SearchEngine.js +127 -270
- package/dist/lib/service/search/SearchEngine.js.map +1 -1
- package/dist/lib/service/search/SearchTypes.d.ts +258 -0
- package/dist/lib/service/search/SearchTypes.d.ts.map +1 -0
- package/dist/lib/service/search/SearchTypes.js +50 -0
- package/dist/lib/service/search/SearchTypes.js.map +1 -0
- package/dist/lib/service/search/contextBoost.d.ts +1 -1
- package/dist/lib/service/search/contextBoost.js +2 -2
- package/dist/lib/service/search/contextBoost.js.map +1 -1
- package/dist/lib/service/search/tokenizer.d.ts +18 -0
- package/dist/lib/service/search/tokenizer.d.ts.map +1 -0
- package/dist/lib/service/search/tokenizer.js +215 -0
- package/dist/lib/service/search/tokenizer.js.map +1 -0
- package/dist/lib/service/skills/AIRecallStrategy.d.ts +30 -0
- package/dist/lib/service/skills/AIRecallStrategy.d.ts.map +1 -0
- package/dist/lib/service/skills/AIRecallStrategy.js +51 -0
- package/dist/lib/service/skills/AIRecallStrategy.js.map +1 -0
- package/dist/lib/service/skills/FeedbackStore.d.ts +48 -0
- package/dist/lib/service/skills/FeedbackStore.d.ts.map +1 -0
- package/dist/lib/service/skills/FeedbackStore.js +255 -0
- package/dist/lib/service/skills/FeedbackStore.js.map +1 -0
- package/dist/lib/service/skills/RecommendationMetrics.d.ts +60 -0
- package/dist/lib/service/skills/RecommendationMetrics.d.ts.map +1 -0
- package/dist/lib/service/skills/RecommendationMetrics.js +120 -0
- package/dist/lib/service/skills/RecommendationMetrics.js.map +1 -0
- package/dist/lib/service/skills/RecommendationPipeline.d.ts +43 -0
- package/dist/lib/service/skills/RecommendationPipeline.d.ts.map +1 -0
- package/dist/lib/service/skills/RecommendationPipeline.js +235 -0
- package/dist/lib/service/skills/RecommendationPipeline.js.map +1 -0
- package/dist/lib/service/skills/RuleRecallStrategy.d.ts +16 -0
- package/dist/lib/service/skills/RuleRecallStrategy.d.ts.map +1 -0
- package/dist/lib/service/skills/RuleRecallStrategy.js +37 -0
- package/dist/lib/service/skills/RuleRecallStrategy.js.map +1 -0
- package/dist/lib/service/skills/SignalCollector.d.ts +3 -3
- package/dist/lib/service/skills/SignalCollector.d.ts.map +1 -1
- package/dist/lib/service/skills/SignalCollector.js +72 -2
- package/dist/lib/service/skills/SignalCollector.js.map +1 -1
- package/dist/lib/service/skills/SkillHooks.d.ts +33 -14
- package/dist/lib/service/skills/SkillHooks.d.ts.map +1 -1
- package/dist/lib/service/skills/SkillHooks.js +261 -30
- package/dist/lib/service/skills/SkillHooks.js.map +1 -1
- package/dist/lib/service/skills/types.d.ts +210 -0
- package/dist/lib/service/skills/types.d.ts.map +1 -0
- package/dist/lib/service/skills/types.js +7 -0
- package/dist/lib/service/skills/types.js.map +1 -0
- package/dist/lib/service/task/TaskGraphService.d.ts +15 -6
- package/dist/lib/service/task/TaskGraphService.d.ts.map +1 -1
- package/dist/lib/service/task/TaskGraphService.js +55 -5
- package/dist/lib/service/task/TaskGraphService.js.map +1 -1
- package/dist/lib/service/task/TaskKnowledgeBridge.d.ts +90 -25
- package/dist/lib/service/task/TaskKnowledgeBridge.d.ts.map +1 -1
- package/dist/lib/service/task/TaskKnowledgeBridge.js +253 -35
- package/dist/lib/service/task/TaskKnowledgeBridge.js.map +1 -1
- package/dist/lib/service/vector/ContextualEnricher.d.ts +62 -0
- package/dist/lib/service/vector/ContextualEnricher.d.ts.map +1 -0
- package/dist/lib/service/vector/ContextualEnricher.js +150 -0
- package/dist/lib/service/vector/ContextualEnricher.js.map +1 -0
- package/dist/lib/service/vector/SyncCoordinator.d.ts +63 -0
- package/dist/lib/service/vector/SyncCoordinator.d.ts.map +1 -0
- package/dist/lib/service/vector/SyncCoordinator.js +290 -0
- package/dist/lib/service/vector/SyncCoordinator.js.map +1 -0
- package/dist/lib/service/vector/VectorService.d.ts +176 -0
- package/dist/lib/service/vector/VectorService.d.ts.map +1 -0
- package/dist/lib/service/vector/VectorService.js +456 -0
- package/dist/lib/service/vector/VectorService.js.map +1 -0
- package/dist/lib/service/wiki/WikiGenerator.d.ts.map +1 -1
- package/dist/lib/service/wiki/WikiGenerator.js +2 -1
- package/dist/lib/service/wiki/WikiGenerator.js.map +1 -1
- package/dist/lib/service/wiki/WikiRenderers.d.ts +4 -128
- package/dist/lib/service/wiki/WikiRenderers.d.ts.map +1 -1
- package/dist/lib/service/wiki/WikiRenderers.js +2 -0
- package/dist/lib/service/wiki/WikiRenderers.js.map +1 -1
- package/dist/lib/service/wiki/WikiTypes.d.ts +146 -0
- package/dist/lib/service/wiki/WikiTypes.d.ts.map +1 -0
- package/dist/lib/service/wiki/WikiTypes.js +10 -0
- package/dist/lib/service/wiki/WikiTypes.js.map +1 -0
- package/dist/lib/service/wiki/WikiUtils.d.ts.map +1 -1
- package/dist/lib/service/wiki/WikiUtils.js +2 -1
- package/dist/lib/service/wiki/WikiUtils.js.map +1 -1
- package/dist/lib/shared/PathGuard.d.ts.map +1 -1
- package/dist/lib/shared/PathGuard.js +8 -17
- package/dist/lib/shared/PathGuard.js.map +1 -1
- package/dist/lib/shared/ProjectMarkers.d.ts +67 -0
- package/dist/lib/shared/ProjectMarkers.d.ts.map +1 -0
- package/dist/lib/shared/ProjectMarkers.js +142 -0
- package/dist/lib/shared/ProjectMarkers.js.map +1 -0
- package/dist/lib/shared/schemas/mcp-tools.d.ts +3 -0
- package/dist/lib/shared/schemas/mcp-tools.d.ts.map +1 -1
- package/dist/lib/shared/schemas/mcp-tools.js +6 -0
- package/dist/lib/shared/schemas/mcp-tools.js.map +1 -1
- package/package.json +5 -1
- package/templates/constitution.yaml +23 -2
- package/dist/lib/service/search/InvertedIndex.d.ts +0 -34
- package/dist/lib/service/search/InvertedIndex.d.ts.map +0 -1
- package/dist/lib/service/search/InvertedIndex.js +0 -83
- package/dist/lib/service/search/InvertedIndex.js.map +0 -1
- package/dist/lib/service/search/RetrievalFunnel.d.ts +0 -26
- package/dist/lib/service/search/RetrievalFunnel.d.ts.map +0 -1
- package/dist/lib/service/search/RetrievalFunnel.js +0 -77
- package/dist/lib/service/search/RetrievalFunnel.js.map +0 -1
|
@@ -1,32 +1,62 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* MCP Handlers — 搜索类
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
*
|
|
4
|
+
* v2: 合并原 4 个搜索函数(search / contextSearch / keywordSearch / semanticSearch)
|
|
5
|
+
* 为统一 search() 入口,通过 mode 参数路由。
|
|
6
|
+
* consolidated.ts 的 mode 路由直接指向本函数。
|
|
6
7
|
*
|
|
7
8
|
* 设计原则:
|
|
8
9
|
* 1. 通过 container.get('searchEngine') 获取 singleton 实例(含 vectorStore + aiProvider)
|
|
9
10
|
* 2. 统一 responseTime、byKind 分组、kind 过滤
|
|
10
|
-
* 3.
|
|
11
|
+
* 3. 投影使用 SearchTypes.slimSearchResult()(消除 3 处重复投影)
|
|
11
12
|
*/
|
|
12
|
-
import
|
|
13
|
+
import { type SlimSearchResult } from '#service/search/SearchTypes.js';
|
|
14
|
+
import type { McpContext, SearchArgs, SearchResultItem } from './types.js';
|
|
13
15
|
/**
|
|
14
|
-
*
|
|
16
|
+
* 统一搜索入口 — 支持 auto / keyword / bm25 / semantic / context 五种模式
|
|
17
|
+
*
|
|
18
|
+
* 合并了原 search / contextSearch / keywordSearch / semanticSearch 4 个函数。
|
|
19
|
+
* mode 路由:
|
|
20
|
+
* - auto (默认): BM25 + semantic 融合 + Ranking Pipeline
|
|
21
|
+
* - keyword: SQL LIKE 精确匹配,适合已知函数名/类名
|
|
22
|
+
* - bm25: BM25 (TF-IDF) 排序搜索
|
|
23
|
+
* - semantic: 向量语义搜索(不可用时降级 BM25)
|
|
24
|
+
* - context: BM25 + Ranking Pipeline + 会话上下文加成
|
|
15
25
|
*
|
|
16
|
-
*
|
|
17
|
-
* 支持 kind 过滤(rule/pattern/fact)和 byKind 自动分组。
|
|
26
|
+
* 所有模式共享: kind 过滤 → slimSearchResult 投影 → byKind 分组
|
|
18
27
|
*/
|
|
19
28
|
export declare function search(ctx: McpContext, args: SearchArgs): Promise<{
|
|
20
29
|
success: boolean;
|
|
21
30
|
errorCode: string | null;
|
|
22
31
|
message: string;
|
|
23
32
|
data: {
|
|
33
|
+
metadata?: {
|
|
34
|
+
responseTimeMs: number;
|
|
35
|
+
totalResults: any;
|
|
36
|
+
kindCounts: {
|
|
37
|
+
rule: number;
|
|
38
|
+
pattern: number;
|
|
39
|
+
fact: number;
|
|
40
|
+
};
|
|
41
|
+
} | undefined;
|
|
42
|
+
degraded?: boolean | undefined;
|
|
43
|
+
degradedReason?: string | undefined;
|
|
24
44
|
query: string;
|
|
25
45
|
mode: any;
|
|
26
46
|
kind: string | undefined;
|
|
27
47
|
totalResults: any;
|
|
28
48
|
items: any;
|
|
29
|
-
byKind:
|
|
49
|
+
byKind: {
|
|
50
|
+
rule: {
|
|
51
|
+
kind?: string;
|
|
52
|
+
}[];
|
|
53
|
+
pattern: {
|
|
54
|
+
kind?: string;
|
|
55
|
+
}[];
|
|
56
|
+
fact: {
|
|
57
|
+
kind?: string;
|
|
58
|
+
}[];
|
|
59
|
+
};
|
|
30
60
|
kindCounts: {
|
|
31
61
|
rule: number;
|
|
32
62
|
pattern: number;
|
|
@@ -40,22 +70,13 @@ export declare function search(ctx: McpContext, args: SearchArgs): Promise<{
|
|
|
40
70
|
tool?: string | undefined;
|
|
41
71
|
};
|
|
42
72
|
}>;
|
|
43
|
-
/**
|
|
44
|
-
* 智能上下文搜索 —— SearchEngine 内置 Ranking Pipeline
|
|
45
|
-
*
|
|
46
|
-
* 设计原则:MCP 调用方是外部 AI Agent,意图识别由 Agent 自行完成。
|
|
47
|
-
* 本工具聚焦数据检索:BM25 召回 + CoarseRanker + MultiSignalRanker + 上下文加成
|
|
48
|
-
*
|
|
49
|
-
* 特色:byKind 分组、个性化推荐、会话连续性
|
|
50
|
-
*/
|
|
73
|
+
/** contextSearch — mode='context' 的别名 */
|
|
51
74
|
export declare function contextSearch(ctx: McpContext, args: SearchArgs): Promise<{
|
|
52
75
|
success: boolean;
|
|
53
76
|
errorCode: string | null;
|
|
54
77
|
message: string;
|
|
55
78
|
data: {
|
|
56
|
-
|
|
57
|
-
byKind: ByKindGroup;
|
|
58
|
-
metadata: {
|
|
79
|
+
metadata?: {
|
|
59
80
|
responseTimeMs: number;
|
|
60
81
|
totalResults: any;
|
|
61
82
|
kindCounts: {
|
|
@@ -63,6 +84,29 @@ export declare function contextSearch(ctx: McpContext, args: SearchArgs): Promis
|
|
|
63
84
|
pattern: number;
|
|
64
85
|
fact: number;
|
|
65
86
|
};
|
|
87
|
+
} | undefined;
|
|
88
|
+
degraded?: boolean | undefined;
|
|
89
|
+
degradedReason?: string | undefined;
|
|
90
|
+
query: string;
|
|
91
|
+
mode: any;
|
|
92
|
+
kind: string | undefined;
|
|
93
|
+
totalResults: any;
|
|
94
|
+
items: any;
|
|
95
|
+
byKind: {
|
|
96
|
+
rule: {
|
|
97
|
+
kind?: string;
|
|
98
|
+
}[];
|
|
99
|
+
pattern: {
|
|
100
|
+
kind?: string;
|
|
101
|
+
}[];
|
|
102
|
+
fact: {
|
|
103
|
+
kind?: string;
|
|
104
|
+
}[];
|
|
105
|
+
};
|
|
106
|
+
kindCounts: {
|
|
107
|
+
rule: number;
|
|
108
|
+
pattern: number;
|
|
109
|
+
fact: number;
|
|
66
110
|
};
|
|
67
111
|
} | null;
|
|
68
112
|
meta: {
|
|
@@ -72,24 +116,39 @@ export declare function contextSearch(ctx: McpContext, args: SearchArgs): Promis
|
|
|
72
116
|
tool?: string | undefined;
|
|
73
117
|
};
|
|
74
118
|
}>;
|
|
75
|
-
/**
|
|
76
|
-
* 纯关键词精确匹配 —— SQL LIKE 查询,适合已知函数名/类名/变量名。
|
|
77
|
-
* 与 search/semantic_search 的 BM25/向量搜索互补:
|
|
78
|
-
* - keyword_search 对精确字符串(ObjC 方法名、类名前缀)最快最准
|
|
79
|
-
* - search 对模糊查询更好(BM25 词频权重)
|
|
80
|
-
* - semantic_search 对自然语言意图最好(向量相似度)
|
|
81
|
-
*/
|
|
119
|
+
/** keywordSearch — mode='keyword' 的别名 */
|
|
82
120
|
export declare function keywordSearch(ctx: McpContext, args: SearchArgs): Promise<{
|
|
83
121
|
success: boolean;
|
|
84
122
|
errorCode: string | null;
|
|
85
123
|
message: string;
|
|
86
124
|
data: {
|
|
125
|
+
metadata?: {
|
|
126
|
+
responseTimeMs: number;
|
|
127
|
+
totalResults: any;
|
|
128
|
+
kindCounts: {
|
|
129
|
+
rule: number;
|
|
130
|
+
pattern: number;
|
|
131
|
+
fact: number;
|
|
132
|
+
};
|
|
133
|
+
} | undefined;
|
|
134
|
+
degraded?: boolean | undefined;
|
|
135
|
+
degradedReason?: string | undefined;
|
|
87
136
|
query: string;
|
|
88
|
-
mode:
|
|
137
|
+
mode: any;
|
|
89
138
|
kind: string | undefined;
|
|
90
139
|
totalResults: any;
|
|
91
140
|
items: any;
|
|
92
|
-
byKind:
|
|
141
|
+
byKind: {
|
|
142
|
+
rule: {
|
|
143
|
+
kind?: string;
|
|
144
|
+
}[];
|
|
145
|
+
pattern: {
|
|
146
|
+
kind?: string;
|
|
147
|
+
}[];
|
|
148
|
+
fact: {
|
|
149
|
+
kind?: string;
|
|
150
|
+
}[];
|
|
151
|
+
};
|
|
93
152
|
kindCounts: {
|
|
94
153
|
rule: number;
|
|
95
154
|
pattern: number;
|
|
@@ -103,26 +162,39 @@ export declare function keywordSearch(ctx: McpContext, args: SearchArgs): Promis
|
|
|
103
162
|
tool?: string | undefined;
|
|
104
163
|
};
|
|
105
164
|
}>;
|
|
106
|
-
/**
|
|
107
|
-
* 向量语义搜索 —— 基于 embedding 的相似度检索。
|
|
108
|
-
* 通过 container singleton 的 SearchEngine(含 vectorStore + aiProvider)执行真正的向量搜索。
|
|
109
|
-
* 如果向量引擎不可用会自动降级到 BM25,并在 actualMode 标注。
|
|
110
|
-
*
|
|
111
|
-
* kind 过滤 + byKind 分组一致性。
|
|
112
|
-
*/
|
|
165
|
+
/** semanticSearch — mode='semantic' 的别名 */
|
|
113
166
|
export declare function semanticSearch(ctx: McpContext, args: SearchArgs): Promise<{
|
|
114
167
|
success: boolean;
|
|
115
168
|
errorCode: string | null;
|
|
116
169
|
message: string;
|
|
117
170
|
data: {
|
|
171
|
+
metadata?: {
|
|
172
|
+
responseTimeMs: number;
|
|
173
|
+
totalResults: any;
|
|
174
|
+
kindCounts: {
|
|
175
|
+
rule: number;
|
|
176
|
+
pattern: number;
|
|
177
|
+
fact: number;
|
|
178
|
+
};
|
|
179
|
+
} | undefined;
|
|
180
|
+
degraded?: boolean | undefined;
|
|
181
|
+
degradedReason?: string | undefined;
|
|
118
182
|
query: string;
|
|
119
183
|
mode: any;
|
|
120
184
|
kind: string | undefined;
|
|
121
|
-
degraded: boolean;
|
|
122
|
-
degradedReason: string | undefined;
|
|
123
185
|
totalResults: any;
|
|
124
186
|
items: any;
|
|
125
|
-
byKind:
|
|
187
|
+
byKind: {
|
|
188
|
+
rule: {
|
|
189
|
+
kind?: string;
|
|
190
|
+
}[];
|
|
191
|
+
pattern: {
|
|
192
|
+
kind?: string;
|
|
193
|
+
}[];
|
|
194
|
+
fact: {
|
|
195
|
+
kind?: string;
|
|
196
|
+
}[];
|
|
197
|
+
};
|
|
126
198
|
kindCounts: {
|
|
127
199
|
rule: number;
|
|
128
200
|
pattern: number;
|
|
@@ -136,4 +208,8 @@ export declare function semanticSearch(ctx: McpContext, args: SearchArgs): Promi
|
|
|
136
208
|
tool?: string | undefined;
|
|
137
209
|
};
|
|
138
210
|
}>;
|
|
211
|
+
/**
|
|
212
|
+
* @deprecated Use `slimSearchResult` from `SearchTypes.ts` instead
|
|
213
|
+
*/
|
|
214
|
+
export declare function _slimSearchItem(item: SearchResultItem): SlimSearchResult;
|
|
139
215
|
//# sourceMappingURL=search.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../../lib/external/mcp/handlers/search.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../../lib/external/mcp/handlers/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAEL,KAAK,gBAAgB,EAEtB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAwC3E;;;;;;;;;;;;GAYG;AACH,wBAAsB,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmG7D;AAKD,yCAAyC;AACzC,wBAAgB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAE9D;AAED,yCAAyC;AACzC,wBAAgB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAE9D;AAED,2CAA2C;AAC3C,wBAAgB,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAE/D;AAqBD;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAExE"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* MCP Handlers — 搜索类
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
*
|
|
4
|
+
* v2: 合并原 4 个搜索函数(search / contextSearch / keywordSearch / semanticSearch)
|
|
5
|
+
* 为统一 search() 入口,通过 mode 参数路由。
|
|
6
|
+
* consolidated.ts 的 mode 路由直接指向本函数。
|
|
6
7
|
*
|
|
7
8
|
* 设计原则:
|
|
8
9
|
* 1. 通过 container.get('searchEngine') 获取 singleton 实例(含 vectorStore + aiProvider)
|
|
9
10
|
* 2. 统一 responseTime、byKind 分组、kind 过滤
|
|
10
|
-
* 3.
|
|
11
|
+
* 3. 投影使用 SearchTypes.slimSearchResult()(消除 3 处重复投影)
|
|
11
12
|
*/
|
|
13
|
+
import { groupByKind, slimSearchResult, } from '#service/search/SearchTypes.js';
|
|
12
14
|
import { envelope } from '../envelope.js';
|
|
13
15
|
// ─── 工具函数 ────────────────────────────────────────────────
|
|
14
16
|
/**
|
|
@@ -41,72 +43,67 @@ function filterByKind(items, kind) {
|
|
|
41
43
|
}
|
|
42
44
|
return items.filter((it) => (it.kind || it.metadata?.kind || 'pattern') === kind);
|
|
43
45
|
}
|
|
46
|
+
// ─── 统一搜索入口 ────────────────────────────────────────────
|
|
44
47
|
/**
|
|
45
|
-
*
|
|
48
|
+
* 统一搜索入口 — 支持 auto / keyword / bm25 / semantic / context 五种模式
|
|
46
49
|
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const actionHint = doText || whenText
|
|
55
|
-
? `${whenText ? `${whenText} → ` : ''}${doText}`.replace(/ → $/, '')
|
|
56
|
-
: undefined;
|
|
57
|
-
return {
|
|
58
|
-
id: item.id,
|
|
59
|
-
title: item.title,
|
|
60
|
-
trigger: item.trigger || '',
|
|
61
|
-
kind: item.kind || 'pattern',
|
|
62
|
-
language: item.language || '',
|
|
63
|
-
score: item.score,
|
|
64
|
-
description: (item.description || '').slice(0, 120),
|
|
65
|
-
actionHint,
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* items → slim byKind 分组
|
|
70
|
-
*/
|
|
71
|
-
function _slimGroupByKind(items) {
|
|
72
|
-
const byKind = { rule: [], pattern: [], fact: [] };
|
|
73
|
-
for (const it of items) {
|
|
74
|
-
const kind = it.kind || 'pattern';
|
|
75
|
-
const bucket = byKind[kind] || byKind.pattern;
|
|
76
|
-
bucket.push(it);
|
|
77
|
-
}
|
|
78
|
-
return byKind;
|
|
79
|
-
}
|
|
80
|
-
// ─── 1. autosnippet_search — 统合搜索入口 ─────────────────────
|
|
81
|
-
/**
|
|
82
|
-
* 智能统合搜索 —— 支持 auto/keyword/bm25/semantic 四种模式
|
|
50
|
+
* 合并了原 search / contextSearch / keywordSearch / semanticSearch 4 个函数。
|
|
51
|
+
* mode 路由:
|
|
52
|
+
* - auto (默认): BM25 + semantic 融合 + Ranking Pipeline
|
|
53
|
+
* - keyword: SQL LIKE 精确匹配,适合已知函数名/类名
|
|
54
|
+
* - bm25: BM25 (TF-IDF) 排序搜索
|
|
55
|
+
* - semantic: 向量语义搜索(不可用时降级 BM25)
|
|
56
|
+
* - context: BM25 + Ranking Pipeline + 会话上下文加成
|
|
83
57
|
*
|
|
84
|
-
*
|
|
85
|
-
* 支持 kind 过滤(rule/pattern/fact)和 byKind 自动分组。
|
|
58
|
+
* 所有模式共享: kind 过滤 → slimSearchResult 投影 → byKind 分组
|
|
86
59
|
*/
|
|
87
60
|
export async function search(ctx, args) {
|
|
88
61
|
const t0 = Date.now();
|
|
89
62
|
const engine = getSearchEngine(ctx) || (await getFallbackEngine(ctx));
|
|
90
63
|
const query = args.query;
|
|
91
|
-
const limit = args.limit || 10;
|
|
92
|
-
const kind = args.kind || args.type || 'all';
|
|
93
64
|
const mode = args.mode || 'auto';
|
|
94
|
-
|
|
65
|
+
const kind = args.kind || args.type || 'all';
|
|
66
|
+
// ── Mode-specific 参数适配 ──
|
|
67
|
+
// context 模式: 默认 limit=5, 传递 sessionHistory
|
|
68
|
+
const isContext = mode === 'context';
|
|
69
|
+
const limit = args.limit ?? (isContext ? 5 : 10);
|
|
70
|
+
// keyword 模式不排序(默认),其他模式排序
|
|
71
|
+
const rank = mode !== 'keyword';
|
|
72
|
+
// context 模式额外传递会话上下文
|
|
73
|
+
const context = isContext
|
|
74
|
+
? {
|
|
75
|
+
intent: 'search',
|
|
76
|
+
language: args.language,
|
|
77
|
+
sessionHistory: args.sessionHistory || [],
|
|
78
|
+
}
|
|
79
|
+
: undefined;
|
|
80
|
+
// kind 过滤时过采样 2x 以保证过滤后仍有足够结果
|
|
81
|
+
const recallLimit = kind !== 'all' ? limit * 2 : limit;
|
|
82
|
+
// semantic 模式也过采样 2x(向量搜索可能有噪声)
|
|
83
|
+
const engineLimit = mode === 'semantic' ? recallLimit * 2 : recallLimit;
|
|
84
|
+
// ── 统一调用 SearchEngine ──
|
|
95
85
|
const result = await engine.search(query, {
|
|
96
|
-
mode,
|
|
97
|
-
limit:
|
|
98
|
-
rank
|
|
86
|
+
mode: isContext ? 'bm25' : mode,
|
|
87
|
+
limit: engineLimit,
|
|
88
|
+
rank,
|
|
99
89
|
groupByKind: true,
|
|
90
|
+
context,
|
|
100
91
|
});
|
|
101
92
|
let items = result?.items || [];
|
|
102
93
|
const actualMode = result?.mode || mode;
|
|
103
|
-
//
|
|
94
|
+
// ── Kind 过滤 + 截断 ──
|
|
104
95
|
items = filterByKind(items, kind);
|
|
105
96
|
items = items.slice(0, limit);
|
|
106
|
-
//
|
|
107
|
-
const slimItems = items.map(
|
|
108
|
-
const
|
|
97
|
+
// ── 统一投影: slimSearchResult() ──
|
|
98
|
+
const slimItems = items.map(slimSearchResult);
|
|
99
|
+
const byKindGroups = groupByKind(slimItems);
|
|
109
100
|
const elapsed = Date.now() - t0;
|
|
101
|
+
// ── 构造工具名称 ──
|
|
102
|
+
const toolName = _toolName(mode);
|
|
103
|
+
// ── semantic 降级提示 ──
|
|
104
|
+
const degraded = mode === 'semantic' && actualMode !== 'semantic';
|
|
105
|
+
// ── 统一响应格式 ──
|
|
106
|
+
const source = result?.ranked ? 'search-engine+ranking' : 'search-engine';
|
|
110
107
|
return envelope({
|
|
111
108
|
success: true,
|
|
112
109
|
data: {
|
|
@@ -115,151 +112,71 @@ export async function search(ctx, args) {
|
|
|
115
112
|
kind: kind === 'all' ? undefined : kind,
|
|
116
113
|
totalResults: slimItems.length,
|
|
117
114
|
items: slimItems,
|
|
118
|
-
byKind,
|
|
115
|
+
byKind: byKindGroups,
|
|
119
116
|
kindCounts: {
|
|
120
|
-
rule:
|
|
121
|
-
pattern:
|
|
122
|
-
fact:
|
|
117
|
+
rule: byKindGroups.rule.length,
|
|
118
|
+
pattern: byKindGroups.pattern.length,
|
|
119
|
+
fact: byKindGroups.fact.length,
|
|
123
120
|
},
|
|
121
|
+
// semantic 模式专属: 降级提示
|
|
122
|
+
...(mode === 'semantic'
|
|
123
|
+
? {
|
|
124
|
+
degraded,
|
|
125
|
+
degradedReason: degraded ? 'vectorStore/aiProvider 不可用,已降级到 BM25' : undefined,
|
|
126
|
+
}
|
|
127
|
+
: {}),
|
|
128
|
+
// context 模式专属: metadata 包装(保持向后兼容)
|
|
129
|
+
...(isContext
|
|
130
|
+
? {
|
|
131
|
+
metadata: {
|
|
132
|
+
responseTimeMs: elapsed,
|
|
133
|
+
totalResults: slimItems.length,
|
|
134
|
+
kindCounts: {
|
|
135
|
+
rule: byKindGroups.rule.length,
|
|
136
|
+
pattern: byKindGroups.pattern.length,
|
|
137
|
+
fact: byKindGroups.fact.length,
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
}
|
|
141
|
+
: {}),
|
|
124
142
|
},
|
|
125
|
-
meta: { tool:
|
|
143
|
+
meta: { tool: toolName, source, responseTimeMs: elapsed },
|
|
126
144
|
});
|
|
127
145
|
}
|
|
128
|
-
// ───
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
* 本工具聚焦数据检索:BM25 召回 + CoarseRanker + MultiSignalRanker + 上下文加成
|
|
134
|
-
*
|
|
135
|
-
* 特色:byKind 分组、个性化推荐、会话连续性
|
|
136
|
-
*/
|
|
137
|
-
export async function contextSearch(ctx, args) {
|
|
138
|
-
const t0 = Date.now();
|
|
139
|
-
const engine = getSearchEngine(ctx) || (await getFallbackEngine(ctx));
|
|
140
|
-
const limit = args.limit ?? 5;
|
|
141
|
-
const result = await engine.search(args.query, {
|
|
142
|
-
mode: 'bm25',
|
|
143
|
-
limit,
|
|
144
|
-
rank: true,
|
|
145
|
-
groupByKind: true,
|
|
146
|
-
context: {
|
|
147
|
-
intent: 'search',
|
|
148
|
-
language: args.language,
|
|
149
|
-
sessionHistory: args.sessionHistory || [],
|
|
150
|
-
},
|
|
151
|
-
});
|
|
152
|
-
const items = (result?.items || []).slice(0, limit);
|
|
153
|
-
const slimItems = items.map(_slimSearchItem);
|
|
154
|
-
const byKind = _slimGroupByKind(slimItems);
|
|
155
|
-
const elapsed = Date.now() - t0;
|
|
156
|
-
const source = result?.ranked ? 'search-engine+ranking' : 'search-engine';
|
|
157
|
-
return envelope({
|
|
158
|
-
success: true,
|
|
159
|
-
data: {
|
|
160
|
-
items: slimItems,
|
|
161
|
-
byKind,
|
|
162
|
-
metadata: {
|
|
163
|
-
responseTimeMs: elapsed,
|
|
164
|
-
totalResults: slimItems.length,
|
|
165
|
-
kindCounts: {
|
|
166
|
-
rule: byKind.rule.length,
|
|
167
|
-
pattern: byKind.pattern.length,
|
|
168
|
-
fact: byKind.fact.length,
|
|
169
|
-
},
|
|
170
|
-
},
|
|
171
|
-
},
|
|
172
|
-
meta: { tool: 'autosnippet_context_search', source, responseTimeMs: elapsed },
|
|
173
|
-
});
|
|
146
|
+
// ─── Backward-compatible aliases ────────────────────────────
|
|
147
|
+
// consolidated.ts 按 mode 路由时直接调用这些别名
|
|
148
|
+
/** contextSearch — mode='context' 的别名 */
|
|
149
|
+
export function contextSearch(ctx, args) {
|
|
150
|
+
return search(ctx, { ...args, mode: 'context' });
|
|
174
151
|
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
*/
|
|
183
|
-
export async function keywordSearch(ctx, args) {
|
|
184
|
-
const t0 = Date.now();
|
|
185
|
-
const engine = getSearchEngine(ctx) || (await getFallbackEngine(ctx));
|
|
186
|
-
const query = args.query;
|
|
187
|
-
const limit = args.limit || 10;
|
|
188
|
-
const kind = args.kind || 'all';
|
|
189
|
-
const result = await engine.search(query, {
|
|
190
|
-
mode: 'keyword',
|
|
191
|
-
limit,
|
|
192
|
-
groupByKind: true,
|
|
193
|
-
});
|
|
194
|
-
let items = result?.items || [];
|
|
195
|
-
items = filterByKind(items, kind).slice(0, limit);
|
|
196
|
-
const slimItems = items.map(_slimSearchItem);
|
|
197
|
-
const byKind = _slimGroupByKind(slimItems);
|
|
198
|
-
const elapsed = Date.now() - t0;
|
|
199
|
-
return envelope({
|
|
200
|
-
success: true,
|
|
201
|
-
data: {
|
|
202
|
-
query,
|
|
203
|
-
mode: 'keyword',
|
|
204
|
-
kind: kind === 'all' ? undefined : kind,
|
|
205
|
-
totalResults: slimItems.length,
|
|
206
|
-
items: slimItems,
|
|
207
|
-
byKind,
|
|
208
|
-
kindCounts: {
|
|
209
|
-
rule: byKind.rule.length,
|
|
210
|
-
pattern: byKind.pattern.length,
|
|
211
|
-
fact: byKind.fact.length,
|
|
212
|
-
},
|
|
213
|
-
},
|
|
214
|
-
meta: { tool: 'autosnippet_keyword_search', responseTimeMs: elapsed },
|
|
215
|
-
});
|
|
152
|
+
/** keywordSearch — mode='keyword' 的别名 */
|
|
153
|
+
export function keywordSearch(ctx, args) {
|
|
154
|
+
return search(ctx, { ...args, mode: 'keyword' });
|
|
155
|
+
}
|
|
156
|
+
/** semanticSearch — mode='semantic' 的别名 */
|
|
157
|
+
export function semanticSearch(ctx, args) {
|
|
158
|
+
return search(ctx, { ...args, mode: 'semantic' });
|
|
216
159
|
}
|
|
217
|
-
// ───
|
|
160
|
+
// ─── 内部辅助 ────────────────────────────────────────────────
|
|
161
|
+
/** 根据 mode 返回对应的 MCP 工具名称 */
|
|
162
|
+
function _toolName(mode) {
|
|
163
|
+
switch (mode) {
|
|
164
|
+
case 'context':
|
|
165
|
+
return 'autosnippet_context_search';
|
|
166
|
+
case 'keyword':
|
|
167
|
+
return 'autosnippet_keyword_search';
|
|
168
|
+
case 'semantic':
|
|
169
|
+
return 'autosnippet_semantic_search';
|
|
170
|
+
default:
|
|
171
|
+
return 'autosnippet_search';
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// ─── Re-export slim projection for backward compatibility ────
|
|
175
|
+
// (部分内部模块可能直接 import 了这些)
|
|
218
176
|
/**
|
|
219
|
-
*
|
|
220
|
-
* 通过 container singleton 的 SearchEngine(含 vectorStore + aiProvider)执行真正的向量搜索。
|
|
221
|
-
* 如果向量引擎不可用会自动降级到 BM25,并在 actualMode 标注。
|
|
222
|
-
*
|
|
223
|
-
* kind 过滤 + byKind 分组一致性。
|
|
177
|
+
* @deprecated Use `slimSearchResult` from `SearchTypes.ts` instead
|
|
224
178
|
*/
|
|
225
|
-
export
|
|
226
|
-
|
|
227
|
-
const engine = getSearchEngine(ctx) || (await getFallbackEngine(ctx));
|
|
228
|
-
const query = args.query;
|
|
229
|
-
const limit = args.limit || 10;
|
|
230
|
-
const kind = args.kind || 'all';
|
|
231
|
-
const result = await engine.search(query, {
|
|
232
|
-
mode: 'semantic',
|
|
233
|
-
limit: limit * 2,
|
|
234
|
-
rank: true,
|
|
235
|
-
groupByKind: true,
|
|
236
|
-
});
|
|
237
|
-
let items = result?.items || [];
|
|
238
|
-
const actualMode = result?.mode || 'semantic';
|
|
239
|
-
items = filterByKind(items, kind).slice(0, limit);
|
|
240
|
-
const slimItems = items.map(_slimSearchItem);
|
|
241
|
-
const byKind = _slimGroupByKind(slimItems);
|
|
242
|
-
const elapsed = Date.now() - t0;
|
|
243
|
-
// 提示 AI Agent 当前实际模式
|
|
244
|
-
const degraded = actualMode !== 'semantic';
|
|
245
|
-
return envelope({
|
|
246
|
-
success: true,
|
|
247
|
-
data: {
|
|
248
|
-
query,
|
|
249
|
-
mode: actualMode,
|
|
250
|
-
kind: kind === 'all' ? undefined : kind,
|
|
251
|
-
degraded,
|
|
252
|
-
degradedReason: degraded ? 'vectorStore/aiProvider 不可用,已降级到 BM25' : undefined,
|
|
253
|
-
totalResults: slimItems.length,
|
|
254
|
-
items: slimItems,
|
|
255
|
-
byKind,
|
|
256
|
-
kindCounts: {
|
|
257
|
-
rule: byKind.rule.length,
|
|
258
|
-
pattern: byKind.pattern.length,
|
|
259
|
-
fact: byKind.fact.length,
|
|
260
|
-
},
|
|
261
|
-
},
|
|
262
|
-
meta: { tool: 'autosnippet_semantic_search', responseTimeMs: elapsed },
|
|
263
|
-
});
|
|
179
|
+
export function _slimSearchItem(item) {
|
|
180
|
+
return slimSearchResult(item);
|
|
264
181
|
}
|
|
265
182
|
//# sourceMappingURL=search.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../../../lib/external/mcp/handlers/search.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../../../lib/external/mcp/handlers/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -79,5 +79,22 @@ export declare function updateSkill(ctx: McpContext | null, args: UpdateSkillArg
|
|
|
79
79
|
* @returns {Promise<string>} JSON envelope
|
|
80
80
|
*/
|
|
81
81
|
export declare function suggestSkills(ctx: McpContext): Promise<string>;
|
|
82
|
+
/**
|
|
83
|
+
* 记录推荐反馈
|
|
84
|
+
*
|
|
85
|
+
* operation: 'feedback'
|
|
86
|
+
* @param args.recommendationId 推荐 ID
|
|
87
|
+
* @param args.action 'adopted' | 'dismissed' | 'expired' | 'viewed' | 'modified'
|
|
88
|
+
* @param args.reason 可选 — 忽略原因
|
|
89
|
+
* @param args.source 可选 — 推荐来源
|
|
90
|
+
* @param args.category 可选 — 推荐类别
|
|
91
|
+
*/
|
|
92
|
+
export declare function recordFeedback(ctx: McpContext, args: {
|
|
93
|
+
recommendationId?: string;
|
|
94
|
+
action?: string;
|
|
95
|
+
reason?: string;
|
|
96
|
+
source?: string;
|
|
97
|
+
category?: string;
|
|
98
|
+
}): Promise<string>;
|
|
82
99
|
export {};
|
|
83
100
|
//# sourceMappingURL=skill.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../../../../lib/external/mcp/handlers/skill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAqE7C;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,IAAI,UA6EjD;AAMD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,EAAE,IAAI,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../../../../lib/external/mcp/handlers/skill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAqE7C;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,IAAI,UA6EjD;AAMD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,EAAE,IAAI,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,UA2F/F;AAMD;;;;;;;GAOG;AACH,UAAU,eAAe;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,EAAE,IAAI,EAAE,eAAe,UAoIxE;AAyED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,EAAE,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,UAkF1E;AAMD;;;;;;;GAOG;AACH,UAAU,eAAe;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,EAAE,IAAI,EAAE,eAAe,UAiHxE;AAMD;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,mBAwDlD;AAuDD;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,UAAU,EACf,IAAI,EAAE;IACJ,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,mBAiEF"}
|