kiri-mcp-server 0.9.5 → 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.
- package/README.md +94 -7
- package/dist/package.json +11 -1
- package/dist/src/client/proxy.js +2 -1
- package/dist/src/client/proxy.js.map +1 -1
- package/dist/src/client/start-daemon.d.ts.map +1 -1
- package/dist/src/client/start-daemon.js +2 -1
- package/dist/src/client/start-daemon.js.map +1 -1
- package/dist/src/daemon/daemon.js +6 -4
- package/dist/src/daemon/daemon.js.map +1 -1
- package/dist/src/daemon/socket.d.ts +6 -4
- package/dist/src/daemon/socket.d.ts.map +1 -1
- package/dist/src/daemon/socket.js +62 -18
- package/dist/src/daemon/socket.js.map +1 -1
- package/dist/src/indexer/cli.d.ts +1 -0
- package/dist/src/indexer/cli.d.ts.map +1 -1
- package/dist/src/indexer/cli.js +503 -257
- package/dist/src/indexer/cli.js.map +1 -1
- package/dist/src/indexer/codeintel.d.ts +1 -1
- package/dist/src/indexer/codeintel.d.ts.map +1 -1
- package/dist/src/indexer/codeintel.js +296 -3
- package/dist/src/indexer/codeintel.js.map +1 -1
- package/dist/src/indexer/dart/analyze.d.ts +29 -0
- package/dist/src/indexer/dart/analyze.d.ts.map +1 -0
- package/dist/src/indexer/dart/analyze.js +452 -0
- package/dist/src/indexer/dart/analyze.js.map +1 -0
- package/dist/src/indexer/dart/client.d.ts +113 -0
- package/dist/src/indexer/dart/client.d.ts.map +1 -0
- package/dist/src/indexer/dart/client.js +444 -0
- package/dist/src/indexer/dart/client.js.map +1 -0
- package/dist/src/indexer/dart/config.d.ts +36 -0
- package/dist/src/indexer/dart/config.d.ts.map +1 -0
- package/dist/src/indexer/dart/config.js +62 -0
- package/dist/src/indexer/dart/config.js.map +1 -0
- package/dist/src/indexer/dart/dependencies.d.ts +17 -0
- package/dist/src/indexer/dart/dependencies.d.ts.map +1 -0
- package/dist/src/indexer/dart/dependencies.js +102 -0
- package/dist/src/indexer/dart/dependencies.js.map +1 -0
- package/dist/src/indexer/dart/pathKey.d.ts +40 -0
- package/dist/src/indexer/dart/pathKey.d.ts.map +1 -0
- package/dist/src/indexer/dart/pathKey.js +72 -0
- package/dist/src/indexer/dart/pathKey.js.map +1 -0
- package/dist/src/indexer/dart/poolGate.d.ts +57 -0
- package/dist/src/indexer/dart/poolGate.d.ts.map +1 -0
- package/dist/src/indexer/dart/poolGate.js +87 -0
- package/dist/src/indexer/dart/poolGate.js.map +1 -0
- package/dist/src/indexer/dart/sdk.d.ts +40 -0
- package/dist/src/indexer/dart/sdk.d.ts.map +1 -0
- package/dist/src/indexer/dart/sdk.js +167 -0
- package/dist/src/indexer/dart/sdk.js.map +1 -0
- package/dist/src/indexer/dart/transform.d.ts +17 -0
- package/dist/src/indexer/dart/transform.d.ts.map +1 -0
- package/dist/src/indexer/dart/transform.js +157 -0
- package/dist/src/indexer/dart/transform.js.map +1 -0
- package/dist/src/indexer/dart/types.d.ts +137 -0
- package/dist/src/indexer/dart/types.d.ts.map +1 -0
- package/dist/src/indexer/dart/types.js +5 -0
- package/dist/src/indexer/dart/types.js.map +1 -0
- package/dist/src/indexer/git.d.ts +1 -0
- package/dist/src/indexer/git.d.ts.map +1 -1
- package/dist/src/indexer/git.js +8 -0
- package/dist/src/indexer/git.js.map +1 -1
- package/dist/src/indexer/language.d.ts.map +1 -1
- package/dist/src/indexer/language.js +1 -0
- package/dist/src/indexer/language.js.map +1 -1
- package/dist/src/indexer/queue.d.ts +19 -0
- package/dist/src/indexer/queue.d.ts.map +1 -0
- package/dist/src/indexer/queue.js +50 -0
- package/dist/src/indexer/queue.js.map +1 -0
- package/dist/src/indexer/schema.d.ts +61 -1
- package/dist/src/indexer/schema.d.ts.map +1 -1
- package/dist/src/indexer/schema.js +253 -2
- package/dist/src/indexer/schema.js.map +1 -1
- package/dist/src/indexer/watch.d.ts +21 -0
- package/dist/src/indexer/watch.d.ts.map +1 -1
- package/dist/src/indexer/watch.js +189 -28
- package/dist/src/indexer/watch.js.map +1 -1
- package/dist/src/server/context.d.ts +7 -0
- package/dist/src/server/context.d.ts.map +1 -1
- package/dist/src/server/handlers.d.ts +7 -3
- package/dist/src/server/handlers.d.ts.map +1 -1
- package/dist/src/server/handlers.js +252 -24
- package/dist/src/server/handlers.js.map +1 -1
- package/dist/src/server/indexBootstrap.d.ts.map +1 -1
- package/dist/src/server/indexBootstrap.js +4 -1
- package/dist/src/server/indexBootstrap.js.map +1 -1
- package/dist/src/server/rpc.d.ts +40 -4
- package/dist/src/server/rpc.d.ts.map +1 -1
- package/dist/src/server/rpc.js +131 -41
- package/dist/src/server/rpc.js.map +1 -1
- package/dist/src/server/runtime.d.ts.map +1 -1
- package/dist/src/server/runtime.js +47 -7
- package/dist/src/server/runtime.js.map +1 -1
- package/dist/src/shared/duckdb.d.ts.map +1 -1
- package/dist/src/shared/duckdb.js +9 -0
- package/dist/src/shared/duckdb.js.map +1 -1
- package/dist/src/shared/security/masker.d.ts +1 -0
- package/dist/src/shared/security/masker.d.ts.map +1 -1
- package/dist/src/shared/security/masker.js +59 -13
- package/dist/src/shared/security/masker.js.map +1 -1
- package/dist/src/shared/utils/path.d.ts +46 -0
- package/dist/src/shared/utils/path.d.ts.map +1 -0
- package/dist/src/shared/utils/path.js +94 -0
- package/dist/src/shared/utils/path.js.map +1 -0
- package/dist/src/shared/utils/socket.d.ts +6 -2
- package/dist/src/shared/utils/socket.d.ts.map +1 -1
- package/dist/src/shared/utils/socket.js +62 -10
- package/dist/src/shared/utils/socket.js.map +1 -1
- package/package.json +11 -1
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dart Analysis Server の Outline から KIRI の SymbolRecord への変換
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Outline を SymbolRecord と SnippetRecord に変換
|
|
6
|
+
*
|
|
7
|
+
* @param outline - Analysis Server の Outline
|
|
8
|
+
* @param content - ファイルの内容(行番号計算用)
|
|
9
|
+
* @returns { symbols, snippets }
|
|
10
|
+
*/
|
|
11
|
+
export function outlineToSymbols(outline, content) {
|
|
12
|
+
const symbols = [];
|
|
13
|
+
// offset → line 変換のための行開始位置配列を事前構築
|
|
14
|
+
const lineStarts = buildLineStartsArray(content);
|
|
15
|
+
function visit(node) {
|
|
16
|
+
const kind = mapElementKind(node.element.kind);
|
|
17
|
+
if (kind) {
|
|
18
|
+
const startLine = offsetToLine(lineStarts, node.offset);
|
|
19
|
+
const endLine = offsetToLine(lineStarts, node.offset + node.length);
|
|
20
|
+
symbols.push({
|
|
21
|
+
name: node.element.name,
|
|
22
|
+
kind,
|
|
23
|
+
rangeStartLine: startLine,
|
|
24
|
+
rangeEndLine: endLine,
|
|
25
|
+
signature: buildSignature(node),
|
|
26
|
+
doc: node.element.dartdoc ?? null,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
// 子要素を再帰的に処理
|
|
30
|
+
node.children?.forEach(visit);
|
|
31
|
+
}
|
|
32
|
+
visit(outline);
|
|
33
|
+
// symbolId を採番
|
|
34
|
+
const symbolRecords = symbols
|
|
35
|
+
.sort((a, b) => a.rangeStartLine - b.rangeStartLine)
|
|
36
|
+
.map((item, index) => ({ symbolId: index + 1, ...item }));
|
|
37
|
+
// snippets を生成(各シンボルの範囲に対応)
|
|
38
|
+
const snippets = symbolRecords.map((symbol) => ({
|
|
39
|
+
startLine: symbol.rangeStartLine,
|
|
40
|
+
endLine: symbol.rangeEndLine,
|
|
41
|
+
symbolId: symbol.symbolId,
|
|
42
|
+
}));
|
|
43
|
+
return { symbols: symbolRecords, snippets };
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Dart ElementKind を KIRI の symbol kind にマッピング
|
|
47
|
+
*
|
|
48
|
+
* Phase 2: EXTENSION_TYPE, OPERATOR, TYPE_ALIAS を追加
|
|
49
|
+
*/
|
|
50
|
+
function mapElementKind(kind) {
|
|
51
|
+
switch (kind) {
|
|
52
|
+
case "CLASS":
|
|
53
|
+
case "CLASS_TYPE_ALIAS":
|
|
54
|
+
case "ENUM":
|
|
55
|
+
case "MIXIN":
|
|
56
|
+
case "EXTENSION":
|
|
57
|
+
case "EXTENSION_TYPE": // Phase 2: Dart 3.0+ extension type
|
|
58
|
+
return "class";
|
|
59
|
+
case "FUNCTION":
|
|
60
|
+
case "METHOD":
|
|
61
|
+
case "GETTER":
|
|
62
|
+
case "SETTER":
|
|
63
|
+
case "CONSTRUCTOR":
|
|
64
|
+
case "OPERATOR": // Phase 2: operator overloading
|
|
65
|
+
return "function";
|
|
66
|
+
case "FIELD":
|
|
67
|
+
case "TOP_LEVEL_VARIABLE":
|
|
68
|
+
case "ENUM_CONSTANT":
|
|
69
|
+
return "property";
|
|
70
|
+
case "FUNCTION_TYPE_ALIAS":
|
|
71
|
+
case "TYPE_ALIAS": // Phase 2: type Foo = Bar;
|
|
72
|
+
return "type";
|
|
73
|
+
case "LIBRARY":
|
|
74
|
+
case "COMPILATION_UNIT":
|
|
75
|
+
// KIRI ではファイル単位なので個別に記録しない
|
|
76
|
+
return null;
|
|
77
|
+
case "PARAMETER":
|
|
78
|
+
case "TYPE_PARAMETER":
|
|
79
|
+
case "UNIT_TEST_GROUP":
|
|
80
|
+
case "UNIT_TEST_TEST":
|
|
81
|
+
case "UNKNOWN":
|
|
82
|
+
// これらの要素は個別にシンボルとして記録しない
|
|
83
|
+
return null;
|
|
84
|
+
default:
|
|
85
|
+
// その他の要素は無視
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Outline からシグネチャ文字列を生成
|
|
91
|
+
*
|
|
92
|
+
* 形式: {returnType} {name}{typeParameters}{parameters}
|
|
93
|
+
*/
|
|
94
|
+
function buildSignature(node) {
|
|
95
|
+
const element = node.element;
|
|
96
|
+
const parts = [];
|
|
97
|
+
// 返り値の型
|
|
98
|
+
if (element.returnType) {
|
|
99
|
+
parts.push(element.returnType);
|
|
100
|
+
}
|
|
101
|
+
// 名前
|
|
102
|
+
parts.push(element.name);
|
|
103
|
+
// 型パラメータ
|
|
104
|
+
if (element.typeParameters) {
|
|
105
|
+
parts.push(element.typeParameters);
|
|
106
|
+
}
|
|
107
|
+
// パラメータ
|
|
108
|
+
if (element.parameters) {
|
|
109
|
+
parts.push(element.parameters);
|
|
110
|
+
}
|
|
111
|
+
const signature = parts.join(" ").trim();
|
|
112
|
+
// シグネチャが名前だけの場合は null を返す(フィールドなど)
|
|
113
|
+
return signature === element.name ? null : signature;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* ファイル内容から各行の開始オフセット配列を構築
|
|
117
|
+
*
|
|
118
|
+
* メモリ効率改善: Map(O(n))の代わりに配列(O(m))を使用(n=ファイルサイズ、m=行数)
|
|
119
|
+
*
|
|
120
|
+
* @param content - ファイル内容
|
|
121
|
+
* @returns 各行の開始オフセット配列(0-based offset, 1-based line number)
|
|
122
|
+
*/
|
|
123
|
+
function buildLineStartsArray(content) {
|
|
124
|
+
const lineStarts = [0]; // 1行目は offset 0 から開始
|
|
125
|
+
for (let i = 0; i < content.length; i++) {
|
|
126
|
+
if (content[i] === "\n") {
|
|
127
|
+
lineStarts.push(i + 1); // 改行の次の文字が次の行の開始
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return lineStarts;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* オフセットから行番号を二分探索で取得
|
|
134
|
+
*
|
|
135
|
+
* 時間計算量: O(log m) (m=行数)
|
|
136
|
+
*
|
|
137
|
+
* @param lineStarts - 各行の開始オフセット配列
|
|
138
|
+
* @param offset - 検索対象のオフセット(0-based)
|
|
139
|
+
* @returns 行番号(1-based)
|
|
140
|
+
*/
|
|
141
|
+
function offsetToLine(lineStarts, offset) {
|
|
142
|
+
// 二分探索: offset 以下の最大のインデックスを探す
|
|
143
|
+
let left = 0;
|
|
144
|
+
let right = lineStarts.length - 1;
|
|
145
|
+
while (left < right) {
|
|
146
|
+
const mid = Math.floor((left + right + 1) / 2);
|
|
147
|
+
if (lineStarts[mid] <= offset) {
|
|
148
|
+
left = mid;
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
right = mid - 1;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// インデックスは0-based、行番号は1-basedなので+1
|
|
155
|
+
return left + 1;
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../../src/indexer/dart/transform.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript interfaces for Dart Analysis Server JSON-RPC protocol
|
|
3
|
+
*/
|
|
4
|
+
export interface RpcRequest<TParams = unknown> {
|
|
5
|
+
id: string;
|
|
6
|
+
method: string;
|
|
7
|
+
params: TParams;
|
|
8
|
+
}
|
|
9
|
+
export interface RpcResponse<TResult = unknown> {
|
|
10
|
+
id: string;
|
|
11
|
+
result?: TResult;
|
|
12
|
+
error?: RpcError;
|
|
13
|
+
}
|
|
14
|
+
export interface RpcError {
|
|
15
|
+
code: number;
|
|
16
|
+
message: string;
|
|
17
|
+
data?: unknown;
|
|
18
|
+
}
|
|
19
|
+
export interface RpcNotification<TParams = unknown> {
|
|
20
|
+
event: string;
|
|
21
|
+
params: TParams;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* analysis.updateContent のパラメータ
|
|
25
|
+
*/
|
|
26
|
+
export interface UpdateContentParams {
|
|
27
|
+
files: Record<string, ContentOverlayChange>;
|
|
28
|
+
}
|
|
29
|
+
export type ContentOverlayChange = AddContentOverlay | RemoveContentOverlay;
|
|
30
|
+
export interface AddContentOverlay {
|
|
31
|
+
type: "add";
|
|
32
|
+
content: string;
|
|
33
|
+
}
|
|
34
|
+
export interface RemoveContentOverlay {
|
|
35
|
+
type: "remove";
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* analysis.getOutline のレスポンス
|
|
39
|
+
*/
|
|
40
|
+
export interface GetOutlineResult {
|
|
41
|
+
outline: Outline;
|
|
42
|
+
}
|
|
43
|
+
export interface Outline {
|
|
44
|
+
kind: string;
|
|
45
|
+
name?: string;
|
|
46
|
+
offset: number;
|
|
47
|
+
length: number;
|
|
48
|
+
element: OutlineElement;
|
|
49
|
+
children?: Outline[];
|
|
50
|
+
}
|
|
51
|
+
export interface OutlineElement {
|
|
52
|
+
kind: string;
|
|
53
|
+
name: string;
|
|
54
|
+
parameters?: string;
|
|
55
|
+
returnType?: string;
|
|
56
|
+
typeParameters?: string;
|
|
57
|
+
location?: ElementLocation;
|
|
58
|
+
dartdoc?: string;
|
|
59
|
+
}
|
|
60
|
+
export interface ElementLocation {
|
|
61
|
+
file: string;
|
|
62
|
+
offset: number;
|
|
63
|
+
length: number;
|
|
64
|
+
startLine: number;
|
|
65
|
+
startColumn: number;
|
|
66
|
+
endLine?: number;
|
|
67
|
+
endColumn?: number;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* analysis.getNavigation のレスポンス
|
|
71
|
+
*/
|
|
72
|
+
export interface GetNavigationResult {
|
|
73
|
+
files: string[];
|
|
74
|
+
targets: NavigationTarget[];
|
|
75
|
+
regions: NavigationRegion[];
|
|
76
|
+
}
|
|
77
|
+
export interface NavigationTarget {
|
|
78
|
+
kind: string;
|
|
79
|
+
fileIndex: number;
|
|
80
|
+
offset: number;
|
|
81
|
+
length: number;
|
|
82
|
+
startLine: number;
|
|
83
|
+
startColumn: number;
|
|
84
|
+
}
|
|
85
|
+
export interface NavigationRegion {
|
|
86
|
+
offset: number;
|
|
87
|
+
length: number;
|
|
88
|
+
targets: number[];
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* analysis.getLibraryDependencies のレスポンス
|
|
92
|
+
*/
|
|
93
|
+
export interface GetLibraryDependenciesResult {
|
|
94
|
+
libraries: string[];
|
|
95
|
+
packageMap: Record<string, string[]>;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* server.connected 通知
|
|
99
|
+
*/
|
|
100
|
+
export interface ServerConnectedParams {
|
|
101
|
+
version: string;
|
|
102
|
+
pid: number;
|
|
103
|
+
sessionId?: string;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* server.error 通知
|
|
107
|
+
*/
|
|
108
|
+
export interface ServerErrorParams {
|
|
109
|
+
isFatal: boolean;
|
|
110
|
+
message: string;
|
|
111
|
+
stackTrace: string;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* analysis.errors 通知
|
|
115
|
+
*/
|
|
116
|
+
export interface AnalysisErrorsParams {
|
|
117
|
+
file: string;
|
|
118
|
+
errors: AnalysisError[];
|
|
119
|
+
}
|
|
120
|
+
export interface AnalysisError {
|
|
121
|
+
severity: "INFO" | "WARNING" | "ERROR";
|
|
122
|
+
type: string;
|
|
123
|
+
location: ElementLocation;
|
|
124
|
+
message: string;
|
|
125
|
+
correction?: string;
|
|
126
|
+
code?: string;
|
|
127
|
+
}
|
|
128
|
+
export type ElementKind = "CLASS" | "CLASS_TYPE_ALIAS" | "COMPILATION_UNIT" | "CONSTRUCTOR" | "ENUM" | "ENUM_CONSTANT" | "EXTENSION" | "EXTENSION_TYPE" | "FIELD" | "FUNCTION" | "FUNCTION_TYPE_ALIAS" | "GETTER" | "LIBRARY" | "METHOD" | "MIXIN" | "OPERATOR" | "PARAMETER" | "SETTER" | "TOP_LEVEL_VARIABLE" | "TYPE_ALIAS" | "TYPE_PARAMETER" | "UNIT_TEST_GROUP" | "UNIT_TEST_TEST" | "UNKNOWN";
|
|
129
|
+
/**
|
|
130
|
+
* DartAnalysisClient が返す解析結果のペイロード
|
|
131
|
+
*/
|
|
132
|
+
export interface DartAnalysisPayload {
|
|
133
|
+
outline: Outline;
|
|
134
|
+
navigation?: GetNavigationResult;
|
|
135
|
+
dependencies?: GetLibraryDependenciesResult;
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/indexer/dart/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/indexer/dart/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export declare function gitLsFiles(repoRoot: string): Promise<string[]>;
|
|
2
2
|
export declare function getHeadCommit(repoRoot: string): Promise<string>;
|
|
3
3
|
export declare function getDefaultBranch(repoRoot: string): Promise<string | null>;
|
|
4
|
+
export declare function gitDiffNameOnly(repoRoot: string, sinceRef: string): Promise<string[]>;
|
|
4
5
|
//# sourceMappingURL=git.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../src/indexer/git.ts"],"names":[],"mappings":"AAKA,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAMpE;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGrE;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAa/E"}
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../src/indexer/git.ts"],"names":[],"mappings":"AAKA,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAMpE;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGrE;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAa/E;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAO3F"}
|
package/dist/src/indexer/git.js
CHANGED
|
@@ -27,4 +27,12 @@ export async function getDefaultBranch(repoRoot) {
|
|
|
27
27
|
return null;
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
+
export async function gitDiffNameOnly(repoRoot, sinceRef) {
|
|
31
|
+
const args = ["diff", "--name-only", "-z", "--diff-filter=ACDMRTUXB", sinceRef, "HEAD"];
|
|
32
|
+
const { stdout } = await execFileAsync("git", args, { cwd: repoRoot });
|
|
33
|
+
return stdout
|
|
34
|
+
.split("\0")
|
|
35
|
+
.map((item) => item.trim())
|
|
36
|
+
.filter((item) => item.length > 0);
|
|
37
|
+
}
|
|
30
38
|
//# sourceMappingURL=git.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/indexer/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB;IAC/C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrF,OAAO,MAAM;SACV,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAgB;IAClD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxF,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IACrD,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE;YACnF,GAAG,EAAE,QAAQ;SACd,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/indexer/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB;IAC/C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrF,OAAO,MAAM;SACV,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAgB;IAClD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxF,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IACrD,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE;YACnF,GAAG,EAAE,QAAQ;SACd,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,QAAgB;IACtE,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,yBAAyB,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACxF,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;IACvE,OAAO,MAAM;SACV,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"language.d.ts","sourceRoot":"","sources":["../../../src/indexer/language.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"language.d.ts","sourceRoot":"","sources":["../../../src/indexer/language.ts"],"names":[],"mappings":"AA+BA,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG/D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"language.js","sourceRoot":"","sources":["../../../src/indexer/language.ts"],"names":[],"mappings":"AAAA,MAAM,qBAAqB,GAA2B;IACpD,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,MAAM;IACb,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,OAAO;IACjB,KAAK,EAAE,QAAQ;IACf,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,eAAe;IACtB,QAAQ,EAAE,OAAO;IACjB,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,MAAM,UAAU,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IAC3C,OAAO,qBAAqB,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;AACnD,CAAC"}
|
|
1
|
+
{"version":3,"file":"language.js","sourceRoot":"","sources":["../../../src/indexer/language.ts"],"names":[],"mappings":"AAAA,MAAM,qBAAqB,GAA2B;IACpD,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,MAAM;IACb,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,OAAO;IACjB,KAAK,EAAE,QAAQ;IACf,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,eAAe;IACtB,QAAQ,EAAE,OAAO;IACjB,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,MAAM,UAAU,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IAC3C,OAAO,qBAAqB,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import PQueue from "p-queue";
|
|
2
|
+
/**
|
|
3
|
+
* 指定されたdatabasePath用のキューを取得(初回はconcurrency=1で作成)
|
|
4
|
+
*
|
|
5
|
+
* @param databasePath - DuckDBファイルパス
|
|
6
|
+
* @returns databasePath専用のキュー
|
|
7
|
+
*/
|
|
8
|
+
export declare function getIndexerQueue(databasePath: string): PQueue;
|
|
9
|
+
/**
|
|
10
|
+
* テスト用: 特定databasePathのキューをクリア
|
|
11
|
+
*
|
|
12
|
+
* @param databasePath - クリア対象のパス
|
|
13
|
+
*/
|
|
14
|
+
export declare function clearQueue(databasePath: string): void;
|
|
15
|
+
/**
|
|
16
|
+
* テスト用: すべてのキューをクリア
|
|
17
|
+
*/
|
|
18
|
+
export declare function clearAllQueues(): void;
|
|
19
|
+
//# sourceMappingURL=queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/indexer/queue.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,SAAS,CAAC;AAmB7B;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAK5D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAMrD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAKrC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import PQueue from "p-queue";
|
|
2
|
+
/**
|
|
3
|
+
* DuckDB single-writer制約対応: databasePathごとにindexer実行をキューイング
|
|
4
|
+
*
|
|
5
|
+
* 背景:
|
|
6
|
+
* - DuckDBは1ファイル1ライターのみサポート
|
|
7
|
+
* - fts_status/generation追加でALTER TABLE + 全件UPDATEが実行され、接続時間が延長
|
|
8
|
+
* - 複数indexer並列実行時にカタログ競合が発生し、repo table消失やデータ損失が起きる
|
|
9
|
+
*
|
|
10
|
+
* 解決策:
|
|
11
|
+
* - 同じdatabasePathに対するrunIndexer()呼び出しを直列化
|
|
12
|
+
* - p-queue (concurrency: 1) でファイルごとに排他制御
|
|
13
|
+
*
|
|
14
|
+
* @see Critical Review Fix #5 - Concurrency test failures
|
|
15
|
+
*/
|
|
16
|
+
const queueMap = new Map();
|
|
17
|
+
/**
|
|
18
|
+
* 指定されたdatabasePath用のキューを取得(初回はconcurrency=1で作成)
|
|
19
|
+
*
|
|
20
|
+
* @param databasePath - DuckDBファイルパス
|
|
21
|
+
* @returns databasePath専用のキュー
|
|
22
|
+
*/
|
|
23
|
+
export function getIndexerQueue(databasePath) {
|
|
24
|
+
if (!queueMap.has(databasePath)) {
|
|
25
|
+
queueMap.set(databasePath, new PQueue({ concurrency: 1 }));
|
|
26
|
+
}
|
|
27
|
+
return queueMap.get(databasePath);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* テスト用: 特定databasePathのキューをクリア
|
|
31
|
+
*
|
|
32
|
+
* @param databasePath - クリア対象のパス
|
|
33
|
+
*/
|
|
34
|
+
export function clearQueue(databasePath) {
|
|
35
|
+
const queue = queueMap.get(databasePath);
|
|
36
|
+
if (queue) {
|
|
37
|
+
queue.clear();
|
|
38
|
+
queueMap.delete(databasePath);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* テスト用: すべてのキューをクリア
|
|
43
|
+
*/
|
|
44
|
+
export function clearAllQueues() {
|
|
45
|
+
for (const queue of queueMap.values()) {
|
|
46
|
+
queue.clear();
|
|
47
|
+
}
|
|
48
|
+
queueMap.clear();
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/indexer/queue.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,SAAS,CAAC;AAE7B;;;;;;;;;;;;;GAaG;AAEH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,YAAoB;IAClD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC;AACrC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,YAAoB;IAC7C,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACtC,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;IACD,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC"}
|
|
@@ -1,9 +1,69 @@
|
|
|
1
1
|
import { DuckDBClient } from "../shared/duckdb.js";
|
|
2
2
|
export declare function ensureBaseSchema(db: DuckDBClient): Promise<void>;
|
|
3
|
+
/**
|
|
4
|
+
* repoテーブルにFTSメタデータ列を追加(Phase 3マイグレーション)
|
|
5
|
+
* 既存DBとの互換性のため、列が存在しない場合のみ追加
|
|
6
|
+
* @param db - DuckDBクライアント
|
|
7
|
+
* @throws Error if migration fails (except when repo table doesn't exist yet)
|
|
8
|
+
*/
|
|
9
|
+
export declare function ensureRepoMetaColumns(db: DuckDBClient): Promise<void>;
|
|
3
10
|
/**
|
|
4
11
|
* FTS(全文検索)インデックスの作成を試行
|
|
5
12
|
* @param db - DuckDBクライアント
|
|
13
|
+
* @param forceRebuild - 強制的に再構築する場合true
|
|
6
14
|
* @returns FTS拡張が利用可能な場合true、それ以外false
|
|
7
15
|
*/
|
|
8
|
-
export declare function tryCreateFTSIndex(db: DuckDBClient): Promise<boolean>;
|
|
16
|
+
export declare function tryCreateFTSIndex(db: DuckDBClient, forceRebuild?: boolean): Promise<boolean>;
|
|
17
|
+
/**
|
|
18
|
+
* FTSスキーマの存在を確認
|
|
19
|
+
* @param db - DuckDBクライアント
|
|
20
|
+
* @returns スキーマが存在する場合true
|
|
21
|
+
*/
|
|
22
|
+
export declare function checkFTSSchemaExists(db: DuckDBClient): Promise<boolean>;
|
|
23
|
+
/**
|
|
24
|
+
* FTS拡張の利用可能性のみをチェック(Phase 2: サーバー起動時用)
|
|
25
|
+
* インデックスの作成は行わず、存在確認のみ
|
|
26
|
+
* @param db - DuckDBクライアント
|
|
27
|
+
* @returns FTS拡張がロード可能でインデックスが存在する場合true
|
|
28
|
+
*/
|
|
29
|
+
export declare function checkFTSAvailability(db: DuckDBClient): Promise<boolean>;
|
|
30
|
+
/**
|
|
31
|
+
* dirty flagに基づいてFTSインデックスを条件付きで再構築(Phase 2+3: インデクサー用)
|
|
32
|
+
*
|
|
33
|
+
* @deprecated The `repoId` parameter is currently ignored due to global FTS architecture.
|
|
34
|
+
* Use `rebuildGlobalFTS()` instead for clearer intent. This signature will be removed in v2.0.
|
|
35
|
+
*
|
|
36
|
+
* NOTE: DuckDB FTS index is GLOBAL (one fts_main_blob schema for entire blob table).
|
|
37
|
+
* We check if ANY repo is dirty to avoid partial corruption in multi-repo environments.
|
|
38
|
+
* Future improvement: migrate to dedicated fts_metadata table (see Codex design proposal).
|
|
39
|
+
*
|
|
40
|
+
* @param db - DuckDBクライアント
|
|
41
|
+
* @param repoId - リポジトリID (⚠️ IGNORED: FTS is global, not per-repo)
|
|
42
|
+
* @param forceFTS - FTS再構築を強制する場合true
|
|
43
|
+
* @returns FTSが利用可能な場合true
|
|
44
|
+
*/
|
|
45
|
+
export declare function rebuildFTSIfNeeded(db: DuckDBClient, repoId: number, forceFTS?: boolean): Promise<boolean>;
|
|
46
|
+
/**
|
|
47
|
+
* グローバルFTSインデックスを再構築(Fix #4: New API without misleading repoId parameter)
|
|
48
|
+
*
|
|
49
|
+
* NOTE: DuckDB FTS index is GLOBAL (one fts_main_blob schema for entire blob table).
|
|
50
|
+
* This function rebuilds FTS for all repos in the database, with proper status tracking
|
|
51
|
+
* and generation-based dirty flag management to prevent lost concurrent updates.
|
|
52
|
+
*
|
|
53
|
+
* @param db - DuckDBクライアント
|
|
54
|
+
* @param options - オプション設定
|
|
55
|
+
* @param options.forceFTS - FTS再構築を強制する場合true
|
|
56
|
+
* @returns FTSが利用可能な場合true
|
|
57
|
+
*/
|
|
58
|
+
export declare function rebuildGlobalFTS(db: DuckDBClient, options?: {
|
|
59
|
+
forceFTS?: boolean;
|
|
60
|
+
}): Promise<boolean>;
|
|
61
|
+
/**
|
|
62
|
+
* FTS dirty flagを設定(Phase 3: ウォッチモード用)
|
|
63
|
+
* Note: 現在は rebuildFTSIfNeeded() の使用を推奨。この関数は将来のウォッチモード実装用に保持。
|
|
64
|
+
* @param db - DuckDBクライアント
|
|
65
|
+
* @param repoId - リポジトリID
|
|
66
|
+
* @throws Error if database update fails
|
|
67
|
+
*/
|
|
68
|
+
export declare function setFTSDirty(db: DuckDBClient, repoId: number): Promise<void>;
|
|
9
69
|
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/indexer/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/indexer/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAkHtE;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAmD3E;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,YAAY,EAAE,YAAY,UAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAoChG;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAU7E;AA8BD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAW7E;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,YAAY,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,UAAQ,GACf,OAAO,CAAC,OAAO,CAAC,CAKlB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,YAAY,EAChB,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GACnC,OAAO,CAAC,OAAO,CAAC,CAkGlB;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAcjF"}
|