agent-ide 0.5.1 → 0.7.0

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 (149) hide show
  1. package/dist/core/change-signature/change-signature-service.d.ts.map +1 -1
  2. package/dist/core/change-signature/change-signature-service.js +21 -14
  3. package/dist/core/change-signature/change-signature-service.js.map +1 -1
  4. package/dist/core/change-signature/signature-parser.d.ts +0 -16
  5. package/dist/core/change-signature/signature-parser.d.ts.map +1 -1
  6. package/dist/core/change-signature/signature-parser.js +28 -111
  7. package/dist/core/change-signature/signature-parser.js.map +1 -1
  8. package/dist/core/change-signature/types.d.ts +2 -0
  9. package/dist/core/change-signature/types.d.ts.map +1 -1
  10. package/dist/core/change-signature/types.js +2 -0
  11. package/dist/core/change-signature/types.js.map +1 -1
  12. package/dist/core/dead-code/dead-code-detector.d.ts +63 -0
  13. package/dist/core/dead-code/dead-code-detector.d.ts.map +1 -0
  14. package/dist/core/dead-code/dead-code-detector.js +256 -0
  15. package/dist/core/dead-code/dead-code-detector.js.map +1 -0
  16. package/dist/core/dead-code/dead-code-remover.d.ts +133 -0
  17. package/dist/core/dead-code/dead-code-remover.d.ts.map +1 -0
  18. package/dist/core/dead-code/dead-code-remover.js +803 -0
  19. package/dist/core/dead-code/dead-code-remover.js.map +1 -0
  20. package/dist/core/dead-code/index.d.ts +9 -0
  21. package/dist/core/dead-code/index.d.ts.map +1 -0
  22. package/dist/core/dead-code/index.js +8 -0
  23. package/dist/core/dead-code/index.js.map +1 -0
  24. package/dist/core/dead-code/types.d.ts +185 -0
  25. package/dist/core/dead-code/types.d.ts.map +1 -0
  26. package/dist/core/dead-code/types.js +53 -0
  27. package/dist/core/dead-code/types.js.map +1 -0
  28. package/dist/core/dependency/dependency-analyzer.d.ts.map +1 -1
  29. package/dist/core/dependency/dependency-analyzer.js +2 -15
  30. package/dist/core/dependency/dependency-analyzer.js.map +1 -1
  31. package/dist/core/indexing/index-engine.d.ts.map +1 -1
  32. package/dist/core/indexing/index-engine.js +0 -12
  33. package/dist/core/indexing/index-engine.js.map +1 -1
  34. package/dist/core/indexing/types.d.ts +1 -1
  35. package/dist/core/indexing/types.js +1 -1
  36. package/dist/core/indexing/types.js.map +1 -1
  37. package/dist/core/move-file/import-resolver.d.ts +1 -1
  38. package/dist/core/move-file/import-resolver.d.ts.map +1 -1
  39. package/dist/core/move-file/import-resolver.js +1 -9
  40. package/dist/core/move-file/import-resolver.js.map +1 -1
  41. package/dist/core/move-file/move-service.d.ts +8 -0
  42. package/dist/core/move-file/move-service.d.ts.map +1 -1
  43. package/dist/core/move-file/move-service.js +102 -21
  44. package/dist/core/move-file/move-service.js.map +1 -1
  45. package/dist/core/move-member/member-extractor.d.ts +0 -8
  46. package/dist/core/move-member/member-extractor.d.ts.map +1 -1
  47. package/dist/core/move-member/member-extractor.js +0 -49
  48. package/dist/core/move-member/member-extractor.js.map +1 -1
  49. package/dist/core/move-member/move-member-service.js +1 -1
  50. package/dist/core/move-member/move-member-service.js.map +1 -1
  51. package/dist/core/shared/symbol-finder.d.ts +4 -0
  52. package/dist/core/shared/symbol-finder.d.ts.map +1 -1
  53. package/dist/core/shared/symbol-finder.js +41 -0
  54. package/dist/core/shared/symbol-finder.js.map +1 -1
  55. package/dist/core/snapshot/index.d.ts +2 -0
  56. package/dist/core/snapshot/index.d.ts.map +1 -1
  57. package/dist/core/snapshot/index.js +1 -0
  58. package/dist/core/snapshot/index.js.map +1 -1
  59. package/dist/core/snapshot/snapshot-cache.d.ts +103 -0
  60. package/dist/core/snapshot/snapshot-cache.d.ts.map +1 -0
  61. package/dist/core/snapshot/snapshot-cache.js +249 -0
  62. package/dist/core/snapshot/snapshot-cache.js.map +1 -0
  63. package/dist/core/snapshot/snapshot-generator.d.ts +12 -0
  64. package/dist/core/snapshot/snapshot-generator.d.ts.map +1 -1
  65. package/dist/core/snapshot/snapshot-generator.js +61 -3
  66. package/dist/core/snapshot/snapshot-generator.js.map +1 -1
  67. package/dist/infrastructure/formatters/index.d.ts +1 -1
  68. package/dist/infrastructure/formatters/index.d.ts.map +1 -1
  69. package/dist/infrastructure/formatters/index.js.map +1 -1
  70. package/dist/infrastructure/formatters/preview-converter.d.ts +62 -0
  71. package/dist/infrastructure/formatters/preview-converter.d.ts.map +1 -1
  72. package/dist/infrastructure/formatters/preview-converter.js +82 -0
  73. package/dist/infrastructure/formatters/preview-converter.js.map +1 -1
  74. package/dist/infrastructure/formatters/query-formatter.d.ts +16 -0
  75. package/dist/infrastructure/formatters/query-formatter.d.ts.map +1 -1
  76. package/dist/infrastructure/formatters/query-formatter.js +155 -3
  77. package/dist/infrastructure/formatters/query-formatter.js.map +1 -1
  78. package/dist/infrastructure/formatters/query-types.d.ts +73 -2
  79. package/dist/infrastructure/formatters/query-types.d.ts.map +1 -1
  80. package/dist/infrastructure/formatters/types.d.ts +2 -1
  81. package/dist/infrastructure/formatters/types.d.ts.map +1 -1
  82. package/dist/infrastructure/formatters/types.js +1 -0
  83. package/dist/infrastructure/formatters/types.js.map +1 -1
  84. package/dist/interfaces/cli/cli.d.ts.map +1 -1
  85. package/dist/interfaces/cli/cli.js +2 -29
  86. package/dist/interfaces/cli/cli.js.map +1 -1
  87. package/dist/interfaces/cli/commands/change-signature.command.js +3 -3
  88. package/dist/interfaces/cli/commands/change-signature.command.js.map +1 -1
  89. package/dist/interfaces/cli/commands/deadcode.command.d.ts +11 -0
  90. package/dist/interfaces/cli/commands/deadcode.command.d.ts.map +1 -0
  91. package/dist/interfaces/cli/commands/deadcode.command.js +164 -0
  92. package/dist/interfaces/cli/commands/deadcode.command.js.map +1 -0
  93. package/dist/interfaces/cli/commands/index.d.ts +1 -0
  94. package/dist/interfaces/cli/commands/index.d.ts.map +1 -1
  95. package/dist/interfaces/cli/commands/index.js +1 -0
  96. package/dist/interfaces/cli/commands/index.js.map +1 -1
  97. package/dist/interfaces/cli/commands/move.command.js +1 -1
  98. package/dist/interfaces/cli/commands/move.command.js.map +1 -1
  99. package/dist/interfaces/cli/commands/rename.command.js +2 -3
  100. package/dist/interfaces/cli/commands/rename.command.js.map +1 -1
  101. package/dist/interfaces/cli/commands/snapshot.command.d.ts.map +1 -1
  102. package/dist/interfaces/cli/commands/snapshot.command.js +20 -0
  103. package/dist/interfaces/cli/commands/snapshot.command.js.map +1 -1
  104. package/package.json +10 -12
  105. package/dist/plugins/python/dependency-analyzer.d.ts +0 -86
  106. package/dist/plugins/python/dependency-analyzer.d.ts.map +0 -1
  107. package/dist/plugins/python/dependency-analyzer.js +0 -252
  108. package/dist/plugins/python/dependency-analyzer.js.map +0 -1
  109. package/dist/plugins/python/index.d.ts +0 -9
  110. package/dist/plugins/python/index.d.ts.map +0 -1
  111. package/dist/plugins/python/index.js +0 -14
  112. package/dist/plugins/python/index.js.map +0 -1
  113. package/dist/plugins/python/parser.d.ts +0 -117
  114. package/dist/plugins/python/parser.d.ts.map +0 -1
  115. package/dist/plugins/python/parser.js +0 -414
  116. package/dist/plugins/python/parser.js.map +0 -1
  117. package/dist/plugins/python/symbol-extractor.d.ts +0 -108
  118. package/dist/plugins/python/symbol-extractor.d.ts.map +0 -1
  119. package/dist/plugins/python/symbol-extractor.js +0 -389
  120. package/dist/plugins/python/symbol-extractor.js.map +0 -1
  121. package/dist/plugins/python/tree-sitter-bridge.d.ts +0 -57
  122. package/dist/plugins/python/tree-sitter-bridge.d.ts.map +0 -1
  123. package/dist/plugins/python/tree-sitter-bridge.js +0 -269
  124. package/dist/plugins/python/tree-sitter-bridge.js.map +0 -1
  125. package/dist/plugins/python/types.d.ts +0 -191
  126. package/dist/plugins/python/types.d.ts.map +0 -1
  127. package/dist/plugins/python/types.js +0 -279
  128. package/dist/plugins/python/types.js.map +0 -1
  129. package/dist/plugins/swift/dependency-analyzer.d.ts +0 -33
  130. package/dist/plugins/swift/dependency-analyzer.d.ts.map +0 -1
  131. package/dist/plugins/swift/dependency-analyzer.js +0 -95
  132. package/dist/plugins/swift/dependency-analyzer.js.map +0 -1
  133. package/dist/plugins/swift/index.d.ts +0 -14
  134. package/dist/plugins/swift/index.d.ts.map +0 -1
  135. package/dist/plugins/swift/index.js +0 -19
  136. package/dist/plugins/swift/index.js.map +0 -1
  137. package/dist/plugins/swift/parser.d.ts +0 -164
  138. package/dist/plugins/swift/parser.d.ts.map +0 -1
  139. package/dist/plugins/swift/parser.js +0 -688
  140. package/dist/plugins/swift/parser.js.map +0 -1
  141. package/dist/plugins/swift/swift-bridge/swift-parser +0 -0
  142. package/dist/plugins/swift/symbol-extractor.d.ts +0 -46
  143. package/dist/plugins/swift/symbol-extractor.d.ts.map +0 -1
  144. package/dist/plugins/swift/symbol-extractor.js +0 -187
  145. package/dist/plugins/swift/symbol-extractor.js.map +0 -1
  146. package/dist/plugins/swift/types.d.ts +0 -149
  147. package/dist/plugins/swift/types.d.ts.map +0 -1
  148. package/dist/plugins/swift/types.js +0 -251
  149. package/dist/plugins/swift/types.js.map +0 -1
