kiri-mcp-server 0.13.0 → 0.16.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.
Files changed (61) hide show
  1. package/README.md +13 -17
  2. package/config/scoring-profiles.yml +78 -0
  3. package/config/stop-words.yml +307 -0
  4. package/dist/config/scoring-profiles.yml +78 -0
  5. package/dist/config/stop-words.yml +307 -0
  6. package/dist/package.json +2 -2
  7. package/dist/src/indexer/cli.d.ts +1 -0
  8. package/dist/src/indexer/cli.d.ts.map +1 -1
  9. package/dist/src/indexer/cli.js +22 -2
  10. package/dist/src/indexer/cli.js.map +1 -1
  11. package/dist/src/indexer/cochange.d.ts +97 -0
  12. package/dist/src/indexer/cochange.d.ts.map +1 -0
  13. package/dist/src/indexer/cochange.js +315 -0
  14. package/dist/src/indexer/cochange.js.map +1 -0
  15. package/dist/src/indexer/graph-metrics.d.ts +68 -0
  16. package/dist/src/indexer/graph-metrics.d.ts.map +1 -0
  17. package/dist/src/indexer/graph-metrics.js +239 -0
  18. package/dist/src/indexer/graph-metrics.js.map +1 -0
  19. package/dist/src/indexer/schema.d.ts +15 -0
  20. package/dist/src/indexer/schema.d.ts.map +1 -1
  21. package/dist/src/indexer/schema.js +86 -0
  22. package/dist/src/indexer/schema.js.map +1 -1
  23. package/dist/src/server/config.d.ts.map +1 -1
  24. package/dist/src/server/config.js +22 -16
  25. package/dist/src/server/config.js.map +1 -1
  26. package/dist/src/server/handlers/snippets-get.d.ts +10 -0
  27. package/dist/src/server/handlers/snippets-get.d.ts.map +1 -1
  28. package/dist/src/server/handlers/snippets-get.js +40 -3
  29. package/dist/src/server/handlers/snippets-get.js.map +1 -1
  30. package/dist/src/server/handlers.d.ts +1 -1
  31. package/dist/src/server/handlers.d.ts.map +1 -1
  32. package/dist/src/server/handlers.js +195 -51
  33. package/dist/src/server/handlers.js.map +1 -1
  34. package/dist/src/server/idf-provider.d.ts +110 -0
  35. package/dist/src/server/idf-provider.d.ts.map +1 -0
  36. package/dist/src/server/idf-provider.js +233 -0
  37. package/dist/src/server/idf-provider.js.map +1 -0
  38. package/dist/src/server/rpc.d.ts.map +1 -1
  39. package/dist/src/server/rpc.js +43 -4
  40. package/dist/src/server/rpc.js.map +1 -1
  41. package/dist/src/server/scoring.d.ts +10 -0
  42. package/dist/src/server/scoring.d.ts.map +1 -1
  43. package/dist/src/server/scoring.js +73 -0
  44. package/dist/src/server/scoring.js.map +1 -1
  45. package/dist/src/server/services/index.d.ts +2 -0
  46. package/dist/src/server/services/index.d.ts.map +1 -1
  47. package/dist/src/server/services/index.js +3 -0
  48. package/dist/src/server/services/index.js.map +1 -1
  49. package/dist/src/server/stop-words.d.ts +106 -0
  50. package/dist/src/server/stop-words.d.ts.map +1 -0
  51. package/dist/src/server/stop-words.js +312 -0
  52. package/dist/src/server/stop-words.js.map +1 -0
  53. package/dist/src/shared/adaptive-k-categories.d.ts +5 -0
  54. package/dist/src/shared/adaptive-k-categories.d.ts.map +1 -0
  55. package/dist/src/shared/adaptive-k-categories.js +17 -0
  56. package/dist/src/shared/adaptive-k-categories.js.map +1 -0
  57. package/dist/src/shared/duckdb.d.ts +8 -2
  58. package/dist/src/shared/duckdb.d.ts.map +1 -1
  59. package/dist/src/shared/duckdb.js +37 -62
  60. package/dist/src/shared/duckdb.js.map +1 -1
  61. package/package.json +2 -2
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  > Intelligent code context extraction for LLMs via Model Context Protocol
4
4
 
