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
@@ -25,6 +25,12 @@ function validateWeights(weights, profileName) {
25
25
  "blacklistPenaltyMultiplier",
26
26
  "testPenaltyMultiplier",
27
27
  "lockPenaltyMultiplier",
28
+ // Graph Layer parameters (Phase 3.2)
29
+ "graphInbound",
30
+ "graphImportance",
31
+ "graphDecay",
32
+ "graphMaxDepth",
33
+ "cochange",
28
34
  ];
29
35
  const obj = weights;
30
36
  // v1.0.0: Provide default values for new fields (backward compatibility)
@@ -40,6 +46,22 @@ function validateWeights(weights, profileName) {
40
46
  console.warn(`[KIRI] Profile '${profileName}' missing lockPenaltyMultiplier, using default 0.01`);
41
47
  obj.lockPenaltyMultiplier = 0.01;
42
48
  }
49
+ // Graph Layer parameters (Phase 3.2): Provide default values for backward compatibility
50
+ if (obj.graphInbound === undefined) {
51
+ obj.graphInbound = 0.5;
52
+ }
53
+ if (obj.graphImportance === undefined) {
54
+ obj.graphImportance = 0.3;
55
+ }
56
+ if (obj.graphDecay === undefined) {
57
+ obj.graphDecay = 0.5;
58
+ }
59
+ if (obj.graphMaxDepth === undefined) {
60
+ obj.graphMaxDepth = 3;
61
+ }
62
+ if (obj.cochange === undefined) {
63
+ obj.cochange = 0.0;
64
+ }
43
65
  for (const key of required) {
44
66
  const value = obj[key];
45
67
  if (typeof value !== "number" || !Number.isFinite(value) || value < 0) {
@@ -120,6 +142,17 @@ function loadProfilesFromConfig() {
120
142
  }
121
143
  validated[profile] = validateWeights(parsed[profile], profile);
122
144
  }
145
+ // 追加プロファイル(graph-off, graph-onなど)もロード
146
+ for (const profileName of Object.keys(parsed)) {
147
+ if (!validated[profileName]) {
148
+ try {
149
+ validated[profileName] = validateWeights(parsed[profileName], profileName);
150
+ }
151
+ catch (err) {
152
+ console.warn(`[KIRI] Skipping invalid optional profile '${profileName}':`, err);
153
+ }
154
+ }
155
+ }
123
156
  profilesCache = validated;
124
157
  return profilesCache;
125
158
  }
@@ -140,6 +173,11 @@ function loadProfilesFromConfig() {
140
173
  blacklistPenaltyMultiplier: 0.01,
141
174
  testPenaltyMultiplier: 0.02,
142
175
  lockPenaltyMultiplier: 0.01,
176
+ graphInbound: 0.5,
177
+ graphImportance: 0.3,
178
+ graphDecay: 0.5,
179
+ graphMaxDepth: 3,
180
+ cochange: 0.0,
143
181
  },
