kiri-mcp-server 0.17.0 → 0.18.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.
Files changed (95) hide show
  1. package/README.md +118 -890
  2. package/dist/package.json +4 -2
  3. package/dist/src/indexer/codeintel/dart/adapter.d.ts +36 -0
  4. package/dist/src/indexer/codeintel/dart/adapter.d.ts.map +1 -0
  5. package/dist/src/indexer/codeintel/dart/adapter.js +60 -0
  6. package/dist/src/indexer/codeintel/dart/adapter.js.map +1 -0
  7. package/dist/src/indexer/codeintel/dart/index.d.ts +7 -0
  8. package/dist/src/indexer/codeintel/dart/index.d.ts.map +1 -0
  9. package/dist/src/indexer/codeintel/dart/index.js +7 -0
  10. package/dist/src/indexer/codeintel/dart/index.js.map +1 -0
  11. package/dist/src/indexer/codeintel/index.d.ts +30 -0
  12. package/dist/src/indexer/codeintel/index.d.ts.map +1 -0
  13. package/dist/src/indexer/codeintel/index.js +32 -0
  14. package/dist/src/indexer/codeintel/index.js.map +1 -0
  15. package/dist/src/indexer/codeintel/java/analyzer.d.ts +22 -0
  16. package/dist/src/indexer/codeintel/java/analyzer.d.ts.map +1 -0
  17. package/dist/src/indexer/codeintel/java/analyzer.js +281 -0
  18. package/dist/src/indexer/codeintel/java/analyzer.js.map +1 -0
  19. package/dist/src/indexer/codeintel/java/index.d.ts +7 -0
  20. package/dist/src/indexer/codeintel/java/index.d.ts.map +1 -0
  21. package/dist/src/indexer/codeintel/java/index.js +7 -0
  22. package/dist/src/indexer/codeintel/java/index.js.map +1 -0
  23. package/dist/src/indexer/codeintel/php/analyzer.d.ts +23 -0
  24. package/dist/src/indexer/codeintel/php/analyzer.d.ts.map +1 -0
  25. package/dist/src/indexer/codeintel/php/analyzer.js +342 -0
  26. package/dist/src/indexer/codeintel/php/analyzer.js.map +1 -0
  27. package/dist/src/indexer/codeintel/php/index.d.ts +7 -0
  28. package/dist/src/indexer/codeintel/php/index.d.ts.map +1 -0
  29. package/dist/src/indexer/codeintel/php/index.js +7 -0
  30. package/dist/src/indexer/codeintel/php/index.js.map +1 -0
  31. package/dist/src/indexer/codeintel/registry.d.ts +76 -0
  32. package/dist/src/indexer/codeintel/registry.d.ts.map +1 -0
  33. package/dist/src/indexer/codeintel/registry.js +127 -0
  34. package/dist/src/indexer/codeintel/registry.js.map +1 -0
  35. package/dist/src/indexer/codeintel/rust/analyzer.d.ts +14 -0
  36. package/dist/src/indexer/codeintel/rust/analyzer.d.ts.map +1 -0
  37. package/dist/src/indexer/codeintel/rust/analyzer.js +388 -0
  38. package/dist/src/indexer/codeintel/rust/analyzer.js.map +1 -0
  39. package/dist/src/indexer/codeintel/rust/index.d.ts +5 -0
  40. package/dist/src/indexer/codeintel/rust/index.d.ts.map +1 -0
  41. package/dist/src/indexer/codeintel/rust/index.js +5 -0
  42. package/dist/src/indexer/codeintel/rust/index.js.map +1 -0
  43. package/dist/src/indexer/codeintel/swift/analyzer.d.ts +22 -0
  44. package/dist/src/indexer/codeintel/swift/analyzer.d.ts.map +1 -0
  45. package/dist/src/indexer/codeintel/swift/analyzer.js +271 -0
  46. package/dist/src/indexer/codeintel/swift/analyzer.js.map +1 -0
  47. package/dist/src/indexer/codeintel/swift/index.d.ts +7 -0
  48. package/dist/src/indexer/codeintel/swift/index.d.ts.map +1 -0
  49. package/dist/src/indexer/codeintel/swift/index.js +7 -0
  50. package/dist/src/indexer/codeintel/swift/index.js.map +1 -0
  51. package/dist/src/indexer/codeintel/types.d.ts +114 -0
  52. package/dist/src/indexer/codeintel/types.d.ts.map +1 -0
  53. package/dist/src/indexer/codeintel/types.js +13 -0
  54. package/dist/src/indexer/codeintel/types.js.map +1 -0
  55. package/dist/src/indexer/codeintel/typescript/analyzer.d.ts +22 -0
  56. package/dist/src/indexer/codeintel/typescript/analyzer.d.ts.map +1 -0
  57. package/dist/src/indexer/codeintel/typescript/analyzer.js +210 -0
  58. package/dist/src/indexer/codeintel/typescript/analyzer.js.map +1 -0
  59. package/dist/src/indexer/codeintel/typescript/index.d.ts +7 -0
  60. package/dist/src/indexer/codeintel/typescript/index.d.ts.map +1 -0
  61. package/dist/src/indexer/codeintel/typescript/index.js +7 -0
  62. package/dist/src/indexer/codeintel/typescript/index.js.map +1 -0
  63. package/dist/src/indexer/codeintel/utils.d.ts +91 -0
  64. package/dist/src/indexer/codeintel/utils.d.ts.map +1 -0
  65. package/dist/src/indexer/codeintel/utils.js +145 -0
  66. package/dist/src/indexer/codeintel/utils.js.map +1 -0
  67. package/dist/src/indexer/codeintel.d.ts +33 -26
  68. package/dist/src/indexer/codeintel.d.ts.map +1 -1
  69. package/dist/src/indexer/codeintel.js +56 -1078
  70. package/dist/src/indexer/codeintel.js.map +1 -1
  71. package/package.json +10 -2
  72. package/dist/src/client/model-cli.d.ts +0 -12
  73. package/dist/src/client/model-cli.d.ts.map +0 -1
  74. package/dist/src/client/model-cli.js +0 -247
  75. package/dist/src/client/model-cli.js.map +0 -1
  76. package/dist/src/shared/utils/global-dirs.d.ts +0 -64
  77. package/dist/src/shared/utils/global-dirs.d.ts.map +0 -1
  78. package/dist/src/shared/utils/global-dirs.js +0 -134
  79. package/dist/src/shared/utils/global-dirs.js.map +0 -1
  80. package/dist/src/vss/config.d.ts +0 -66
  81. package/dist/src/vss/config.d.ts.map +0 -1
  82. package/dist/src/vss/config.js +0 -233
  83. package/dist/src/vss/config.js.map +0 -1
  84. package/dist/src/vss/index.d.ts +0 -9
  85. package/dist/src/vss/index.d.ts.map +0 -1
  86. package/dist/src/vss/index.js +0 -9
  87. package/dist/src/vss/index.js.map +0 -1
  88. package/dist/src/vss/model-downloader.d.ts +0 -101
  89. package/dist/src/vss/model-downloader.d.ts.map +0 -1
  90. package/dist/src/vss/model-downloader.js +0 -320
  91. package/dist/src/vss/model-downloader.js.map +0 -1
  92. package/dist/src/vss/provider.d.ts +0 -132
  93. package/dist/src/vss/provider.d.ts.map +0 -1
  94. package/dist/src/vss/provider.js +0 -254
  95. package/dist/src/vss/provider.js.map +0 -1