@@ -1,269 +0,0 @@
1
- /**
2
- * tree-sitter 橋接層
3
- * 負責 Parser 初始化和節點轉換
4
- */
5
- import { Parser as TreeSitterParser, Language as TreeSitterLanguage } from 'web-tree-sitter';
6
- import { createRequire } from 'module';
7
- import path from 'path';
8
- import { PythonNodeKind, nodeTypeToKind, tsNodeToRange } from './types.js';
9
- const require = createRequire(import.meta.url);
10
- /** 單例 Parser 實例 */
11
- let parserInstance = null;
12
- /** Python 語言實例 */
13
- let pythonLanguage = null;
14
- /** 初始化狀態 */
15
- let isInitialized = false;
16
- let initializationPromise = null;
17
- /**
18
- * 初始化 tree-sitter Parser
19
- * 使用單例模式,確保只初始化一次
20
- */
21
- export async function initializeParser() {
22
- if (parserInstance && isInitialized) {
23
- return parserInstance;
24
- }
25
- // 避免重複初始化
26
- if (initializationPromise) {
27
- await initializationPromise;
28
- return parserInstance;
29
- }
30
- initializationPromise = (async () => {
31
- await TreeSitterParser.init();
32
- parserInstance = new TreeSitterParser();
33
- // 載入 Python 語言 WASM
34
- const wasmPath = resolveWasmPath();
35
- pythonLanguage = await TreeSitterLanguage.load(wasmPath);
36
- parserInstance.setLanguage(pythonLanguage);
37
- isInitialized = true;
38
- })();
39
- await initializationPromise;
40
- return parserInstance;
41
- }
42
- /**
43
- * 解析 WASM 檔案路徑
44
- */
45
- function resolveWasmPath() {
46
- // 嘗試從 node_modules 解析
47
- try {
48
- const treeSitterPythonPath = require.resolve('tree-sitter-python');
49
- // require.resolve 返回 bindings/node/index.js,需要往上找到套件根目錄
50
- const bindingsDir = path.dirname(treeSitterPythonPath); // bindings/node
51
- const packageDir = path.dirname(path.dirname(bindingsDir)); // 套件根目錄
52
- return path.join(packageDir, 'tree-sitter-python.wasm');
53
- }
54
- catch {
55
- // 備用路徑
56
- return path.join(process.cwd(), 'node_modules', 'tree-sitter-python', 'tree-sitter-python.wasm');
57
- }
58
- }
59
- /**
60
- * 獲取 Parser 實例
61
- * @throws 如果 Parser 未初始化
62
- */
63
- export function getParser() {
64
- if (!parserInstance || !isInitialized) {
65
- throw new Error('Parser 尚未初始化,請先調用 initializeParser()');
66
- }
67
- return parserInstance;
68
- }
69
- /**
70
- * 檢查 Parser 是否已初始化
71
- */
72
- export function isParserInitialized() {
73
- return isInitialized && parserInstance !== null;
74
- }
75
- /**
76
- * 解析 Python 程式碼
77
- */
78
- export async function parseCode(code) {
79
- const parser = await initializeParser();
80
- const tree = parser.parse(code);
81
- if (!tree) {
82
- throw new Error('解析失敗:無法解析程式碼');
83
- }
84
- return tree;
85
- }
86
- /**
87
- * 轉換 tree-sitter Node 為 PythonASTNode
88
- */
89
- export function convertNode(node, sourceFile) {
90
- const type = node.type;
91
- const range = tsNodeToRange(node);
92
- const pythonKind = nodeTypeToKind(type);
93
- // 提取節點屬性
94
- const properties = {
95
- nodeType: type,
96
- isNamed: node.isNamed,
97
- childCount: node.childCount,
98
- namedChildCount: node.namedChildCount
99
- };
100
- // 提取名稱(如果存在)
101
- const nameNode = node.childForFieldName('name');
102
- if (nameNode) {
103
- properties.name = nameNode.text;
104
- }
105
- // 提取型別註解(如果存在)
106
- let typeAnnotation;
107
- const typeNode = node.childForFieldName('type')
108
- || node.childForFieldName('return_type');
109
- if (typeNode) {
110
- typeAnnotation = typeNode.text;
111
- properties.typeAnnotation = typeAnnotation;
112
- }
113
- // 提取裝飾器(如果是 decorated_definition)
114
- let decorators;
115
- if (type === PythonNodeKind.DecoratedDefinition) {
116
- decorators = extractDecorators(node);
117
- if (decorators.length > 0) {
118
- properties.decorators = decorators;
119
- }
120
- }
121
- // 遞歸轉換子節點
122
- const children = [];
123
- for (let i = 0; i < node.namedChildCount; i++) {
124
- const childNode = node.namedChild(i);
125
- if (childNode) {
126
- children.push(convertNode(childNode, sourceFile));
127
- }
128
- }
129
- const astNode = {
130
- type,
131
- range,
132
- properties,
133
- children,
134
- treeSitterNode: node,
135
- pythonKind,
136
- ...(decorators ? { decorators } : {}),
137
- ...(typeAnnotation ? { typeAnnotation } : {})
138
- };
139
- // 設定父子關係
140
- for (const child of children) {
141
- child.parent = astNode;
142
- }
143
- return astNode;
144
- }
145
- /**
146
- * 從 decorated_definition 節點提取裝飾器
147
- */
148
- function extractDecorators(node) {
149
- const decorators = [];
150
- for (let i = 0; i < node.childCount; i++) {
151
- const child = node.child(i);
152
- if (child?.type === 'decorator') {
153
- // 提取裝飾器名稱(去掉 @)
154
- const decoratorText = child.text.replace(/^@/, '').trim();
155
- // 只取函數名稱部分(不含參數)
156
- const nameMatch = decoratorText.match(/^[\w.]+/);
157
- if (nameMatch) {
158
- decorators.push(nameMatch[0]);
159
- }
160
- }
161
- }
162
- return decorators;
163
- }
164
- /**
165
- * 創建 PythonAST
166
- */
167
- export function createPythonAST(tree, sourceFile, parseTime) {
168
- const root = convertNode(tree.rootNode, sourceFile);
169
- const nodeCount = countNodes(root);
170
- const metadata = {
171
- language: 'python',
172
- version: '3.8+',
173
- parserOptions: {},
174
- parseTime,
175
- nodeCount
176
- };
177
- return {
178
- sourceFile,
179
- root,
180
- metadata,
181
- tree
182
- };
183
- }
184
- /**
185
- * 計算節點總數
186
- */
187
- function countNodes(node) {
188
- let count = 1;
189
- for (const child of node.children) {
190
- count += countNodes(child);
191
- }
192
- return count;
193
- }
194
- /**
195
- * 遍歷 AST 節點
196
- */
197
- export function traverseAST(node, callback) {
198
- const shouldContinue = callback(node);
199
- if (shouldContinue === false) {
200
- return;
201
- }
202
- for (const child of node.children) {
203
- traverseAST(child, callback);
204
- }
205
- }
206
- /**
207
- * 查找特定類型的節點
208
- */
209
- export function findNodesByKind(root, kind) {
210
- const result = [];
211
- traverseAST(root, (node) => {
212
- if (node.pythonKind === kind) {
213
- result.push(node);
214
- }
215
- });
216
- return result;
217
- }
218
- /**
219
- * 查找包含指定位置的節點
220
- */
221
- export function findNodeAtPosition(root, line, column) {
222
- let result = null;
223
- traverseAST(root, (node) => {
224
- const { start, end } = node.range;
225
- const isInRange = ((line > start.line || (line === start.line && column >= start.column))
226
- && (line < end.line || (line === end.line && column <= end.column)));
227
- if (isInRange) {
228
- result = node;
229
- }
230
- });
231
- return result;
232
- }
233
- /**
234
- * 獲取節點的文字內容
235
- */
236
- export function getNodeText(node) {
237
- return node.treeSitterNode.text;
238
- }
239
- /**
240
- * 獲取節點的指定欄位
241
- */
242
- export function getFieldNode(node, fieldName) {
243
- const fieldNode = node.treeSitterNode.childForFieldName(fieldName);
244
- if (!fieldNode) {
245
- return null;
246
- }
247
- // 在 children 中找到對應的 PythonASTNode
248
- for (const child of node.children) {
249
- const pythonChild = child;
250
- if (pythonChild.treeSitterNode === fieldNode) {
251
- return pythonChild;
252
- }
253
- }
254
- // 如果在 children 中找不到,可能是匿名節點,需要重新轉換
255
- return convertNode(fieldNode, '');
256
- }
257
- /**
258
- * 釋放 Parser 資源
259
- */
260
- export async function disposeParser() {
261
- if (parserInstance) {
262
- parserInstance.delete();
263
- parserInstance = null;
264
- }
265
- pythonLanguage = null;
266
- isInitialized = false;
267
- initializationPromise = null;
268
- }
269
- //# sourceMappingURL=tree-sitter-bridge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tree-sitter-bridge.js","sourceRoot":"","sources":["../../../src/plugins/python/tree-sitter-bridge.ts"],"names":[],"mappings":"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"}
@@ -1,191 +0,0 @@
1
- /**
2
- * Python Parser 特定型別定義
3
- */
4
- import type { AST, ASTNode, Position, Range } from '../../shared/types/index.js';
5
- import { SymbolType } from '../../shared/types/index.js';
6
- import type { Node as TreeSitterNode, Tree as TreeSitterTree, Point as TreeSitterPoint } from 'web-tree-sitter';
7
- /**
8
- * Python AST 節點類型(對應 tree-sitter-python)
9
- */
10
- export declare enum PythonNodeKind {
11
- Module = "module",
12
- ClassDefinition = "class_definition",
13
- FunctionDefinition = "function_definition",
14
- AsyncFunctionDefinition = "async_function_definition",
15
- DecoratedDefinition = "decorated_definition",
16
- Decorator = "decorator",
17
- ImportStatement = "import_statement",
18
- ImportFromStatement = "import_from_statement",
19
- Assignment = "assignment",
20
- AugmentedAssignment = "augmented_assignment",
21
- AnnotatedAssignment = "annotated_assignment",
22
- GlobalStatement = "global_statement",
23
- NonlocalStatement = "nonlocal_statement",
24
- ExpressionStatement = "expression_statement",
25
- ReturnStatement = "return_statement",
26
- PassStatement = "pass_statement",
27
- BreakStatement = "break_statement",
28
- ContinueStatement = "continue_statement",
29
- RaiseStatement = "raise_statement",
30
- AssertStatement = "assert_statement",
31
- DeleteStatement = "delete_statement",
32
- PrintStatement = "print_statement",
33
- IfStatement = "if_statement",
34
- ElifClause = "elif_clause",
35
- ElseClause = "else_clause",
36
- ForStatement = "for_statement",
37
- WhileStatement = "while_statement",
38
- TryStatement = "try_statement",
39
- ExceptClause = "except_clause",
40
- FinallyClause = "finally_clause",
41
- WithStatement = "with_statement",
42
- AsyncForStatement = "async_for_statement",
43
- AsyncWithStatement = "async_with_statement",
44
- MatchStatement = "match_statement",
45
- CaseClause = "case_clause",
46
- CasePattern = "case_pattern",
47
- BinaryOperator = "binary_operator",
48
- UnaryOperator = "unary_operator",
49
- BooleanOperator = "boolean_operator",
50
- ComparisonOperator = "comparison_operator",
51
- ConditionalExpression = "conditional_expression",
52
- LambdaExpression = "lambda",
53
- Call = "call",
54
- Attribute = "attribute",
55
- Subscript = "subscript",
56
- Slice = "slice",
57
- List = "list",
58
- Dictionary = "dictionary",
59
- Set = "set",
60
- Tuple = "tuple",
61
- ListComprehension = "list_comprehension",
62
- DictionaryComprehension = "dictionary_comprehension",
63
- SetComprehension = "set_comprehension",
64
- GeneratorExpression = "generator_expression",
65
- Identifier = "identifier",
66
- Integer = "integer",
67
- Float = "float",
68
- String = "string",
69
- ConcatenatedString = "concatenated_string",
70
- True = "true",
71
- False = "false",
72
- None = "none",
73
- Comment = "comment",
74
- Parameters = "parameters",
75
- Parameter = "parameter",
76
- DefaultParameter = "default_parameter",
77
- TypedParameter = "typed_parameter",
78
- TypedDefaultParameter = "typed_default_parameter",
79
- ListSplatPattern = "list_splat_pattern",
80
- DictionarySplatPattern = "dictionary_splat_pattern",
81
- KeywordArgument = "keyword_argument",
82
- Type = "type",
83
- Block = "block",
84
- ArgumentList = "argument_list",
85
- DottedName = "dotted_name",
86
- AliasedImport = "aliased_import",
87
- WildcardImport = "wildcard_import",
88
- RelativeImport = "relative_import",
89
- ImportPrefix = "import_prefix"
90
- }
91
- /**
92
- * Python AST 節點包裝器
93
- */
94
- export interface PythonASTNode extends ASTNode {
95
- /** tree-sitter 原始節點 */
96
- readonly treeSitterNode: TreeSitterNode;
97
- /** Python 節點類型 */
98
- readonly pythonKind: PythonNodeKind;
99
- /** 裝飾器列表(如果有) */
100
- readonly decorators?: readonly string[];
101
- /** 型別註解(如果有) */
102
- readonly typeAnnotation?: string;
103
- }
104
- /**
105
- * Python AST 包裝器
106
- */
107
- export interface PythonAST extends AST {
108
- readonly root: PythonASTNode;
109
- /** tree-sitter 解析樹 */
110
- readonly tree: TreeSitterTree;
111
- }
112
- /**
113
- * Python 符號類型映射
114
- */
115
- export declare const PYTHON_SYMBOL_TYPE_MAP: Partial<Record<PythonNodeKind, SymbolType>>;
116
- /**
117
- * 控制流節點複雜度權重(用於複雜度分析)
118
- */
119
- export declare const COMPLEXITY_WEIGHTS: Partial<Record<PythonNodeKind, number>>;
120
- /**
121
- * 位置轉換:tree-sitter Point → Position
122
- */
123
- export declare function tsPointToPosition(point: TreeSitterPoint, offset: number): Position;
124
- /**
125
- * 範圍轉換:tree-sitter Node → Range
126
- */
127
- export declare function tsNodeToRange(node: TreeSitterNode): Range;
128
- /**
129
- * 節點類型字串轉 PythonNodeKind
130
- */
131
- export declare function nodeTypeToKind(type: string): PythonNodeKind;
132
- /**
133
- * 檢查路徑是否為相對導入
134
- */
135
- export declare function isRelativePath(path: string): boolean;
136
- /**
137
- * 驗證 Python 識別符名稱
138
- *
139
- * Python 3 支援 Unicode 識別符(PEP 3131):
140
- * - 第一個字元:Unicode 類別 ID_Start 或底線
141
- * - 後續字元:Unicode 類別 ID_Continue
142
- *
143
- * 範例:
144
- * - 用戶名稱 = "John" # 合法
145
- * - データ = 123 # 合法(日文)
146
- */
147
- export declare function isValidPythonIdentifier(name: string): boolean;
148
- /**
149
- * 檢查是否為 Python 保留字
150
- */
151
- export declare function isPythonReservedWord(name: string): boolean;
152
- /**
153
- * Python 解析錯誤類別
154
- */
155
- export declare class PythonParseError extends Error {
156
- readonly filePath?: string | undefined;
157
- readonly position?: Position | undefined;
158
- constructor(message: string, filePath?: string | undefined, position?: Position | undefined);
159
- }
160
- /**
161
- * 創建解析錯誤
162
- */
163
- export declare function createParseError(message: string, filePath?: string, position?: Position): PythonParseError;
164
- /**
165
- * Python 常用內建函數(用於安全檢查)
166
- */
167
- export declare const DANGEROUS_FUNCTIONS: Set<string>;
168
- /**
169
- * Python 安全性相關模組
170
- */
171
- export declare const SECURITY_SENSITIVE_MODULES: Set<string>;
172
- /**
173
- * PEP8 命名規範模式
174
- */
175
- export declare const NAMING_PATTERNS: {
176
- /** snake_case:變數、函式、方法 */
177
- snakeCase: RegExp;
178
- /** UPPER_SNAKE_CASE:常量 */
179
- upperSnakeCase: RegExp;
180
- /** PascalCase:類別 */
181
- pascalCase: RegExp;
182
- /** _private:私有成員 */
183
- privatePrefix: RegExp;
184
- /** __dunder__:特殊方法 */
185
- dunderPattern: RegExp;
186
- };
187
- /**
188
- * 檢查是否為測試檔案
189
- */
190
- export declare function isPythonTestFile(filePath: string): boolean;
191
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/plugins/python/types.ts"],"names":[],"mappings":"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"}