kiri-mcp-server 0.25.6 → 0.25.7
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/dist/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../../src/daemon/socket.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../../src/daemon/socket.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGxE;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,gEAAgE;IAChE,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,SAAS,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IACxE,+CAA+C;IAC/C,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,kDAAkD;IAClD,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAC;IAClC,mDAAmD;IACnD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAuG9B"}
|
|
@@ -10,6 +10,7 @@ import * as fs from "fs/promises";
|
|
|
10
10
|
import * as net from "net";
|
|
11
11
|
import * as os from "os";
|
|
12
12
|
import * as readline from "readline";
|
|
13
|
+
import PQueue from "p-queue";
|
|
13
14
|
import { acquireLock, releaseLock } from "../shared/utils/lockfile.js";
|
|
14
15
|
/**
|
|
15
16
|
* ソケットサーバーを作成し、複数クライアント接続を処理する
|
|
@@ -108,71 +109,89 @@ export async function createSocketServer(options) {
|
|
|
108
109
|
});
|
|
109
110
|
};
|
|
110
111
|
}
|
|
112
|
+
/**
|
|
113
|
+
* リクエストキューの同時実行数
|
|
114
|
+
* DuckDBは単一接続で同時クエリをサポートしないため、
|
|
115
|
+
* 並列リクエストによるタイムアウトを防ぐために1に設定
|
|
116
|
+
*
|
|
117
|
+
* @see Issue #XXX: 並列リクエストでAbortErrorが発生する問題
|
|
118
|
+
*/
|
|
119
|
+
const REQUEST_QUEUE_CONCURRENCY = 1;
|
|
111
120
|
/**
|
|
112
121
|
* クライアント接続を処理する
|
|
113
122
|
*
|
|
114
123
|
* 各接続に対して:
|
|
115
124
|
* 1. 改行区切りのJSON-RPCメッセージを読み取る
|
|
116
|
-
* 2. onRequest
|
|
125
|
+
* 2. onRequestハンドラを呼び出す(キューで順次処理)
|
|
117
126
|
* 3. レスポンスを改行区切りで返す
|
|
127
|
+
*
|
|
128
|
+
* Note: リクエストはPQueueでシリアライズされ、DuckDBへの
|
|
129
|
+
* 同時クエリによるタイムアウトを防止します。
|
|
118
130
|
*/
|
|
119
131
|
function handleClientConnection(socket, onRequest, onError) {
|
|
120
132
|
const rl = readline.createInterface({
|
|
121
133
|
input: socket,
|
|
122
134
|
crlfDelay: Infinity,
|
|
123
135
|
});
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
136
|
+
// リクエストをシリアライズするためのキュー
|
|
137
|
+
// DuckDBは単一接続で複数の同時クエリを処理できないため、
|
|
138
|
+
// 並列リクエストを順次処理することでタイムアウトを防止
|
|
139
|
+
const requestQueue = new PQueue({ concurrency: REQUEST_QUEUE_CONCURRENCY });
|
|
140
|
+
rl.on("line", (line) => {
|
|
141
|
+
// キューに追加して順次処理(awaitしないことで入力受付を継続)
|
|
142
|
+
requestQueue.add(async () => {
|
|
143
|
+
let request = null;
|
|
144
|
+
try {
|
|
145
|
+
request = JSON.parse(line);
|
|
133
146
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
code: -32700,
|
|
139
|
-
message: "Parse error: Invalid JSON received.",
|
|
140
|
-
},
|
|
141
|
-
};
|
|
142
|
-
socket.write(JSON.stringify(errorResponse) + "\n");
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
try {
|
|
146
|
-
const result = await onRequest(request);
|
|
147
|
-
if (result) {
|
|
148
|
-
const hasResponseId = typeof request.id === "string" || typeof request.id === "number";
|
|
149
|
-
if (!hasResponseId) {
|
|
150
|
-
return;
|
|
147
|
+
catch (err) {
|
|
148
|
+
const error = err;
|
|
149
|
+
if (onError) {
|
|
150
|
+
onError(error);
|
|
151
151
|
}
|
|
152
|
-
|
|
153
|
-
|
|
152
|
+
const errorResponse = {
|
|
153
|
+
jsonrpc: "2.0",
|
|
154
|
+
id: null,
|
|
155
|
+
error: {
|
|
156
|
+
code: -32700,
|
|
157
|
+
message: "Parse error: Invalid JSON received.",
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
socket.write(JSON.stringify(errorResponse) + "\n");
|
|
161
|
+
return;
|
|
154
162
|
}
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
163
|
+
try {
|
|
164
|
+
const result = await onRequest(request);
|
|
165
|
+
if (result) {
|
|
166
|
+
const hasResponseId = typeof request.id === "string" || typeof request.id === "number";
|
|
167
|
+
if (!hasResponseId) {
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
// Extract response from RpcHandleResult (statusCode is only for HTTP)
|
|
171
|
+
socket.write(JSON.stringify(result.response) + "\n");
|
|
172
|
+
}
|
|
160
173
|
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
174
|
+
catch (err) {
|
|
175
|
+
const error = err;
|
|
176
|
+
if (onError) {
|
|
177
|
+
onError(error);
|
|
178
|
+
}
|
|
179
|
+
const hasResponseId = request && (typeof request.id === "string" || typeof request.id === "number");
|
|
180
|
+
if (!hasResponseId) {
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
// エラーレスポンスを送信
|
|
184
|
+
const errorResponse = {
|
|
185
|
+
jsonrpc: "2.0",
|
|
186
|
+
id: request.id,
|
|
187
|
+
error: {
|
|
188
|
+
code: -32603,
|
|
189
|
+
message: `Internal error: ${error.message}`,
|
|
190
|
+
},
|
|
191
|
+
};
|
|
192
|
+
socket.write(JSON.stringify(errorResponse) + "\n");
|
|
164
193
|
}
|
|
165
|
-
|
|
166
|
-
const errorResponse = {
|
|
167
|
-
jsonrpc: "2.0",
|
|
168
|
-
id: request.id,
|
|
169
|
-
error: {
|
|
170
|
-
code: -32603,
|
|
171
|
-
message: `Internal error: ${error.message}`,
|
|
172
|
-
},
|
|
173
|
-
};
|
|
174
|
-
socket.write(JSON.stringify(errorResponse) + "\n");
|
|
175
|
-
}
|
|
194
|
+
});
|
|
176
195
|
});
|
|
177
196
|
socket.on("error", (err) => {
|
|
178
197
|
if (onError) {
|
|
@@ -181,6 +200,9 @@ function handleClientConnection(socket, onRequest, onError) {
|
|
|
181
200
|
});
|
|
182
201
|
socket.on("end", () => {
|
|
183
202
|
rl.close();
|
|
203
|
+
// Note: requestQueueはクリアしない
|
|
204
|
+
// クライアントがソケットを閉じた後でも、既に受信したリクエストは
|
|
205
|
+
// 処理を完了させる(バッチリクエストのパターンに対応)
|
|
184
206
|
});
|
|
185
207
|
}
|
|
186
208
|
//# sourceMappingURL=socket.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../../src/daemon/socket.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../../src/daemon/socket.ts"],"names":[],"mappings":"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"}
|