@@ -0,0 +1,210 @@
1
+ /**
2
+ * TypeScript Language Analyzer
3
+ *
4
+ * TypeScript Compiler APIを使用したシンボル抽出と依存関係解析。
5
+ * TypeScript/TSX両方をサポート。
6
+ */
7
+ import path from "node:path";
8
+ import ts from "typescript";
9
+ import { assignSymbolIds, symbolsToSnippets, createDependencyRecorder } from "../utils.js";
10
+ /**
11
+ * TypeScript Compiler API の位置情報を 1-based 行番号に変換
12
+ */
13
+ function toLineNumber(source, position) {
14
+ return source.getLineAndCharacterOfPosition(position).line + 1;
15
+ }
16
+ /**
17
+ * シグネチャテキストをサニタイズ
18
+ * - ブロック本体 ({...}) を除去
19
+ * - 最大200文字に切り詰め
20
+ * - 最初の行のみを取得
21
+ */
22
+ function sanitizeSignature(source, node) {
23
+ const start = node.getStart(source);
24
+ const endCandidate = node.forEachChild((child) => {
25
+ if (ts.isBlock(child) || ts.isModuleBlock(child)) {
26
+ return child.getFullStart();
27
+ }
28
+ return undefined;
29
+ });
30
+ const end = typeof endCandidate === "number" ? endCandidate : node.getEnd();
31
+ const snippet = source.text.slice(start, Math.min(end, start + 200));
32
+ return snippet.split(/\r?\n/)[0]?.trim().replace(/\s+/g, " ") ?? "";
33
+ }
34
+ /**
35
+ * JSDoc コメントを抽出
36
+ */
37
+ function getDocComment(node) {
38
+ const tags = ts.getJSDocCommentsAndTags(node);
39
+ const parts = [];
40
+ for (const tag of tags) {
41
+ if (ts.isJSDoc(tag)) {
42
+ if (typeof tag.comment === "string") {
43
+ parts.push(tag.comment);
44
+ }
45
+ else if (Array.isArray(tag.comment)) {
46
+ parts.push(tag.comment.map((part) => (typeof part === "string" ? part : part.text)).join(""));
47
+ }
48
+ }
49
+ }
50
+ if (parts.length === 0) {
51
+ return null;
52
+ }
53
+ return parts.join("\n").trim() || null;
54
+ }
55
+ /**
56
+ * AST を走査してシンボルを抽出
57
+ */
58
+ function extractSymbols(source) {
59
+ const results = [];
60
+ const visit = (node) => {
61
+ if (ts.isFunctionDeclaration(node) && node.name) {
62
+ results.push({
63
+ name: node.name.getText(source),
64
+ kind: "function",
65
+ rangeStartLine: toLineNumber(source, node.getStart(source)),
66
+ rangeEndLine: toLineNumber(source, node.getEnd()),
67
+ signature: sanitizeSignature(source, node),
68
+ doc: getDocComment(node),
69
+ });
70
+ }
71
+ else if (ts.isClassDeclaration(node) && node.name) {
72
+ results.push({
73
+ name: node.name.getText(source),
74
+ kind: "class",
75
+ rangeStartLine: toLineNumber(source, node.getStart(source)),
76
+ rangeEndLine: toLineNumber(source, node.getEnd()),
77
+ signature: sanitizeSignature(source, node),
78
+ doc: getDocComment(node),
79
+ });
80
+ }
81
+ else if (ts.isInterfaceDeclaration(node) && node.name) {
82
+ results.push({
83
+ name: node.name.getText(source),
84
+ kind: "interface",
85
+ rangeStartLine: toLineNumber(source, node.getStart(source)),
86
+ rangeEndLine: toLineNumber(source, node.getEnd()),
87
+ signature: sanitizeSignature(source, node),
88
+ doc: getDocComment(node),
89
+ });
90
+ }
91
+ else if (ts.isEnumDeclaration(node) && node.name) {
92
+ results.push({
93
+ name: node.name.getText(source),
94
+ kind: "enum",
95
+ rangeStartLine: toLineNumber(source, node.getStart(source)),
96
+ rangeEndLine: toLineNumber(source, node.getEnd()),
97
+ signature: sanitizeSignature(source, node),
98
+ doc: getDocComment(node),
99
+ });
100
+ }
101
+ else if (ts.isMethodDeclaration(node) && node.name) {
102
+ results.push({
103
+ name: node.name.getText(source),
104
+ kind: "method",
105
+ rangeStartLine: toLineNumber(source, node.getStart(source)),
106
+ rangeEndLine: toLineNumber(source, node.getEnd()),
107
+ signature: sanitizeSignature(source, node),
108
+ doc: getDocComment(node),
109
+ });
110
+ }
111
+ ts.forEachChild(node, visit);
112
+ };
113
+ ts.forEachChild(source, visit);
114
+ return assignSymbolIds(results);
115
+ }
116
+ /**
117
+ * import/export/require 文からモジュールパスを正規化
118
+ * 相対パスはファイルセットと照合してpath、それ以外はpackageとして分類
119
+ */
120
+ function normalizePathSpecifier(sourcePath, specifier, fileSet) {
121
+ if (specifier.startsWith(".") || specifier.startsWith("/")) {
122
+ const baseDir = path.posix.dirname(sourcePath);
123
+ // Strip .js extension if present (ESM imports use .js but source files are .ts)
124
+ const pathWithoutJs = specifier.endsWith(".js") ? specifier.slice(0, -3) : specifier;
125
+ const joined = path.posix.normalize(path.posix.join(baseDir, pathWithoutJs));
126
+ const candidates = [
127
+ joined,
128
+ `${joined}.ts`,
129
+ `${joined}.tsx`,
130
+ `${joined}.js`,
131
+ `${joined}.jsx`,
132
+ `${joined}/index.ts`,
133
+ `${joined}/index.tsx`,
134
+ ];
135
+ for (const candidate of candidates) {
136
+ if (fileSet.has(candidate)) {
137
+ return { kind: "path", target: candidate };
138
+ }
139
+ }
140
+ return null;
141
+ }
142
+ return { kind: "package", target: specifier };
143
+ }
144
+ /**
145
+ * import/export 文を解析して依存関係を収集
146
+ */
147
+ function collectDependencies(sourcePath, source, fileSet) {
148
+ const { record, getDependencies } = createDependencyRecorder();
149
+ const visit = (node) => {
150
+ if (ts.isImportDeclaration(node) &&
151
+ node.moduleSpecifier &&
152
+ ts.isStringLiteral(node.moduleSpecifier)) {
153
+ const target = normalizePathSpecifier(sourcePath, node.moduleSpecifier.text, fileSet);
154
+ if (target) {
155
+ record(target.kind, target.target);
156
+ }
157
+ }
158
+ else if (ts.isExportDeclaration(node) &&
159
+ node.moduleSpecifier &&
160
+ ts.isStringLiteral(node.moduleSpecifier)) {
161
+ const target = normalizePathSpecifier(sourcePath, node.moduleSpecifier.text, fileSet);
162
+ if (target) {
163
+ record(target.kind, target.target);
164
+ }
165
+ }
166
+ else if (ts.isCallExpression(node)) {
167
+ const firstArg = node.arguments[0];
168
+ if (node.expression.getText(source) === "require" &&
169
+ node.arguments.length === 1 &&
170
+ firstArg &&
171
+ ts.isStringLiteral(firstArg)) {
172
+ const target = normalizePathSpecifier(sourcePath, firstArg.text, fileSet);
173
+ if (target) {
174
+ record(target.kind, target.target);
175
+ }
176
+ }
177
+ }
178
+ ts.forEachChild(node, visit);
179
+ };
180
+ ts.forEachChild(source, visit);
181
+ return getDependencies();
182
+ }
183
+ /**
184
+ * TypeScript Language Analyzer
185
+ *
186
+ * LanguageAnalyzer インターフェースを実装し、
187
+ * TypeScript/TSX ファイルのシンボル抽出と依存関係解析を提供
188
+ */
189
+ export class TypeScriptAnalyzer {
190
+ language = "TypeScript";
191
+ async analyze(context) {
192
+ const { pathInRepo, content, fileSet } = context;
193
+ // TypeScript Compiler API でパース
194
+ const sourceFile = ts.createSourceFile(pathInRepo, content, ts.ScriptTarget.Latest, true);
195
+ // シンボル抽出
196
+ const symbols = extractSymbols(sourceFile);
197
+ // シンボルからスニペットを生成
198
+ const snippets = symbolsToSnippets(symbols);
199
+ // 依存関係を収集
200
+ const dependencies = collectDependencies(pathInRepo, sourceFile, fileSet);
201
+ return { symbols, snippets, dependencies };
202
+ }
203
+ }
204
+ /**
205
+ * TypeScript アナライザーのファクトリ関数
206
+ */
207
+ export function createTypeScriptAnalyzer() {
208
+ return new TypeScriptAnalyzer();
209
+ }
210
+ //# sourceMappingURL=analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../../../../../src/indexer/codeintel/typescript/analyzer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,MAAM,YAAY,CAAC;AAU5B,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE3F;;GAEG;AACH,SAAS,YAAY,CAAC,MAAqB,EAAE,QAAgB;IAC3D,OAAO,MAAM,CAAC,6BAA6B,CAAC,QAAQ,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;AACjE,CAAC;AAED;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,MAAqB,EAAE,IAAa;IAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,EAAE;QAC/C,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,OAAO,KAAK,CAAC,YAAY,EAAE,CAAC;QAC9B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5E,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC;IACrE,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;AACtE,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,IAAa;IAClC,MAAM,IAAI,GAAG,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACpC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtC,KAAK,CAAC,IAAI,CACR,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAClF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,MAAqB;IAC3C,MAAM,OAAO,GAA0C,EAAE,CAAC;IAE1D,MAAM,KAAK,GAAG,CAAC,IAAa,EAAQ,EAAE;QACpC,IAAI,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC/B,IAAI,EAAE,UAAU;gBAChB,cAAc,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC3D,YAAY,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjD,SAAS,EAAE,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC;gBAC1C,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC;aACzB,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC/B,IAAI,EAAE,OAAO;gBACb,cAAc,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC3D,YAAY,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjD,SAAS,EAAE,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC;gBAC1C,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC;aACzB,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC/B,IAAI,EAAE,WAAW;gBACjB,cAAc,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC3D,YAAY,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjD,SAAS,EAAE,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC;gBAC1C,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC;aACzB,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC/B,IAAI,EAAE,MAAM;gBACZ,cAAc,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC3D,YAAY,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjD,SAAS,EAAE,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC;gBAC1C,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC;aACzB,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACrD,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC/B,IAAI,EAAE,QAAQ;gBACd,cAAc,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC3D,YAAY,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjD,SAAS,EAAE,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC;gBAC1C,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC;aACzB,CAAC,CAAC;QACL,CAAC;QAED,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEF,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAE/B,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,SAAS,sBAAsB,CAC7B,UAAkB,EAClB,SAAiB,EACjB,OAAoB;IAEpB,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC/C,gFAAgF;QAChF,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACrF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;QAC7E,MAAM,UAAU,GAAG;YACjB,MAAM;YACN,GAAG,MAAM,KAAK;YACd,GAAG,MAAM,MAAM;YACf,GAAG,MAAM,KAAK;YACd,GAAG,MAAM,MAAM;YACf,GAAG,MAAM,WAAW;YACpB,GAAG,MAAM,YAAY;SACtB,CAAC;QACF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YAC7C,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAC1B,UAAkB,EAClB,MAAqB,EACrB,OAAoB;IAEpB,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,wBAAwB,EAAE,CAAC;IAE/D,MAAM,KAAK,GAAG,CAAC,IAAa,EAAQ,EAAE;QACpC,IACE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,eAAe;YACpB,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,EACxC,CAAC;YACD,MAAM,MAAM,GAAG,sBAAsB,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACtF,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;aAAM,IACL,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,eAAe;YACpB,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,EACxC,CAAC;YACD,MAAM,MAAM,GAAG,sBAAsB,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACtF,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;aAAM,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACnC,IACE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,SAAS;gBAC7C,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;gBAC3B,QAAQ;gBACR,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,EAC5B,CAAC;gBACD,MAAM,MAAM,GAAG,sBAAsB,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC1E,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;QACH,CAAC;QAED,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEF,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAE/B,OAAO,eAAe,EAAE,CAAC;AAC3B,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,kBAAkB;IACpB,QAAQ,GAAG,YAAY,CAAC;IAEjC,KAAK,CAAC,OAAO,CAAC,OAAwB;QACpC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAEjD,+BAA+B;QAC/B,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAE1F,SAAS;QACT,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;QAE3C,iBAAiB;QACjB,MAAM,QAAQ,GAAoB,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAE7D,UAAU;QACV,MAAM,YAAY,GAAG,mBAAmB,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAE1E,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;IAC7C,CAAC;CAGF;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO,IAAI,kBAAkB,EAAE,CAAC;AAClC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * TypeScript Analyzer Module
3
+ *
4
+ * TypeScript/TSX ファイル用の言語アナライザーをエクスポート
5
+ */
6
+ export { TypeScriptAnalyzer, createTypeScriptAnalyzer } from "./analyzer.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/indexer/codeintel/typescript/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * TypeScript Analyzer Module
3
+ *
4
+ * TypeScript/TSX ファイル用の言語アナライザーをエクスポート
5
+ */
6
+ export { TypeScriptAnalyzer, createTypeScriptAnalyzer } from "./analyzer.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/indexer/codeintel/typescript/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * 共通ユーティリティ関数
3
+ *
4
+ * 複数の言語アナライザーで共有されるヘルパー関数を提供します。
5
+ */
6
+ import type Parser from "tree-sitter";
7
+ import type { SymbolRecord, SnippetRecord } from "./types.js";
8
+ /**
9
+ * tree-sitter の Point を 1-based の行番号に変換
10
+ *
11
+ * @param position - tree-sitter の位置情報 (0-based row)
12
+ * @returns 1-based の行番号
13
+ */
14
+ export declare function treeSitterPointToLine(position: Parser.Point): number;
15
+ /**
16
+ * シグネチャテキストをサニタイズ
17
+ * - 関数本体 ({...}) を除去
18
+ * - 最大長に切り詰め
19
+ * - 空白を正規化
20
+ *
21
+ * @param nodeText - ノードのテキスト
22
+ * @param options - オプション
23
+ * @returns サニタイズされたシグネチャ
24
+ */
25
+ export declare function sanitizeTreeSitterSignature(nodeText: string, options?: {
26
+ /** trueの場合、切り詰め前に空白を正規化 (Java用) */
27
+ normalizeFirst?: boolean;
28
+ /** 最大文字数 (デフォルト: 200) */
29
+ maxLength?: number;
30
+ }): string;
31
+ /**
32
+ * シンボル配列をソートしてIDを割り当て
33
+ *
34
+ * @param symbols - symbolIdを除いたシンボル配列
35
+ * @returns symbolIdが割り当てられたシンボル配列
36
+ */
37
+ export declare function assignSymbolIds(symbols: Array<Omit<SymbolRecord, "symbolId">>): SymbolRecord[];
38
+ /**
39
+ * シンボル配列からスニペット配列を生成
40
+ *
41
+ * @param symbols - シンボル配列
42
+ * @returns スニペット配列
43
+ */
44
+ export declare function symbolsToSnippets(symbols: SymbolRecord[]): SnippetRecord[];
45
+ /**
46
+ * 依存関係の重複排除ヘルパー
47
+ *
48
+ * @returns record関数とgetDependencies関数を含むオブジェクト
49
+ */
50
+ export declare function createDependencyRecorder(): {
51
+ /** 依存関係を記録 (重複は自動排除) */
52
+ record: (kind: "path" | "package", dst: string, rel?: string) => void;
53
+ /** 記録された依存関係を取得 */
54
+ getDependencies: () => Array<{
55
+ dstKind: "path" | "package";
56
+ dst: string;
57
+ rel: string;
58
+ }>;
59
+ };
60
+ /**
61
+ * ファイル内容から行開始位置の配列を構築
62
+ * offsetToLine()と組み合わせて使用
63
+ *
64
+ * @param content - ファイル内容
65
+ * @returns 各行の開始位置の配列 (0-indexed offset)
66
+ */
67
+ export declare function buildLineStartsArray(content: string): number[];
68
+ /**
69
+ * オフセットから行番号を取得 (バイナリサーチ)
70
+ *
71
+ * @param lineStarts - buildLineStartsArray()で構築した配列
72
+ * @param offset - バイトオフセット
73
+ * @returns 1-based の行番号
74
+ */
75
+ export declare function offsetToLine(lineStarts: number[], offset: number): number;
76
+ /**
77
+ * ドキュメントコメントをクリーンアップ
78
+ *
79
+ * @param text - コメントテキスト
80
+ * @returns クリーンアップされたテキスト
81
+ */
82
+ export declare function cleanDocComment(text: string): string;
83
+ /**
84
+ * フォールバックスニペットを生成
85
+ * シンボルが抽出できない場合にファイル全体をカバー
86
+ *
87
+ * @param totalLines - ファイルの総行数
88
+ * @returns スニペットレコード
89
+ */
90
+ export declare function buildFallbackSnippet(totalLines: number): SnippetRecord;
91
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/indexer/codeintel/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE9D;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAEpE;AAED;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IACP,mCAAmC;IACnC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACf,GACL,MAAM,CAgBR;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,GAAG,YAAY,EAAE,CAK9F;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,aAAa,EAAE,CAM1E;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI;IAC1C,wBAAwB;IACxB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACtE,mBAAmB;IACnB,eAAe,EAAE,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzF,CAYA;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ9D;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAczE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQpD;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,CAEtE"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * 共通ユーティリティ関数
3
+ *
4
+ * 複数の言語アナライザーで共有されるヘルパー関数を提供します。
5
+ */
6
+ /**
7
+ * tree-sitter の Point を 1-based の行番号に変換
8
+ *
9
+ * @param position - tree-sitter の位置情報 (0-based row)
10
+ * @returns 1-based の行番号
11
+ */
12
+ export function treeSitterPointToLine(position) {
13
+ return position.row + 1;
14
+ }
15
+ /**
16
+ * シグネチャテキストをサニタイズ
17
+ * - 関数本体 ({...}) を除去
18
+ * - 最大長に切り詰め
19
+ * - 空白を正規化
20
+ *
21
+ * @param nodeText - ノードのテキスト
22
+ * @param options - オプション
23
+ * @returns サニタイズされたシグネチャ
24
+ */
25
+ export function sanitizeTreeSitterSignature(nodeText, options = {}) {
26
+ const { normalizeFirst = false, maxLength = 200 } = options;
27
+ // 関数本体を除去
28
+ const bodyIndex = nodeText.indexOf("{");
29
+ const signatureText = bodyIndex >= 0 ? nodeText.substring(0, bodyIndex) : nodeText;
30
+ if (normalizeFirst) {
31
+ // Java: 先に空白を正規化してから切り詰め
32
+ const normalized = signatureText.replace(/\s+/g, " ").trim();
33
+ return normalized.substring(0, maxLength);
34
+ }
35
+ else {
36
+ // Swift/PHP: 先に切り詰めてから最初の行を取得
37
+ const truncated = signatureText.substring(0, maxLength);
38
+ return truncated.split(/\r?\n/)[0]?.trim().replace(/\s+/g, " ") ?? "";
39
+ }
40
+ }
41
+ /**
42
+ * シンボル配列をソートしてIDを割り当て
43
+ *
44
+ * @param symbols - symbolIdを除いたシンボル配列
45
+ * @returns symbolIdが割り当てられたシンボル配列
46
+ */
47
+ export function assignSymbolIds(symbols) {
48
+ // 元の配列を変更しないようにコピーしてからソート
49
+ return [...symbols]
50
+ .sort((a, b) => a.rangeStartLine - b.rangeStartLine)
51
+ .map((item, index) => ({ symbolId: index + 1, ...item }));
52
+ }
53
+ /**
54
+ * シンボル配列からスニペット配列を生成
55
+ *
56
+ * @param symbols - シンボル配列
57
+ * @returns スニペット配列
58
+ */
59
+ export function symbolsToSnippets(symbols) {
60
+ return symbols.map((s) => ({
61
+ startLine: s.rangeStartLine,
62
+ endLine: s.rangeEndLine,
63
+ symbolId: s.symbolId,
64
+ }));
65
+ }
66
+ /**
67
+ * 依存関係の重複排除ヘルパー
68
+ *
69
+ * @returns record関数とgetDependencies関数を含むオブジェクト
70
+ */
71
+ export function createDependencyRecorder() {
72
+ const dependencies = new Map();
73
+ return {
74
+ record: (kind, dst, rel = "import") => {
75
+ const key = `${kind}:${dst}`;
76
+ if (!dependencies.has(key)) {
77
+ dependencies.set(key, { dstKind: kind, dst, rel });
78
+ }
79
+ },
80
+ getDependencies: () => Array.from(dependencies.values()),
81
+ };
82
+ }
83
+ /**
84
+ * ファイル内容から行開始位置の配列を構築
85
+ * offsetToLine()と組み合わせて使用
86
+ *
87
+ * @param content - ファイル内容
88
+ * @returns 各行の開始位置の配列 (0-indexed offset)
89
+ */
90
+ export function buildLineStartsArray(content) {
91
+ const lineStarts = [0];
92
+ for (let i = 0; i < content.length; i++) {
93
+ if (content[i] === "\n") {
94
+ lineStarts.push(i + 1);
95
+ }
96
+ }
97
+ return lineStarts;
98
+ }
99
+ /**
100
+ * オフセットから行番号を取得 (バイナリサーチ)
101
+ *
102
+ * @param lineStarts - buildLineStartsArray()で構築した配列
103
+ * @param offset - バイトオフセット
104
+ * @returns 1-based の行番号
105
+ */
106
+ export function offsetToLine(lineStarts, offset) {
107
+ let low = 0;
108
+ let high = lineStarts.length - 1;
109
+ while (low < high) {
110
+ const mid = Math.floor((low + high + 1) / 2);
111
+ if (lineStarts[mid] <= offset) {
112
+ low = mid;
113
+ }
114
+ else {
115
+ high = mid - 1;
116
+ }
117
+ }
118
+ return low + 1; // 1-based
119
+ }
120
+ /**
121
+ * ドキュメントコメントをクリーンアップ
122
+ *
123
+ * @param text - コメントテキスト
124
+ * @returns クリーンアップされたテキスト
125
+ */
126
+ export function cleanDocComment(text) {
127
+ return text
128
+ .replace(/^\/\/\/\s?/gm, "") // Swift /// コメント
129
+ .replace(/^\/\/!\s?/gm, "") // Rust //! コメント
130
+ .replace(/^\/\*\*\s?|\s?\*\/$/g, "") // /** ... */ の開始/終了
131
+ .replace(/^\/\*!\s?|\s?\*\/$/g, "") // /*! ... */ の開始/終了
132
+ .replace(/^\s*\*\s?/gm, "") // 中間の * プレフィックス
133
+ .trim();
134
+ }
135
+ /**
136
+ * フォールバックスニペットを生成
137
+ * シンボルが抽出できない場合にファイル全体をカバー
138
+ *
139
+ * @param totalLines - ファイルの総行数
140
+ * @returns スニペットレコード
141
+ */
142
+ export function buildFallbackSnippet(totalLines) {
143
+ return { startLine: 1, endLine: totalLines, symbolId: null };
144
+ }
145
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/indexer/codeintel/utils.ts"],"names":[],"mappings":"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"}
@@ -1,28 +1,35 @@
1
- export interface SymbolRecord {
2
- symbolId: number;
3
- name: string;
4
- kind: string;
5
- rangeStartLine: number;
6
- rangeEndLine: number;
7
- signature: string | null;
8
- doc: string | null;
9
- }
10
- export interface SnippetRecord {
11
- startLine: number;
12
- endLine: number;
13
- symbolId: number | null;
14
- }
15
- export interface DependencyRecord {
16
- dstKind: "path" | "package";
17
- dst: string;
18
- rel: string;
19
- }
20
- interface AnalysisResult {
21
- symbols: SymbolRecord[];
22
- snippets: SnippetRecord[];
23
- dependencies: DependencyRecord[];
24
- }
1
+ /**
2
+ * Code Intelligence API
3
+ *
4
+ * 言語アナライザーシステムの公開APIを提供するファサード。
5
+ * 実際の解析処理は codeintel/ モジュールの LanguageRegistry に委譲。
6
+ *
7
+ * 使用例:
8
+ * ```typescript
9
+ * import { analyzeSource } from './codeintel.js';
10
+ *
11
+ * const result = await analyzeSource('src/index.ts', 'TypeScript', content, fileSet);
12
+ * ```
13
+ */
14
+ export type { SymbolRecord, SnippetRecord, DependencyRecord, AnalysisContext, AnalysisResult, } from "./codeintel/types.js";
15
+ export { buildFallbackSnippet } from "./codeintel/utils.js";
16
+ import type { AnalysisResult } from "./codeintel/types.js";
17
+ /**
18
+ * ソースコードを解析してシンボル、スニペット、依存関係を抽出
19
+ *
20
+ * @param pathInRepo - リポジトリ内のファイルパス
21
+ * @param lang - 言語名 (TypeScript, Swift, PHP, Java, Dart など)
22
+ * @param content - ファイルコンテンツ
23
+ * @param fileSet - リポジトリ内の全ファイルパスセット (依存関係解決用)
24
+ * @param workspaceRoot - ワークスペースルート (Dart 解析で必須)
25
+ * @returns シンボル、スニペット、依存関係を含む解析結果
26
+ */
25
27
  export declare function analyzeSource(pathInRepo: string, lang: string | null, content: string, fileSet: Set<string>, workspaceRoot?: string): Promise<AnalysisResult>;
26
- export declare function buildFallbackSnippet(totalLines: number): SnippetRecord;
27
- export {};
28
+ /**
29
+ * 全言語アナライザーのリソースをクリーンアップ
30
+ *
31
+ * プロセス終了前に呼び出すことで、
32
+ * Dart Analysis Server などの外部プロセスを適切に終了
33
+ */
34
+ export declare function cleanup(): Promise<void>;
28
35
  //# sourceMappingURL=codeintel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codeintel.d.ts","sourceRoot":"","sources":["../../../src/indexer/codeintel.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,UAAU,cAAc;IACtB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,YAAY,EAAE,gBAAgB,EAAE,CAAC;CAClC;AAglCD,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EACpB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,cAAc,CAAC,CAoIzB;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,CAEtE"}
1
+ {"version":3,"file":"codeintel.d.ts","sourceRoot":"","sources":["../../../src/indexer/codeintel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,YAAY,EACV,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,cAAc,GACf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAS5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAc3D;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EACpB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,cAAc,CAAC,CAgBzB;AAED;;;;;GAKG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAE7C"}