kiri-mcp-server 0.19.0 → 0.20.1

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.
@@ -0,0 +1,326 @@
1
+ /**
2
+ * MCP Prompts機能のためのプロンプト定義とテンプレート生成
3
+ *
4
+ * MCP仕様: https://modelcontextprotocol.io/specification/2025-06-18/server/prompts
5
+ */
6
+ import { readFile } from "node:fs/promises";
7
+ import path from "node:path";
8
+ import { parse as parseYaml } from "yaml";
9
+ import { fileExistsAsync } from "../shared/utils/path.js";
10
+ // =============================================================================
11
+ // プリセットプロンプト定義
12
+ // =============================================================================
13
+ /**
14
+ * ビルトインのプリセットプロンプト
15
+ */
16
+ export const PRESET_PROMPTS = [
17
+ {
18
+ name: "debug-error",
19
+ description: "エラーメッセージから関連コードを検索",
20
+ arguments: [
21
+ {
22
+ name: "error_message",
23
+ required: true,
24
+ description: "エラーメッセージ",
25
+ },
26
+ ],
27
+ },
28
+ {
29
+ name: "find-tests",
30
+ description: "指定ファイルのテストを検索",
31
+ arguments: [
32
+ {
33
+ name: "file_path",
34
+ required: true,
35
+ description: "ファイルパス",
36
+ },
37
+ ],
38
+ },
39
+ {
40
+ name: "explain-function",
41
+ description: "関数の実装と使用箇所を検索",
42
+ arguments: [
43
+ {
44
+ name: "function_name",
45
+ required: true,
46
+ description: "関数名",
47
+ },
48
+ ],
49
+ },
50
+ {
51
+ name: "find-implementations",
52
+ description: "インターフェースや型の実装を検索",
53
+ arguments: [
54
+ {
55
+ name: "type_name",
56
+ required: true,
57
+ description: "型名",
58
+ },
59
+ ],
60
+ },
61
+ {
62
+ name: "trace-dependency",
63
+ description: "ファイルの依存関係をトレース",
64
+ arguments: [
65
+ {
66
+ name: "file_path",
67
+ required: true,
68
+ description: "起点ファイルパス",
69
+ },
70
+ {
71
+ name: "direction",
72
+ required: false,
73
+ description: "inbound/outbound (default: both)",
74
+ },
75
+ ],
76
+ },
77
+ ];
78
+ // =============================================================================
79
+ // プリセットプロンプトのテンプレート
80
+ // =============================================================================
81
+ /**
82
+ * プリセットプロンプト名からテンプレートを取得するマップ
83
+ */
84
+ const PRESET_TEMPLATES = {
85
+ "debug-error": (args) => {
86
+ const errorMessage = args.error_message ?? "";
87
+ return `以下のエラーメッセージに関連するコードを検索してください。
88
+
89
+ ## エラーメッセージ
90
+ \`\`\`
91
+ ${errorMessage}
92
+ \`\`\`
93
+
94
+ ## 検索手順
95
+ 1. \`context_bundle\` を使用してエラーメッセージ内のキーワード(関数名、ファイル名、クラス名等)で検索
96
+ 2. 関連するスタックトレース情報があれば、該当ファイルを \`snippets_get\` で確認
97
+ 3. エラーの原因となりそうなコードを特定
98
+
99
+ ## 期待する出力
100
+ - エラーの原因箇所の特定
101
+ - 修正案の提示`;
102
+ },
103
+ "find-tests": (args) => {
104
+ const filePath = args.file_path ?? "";
105
+ return `以下のファイルに対応するテストファイルを検索してください。
106
+
107
+ ## 対象ファイル
108
+ \`${filePath}\`
109
+
110
+ ## 検索手順
111
+ 1. \`files_search\` を使用して対象ファイル名に基づくテストファイルを検索
112
+ - 例: \`foo.ts\` → \`foo.spec.ts\`, \`foo.test.ts\`, \`__tests__/foo.ts\`
113
+ 2. テストファイルが見つかったら \`snippets_get\` で内容を確認
114
+ 3. \`deps_closure\` で対象ファイルの依存関係も確認し、関連テストを特定
115
+
116
+ ## 期待する出力
117
+ - テストファイルのパス一覧
118
+ - テストカバレッジの概要(テストされている関数/メソッド)`;
119
+ },
120
+ "explain-function": (args) => {
121
+ const functionName = args.function_name ?? "";
122
+ return `以下の関数の実装と使用箇所を検索して説明してください。
123
+
124
+ ## 関数名
125
+ \`${functionName}\`
126
+
127
+ ## 検索手順
128
+ 1. \`context_bundle\` を使用して関数定義を検索
129
+ 2. \`snippets_get\` で関数の完全な実装を取得
130
+ 3. \`files_search\` または \`deps_closure\` (direction: inbound) で使用箇所を特定
131
+
132
+ ## 期待する出力
133
+ - 関数のシグネチャと実装の説明
134
+ - 主要な使用箇所
135
+ - 依存関係(呼び出している他の関数)`;
136
+ },
137
+ "find-implementations": (args) => {
138
+ const typeName = args.type_name ?? "";
139
+ return `以下のインターフェース/型の実装を検索してください。
140
+
141
+ ## 型名
142
+ \`${typeName}\`
143
+
144
+ ## 検索手順
145
+ 1. \`context_bundle\` を使用して型定義を検索
146
+ 2. \`files_search\` で "implements ${typeName}" や "extends ${typeName}" を検索
147
+ 3. 各実装クラス/オブジェクトの概要を \`snippets_get\` で確認
148
+
149
+ ## 期待する出力
150
+ - 型定義の場所と内容
151
+ - 実装一覧(クラス名、ファイルパス)
152
+ - 各実装の特徴や違い`;
153
+ },
154
+ "trace-dependency": (args) => {
155
+ const filePath = args.file_path ?? "";
156
+ const direction = args.direction ?? "both";
157
+ return `以下のファイルの依存関係をトレースしてください。
158
+
159
+ ## 起点ファイル
160
+ \`${filePath}\`
161
+
162
+ ## 方向
163
+ ${direction === "both" ? "双方向(inbound + outbound)" : direction}
164
+
165
+ ## 検索手順
166
+ 1. \`deps_closure\` を使用して依存関係を取得
167
+ ${direction === "both" ? "- direction: outbound(このファイルが使用するモジュール)\n - direction: inbound(このファイルを使用するモジュール)" : `- direction: ${direction}`}
168
+ 2. 重要な依存関係について \`snippets_get\` で詳細を確認
169
+
170
+ ## 期待する出力
171
+ - 依存グラフの概要
172
+ - 主要な依存関係の説明
173
+ - 循環依存の有無`;
174
+ },
175
+ };
176
+ // =============================================================================
177
+ // カスタムプロンプト読み込み
178
+ // =============================================================================
179
+ /**
180
+ * PromptsConfigの型ガード
181
+ * YAML解析結果が期待する形式かを検証
182
+ */
183
+ function isValidPromptsConfig(value) {
184
+ if (typeof value !== "object" || value === null) {
185
+ return false;
186
+ }
187
+ const obj = value;
188
+ // prompts が存在しないか、配列であることを確認
189
+ if (obj.prompts === undefined) {
190
+ return true;
191
+ }
192
+ if (!Array.isArray(obj.prompts)) {
193
+ return false;
194
+ }
195
+ // 各プロンプト定義の基本的な検証
196
+ return obj.prompts.every((item) => {
197
+ if (typeof item !== "object" || item === null) {
198
+ return false;
199
+ }
200
+ const prompt = item;
201
+ // 必須フィールド: name (string)
202
+ return typeof prompt.name === "string";
203
+ });
204
+ }
205
+ /**
206
+ * .kiri/prompts.yaml からカスタムプロンプトを読み込む
207
+ *
208
+ * @param repoRoot - リポジトリのルートパス
209
+ * @returns カスタムプロンプト定義の配列
210
+ */
211
+ export async function loadCustomPrompts(repoRoot) {
212
+ const configPath = path.join(repoRoot, ".kiri", "prompts.yaml");
213
+ if (!(await fileExistsAsync(configPath))) {
214
+ return [];
215
+ }
216
+ try {
217
+ const content = await readFile(configPath, "utf-8");
218
+ const parsed = parseYaml(content);
219
+ // 型ガードで検証
220
+ if (!isValidPromptsConfig(parsed)) {
221
+ console.warn(`Invalid prompts config format in ${configPath}. Expected { prompts: [...] } structure.`);
222
+ return [];
223
+ }
224
+ return parsed.prompts ?? [];
225
+ }
226
+ catch (error) {
227
+ // YAML解析エラー等は警告を出してスキップ
228
+ console.warn(`Failed to load custom prompts from ${configPath}: ${error instanceof Error ? error.message : String(error)}`);
229
+ return [];
230
+ }
231
+ }
232
+ /**
233
+ * カスタムプロンプト定義をPromptDescriptorに変換
234
+ *
235
+ * exactOptionalPropertyTypes対応: undefinedの場合はプロパティ自体を含めない
236
+ */
237
+ function customToDescriptor(custom) {
238
+ const descriptor = {
239
+ name: custom.name,
240
+ };
241
+ if (custom.description !== undefined) {
242
+ descriptor.description = custom.description;
243
+ }
244
+ if (custom.arguments !== undefined) {
245
+ descriptor.arguments = custom.arguments;
246
+ }
247
+ return descriptor;
248
+ }
249
+ // =============================================================================
250
+ // プロンプト一覧取得
251
+ // =============================================================================
252
+ /**
253
+ * 利用可能なすべてのプロンプトを取得(プリセット + カスタム)
254
+ *
255
+ * @param repoRoot - リポジトリのルートパス
256
+ * @returns プロンプト記述子の配列
257
+ */
258
+ export async function listPrompts(repoRoot) {
259
+ const customPrompts = await loadCustomPrompts(repoRoot);
260
+ const customDescriptors = customPrompts.map(customToDescriptor);
261
+ // カスタムプロンプトで同名のものがあればカスタムを優先
262
+ const customNames = new Set(customDescriptors.map((p) => p.name));
263
+ const filteredPresets = PRESET_PROMPTS.filter((p) => !customNames.has(p.name));
264
+ return [...filteredPresets, ...customDescriptors];
265
+ }
266
+ // =============================================================================
267
+ // プロンプトメッセージ生成
268
+ // =============================================================================
269
+ /**
270
+ * テンプレート内の変数を展開
271
+ *
272
+ * ${variable_name} 形式のプレースホルダーを引数値で置換
273
+ */
274
+ function expandTemplate(template, args) {
275
+ return template.replace(/\$\{(\w+)\}/g, (_, name) => args[name] ?? "");
276
+ }
277
+ /**
278
+ * プロンプトのメッセージを生成
279
+ *
280
+ * @param promptName - プロンプト名
281
+ * @param args - 引数
282
+ * @param repoRoot - リポジトリのルートパス
283
+ * @returns プロンプトメッセージまたはnull(見つからない場合)
284
+ */
285
+ export async function generatePromptMessages(promptName, args, repoRoot) {
286
+ // カスタムプロンプトを優先的にチェック
287
+ const customPrompts = await loadCustomPrompts(repoRoot);
288
+ const customPrompt = customPrompts.find((p) => p.name === promptName);
289
+ if (customPrompt) {
290
+ const text = expandTemplate(customPrompt.template, args);
291
+ const result = {
292
+ messages: [
293
+ {
294
+ role: "user",
295
+ content: { type: "text", text },
296
+ },
297
+ ],
298
+ };
299
+ // exactOptionalPropertyTypes対応: undefinedの場合はプロパティ自体を含めない
300
+ if (customPrompt.description !== undefined) {
301
+ result.description = customPrompt.description;
302
+ }
303
+ return result;
304
+ }
305
+ // プリセットプロンプトをチェック
306
+ const presetTemplate = PRESET_TEMPLATES[promptName];
307
+ const presetDescriptor = PRESET_PROMPTS.find((p) => p.name === promptName);
308
+ if (presetTemplate && presetDescriptor) {
309
+ const text = presetTemplate(args);
310
+ const result = {
311
+ messages: [
312
+ {
313
+ role: "user",
314
+ content: { type: "text", text },
315
+ },
316
+ ],
317
+ };
318
+ // exactOptionalPropertyTypes対応: undefinedの場合はプロパティ自体を含めない
319
+ if (presetDescriptor.description !== undefined) {
320
+ result.description = presetDescriptor.description;
321
+ }
322
+ return result;
323
+ }
324
+ return null;
325
+ }
326
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/server/prompts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { DuckDBClient } from "../shared/duckdb.js";
2
+ /**
3
+ * リソース記述子(resources/listで返す形式)
4
+ */
5
+ export interface ResourceDescriptor {
6
+ uri: string;
7
+ name: string;
8
+ description?: string;
9
+ mimeType?: string;
10
+ }
11
+ /**
12
+ * リソースコンテンツ(resources/readで返す形式)
13
+ */
14
+ export interface ResourceContent {
15
+ uri: string;
16
+ mimeType: string;
17
+ text: string;
18
+ }
19
+ /**
20
+ * resources/readのレスポンス
21
+ */
22
+ export interface ResourceReadResult {
23
+ contents: ResourceContent[];
24
+ }
25
+ /**
26
+ * 利用可能なリソース一覧を取得
27
+ *
28
+ * @param repoRoot - リポジトリのルートパス
29
+ * @returns リソース記述子の配列
30
+ */
31
+ export declare function listResources(repoRoot: string): Promise<ResourceDescriptor[]>;
32
+ /**
33
+ * リソースの内容を読み取る
34
+ *
35
+ * @param uri - リソースURI
36
+ * @param repoRoot - リポジトリのルートパス
37
+ * @param db - DuckDBクライアント
38
+ * @param repoId - リポジトリID
39
+ * @returns リソースコンテンツの配列
40
+ * @throws Error - リソースが見つからない場合
41
+ */
42
+ export declare function readResource(uri: string, repoRoot: string, db: DuckDBClient, repoId: number): Promise<ResourceReadResult>;
43
+ //# sourceMappingURL=resources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../src/server/resources.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAOnD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAmED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA6CnF;AAMD;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,YAAY,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,kBAAkB,CAAC,CAqE7B"}
@@ -0,0 +1,174 @@
1
+ /**
2
+ * MCP Resources機能のためのリソースプロバイダー
3
+ *
4
+ * MCP仕様: https://modelcontextprotocol.io/specification/2025-06-18/server/resources
5
+ */
6
+ import { readFile } from "node:fs/promises";
7
+ import path from "node:path";
8
+ import { fileExistsAsync } from "../shared/utils/path.js";
9
+ // =============================================================================
10
+ // ヘルパー関数
11
+ // =============================================================================
12
+ /**
13
+ * プロジェクト統計を取得
14
+ */
15
+ async function getProjectStats(db, repoId) {
16
+ // ファイル数と行数を取得(blobテーブルと結合してline_countを取得)
17
+ const fileStats = await db.all(`SELECT
18
+ COUNT(*) as total_files,
19
+ COALESCE(SUM(b.line_count), 0) as total_lines
20
+ FROM file f
21
+ LEFT JOIN blob b ON f.blob_hash = b.hash
22
+ WHERE f.repo_id = ?`, [repoId]);
23
+ // 言語別ファイル数を取得
24
+ const langStats = await db.all(`SELECT
25
+ COALESCE(lang, 'unknown') as lang,
26
+ COUNT(*) as count
27
+ FROM file
28
+ WHERE repo_id = ?
29
+ GROUP BY lang
30
+ ORDER BY count DESC
31
+ LIMIT 20`, [repoId]);
32
+ // 最終インデックス日時を取得
33
+ const indexInfo = await db.all(`SELECT indexed_at FROM repo WHERE id = ?`, [repoId]);
34
+ const languages = {};
35
+ for (const row of langStats) {
36
+ languages[row.lang] = row.count;
37
+ }
38
+ return {
39
+ totalFiles: fileStats[0]?.total_files ?? 0,
40
+ totalLines: fileStats[0]?.total_lines ?? 0,
41
+ languages,
42
+ lastIndexed: indexInfo[0]?.indexed_at ?? null,
43
+ };
44
+ }
45
+ // =============================================================================
46
+ // リソース一覧
47
+ // =============================================================================
48
+ /**
49
+ * 利用可能なリソース一覧を取得
50
+ *
51
+ * @param repoRoot - リポジトリのルートパス
52
+ * @returns リソース記述子の配列
53
+ */
54
+ export async function listResources(repoRoot) {
55
+ const resources = [];
56
+ // CLAUDE.md
57
+ const claudeMdPath = path.join(repoRoot, "CLAUDE.md");
58
+ if (await fileExistsAsync(claudeMdPath)) {
59
+ resources.push({
60
+ uri: "kiri://project/claude-md",
61
+ name: "CLAUDE.md",
62
+ description: "プロジェクト固有のAI指示",
63
+ mimeType: "text/markdown",
64
+ });
65
+ }
66
+ // README.md
67
+ const readmePath = path.join(repoRoot, "README.md");
68
+ if (await fileExistsAsync(readmePath)) {
69
+ resources.push({
70
+ uri: "kiri://project/readme",
71
+ name: "README.md",
72
+ description: "プロジェクト概要",
73
+ mimeType: "text/markdown",
74
+ });
75
+ }
76
+ // AGENTS.md(Codex、Copilot Workspace等のエージェント向け)
77
+ const agentsMdPath = path.join(repoRoot, "AGENTS.md");
78
+ if (await fileExistsAsync(agentsMdPath)) {
79
+ resources.push({
80
+ uri: "kiri://project/agents-md",
81
+ name: "AGENTS.md",
82
+ description: "AIエージェント向けリポジトリガイドライン",
83
+ mimeType: "text/markdown",
84
+ });
85
+ }
86
+ // プロジェクト統計(常に利用可能)
87
+ resources.push({
88
+ uri: "kiri://project/stats",
89
+ name: "プロジェクト統計",
90
+ description: "ファイル数、言語分布等",
91
+ mimeType: "application/json",
92
+ });
93
+ return resources;
94
+ }
95
+ // =============================================================================
96
+ // リソース読み取り
97
+ // =============================================================================
98
+ /**
99
+ * リソースの内容を読み取る
100
+ *
101
+ * @param uri - リソースURI
102
+ * @param repoRoot - リポジトリのルートパス
103
+ * @param db - DuckDBクライアント
104
+ * @param repoId - リポジトリID
105
+ * @returns リソースコンテンツの配列
106
+ * @throws Error - リソースが見つからない場合
107
+ */
108
+ export async function readResource(uri, repoRoot, db, repoId) {
109
+ switch (uri) {
110
+ case "kiri://project/claude-md": {
111
+ const filePath = path.join(repoRoot, "CLAUDE.md");
112
+ if (!(await fileExistsAsync(filePath))) {
113
+ throw new Error(`Resource not found: ${uri}. CLAUDE.md does not exist in project root.`);
114
+ }
115
+ const text = await readFile(filePath, "utf-8");
116
+ return {
117
+ contents: [
118
+ {
119
+ uri,
120
+ mimeType: "text/markdown",
121
+ text,
122
+ },
123
+ ],
124
+ };
125
+ }
126
+ case "kiri://project/readme": {
127
+ const filePath = path.join(repoRoot, "README.md");
128
+ if (!(await fileExistsAsync(filePath))) {
129
+ throw new Error(`Resource not found: ${uri}. README.md does not exist in project root.`);
130
+ }
131
+ const text = await readFile(filePath, "utf-8");
132
+ return {
133
+ contents: [
134
+ {
135
+ uri,
136
+ mimeType: "text/markdown",
137
+ text,
138
+ },
139
+ ],
140
+ };
141
+ }
142
+ case "kiri://project/agents-md": {
143
+ const filePath = path.join(repoRoot, "AGENTS.md");
144
+ if (!(await fileExistsAsync(filePath))) {
145
+ throw new Error(`Resource not found: ${uri}. AGENTS.md does not exist in project root.`);
146
+ }
147
+ const text = await readFile(filePath, "utf-8");
148
+ return {
149
+ contents: [
150
+ {
151
+ uri,
152
+ mimeType: "text/markdown",
153
+ text,
154
+ },
155
+ ],
156
+ };
157
+ }
158
+ case "kiri://project/stats": {
159
+ const stats = await getProjectStats(db, repoId);
160
+ return {
161
+ contents: [
162
+ {
163
+ uri,
164
+ mimeType: "application/json",
165
+ text: JSON.stringify(stats, null, 2),
166
+ },
167
+ ],
168
+ };
169
+ }
170
+ default:
171
+ throw new Error(`Unknown resource: ${uri}. Use resources/list to see available resources.`);
172
+ }
173
+ }
174
+ //# sourceMappingURL=resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../src/server/resources.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;AAM7D;;;;;;;;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;AA+lBD,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;AAsED,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,sBAAsB,GACnC,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CA0O9D"}
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;AAsmBD,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;AAuED,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,sBAAsB,GACnC,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAoX9D"}