kiri-mcp-server 0.24.1 → 0.24.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 +2 -2
- package/dist/package.json +1 -1
- package/dist/src/daemon/daemon.js +55 -22
- package/dist/src/daemon/daemon.js.map +1 -1
- package/dist/src/daemon/lifecycle.d.ts +35 -0
- package/dist/src/daemon/lifecycle.d.ts.map +1 -1
- package/dist/src/daemon/lifecycle.js +34 -4
- package/dist/src/daemon/lifecycle.js.map +1 -1
- package/dist/src/daemon/zombie-detector.d.ts +70 -0
- package/dist/src/daemon/zombie-detector.d.ts.map +1 -0
- package/dist/src/daemon/zombie-detector.js +174 -0
- package/dist/src/daemon/zombie-detector.js.map +1 -0
- package/dist/src/server/rpc.d.ts.map +1 -1
- package/dist/src/server/rpc.js +49 -125
- package/dist/src/server/rpc.js.map +1 -1
- package/package.json +1 -1
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
|
-
[](package.json)
|
|
6
6
|
[](LICENSE)
|
|
7
7
|
[](https://www.typescriptlang.org/)
|
|
8
8
|
[](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.24.2**: Zombie daemon auto-detection and cleanup (PR #169)
|
|
142
143
|
- **v0.24.1**: DaemonLifecycle stale lock detection (PR #168)
|
|
143
144
|
- **v0.24.0**: MCP connection auto-reconnect (PR #167)
|
|
144
145
|
- **v0.23.0**: `--full` option for kiri command (PR #166)
|
|
145
|
-
- **v0.22.4**: Replace chokidar with @parcel/watcher (PR #165)
|
|
146
146
|
|
|
147
147
|
---
|
|
148
148
|
|
package/dist/package.json
CHANGED
|
@@ -16,6 +16,7 @@ import { getSocketPath } from "../shared/utils/socket.js";
|
|
|
16
16
|
import { parsePositiveInt } from "../shared/utils/validation.js";
|
|
17
17
|
import { DaemonLifecycle } from "./lifecycle.js";
|
|
18
18
|
import { createSocketServer } from "./socket.js";
|
|
19
|
+
import { detectAndCleanupZombie, extractPidFromLockError, isDuckDBLockConflictError, } from "./zombie-detector.js";
|
|
19
20
|
/**
|
|
20
21
|
* CLI specification for kiri-daemon
|
|
21
22
|
*/
|
|
@@ -151,31 +152,63 @@ async function main() {
|
|
|
151
152
|
// データベースが存在しない場合、自動的にインデックスを作成
|
|
152
153
|
await ensureDatabaseIndexed(options.repoRoot, options.databasePath, options.allowDegrade, false);
|
|
153
154
|
// ServerRuntimeを作成(DuckDB接続、メトリクス、デグレード制御など)
|
|
155
|
+
// ゾンビdaemonによるDuckDBロック競合時は、ゾンビ検出・クリーンアップ後にリトライ
|
|
154
156
|
let runtime = null;
|
|
155
157
|
let watcher = null;
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
158
|
+
const MAX_RUNTIME_RETRY_ATTEMPTS = 2;
|
|
159
|
+
const socketPath = options.socketPath || getSocketPath(options.databasePath, { ensureDir: true });
|
|
160
|
+
for (let attempt = 0; attempt < MAX_RUNTIME_RETRY_ATTEMPTS; attempt++) {
|
|
161
|
+
try {
|
|
162
|
+
const runtimeOptions = {
|
|
163
|
+
repoRoot: options.repoRoot,
|
|
164
|
+
databasePath: options.databasePath,
|
|
165
|
+
allowDegrade: options.allowDegrade,
|
|
166
|
+
allowWriteLock: true, // Daemon mode should auto-create security lock
|
|
167
|
+
};
|
|
168
|
+
if (options.securityConfigPath) {
|
|
169
|
+
runtimeOptions.securityConfigPath = options.securityConfigPath;
|
|
170
|
+
}
|
|
171
|
+
if (options.securityLockPath) {
|
|
172
|
+
runtimeOptions.securityLockPath = options.securityLockPath;
|
|
173
|
+
}
|
|
174
|
+
runtime = await createServerRuntime(runtimeOptions);
|
|
175
|
+
await lifecycle.log(`Runtime initialized for repo: ${options.repoRoot}`);
|
|
176
|
+
break; // 成功
|
|
165
177
|
}
|
|
166
|
-
|
|
167
|
-
|
|
178
|
+
catch (err) {
|
|
179
|
+
const error = err;
|
|
180
|
+
// DuckDBロック競合エラーの場合、ゾンビ検出・クリーンアップを試みる
|
|
181
|
+
if (isDuckDBLockConflictError(error) && attempt < MAX_RUNTIME_RETRY_ATTEMPTS - 1) {
|
|
182
|
+
const conflictingPid = extractPidFromLockError(error.message);
|
|
183
|
+
if (conflictingPid !== null) {
|
|
184
|
+
await lifecycle.log(`DuckDB lock conflict detected (PID ${conflictingPid}). Checking for zombie...`);
|
|
185
|
+
const cleaned = await detectAndCleanupZombie(conflictingPid, socketPath, {
|
|
186
|
+
// ログ出力を lifecycle.log と console.error の両方に出力
|
|
187
|
+
logger: (message) => {
|
|
188
|
+
console.error(`[Daemon] ${message}`);
|
|
189
|
+
lifecycle.log(message).catch(() => { });
|
|
190
|
+
},
|
|
191
|
+
// メトリクス記録
|
|
192
|
+
onZombieDetected: () => lifecycle.recordZombieDetected(),
|
|
193
|
+
onCleanupComplete: (success) => lifecycle.recordZombieCleanup(success),
|
|
194
|
+
});
|
|
195
|
+
if (cleaned) {
|
|
196
|
+
await lifecycle.log(`Zombie daemon cleaned up. Retrying...`);
|
|
197
|
+
// DuckDBがロックを解放するのを待つ
|
|
198
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
199
|
+
continue; // リトライ
|
|
200
|
+
}
|
|
201
|
+
// 正常動作中のdaemonがいる場合
|
|
202
|
+
await lifecycle.log(`Another daemon is running normally. Exiting.`);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
// リトライ不可またはリトライ失敗
|
|
206
|
+
await lifecycle.log(`Failed to create runtime: ${error.message}`);
|
|
207
|
+
console.error(`[Daemon] Failed to create runtime: ${error.message}`);
|
|
208
|
+
await lifecycle.removePidFile();
|
|
209
|
+
await lifecycle.releaseStartupLock();
|
|
210
|
+
process.exit(1);
|
|
168
211
|
}
|
|
169
|
-
runtime = await createServerRuntime(runtimeOptions);
|
|
170
|
-
await lifecycle.log(`Runtime initialized for repo: ${options.repoRoot}`);
|
|
171
|
-
}
|
|
172
|
-
catch (err) {
|
|
173
|
-
const error = err;
|
|
174
|
-
await lifecycle.log(`Failed to create runtime: ${error.message}`);
|
|
175
|
-
console.error(`[Daemon] Failed to create runtime: ${error.message}`);
|
|
176
|
-
await lifecycle.removePidFile();
|
|
177
|
-
await lifecycle.releaseStartupLock();
|
|
178
|
-
process.exit(1);
|
|
179
212
|
}
|
|
180
213
|
// ウォッチモードの設定(自動インクリメンタル再インデックス)
|
|
181
214
|
// 注意: watch modeの起動に失敗してもデーモン自体は継続起動する
|
|
@@ -205,9 +238,9 @@ async function main() {
|
|
|
205
238
|
}
|
|
206
239
|
}
|
|
207
240
|
// RPCハンドラを作成(既存のロジックを再利用)
|
|
241
|
+
// Note: runtimeはリトライループで必ず初期化されるか、初期化失敗時はprocess.exit(1)で終了する
|
|
208
242
|
const rpcHandler = createRpcHandler(runtime);
|
|
209
243
|
// ソケットサーバーを作成(プラットフォームに応じてUnixソケットまたはWindows名前付きパイプ)
|
|
210
|
-
const socketPath = options.socketPath || getSocketPath(options.databasePath, { ensureDir: true });
|
|
211
244
|
const closeServer = await createSocketServer({
|
|
212
245
|
socketPath,
|
|
213
246
|
onRequest: async (request) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../../src/daemon/daemon.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,WAAW,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAgB,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../../src/daemon/daemon.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,9 +3,27 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Handles PID file creation, idle timeout, health checks, and graceful shutdown.
|
|
5
5
|
*/
|
|
6
|
+
/**
|
|
7
|
+
* 指定したPIDのプロセスが存在するかチェック
|
|
8
|
+
*
|
|
9
|
+
* @param pid - チェックするプロセスID
|
|
10
|
+
* @returns プロセスが存在する場合はtrue
|
|
11
|
+
*/
|
|
12
|
+
export declare function isProcessRunning(pid: number): boolean;
|
|
6
13
|
/**
|
|
7
14
|
* PIDファイルとスタートアップロックを管理する
|
|
8
15
|
*/
|
|
16
|
+
/**
|
|
17
|
+
* ゾンビdaemon関連のメトリクス
|
|
18
|
+
*/
|
|
19
|
+
export interface ZombieMetrics {
|
|
20
|
+
/** ゾンビ検出回数 */
|
|
21
|
+
detectedTotal: number;
|
|
22
|
+
/** クリーンアップ成功回数 */
|
|
23
|
+
cleanupSuccessTotal: number;
|
|
24
|
+
/** クリーンアップ失敗回数 */
|
|
25
|
+
cleanupFailureTotal: number;
|
|
26
|
+
}
|
|
9
27
|
export declare class DaemonLifecycle {
|
|
10
28
|
private readonly databasePath;
|
|
11
29
|
private readonly idleTimeoutMinutes;
|
|
@@ -18,6 +36,9 @@ export declare class DaemonLifecycle {
|
|
|
18
36
|
private shutdownCallback?;
|
|
19
37
|
private readonly maxLogSizeBytes;
|
|
20
38
|
private readonly maxLogBackups;
|
|
39
|
+
private zombieDetectedTotal;
|
|
40
|
+
private zombieCleanupSuccessTotal;
|
|
41
|
+
private zombieCleanupFailureTotal;
|
|
21
42
|
constructor(databasePath: string, idleTimeoutMinutes?: number);
|
|
22
43
|
/**
|
|
23
44
|
* PIDファイルパスを取得
|
|
@@ -100,5 +121,19 @@ export declare class DaemonLifecycle {
|
|
|
100
121
|
* ファイルサイズが制限を超えた場合、自動的にローテーションを実行
|
|
101
122
|
*/
|
|
102
123
|
log(message: string): Promise<void>;
|
|
124
|
+
/**
|
|
125
|
+
* ゾンビdaemon検出を記録
|
|
126
|
+
*/
|
|
127
|
+
recordZombieDetected(): void;
|
|
128
|
+
/**
|
|
129
|
+
* ゾンビdaemonクリーンアップ結果を記録
|
|
130
|
+
*
|
|
131
|
+
* @param success - クリーンアップが成功した場合はtrue
|
|
132
|
+
*/
|
|
133
|
+
recordZombieCleanup(success: boolean): void;
|
|
134
|
+
/**
|
|
135
|
+
* ゾンビdaemon関連メトリクスのスナップショットを取得
|
|
136
|
+
*/
|
|
137
|
+
getZombieMetrics(): ZombieMetrics;
|
|
103
138
|
}
|
|
104
139
|
//# sourceMappingURL=lifecycle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/daemon/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/daemon/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAYrD;AAED;;GAEG;AACH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,cAAc;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB;IAClB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,qBAAa,eAAe;IAiBxB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAjBrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,gBAAgB,CAAC,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA4B;IAC5D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAa;IAG3C,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,yBAAyB,CAAK;IACtC,OAAO,CAAC,yBAAyB,CAAK;gBAGnB,YAAY,EAAE,MAAM,EACpB,kBAAkB,GAAE,MAAU;IAOjD;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAI5B;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;;;;;;OAOG;IACG,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAwF5C;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAWzC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAWpC;;;;OAIG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAsB5C;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAQzC;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAK5B;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAO5B;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAI/C;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAuBtB;;OAEG;IACH,qBAAqB,IAAI,IAAI;IAoB7B;;;;OAIG;YACW,iBAAiB;IAmC/B;;;;OAIG;IACG,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAezC;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAI5B;;;;OAIG;IACH,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAQ3C;;OAEG;IACH,gBAAgB,IAAI,aAAa;CAOlC"}
|
|
@@ -10,7 +10,7 @@ import * as fs from "fs/promises";
|
|
|
10
10
|
* @param pid - チェックするプロセスID
|
|
11
11
|
* @returns プロセスが存在する場合はtrue
|
|
12
12
|
*/
|
|
13
|
-
function isProcessRunning(pid) {
|
|
13
|
+
export function isProcessRunning(pid) {
|
|
14
14
|
if (!Number.isInteger(pid) || pid <= 0) {
|
|
15
15
|
return false;
|
|
16
16
|
}
|
|
@@ -24,9 +24,6 @@ function isProcessRunning(pid) {
|
|
|
24
24
|
return false;
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
/**
|
|
28
|
-
* PIDファイルとスタートアップロックを管理する
|
|
29
|
-
*/
|
|
30
27
|
export class DaemonLifecycle {
|
|
31
28
|
databasePath;
|
|
32
29
|
idleTimeoutMinutes;
|
|
@@ -39,6 +36,10 @@ export class DaemonLifecycle {
|
|
|
39
36
|
shutdownCallback;
|
|
40
37
|
maxLogSizeBytes = 10 * 1024 * 1024; // 10MB
|
|
41
38
|
maxLogBackups = 3;
|
|
39
|
+
// ゾンビdaemonメトリクス
|
|
40
|
+
zombieDetectedTotal = 0;
|
|
41
|
+
zombieCleanupSuccessTotal = 0;
|
|
42
|
+
zombieCleanupFailureTotal = 0;
|
|
42
43
|
constructor(databasePath, idleTimeoutMinutes = 5) {
|
|
43
44
|
this.databasePath = databasePath;
|
|
44
45
|
this.idleTimeoutMinutes = idleTimeoutMinutes;
|
|
@@ -358,5 +359,34 @@ export class DaemonLifecycle {
|
|
|
358
359
|
console.error(`Failed to write to log file: ${err}`);
|
|
359
360
|
}
|
|
360
361
|
}
|
|
362
|
+
/**
|
|
363
|
+
* ゾンビdaemon検出を記録
|
|
364
|
+
*/
|
|
365
|
+
recordZombieDetected() {
|
|
366
|
+
this.zombieDetectedTotal++;
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* ゾンビdaemonクリーンアップ結果を記録
|
|
370
|
+
*
|
|
371
|
+
* @param success - クリーンアップが成功した場合はtrue
|
|
372
|
+
*/
|
|
373
|
+
recordZombieCleanup(success) {
|
|
374
|
+
if (success) {
|
|
375
|
+
this.zombieCleanupSuccessTotal++;
|
|
376
|
+
}
|
|
377
|
+
else {
|
|
378
|
+
this.zombieCleanupFailureTotal++;
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* ゾンビdaemon関連メトリクスのスナップショットを取得
|
|
383
|
+
*/
|
|
384
|
+
getZombieMetrics() {
|
|
385
|
+
return {
|
|
386
|
+
detectedTotal: this.zombieDetectedTotal,
|
|
387
|
+
cleanupSuccessTotal: this.zombieCleanupSuccessTotal,
|
|
388
|
+
cleanupFailureTotal: this.zombieCleanupFailureTotal,
|
|
389
|
+
};
|
|
390
|
+
}
|
|
361
391
|
}
|
|
362
392
|
//# sourceMappingURL=lifecycle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/daemon/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAElC;;;;;GAKG;AACH,
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/daemon/lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ゾンビdaemon検出・クリーンアップユーティリティ
|
|
3
|
+
*
|
|
4
|
+
* 「プロセス生存 + ソケット消失」状態のゾンビdaemonを検出し、
|
|
5
|
+
* DuckDBロック競合時に自動クリーンアップを行う。
|
|
6
|
+
*
|
|
7
|
+
* @see Issue #168 - ゾンビソケットの自動検出・クリーンアップ機能
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* ログ出力関数の型
|
|
11
|
+
* 依存性注入により、テスト時のモック化や出力先の統一が可能
|
|
12
|
+
*/
|
|
13
|
+
export type ZombieLogger = (message: string) => void;
|
|
14
|
+
/**
|
|
15
|
+
* ゾンビ検出・クリーンアップのオプション
|
|
16
|
+
*/
|
|
17
|
+
export interface ZombieDetectorOptions {
|
|
18
|
+
/** ログ出力関数(デフォルト: console.error) */
|
|
19
|
+
logger?: ZombieLogger;
|
|
20
|
+
/** ソケット接続タイムアウト(ミリ秒、デフォルト: 2000) */
|
|
21
|
+
socketTimeoutMs?: number;
|
|
22
|
+
/** SIGTERM後の待機時間(ミリ秒、デフォルト: 2000) */
|
|
23
|
+
gracefulShutdownTimeoutMs?: number;
|
|
24
|
+
/** ゾンビ検出時のコールバック */
|
|
25
|
+
onZombieDetected?: () => void;
|
|
26
|
+
/** クリーンアップ完了時のコールバック */
|
|
27
|
+
onCleanupComplete?: (success: boolean) => void;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* DuckDBロック競合エラーメッセージからPIDを抽出
|
|
31
|
+
*
|
|
32
|
+
* エラー形式:
|
|
33
|
+
* "IO Error: Could not set lock on file \"/path/to/db\":
|
|
34
|
+
* Conflicting lock is held in /path/to/node (PID 38342) by user username"
|
|
35
|
+
*
|
|
36
|
+
* @param errorMessage - DuckDBエラーメッセージ
|
|
37
|
+
* @returns 抽出したPID、または抽出できない場合はnull
|
|
38
|
+
*/
|
|
39
|
+
export declare function extractPidFromLockError(errorMessage: string): number | null;
|
|
40
|
+
/**
|
|
41
|
+
* DuckDBロック競合エラーかどうかを判定
|
|
42
|
+
*
|
|
43
|
+
* @param error - チェックするエラー
|
|
44
|
+
* @returns DuckDBロック競合エラーの場合はtrue
|
|
45
|
+
*/
|
|
46
|
+
export declare function isDuckDBLockConflictError(error: unknown): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* 指定PIDのプロセスがソケットをリッスンしているか確認
|
|
49
|
+
*
|
|
50
|
+
* ソケット接続を試み、pingレスポンスを確認することで
|
|
51
|
+
* プロセスが正常に動作中かを判定
|
|
52
|
+
*
|
|
53
|
+
* @param socketPath - ソケットファイルのパス
|
|
54
|
+
* @param timeoutMs - タイムアウト時間(ミリ秒)
|
|
55
|
+
* @returns プロセスがソケットをリッスンしている場合はtrue
|
|
56
|
+
*/
|
|
57
|
+
export declare function isProcessListeningOnSocket(socketPath: string, timeoutMs?: number): Promise<boolean>;
|
|
58
|
+
/**
|
|
59
|
+
* ゾンビプロセスを検出してクリーンアップ
|
|
60
|
+
*
|
|
61
|
+
* プロセスが存在するがソケットをリッスンしていない場合、
|
|
62
|
+
* ゾンビと判定してSIGTERM→SIGKILLで停止する。
|
|
63
|
+
*
|
|
64
|
+
* @param pid - 競合しているプロセスのPID
|
|
65
|
+
* @param socketPath - ソケットファイルのパス
|
|
66
|
+
* @param options - オプション(ログ、タイムアウト、コールバック)
|
|
67
|
+
* @returns クリーンアップ成功(またはプロセス不在)時はtrue、正常動作中のdaemonがいる場合はfalse
|
|
68
|
+
*/
|
|
69
|
+
export declare function detectAndCleanupZombie(pid: number, socketPath: string, options?: ZombieDetectorOptions): Promise<boolean>;
|
|
70
|
+
//# sourceMappingURL=zombie-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zombie-detector.d.ts","sourceRoot":"","sources":["../../../src/daemon/zombie-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,mCAAmC;IACnC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,oCAAoC;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qCAAqC;IACrC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,oBAAoB;IACpB,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,wBAAwB;IACxB,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAChD;AAKD;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM3E;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMjE;AAED;;;;;;;;;GASG;AACH,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,MAAa,GACvB,OAAO,CAAC,OAAO,CAAC,CAiDlB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,OAAO,CAAC,CAgFlB"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ゾンビdaemon検出・クリーンアップユーティリティ
|
|
3
|
+
*
|
|
4
|
+
* 「プロセス生存 + ソケット消失」状態のゾンビdaemonを検出し、
|
|
5
|
+
* DuckDBロック競合時に自動クリーンアップを行う。
|
|
6
|
+
*
|
|
7
|
+
* @see Issue #168 - ゾンビソケットの自動検出・クリーンアップ機能
|
|
8
|
+
*/
|
|
9
|
+
import * as fs from "fs";
|
|
10
|
+
import net from "net";
|
|
11
|
+
import { isProcessRunning } from "./lifecycle.js";
|
|
12
|
+
/** デフォルトのロガー */
|
|
13
|
+
const defaultLogger = (message) => console.error(`[Daemon] ${message}`);
|
|
14
|
+
/**
|
|
15
|
+
* DuckDBロック競合エラーメッセージからPIDを抽出
|
|
16
|
+
*
|
|
17
|
+
* エラー形式:
|
|
18
|
+
* "IO Error: Could not set lock on file \"/path/to/db\":
|
|
19
|
+
* Conflicting lock is held in /path/to/node (PID 38342) by user username"
|
|
20
|
+
*
|
|
21
|
+
* @param errorMessage - DuckDBエラーメッセージ
|
|
22
|
+
* @returns 抽出したPID、または抽出できない場合はnull
|
|
23
|
+
*/
|
|
24
|
+
export function extractPidFromLockError(errorMessage) {
|
|
25
|
+
const match = errorMessage.match(/\(PID\s+(\d+)\)/);
|
|
26
|
+
if (!match || !match[1])
|
|
27
|
+
return null;
|
|
28
|
+
const pid = parseInt(match[1], 10);
|
|
29
|
+
return Number.isInteger(pid) && pid > 0 ? pid : null;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* DuckDBロック競合エラーかどうかを判定
|
|
33
|
+
*
|
|
34
|
+
* @param error - チェックするエラー
|
|
35
|
+
* @returns DuckDBロック競合エラーの場合はtrue
|
|
36
|
+
*/
|
|
37
|
+
export function isDuckDBLockConflictError(error) {
|
|
38
|
+
if (!(error instanceof Error))
|
|
39
|
+
return false;
|
|
40
|
+
return (error.message.includes("Could not set lock on file") &&
|
|
41
|
+
error.message.includes("Conflicting lock"));
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 指定PIDのプロセスがソケットをリッスンしているか確認
|
|
45
|
+
*
|
|
46
|
+
* ソケット接続を試み、pingレスポンスを確認することで
|
|
47
|
+
* プロセスが正常に動作中かを判定
|
|
48
|
+
*
|
|
49
|
+
* @param socketPath - ソケットファイルのパス
|
|
50
|
+
* @param timeoutMs - タイムアウト時間(ミリ秒)
|
|
51
|
+
* @returns プロセスがソケットをリッスンしている場合はtrue
|
|
52
|
+
*/
|
|
53
|
+
export async function isProcessListeningOnSocket(socketPath, timeoutMs = 2000) {
|
|
54
|
+
return new Promise((resolve) => {
|
|
55
|
+
const socket = net.connect(socketPath);
|
|
56
|
+
const timeout = setTimeout(() => {
|
|
57
|
+
socket.destroy();
|
|
58
|
+
resolve(false);
|
|
59
|
+
}, timeoutMs);
|
|
60
|
+
let responseReceived = false;
|
|
61
|
+
socket.on("connect", () => {
|
|
62
|
+
// pingリクエストを送信
|
|
63
|
+
const pingRequest = {
|
|
64
|
+
jsonrpc: "2.0",
|
|
65
|
+
id: 1,
|
|
66
|
+
method: "ping",
|
|
67
|
+
};
|
|
68
|
+
socket.write(JSON.stringify(pingRequest) + "\n");
|
|
69
|
+
});
|
|
70
|
+
socket.on("data", (data) => {
|
|
71
|
+
if (responseReceived)
|
|
72
|
+
return;
|
|
73
|
+
try {
|
|
74
|
+
const response = JSON.parse(data.toString().trim());
|
|
75
|
+
// 正常なpingレスポンスを確認
|
|
76
|
+
if (response.result && response.result.status === "ok") {
|
|
77
|
+
responseReceived = true;
|
|
78
|
+
clearTimeout(timeout);
|
|
79
|
+
socket.end();
|
|
80
|
+
resolve(true);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
clearTimeout(timeout);
|
|
84
|
+
socket.destroy();
|
|
85
|
+
resolve(false);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
clearTimeout(timeout);
|
|
90
|
+
socket.destroy();
|
|
91
|
+
resolve(false);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
socket.on("error", () => {
|
|
95
|
+
clearTimeout(timeout);
|
|
96
|
+
resolve(false);
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* ゾンビプロセスを検出してクリーンアップ
|
|
102
|
+
*
|
|
103
|
+
* プロセスが存在するがソケットをリッスンしていない場合、
|
|
104
|
+
* ゾンビと判定してSIGTERM→SIGKILLで停止する。
|
|
105
|
+
*
|
|
106
|
+
* @param pid - 競合しているプロセスのPID
|
|
107
|
+
* @param socketPath - ソケットファイルのパス
|
|
108
|
+
* @param options - オプション(ログ、タイムアウト、コールバック)
|
|
109
|
+
* @returns クリーンアップ成功(またはプロセス不在)時はtrue、正常動作中のdaemonがいる場合はfalse
|
|
110
|
+
*/
|
|
111
|
+
export async function detectAndCleanupZombie(pid, socketPath, options = {}) {
|
|
112
|
+
const { logger = defaultLogger, socketTimeoutMs = 2000, gracefulShutdownTimeoutMs = 2000, onZombieDetected, onCleanupComplete, } = options;
|
|
113
|
+
// プロセスが存在するか確認
|
|
114
|
+
if (!isProcessRunning(pid)) {
|
|
115
|
+
// プロセスが死んでいる(通常のstale lock)
|
|
116
|
+
logger(`Conflicting process (PID ${pid}) is no longer running`);
|
|
117
|
+
return true; // 呼び出し元でリトライ可能
|
|
118
|
+
}
|
|
119
|
+
// ソケットファイルが存在するか確認
|
|
120
|
+
// 注意: 既存daemonが異なる--socket-pathで起動されていた場合、
|
|
121
|
+
// このソケットパスへのpingは失敗するが、それはゾンビではない。
|
|
122
|
+
// ソケットファイルが存在しない場合のみゾンビとして扱う。
|
|
123
|
+
const socketExists = fs.existsSync(socketPath);
|
|
124
|
+
if (socketExists) {
|
|
125
|
+
// ソケットファイルが存在する場合、pingで応答確認
|
|
126
|
+
const isListening = await isProcessListeningOnSocket(socketPath, socketTimeoutMs);
|
|
127
|
+
if (isListening) {
|
|
128
|
+
// 正常に動作中のdaemon
|
|
129
|
+
logger(`Another daemon (PID ${pid}) is running normally`);
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
// ソケットファイルは存在するがpingに応答しない
|
|
133
|
+
// これは別の--socket-pathで起動されたdaemonの可能性があるため、
|
|
134
|
+
// 安全側に倒してkillしない
|
|
135
|
+
logger(`Another daemon (PID ${pid}) exists but not responding on this socket. ` +
|
|
136
|
+
`It may be using a different socket path. Not treating as zombie.`);
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
// ゾンビ状態: プロセス生存 + ソケットファイル消失
|
|
140
|
+
logger(`Detected zombie daemon (PID ${pid}): process alive but socket file does not exist`);
|
|
141
|
+
// ゾンビ検出コールバック
|
|
142
|
+
onZombieDetected?.();
|
|
143
|
+
try {
|
|
144
|
+
// SIGTERMでグレースフルシャットダウンを試みる
|
|
145
|
+
logger(`Sending SIGTERM to zombie daemon (PID ${pid})`);
|
|
146
|
+
process.kill(pid, "SIGTERM");
|
|
147
|
+
// グレースフルシャットダウン待機
|
|
148
|
+
const waitIterations = Math.ceil(gracefulShutdownTimeoutMs / 100);
|
|
149
|
+
for (let i = 0; i < waitIterations; i++) {
|
|
150
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
151
|
+
if (!isProcessRunning(pid)) {
|
|
152
|
+
logger(`Zombie daemon (PID ${pid}) terminated gracefully`);
|
|
153
|
+
onCleanupComplete?.(true);
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// SIGKILLで強制終了
|
|
158
|
+
logger(`Force killing zombie daemon (PID ${pid}) with SIGKILL`);
|
|
159
|
+
process.kill(pid, "SIGKILL");
|
|
160
|
+
// 少し待機
|
|
161
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
162
|
+
onCleanupComplete?.(true);
|
|
163
|
+
return true;
|
|
164
|
+
}
|
|
165
|
+
catch (err) {
|
|
166
|
+
// 権限不足などでkillできない場合
|
|
167
|
+
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
168
|
+
logger(`Failed to kill zombie daemon (PID ${pid}): ${errorMessage}`);
|
|
169
|
+
logger(`Please manually terminate the process: kill ${pid}`);
|
|
170
|
+
onCleanupComplete?.(false);
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=zombie-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zombie-detector.js","sourceRoot":"","sources":["../../../src/daemon/zombie-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../../src/server/rpc.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAcrE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAS7D;;;;;;;;GAQG;AACH,UAAU,yBAAyB;IACjC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,wBAAwB,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;CAC9C;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAE3C;;;;OAIG;gBACS,iBAAiB,GAAE,MAAa,EAAE,WAAW,CAAC,EAAE,yBAAyB;IAQrF;;;OAGG;IACH,IAAI,IAAI,cAAc;IAItB;;;;OAIG;IACH,YAAY,IAAI,IAAI;IAIpB;;;;OAIG;IACH,IAAI,gBAAgB,IAAI,MAAM,EAAE,CAE/B;IAED;;;;;;;OAOG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAE,OAAe,GAAG,OAAO;IA0B7E;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAWlD;;OAEG;IACH,KAAK,IAAI,IAAI;CAKd;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG,YAAY,CAAC;AAE5D,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,OAAO,EAAE,eAAe,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,eAAe,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../../src/server/rpc.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAcrE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAS7D;;;;;;;;GAQG;AACH,UAAU,yBAAyB;IACjC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,wBAAwB,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;CAC9C;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAE3C;;;;OAIG;gBACS,iBAAiB,GAAE,MAAa,EAAE,WAAW,CAAC,EAAE,yBAAyB;IAQrF;;;OAGG;IACH,IAAI,IAAI,cAAc;IAItB;;;;OAIG;IACH,YAAY,IAAI,IAAI;IAIpB;;;;OAIG;IACH,IAAI,gBAAgB,IAAI,MAAM,EAAE,CAE/B;IAED;;;;;;;OAOG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAE,OAAe,GAAG,OAAO;IA0B7E;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAWlD;;OAEG;IACH,KAAK,IAAI,IAAI;CAKd;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG,YAAY,CAAC;AAE5D,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,OAAO,EAAE,eAAe,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,eAAe,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB;AA2gBD,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,cAAc,CAEpF;AAED,wBAAgB,aAAa,CAC3B,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,EAC1B,OAAO,EAAE,MAAM,EACf,IAAI,SAAS,GACZ,YAAY,CAEd;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI,CAK7E;AA+ED,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,sBAAsB,GACnC,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAyX9D"}
|
package/dist/src/server/rpc.js
CHANGED
|
@@ -110,100 +110,59 @@ const SERVER_INFO = {
|
|
|
110
110
|
name: "kiri",
|
|
111
111
|
version: typeof packageJson?.version === "string" ? packageJson.version : "0.0.0",
|
|
112
112
|
};
|
|
113
|
+
// Tool descriptors optimized for Claude Code compatibility (<8KB response)
|
|
114
|
+
// Includes essential params and brief examples while staying under size limit
|
|
113
115
|
const TOOL_DESCRIPTORS = [
|
|
114
116
|
{
|
|
115
117
|
name: "context_bundle",
|
|
116
|
-
description: "
|
|
117
|
-
"
|
|
118
|
-
"Example: context_bundle({goal: 'pagination off-by-one bug; file=src/catalog/products.ts; expected=20 items; observed=19'}) surfaces the affected files. Less effective: goal='Find where pagination breaks'.\n\n" +
|
|
119
|
-
"Goal-crafting best practices (applies to every high-signal identifier, not only function names):\n" +
|
|
120
|
-
"- List the crucial identifiers (functions, hooks, components, file names, config IDs, etc.) first so the highest-signal terms are always at the front.\n" +
|
|
121
|
-
"- Stay within 3-5 concrete keywords (about 80 characters) to limit noise and keep scoring sharp.\n" +
|
|
122
|
-
"- Keep generic errors or narration minimal; if you need them, append short suffixes or parentheses after the identifiers.\n" +
|
|
123
|
-
"- Attach conditions or context as concise trailing phrases (e.g., 'conditional hook calls').\n\n" +
|
|
124
|
-
"Before: 'Find where pagination breaks in React hooks error'\n" +
|
|
125
|
-
"After: 'useOrdersPagination src/orders/pagination.ts offByOne (React hooks error)'.\n\n" +
|
|
126
|
-
"boost_profile options:\n" +
|
|
127
|
-
"- 'default': Prioritizes implementation files (src/app/, src/components/) over docs\n" +
|
|
128
|
-
"- 'docs': Prioritizes documentation (.md, .yaml) over implementation \n" +
|
|
129
|
-
"- 'balanced': Equal weight for both docs and implementation\n" +
|
|
130
|
-
"- 'none': No file type boosting, pure BM25/keyword scoring\n\n" +
|
|
131
|
-
"Example: context_bundle({goal: 'state management design', boost_profile: 'balanced'})\n\n" +
|
|
132
|
-
"Metadata filtering:\n" +
|
|
133
|
-
"- Inline goal tokens such as `tag:observability`, `category:operations`, or `service:kiri` are stripped from the goal and applied as metadata hints so related docs surface alongside nearby implementation.\n" +
|
|
134
|
-
"- Provide an explicit `metadata_filters` object (e.g., { tags: ['observability'], 'docmeta.category': 'operations' }) to enforce structured filters; string or string[] values are accepted.\n" +
|
|
135
|
-
"- Supported prefixes include meta., metadata., docmeta., frontmatter., fm., yaml., and json., plus built-in aliases (tag/tags, category, service). `meta.*` behaves as a hint, while `docmeta.*`/`metadata.*` are strict doc-only filters.\n" +
|
|
136
|
-
"- Metadata filters refine and prioritize candidates but still require a concise goal; use `docmeta.*` when you need docs-only matches and `meta.*` to keep surrounding implementation eligible.",
|
|
118
|
+
description: "Find relevant code for a goal. Returns ranked snippets with path, range, score. Use concrete keywords.\n" +
|
|
119
|
+
"Example: context_bundle({goal: 'pagination off-by-one bug src/catalog/products.ts'})",
|
|
137
120
|
inputSchema: {
|
|
138
121
|
type: "object",
|
|
139
122
|
required: ["goal"],
|
|
140
123
|
additionalProperties: true,
|
|
141
124
|
properties: {
|
|
142
|
-
goal: {
|
|
143
|
-
type: "string",
|
|
144
|
-
description: "A clear, specific description using concrete keywords. Focus on WHAT you're looking for, not HOW to find it. " +
|
|
145
|
-
"Good: 'User login validation, session management, token refresh'. " +
|
|
146
|
-
"Bad: 'Understand how users log in', 'explore auth', 'authentication'.",
|
|
147
|
-
},
|
|
125
|
+
goal: { type: "string", description: "Concrete keywords describing what to find." },
|
|
148
126
|
limit: {
|
|
149
127
|
type: "number",
|
|
150
128
|
minimum: 1,
|
|
151
129
|
maximum: 20,
|
|
152
|
-
description: "
|
|
130
|
+
description: "Max results (default: 7).",
|
|
153
131
|
},
|
|
154
132
|
compact: {
|
|
155
133
|
type: "boolean",
|
|
156
|
-
description: "
|
|
157
|
-
"Returns only metadata: path, range, why, score. Use with snippets.get for two-tier approach. " +
|
|
158
|
-
"Default: true (v0.8.0+). Set to false if you need immediate code previews.",
|
|
159
|
-
},
|
|
160
|
-
includeTokensEstimate: {
|
|
161
|
-
type: "boolean",
|
|
162
|
-
description: "If true, computes the tokens_estimate field. This is slower and should be used only when you need projected token counts.",
|
|
163
|
-
},
|
|
164
|
-
profile: {
|
|
165
|
-
type: "string",
|
|
166
|
-
description: "Evaluation profile name (bugfix, testfail, refactor, typeerror, feature).",
|
|
134
|
+
description: "Omit preview for token savings (default: true).",
|
|
167
135
|
},
|
|
168
136
|
boost_profile: {
|
|
169
137
|
type: "string",
|
|
170
138
|
enum: ["default", "docs", "balanced", "none", "code"],
|
|
171
|
-
description:
|
|
139
|
+
description: "File type priority: default=impl, docs=*.md, code=strongly deprioritize docs.",
|
|
172
140
|
},
|
|
173
141
|
path_prefix: {
|
|
174
142
|
type: "string",
|
|
175
|
-
|
|
176
|
-
|
|
143
|
+
description: "Filter by path prefix (e.g., 'src/server/').",
|
|
144
|
+
},
|
|
145
|
+
category: {
|
|
146
|
+
type: "string",
|
|
147
|
+
enum: [...ADAPTIVE_K_CATEGORIES],
|
|
148
|
+
description: "Query category for adaptive K.",
|
|
177
149
|
},
|
|
178
150
|
artifacts: {
|
|
179
151
|
type: "object",
|
|
180
152
|
additionalProperties: true,
|
|
181
153
|
properties: {
|
|
182
|
-
editing_path: {
|
|
183
|
-
type: "string",
|
|
184
|
-
pattern: "^(?!.*\\.\\.)[A-Za-z0-9_./\\-]+$",
|
|
185
|
-
description: "Path to the file currently being edited. Strongly recommended to provide for better context; boosts that file and related dependencies in the bundle output.",
|
|
186
|
-
},
|
|
154
|
+
editing_path: { type: "string", description: "Currently editing file path." },
|
|
187
155
|
failing_tests: {
|
|
188
156
|
type: "array",
|
|
189
157
|
items: { type: "string" },
|
|
190
|
-
description: "
|
|
191
|
-
},
|
|
192
|
-
last_diff: {
|
|
193
|
-
type: "string",
|
|
194
|
-
description: "Recent diff content. Useful for understanding current changes.",
|
|
158
|
+
description: "Failing test names.",
|
|
195
159
|
},
|
|
196
160
|
},
|
|
197
161
|
},
|
|
198
162
|
metadata_filters: {
|
|
199
163
|
type: "object",
|
|
200
164
|
additionalProperties: true,
|
|
201
|
-
description: "
|
|
202
|
-
},
|
|
203
|
-
category: {
|
|
204
|
-
type: "string",
|
|
205
|
-
enum: [...ADAPTIVE_K_CATEGORIES],
|
|
206
|
-
description: "Query category for adaptive K-value selection. Valid values: bugfix, testfail, debug, api, docs, feature, integration, performance. When provided, the system adjusts the number of results (K) based on typical needs for that category.",
|
|
165
|
+
description: "Filter by YAML frontmatter (e.g., {tags: ['api'], category: 'auth'}).",
|
|
207
166
|
},
|
|
208
167
|
},
|
|
209
168
|
},
|
|
@@ -211,42 +170,31 @@ const TOOL_DESCRIPTORS = [
|
|
|
211
170
|
},
|
|
212
171
|
{
|
|
213
172
|
name: "semantic_rerank",
|
|
214
|
-
description: "
|
|
215
|
-
"Returns {candidates: [{path, semantic, base, combined}]}; purely read-only. Missing `text` or an empty candidate list causes an MCP error describing the required inputs.\n\n" +
|
|
216
|
-
"Example: semantic_rerank({text: 'JWT login flow', candidates: [...]}) reprioritises auth code. Invalid: semantic_rerank({text: '', candidates: [...]}) raises a validation error.",
|
|
173
|
+
description: "Reorder files by semantic similarity. Use after keyword search.",
|
|
217
174
|
inputSchema: {
|
|
218
175
|
type: "object",
|
|
219
176
|
required: ["text", "candidates"],
|
|
220
177
|
additionalProperties: true,
|
|
221
178
|
properties: {
|
|
222
|
-
text: { type: "string", description: "Query
|
|
179
|
+
text: { type: "string", description: "Query text." },
|
|
223
180
|
candidates: {
|
|
224
181
|
type: "array",
|
|
225
182
|
items: {
|
|
226
183
|
type: "object",
|
|
227
184
|
required: ["path"],
|
|
228
185
|
additionalProperties: true,
|
|
229
|
-
properties: {
|
|
230
|
-
path: { type: "string" },
|
|
231
|
-
score: { type: "number" },
|
|
232
|
-
},
|
|
186
|
+
properties: { path: { type: "string" }, score: { type: "number" } },
|
|
233
187
|
},
|
|
234
188
|
},
|
|
235
|
-
k: { type: "number", minimum: 1, description: "
|
|
236
|
-
profile: { type: "string" },
|
|
189
|
+
k: { type: "number", minimum: 1, description: "Top K results." },
|
|
237
190
|
},
|
|
238
191
|
},
|
|
239
192
|
outputSchema: OUTPUT_SCHEMAS.semantic_rerank,
|
|
240
193
|
},
|
|
241
194
|
{
|
|
242
195
|
name: "files_search",
|
|
243
|
-
description: "
|
|
244
|
-
"
|
|
245
|
-
'Example: files_search({query: "", metadata_filters: { "docmeta.category": "operations" }}) lists runbooks for the operations category. Invalid: files_search({}) reports that either query or metadata_filters must be supplied.\n\n' +
|
|
246
|
-
"Metadata filtering:\n" +
|
|
247
|
-
"- Inline `tag:` / `category:` / `service:` tokens are parsed out of the query and treated as metadata hints, so docs and neighboring implementation stay ranked together.\n" +
|
|
248
|
-
"- The `metadata_filters` object accepts string or string[] values and supports the same prefixes/aliases as context_bundle (meta., metadata., docmeta., frontmatter., fm., yaml., json.). Use `docmeta.*` when you need doc-only matches; `meta.*` keeps implementations eligible.\n" +
|
|
249
|
-
'- Either a textual query or `metadata_filters` (or both) is required. Metadata-only searches are supported (tests cover `query:""` + filters) and are ideal when discovering runbooks by tag/category.',
|
|
196
|
+
description: "Search files by keyword. Returns path, matchLine, score.\n" +
|
|
197
|
+
"Example: files_search({query: 'handleUserLogin', ext: '.ts'})",
|
|
250
198
|
inputSchema: {
|
|
251
199
|
type: "object",
|
|
252
200
|
required: [],
|
|
@@ -254,42 +202,27 @@ const TOOL_DESCRIPTORS = [
|
|
|
254
202
|
properties: {
|
|
255
203
|
query: {
|
|
256
204
|
type: "string",
|
|
257
|
-
description: "
|
|
258
|
-
"Be as specific as possible. Good: 'handleUserLogin', 'JWT_SECRET', 'ReferenceError'. " +
|
|
259
|
-
"Bad: 'login', 'authentication', 'understand'.",
|
|
260
|
-
},
|
|
261
|
-
lang: {
|
|
262
|
-
type: "string",
|
|
263
|
-
description: "Filter by language name (e.g., 'typescript', 'python', 'swift').",
|
|
264
|
-
},
|
|
265
|
-
ext: {
|
|
266
|
-
type: "string",
|
|
267
|
-
description: "Filter by file extension (e.g., '.ts', '.py', '.md').",
|
|
268
|
-
},
|
|
269
|
-
path_prefix: {
|
|
270
|
-
type: "string",
|
|
271
|
-
pattern: "^(?!.*\\.\\.)[A-Za-z0-9_./\\-]+/?$",
|
|
272
|
-
description: "Filter by path prefix (e.g., 'src/auth/', 'tests/'). No '..' allowed.",
|
|
205
|
+
description: "Keyword to search (function name, error message, etc.).",
|
|
273
206
|
},
|
|
207
|
+
lang: { type: "string", description: "Filter by language (e.g., 'typescript')." },
|
|
208
|
+
ext: { type: "string", description: "Filter by extension (e.g., '.ts', '.md')." },
|
|
209
|
+
path_prefix: { type: "string", description: "Filter by path prefix." },
|
|
274
210
|
limit: {
|
|
275
211
|
type: "number",
|
|
276
212
|
minimum: 1,
|
|
277
213
|
maximum: 200,
|
|
278
|
-
description: "
|
|
214
|
+
description: "Max results (default: 50).",
|
|
279
215
|
},
|
|
216
|
+
compact: { type: "boolean", description: "Omit previews." },
|
|
280
217
|
boost_profile: {
|
|
281
218
|
type: "string",
|
|
282
219
|
enum: ["default", "docs", "balanced", "none", "code"],
|
|
283
|
-
description:
|
|
284
|
-
},
|
|
285
|
-
compact: {
|
|
286
|
-
type: "boolean",
|
|
287
|
-
description: "If true, omits previews to minimize response tokens. Pair with snippets_get for detail-on-demand workflows.",
|
|
220
|
+
description: "File type priority.",
|
|
288
221
|
},
|
|
289
222
|
metadata_filters: {
|
|
290
223
|
type: "object",
|
|
291
224
|
additionalProperties: true,
|
|
292
|
-
description: "
|
|
225
|
+
description: "Filter by YAML frontmatter.",
|
|
293
226
|
},
|
|
294
227
|
},
|
|
295
228
|
},
|
|
@@ -297,37 +230,25 @@ const TOOL_DESCRIPTORS = [
|
|
|
297
230
|
},
|
|
298
231
|
{
|
|
299
232
|
name: "snippets_get",
|
|
300
|
-
description: "
|
|
301
|
-
"
|
|
302
|
-
"Use the `view` parameter to control retrieval strategy:\n" +
|
|
303
|
-
"- 'auto' (default): Uses symbol boundaries if available, falls back to line window\n" +
|
|
304
|
-
"- 'symbol': Forces symbol-based snippets\n" +
|
|
305
|
-
"- 'lines': Uses line-based retrieval (respects start_line/end_line, ignores symbols)\n" +
|
|
306
|
-
"- 'full': Returns entire file from line 1 (start_line is ignored). Safety limit: 500 lines. If truncated, response includes `truncated: true`.\n\n" +
|
|
307
|
-
"Example: snippets_get({path: 'src/auth/login.ts'}) surfaces the enclosing function. snippets_get({path: 'src/config.ts', view: 'full'}) returns entire file. Invalid: snippets_get({path: 'assets/logo.png'}) reports that binary snippets are unsupported.",
|
|
233
|
+
description: "Get code snippet by path. Returns content with line range.\n" +
|
|
234
|
+
"Example: snippets_get({path: 'src/auth/login.ts', view: 'full'})",
|
|
308
235
|
inputSchema: {
|
|
309
236
|
type: "object",
|
|
310
237
|
required: ["path"],
|
|
311
238
|
additionalProperties: true,
|
|
312
239
|
properties: {
|
|
313
|
-
path: {
|
|
314
|
-
type: "string",
|
|
315
|
-
pattern: "^(?!.*\\.\\.)[A-Za-z0-9_./\\-]+$",
|
|
316
|
-
},
|
|
240
|
+
path: { type: "string", pattern: "^(?!.*\\\\.\\\\.)[A-Za-z0-9_./\\\\-]+$" },
|
|
317
241
|
start_line: { type: "number", minimum: 0 },
|
|
318
242
|
end_line: { type: "number", minimum: 0 },
|
|
319
|
-
compact: {
|
|
320
|
-
type: "boolean",
|
|
321
|
-
description: "If true, returns only metadata (path, range, totals, symbols) without content payload.",
|
|
322
|
-
},
|
|
243
|
+
compact: { type: "boolean", description: "Metadata only (no content)." },
|
|
323
244
|
include_line_numbers: {
|
|
324
245
|
type: "boolean",
|
|
325
|
-
description: "
|
|
246
|
+
description: "Prefix each line with line number.",
|
|
326
247
|
},
|
|
327
248
|
view: {
|
|
328
249
|
type: "string",
|
|
329
250
|
enum: ["auto", "symbol", "lines", "full"],
|
|
330
|
-
description:
|
|
251
|
+
description: "auto=symbol boundaries, lines=exact range, full=entire file (max 500 lines).",
|
|
331
252
|
},
|
|
332
253
|
},
|
|
333
254
|
},
|
|
@@ -335,21 +256,21 @@ const TOOL_DESCRIPTORS = [
|
|
|
335
256
|
},
|
|
336
257
|
{
|
|
337
258
|
name: "deps_closure",
|
|
338
|
-
description: "
|
|
339
|
-
"
|
|
340
|
-
"Example: deps_closure({path: 'src/shared/config.ts', direction: 'inbound', max_depth: 2}) lists consumers. Invalid: deps_closure({path: '../secret'}) fails path validation.",
|
|
259
|
+
description: "Analyze dependencies. Returns nodes and edges for a file.\n" +
|
|
260
|
+
"Example: deps_closure({path: 'src/shared/config.ts', direction: 'inbound'})",
|
|
341
261
|
inputSchema: {
|
|
342
262
|
type: "object",
|
|
343
263
|
required: ["path"],
|
|
344
264
|
additionalProperties: true,
|
|
345
265
|
properties: {
|
|
346
|
-
path: {
|
|
266
|
+
path: { type: "string", pattern: "^(?!.*\\\\.\\\\.)[A-Za-z0-9_./\\\\-]+$" },
|
|
267
|
+
max_depth: { type: "number", minimum: 0, description: "Max traversal depth." },
|
|
268
|
+
direction: {
|
|
347
269
|
type: "string",
|
|
348
|
-
|
|
270
|
+
enum: ["outbound", "inbound"],
|
|
271
|
+
description: "outbound=imports, inbound=dependents.",
|
|
349
272
|
},
|
|
350
|
-
|
|
351
|
-
direction: { type: "string", enum: ["outbound", "inbound"] },
|
|
352
|
-
include_packages: { type: "boolean" },
|
|
273
|
+
include_packages: { type: "boolean", description: "Include node_modules dependencies." },
|
|
353
274
|
},
|
|
354
275
|
},
|
|
355
276
|
outputSchema: OUTPUT_SCHEMAS.deps_closure,
|
|
@@ -757,7 +678,10 @@ export function createRpcHandler(dependencies) {
|
|
|
757
678
|
}
|
|
758
679
|
case "tools/list": {
|
|
759
680
|
// MCP standard format: tools array without nextCursor (no pagination)
|
|
760
|
-
|
|
681
|
+
// Note: outputSchemaを除外してレスポンスサイズを削減(Claude Code互換性のため)
|
|
682
|
+
// outputSchemaは大きなJSONとなり、Claude CodeのMCPクライアントでパースエラーを起こす
|
|
683
|
+
const toolsWithoutOutputSchema = TOOL_DESCRIPTORS.map(({ outputSchema: _unused, ...rest }) => rest);
|
|
684
|
+
result = { tools: toolsWithoutOutputSchema };
|
|
761
685
|
break;
|
|
762
686
|
}
|
|
763
687
|
case "resources/list": {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../../src/server/rpc.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../../src/server/rpc.ts"],"names":[],"mappings":"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"}
|