autosnippet 3.2.13 → 3.2.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +231 -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/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/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/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/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/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/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 +1 -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
|
@@ -5,223 +5,14 @@
|
|
|
5
5
|
* 从 V1 SearchServiceV2 迁移,适配 V2 架构
|
|
6
6
|
*/
|
|
7
7
|
import Logger from '../../infrastructure/logging/Logger.js';
|
|
8
|
+
import { BM25Scorer } from './BM25Scorer.js';
|
|
8
9
|
import { CoarseRanker } from './CoarseRanker.js';
|
|
9
10
|
import { MultiSignalRanker } from './MultiSignalRanker.js';
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
length: number;
|
|
16
|
-
meta: Record<string, unknown>;
|
|
17
|
-
}
|
|
18
|
-
/** BM25 search result */
|
|
19
|
-
interface BM25SearchResult {
|
|
20
|
-
id: string;
|
|
21
|
-
score: number;
|
|
22
|
-
meta: Record<string, unknown>;
|
|
23
|
-
}
|
|
24
|
-
/** Unified search result item flowing through the ranking pipeline */
|
|
25
|
-
interface SearchResultItem {
|
|
26
|
-
id: string;
|
|
27
|
-
title?: string;
|
|
28
|
-
description?: string;
|
|
29
|
-
trigger?: string;
|
|
30
|
-
type?: string;
|
|
31
|
-
kind?: string;
|
|
32
|
-
status?: string;
|
|
33
|
-
language?: string;
|
|
34
|
-
category?: string;
|
|
35
|
-
score?: number;
|
|
36
|
-
content?: string;
|
|
37
|
-
code?: string;
|
|
38
|
-
headers?: string;
|
|
39
|
-
moduleName?: string;
|
|
40
|
-
knowledgeType?: string;
|
|
41
|
-
bm25Score?: number;
|
|
42
|
-
qualityScore?: number;
|
|
43
|
-
usageCount?: number;
|
|
44
|
-
authorityScore?: number;
|
|
45
|
-
tags?: string[] | string;
|
|
46
|
-
difficulty?: string;
|
|
47
|
-
updatedAt?: string | null;
|
|
48
|
-
createdAt?: string | null;
|
|
49
|
-
whenClause?: string;
|
|
50
|
-
doClause?: string;
|
|
51
|
-
rankerScore?: number;
|
|
52
|
-
coarseScore?: number;
|
|
53
|
-
contextScore?: number;
|
|
54
|
-
recallScore?: number;
|
|
55
|
-
[key: string]: unknown;
|
|
56
|
-
}
|
|
57
|
-
/** Database row from knowledge_entries table */
|
|
58
|
-
interface DbRow {
|
|
59
|
-
id: string;
|
|
60
|
-
title?: string;
|
|
61
|
-
description?: string;
|
|
62
|
-
language?: string;
|
|
63
|
-
category?: string;
|
|
64
|
-
knowledgeType?: string;
|
|
65
|
-
kind?: string;
|
|
66
|
-
content?: string;
|
|
67
|
-
lifecycle?: string;
|
|
68
|
-
tags?: string;
|
|
69
|
-
trigger?: string;
|
|
70
|
-
difficulty?: string;
|
|
71
|
-
quality?: string;
|
|
72
|
-
stats?: string;
|
|
73
|
-
updatedAt?: string;
|
|
74
|
-
createdAt?: string;
|
|
75
|
-
status?: string;
|
|
76
|
-
headers?: string;
|
|
77
|
-
moduleName?: string;
|
|
78
|
-
whenClause?: string;
|
|
79
|
-
doClause?: string;
|
|
80
|
-
[key: string]: unknown;
|
|
81
|
-
}
|
|
82
|
-
/** Search method options */
|
|
83
|
-
interface SearchOptions {
|
|
84
|
-
type?: string;
|
|
85
|
-
limit?: number;
|
|
86
|
-
mode?: string;
|
|
87
|
-
context?: RankingContext;
|
|
88
|
-
rank?: boolean;
|
|
89
|
-
groupByKind?: boolean;
|
|
90
|
-
useAI?: boolean;
|
|
91
|
-
[key: string]: unknown;
|
|
92
|
-
}
|
|
93
|
-
/** Context for ranking pipeline */
|
|
94
|
-
interface RankingContext {
|
|
95
|
-
sessionHistory?: Array<{
|
|
96
|
-
content?: string;
|
|
97
|
-
rawInput?: string;
|
|
98
|
-
}>;
|
|
99
|
-
language?: string;
|
|
100
|
-
intent?: string;
|
|
101
|
-
[key: string]: unknown;
|
|
102
|
-
}
|
|
103
|
-
/** Search response envelope */
|
|
104
|
-
interface SearchResponse {
|
|
105
|
-
items: SearchResultItem[];
|
|
106
|
-
total: number;
|
|
107
|
-
query: string;
|
|
108
|
-
mode?: string;
|
|
109
|
-
type?: string;
|
|
110
|
-
ranked?: boolean;
|
|
111
|
-
byKind?: Record<string, SearchResultItem[]>;
|
|
112
|
-
}
|
|
113
|
-
/** Duck-typed database connection (better-sqlite3 style) */
|
|
114
|
-
interface SearchDb {
|
|
115
|
-
prepare(sql: string): {
|
|
116
|
-
all(...args: unknown[]): DbRow[];
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
/** AI provider with embedding capability */
|
|
120
|
-
interface SearchAiProvider {
|
|
121
|
-
embed(text: string): Promise<number[]>;
|
|
122
|
-
}
|
|
123
|
-
/** Vector store for semantic search */
|
|
124
|
-
interface SearchVectorStore {
|
|
125
|
-
query(embedding: number[], limit: number): Promise<VectorHit[]>;
|
|
126
|
-
hybridSearch?(embedding: number[], query: string, options: {
|
|
127
|
-
topK?: number;
|
|
128
|
-
}): Promise<VectorHit[]>;
|
|
129
|
-
}
|
|
130
|
-
/** Vector search hit */
|
|
131
|
-
interface VectorHit {
|
|
132
|
-
id: string;
|
|
133
|
-
similarity?: number;
|
|
134
|
-
score?: number;
|
|
135
|
-
content?: string;
|
|
136
|
-
metadata?: Record<string, unknown>;
|
|
137
|
-
item?: {
|
|
138
|
-
id: string;
|
|
139
|
-
content?: string;
|
|
140
|
-
metadata?: Record<string, unknown>;
|
|
141
|
-
};
|
|
142
|
-
[key: string]: unknown;
|
|
143
|
-
}
|
|
144
|
-
/** Hybrid retriever for RRF fusion */
|
|
145
|
-
interface SearchHybridRetriever {
|
|
146
|
-
search(query: string, queryEmbedding: number[], options: {
|
|
147
|
-
topK?: number;
|
|
148
|
-
alpha?: number;
|
|
149
|
-
sparseSearchFn?: () => SearchResultItem[];
|
|
150
|
-
}): Promise<RrfHit[]>;
|
|
151
|
-
}
|
|
152
|
-
/** Single RRF fusion hit */
|
|
153
|
-
interface RrfHit {
|
|
154
|
-
id: string;
|
|
155
|
-
score: number;
|
|
156
|
-
data?: {
|
|
157
|
-
item?: Record<string, unknown>;
|
|
158
|
-
[key: string]: unknown;
|
|
159
|
-
};
|
|
160
|
-
[key: string]: unknown;
|
|
161
|
-
}
|
|
162
|
-
/** Cross-encoder reranker abstraction */
|
|
163
|
-
interface SearchCrossEncoder {
|
|
164
|
-
rerank(query: string, candidates: SearchResultItem[]): Promise<SearchResultItem[]>;
|
|
165
|
-
}
|
|
166
|
-
/** SearchEngine constructor options */
|
|
167
|
-
interface SearchEngineOptions {
|
|
168
|
-
aiProvider?: SearchAiProvider | null;
|
|
169
|
-
vectorStore?: SearchVectorStore | null;
|
|
170
|
-
hybridRetriever?: SearchHybridRetriever | null;
|
|
171
|
-
crossEncoderReranker?: SearchCrossEncoder | null;
|
|
172
|
-
cacheMaxAge?: number;
|
|
173
|
-
fusionBm25Weight?: number;
|
|
174
|
-
fusionSemanticWeight?: number;
|
|
175
|
-
[key: string]: unknown;
|
|
176
|
-
}
|
|
177
|
-
/**
|
|
178
|
-
* 分词: 中英文混合分词
|
|
179
|
-
* 英文: camelCase / PascalCase 拆分 + 小写化
|
|
180
|
-
* 中文: 单字 + 二元组(bigram)— 无需分词词典即可支持子串匹配
|
|
181
|
-
*/
|
|
182
|
-
export declare function tokenize(text: string): string[];
|
|
183
|
-
/**
|
|
184
|
-
* BM25 评分器
|
|
185
|
-
*/
|
|
186
|
-
export declare class BM25Scorer {
|
|
187
|
-
_idIndex: Map<string, number>;
|
|
188
|
-
_totalLength: number;
|
|
189
|
-
avgLength: number;
|
|
190
|
-
docFreq: Record<string, number>;
|
|
191
|
-
documents: (BM25Document | null)[];
|
|
192
|
-
totalDocs: number;
|
|
193
|
-
constructor();
|
|
194
|
-
/**
|
|
195
|
-
* 添加文档到索引
|
|
196
|
-
*/
|
|
197
|
-
addDocument(id: string, text: string, meta?: Record<string, unknown>): void;
|
|
198
|
-
/**
|
|
199
|
-
* 移除文档(增量删除)
|
|
200
|
-
* 采用标记删除 + 懒清理策略:将文档标记为 null,当空洞率 > 30% 时自动压缩
|
|
201
|
-
* @returns {boolean} 是否成功移除
|
|
202
|
-
*/
|
|
203
|
-
removeDocument(id: string): boolean;
|
|
204
|
-
/**
|
|
205
|
-
* 更新文档(增量: remove + add)
|
|
206
|
-
*/
|
|
207
|
-
updateDocument(id: string, text: string, meta?: Record<string, unknown>): void;
|
|
208
|
-
/**
|
|
209
|
-
* 检查文档是否存在
|
|
210
|
-
*/
|
|
211
|
-
hasDocument(id: string): boolean;
|
|
212
|
-
/**
|
|
213
|
-
* 压缩 documents 数组,清除 tombstone 空洞
|
|
214
|
-
*/
|
|
215
|
-
_compact(): void;
|
|
216
|
-
/**
|
|
217
|
-
* 查询文档,返回按 BM25 分数排序的结果
|
|
218
|
-
*/
|
|
219
|
-
search(query: string, limit?: number): BM25SearchResult[];
|
|
220
|
-
/**
|
|
221
|
-
* 清空索引
|
|
222
|
-
*/
|
|
223
|
-
clear(): void;
|
|
224
|
-
}
|
|
11
|
+
import type { DbRow, RankingContext, SearchAiProvider, SearchCrossEncoder, SearchDb, SearchEngineOptions, SearchHybridRetriever, SearchOptions, SearchResponse, SearchResultItem, SearchVectorService, SearchVectorStore } from './SearchTypes.js';
|
|
12
|
+
export { BM25Scorer } from './BM25Scorer.js';
|
|
13
|
+
export type { BM25DocMeta, BM25SearchResult, DbRow, RankingContext, RrfHit, SearchAiProvider, SearchCrossEncoder, SearchDb, SearchEngineOptions, SearchHybridRetriever, SearchOptions, SearchResponse, SearchResultItem, SearchVectorService, SearchVectorStore, SlimSearchResult, VectorHit, } from './SearchTypes.js';
|
|
14
|
+
export { groupByKind, slimSearchResult } from './SearchTypes.js';
|
|
15
|
+
export { tokenize } from './tokenizer.js';
|
|
225
16
|
/**
|
|
226
17
|
* SearchEngine - 完整搜索服务
|
|
227
18
|
* 整合 BM25 + 关键词 + 可选 AI 增强
|
|
@@ -244,6 +35,7 @@ export declare class SearchEngine {
|
|
|
244
35
|
hybridRetriever: SearchHybridRetriever | null;
|
|
245
36
|
logger: ReturnType<typeof Logger.getInstance>;
|
|
246
37
|
scorer: BM25Scorer;
|
|
38
|
+
vectorService: SearchVectorService | null;
|
|
247
39
|
vectorStore: SearchVectorStore | null;
|
|
248
40
|
constructor(db: SearchDb & {
|
|
249
41
|
getDb?: () => SearchDb;
|
|
@@ -309,10 +101,13 @@ export declare class SearchEngine {
|
|
|
309
101
|
/**
|
|
310
102
|
* 关键词搜索 - 直接 SQL LIKE
|
|
311
103
|
* 返回包含 kind 字段的完整结果,使用 ESCAPE 防止通配符注入
|
|
104
|
+
* 当 SQL LIKE 无结果时,降级到 BM25 搜索以提升自然语言查询的召回率
|
|
312
105
|
*/
|
|
313
106
|
_keywordSearch(query: string, type: string, limit: number): SearchResultItem[];
|
|
314
107
|
/**
|
|
315
108
|
* BM25 排序搜索
|
|
109
|
+
* 增加 Title/Trigger 精确匹配 bonus — 当 query 出现在标题/触发词中时
|
|
110
|
+
* 给予额外 BM25 分数加成,确保精确匹配的条目排名靠前
|
|
316
111
|
*/
|
|
317
112
|
_bm25Search(query: string, type: string, limit: number): SearchResultItem[];
|
|
318
113
|
/**
|
|
@@ -346,6 +141,10 @@ export declare class SearchEngine {
|
|
|
346
141
|
}): void;
|
|
347
142
|
/**
|
|
348
143
|
* 从 DB 行构建索引文本
|
|
144
|
+
*
|
|
145
|
+
* 使用 BM25F 思想:高价值字段(title, trigger)重复出现以提升 TF 权重
|
|
146
|
+
* — title ×3, trigger ×2, description ×1.5(通过重复 token 实现)
|
|
147
|
+
* 这确保标题匹配的文档获得显著更高的 BM25 分数
|
|
349
148
|
* @private
|
|
350
149
|
*/
|
|
351
150
|
_buildDocText(r: DbRow): string;
|
|
@@ -380,6 +179,7 @@ export declare class SearchEngine {
|
|
|
380
179
|
cacheSize: number;
|
|
381
180
|
uniqueTokens: number;
|
|
382
181
|
hasVectorStore: boolean;
|
|
182
|
+
hasVectorService: boolean;
|
|
383
183
|
hasAiProvider: boolean;
|
|
384
184
|
};
|
|
385
185
|
_getCache(key: string): SearchResponse | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchEngine.d.ts","sourceRoot":"","sources":["../../../../lib/service/search/SearchEngine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,MAAM,MAAM,wCAAwC,CAAC;AAC5D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"SearchEngine.d.ts","sourceRoot":"","sources":["../../../../lib/service/search/SearchEngine.ts"],"names":[],"mappings":"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"}
|