kiri-mcp-server 0.22.2 → 0.22.3

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 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.22.2-blue.svg)](package.json)
5
+ [![Version](https://img.shields.io/badge/version-0.22.3-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/)
@@ -139,10 +139,10 @@ See [CHANGELOG.md](CHANGELOG.md) for release notes.
139
139
 
140
140
  **Recent highlights:**
141
141
 
142
+ - **v0.22.3**: Denylist filter using node-ignore library for proper gitignore compliance (Issue #154)
142
143
  - **v0.22.2**: files_search path_prefix filter fix (Issue #162)
143
144
  - **v0.22.1**: FTS index WAL visibility fix (Issue #158)
144
145
  - **v0.21.0**: Daemon Watch Mode (`--watch` flag for auto re-indexing)
145
- - **v0.20.2**: Build artifact fix (dist/ contained stale Japanese text)
146
146
 
147
147
  ---
148
148
 
@@ -221,4 +221,4 @@ Built with [Model Context Protocol](https://modelcontextprotocol.io/), [DuckDB](
221
221
 
222
222
  ---
223
223
 
224
- **Status**: v0.22.2 (Beta) - Production-ready for MCP clients
224
+ **Status**: v0.22.3 (Beta) - Production-ready for MCP clients
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kiri-mcp-server",
3
- "version": "0.22.2",
3
+ "version": "0.22.3",
4
4
  "description": "KIRI context extraction platform",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@9.0.0",
@@ -84,6 +84,7 @@
84
84
  "csv-parse": "^5.5.6",
85
85
  "fast-deep-equal": "^3.1.3",
86
86
  "gpt-tokenizer": "^3.2.0",
87
+ "ignore": "^7.0.5",
87
88
  "p-queue": "^9.0.0",
88
89
  "tree-sitter": "^0.22.0",
89
90
  "tree-sitter-java": "^0.23.2",
@@ -6,10 +6,28 @@ export interface DenylistFilter {
6
6
  diff(): string[];
7
7
  }
8
8
  /**
9
- * denylist.ymlを読み込む
10
- * ファイルが存在しない場合は空のパターン配列を返す(.gitignoreのみで動作可能にする)
9
+ * denylist.yml を読み込む
10
+ * ファイルが存在しない場合は空のパターン配列を返す(.gitignore のみで動作可能にする)
11
11
  * ファイルが存在するが内容が無効な場合はエラーを投げる(設定ミスを検出可能にする)
12
12
  */
13
13
  export declare function loadDenylistConfig(configPath?: string): DenylistConfig;
14
+ /**
15
+ * denylist フィルターを作成する
16
+ *
17
+ * `ignore` ライブラリ (node-ignore) を使用して gitignore 互換のフィルタリングを行う。
18
+ * 注意: ルートの .gitignore のみ読み込む簡易ローダ実装。
19
+ *
20
+ * gitignore 互換の動作:
21
+ * - ディレクトリにマッチした場合、その配下のファイルも自動的に除外
22
+ * - 先頭スラッシュ(/node_modules)はルート直下のみマッチ
23
+ * - スラッシュなし(node_modules)は任意の深さでマッチ
24
+ *
25
+ * セキュリティ: denylist.yml のパターンは .gitignore より優先される(後から適用)。
26
+ * denylist.yml では否定パターン(!pattern)は禁止。
27
+ *
28
+ * @param repoRoot リポジトリルートの絶対パス
29
+ * @param configPath オプションの denylist.yml パス
30
+ * @returns DenylistFilter インターフェース
31
+ */
14
32
  export declare function createDenylistFilter(repoRoot: string, configPath?: string): DenylistFilter;
15
33
  //# sourceMappingURL=denylist.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"denylist.d.ts","sourceRoot":"","sources":["../../../../../src/indexer/pipeline/filters/denylist.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,IAAI,IAAI,MAAM,EAAE,CAAC;CAClB;AAyID;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,cAAc,CAwBtE;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,cAAc,CAgB1F"}
1
+ {"version":3,"file":"denylist.d.ts","sourceRoot":"","sources":["../../../../../src/indexer/pipeline/filters/denylist.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,IAAI,IAAI,MAAM,EAAE,CAAC;CAClB;AAkBD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,cAAc,CAwBtE;AAwBD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,cAAc,CA0C1F"}
@@ -1,100 +1,11 @@
1
1
  import { existsSync, readFileSync } from "node:fs";
2
2
  import { resolve } from "node:path";
3
+ import ignore from "ignore";
3
4
  import { parseSimpleYaml } from "../../../shared/utils/simpleYaml.js";
4
5
  /**
5
- * Classify pattern based on gitignore specification
6
- *
7
- * Gitignore rules:
8
- * - No slash: matches at any depth (e.g., node_modules, *.log)
9
- * - Trailing slash only: matches directory at any depth (e.g., node_modules/)
10
- * - Leading slash: matches only at root (e.g., /node_modules/)
11
- * - Intermediate slash: matches relative path (e.g., src/generated/)
12
- *
13
- * @param pattern Glob pattern string
14
- * @returns Pattern classification result
15
- */
16
- function classifyPattern(pattern) {
17
- const hasTrailingSlash = pattern.endsWith("/");
18
- const trimmed = hasTrailingSlash ? pattern.slice(0, -1) : pattern;
19
- // 先頭スラッシュあり: ルート相対
20
- if (trimmed.startsWith("/")) {
21
- return {
22
- type: "rooted",
23
- hasTrailingSlash,
24
- normalizedPattern: trimmed.slice(1),
25
- };
26
- }
27
- // Intermediate slash: relative path (gitignore spec)
28
- // Patterns starting with **/ are treated as "anywhere" type
29
- if (trimmed.includes("/") && !trimmed.startsWith("**/")) {
30
- return {
31
- type: "relative",
32
- hasTrailingSlash,
33
- normalizedPattern: trimmed,
34
- };
35
- }
36
- // No slash, or starts with **/: matches at any depth
37
- // For **/ prefix patterns, strip the **/ and let the "anywhere" prefix handle depth
38
- const strippedPattern = trimmed.startsWith("**/") ? trimmed.slice(3) : trimmed;
39
- return {
40
- type: "anywhere",
41
- hasTrailingSlash,
42
- normalizedPattern: strippedPattern,
43
- };
44
- }
45
- /**
46
- * Globパターンを正規表現に変換(ReDoS対策済み、gitignore仕様準拠)
47
- *
48
- * gitignore仕様:
49
- * - スラッシュなし/末尾スラッシュのみ: 任意の深さでマッチ
50
- * 例: node_modules/ → ルートでもサブディレクトリでもマッチ
51
- * - 先頭スラッシュあり: ルートのみマッチ
52
- * 例: /node_modules/ → ルート直下のみ
53
- * - 中間スラッシュあり: 相対パスとして解釈
54
- * 例: src/generated/ → src/generated/ にのみマッチ
55
- * - 末尾スラッシュ: ディレクトリのみマッチ(サブパスも含む)
56
- *
57
- * @param pattern Globパターン文字列
58
- * @returns コンパイル済み正規表現
59
- * @throws パターンが長すぎる、または複雑すぎる場合
6
+ * .gitignore ファイルを読み込んでパターン配列を返す
7
+ * ファイルが存在しない場合は空配列を返す
60
8
  */
61
- function toRegex(pattern) {
62
- // ReDoS対策: パターン長の制限
63
- if (pattern.length > 500) {
64
- throw new Error("Denylist pattern exceeds maximum length. Simplify the pattern.");
65
- }
66
- // 空パターンや過度に広いパターンを拒否
67
- if (!pattern || pattern === "/" || pattern === "**" || pattern === "**/") {
68
- throw new Error("Empty or overly broad denylist pattern. Provide a specific pattern.");
69
- }
70
- const { type, hasTrailingSlash, normalizedPattern } = classifyPattern(pattern);
71
- // 正規表現用にエスケープ(**は後で処理するためプレースホルダに)
72
- const escaped = normalizedPattern
73
- .replace(/[.+^${}()|[\]\\]/g, "\\$&")
74
- .replace(/\*\*/g, "::DOUBLESTAR::");
75
- // Convert wildcards to regex
76
- // IMPORTANT: Replace single * before doublestar placeholder
77
- // to avoid .* having its * replaced with [^/]*
78
- const withWildcards = escaped
79
- .replace(/\*/g, "[^/]*")
80
- .replace(/::DOUBLESTAR::/g, ".*")
81
- .replace(/\?/g, "[^/]");
82
- // ディレクトリの場合のサフィックス(サブパスにもマッチ)
83
- const suffix = hasTrailingSlash ? "(?:/.*)?" : "";
84
- // パターンタイプに応じてプレフィックス決定
85
- // - anywhere: 任意の深さでマッチ(先頭または任意のディレクトリ境界から)
86
- // - rooted/relative: ルートからのみマッチ
87
- const prefix = type === "anywhere" ? "(?:^|.*/)" : "^";
88
- const finalPattern = `${prefix}${withWildcards}${suffix}$`;
89
- // ReDoS対策: 最終パターンの複雑度チェック(ネストした量指定子)
90
- // [^/]* は bounded なので安全、.* のみを危険なパターンとしてカウント
91
- // [^/]* を除去してから危険な量指定子をチェック
92
- const withoutBounded = finalPattern.replace(/\[\^\/\]\*/g, "");
93
- if (/(\.\*|\w\+|\{\d+,\}).*(\.\*|\w\+|\{\d+,\}).*(\.\*|\w\+|\{\d+,\})/.test(withoutBounded)) {
94
- throw new Error("Denylist pattern is too complex. Use simpler glob patterns.");
95
- }
96
- return new RegExp(finalPattern);
97
- }
98
9
  function loadGitignore(repoRoot) {
99
10
  try {
100
11
  const raw = readFileSync(resolve(repoRoot, ".gitignore"), "utf8");
@@ -108,8 +19,8 @@ function loadGitignore(repoRoot) {
108
19
  }
109
20
  }
110
21
  /**
111
- * denylist.ymlを読み込む
112
- * ファイルが存在しない場合は空のパターン配列を返す(.gitignoreのみで動作可能にする)
22
+ * denylist.yml を読み込む
23
+ * ファイルが存在しない場合は空のパターン配列を返す(.gitignore のみで動作可能にする)
113
24
  * ファイルが存在するが内容が無効な場合はエラーを投げる(設定ミスを検出可能にする)
114
25
  */
115
26
  export function loadDenylistConfig(configPath) {
@@ -131,17 +42,72 @@ export function loadDenylistConfig(configPath) {
131
42
  }
132
43
  return { patterns };
133
44
  }
45
+ // Validate patterns and throw error for overly broad or negation patterns.
46
+ // Overly broad patterns match all files and are likely configuration mistakes.
47
+ // Negation patterns are forbidden in denylist for security (denylist must always deny).
48
+ function validatePatterns(patterns) {
49
+ const overlyBroadPatterns = new Set(["", "**", "**/", "/"]);
50
+ for (const pattern of patterns) {
51
+ if (overlyBroadPatterns.has(pattern)) {
52
+ throw new Error(`Overly broad denylist pattern: "${pattern}". ` +
53
+ "Use a more specific pattern or remove this entry.");
54
+ }
55
+ // 否定パターンはdenylistでは禁止(セキュリティ上の理由)
56
+ if (pattern.startsWith("!")) {
57
+ throw new Error(`Negation pattern in denylist: "${pattern}". ` +
58
+ "Denylist patterns must always deny; negation is not allowed.");
59
+ }
60
+ }
61
+ }
62
+ /**
63
+ * denylist フィルターを作成する
64
+ *
65
+ * `ignore` ライブラリ (node-ignore) を使用して gitignore 互換のフィルタリングを行う。
66
+ * 注意: ルートの .gitignore のみ読み込む簡易ローダ実装。
67
+ *
68
+ * gitignore 互換の動作:
69
+ * - ディレクトリにマッチした場合、その配下のファイルも自動的に除外
70
+ * - 先頭スラッシュ(/node_modules)はルート直下のみマッチ
71
+ * - スラッシュなし(node_modules)は任意の深さでマッチ
72
+ *
73
+ * セキュリティ: denylist.yml のパターンは .gitignore より優先される(後から適用)。
74
+ * denylist.yml では否定パターン(!pattern)は禁止。
75
+ *
76
+ * @param repoRoot リポジトリルートの絶対パス
77
+ * @param configPath オプションの denylist.yml パス
78
+ * @returns DenylistFilter インターフェース
79
+ */
134
80
  export function createDenylistFilter(repoRoot, configPath) {
135
81
  const { patterns } = loadDenylistConfig(configPath);
82
+ // denylist.yml のパターンのみバリデーション(.gitignore はユーザーコントロール外の可能性があるため)
83
+ validatePatterns(patterns);
136
84
  const gitignorePatterns = loadGitignore(repoRoot);
137
- const combined = Array.from(new Set([...patterns, ...gitignorePatterns]));
138
- const regexList = combined.map(toRegex);
139
- const diffEntries = gitignorePatterns.filter((pattern) => !patterns.includes(pattern));
85
+ // diff() 用: .gitignore にあって denylist.yml にないパターン
86
+ const patternSet = new Set(patterns);
87
+ const diffEntries = gitignorePatterns.filter((pattern) => !patternSet.has(pattern));
88
+ // ignore インスタンスを作成
89
+ // 重要: gitignore を先に追加し、denylist を後に追加することで denylist が優先される
90
+ // (ignore ライブラリは「後勝ち」セマンティクス)
91
+ const ig = ignore().add(gitignorePatterns).add(patterns);
140
92
  return {
93
+ /**
94
+ * 指定されたパスが除外対象かどうかを判定
95
+ * @param path リポジトリルートからの相対パス
96
+ * @returns 除外対象の場合 true
97
+ */
141
98
  isDenied(path) {
99
+ // ignore ライブラリは先頭スラッシュなしのパスを期待する
142
100
  const normalized = path.startsWith("/") ? path.slice(1) : path;
143
- return regexList.some((regex) => regex.test(normalized));
101
+ // 空パスはルートディレクトリ自体を表すので除外しない
102
+ if (normalized === "") {
103
+ return false;
104
+ }
105
+ return ig.ignores(normalized);
144
106
  },
107
+ /**
108
+ * .gitignore に含まれていて denylist.yml に含まれていないパターンを返す
109
+ * デバッグや差分確認用
110
+ */
145
111
  diff() {
146
112
  return diffEntries;
147
113
  },
@@ -1 +1 @@
1
- {"version":3,"file":"denylist.js","sourceRoot":"","sources":["../../../../../src/indexer/pipeline/filters/denylist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"denylist.js","sourceRoot":"","sources":["../../../../../src/indexer/pipeline/filters/denylist.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kiri-mcp-server",
3
- "version": "0.22.2",
3
+ "version": "0.22.3",
4
4
  "description": "KIRI context extraction platform",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@9.0.0",
@@ -84,6 +84,7 @@
84
84
  "csv-parse": "^5.5.6",
85
85
  "fast-deep-equal": "^3.1.3",
86
86
  "gpt-tokenizer": "^3.2.0",
87
+ "ignore": "^7.0.5",
87
88
  "p-queue": "^9.0.0",
88
89
  "tree-sitter": "^0.22.0",
89
90
  "tree-sitter-java": "^0.23.2",