5
- [![Version](https://img.shields.io/badge/version-0.13.0-blue.svg)](package.json)
5
+ [![Version](https://img.shields.io/badge/version-0.16.0-blue.svg)](package.json)
6
6
  [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
7
7
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.6-blue.svg)](https://www.typescriptlang.org/)
8
8
  [![MCP](https://img.shields.io/badge/MCP-Compatible-green.svg)](https://modelcontextprotocol.io/)
@@ -20,24 +20,20 @@
20
20
  - **📝 Phrase-Aware**: Recognizes compound terms (kebab-case, snake_case) for precise matching
21
21
  - **🔒 Concurrency-Safe** _(v0.9.7+)_: Per-database queues, canonicalized DuckDB paths, and bootstrap-safe locking prevent FTS rebuild conflicts and keep locks consistent across symlinks—even on first run
22
22
 
23
- ## 🆕 What's New in v0.13.0
23
+ ## 🆕 What's New in v0.16.0
24
24
 
25
- ### ✨ New Features
25
+ ### ✨ Improvements
26
26
 
27
- - **AdaptiveK Dynamic Clustering**: `context_bundle` now automatically adjusts result set size based on query characteristics (P@10 improved by 31%)
28
- - **Domain Terms Dictionary**: Enable domain-specific term expansion via `KIRI_ENABLE_DOMAIN_TERMS=1` environment variable
29
- - **Path Prefix Filter**: New `path_prefix` parameter for `context_bundle` to filter results by directory
27
+ - **DuckDB client migration**: Migrated to `@duckdb/node-api` from deprecated `duckdb` package
28
+ - No more native binding compilation errors with npx
29
+ - Pre-built binaries for all platforms
30
+ - Improved type safety and debugging support
30
31
 
31
- ### 🔧 Improvements
32
+ ### Previous Release (v0.15.0)
32
33
 
33
- - **Boost Profiles**: Enhanced configuration capabilities and settings
34
- - **Evaluation Tools**: Added `--inspect-query` option to `run-golden.ts` for debugging
35
-
36
- ### 🐛 Bug Fixes
37
-
38
- - **TypeScript Build**: Fixed type conversion issues in domain-terms and services modules
39
- - **Adaptive K Hardening**: Strengthened bounds checking and masked ping paths
40
- - **Schema Compliance**: Removed non-standard `anyOf` from files_search schema
34
+ - **`snippets_get` view parameter**: Explicit retrieval strategy control (auto/symbol/lines/full)
35
+ - **Co-change scoring**: Dependency graph with PageRank-like importance scoring
36
+ - **Stop words & IDF weighting**: Multi-language support (en/ja) with BM25-style ranking
41
37
 
42
38
  ## ⚙️ Prerequisites
43
39
 
@@ -918,8 +914,8 @@ Built with:
918
914
 
919
915
  ---
920
916
 
921
- **Status**: v0.13.0 (Beta) - Production-ready for MCP clients
917
+ **Status**: v0.15.0 (Beta) - Production-ready for MCP clients
922
918
 
923
- **New in v0.13.0**: AdaptiveK dynamic clustering improves search precision by 31%. Domain terms dictionary and path prefix filtering enable more targeted code exploration. See [CHANGELOG.md](CHANGELOG.md) for details.
919
+ **New in v0.15.0**: Co-change scoring, stop words/IDF weighting, and `snippets_get` view parameter for explicit retrieval control. See [CHANGELOG.md](CHANGELOG.md) for details.
924
920
 
925
921
  For questions or support, please open a [GitHub issue](https://github.com/CAPHTECH/kiri/issues).
@@ -11,6 +11,12 @@ default:
11
11
  blacklistPenaltyMultiplier: 0.01
12
12
  testPenaltyMultiplier: 0.02
13
13
  lockPenaltyMultiplier: 0.01
14
+ # Graph Layer parameters (Phase 3.2)
15
+ graphInbound: 0.5 # Inbound dependency boost
16
+ graphImportance: 0.3 # PageRank-like importance score
17
+ graphDecay: 0.5 # Depth decay factor (score / (depth + 1)^decay)
18
+ graphMaxDepth: 3 # Maximum BFS depth
19
+ cochange: 3.0 # Co-change boost (enabled by default)
14
20
  feature:
15
21
  textMatch: 1.0
16
22
  pathMatch: 1.4
@@ -24,6 +30,11 @@ feature:
24
30
  blacklistPenaltyMultiplier: 0.01
25
31
  testPenaltyMultiplier: 0.02
26
32
  lockPenaltyMultiplier: 0.01
33
+ graphInbound: 0.5
34
+ graphImportance: 0.35
35
+ graphDecay: 0.5
36
+ graphMaxDepth: 3
37
+ cochange: 0.0
27
38
  bugfix:
28
39
  textMatch: 1.0
29
40
  pathMatch: 1.3
@@ -37,6 +48,11 @@ bugfix:
37
48
  blacklistPenaltyMultiplier: 0.01
38
49
  testPenaltyMultiplier: 0.02
39
50
  lockPenaltyMultiplier: 0.01
51
+ graphInbound: 0.6
52
+ graphImportance: 0.4
53
+ graphDecay: 0.5
54
+ graphMaxDepth: 3
55
+ cochange: 0.0
40
56
  debug:
41
57
  textMatch: 1.0
42
58
  pathMatch: 1.3
@@ -50,6 +66,11 @@ debug:
50
66
  blacklistPenaltyMultiplier: 0.01
51
67
  testPenaltyMultiplier: 0.02
52
68
  lockPenaltyMultiplier: 0.01
69
+ graphInbound: 0.55
70
+ graphImportance: 0.35
71
+ graphDecay: 0.5
72
+ graphMaxDepth: 3
73
+ cochange: 0.0
53
74
  api:
54
75
  textMatch: 1.0
55
76
  pathMatch: 1.5
@@ -63,6 +84,11 @@ api:
63
84
  blacklistPenaltyMultiplier: 0.01
64
85
  testPenaltyMultiplier: 0.02
65
86
  lockPenaltyMultiplier: 0.01
87
+ graphInbound: 0.5
88
+ graphImportance: 0.3
89
+ graphDecay: 0.5
90
+ graphMaxDepth: 3
91
+ cochange: 0.0
66
92
  editor:
67
93
  textMatch: 1.0
68
94
  pathMatch: 1.4
@@ -76,6 +102,11 @@ editor:
76
102
  blacklistPenaltyMultiplier: 0.01
77
103
  testPenaltyMultiplier: 0.02
78
104
  lockPenaltyMultiplier: 0.01
105
+ graphInbound: 0.45
106
+ graphImportance: 0.25
107
+ graphDecay: 0.5
108
+ graphMaxDepth: 3
109
+ cochange: 0.0
79
110
  testfail:
80
111
  textMatch: 1.0
81
112
  pathMatch: 1.5
@@ -89,6 +120,11 @@ testfail:
89
120
  blacklistPenaltyMultiplier: 0.01
90
121
  testPenaltyMultiplier: 0.2 # testfailではテストファイルへのペナルティを緩和(80%削減、他は98%削減)
91
122
  lockPenaltyMultiplier: 0.01
123
+ graphInbound: 0.4
124
+ graphImportance: 0.3
125
+ graphDecay: 0.5
126
+ graphMaxDepth: 3
127
+ cochange: 0.0
92
128
  typeerror:
93
129
  textMatch: 1.0
94
130
  pathMatch: 1.5
@@ -102,3 +138,45 @@ typeerror:
102
138
  blacklistPenaltyMultiplier: 0.01
103
139
  testPenaltyMultiplier: 0.02
104
140
  lockPenaltyMultiplier: 0.01
141
+ graphInbound: 0.35
142
+ graphImportance: 0.25
143
+ graphDecay: 0.5
144
+ graphMaxDepth: 3
145
+ cochange: 0.0
146
+ # Graph Layer A/B comparison profiles
147
+ graph-off:
148
+ textMatch: 1.0
149
+ pathMatch: 1.2
150
+ editingPath: 1.8
151
+ dependency: 1.0
152
+ proximity: 0.3
153
+ structural: 0.9
154
+ docPenaltyMultiplier: 0.6
155
+ configPenaltyMultiplier: 0.05
156
+ implBoostMultiplier: 1.5
157
+ blacklistPenaltyMultiplier: 0.01
158
+ testPenaltyMultiplier: 0.02
159
+ lockPenaltyMultiplier: 0.01
160
+ graphInbound: 0.0
161
+ graphImportance: 0.0
162
+ graphDecay: 0.5
163
+ graphMaxDepth: 3
164
+ cochange: 0.0
165
+ graph-on:
166
+ textMatch: 1.0
167
+ pathMatch: 1.2
168
+ editingPath: 1.8
169
+ dependency: 1.0
170
+ proximity: 0.3
171
+ structural: 0.9
172
+ docPenaltyMultiplier: 0.6
173
+ configPenaltyMultiplier: 0.05
174
+ implBoostMultiplier: 1.5
175
+ blacklistPenaltyMultiplier: 0.01
176
+ testPenaltyMultiplier: 0.02
177
+ lockPenaltyMultiplier: 0.01
178
+ graphInbound: 0.5
179
+ graphImportance: 0.3
180
+ graphDecay: 0.5
181
+ graphMaxDepth: 3
182
+ cochange: 3.0 # 2.0 → 3.0: further increase to strengthen co-change signal
@@ -0,0 +1,307 @@
1
+ # Stop Words Configuration
2
+ # ストップワード(除外語)の設定ファイル
3
+ #
4
+ # context_bundle のキーワード抽出でフィルタリングされる語を定義。
5
+ # 一般的すぎる語を除外することで、検索精度を向上させる。
6
+ #
7
+ # @see Issue #48: Improve context_bundle stop word coverage and configurability
8
+ # @see docs/search-ranking.md
9
+
10
+ version: "1.0"
11
+
12
+ # デフォルト言語
13
+ # goalテキストの主要言語に合わせて選択
14
+ # "en" または "ja"
15
+ default_language: "en"
16
+
17
+ languages:
18
+ # 英語ストップワード(Lucene/Snowball由来 + コード検索向け拡張)
19
+ en:
20
+ words:
21
+ # 冠詞・代名詞
22
+ - the
23
+ - a
24
+ - an
25
+ - this
26
+ - that
27
+ - these
28
+ - those
29
+ - it
30
+ - its
31
+ - they
32
+ - them
33
+ - their
34
+ - we
35
+ - our
36
+ - you
37
+ - your
38
+ - he
39
+ - she
40
+ - his
41
+ - her
42
+
43
+ # 前置詞
44
+ - in
45
+ - on
46
+ - at
47
+ - to
48
+ - for
49
+ - with
50
+ - from
51
+ - by
52
+ - of
53
+ - into
54
+ - about
55
+ - over
56
+ - under
57
+ - between
58
+ - through
59
+ - during
60
+ - before
61
+ - after
62
+
63
+ # 接続詞
64
+ - and
65
+ - or
66
+ - but
67
+ - if
68
+ - then
69
+ - else
70
+ - when
71
+ - where
72
+ - while
73
+ - because
74
+ - although
75
+ - unless
76
+ - until
77
+ - since
78
+
79
+ # 助動詞・be動詞
80
+ - is
81
+ - are
82
+ - was
83
+ - were
84
+ - be
85
+ - been
86
+ - being
87
+ - have
88
+ - has
89
+ - had
90
+ - do
91
+ - does
92
+ - did
93
+ - will
94
+ - would
95
+ - could
96
+ - should
97
+ - may
98
+ - might
99
+ - must
100
+ - can
101
+ - shall
102
+
103
+ # 副詞・形容詞(一般的)
104
+ - not
105
+ - no
106
+ - yes
107
+ - all
108
+ - any
109
+ - some
110
+ - each
111
+ - every
112
+ - both
113
+ - most
114
+ - other
115
+ - such
116
+ - only
117
+ - just
118
+ - also
119
+ - very
120
+ - too
121
+ - more
122
+ - less
123
+ - much
124
+ - many
125
+ - few
126
+ - now
127
+ - here
128
+ - there
129
+ - how
130
+ - what
131
+ - which
132
+ - who
133
+ - why
134
+
135
+ # コード検索で頻出する一般語
136
+ - fix
137
+ - test
138
+ - tests
139
+ - issue
140
+ - error
141
+ - bug
142
+ - fail
143
+ - failing
144
+ - make
145
+ - need
146
+ - goal
147
+ - want
148
+ - like
149
+ - use
150
+ - using
151
+ - used
152
+ - get
153
+ - set
154
+ - add
155
+ - new
156
+ - see
157
+ - look
158
+ - find
159
+ - work
160
+ - way
161
+ - thing
162
+ - something
163
+ - anything
164
+ - everything
165
+ - nothing
166
+
167
+ # 日本語ストップワード(助詞・助動詞・接続詞・代名詞)
168
+ # 正規化後のひらがな形式で記載
169
+ ja:
170
+ words:
171
+ # 格助詞
172
+ - は
173
+ - が
174
+ - を
175
+ - に
176
+ - へ
177
+ - で
178
+ - と
179
+ - から
180
+ - まで
181
+ - より
182
+ - の
183
+
184
+ # 副助詞
185
+ - も
186
+ - など
187
+ - ほど
188
+ - ばかり
189
+ - だけ
190
+ - しか
191
+ - さえ
192
+ - でも
193
+ - くらい
194
+ - ぐらい
195
+
196
+ # 接続助詞
197
+ - て
198
+ - で
199
+ - ば
200
+ - たら
201
+ - なら
202
+ - ので
203
+ - から
204
+ - けど
205
+ - けれど
206
+ - けれども
207
+ - が
208
+ - のに
209
+ - ても
210
+ - でも
211
+
212
+ # 終助詞
213
+ - か
214
+ - ね
215
+ - よ
216
+ - な
217
+ - わ
218
+ - ぞ
219
+ - さ
220
+
221
+ # 助動詞
222
+ - です
223
+ - ます
224
+ - だ
225
+ - である
226
+ - ない
227
+ - ぬ
228
+ - れる
229
+ - られる
230
+ - せる
231
+ - させる
232
+ - たい
233
+ - らしい
234
+ - ようだ
235
+ - そうだ
236
+
237
+ # 代名詞・指示詞
238
+ - これ
239
+ - それ
240
+ - あれ
241
+ - どれ
242
+ - この
243
+ - その
244
+ - あの
245
+ - どの
246
+ - ここ
247
+ - そこ
248
+ - あそこ
249
+ - どこ
250
+ - こう
251
+ - そう
252
+ - ああ
253
+ - どう
254
+ - わたし
255
+ - あなた
256
+ - かれ
257
+ - かのじょ
258
+
259
+ # 形式名詞
260
+ - こと
261
+ - もの
262
+ - ところ
263
+ - とき
264
+ - ため
265
+ - よう
266
+ - わけ
267
+ - はず
268
+ - つもり
269
+
270
+ # 一般動詞(汎用的)
271
+ - ある
272
+ - いる
273
+ - する
274
+ - なる
275
+ - できる
276
+ - いう
277
+ - おもう
278
+ - みる
279
+ - くる
280
+ - いく
281
+
282
+ # 接続詞
283
+ - そして
284
+ - しかし
285
+ - また
286
+ - および
287
+ - または
288
+ - つまり
289
+ - すなわち
290
+ - ただし
291
+ - なお
292
+ - ゆえに
293
+
294
+ # プログラミング言語キーワード(全言語共通で除外)
295
+ # 自然言語依存語は含めない
296
+ # コード内で頻出するがセマンティックな意味が薄いキーワード
297
+ code_generic:
298
+ - "null"
299
+ - undefined
300
+ - "true"
301
+ - "false"
302
+ - void
303
+ - nil
304
+
305
+ # リポジトリ固有の追加(ユーザー定義)
306
+ # 将来的に repos.<slug>.custom で細分化可能
307
+ custom: []
@@ -11,6 +11,12 @@ default:
11
11
  blacklistPenaltyMultiplier: 0.01
12
12
  testPenaltyMultiplier: 0.02
13
13
  lockPenaltyMultiplier: 0.01
14
+ # Graph Layer parameters (Phase 3.2)
15
+ graphInbound: 0.5 # Inbound dependency boost
16
+ graphImportance: 0.3 # PageRank-like importance score
17
+ graphDecay: 0.5 # Depth decay factor (score / (depth + 1)^decay)
18
+ graphMaxDepth: 3 # Maximum BFS depth
19
+ cochange: 3.0 # Co-change boost (enabled by default)
14
20
  feature:
15
21
  textMatch: 1.0
16
22
  pathMatch: 1.4
@@ -24,6 +30,11 @@ feature:
24
30
  blacklistPenaltyMultiplier: 0.01
25
31
  testPenaltyMultiplier: 0.02
26
32
  lockPenaltyMultiplier: 0.01
33
+ graphInbound: 0.5
34
+ graphImportance: 0.35
35
+ graphDecay: 0.5
36
+ graphMaxDepth: 3
37
+ cochange: 0.0
27
38
  bugfix:
28
39
  textMatch: 1.0
29
40
  pathMatch: 1.3
@@ -37,6 +48,11 @@ bugfix:
37
48
  blacklistPenaltyMultiplier: 0.01
38
49
  testPenaltyMultiplier: 0.02
39
50
  lockPenaltyMultiplier: 0.01
51
+ graphInbound: 0.6
52
+ graphImportance: 0.4
53
+ graphDecay: 0.5
54
+ graphMaxDepth: 3
55
+ cochange: 0.0
40
56
  debug:
41
57
  textMatch: 1.0
42
58
  pathMatch: 1.3
@@ -50,6 +66,11 @@ debug:
50
66
  blacklistPenaltyMultiplier: 0.01
51
67
  testPenaltyMultiplier: 0.02
52
68
  lockPenaltyMultiplier: 0.01
69
+ graphInbound: 0.55
70
+ graphImportance: 0.35
71
+ graphDecay: 0.5
72
+ graphMaxDepth: 3
73
+ cochange: 0.0
53
74
  api:
54
75
  textMatch: 1.0
55
76
  pathMatch: 1.5
@@ -63,6 +84,11 @@ api:
63
84
  blacklistPenaltyMultiplier: 0.01
64
85
  testPenaltyMultiplier: 0.02
65
86
  lockPenaltyMultiplier: 0.01
87
+ graphInbound: 0.5
88
+ graphImportance: 0.3
89
+ graphDecay: 0.5
90
+ graphMaxDepth: 3
91
+ cochange: 0.0
66
92
  editor:
67
93
  textMatch: 1.0
68
94
  pathMatch: 1.4
@@ -76,6 +102,11 @@ editor:
76
102
  blacklistPenaltyMultiplier: 0.01
77
103
  testPenaltyMultiplier: 0.02
78
104
  lockPenaltyMultiplier: 0.01
105
+ graphInbound: 0.45
106
+ graphImportance: 0.25
107
+ graphDecay: 0.5
108
+ graphMaxDepth: 3
109
+ cochange: 0.0
79
110
  testfail:
80
111
  textMatch: 1.0
81
112
  pathMatch: 1.5
@@ -89,6 +120,11 @@ testfail:
89
120
  blacklistPenaltyMultiplier: 0.01
90
121
  testPenaltyMultiplier: 0.2 # testfailではテストファイルへのペナルティを緩和(80%削減、他は98%削減)
91
122
  lockPenaltyMultiplier: 0.01
123
+ graphInbound: 0.4
124
+ graphImportance: 0.3
125
+ graphDecay: 0.5
126
+ graphMaxDepth: 3
127
+ cochange: 0.0
92
128
  typeerror:
93
129
  textMatch: 1.0
94
130
  pathMatch: 1.5
@@ -102,3 +138,45 @@ typeerror:
102
138
  blacklistPenaltyMultiplier: 0.01
103
139
  testPenaltyMultiplier: 0.02
104
140
  lockPenaltyMultiplier: 0.01
141
+ graphInbound: 0.35
142
+ graphImportance: 0.25
143
+ graphDecay: 0.5
144
+ graphMaxDepth: 3
145
+ cochange: 0.0
146
+ # Graph Layer A/B comparison profiles
147
+ graph-off:
148
+ textMatch: 1.0
149
+ pathMatch: 1.2
150
+ editingPath: 1.8
151
+ dependency: 1.0
152
+ proximity: 0.3
153
+ structural: 0.9
154
+ docPenaltyMultiplier: 0.6
155
+ configPenaltyMultiplier: 0.05
156
+ implBoostMultiplier: 1.5
157
+ blacklistPenaltyMultiplier: 0.01
158
+ testPenaltyMultiplier: 0.02
159
+ lockPenaltyMultiplier: 0.01
160
+ graphInbound: 0.0
161
+ graphImportance: 0.0
162
+ graphDecay: 0.5
163
+ graphMaxDepth: 3
164
+ cochange: 0.0
165
+ graph-on:
166
+ textMatch: 1.0
167
+ pathMatch: 1.2
168
+ editingPath: 1.8
169
+ dependency: 1.0
170
+ proximity: 0.3
171
+ structural: 0.9
172
+ docPenaltyMultiplier: 0.6
173
+ configPenaltyMultiplier: 0.05
174
+ implBoostMultiplier: 1.5
175
+ blacklistPenaltyMultiplier: 0.01
176
+ testPenaltyMultiplier: 0.02
177
+ lockPenaltyMultiplier: 0.01
178
+ graphInbound: 0.5
179
+ graphImportance: 0.3
180
+ graphDecay: 0.5
181
+ graphMaxDepth: 3
182
+ cochange: 3.0 # 2.0 → 3.0: further increase to strengthen co-change signal