144
182
  debug: {
145
183
  textMatch: 1.0,
@@ -154,6 +192,11 @@ function loadProfilesFromConfig() {
154
192
  blacklistPenaltyMultiplier: 0.01,
155
193
  testPenaltyMultiplier: 0.02,
156
194
  lockPenaltyMultiplier: 0.01,
195
+ graphInbound: 0.55,
196
+ graphImportance: 0.35,
197
+ graphDecay: 0.5,
198
+ graphMaxDepth: 3,
199
+ cochange: 0.0,
157
200
  },
158
201
  api: {
159
202
  textMatch: 1.0,
@@ -168,6 +211,11 @@ function loadProfilesFromConfig() {
168
211
  blacklistPenaltyMultiplier: 0.01,
169
212
  testPenaltyMultiplier: 0.02,
170
213
  lockPenaltyMultiplier: 0.01,
214
+ graphInbound: 0.5,
215
+ graphImportance: 0.3,
216
+ graphDecay: 0.5,
217
+ graphMaxDepth: 3,
218
+ cochange: 0.0,
171
219
  },
172
220
  editor: {
173
221
  textMatch: 1.0,
@@ -182,6 +230,11 @@ function loadProfilesFromConfig() {
182
230
  blacklistPenaltyMultiplier: 0.01,
183
231
  testPenaltyMultiplier: 0.02,
184
232
  lockPenaltyMultiplier: 0.01,
233
+ graphInbound: 0.45,
234
+ graphImportance: 0.25,
235
+ graphDecay: 0.5,
236
+ graphMaxDepth: 3,
237
+ cochange: 0.0,
185
238
  },
186
239
  bugfix: {
187
240
  textMatch: 1.0,
@@ -196,6 +249,11 @@ function loadProfilesFromConfig() {
196
249
  blacklistPenaltyMultiplier: 0.01,
197
250
  testPenaltyMultiplier: 0.02,
198
251
  lockPenaltyMultiplier: 0.01,
252
+ graphInbound: 0.6,
253
+ graphImportance: 0.4,
254
+ graphDecay: 0.5,
255
+ graphMaxDepth: 3,
256
+ cochange: 0.0,
199
257
  },
200
258
  testfail: {
201
259
  textMatch: 1.0,
@@ -210,6 +268,11 @@ function loadProfilesFromConfig() {
210
268
  blacklistPenaltyMultiplier: 0.01,
211
269
  testPenaltyMultiplier: 0.2,
212
270
  lockPenaltyMultiplier: 0.01,
271
+ graphInbound: 0.4,
272
+ graphImportance: 0.3,
273
+ graphDecay: 0.5,
274
+ graphMaxDepth: 3,
275
+ cochange: 0.0,
213
276
  },
214
277
  typeerror: {
215
278
  textMatch: 1.0,
@@ -224,6 +287,11 @@ function loadProfilesFromConfig() {
224
287
  blacklistPenaltyMultiplier: 0.01,
225
288
  testPenaltyMultiplier: 0.02,
226
289
  lockPenaltyMultiplier: 0.01,
290
+ graphInbound: 0.35,
291
+ graphImportance: 0.25,
292
+ graphDecay: 0.5,
293
+ graphMaxDepth: 3,
294
+ cochange: 0.0,
227
295
  },
228
296
  feature: {
229
297
  textMatch: 1.0,
@@ -238,6 +306,11 @@ function loadProfilesFromConfig() {
238
306
  blacklistPenaltyMultiplier: 0.01,
239
307
  testPenaltyMultiplier: 0.02,
240
308
  lockPenaltyMultiplier: 0.01,
309
+ graphInbound: 0.5,
310
+ graphImportance: 0.35,
311
+ graphDecay: 0.5,
312
+ graphMaxDepth: 3,
313
+ cochange: 0.0,
241
314
  },
242
315
  };
243
316
  return profilesCache;
@@ -1 +1 @@
1
- {"version":3,"file":"scoring.js","sourceRoot":"","sources":["../../../src/server/scoring.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scoring.js","sourceRoot":"","sources":["../../../src/server/scoring.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { DuckDBClient } from "../../shared/duckdb.js";
2
2
  import { type DomainTermsDictionary } from "../domain-terms.js";
3
+ import { type StopWordsService } from "../stop-words.js";
3
4
  import { RepoRepository } from "./repo-repository.js";
4
5
  import { RepoResolver } from "./repo-resolver.js";
5
6
  /**
@@ -12,6 +13,7 @@ export interface ServerServices {
12
13
  repoRepository: RepoRepository;
13
14
  repoResolver: RepoResolver;
14
15
  domainTerms: DomainTermsDictionary;
16
+ stopWords: StopWordsService;
15
17
  }
16
18
  /**
17
19
  * createServerServices
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,EAAE,qBAAqB,CAAC;CACpC;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,YAAY,GAAG,cAAc,CAoBrE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAExE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,EAAE,qBAAqB,CAAC;IACnC,SAAS,EAAE,gBAAgB,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,YAAY,GAAG,cAAc,CAsBrE"}
@@ -1,4 +1,5 @@
1
1
  import { loadDomainTerms, } from "../domain-terms.js";
2
+ import { loadStopWords } from "../stop-words.js";
2
3
  import { RepoRepository } from "./repo-repository.js";
3
4
  import { RepoResolver } from "./repo-resolver.js";
4
5
  /**
@@ -23,10 +24,12 @@ export function createServerServices(db) {
23
24
  return { matched: [], aliases: [], fileHints: [] };
24
25
  }
25
26
  })();
27
+ const stopWords = loadStopWords();
26
28
  return {
27
29
  repoRepository,
28
30
  repoResolver,
29
31
  domainTerms,
32
+ stopWords,
30
33
  };
31
34
  }
32
35
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/server/services/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,GAGhB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAclD;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAgB;IACnD,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,EAAE,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,cAAc,CAAC,CAAC;IACtD,MAAM,WAAW,GACf,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,GAAG;QAC1C,CAAC,CAAC,eAAe,EAAE;QACnB,CAAC,CAAE,IAAI,CAAC,MAAM,SAAS;YACnB,cAAc;gBACZ,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;YACrD,CAAC;YACD,gBAAgB;gBACd,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;YACrD,CAAC;SACF,CAAC,EAAuC,CAAC;IAEhD,OAAO;QACL,cAAc;QACd,YAAY;QACZ,WAAW;KACZ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/server/services/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,GAGhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAyB,MAAM,kBAAkB,CAAC;AAExE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAelD;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAgB;IACnD,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,EAAE,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,cAAc,CAAC,CAAC;IACtD,MAAM,WAAW,GACf,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,GAAG;QAC1C,CAAC,CAAC,eAAe,EAAE;QACnB,CAAC,CAAE,IAAI,CAAC,MAAM,SAAS;YACnB,cAAc;gBACZ,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;YACrD,CAAC;YACD,gBAAgB;gBACd,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;YACrD,CAAC;SACF,CAAC,EAAuC,CAAC;IAChD,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;IAElC,OAAO;QACL,cAAc;QACd,YAAY;QACZ,WAAW;QACX,SAAS;KACV,CAAC;AACJ,CAAC"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Stop Words Service
3
+ *
4
+ * ストップワード(除外語)の設定と判定を提供するサービス。
5
+ * 多言語対応(英語・日本語)、外部設定ファイルからの読み込み、
6
+ * シングルトンキャッシュによるパフォーマンス最適化を実装。
7
+ *
8
+ * @see Issue #48: Improve context_bundle stop word coverage and configurability
9
+ */
10
+ export interface StopWordsConfig {
11
+ version: string;
12
+ default_language: "en" | "ja";
13
+ languages: Record<string, {
14
+ words: string[];
15
+ }>;
16
+ code_generic: string[];
17
+ custom: string[];
18
+ }
19
+ /**
20
+ * Phase 2用IDFプロバイダーインターフェース
21
+ * Phase 1では使用しないが、将来の拡張に備えて定義
22
+ */
23
+ export interface IdfProvider {
24
+ getIdf(word: string): number;
25
+ }
26
+ /**
27
+ * ストップワードサービス
28
+ *
29
+ * ストップワードの判定と重み付けを提供する。
30
+ * 設定ファイルがない場合はレガシーモードで動作し、
31
+ * 既存の31語のストップワードを使用する。
32
+ */
33
+ export declare class StopWordsService {
34
+ private readonly words;
35
+ private readonly isLegacyMode;
36
+ constructor(config: StopWordsConfig | null, language?: string);
37
+ /**
38
+ * ストップワード判定
39
+ *
40
+ * @param word - 判定対象の単語
41
+ * @returns ストップワードならtrue
42
+ */
43
+ has(word: string): boolean;
44
+ /**
45
+ * IDF重み付け取得
46
+ *
47
+ * ストップワードの場合は0.0を返す。
48
+ * IdfProviderが提供された場合は、IDFベースの重みを返す。
49
+ * それ以外の場合は1.0(ニュートラル重み)を返す。
50
+ *
51
+ * Phase 2実装: IdfProviderを使用して高頻度語を自動的に減衰。
52
+ *
53
+ * @param word - 対象単語
54
+ * @param idfProvider - IDFプロバイダー(オプション)
55
+ * @returns 重み(0.0〜1.0)
56
+ */
57
+ getWeight(word: string, idfProvider?: IdfProvider): number;
58
+ /**
59
+ * トークン正規化
60
+ * - 空文字・null/undefinedの防御処理
61
+ * - NFKC正規化(全角→半角、濁点統合等)
62
+ * - 小文字化
63
+ * - カタカナ→ひらがな変換(日本語用)
64
+ *
65
+ * @param token - 正規化対象のトークン
66
+ * @returns 正規化されたトークン(空入力時は空文字列)
67
+ */
68
+ static normalizeToken(token: string): string;
69
+ /**
70
+ * デバッグ用: 現在のストップワード数を取得
71
+ */
72
+ get size(): number;
73
+ /**
74
+ * レガシーモードかどうか
75
+ */
76
+ get legacy(): boolean;
77
+ /**
78
+ * 全ストップワードを取得(デバッグ・テスト用)
79
+ */
80
+ getWords(): string[];
81
+ }
82
+ export interface LoadStopWordsOptions {
83
+ configPath?: string;
84
+ cwd?: string;
85
+ language?: string;
86
+ forceReload?: boolean;
87
+ }
88
+ /**
89
+ * ストップワードサービスをロード
90
+ *
91
+ * 設定ファイルを読み込み、StopWordsServiceを初期化する。
92
+ * シングルトンキャッシュを使用し、同一設定ファイルの再読み込みを回避。
93
+ *
94
+ * @param options - ロードオプション
95
+ * @returns StopWordsServiceインスタンス
96
+ */
97
+ export declare function loadStopWords(options?: LoadStopWordsOptions): StopWordsService;
98
+ /**
99
+ * テスト用: キャッシュクリア
100
+ */
101
+ export declare function clearStopWordsCache(): void;
102
+ /**
103
+ * レガシーストップワードリストを取得(テスト・マイグレーション用)
104
+ */
105
+ export declare function getLegacyStopWords(): readonly string[];
106
+ //# sourceMappingURL=stop-words.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop-words.d.ts","sourceRoot":"","sources":["../../../src/server/stop-words.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA0CH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,IAAI,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAC/C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AA4DD;;;;;;GAMG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;gBAE3B,MAAM,EAAE,eAAe,GAAG,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM;IAgC7D;;;;;OAKG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,MAAM;IAe1D;;;;;;;;;OASG;IACH,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IA8B5C;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED;;OAEG;IACH,QAAQ,IAAI,MAAM,EAAE;CAGrB;AA6BD,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,gBAAgB,CA0DlF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAI1C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,SAAS,MAAM,EAAE,CAEtD"}
@@ -0,0 +1,312 @@
1
+ /**
2
+ * Stop Words Service
3
+ *
4
+ * ストップワード(除外語)の設定と判定を提供するサービス。
5
+ * 多言語対応(英語・日本語)、外部設定ファイルからの読み込み、
6
+ * シングルトンキャッシュによるパフォーマンス最適化を実装。
7
+ *
8
+ * @see Issue #48: Improve context_bundle stop word coverage and configurability
9
+ */
10
+ import fs from "node:fs";
11
+ import path from "node:path";
12
+ import { parse } from "yaml";
13
+ import { z } from "zod";
14
+ // ============================================================
15
+ // 定数
16
+ // ============================================================
17
+ /**
18
+ * カタカナ→ひらがな変換オフセット
19
+ *
20
+ * Unicode上でカタカナ(U+30A1-U+30F6)とひらがな(U+3041-U+3096)は
21
+ * 0x60(96)の差で対応している。例: ア(U+30A2) - 0x60 = あ(U+3042)
22
+ *
23
+ * @see https://www.unicode.org/charts/PDF/U3040.pdf (Hiragana)
24
+ * @see https://en.wikipedia.org/wiki/Katakana_(Unicode_block)
25
+ */
26
+ const KATAKANA_HIRAGANA_OFFSET = 0x60;
27
+ /**
28
+ * カタカナ変換対象範囲の開始 (ァ)
29
+ * U+30A1-U+30F6 は全て -0x60 でひらがなに変換可能
30
+ */
31
+ const KATAKANA_START = 0x30a1;
32
+ /**
33
+ * カタカナ変換対象範囲の終了 (ヶ)
34
+ * この範囲にはヴ(U+30F4)、ヵ(U+30F5)、ヶ(U+30F6)も含まれる
35
+ *
36
+ * 注意: U+30F7-U+30FA (ヷ-ヺ) は対応ひらがなが未割当のため除外
37
+ * 注意: U+30FC (ー) は長音記号でひらがな/カタカナ共用のため変換不要
38
+ */
39
+ const KATAKANA_END = 0x30f6;
40
+ // ============================================================
41
+ // Zodスキーマ
42
+ // ============================================================
43
+ const LanguageWordsSchema = z.object({
44
+ words: z.array(z.string().trim().min(1)),
45
+ });
46
+ const StopWordsConfigSchema = z.object({
47
+ version: z.string().default("1.0"),
48
+ default_language: z.enum(["en", "ja"]).default("en"),
49
+ languages: z.record(z.string(), LanguageWordsSchema).default({}),
50
+ code_generic: z.array(z.string().trim().min(1)).default([]),
51
+ custom: z.array(z.string().trim().min(1)).default([]),
52
+ });
53
+ // ============================================================
54
+ // レガシーデフォルト(後方互換用)
55
+ // ============================================================
56
+ const LEGACY_STOP_WORDS = [
57
+ "the",
58
+ "and",
59
+ "for",
60
+ "with",
61
+ "from",
62
+ "this",
63
+ "that",
64
+ "have",
65
+ "has",
66
+ "will",
67
+ "would",
68
+ "into",
69
+ "about",
70
+ "there",
71
+ "their",
72
+ "your",
73
+ "fix",
74
+ "test",
75
+ "tests",
76
+ "issue",
77
+ "error",
78
+ "bug",
79
+ "fail",
80
+ "failing",
81
+ "make",
82
+ "when",
83
+ "where",
84
+ "should",
85
+ "could",
86
+ "need",
87
+ "goal",
88
+ ];
89
+ // ============================================================
90
+ // StopWordsService クラス
91
+ // ============================================================
92
+ /**
93
+ * ストップワードサービス
94
+ *
95
+ * ストップワードの判定と重み付けを提供する。
96
+ * 設定ファイルがない場合はレガシーモードで動作し、
97
+ * 既存の31語のストップワードを使用する。
98
+ */
99
+ export class StopWordsService {
100
+ words;
101
+ isLegacyMode;
102
+ constructor(config, language) {
103
+ if (!config) {
104
+ // レガシーモード: 設定ファイルなし
105
+ this.words = new Set(LEGACY_STOP_WORDS);
106
+ this.isLegacyMode = true;
107
+ console.info(`[KIRI] Using legacy stop words (${LEGACY_STOP_WORDS.length} words). ` +
108
+ "Consider adding config/stop-words.yml for extended support.");
109
+ return;
110
+ }
111
+ this.isLegacyMode = false;
112
+ const lang = language ?? config.default_language;
113
+ const langWords = config.languages[lang]?.words ?? [];
114
+ // マージ優先順位: code_generic < language < custom
115
+ // 全て同じSetに追加されるため、実質的に和集合
116
+ const merged = new Set();
117
+ for (const word of config.code_generic) {
118
+ merged.add(StopWordsService.normalizeToken(word));
119
+ }
120
+ for (const word of langWords) {
121
+ merged.add(StopWordsService.normalizeToken(word));
122
+ }
123
+ for (const word of config.custom) {
124
+ merged.add(StopWordsService.normalizeToken(word));
125
+ }
126
+ this.words = merged;
127
+ }
128
+ /**
129
+ * ストップワード判定
130
+ *
131
+ * @param word - 判定対象の単語
132
+ * @returns ストップワードならtrue
133
+ */
134
+ has(word) {
135
+ return this.words.has(StopWordsService.normalizeToken(word));
136
+ }
137
+ /**
138
+ * IDF重み付け取得
139
+ *
140
+ * ストップワードの場合は0.0を返す。
141
+ * IdfProviderが提供された場合は、IDFベースの重みを返す。
142
+ * それ以外の場合は1.0(ニュートラル重み)を返す。
143
+ *
144
+ * Phase 2実装: IdfProviderを使用して高頻度語を自動的に減衰。
145
+ *
146
+ * @param word - 対象単語
147
+ * @param idfProvider - IDFプロバイダー(オプション)
148
+ * @returns 重み(0.0〜1.0)
149
+ */
150
+ getWeight(word, idfProvider) {
151
+ // ストップワードは常に0.0
152
+ if (this.has(word)) {
153
+ return 0.0;
154
+ }
155
+ // IdfProviderが提供されている場合はIDF重みを使用
156
+ if (idfProvider) {
157
+ return idfProvider.getIdf(word);
158
+ }
159
+ // フォールバック: ニュートラル重み
160
+ return 1.0;
161
+ }
162
+ /**
163
+ * トークン正規化
164
+ * - 空文字・null/undefinedの防御処理
165
+ * - NFKC正規化(全角→半角、濁点統合等)
166
+ * - 小文字化
167
+ * - カタカナ→ひらがな変換(日本語用)
168
+ *
169
+ * @param token - 正規化対象のトークン
170
+ * @returns 正規化されたトークン(空入力時は空文字列)
171
+ */
172
+ static normalizeToken(token) {
173
+ // 防御的ガード: null/undefined/空文字の場合は早期リターン
174
+ if (!token) {
175
+ return "";
176
+ }
177
+ // NFKC正規化
178
+ let normalized = token.normalize("NFKC");
179
+ // 小文字化
180
+ normalized = normalized.toLowerCase();
181
+ // カタカナ→ひらがな変換
182
+ // 範囲: U+30A1(ァ)〜U+30F6(ヶ)
183
+ // 長音記号ー(U+30FC)は範囲外のため変換されず、ひらがな文中でもそのまま保持される
184
+ // codePointAtを使用してサロゲートペア対応(カタカナはBMP内だが安全のため)
185
+ normalized = normalized.replace(new RegExp(`[\\u${KATAKANA_START.toString(16)}-\\u${KATAKANA_END.toString(16)}]`, "g"), (char) => {
186
+ const codePoint = char.codePointAt(0);
187
+ if (codePoint === undefined) {
188
+ return char;
189
+ }
190
+ return String.fromCodePoint(codePoint - KATAKANA_HIRAGANA_OFFSET);
191
+ });
192
+ return normalized.trim();
193
+ }
194
+ /**
195
+ * デバッグ用: 現在のストップワード数を取得
196
+ */
197
+ get size() {
198
+ return this.words.size;
199
+ }
200
+ /**
201
+ * レガシーモードかどうか
202
+ */
203
+ get legacy() {
204
+ return this.isLegacyMode;
205
+ }
206
+ /**
207
+ * 全ストップワードを取得(デバッグ・テスト用)
208
+ */
209
+ getWords() {
210
+ return Array.from(this.words);
211
+ }
212
+ }
213
+ // ============================================================
214
+ // シングルトンキャッシュ
215
+ // ============================================================
216
+ let cachedService = null;
217
+ let cachedConfigPath = null;
218
+ let cachedConfigMtime = null;
219
+ function getConfigMtime(configPath) {
220
+ try {
221
+ return fs.statSync(configPath).mtimeMs;
222
+ }
223
+ catch {
224
+ return null;
225
+ }
226
+ }
227
+ // ============================================================
228
+ // ローダー関数
229
+ // ============================================================
230
+ const CONFIG_CANDIDATES = [
231
+ ".kiri/stop-words.yml",
232
+ ".kiri/stop-words.yaml",
233
+ "config/stop-words.yml",
234
+ "config/stop-words.yaml",
235
+ ];
236
+ /**
237
+ * ストップワードサービスをロード
238
+ *
239
+ * 設定ファイルを読み込み、StopWordsServiceを初期化する。
240
+ * シングルトンキャッシュを使用し、同一設定ファイルの再読み込みを回避。
241
+ *
242
+ * @param options - ロードオプション
243
+ * @returns StopWordsServiceインスタンス
244
+ */
245
+ export function loadStopWords(options = {}) {
246
+ const cwd = options.cwd ?? process.cwd();
247
+ const forceReload = options.forceReload ?? false;
248
+ // 設定ファイルパスの解決
249
+ let resolvedPath = null;
250
+ if (options.configPath) {
251
+ resolvedPath = path.isAbsolute(options.configPath)
252
+ ? options.configPath
253
+ : path.join(cwd, options.configPath);
254
+ }
255
+ else {
256
+ for (const candidate of CONFIG_CANDIDATES) {
257
+ const fullPath = path.join(cwd, candidate);
258
+ if (fs.existsSync(fullPath)) {
259
+ resolvedPath = fullPath;
260
+ break;
261
+ }
262
+ }
263
+ }
264
+ // キャッシュ有効性チェック
265
+ if (!forceReload && cachedService) {
266
+ if (!resolvedPath && cachedConfigPath === null) {
267
+ return cachedService; // 両方ともconfig無し
268
+ }
269
+ if (resolvedPath && resolvedPath === cachedConfigPath) {
270
+ const currentMtime = getConfigMtime(resolvedPath);
271
+ if (currentMtime === cachedConfigMtime) {
272
+ return cachedService; // 同一ファイル、未変更
273
+ }
274
+ }
275
+ }
276
+ // 設定ファイル読み込み
277
+ let config = null;
278
+ if (resolvedPath && fs.existsSync(resolvedPath)) {
279
+ const raw = fs.readFileSync(resolvedPath, "utf8");
280
+ const parsed = parse(raw);
281
+ const result = StopWordsConfigSchema.safeParse(parsed);
282
+ if (!result.success) {
283
+ const details = result.error.issues.map((issue) => issue.message).join(", ");
284
+ throw new Error(`Invalid stop words config in ${resolvedPath}: ${details}`);
285
+ }
286
+ config = result.data;
287
+ cachedConfigPath = resolvedPath;
288
+ cachedConfigMtime = getConfigMtime(resolvedPath);
289
+ }
290
+ else {
291
+ cachedConfigPath = null;
292
+ cachedConfigMtime = null;
293
+ }
294
+ // サービス生成&キャッシュ
295
+ cachedService = new StopWordsService(config, options.language);
296
+ return cachedService;
297
+ }
298
+ /**
299
+ * テスト用: キャッシュクリア
300
+ */
301
+ export function clearStopWordsCache() {
302
+ cachedService = null;
303
+ cachedConfigPath = null;
304
+ cachedConfigMtime = null;
305
+ }
306
+ /**
307
+ * レガシーストップワードリストを取得(テスト・マイグレーション用)
308
+ */
309
+ export function getLegacyStopWords() {
310
+ return LEGACY_STOP_WORDS;
311
+ }
312
+ //# sourceMappingURL=stop-words.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop-words.js","sourceRoot":"","sources":["../../../src/server/stop-words.ts"],"names":[],"mappings":"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"}