kiri-mcp-server 0.9.6 → 0.9.9

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 (154) hide show
  1. package/README.md +94 -7
  2. package/dist/client/cli.js +68 -0
  3. package/dist/client/cli.js.map +1 -0
  4. package/dist/client/index.js +5 -0
  5. package/dist/client/index.js.map +1 -0
  6. package/dist/eval/metrics.js +47 -0
  7. package/dist/eval/metrics.js.map +1 -0
  8. package/dist/indexer/cli.js +362 -0
  9. package/dist/indexer/cli.js.map +1 -0
  10. package/dist/indexer/codeintel.js +182 -0
  11. package/dist/indexer/codeintel.js.map +1 -0
  12. package/dist/indexer/git.js +30 -0
  13. package/dist/indexer/git.js.map +1 -0
  14. package/dist/indexer/language.js +34 -0
  15. package/dist/indexer/language.js.map +1 -0
  16. package/dist/indexer/pipeline/filters/denylist.js +71 -0
  17. package/dist/indexer/pipeline/filters/denylist.js.map +1 -0
  18. package/dist/indexer/schema.js +101 -0
  19. package/dist/indexer/schema.js.map +1 -0
  20. package/dist/package.json +11 -1
  21. package/dist/server/bootstrap.js +19 -0
  22. package/dist/server/bootstrap.js.map +1 -0
  23. package/dist/server/context.js +1 -0
  24. package/dist/server/context.js.map +1 -0
  25. package/dist/server/fallbacks/degradeController.js +69 -0
  26. package/dist/server/fallbacks/degradeController.js.map +1 -0
  27. package/dist/server/handlers.js +1268 -0
  28. package/dist/server/handlers.js.map +1 -0
  29. package/dist/server/main.js +151 -0
  30. package/dist/server/main.js.map +1 -0
  31. package/dist/server/observability/metrics.js +56 -0
  32. package/dist/server/observability/metrics.js.map +1 -0
  33. package/dist/server/observability/tracing.js +58 -0
  34. package/dist/server/observability/tracing.js.map +1 -0
  35. package/dist/server/rpc.js +477 -0
  36. package/dist/server/rpc.js.map +1 -0
  37. package/dist/server/runtime.js +47 -0
  38. package/dist/server/runtime.js.map +1 -0
  39. package/dist/server/scoring.js +116 -0
  40. package/dist/server/scoring.js.map +1 -0
  41. package/dist/server/stdio.js +76 -0
  42. package/dist/server/stdio.js.map +1 -0
  43. package/dist/shared/duckdb.js +119 -0
  44. package/dist/shared/duckdb.js.map +1 -0
  45. package/dist/shared/embedding.js +98 -0
  46. package/dist/shared/embedding.js.map +1 -0
  47. package/dist/shared/index.js +9 -0
  48. package/dist/shared/index.js.map +1 -0
  49. package/dist/shared/security/config.js +64 -0
  50. package/dist/shared/security/config.js.map +1 -0
  51. package/dist/shared/security/masker.js +56 -0
  52. package/dist/shared/security/masker.js.map +1 -0
  53. package/dist/shared/tokenizer.js +4 -0
  54. package/dist/shared/tokenizer.js.map +1 -0
  55. package/dist/shared/utils/simpleYaml.js +89 -0
  56. package/dist/shared/utils/simpleYaml.js.map +1 -0
  57. package/dist/src/client/proxy.js +2 -1
  58. package/dist/src/client/proxy.js.map +1 -1
  59. package/dist/src/client/start-daemon.d.ts.map +1 -1
  60. package/dist/src/client/start-daemon.js +2 -1
  61. package/dist/src/client/start-daemon.js.map +1 -1
  62. package/dist/src/daemon/daemon.js +6 -4
  63. package/dist/src/daemon/daemon.js.map +1 -1
  64. package/dist/src/daemon/socket.d.ts +6 -4
  65. package/dist/src/daemon/socket.d.ts.map +1 -1
  66. package/dist/src/daemon/socket.js +62 -18
  67. package/dist/src/daemon/socket.js.map +1 -1
  68. package/dist/src/indexer/cli.d.ts +1 -0
  69. package/dist/src/indexer/cli.d.ts.map +1 -1
  70. package/dist/src/indexer/cli.js +503 -257
  71. package/dist/src/indexer/cli.js.map +1 -1
  72. package/dist/src/indexer/codeintel.d.ts +1 -1
  73. package/dist/src/indexer/codeintel.d.ts.map +1 -1
  74. package/dist/src/indexer/codeintel.js +296 -3
  75. package/dist/src/indexer/codeintel.js.map +1 -1
  76. package/dist/src/indexer/dart/analyze.d.ts +29 -0
  77. package/dist/src/indexer/dart/analyze.d.ts.map +1 -0
  78. package/dist/src/indexer/dart/analyze.js +452 -0
  79. package/dist/src/indexer/dart/analyze.js.map +1 -0
  80. package/dist/src/indexer/dart/client.d.ts +113 -0
  81. package/dist/src/indexer/dart/client.d.ts.map +1 -0
  82. package/dist/src/indexer/dart/client.js +444 -0
  83. package/dist/src/indexer/dart/client.js.map +1 -0
  84. package/dist/src/indexer/dart/config.d.ts +36 -0
  85. package/dist/src/indexer/dart/config.d.ts.map +1 -0
  86. package/dist/src/indexer/dart/config.js +62 -0
  87. package/dist/src/indexer/dart/config.js.map +1 -0
  88. package/dist/src/indexer/dart/dependencies.d.ts +17 -0
  89. package/dist/src/indexer/dart/dependencies.d.ts.map +1 -0
  90. package/dist/src/indexer/dart/dependencies.js +102 -0
  91. package/dist/src/indexer/dart/dependencies.js.map +1 -0
  92. package/dist/src/indexer/dart/pathKey.d.ts +40 -0
  93. package/dist/src/indexer/dart/pathKey.d.ts.map +1 -0
  94. package/dist/src/indexer/dart/pathKey.js +72 -0
  95. package/dist/src/indexer/dart/pathKey.js.map +1 -0
  96. package/dist/src/indexer/dart/poolGate.d.ts +57 -0
  97. package/dist/src/indexer/dart/poolGate.d.ts.map +1 -0
  98. package/dist/src/indexer/dart/poolGate.js +87 -0
  99. package/dist/src/indexer/dart/poolGate.js.map +1 -0
  100. package/dist/src/indexer/dart/sdk.d.ts +40 -0
  101. package/dist/src/indexer/dart/sdk.d.ts.map +1 -0
  102. package/dist/src/indexer/dart/sdk.js +167 -0
  103. package/dist/src/indexer/dart/sdk.js.map +1 -0
  104. package/dist/src/indexer/dart/transform.d.ts +17 -0
  105. package/dist/src/indexer/dart/transform.d.ts.map +1 -0
  106. package/dist/src/indexer/dart/transform.js +157 -0
  107. package/dist/src/indexer/dart/transform.js.map +1 -0
  108. package/dist/src/indexer/dart/types.d.ts +137 -0
  109. package/dist/src/indexer/dart/types.d.ts.map +1 -0
  110. package/dist/src/indexer/dart/types.js +5 -0
  111. package/dist/src/indexer/dart/types.js.map +1 -0
  112. package/dist/src/indexer/git.d.ts +1 -0
  113. package/dist/src/indexer/git.d.ts.map +1 -1
  114. package/dist/src/indexer/git.js +8 -0
  115. package/dist/src/indexer/git.js.map +1 -1
  116. package/dist/src/indexer/language.d.ts.map +1 -1
  117. package/dist/src/indexer/language.js +1 -0
  118. package/dist/src/indexer/language.js.map +1 -1
  119. package/dist/src/indexer/queue.d.ts +19 -0
  120. package/dist/src/indexer/queue.d.ts.map +1 -0
  121. package/dist/src/indexer/queue.js +50 -0
  122. package/dist/src/indexer/queue.js.map +1 -0
  123. package/dist/src/indexer/schema.d.ts +61 -1
  124. package/dist/src/indexer/schema.d.ts.map +1 -1
  125. package/dist/src/indexer/schema.js +253 -2
  126. package/dist/src/indexer/schema.js.map +1 -1
  127. package/dist/src/indexer/watch.d.ts +21 -0
  128. package/dist/src/indexer/watch.d.ts.map +1 -1
  129. package/dist/src/indexer/watch.js +189 -28
  130. package/dist/src/indexer/watch.js.map +1 -1
  131. package/dist/src/server/context.d.ts +7 -0
  132. package/dist/src/server/context.d.ts.map +1 -1
  133. package/dist/src/server/handlers.d.ts.map +1 -1
  134. package/dist/src/server/handlers.js +87 -4
  135. package/dist/src/server/handlers.js.map +1 -1
  136. package/dist/src/server/indexBootstrap.d.ts.map +1 -1
  137. package/dist/src/server/indexBootstrap.js +4 -1
  138. package/dist/src/server/indexBootstrap.js.map +1 -1
  139. package/dist/src/server/main.js +0 -0
  140. package/dist/src/server/runtime.d.ts.map +1 -1
  141. package/dist/src/server/runtime.js +45 -6
  142. package/dist/src/server/runtime.js.map +1 -1
  143. package/dist/src/shared/duckdb.d.ts.map +1 -1
  144. package/dist/src/shared/duckdb.js +9 -0
  145. package/dist/src/shared/duckdb.js.map +1 -1
  146. package/dist/src/shared/utils/path.d.ts +46 -0
  147. package/dist/src/shared/utils/path.d.ts.map +1 -0
  148. package/dist/src/shared/utils/path.js +94 -0
  149. package/dist/src/shared/utils/path.js.map +1 -0
  150. package/dist/src/shared/utils/socket.d.ts +61 -0
  151. package/dist/src/shared/utils/socket.d.ts.map +1 -0
  152. package/dist/src/shared/utils/socket.js +156 -0
  153. package/dist/src/shared/utils/socket.js.map +1 -0
  154. package/package.json +11 -1
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Socket Path Utility for Cross-Platform IPC
3
+ *
4
+ * Generates platform-appropriate IPC paths:
5
+ * - Unix/Linux/macOS: Unix domain socket files (e.g., /path/to/database.duckdb.sock)
6
+ * - Windows: Named pipes (e.g., \\.\pipe\kiri-<hash>)
7
+ */
8
+ /**
9
+ * プラットフォームに応じた適切なソケットパスを生成
10
+ *
11
+ * Windows環境では名前付きパイプ形式(\\.\pipe\kiri-<hash>)を使用し、
12
+ * Unix系環境ではファイルシステムパス(<databasePath>.sock)を使用し、
13
+ * パス長が上限を超える場合は /tmp などの短いディレクトリに自動フォールバックする。
14
+ *
15
+ * **セキュリティ注意事項**:
16
+ * - Unix: ソケットファイルは0600パーミッション(所有者のみアクセス可能)で保護
17
+ * しつつ、KIRI_SOCKET_DIR でフォールバック先ディレクトリを明示できます。
18
+ * - Windows: 名前付きパイプはデフォルトACLを使用(同一システムの他ユーザーが
19
+ * アクセス可能な場合がある)。ハッシュベースのパイプ名で曖昧性を提供するが、
20
+ * マルチユーザー環境では信頼できる環境でのみ使用することを推奨。
21
+ * - Windows環境では KIRI_PIPE_PREFIX 環境変数でパイプ名プレフィックスを
22
+ * カスタマイズ可能(追加のセキュリティ層として利用可能)
23
+ *
24
+ * @param databasePath - データベースファイルの絶対パス
25
+ * @returns プラットフォーム固有のソケットパス
26
+ *
27
+ * @example
28
+ * // Unix/macOS/Linux
29
+ * getSocketPath("/path/to/database.duckdb")
30
+ * // => "/path/to/database.duckdb.sock"
31
+ *
32
+ * // Windows (デフォルト)
33
+ * getSocketPath("C:\\Users\\user\\database.duckdb")
34
+ * // => "\\\\.\\pipe\\kiri-a1b2c3d4..."
35
+ *
36
+ * // Windows (カスタムプレフィックス)
37
+ * process.env.KIRI_PIPE_PREFIX = "myapp"
38
+ * getSocketPath("C:\\Users\\user\\database.duckdb")
39
+ * // => "\\\\.\\pipe\\myapp-a1b2c3d4..."
40
+ */
41
+ export declare function getSocketPath(databasePath: string, options?: {
42
+ ensureDir?: boolean;
43
+ }): string;
44
+ /**
45
+ * ソケットパスからデータベースパスを推測(Unix系のみ)
46
+ *
47
+ * Windows環境ではハッシュベースのパイプ名を使用するため、
48
+ * この関数は情報損失があり、デバッグ用途にのみ使用すべき。
49
+ *
50
+ * @param socketPath - ソケットパス
51
+ * @returns データベースパス(Unix系の場合)またはnull(Windows/不明な形式)
52
+ */
53
+ export declare function getDatabasePathFromSocket(socketPath: string): string | null;
54
+ /**
55
+ * デバッグ用のソケットパス情報を生成
56
+ *
57
+ * @param databasePath - データベースファイルの絶対パス
58
+ * @returns デバッグ情報文字列
59
+ */
60
+ export declare function getSocketPathDebugInfo(databasePath: string): string;
61
+ //# sourceMappingURL=socket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../../../src/shared/utils/socket.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAsDH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAsB7F;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAY3E;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CA+BnE"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Socket Path Utility for Cross-Platform IPC
3
+ *
4
+ * Generates platform-appropriate IPC paths:
5
+ * - Unix/Linux/macOS: Unix domain socket files (e.g., /path/to/database.duckdb.sock)
6
+ * - Windows: Named pipes (e.g., \\.\pipe\kiri-<hash>)
7
+ */
8
+ import * as crypto from "crypto";
9
+ import { mkdirSync } from "node:fs";
10
+ import * as os from "os";
11
+ import * as path from "path";
12
+ const UNIX_SOCKET_PATH_MAX = 96; // macOS 104-byte limitに安全マージンを残す
13
+ const SOCKET_PREFIX = "kiri";
14
+ const SOCKET_DIR_ENV = "KIRI_SOCKET_DIR";
15
+ function sanitizeBaseName(fileName) {
16
+ const sanitized = fileName.replace(/[^a-zA-Z0-9]/g, "-");
17
+ return sanitized.length > 0 ? sanitized.toLowerCase() : "db";
18
+ }
19
+ function ensureSocketDir(dirPath) {
20
+ try {
21
+ mkdirSync(dirPath, { recursive: true, mode: 0o700 });
22
+ }
23
+ catch (error) {
24
+ const err = error;
25
+ throw new Error(`Failed to prepare socket directory ${dirPath}: ${err.message}. ` +
26
+ `Set ${SOCKET_DIR_ENV} to a writable directory.`);
27
+ }
28
+ }
29
+ function buildFallbackUnixSocketPath(databasePath, ensureDir) {
30
+ const fallbackDir = process.env[SOCKET_DIR_ENV] || os.tmpdir();
31
+ const hash = crypto.createHash("sha256").update(databasePath).digest("hex");
32
+ const baseName = sanitizeBaseName(path.basename(databasePath));
33
+ const candidates = [
34
+ path.join(fallbackDir, `${SOCKET_PREFIX}-${baseName}-${hash.slice(0, 12)}.sock`),
35
+ path.join(fallbackDir, `${SOCKET_PREFIX}-${hash.slice(0, 12)}.sock`),
36
+ path.join(fallbackDir, `${SOCKET_PREFIX}-${hash.slice(0, 8)}.sock`),
37
+ ];
38
+ for (const candidate of candidates) {
39
+ if (Buffer.byteLength(candidate, "utf8") <= UNIX_SOCKET_PATH_MAX) {
40
+ if (ensureDir) {
41
+ ensureSocketDir(path.dirname(candidate));
42
+ }
43
+ return candidate;
44
+ }
45
+ }
46
+ throw new Error(`Unable to construct Unix socket path under ${UNIX_SOCKET_PATH_MAX} characters. ` +
47
+ `Set ${SOCKET_DIR_ENV} to a shorter directory.`);
48
+ }
49
+ /**
50
+ * プラットフォームに応じた適切なソケットパスを生成
51
+ *
52
+ * Windows環境では名前付きパイプ形式(\\.\pipe\kiri-<hash>)を使用し、
53
+ * Unix系環境ではファイルシステムパス(<databasePath>.sock)を使用し、
54
+ * パス長が上限を超える場合は /tmp などの短いディレクトリに自動フォールバックする。
55
+ *
56
+ * **セキュリティ注意事項**:
57
+ * - Unix: ソケットファイルは0600パーミッション(所有者のみアクセス可能)で保護
58
+ * しつつ、KIRI_SOCKET_DIR でフォールバック先ディレクトリを明示できます。
59
+ * - Windows: 名前付きパイプはデフォルトACLを使用(同一システムの他ユーザーが
60
+ * アクセス可能な場合がある)。ハッシュベースのパイプ名で曖昧性を提供するが、
61
+ * マルチユーザー環境では信頼できる環境でのみ使用することを推奨。
62
+ * - Windows環境では KIRI_PIPE_PREFIX 環境変数でパイプ名プレフィックスを
63
+ * カスタマイズ可能(追加のセキュリティ層として利用可能)
64
+ *
65
+ * @param databasePath - データベースファイルの絶対パス
66
+ * @returns プラットフォーム固有のソケットパス
67
+ *
68
+ * @example
69
+ * // Unix/macOS/Linux
70
+ * getSocketPath("/path/to/database.duckdb")
71
+ * // => "/path/to/database.duckdb.sock"
72
+ *
73
+ * // Windows (デフォルト)
74
+ * getSocketPath("C:\\Users\\user\\database.duckdb")
75
+ * // => "\\\\.\\pipe\\kiri-a1b2c3d4..."
76
+ *
77
+ * // Windows (カスタムプレフィックス)
78
+ * process.env.KIRI_PIPE_PREFIX = "myapp"
79
+ * getSocketPath("C:\\Users\\user\\database.duckdb")
80
+ * // => "\\\\.\\pipe\\myapp-a1b2c3d4..."
81
+ */
82
+ export function getSocketPath(databasePath, options) {
83
+ const ensureDir = options?.ensureDir ?? false;
84
+ if (os.platform() === "win32") {
85
+ // Windows: 名前付きパイプを使用
86
+ // データベースパスのハッシュを使ってユニークなパイプ名を生成
87
+ const hash = crypto.createHash("sha256").update(databasePath).digest("hex");
88
+ // 環境変数でプレフィックスをカスタマイズ可能(追加のセキュリティ層)
89
+ const prefix = process.env.KIRI_PIPE_PREFIX || SOCKET_PREFIX;
90
+ // 最初の16文字を使用(衝突リスクは極めて低い)
91
+ const pipeName = `${prefix}-${hash.substring(0, 16)}`;
92
+ return `\\\\.\\pipe\\${pipeName}`;
93
+ }
94
+ const defaultSocketPath = `${databasePath}.sock`;
95
+ if (Buffer.byteLength(defaultSocketPath, "utf8") <= UNIX_SOCKET_PATH_MAX) {
96
+ if (ensureDir) {
97
+ ensureSocketDir(path.dirname(defaultSocketPath));
98
+ }
99
+ return defaultSocketPath;
100
+ }
101
+ return buildFallbackUnixSocketPath(databasePath, ensureDir);
102
+ }
103
+ /**
104
+ * ソケットパスからデータベースパスを推測(Unix系のみ)
105
+ *
106
+ * Windows環境ではハッシュベースのパイプ名を使用するため、
107
+ * この関数は情報損失があり、デバッグ用途にのみ使用すべき。
108
+ *
109
+ * @param socketPath - ソケットパス
110
+ * @returns データベースパス(Unix系の場合)またはnull(Windows/不明な形式)
111
+ */
112
+ export function getDatabasePathFromSocket(socketPath) {
113
+ if (os.platform() === "win32") {
114
+ // Windowsではパイプ名からデータベースパスを復元できない
115
+ return null;
116
+ }
117
+ // Unix系: .sock拡張子を削除
118
+ if (socketPath.endsWith(".sock")) {
119
+ return socketPath.slice(0, -5); // ".sock" の長さは5
120
+ }
121
+ return null;
122
+ }
123
+ /**
124
+ * デバッグ用のソケットパス情報を生成
125
+ *
126
+ * @param databasePath - データベースファイルの絶対パス
127
+ * @returns デバッグ情報文字列
128
+ */
129
+ export function getSocketPathDebugInfo(databasePath) {
130
+ const socketPath = getSocketPath(databasePath);
131
+ const platform = os.platform();
132
+ const defaultUnixSocket = `${databasePath}.sock`;
133
+ // プラットフォーム固有のpathモジュールを使用して正しくパースする
134
+ const pathModule = platform === "win32" ? path.win32 : path.posix;
135
+ const dbDir = pathModule.dirname(databasePath);
136
+ const dbBase = pathModule.basename(databasePath);
137
+ if (platform === "win32") {
138
+ return [
139
+ `Database: ${dbBase} (${dbDir})`,
140
+ `Socket: ${socketPath} (Windows named pipe)`,
141
+ `Note: Pipe name is derived from database path hash for uniqueness`,
142
+ ].join("\n");
143
+ }
144
+ else {
145
+ const lines = [
146
+ `Database: ${dbBase} (${dbDir})`,
147
+ `Socket: ${socketPath} (Unix domain socket)`,
148
+ `Permissions: Owner-only (0600)`,
149
+ ];
150
+ if (socketPath !== defaultUnixSocket) {
151
+ lines.push(`Fallback: Socket path shortened (set ${SOCKET_DIR_ENV} to override base directory)`);
152
+ }
153
+ return lines.join("\n");
154
+ }
155
+ }
156
+ //# sourceMappingURL=socket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket.js","sourceRoot":"","sources":["../../../../src/shared/utils/socket.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.9.6",
3
+ "version": "0.9.9",
4
4
  "description": "KIRI context extraction platform",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@9.0.0",
