kiri-mcp-server 0.9.9 → 0.11.0
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/README.md +60 -7
- package/config/scoring-profiles.yml +82 -35
- package/dist/config/scoring-profiles.yml +82 -35
- package/dist/package.json +12 -1
- package/dist/src/client/proxy.js +81 -12
- package/dist/src/client/proxy.js.map +1 -1
- package/dist/src/daemon/daemon.js +91 -14
- package/dist/src/daemon/daemon.js.map +1 -1
- package/dist/src/indexer/cli.d.ts.map +1 -1
- package/dist/src/indexer/cli.js +712 -98
- package/dist/src/indexer/cli.js.map +1 -1
- package/dist/src/indexer/git.d.ts.map +1 -1
- package/dist/src/indexer/git.js +41 -3
- package/dist/src/indexer/git.js.map +1 -1
- package/dist/src/indexer/migrations/repo-merger.d.ts +33 -0
- package/dist/src/indexer/migrations/repo-merger.d.ts.map +1 -0
- package/dist/src/indexer/migrations/repo-merger.js +67 -0
- package/dist/src/indexer/migrations/repo-merger.js.map +1 -0
- package/dist/src/indexer/schema.d.ts +66 -0
- package/dist/src/indexer/schema.d.ts.map +1 -1
- package/dist/src/indexer/schema.js +337 -0
- package/dist/src/indexer/schema.js.map +1 -1
- package/dist/src/server/abbreviations.d.ts +47 -0
- package/dist/src/server/abbreviations.d.ts.map +1 -0
- package/dist/src/server/abbreviations.js +71 -0
- package/dist/src/server/abbreviations.js.map +1 -0
- package/dist/src/server/boost-profiles.d.ts +63 -0
- package/dist/src/server/boost-profiles.d.ts.map +1 -0
- package/dist/src/server/boost-profiles.js +202 -0
- package/dist/src/server/boost-profiles.js.map +1 -0
- package/dist/src/server/config.d.ts +45 -0
- package/dist/src/server/config.d.ts.map +1 -0
- package/dist/src/server/config.js +146 -0
- package/dist/src/server/config.js.map +1 -0
- package/dist/src/server/context.d.ts +29 -0
- package/dist/src/server/context.d.ts.map +1 -1
- package/dist/src/server/context.js +26 -1
- package/dist/src/server/context.js.map +1 -1
- package/dist/src/server/handlers/snippets-get.d.ts +36 -0
- package/dist/src/server/handlers/snippets-get.d.ts.map +1 -0
- package/dist/src/server/handlers/snippets-get.js +120 -0
- package/dist/src/server/handlers/snippets-get.js.map +1 -0
- package/dist/src/server/handlers.d.ts +35 -22
- package/dist/src/server/handlers.d.ts.map +1 -1
- package/dist/src/server/handlers.js +1993 -414
- package/dist/src/server/handlers.js.map +1 -1
- package/dist/src/server/indexBootstrap.d.ts.map +1 -1
- package/dist/src/server/indexBootstrap.js +49 -2
- package/dist/src/server/indexBootstrap.js.map +1 -1
- package/dist/src/server/main.d.ts.map +1 -1
- package/dist/src/server/main.js +119 -30
- package/dist/src/server/main.js.map +1 -1
- package/dist/src/server/profile-selector.d.ts +33 -0
- package/dist/src/server/profile-selector.d.ts.map +1 -0
- package/dist/src/server/profile-selector.js +291 -0
- package/dist/src/server/profile-selector.js.map +1 -0
- package/dist/src/server/rpc.d.ts.map +1 -1
- package/dist/src/server/rpc.js +61 -12
- package/dist/src/server/rpc.js.map +1 -1
- package/dist/src/server/rrf.d.ts +86 -0
- package/dist/src/server/rrf.d.ts.map +1 -0
- package/dist/src/server/rrf.js +108 -0
- package/dist/src/server/rrf.js.map +1 -0
- package/dist/src/server/runtime.d.ts.map +1 -1
- package/dist/src/server/runtime.js +14 -4
- package/dist/src/server/runtime.js.map +1 -1
- package/dist/src/server/scoring.d.ts +7 -1
- package/dist/src/server/scoring.d.ts.map +1 -1
- package/dist/src/server/scoring.js +121 -2
- package/dist/src/server/scoring.js.map +1 -1
- package/dist/src/server/services/index.d.ts +24 -0
- package/dist/src/server/services/index.d.ts.map +1 -0
- package/dist/src/server/services/index.js +20 -0
- package/dist/src/server/services/index.js.map +1 -0
- package/dist/src/server/services/repo-repository.d.ts +61 -0
- package/dist/src/server/services/repo-repository.d.ts.map +1 -0
- package/dist/src/server/services/repo-repository.js +93 -0
- package/dist/src/server/services/repo-repository.js.map +1 -0
- package/dist/src/server/services/repo-resolver.d.ts +28 -0
- package/dist/src/server/services/repo-resolver.d.ts.map +1 -0
- package/dist/src/server/services/repo-resolver.js +62 -0
- package/dist/src/server/services/repo-resolver.js.map +1 -0
- package/dist/src/shared/cli/args.d.ts +70 -0
- package/dist/src/shared/cli/args.d.ts.map +1 -0
- package/dist/src/shared/cli/args.js +84 -0
- package/dist/src/shared/cli/args.js.map +1 -0
- package/dist/src/shared/duckdb.d.ts.map +1 -1
- package/dist/src/shared/duckdb.js +21 -1
- package/dist/src/shared/duckdb.js.map +1 -1
- package/dist/src/shared/embedding/engine.d.ts +38 -0
- package/dist/src/shared/embedding/engine.d.ts.map +1 -0
- package/dist/src/shared/embedding/engine.js +6 -0
- package/dist/src/shared/embedding/engine.js.map +1 -0
- package/dist/src/shared/embedding/lsh-engine.d.ts +11 -0
- package/dist/src/shared/embedding/lsh-engine.d.ts.map +1 -0
- package/dist/src/shared/embedding/lsh-engine.js +14 -0
- package/dist/src/shared/embedding/lsh-engine.js.map +1 -0
- package/dist/src/shared/embedding/registry.d.ts +25 -0
- package/dist/src/shared/embedding/registry.d.ts.map +1 -0
- package/dist/src/shared/embedding/registry.js +50 -0
- package/dist/src/shared/embedding/registry.js.map +1 -0
- package/dist/src/shared/embedding/semantic-engine.d.ts +14 -0
- package/dist/src/shared/embedding/semantic-engine.d.ts.map +1 -0
- package/dist/src/shared/embedding/semantic-engine.js +50 -0
- package/dist/src/shared/embedding/semantic-engine.js.map +1 -0
- package/dist/src/shared/fs/safePath.d.ts +7 -0
- package/dist/src/shared/fs/safePath.d.ts.map +1 -0
- package/dist/src/shared/fs/safePath.js +23 -0
- package/dist/src/shared/fs/safePath.js.map +1 -0
- package/dist/src/shared/models/model-manager.d.ts +38 -0
- package/dist/src/shared/models/model-manager.d.ts.map +1 -0
- package/dist/src/shared/models/model-manager.js +116 -0
- package/dist/src/shared/models/model-manager.js.map +1 -0
- package/dist/src/shared/models/model-manifest.d.ts +22 -0
- package/dist/src/shared/models/model-manifest.d.ts.map +1 -0
- package/dist/src/shared/models/model-manifest.js +24 -0
- package/dist/src/shared/models/model-manifest.js.map +1 -0
- package/dist/src/shared/utils/glob.d.ts +5 -0
- package/dist/src/shared/utils/glob.d.ts.map +1 -0
- package/dist/src/shared/utils/glob.js +22 -0
- package/dist/src/shared/utils/glob.js.map +1 -0
- package/dist/src/shared/utils/retry.d.ts +8 -0
- package/dist/src/shared/utils/retry.d.ts.map +1 -0
- package/dist/src/shared/utils/retry.js +20 -0
- package/dist/src/shared/utils/retry.js.map +1 -0
- package/dist/src/shared/utils/validation.d.ts +14 -0
- package/dist/src/shared/utils/validation.d.ts.map +1 -0
- package/dist/src/shared/utils/validation.js +22 -0
- package/dist/src/shared/utils/validation.js.map +1 -0
- package/package.json +29 -20
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Boost Profile Configurations
|
|
3
|
+
*
|
|
4
|
+
* This module provides centralized configuration for boost_profile options.
|
|
5
|
+
* Each profile defines how different file types should be ranked in search results.
|
|
6
|
+
*
|
|
7
|
+
* Profiles:
|
|
8
|
+
* - default: Prioritizes implementation files over documentation
|
|
9
|
+
* - docs: Prioritizes documentation over implementation
|
|
10
|
+
* - balanced: Equal weight for both docs and implementation
|
|
11
|
+
* - none: No file type boosting (pure keyword scoring)
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Boost profile definitions
|
|
15
|
+
* Centralized configuration for all boost profiles
|
|
16
|
+
*/
|
|
17
|
+
export const BOOST_PROFILES = {
|
|
18
|
+
default: {
|
|
19
|
+
denylistOverrides: [],
|
|
20
|
+
fileTypeMultipliers: {
|
|
21
|
+
doc: 0.5, // 50% penalty for docs
|
|
22
|
+
impl: 1.3, // 30% boost for implementation
|
|
23
|
+
config: 0.05, // 95% penalty for config files
|
|
24
|
+
},
|
|
25
|
+
// ✅ Sorted by prefix length (longest first) for correct matching priority
|
|
26
|
+
pathMultipliers: [
|
|
27
|
+
{ prefix: "src/components/", multiplier: 1.3 },
|
|
28
|
+
{ prefix: "src/app/", multiplier: 1.4 },
|
|
29
|
+
{ prefix: "src/lib/", multiplier: 1.2 },
|
|
30
|
+
{ prefix: "src/", multiplier: 1.0 },
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
docs: {
|
|
34
|
+
denylistOverrides: ["docs/"],
|
|
35
|
+
fileTypeMultipliers: {
|
|
36
|
+
doc: 1.5, // 50% boost for docs
|
|
37
|
+
impl: 0.5, // 50% penalty for implementation
|
|
38
|
+
config: 0.05, // Config files still penalized
|
|
39
|
+
},
|
|
40
|
+
pathMultipliers: [], // No path-specific boosts in docs mode
|
|
41
|
+
},
|
|
42
|
+
balanced: {
|
|
43
|
+
denylistOverrides: ["docs/"],
|
|
44
|
+
fileTypeMultipliers: {
|
|
45
|
+
doc: 1.0, // No penalty for docs
|
|
46
|
+
impl: 1.0, // No boost for implementation
|
|
47
|
+
// Config files in balanced mode are considered more relevant for understanding
|
|
48
|
+
// a project's structure alongside its documentation. Therefore, we use a
|
|
49
|
+
// higher multiplier (0.3x vs 0.05x in default) to keep them accessible.
|
|
50
|
+
config: 0.3,
|
|
51
|
+
},
|
|
52
|
+
pathMultipliers: [], // No path-specific boosts in balanced mode
|
|
53
|
+
// Skip additive penalty (-1.5) for config files; use only multiplicative penalty.
|
|
54
|
+
// This prevents config files from being completely deprioritized in balanced searches
|
|
55
|
+
// where understanding project setup is often as important as code/docs.
|
|
56
|
+
skipConfigAdditivePenalty: true,
|
|
57
|
+
},
|
|
58
|
+
none: {
|
|
59
|
+
denylistOverrides: [],
|
|
60
|
+
fileTypeMultipliers: {
|
|
61
|
+
doc: 1.0, // No penalty/boost
|
|
62
|
+
impl: 1.0, // No penalty/boost
|
|
63
|
+
config: 1.0, // No penalty/boost
|
|
64
|
+
},
|
|
65
|
+
pathMultipliers: [],
|
|
66
|
+
},
|
|
67
|
+
feature: {
|
|
68
|
+
denylistOverrides: [],
|
|
69
|
+
fileTypeMultipliers: {
|
|
70
|
+
doc: 0.65, // Docs penalty
|
|
71
|
+
impl: 1.25, // Implementation boost
|
|
72
|
+
config: 0.05, // Config penalty
|
|
73
|
+
},
|
|
74
|
+
pathMultipliers: [
|
|
75
|
+
{ prefix: "src/server/handlers/", multiplier: 2.5 }, // 新機能ハンドラー
|
|
76
|
+
{ prefix: "src/indexer/pipeline/", multiplier: 2.3 }, // パイプライン機能
|
|
77
|
+
{ prefix: "src/server/", multiplier: 2.0 },
|
|
78
|
+
{ prefix: "src/indexer/", multiplier: 1.8 },
|
|
79
|
+
{ prefix: "src/shared/", multiplier: 1.6 },
|
|
80
|
+
{ prefix: "scripts/assay/", multiplier: 1.5 }, // 評価スクリプト
|
|
81
|
+
{ prefix: "src/", multiplier: 0.7 }, // 抑制: 0.8 → 0.7
|
|
82
|
+
],
|
|
83
|
+
},
|
|
84
|
+
bugfix: {
|
|
85
|
+
denylistOverrides: [],
|
|
86
|
+
fileTypeMultipliers: {
|
|
87
|
+
doc: 0.65, // Docs penalty
|
|
88
|
+
impl: 1.2, // Implementation boost
|
|
89
|
+
config: 0.05, // Config penalty
|
|
90
|
+
},
|
|
91
|
+
pathMultipliers: [
|
|
92
|
+
{ prefix: "src/shared/security/", multiplier: 2.5 }, // セキュリティ修正
|
|
93
|
+
{ prefix: "src/shared/utils/", multiplier: 2.3 }, // ユーティリティ修正
|
|
94
|
+
{ prefix: "src/server/fallbacks/", multiplier: 2.2 }, // フォールバック
|
|
95
|
+
{ prefix: "src/shared/", multiplier: 2.0 },
|
|
96
|
+
{ prefix: "src/server/", multiplier: 1.8 },
|
|
97
|
+
{ prefix: "src/indexer/", multiplier: 1.6 },
|
|
98
|
+
{ prefix: "tests/", multiplier: 1.5 }, // バグ再現テスト
|
|
99
|
+
{ prefix: "src/", multiplier: 0.7 }, // 抑制: 0.8 → 0.7
|
|
100
|
+
],
|
|
101
|
+
},
|
|
102
|
+
debug: {
|
|
103
|
+
denylistOverrides: [],
|
|
104
|
+
fileTypeMultipliers: {
|
|
105
|
+
doc: 0.65, // Docs penalty
|
|
106
|
+
impl: 1.25, // Implementation boost
|
|
107
|
+
config: 0.05, // Config penalty
|
|
108
|
+
},
|
|
109
|
+
pathMultipliers: [
|
|
110
|
+
{ prefix: "src/server/observability/", multiplier: 2.5 }, // 監視・トレース
|
|
111
|
+
{ prefix: "src/shared/utils/retry.ts", multiplier: 2.4 }, // リトライロジック
|
|
112
|
+
{ prefix: "src/server/fallbacks/", multiplier: 2.3 }, // デグレード制御
|
|
113
|
+
{ prefix: "src/shared/utils/", multiplier: 2.0 },
|
|
114
|
+
{ prefix: "scripts/diag/", multiplier: 1.8 }, // 診断スクリプト
|
|
115
|
+
{ prefix: "src/server/", multiplier: 1.6 },
|
|
116
|
+
{ prefix: "tests/", multiplier: 1.5 },
|
|
117
|
+
{ prefix: "src/", multiplier: 0.7 }, // 抑制: 0.8 → 0.7
|
|
118
|
+
],
|
|
119
|
+
},
|
|
120
|
+
api: {
|
|
121
|
+
denylistOverrides: ["docs/"],
|
|
122
|
+
fileTypeMultipliers: {
|
|
123
|
+
doc: 0.65, // Docs penalty
|
|
124
|
+
impl: 1.2, // Implementation boost
|
|
125
|
+
config: 0.05, // Config penalty
|
|
126
|
+
},
|
|
127
|
+
pathMultipliers: [
|
|
128
|
+
{ prefix: "src/api/", multiplier: 2.5 }, // 強化: 1.4 → 2.5
|
|
129
|
+
{ prefix: "src/routes/", multiplier: 2.3 },
|
|
130
|
+
{ prefix: "src/controllers/", multiplier: 2.0 },
|
|
131
|
+
{ prefix: "src/middleware/", multiplier: 1.8 },
|
|
132
|
+
{ prefix: "src/app/", multiplier: 1.3 },
|
|
133
|
+
{ prefix: "src/", multiplier: 0.7 }, // 抑制: 1.0 → 0.7
|
|
134
|
+
],
|
|
135
|
+
},
|
|
136
|
+
editor: {
|
|
137
|
+
denylistOverrides: [],
|
|
138
|
+
fileTypeMultipliers: {
|
|
139
|
+
doc: 0.65, // Docs penalty
|
|
140
|
+
impl: 1.2, // Implementation boost
|
|
141
|
+
config: 0.05, // Config penalty
|
|
142
|
+
},
|
|
143
|
+
pathMultipliers: [
|
|
144
|
+
{ prefix: "src/components/", multiplier: 2.2 }, // 強化: 1.3 → 2.2
|
|
145
|
+
{ prefix: "src/editor/", multiplier: 2.5 },
|
|
146
|
+
{ prefix: "src/ui/", multiplier: 2.0 },
|
|
147
|
+
{ prefix: "src/views/", multiplier: 2.0 },
|
|
148
|
+
{ prefix: "src/app/", multiplier: 1.5 },
|
|
149
|
+
{ prefix: "src/", multiplier: 0.7 }, // 抑制: 1.0 → 0.7
|
|
150
|
+
],
|
|
151
|
+
},
|
|
152
|
+
testfail: {
|
|
153
|
+
denylistOverrides: [],
|
|
154
|
+
fileTypeMultipliers: {
|
|
155
|
+
doc: 0.65, // Docs penalty
|
|
156
|
+
impl: 1.2, // Implementation boost
|
|
157
|
+
config: 0.05, // Config penalty
|
|
158
|
+
},
|
|
159
|
+
pathMultipliers: [
|
|
160
|
+
{ prefix: "tests/", multiplier: 2.5 }, // 強化: 1.5 → 2.5
|
|
161
|
+
{ prefix: "test/", multiplier: 2.5 }, // 強化: 1.5 → 2.5
|
|
162
|
+
{ prefix: "__tests__/", multiplier: 2.5 },
|
|
163
|
+
{ prefix: "spec/", multiplier: 2.3 },
|
|
164
|
+
{ prefix: "src/", multiplier: 0.5 }, // 大幅抑制: 1.0 → 0.5
|
|
165
|
+
],
|
|
166
|
+
},
|
|
167
|
+
typeerror: {
|
|
168
|
+
denylistOverrides: [],
|
|
169
|
+
fileTypeMultipliers: {
|
|
170
|
+
doc: 0.65, // Docs penalty
|
|
171
|
+
impl: 1.2, // Implementation boost
|
|
172
|
+
config: 0.05, // Config penalty
|
|
173
|
+
},
|
|
174
|
+
pathMultipliers: [
|
|
175
|
+
{ prefix: "src/types/", multiplier: 3.0 }, // 強化: 1.4 → 3.0
|
|
176
|
+
{ prefix: "types/", multiplier: 3.0 }, // 強化: 1.4 → 3.0
|
|
177
|
+
{ prefix: "@types/", multiplier: 2.8 },
|
|
178
|
+
{ prefix: "src/interfaces/", multiplier: 2.5 },
|
|
179
|
+
{ prefix: "src/models/", multiplier: 1.8 },
|
|
180
|
+
{ prefix: "src/", multiplier: 0.6 }, // 抑制: 1.0 → 0.6
|
|
181
|
+
],
|
|
182
|
+
},
|
|
183
|
+
};
|
|
184
|
+
/**
|
|
185
|
+
* Get boost profile configuration by name
|
|
186
|
+
* @throws Error if profile name is invalid
|
|
187
|
+
*/
|
|
188
|
+
export function getBoostProfile(name) {
|
|
189
|
+
const profile = BOOST_PROFILES[name];
|
|
190
|
+
if (!profile) {
|
|
191
|
+
throw new Error(`Invalid boost profile: "${name}". ` +
|
|
192
|
+
`Valid profiles are: ${Object.keys(BOOST_PROFILES).join(", ")}`);
|
|
193
|
+
}
|
|
194
|
+
return profile;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Check if a profile name is valid
|
|
198
|
+
*/
|
|
199
|
+
export function isValidBoostProfile(name) {
|
|
200
|
+
return name in BOOST_PROFILES;
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=boost-profiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boost-profiles.js","sourceRoot":"","sources":["../../../src/server/boost-profiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export interface ServerConfig {
|
|
2
|
+
features: {
|
|
3
|
+
suppressNonCode: boolean;
|
|
4
|
+
suppressFinalResults: boolean;
|
|
5
|
+
clampSnippets: boolean;
|
|
6
|
+
snippetWindow: number;
|
|
7
|
+
};
|
|
8
|
+
hints: {
|
|
9
|
+
enabled: boolean;
|
|
10
|
+
priority: {
|
|
11
|
+
textMultiplier: number;
|
|
12
|
+
pathMultiplier: number;
|
|
13
|
+
baseBonus: number;
|
|
14
|
+
};
|
|
15
|
+
directory: {
|
|
16
|
+
enabled: boolean;
|
|
17
|
+
limit: number;
|
|
18
|
+
maxFiles: number;
|
|
19
|
+
};
|
|
20
|
+
dependency: {
|
|
21
|
+
enabled: boolean;
|
|
22
|
+
outLimit: number;
|
|
23
|
+
inLimit: number;
|
|
24
|
+
};
|
|
25
|
+
semantic: {
|
|
26
|
+
enabled: boolean;
|
|
27
|
+
limit: number;
|
|
28
|
+
dirCandidateLimit: number;
|
|
29
|
+
threshold: number;
|
|
30
|
+
};
|
|
31
|
+
substring: {
|
|
32
|
+
enabled: boolean;
|
|
33
|
+
limit: number;
|
|
34
|
+
boost: number;
|
|
35
|
+
};
|
|
36
|
+
perHintLimit: number;
|
|
37
|
+
dbQueryLimit: number;
|
|
38
|
+
};
|
|
39
|
+
penalties: {
|
|
40
|
+
pathMissDelta: number;
|
|
41
|
+
largeFileDelta: number;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export declare function loadServerConfig(): ServerConfig;
|
|
45
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/server/config.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE;QACR,eAAe,EAAE,OAAO,CAAC;QACzB,oBAAoB,EAAE,OAAO,CAAC;QAC9B,aAAa,EAAE,OAAO,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,KAAK,EAAE;QACL,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE;YACR,cAAc,EAAE,MAAM,CAAC;YACvB,cAAc,EAAE,MAAM,CAAC;YACvB,SAAS,EAAE,MAAM,CAAC;SACnB,CAAC;QACF,SAAS,EAAE;YACT,OAAO,EAAE,OAAO,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;YACd,QAAQ,EAAE,MAAM,CAAC;SAClB,CAAC;QACF,UAAU,EAAE;YACV,OAAO,EAAE,OAAO,CAAC;YACjB,QAAQ,EAAE,MAAM,CAAC;YACjB,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,QAAQ,EAAE;YACR,OAAO,EAAE,OAAO,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;YACd,iBAAiB,EAAE,MAAM,CAAC;YAC1B,SAAS,EAAE,MAAM,CAAC;SACnB,CAAC;QACF,SAAS,EAAE;YACT,OAAO,EAAE,OAAO,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;QACF,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,SAAS,EAAE;QACT,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AA6ED,wBAAgB,gBAAgB,IAAI,YAAY,CAiF/C"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
let cachedConfig = null;
|
|
3
|
+
function envFlagEnabled(value, defaultEnabled) {
|
|
4
|
+
if (value === undefined) {
|
|
5
|
+
return defaultEnabled;
|
|
6
|
+
}
|
|
7
|
+
const normalized = value.trim().toLowerCase();
|
|
8
|
+
return normalized !== "0" && normalized !== "false" && normalized !== "off";
|
|
9
|
+
}
|
|
10
|
+
function parseEnvNumber(value, fallback) {
|
|
11
|
+
if (value === undefined) {
|
|
12
|
+
return fallback;
|
|
13
|
+
}
|
|
14
|
+
const parsed = Number.parseInt(value, 10);
|
|
15
|
+
if (Number.isFinite(parsed) && parsed >= 0) {
|
|
16
|
+
return parsed;
|
|
17
|
+
}
|
|
18
|
+
return fallback;
|
|
19
|
+
}
|
|
20
|
+
function parseEnvFloat(value, fallback) {
|
|
21
|
+
if (value === undefined) {
|
|
22
|
+
return fallback;
|
|
23
|
+
}
|
|
24
|
+
const parsed = Number.parseFloat(value);
|
|
25
|
+
if (Number.isFinite(parsed)) {
|
|
26
|
+
return parsed;
|
|
27
|
+
}
|
|
28
|
+
return fallback;
|
|
29
|
+
}
|
|
30
|
+
function validateServerConfig(config) {
|
|
31
|
+
const { features, hints, penalties } = config;
|
|
32
|
+
if (features.snippetWindow < 8) {
|
|
33
|
+
throw new Error("snippetWindow must be >= 8 to keep bundle context useful");
|
|
34
|
+
}
|
|
35
|
+
if (hints.priority.textMultiplier <= 0 || hints.priority.pathMultiplier <= 0) {
|
|
36
|
+
throw new Error("Hint priority multipliers must be positive numbers");
|
|
37
|
+
}
|
|
38
|
+
if (hints.priority.baseBonus <= 0) {
|
|
39
|
+
throw new Error("Hint priority base bonus must be positive");
|
|
40
|
+
}
|
|
41
|
+
if (hints.directory.limit < 0 || hints.directory.maxFiles < 1) {
|
|
42
|
+
throw new Error("Directory hint limits must be non-negative and maxFiles >= 1");
|
|
43
|
+
}
|
|
44
|
+
if (hints.dependency.outLimit < 0 || hints.dependency.inLimit < 0) {
|
|
45
|
+
throw new Error("Dependency hint limits must be non-negative");
|
|
46
|
+
}
|
|
47
|
+
if (hints.semantic.limit < 0 || hints.semantic.dirCandidateLimit < 1) {
|
|
48
|
+
throw new Error("Semantic hint limits must be non-negative and candidate limit >= 1");
|
|
49
|
+
}
|
|
50
|
+
if (hints.semantic.threshold <= 0 || hints.semantic.threshold > 1) {
|
|
51
|
+
throw new Error("Semantic hint threshold must be within (0, 1]");
|
|
52
|
+
}
|
|
53
|
+
if (hints.perHintLimit < 0) {
|
|
54
|
+
throw new Error("Per-hint limit must be >= 0");
|
|
55
|
+
}
|
|
56
|
+
if (hints.enabled && hints.perHintLimit < 1) {
|
|
57
|
+
throw new Error("Per-hint limit must be >= 1 when hints are enabled");
|
|
58
|
+
}
|
|
59
|
+
if (hints.dbQueryLimit < 0) {
|
|
60
|
+
throw new Error("Hint DB query budget must be >= 0");
|
|
61
|
+
}
|
|
62
|
+
if (hints.enabled && hints.dbQueryLimit < 1) {
|
|
63
|
+
throw new Error("Hint DB query budget must be >= 1 when hints are enabled");
|
|
64
|
+
}
|
|
65
|
+
if (hints.substring.limit < 0) {
|
|
66
|
+
throw new Error("Substring hint limit must be non-negative");
|
|
67
|
+
}
|
|
68
|
+
if (penalties.pathMissDelta > 0 || penalties.largeFileDelta > 0) {
|
|
69
|
+
throw new Error("Penalty deltas should be <= 0 (they reduce scores)");
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
export function loadServerConfig() {
|
|
73
|
+
if (cachedConfig) {
|
|
74
|
+
return cachedConfig;
|
|
75
|
+
}
|
|
76
|
+
const suppressNonCode = envFlagEnabled(process.env.KIRI_SUPPRESS_NON_CODE, true);
|
|
77
|
+
const suppressFinalResults = envFlagEnabled(process.env.KIRI_SUPPRESS_FINAL_RESULTS, true);
|
|
78
|
+
const clampSnippets = envFlagEnabled(process.env.KIRI_CLAMP_SNIPPETS, true);
|
|
79
|
+
const snippetWindow = Math.max(8, parseEnvNumber(process.env.KIRI_SNIPPET_WINDOW, 16));
|
|
80
|
+
const directoryEnabled = envFlagEnabled(process.env.KIRI_HINT_ENABLE_DIR, false);
|
|
81
|
+
const dependencyEnabled = envFlagEnabled(process.env.KIRI_HINT_ENABLE_DEP, false);
|
|
82
|
+
const semanticEnabled = envFlagEnabled(process.env.KIRI_HINT_ENABLE_SEM, false);
|
|
83
|
+
const substringEnabled = envFlagEnabled(process.env.KIRI_HINT_ENABLE_SUBSTRING, true);
|
|
84
|
+
const hintsEnabled = directoryEnabled || dependencyEnabled || semanticEnabled;
|
|
85
|
+
const config = {
|
|
86
|
+
features: {
|
|
87
|
+
suppressNonCode,
|
|
88
|
+
suppressFinalResults,
|
|
89
|
+
clampSnippets,
|
|
90
|
+
snippetWindow,
|
|
91
|
+
},
|
|
92
|
+
hints: {
|
|
93
|
+
enabled: hintsEnabled,
|
|
94
|
+
priority: {
|
|
95
|
+
textMultiplier: parseEnvFloat(process.env.KIRI_HINT_TEXT_MULTIPLIER, 6),
|
|
96
|
+
pathMultiplier: parseEnvFloat(process.env.KIRI_HINT_PATH_MULTIPLIER, 2),
|
|
97
|
+
baseBonus: parseEnvFloat(process.env.KIRI_HINT_BASE_BONUS, 5),
|
|
98
|
+
},
|
|
99
|
+
directory: {
|
|
100
|
+
enabled: directoryEnabled,
|
|
101
|
+
limit: directoryEnabled
|
|
102
|
+
? Math.max(0, parseEnvNumber(process.env.KIRI_HINT_NEAR_LIMIT_DIR, 2))
|
|
103
|
+
: 0,
|
|
104
|
+
maxFiles: Math.max(1, parseEnvNumber(process.env.KIRI_HINT_NEAR_MAX_FILES, 10)),
|
|
105
|
+
},
|
|
106
|
+
dependency: {
|
|
107
|
+
enabled: dependencyEnabled,
|
|
108
|
+
outLimit: dependencyEnabled
|
|
109
|
+
? Math.max(0, parseEnvNumber(process.env.KIRI_HINT_DEP_OUT_LIMIT, 1))
|
|
110
|
+
: 0,
|
|
111
|
+
inLimit: dependencyEnabled
|
|
112
|
+
? Math.max(0, parseEnvNumber(process.env.KIRI_HINT_DEP_IN_LIMIT, 1))
|
|
113
|
+
: 0,
|
|
114
|
+
},
|
|
115
|
+
semantic: {
|
|
116
|
+
enabled: semanticEnabled,
|
|
117
|
+
limit: semanticEnabled
|
|
118
|
+
? Math.max(0, parseEnvNumber(process.env.KIRI_HINT_SEM_LIMIT, 2))
|
|
119
|
+
: 0,
|
|
120
|
+
dirCandidateLimit: Math.max(1, parseEnvNumber(process.env.KIRI_HINT_SEM_DIR_CANDIDATES, 20)),
|
|
121
|
+
threshold: parseEnvFloat(process.env.KIRI_HINT_SEM_THRESHOLD, 0.65),
|
|
122
|
+
},
|
|
123
|
+
substring: {
|
|
124
|
+
enabled: substringEnabled,
|
|
125
|
+
limit: substringEnabled
|
|
126
|
+
? Math.max(0, parseEnvNumber(process.env.KIRI_HINT_SUBSTRING_LIMIT, 3))
|
|
127
|
+
: 0,
|
|
128
|
+
boost: parseEnvFloat(process.env.KIRI_HINT_SUBSTRING_BOOST, 3),
|
|
129
|
+
},
|
|
130
|
+
perHintLimit: hintsEnabled
|
|
131
|
+
? Math.max(1, parseEnvNumber(process.env.KIRI_HINT_PER_HINT_LIMIT, 6))
|
|
132
|
+
: 0,
|
|
133
|
+
dbQueryLimit: hintsEnabled
|
|
134
|
+
? Math.max(1, parseEnvNumber(process.env.KIRI_HINT_DB_QUERY_LIMIT, 12))
|
|
135
|
+
: 0,
|
|
136
|
+
},
|
|
137
|
+
penalties: {
|
|
138
|
+
pathMissDelta: parseEnvFloat(process.env.KIRI_PATH_MISS_DELTA, -0.5),
|
|
139
|
+
largeFileDelta: parseEnvFloat(process.env.KIRI_LARGE_FILE_DELTA, -0.8),
|
|
140
|
+
},
|
|
141
|
+
};
|
|
142
|
+
validateServerConfig(config);
|
|
143
|
+
cachedConfig = config;
|
|
144
|
+
return config;
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/server/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,47 @@
|
|
|
1
1
|
import { DuckDBClient } from "../shared/duckdb.js";
|
|
2
2
|
import { WarningManager } from "./rpc.js";
|
|
3
|
+
import { ServerServices } from "./services/index.js";
|
|
3
4
|
export interface FtsStatusCache {
|
|
4
5
|
ready: boolean;
|
|
5
6
|
schemaExists: boolean;
|
|
6
7
|
anyDirty: boolean;
|
|
7
8
|
lastChecked: number;
|
|
8
9
|
}
|
|
10
|
+
export interface TableAvailability {
|
|
11
|
+
hasMetadataTables: boolean;
|
|
12
|
+
hasLinkTable: boolean;
|
|
13
|
+
hasHintLog: boolean;
|
|
14
|
+
hasHintDictionary: boolean;
|
|
15
|
+
}
|
|
9
16
|
export interface ServerContext {
|
|
10
17
|
db: DuckDBClient;
|
|
11
18
|
repoId: number;
|
|
19
|
+
services: ServerServices;
|
|
12
20
|
features?: {
|
|
13
21
|
fts?: boolean;
|
|
14
22
|
};
|
|
15
23
|
ftsStatusCache?: FtsStatusCache;
|
|
24
|
+
tableAvailability: TableAvailability;
|
|
16
25
|
warningManager: WarningManager;
|
|
17
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* createServerContext
|
|
29
|
+
*
|
|
30
|
+
* ServerContext を生成するファクトリ関数。
|
|
31
|
+
* テストや複数のエントリポイントで共通の初期化パスを提供する。
|
|
32
|
+
*
|
|
33
|
+
* @param options - コンテキスト初期化オプション
|
|
34
|
+
* @returns 初期化された ServerContext
|
|
35
|
+
*/
|
|
36
|
+
export declare function createServerContext(options: {
|
|
37
|
+
db: DuckDBClient;
|
|
38
|
+
repoId: number;
|
|
39
|
+
services: ServerServices;
|
|
40
|
+
features?: {
|
|
41
|
+
fts?: boolean;
|
|
42
|
+
};
|
|
43
|
+
ftsStatusCache?: FtsStatusCache;
|
|
44
|
+
tableAvailability: TableAvailability;
|
|
45
|
+
warningManager: WarningManager;
|
|
46
|
+
}): ServerContext;
|
|
18
47
|
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/server/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/server/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,YAAY,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,CAAC,EAAE;QACT,GAAG,CAAC,EAAE,OAAO,CAAC;KACf,CAAC;IACF,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,cAAc,EAAE,cAAc,CAAC;CAChC;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAC3C,EAAE,EAAE,YAAY,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC7B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,cAAc,EAAE,cAAc,CAAC;CAChC,GAAG,aAAa,CAmBhB"}
|
|
@@ -1,2 +1,27 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* createServerContext
|
|
3
|
+
*
|
|
4
|
+
* ServerContext を生成するファクトリ関数。
|
|
5
|
+
* テストや複数のエントリポイントで共通の初期化パスを提供する。
|
|
6
|
+
*
|
|
7
|
+
* @param options - コンテキスト初期化オプション
|
|
8
|
+
* @returns 初期化された ServerContext
|
|
9
|
+
*/
|
|
10
|
+
export function createServerContext(options) {
|
|
11
|
+
const context = {
|
|
12
|
+
db: options.db,
|
|
13
|
+
repoId: options.repoId,
|
|
14
|
+
services: options.services,
|
|
15
|
+
tableAvailability: options.tableAvailability,
|
|
16
|
+
warningManager: options.warningManager,
|
|
17
|
+
};
|
|
18
|
+
// exactOptionalPropertyTypes: true を満たすため、undefined の場合は代入しない
|
|
19
|
+
if (options.features !== undefined) {
|
|
20
|
+
context.features = options.features;
|
|
21
|
+
}
|
|
22
|
+
if (options.ftsStatusCache !== undefined) {
|
|
23
|
+
context.ftsStatusCache = options.ftsStatusCache;
|
|
24
|
+
}
|
|
25
|
+
return context;
|
|
26
|
+
}
|
|
2
27
|
//# sourceMappingURL=context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/server/context.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/server/context.ts"],"names":[],"mappings":"AA+BA;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAQnC;IACC,MAAM,OAAO,GAAkB;QAC7B,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,cAAc,EAAE,OAAO,CAAC,cAAc;KACvC,CAAC;IAEF,8DAA8D;IAC9D,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IACtC,CAAC;IAED,IAAI,OAAO,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACzC,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAClD,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ServerContext } from "../context.js";
|
|
2
|
+
/**
|
|
3
|
+
* snippets_get tool のパラメータ
|
|
4
|
+
*/
|
|
5
|
+
export interface SnippetsGetParams {
|
|
6
|
+
path: string;
|
|
7
|
+
start_line?: number;
|
|
8
|
+
end_line?: number;
|
|
9
|
+
compact?: boolean;
|
|
10
|
+
includeLineNumbers?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* snippets_get tool のレスポンス
|
|
14
|
+
*/
|
|
15
|
+
export interface SnippetResult {
|
|
16
|
+
path: string;
|
|
17
|
+
startLine: number;
|
|
18
|
+
endLine: number;
|
|
19
|
+
content?: string;
|
|
20
|
+
totalLines: number;
|
|
21
|
+
symbolName: string | null;
|
|
22
|
+
symbolKind: string | null;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* snippets_get MCP Tool Handler
|
|
26
|
+
*
|
|
27
|
+
* 指定されたファイルパスから、シンボル境界を考慮したコードスニペットを取得する。
|
|
28
|
+
* start_line/end_line が指定されていない場合、最適なシンボル(関数、クラスなど)を自動選択する。
|
|
29
|
+
*
|
|
30
|
+
* @param context - サーバーコンテキスト(DB、repoId等)
|
|
31
|
+
* @param params - snippets_get パラメータ
|
|
32
|
+
* @returns スニペット結果
|
|
33
|
+
* @throws Error ファイルが見つからない、バイナリファイル、コンテンツが利用不可の場合
|
|
34
|
+
*/
|
|
35
|
+
export declare function snippetsGet(context: ServerContext, params: SnippetsGetParams): Promise<SnippetResult>;
|
|
36
|
+
//# sourceMappingURL=snippets-get.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snippets-get.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/snippets-get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAmDD;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,aAAa,CAAC,CAmHxB"}
|