@@ -56,6 +56,13 @@
56
56
  "dev": "tsx src/server/main.ts --port 8765",
57
57
  "lint": "eslint \"{src,tests,scripts}/**/*.{ts,tsx}\" && prettier --check \"**/*.{ts,tsx,json,md,yml}\"",
58
58
  "test": "vitest run --coverage --pool=forks --poolOptions.forks.singleFork --poolOptions.forks.maxForks=1 --poolOptions.forks.minForks=1",
59
+ "verify": "tsx scripts/test/verify-all.ts",
60
+ "verify:unit": "tsx scripts/test/verify-all.ts --category unit",
61
+ "verify:dart": "tsx scripts/test/verify-all.ts --category dart",
62
+ "verify:integration": "tsx scripts/test/verify-all.ts --category integration",
63
+ "verify:tools": "tsx scripts/test/verify-all.ts --category tools",
64
+ "verify:watch": "tsx scripts/test/verify-all.ts --category watch",
65
+ "verify:eval": "tsx scripts/test/verify-all.ts --category eval",
59
66
  "check": "pnpm run lint && pnpm run test",
60
67
  "prepublishOnly": "pnpm run build"
61
68
  },
@@ -63,7 +70,9 @@
63
70
  "chokidar": "^4.0.3",
64
71
  "duckdb": "^1.1.0",
65
72
  "gpt-tokenizer": "^3.2.0",
73
+ "p-queue": "^9.0.0",
66
74
  "tree-sitter": "^0.22.0",
75
+ "tree-sitter-java": "^0.23.2",
67
76
  "tree-sitter-php": "^0.22.8",
68
77
  "tree-sitter-swift": "0.7.1",
69
78
  "typescript": "^5.6.3",
@@ -78,6 +87,7 @@
78
87
  "eslint": "^9.9.0",
79
88
  "eslint-config-prettier": "^9.1.0",
80
89
  "eslint-plugin-import": "^2.29.1",
90
+ "execa": "^9.6.0",
81
91
  "lint-staged": "^15.2.10",
82
92
  "prettier": "^3.3.3",
83
93
  "simple-git-hooks": "^2.10.0",