agent-ide 0.1.9 → 0.2.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 (227) hide show
  1. package/README.md +103 -17
  2. package/dist/application/services/module-coordinator.service.d.ts +0 -1
  3. package/dist/application/services/module-coordinator.service.d.ts.map +1 -1
  4. package/dist/application/services/module-coordinator.service.js +2 -8
  5. package/dist/application/services/module-coordinator.service.js.map +1 -1
  6. package/dist/core/analysis/index.d.ts +1 -4
  7. package/dist/core/analysis/index.d.ts.map +1 -1
  8. package/dist/core/analysis/index.js +1 -7
  9. package/dist/core/analysis/index.js.map +1 -1
  10. package/dist/core/dependency/dependency-analyzer.d.ts.map +1 -1
  11. package/dist/core/dependency/dependency-analyzer.js +10 -0
  12. package/dist/core/dependency/dependency-analyzer.js.map +1 -1
  13. package/dist/core/indexing/index-engine.d.ts +4 -0
  14. package/dist/core/indexing/index-engine.d.ts.map +1 -1
  15. package/dist/core/indexing/index-engine.js +25 -1
  16. package/dist/core/indexing/index-engine.js.map +1 -1
  17. package/dist/core/indexing/symbol-index.d.ts +4 -0
  18. package/dist/core/indexing/symbol-index.d.ts.map +1 -1
  19. package/dist/core/indexing/symbol-index.js +17 -0
  20. package/dist/core/indexing/symbol-index.js.map +1 -1
  21. package/dist/core/move/import-resolver.d.ts.map +1 -1
  22. package/dist/core/move/import-resolver.js +8 -0
  23. package/dist/core/move/import-resolver.js.map +1 -1
  24. package/dist/core/move/move-service.js +7 -7
  25. package/dist/core/move/move-service.js.map +1 -1
  26. package/dist/core/refactor/swift-extractor.d.ts +98 -0
  27. package/dist/core/refactor/swift-extractor.d.ts.map +1 -0
  28. package/dist/core/refactor/swift-extractor.js +283 -0
  29. package/dist/core/refactor/swift-extractor.js.map +1 -0
  30. package/dist/core/rename/reference-updater.d.ts.map +1 -1
  31. package/dist/core/rename/reference-updater.js +16 -8
  32. package/dist/core/rename/reference-updater.js.map +1 -1
  33. package/dist/core/search/engines/text-engine.js +1 -1
  34. package/dist/core/search/engines/text-engine.js.map +1 -1
  35. package/dist/core/shit-score/grading.d.ts +39 -0
  36. package/dist/core/shit-score/grading.d.ts.map +1 -0
  37. package/dist/core/shit-score/grading.js +253 -0
  38. package/dist/core/shit-score/grading.js.map +1 -0
  39. package/dist/core/shit-score/index.d.ts +9 -0
  40. package/dist/core/shit-score/index.d.ts.map +1 -0
  41. package/dist/core/shit-score/index.js +8 -0
  42. package/dist/core/shit-score/index.js.map +1 -0
  43. package/dist/core/shit-score/score-calculator.d.ts +75 -0
  44. package/dist/core/shit-score/score-calculator.d.ts.map +1 -0
  45. package/dist/core/shit-score/score-calculator.js +240 -0
  46. package/dist/core/shit-score/score-calculator.js.map +1 -0
  47. package/dist/core/shit-score/shit-score-analyzer.d.ts +84 -0
  48. package/dist/core/shit-score/shit-score-analyzer.d.ts.map +1 -0
  49. package/dist/core/shit-score/shit-score-analyzer.js +595 -0
  50. package/dist/core/shit-score/shit-score-analyzer.js.map +1 -0
  51. package/dist/core/shit-score/types.d.ts +231 -0
  52. package/dist/core/shit-score/types.d.ts.map +1 -0
  53. package/dist/core/shit-score/types.js +73 -0
  54. package/dist/core/shit-score/types.js.map +1 -0
  55. package/dist/core/snapshot/code-compressor.d.ts +39 -0
  56. package/dist/core/snapshot/code-compressor.d.ts.map +1 -0
  57. package/dist/core/snapshot/code-compressor.js +211 -0
  58. package/dist/core/snapshot/code-compressor.js.map +1 -0
  59. package/dist/core/snapshot/config.d.ts +60 -0
  60. package/dist/core/snapshot/config.d.ts.map +1 -0
  61. package/dist/core/snapshot/config.js +136 -0
  62. package/dist/core/snapshot/config.js.map +1 -0
  63. package/dist/core/snapshot/index.d.ts +23 -0
  64. package/dist/core/snapshot/index.d.ts.map +1 -0
  65. package/dist/core/snapshot/index.js +27 -0
  66. package/dist/core/snapshot/index.js.map +1 -0
  67. package/dist/core/snapshot/snapshot-differ.d.ts +54 -0
  68. package/dist/core/snapshot/snapshot-differ.d.ts.map +1 -0
  69. package/dist/core/snapshot/snapshot-differ.js +262 -0
  70. package/dist/core/snapshot/snapshot-differ.js.map +1 -0
  71. package/dist/core/snapshot/snapshot-engine.d.ts +94 -0
  72. package/dist/core/snapshot/snapshot-engine.d.ts.map +1 -0
  73. package/dist/core/snapshot/snapshot-engine.js +492 -0
  74. package/dist/core/snapshot/snapshot-engine.js.map +1 -0
  75. package/dist/core/snapshot/types.d.ts +216 -0
  76. package/dist/core/snapshot/types.d.ts.map +1 -0
  77. package/dist/core/snapshot/types.js +79 -0
  78. package/dist/core/snapshot/types.js.map +1 -0
  79. package/dist/infrastructure/parser/analysis-types.d.ts +198 -0
  80. package/dist/infrastructure/parser/analysis-types.d.ts.map +1 -0
  81. package/dist/infrastructure/parser/analysis-types.js +6 -0
  82. package/dist/infrastructure/parser/analysis-types.js.map +1 -0
  83. package/dist/infrastructure/parser/base.d.ts +36 -0
  84. package/dist/infrastructure/parser/base.d.ts.map +1 -1
  85. package/dist/infrastructure/parser/base.js +72 -0
  86. package/dist/infrastructure/parser/base.js.map +1 -1
  87. package/dist/infrastructure/parser/index.d.ts +1 -0
  88. package/dist/infrastructure/parser/index.d.ts.map +1 -1
  89. package/dist/infrastructure/parser/index.js.map +1 -1
  90. package/dist/infrastructure/parser/interface.d.ts +63 -0
  91. package/dist/infrastructure/parser/interface.d.ts.map +1 -1
  92. package/dist/infrastructure/parser/interface.js +11 -1
  93. package/dist/infrastructure/parser/interface.js.map +1 -1
  94. package/dist/interfaces/cli/cli.d.ts +24 -0
  95. package/dist/interfaces/cli/cli.d.ts.map +1 -1
  96. package/dist/interfaces/cli/cli.js +1483 -157
  97. package/dist/interfaces/cli/cli.js.map +1 -1
  98. package/dist/plugins/javascript/parser.d.ts +41 -0
  99. package/dist/plugins/javascript/parser.d.ts.map +1 -1
  100. package/dist/plugins/javascript/parser.js +284 -0
  101. package/dist/plugins/javascript/parser.js.map +1 -1
  102. package/dist/plugins/swift/analyzers/complexity-analyzer.d.ts +41 -0
  103. package/dist/plugins/swift/analyzers/complexity-analyzer.d.ts.map +1 -0
  104. package/dist/plugins/swift/analyzers/complexity-analyzer.js +206 -0
  105. package/dist/plugins/swift/analyzers/complexity-analyzer.js.map +1 -0
  106. package/dist/plugins/swift/analyzers/duplication-detector.d.ts +89 -0
  107. package/dist/plugins/swift/analyzers/duplication-detector.d.ts.map +1 -0
  108. package/dist/plugins/swift/analyzers/duplication-detector.js +271 -0
  109. package/dist/plugins/swift/analyzers/duplication-detector.js.map +1 -0
  110. package/dist/plugins/swift/analyzers/error-handling-checker.d.ts +34 -0
  111. package/dist/plugins/swift/analyzers/error-handling-checker.d.ts.map +1 -0
  112. package/dist/plugins/swift/analyzers/error-handling-checker.js +135 -0
  113. package/dist/plugins/swift/analyzers/error-handling-checker.js.map +1 -0
  114. package/dist/plugins/swift/analyzers/naming-checker.d.ts +47 -0
  115. package/dist/plugins/swift/analyzers/naming-checker.d.ts.map +1 -0
  116. package/dist/plugins/swift/analyzers/naming-checker.js +161 -0
  117. package/dist/plugins/swift/analyzers/naming-checker.js.map +1 -0
  118. package/dist/plugins/swift/analyzers/pattern-detector.d.ts +78 -0
  119. package/dist/plugins/swift/analyzers/pattern-detector.d.ts.map +1 -0
  120. package/dist/plugins/swift/analyzers/pattern-detector.js +247 -0
  121. package/dist/plugins/swift/analyzers/pattern-detector.js.map +1 -0
  122. package/dist/plugins/swift/analyzers/security-checker.d.ts +38 -0
  123. package/dist/plugins/swift/analyzers/security-checker.d.ts.map +1 -0
  124. package/dist/plugins/swift/analyzers/security-checker.js +135 -0
  125. package/dist/plugins/swift/analyzers/security-checker.js.map +1 -0
  126. package/dist/plugins/swift/analyzers/test-coverage-checker.d.ts +26 -0
  127. package/dist/plugins/swift/analyzers/test-coverage-checker.d.ts.map +1 -0
  128. package/dist/plugins/swift/analyzers/test-coverage-checker.js +63 -0
  129. package/dist/plugins/swift/analyzers/test-coverage-checker.js.map +1 -0
  130. package/dist/plugins/swift/analyzers/type-safety-checker.d.ts +41 -0
  131. package/dist/plugins/swift/analyzers/type-safety-checker.d.ts.map +1 -0
  132. package/dist/plugins/swift/analyzers/type-safety-checker.js +121 -0
  133. package/dist/plugins/swift/analyzers/type-safety-checker.js.map +1 -0
  134. package/dist/plugins/swift/analyzers/unused-symbol-detector.d.ts +38 -0
  135. package/dist/plugins/swift/analyzers/unused-symbol-detector.d.ts.map +1 -0
  136. package/dist/plugins/swift/analyzers/unused-symbol-detector.js +211 -0
  137. package/dist/plugins/swift/analyzers/unused-symbol-detector.js.map +1 -0
  138. package/dist/plugins/swift/dependency-analyzer.d.ts +33 -0
  139. package/dist/plugins/swift/dependency-analyzer.d.ts.map +1 -0
  140. package/dist/plugins/swift/dependency-analyzer.js +95 -0
  141. package/dist/plugins/swift/dependency-analyzer.js.map +1 -0
  142. package/dist/plugins/swift/index.d.ts +14 -0
  143. package/dist/plugins/swift/index.d.ts.map +1 -0
  144. package/dist/plugins/swift/index.js +19 -0
  145. package/dist/plugins/swift/index.js.map +1 -0
  146. package/dist/plugins/swift/parser.d.ts +160 -0
  147. package/dist/plugins/swift/parser.d.ts.map +1 -0
  148. package/dist/plugins/swift/parser.js +670 -0
  149. package/dist/plugins/swift/parser.js.map +1 -0
  150. package/dist/plugins/swift/swift-bridge/swift-parser +0 -0
  151. package/dist/plugins/swift/symbol-extractor.d.ts +46 -0
  152. package/dist/plugins/swift/symbol-extractor.d.ts.map +1 -0
  153. package/dist/plugins/swift/symbol-extractor.js +187 -0
  154. package/dist/plugins/swift/symbol-extractor.js.map +1 -0
  155. package/dist/plugins/swift/types.d.ts +137 -0
  156. package/dist/plugins/swift/types.d.ts.map +1 -0
  157. package/dist/plugins/swift/types.js +212 -0
  158. package/dist/plugins/swift/types.js.map +1 -0
  159. package/dist/plugins/typescript/analyzers/complexity-analyzer.d.ts +39 -0
  160. package/dist/plugins/typescript/analyzers/complexity-analyzer.d.ts.map +1 -0
  161. package/dist/plugins/typescript/analyzers/complexity-analyzer.js +196 -0
  162. package/dist/plugins/typescript/analyzers/complexity-analyzer.js.map +1 -0
  163. package/dist/{core/analysis → plugins/typescript/analyzers}/duplication-detector.d.ts +34 -3
  164. package/dist/plugins/typescript/analyzers/duplication-detector.d.ts.map +1 -0
  165. package/dist/plugins/typescript/analyzers/duplication-detector.js +695 -0
  166. package/dist/plugins/typescript/analyzers/duplication-detector.js.map +1 -0
  167. package/dist/plugins/typescript/analyzers/error-handling-checker.d.ts +26 -0
  168. package/dist/plugins/typescript/analyzers/error-handling-checker.d.ts.map +1 -0
  169. package/dist/plugins/typescript/analyzers/error-handling-checker.js +84 -0
  170. package/dist/plugins/typescript/analyzers/error-handling-checker.js.map +1 -0
  171. package/dist/plugins/typescript/analyzers/naming-checker.d.ts +30 -0
  172. package/dist/plugins/typescript/analyzers/naming-checker.d.ts.map +1 -0
  173. package/dist/plugins/typescript/analyzers/naming-checker.js +116 -0
  174. package/dist/plugins/typescript/analyzers/naming-checker.js.map +1 -0
  175. package/dist/plugins/typescript/analyzers/pattern-detector.d.ts +80 -0
  176. package/dist/plugins/typescript/analyzers/pattern-detector.d.ts.map +1 -0
  177. package/dist/plugins/typescript/analyzers/pattern-detector.js +267 -0
  178. package/dist/plugins/typescript/analyzers/pattern-detector.js.map +1 -0
  179. package/dist/plugins/typescript/analyzers/security-checker.d.ts +34 -0
  180. package/dist/plugins/typescript/analyzers/security-checker.d.ts.map +1 -0
  181. package/dist/plugins/typescript/analyzers/security-checker.js +126 -0
  182. package/dist/plugins/typescript/analyzers/security-checker.js.map +1 -0
  183. package/dist/plugins/typescript/analyzers/test-coverage-checker.d.ts +22 -0
  184. package/dist/plugins/typescript/analyzers/test-coverage-checker.d.ts.map +1 -0
  185. package/dist/plugins/typescript/analyzers/test-coverage-checker.js +62 -0
  186. package/dist/plugins/typescript/analyzers/test-coverage-checker.js.map +1 -0
  187. package/dist/plugins/typescript/analyzers/type-safety-checker.d.ts +32 -0
  188. package/dist/plugins/typescript/analyzers/type-safety-checker.d.ts.map +1 -0
  189. package/dist/plugins/typescript/analyzers/type-safety-checker.js +86 -0
  190. package/dist/plugins/typescript/analyzers/type-safety-checker.js.map +1 -0
  191. package/dist/plugins/typescript/analyzers/unused-symbol-detector.d.ts +47 -0
  192. package/dist/plugins/typescript/analyzers/unused-symbol-detector.d.ts.map +1 -0
  193. package/dist/plugins/typescript/analyzers/unused-symbol-detector.js +152 -0
  194. package/dist/plugins/typescript/analyzers/unused-symbol-detector.js.map +1 -0
  195. package/dist/plugins/typescript/parser.d.ts +41 -0
  196. package/dist/plugins/typescript/parser.d.ts.map +1 -1
  197. package/dist/plugins/typescript/parser.js +336 -0
  198. package/dist/plugins/typescript/parser.js.map +1 -1
  199. package/dist/shared/types/symbol.d.ts +7 -1
  200. package/dist/shared/types/symbol.d.ts.map +1 -1
  201. package/dist/shared/types/symbol.js +8 -2
  202. package/dist/shared/types/symbol.js.map +1 -1
  203. package/package.json +17 -7
  204. package/bin/mcp-server.js +0 -20
  205. package/dist/core/analysis/complexity-analyzer.d.ts +0 -81
  206. package/dist/core/analysis/complexity-analyzer.d.ts.map +0 -1
  207. package/dist/core/analysis/complexity-analyzer.js +0 -255
  208. package/dist/core/analysis/complexity-analyzer.js.map +0 -1
  209. package/dist/core/analysis/dead-code-detector.d.ts +0 -152
  210. package/dist/core/analysis/dead-code-detector.d.ts.map +0 -1
  211. package/dist/core/analysis/dead-code-detector.js +0 -351
  212. package/dist/core/analysis/dead-code-detector.js.map +0 -1
  213. package/dist/core/analysis/duplication-detector.d.ts.map +0 -1
  214. package/dist/core/analysis/duplication-detector.js +0 -433
  215. package/dist/core/analysis/duplication-detector.js.map +0 -1
  216. package/dist/interfaces/mcp/index.d.ts +0 -7
  217. package/dist/interfaces/mcp/index.d.ts.map +0 -1
  218. package/dist/interfaces/mcp/index.js +0 -6
  219. package/dist/interfaces/mcp/index.js.map +0 -1
  220. package/dist/interfaces/mcp/mcp-server.d.ts +0 -34
  221. package/dist/interfaces/mcp/mcp-server.d.ts.map +0 -1
  222. package/dist/interfaces/mcp/mcp-server.js +0 -162
  223. package/dist/interfaces/mcp/mcp-server.js.map +0 -1
  224. package/dist/interfaces/mcp/mcp.d.ts +0 -52
  225. package/dist/interfaces/mcp/mcp.d.ts.map +0 -1
  226. package/dist/interfaces/mcp/mcp.js +0 -843
  227. package/dist/interfaces/mcp/mcp.js.map +0 -1
@@ -0,0 +1,216 @@
1
+ /**
2
+ * Snapshot 模組型別定義
3
+ * 提供程式碼快照相關的型別和介面
4
+ */
5
+ /**
6
+ * 壓縮層級
7
+ */
8
+ export declare enum CompressionLevel {
9
+ /** 最小化:只包含架構和符號索引 (~20K tokens) */
10
+ Minimal = "minimal",
11
+ /** 中等:包含符號和簡化的實作 (~35K tokens) */
12
+ Medium = "medium",
13
+ /** 完整:包含壓縮後的完整實作 (~50K tokens) */
14
+ Full = "full"
15
+ }
16
+ /**
17
+ * 快照配置選項
18
+ */
19
+ export interface SnapshotOptions {
20
+ /** 專案根目錄路徑 */
21
+ projectPath: string;
22
+ /** 輸出檔案路徑 */
23
+ outputPath?: string;
24
+ /** 壓縮層級 */
25
+ level?: CompressionLevel;
26
+ /** 是否使用增量更新 */
27
+ incremental?: boolean;
28
+ /** 排除模式(glob patterns) */
29
+ exclude?: string[];
30
+ /** 包含的檔案副檔名 */
31
+ extensions?: string[];
32
+ /** 是否包含測試檔案 */
33
+ includeTests?: boolean;
34
+ /** 是否生成多層級快照 */
35
+ multiLevel?: boolean;
36
+ /** 多層級輸出目錄 */
37
+ outputDir?: string;
38
+ /** 是否靜默模式(不輸出進度訊息) */
39
+ silent?: boolean;
40
+ }
41
+ /**
42
+ * 模組摘要
43
+ */
44
+ export interface ModuleSummary {
45
+ /** 模組路徑 */
46
+ p: string;
47
+ /** 匯出符號數量 */
48
+ e: number;
49
+ /** 依賴數量 */
50
+ d: number;
51
+ /** 程式碼行數 */
52
+ l: number;
53
+ }
54
+ /**
55
+ * 壓縮的符號資訊
56
+ */
57
+ export interface CompressedSymbol {
58
+ /** 符號名稱 */
59
+ n: string;
60
+ /** 符號類型(縮寫:f=function, c=class, v=variable, i=interface, t=type, e=enum) */
61
+ t: string;
62
+ /** 起始行號 */
63
+ s: number;
64
+ /** 結束行號 */
65
+ e: number;
66
+ /** 是否匯出 */
67
+ x?: boolean;
68
+ /** 簽章(函式/方法) */
69
+ sg?: string;
70
+ /** 父符號(巢狀符號) */
71
+ p?: string;
72
+ }
73
+ /**
74
+ * 壓縮的程式碼
75
+ */
76
+ export interface CompressedCode {
77
+ /** 壓縮後的程式碼 */
78
+ m: string;
79
+ /** 符號映射表(縮短變數名的映射) */
80
+ sm?: Record<string, string>;
81
+ /** 原始行數 */
82
+ ol?: number;
83
+ /** 壓縮後行數 */
84
+ cl?: number;
85
+ }
86
+ /**
87
+ * 品質指標
88
+ */
89
+ export interface QualityMetrics {
90
+ /** ShitScore 分數 */
91
+ ss: number;
92
+ /** 複雜度 */
93
+ cx: number;
94
+ /** 可維護性 */
95
+ mt: number;
96
+ /** 關鍵問題列表 */
97
+ is: string[];
98
+ }
99
+ /**
100
+ * 檔案變更類型
101
+ */
102
+ export declare enum FileChangeType {
103
+ Added = "added",
104
+ Modified = "modified",
105
+ Deleted = "deleted"
106
+ }
107
+ /**
108
+ * 檔案變更記錄
109
+ */
110
+ export interface FileChange {
111
+ /** 檔案路徑 */
112
+ path: string;
113
+ /** 變更類型 */
114
+ type: FileChangeType;
115
+ /** 舊 hash(修改或刪除時) */
116
+ oldHash?: string;
117
+ /** 新 hash(新增或修改時) */
118
+ newHash?: string;
119
+ }
120
+ /**
121
+ * 快照結構
122
+ */
123
+ export interface Snapshot {
124
+ /** 快照格式版本 */
125
+ v: string;
126
+ /** 專案名稱 */
127
+ p: string;
128
+ /** 生成時間戳 */
129
+ t: number;
130
+ /** 專案狀態 hash */
131
+ h: string;
132
+ /** 壓縮層級 */
133
+ l: CompressionLevel;
134
+ /** 架構層 */
135
+ s: {
136
+ /** 目錄列表 */
137
+ d: string[];
138
+ /** 模組摘要 */
139
+ m: ModuleSummary[];
140
+ };
141
+ /** 符號索引 */
142
+ y: Record<string, CompressedSymbol[]>;
143
+ /** 依賴關係 */
144
+ dp: {
145
+ /** 依賴邊列表 [from, to] */
146
+ g: [string, string][];
147
+ /** 檔案的 import 列表 */
148
+ i: Record<string, string[]>;
149
+ /** 檔案的 export 列表 */
150
+ ex: Record<string, string[]>;
151
+ };
152
+ /** 程式碼內容 */
153
+ c: Record<string, CompressedCode>;
154
+ /** 品質指標 */
155
+ q: QualityMetrics;
156
+ /** 增量更新元數據 */
157
+ md: {
158
+ /** 檔案 hash 映射 */
159
+ fh: Record<string, string>;
160
+ /** 總檔案數 */
161
+ tf: number;
162
+ /** 總程式碼行數 */
163
+ tl: number;
164
+ /** 使用的語言 */
165
+ lg: string[];
166
+ };
167
+ }
168
+ /**
169
+ * 快照差異
170
+ */
171
+ export interface SnapshotDiff {
172
+ /** 新增的檔案 */
173
+ added: string[];
174
+ /** 修改的檔案 */
175
+ modified: string[];
176
+ /** 刪除的檔案 */
177
+ deleted: string[];
178
+ /** 變更摘要 */
179
+ summary: {
180
+ totalChanges: number;
181
+ filesAffected: number;
182
+ linesChanged: number;
183
+ };
184
+ }
185
+ /**
186
+ * 快照統計資訊
187
+ */
188
+ export interface SnapshotStats {
189
+ /** 檔案數量 */
190
+ fileCount: number;
191
+ /** 總程式碼行數 */
192
+ totalLines: number;
193
+ /** 符號總數 */
194
+ symbolCount: number;
195
+ /** 依賴關係數 */
196
+ dependencyCount: number;
197
+ /** 估計 token 數 */
198
+ estimatedTokens: number;
199
+ /** 壓縮比例 */
200
+ compressionRatio: number;
201
+ /** 生成耗時(毫秒) */
202
+ generationTime: number;
203
+ }
204
+ /**
205
+ * 建立預設的快照選項
206
+ */
207
+ export declare function createDefaultSnapshotOptions(projectPath: string): SnapshotOptions;
208
+ /**
209
+ * 型別守衛:檢查是否為有效的快照
210
+ */
211
+ export declare function isSnapshot(value: unknown): value is Snapshot;
212
+ /**
213
+ * 計算快照大小(估計 token 數)
214
+ */
215
+ export declare function estimateSnapshotTokens(snapshot: Snapshot): number;
216
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/snapshot/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Snapshot 模組型別定義
3
+ * 提供程式碼快照相關的型別和介面
4
+ */
5
+ /**
6
+ * 壓縮層級
7
+ */
8
+ export var CompressionLevel;
9
+ (function (CompressionLevel) {
10
+ /** 最小化:只包含架構和符號索引 (~20K tokens) */
11
+ CompressionLevel["Minimal"] = "minimal";
12
+ /** 中等:包含符號和簡化的實作 (~35K tokens) */
13
+ CompressionLevel["Medium"] = "medium";
14
+ /** 完整:包含壓縮後的完整實作 (~50K tokens) */
15
+ CompressionLevel["Full"] = "full";
16
+ })(CompressionLevel || (CompressionLevel = {}));
17
+ /**
18
+ * 檔案變更類型
19
+ */
20
+ export var FileChangeType;
21
+ (function (FileChangeType) {
22
+ FileChangeType["Added"] = "added";
23
+ FileChangeType["Modified"] = "modified";
24
+ FileChangeType["Deleted"] = "deleted";
25
+ })(FileChangeType || (FileChangeType = {}));
26
+ /**
27
+ * 建立預設的快照選項
28
+ */
29
+ export function createDefaultSnapshotOptions(projectPath) {
30
+ return {
31
+ projectPath,
32
+ level: CompressionLevel.Full,
33
+ incremental: false,
34
+ exclude: [
35
+ 'node_modules/**',
36
+ 'dist/**',
37
+ 'build/**',
38
+ '*.test.*',
39
+ '*.spec.*',
40
+ '**/fixtures/**',
41
+ '**/__tests__/**',
42
+ '**/__mocks__/**',
43
+ '.git/**',
44
+ 'coverage/**'
45
+ ],
46
+ extensions: ['.ts', '.tsx', '.js', '.jsx', '.swift'],
47
+ includeTests: false,
48
+ multiLevel: false
49
+ };
50
+ }
51
+ /**
52
+ * 型別守衛:檢查是否為有效的快照
53
+ */
54
+ export function isSnapshot(value) {
55
+ if (!value || typeof value !== 'object') {
56
+ return false;
57
+ }
58
+ const obj = value;
59
+ return (typeof obj.v === 'string' &&
60
+ typeof obj.p === 'string' &&
61
+ typeof obj.t === 'number' &&
62
+ typeof obj.h === 'string' &&
63
+ typeof obj.l === 'string' &&
64
+ typeof obj.s === 'object' &&
65
+ typeof obj.y === 'object' &&
66
+ typeof obj.dp === 'object' &&
67
+ typeof obj.c === 'object' &&
68
+ typeof obj.q === 'object' &&
69
+ typeof obj.md === 'object');
70
+ }
71
+ /**
72
+ * 計算快照大小(估計 token 數)
73
+ */
74
+ export function estimateSnapshotTokens(snapshot) {
75
+ const jsonStr = JSON.stringify(snapshot);
76
+ // 粗略估計:每 4 個字元約等於 1 個 token
77
+ return Math.ceil(jsonStr.length / 4);
78
+ }
79
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/snapshot/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,gBASX;AATD,WAAY,gBAAgB;IAC1B,mCAAmC;IACnC,uCAAmB,CAAA;IAEnB,kCAAkC;IAClC,qCAAiB,CAAA;IAEjB,kCAAkC;IAClC,iCAAa,CAAA;AACf,CAAC,EATW,gBAAgB,KAAhB,gBAAgB,QAS3B;AAkHD;;GAEG;AACH,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,iCAAe,CAAA;IACf,uCAAqB,CAAA;IACrB,qCAAmB,CAAA;AACrB,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB;AAmID;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAAC,WAAmB;IAC9D,OAAO;QACL,WAAW;QACX,KAAK,EAAE,gBAAgB,CAAC,IAAI;QAC5B,WAAW,EAAE,KAAK;QAClB,OAAO,EAAE;YACP,iBAAiB;YACjB,SAAS;YACT,UAAU;YACV,UAAU;YACV,UAAU;YACV,gBAAgB;YAChB,iBAAiB;YACjB,iBAAiB;YACjB,SAAS;YACT,aAAa;SACd;QACD,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC;QACpD,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,KAAK;KAClB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,GAAG,GAAG,KAAgC,CAAC;IAE7C,OAAO,CACL,OAAO,GAAG,CAAC,CAAC,KAAK,QAAQ;QACzB,OAAO,GAAG,CAAC,CAAC,KAAK,QAAQ;QACzB,OAAO,GAAG,CAAC,CAAC,KAAK,QAAQ;QACzB,OAAO,GAAG,CAAC,CAAC,KAAK,QAAQ;QACzB,OAAO,GAAG,CAAC,CAAC,KAAK,QAAQ;QACzB,OAAO,GAAG,CAAC,CAAC,KAAK,QAAQ;QACzB,OAAO,GAAG,CAAC,CAAC,KAAK,QAAQ;QACzB,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ;QAC1B,OAAO,GAAG,CAAC,CAAC,KAAK,QAAQ;QACzB,OAAO,GAAG,CAAC,CAAC,KAAK,QAAQ;QACzB,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,CAC3B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAkB;IACvD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACzC,4BAA4B;IAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,198 @@
1
+ /**
2
+ * 語言無關的分析型別定義
3
+ * 所有 ParserPlugin 檢測方法使用的通用型別
4
+ */
5
+ /**
6
+ * 未使用程式碼
7
+ */
8
+ export interface UnusedCode {
9
+ /** 未使用程式碼類型 */
10
+ type: 'variable' | 'function' | 'class' | 'import' | 'unreachable';
11
+ /** 符號名稱(如果適用) */
12
+ name?: string;
13
+ /** 位置資訊 */
14
+ location: {
15
+ filePath: string;
16
+ line: number;
17
+ column: number;
18
+ };
19
+ /** 信心程度(0-1) */
20
+ confidence: number;
21
+ /** 原因說明 */
22
+ reason?: string;
23
+ }
24
+ /**
25
+ * 複雜度指標
26
+ */
27
+ export interface ComplexityMetrics {
28
+ /** 循環複雜度 */
29
+ cyclomaticComplexity: number;
30
+ /** 認知複雜度 */
31
+ cognitiveComplexity: number;
32
+ /** 複雜度評估等級 */
33
+ evaluation: 'simple' | 'moderate' | 'complex' | 'very-complex';
34
+ /** 函式數量 */
35
+ functionCount: number;
36
+ /** 平均複雜度 */
37
+ averageComplexity: number;
38
+ /** 最大複雜度 */
39
+ maxComplexity: number;
40
+ /** 最大複雜度函式名稱 */
41
+ maxComplexityFunction?: string;
42
+ }
43
+ /**
44
+ * 程式碼片段(用於重複代碼檢測)
45
+ */
46
+ export interface CodeFragment {
47
+ /** 片段類型 */
48
+ type: 'method' | 'constant' | 'config' | 'comment';
49
+ /** 原始程式碼 */
50
+ code: string;
51
+ /** Token 序列(用於 Type-2/Type-3 比對) */
52
+ tokens: string[];
53
+ /** 位置資訊 */
54
+ location: {
55
+ filePath: string;
56
+ startLine: number;
57
+ endLine: number;
58
+ };
59
+ /** 雜湊值(用於快速比對) */
60
+ hash: string;
61
+ }
62
+ /**
63
+ * 重複代碼檢測結果
64
+ */
65
+ export interface DuplicationResult {
66
+ /** 重複代碼群組 */
67
+ groups: DuplicationGroup[];
68
+ /** 總重複行數 */
69
+ totalDuplicatedLines: number;
70
+ /** 重複代碼比例 */
71
+ duplicationPercentage: number;
72
+ }
73
+ /**
74
+ * 重複代碼群組
75
+ */
76
+ export interface DuplicationGroup {
77
+ /** 群組 ID */
78
+ id: string;
79
+ /** 重複類型 */
80
+ type: 'type-1' | 'type-2' | 'type-3';
81
+ /** 重複片段列表 */
82
+ fragments: CodeFragment[];
83
+ /** 重複次數 */
84
+ count: number;
85
+ /** 重複行數 */
86
+ lines: number;
87
+ }
88
+ /**
89
+ * 樣板模式匹配
90
+ */
91
+ export interface PatternMatch {
92
+ /** 模式名稱 */
93
+ pattern: string;
94
+ /** 模式類型 */
95
+ type: 'boilerplate' | 'anti-pattern' | 'design-pattern';
96
+ /** 位置資訊 */
97
+ locations: Array<{
98
+ filePath: string;
99
+ startLine: number;
100
+ endLine: number;
101
+ }>;
102
+ /** 出現次數 */
103
+ count: number;
104
+ /** 嚴重程度 */
105
+ severity: 'low' | 'medium' | 'high';
106
+ /** 建議改進方式 */
107
+ suggestion?: string;
108
+ }
109
+ /**
110
+ * 型別安全問題
111
+ */
112
+ export interface TypeSafetyIssue {
113
+ /** 問題類型 */
114
+ type: 'any-type' | 'type-assertion' | 'ignore-directive' | 'unsafe-cast' | 'force-unwrap';
115
+ /** 位置資訊 */
116
+ location: {
117
+ filePath: string;
118
+ line: number;
119
+ column: number;
120
+ };
121
+ /** 問題描述 */
122
+ message: string;
123
+ /** 嚴重程度 */
124
+ severity: 'warning' | 'error';
125
+ }
126
+ /**
127
+ * 錯誤處理問題
128
+ */
129
+ export interface ErrorHandlingIssue {
130
+ /** 問題類型 */
131
+ type: 'empty-catch' | 'silent-error' | 'unhandled-promise' | 'missing-error-handling';
132
+ /** 位置資訊 */
133
+ location: {
134
+ filePath: string;
135
+ line: number;
136
+ column: number;
137
+ };
138
+ /** 問題描述 */
139
+ message: string;
140
+ /** 嚴重程度 */
141
+ severity: 'warning' | 'error';
142
+ }
143
+ /**
144
+ * 安全性問題
145
+ */
146
+ export interface SecurityIssue {
147
+ /** 問題類型 */
148
+ type: 'hardcoded-secret' | 'unsafe-eval' | 'sql-injection' | 'xss-vulnerability' | 'unsafe-api';
149
+ /** 位置資訊 */
150
+ location: {
151
+ filePath: string;
152
+ line: number;
153
+ column: number;
154
+ };
155
+ /** 問題描述 */
156
+ message: string;
157
+ /** 嚴重程度 */
158
+ severity: 'low' | 'medium' | 'high' | 'critical';
159
+ /** 建議修復方式 */
160
+ recommendation?: string;
161
+ }
162
+ /**
163
+ * 命名規範問題
164
+ */
165
+ export interface NamingIssue {
166
+ /** 問題類型 */
167
+ type: 'invalid-naming' | 'inconsistent-style' | 'reserved-keyword' | 'misleading-name';
168
+ /** 符號名稱 */
169
+ symbolName: string;
170
+ /** 符號類型 */
171
+ symbolType: string;
172
+ /** 位置資訊 */
173
+ location: {
174
+ filePath: string;
175
+ line: number;
176
+ column: number;
177
+ };
178
+ /** 問題描述 */
179
+ message: string;
180
+ /** 建議名稱 */
181
+ suggestedName?: string;
182
+ }
183
+ /**
184
+ * 測試覆蓋率結果
185
+ */
186
+ export interface TestCoverageResult {
187
+ /** 測試檔案數量 */
188
+ testFileCount: number;
189
+ /** 總檔案數量 */
190
+ totalFileCount: number;
191
+ /** 測試覆蓋率 */
192
+ coveragePercentage: number;
193
+ /** 測試檔案列表 */
194
+ testFiles: string[];
195
+ /** 未測試檔案列表 */
196
+ untestedFiles: string[];
197
+ }
198
+ //# sourceMappingURL=analysis-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analysis-types.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/parser/analysis-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * 語言無關的分析型別定義
3
+ * 所有 ParserPlugin 檢測方法使用的通用型別
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=analysis-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analysis-types.js","sourceRoot":"","sources":["../../../src/infrastructure/parser/analysis-types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -139,5 +139,41 @@ export declare abstract class BaseParserPlugin implements ParserPlugin {
139
139
  * 子類別可以覆寫此方法以實作語言特定的判斷邏輯
140
140
  */
141
141
  isAbstractDeclaration(symbol: Symbol): boolean;
142
+ /**
143
+ * 檢測未使用的符號(預設實作返回空陣列)
144
+ */
145
+ detectUnusedSymbols(_ast: AST, _allSymbols: Symbol[]): Promise<any[]>;
146
+ /**
147
+ * 分析程式碼複雜度(預設實作返回簡單複雜度)
148
+ */
149
+ analyzeComplexity(_code: string, _ast: AST): Promise<any>;
150
+ /**
151
+ * 提取程式碼片段(預設實作返回空陣列)
152
+ */
153
+ extractCodeFragments(_code: string, _filePath: string): Promise<any[]>;
154
+ /**
155
+ * 檢測樣板模式(預設實作返回空陣列)
156
+ */
157
+ detectPatterns(_code: string, _ast: AST): Promise<any[]>;
158
+ /**
159
+ * 檢查型別安全問題(預設實作返回空陣列)
160
+ */
161
+ checkTypeSafety(_code: string, _ast: AST): Promise<any[]>;
162
+ /**
163
+ * 檢查錯誤處理問題(預設實作返回空陣列)
164
+ */
165
+ checkErrorHandling(_code: string, _ast: AST): Promise<any[]>;
166
+ /**
167
+ * 檢查安全性問題(預設實作返回空陣列)
168
+ */
169
+ checkSecurity(_code: string, _ast: AST): Promise<any[]>;
170
+ /**
171
+ * 檢查命名規範問題(預設實作返回空陣列)
172
+ */
173
+ checkNamingConventions(_symbols: Symbol[], _filePath: string): Promise<any[]>;
174
+ /**
175
+ * 判斷檔案是否為測試檔案(預設實作)
176
+ */
177
+ isTestFile(filePath: string): boolean;
142
178
  }
143
179
  //# sourceMappingURL=base.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/parser/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/parser/base.ts"],"names":[],"mappings":"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"}
@@ -322,5 +322,77 @@ export class BaseParserPlugin {
322
322
  ];
323
323
  return abstractTypes.includes(symbol.type);
324
324
  }
325
+ // ===== 程式碼分析方法(預設實作)=====
326
+ /**
327
+ * 檢測未使用的符號(預設實作返回空陣列)
328
+ */
329
+ async detectUnusedSymbols(_ast, _allSymbols) {
330
+ this.log('debug', 'detectUnusedSymbols not implemented');
331
+ return [];
332
+ }
333
+ /**
334
+ * 分析程式碼複雜度(預設實作返回簡單複雜度)
335
+ */
336
+ async analyzeComplexity(_code, _ast) {
337
+ this.log('debug', 'analyzeComplexity not implemented');
338
+ return {
339
+ cyclomaticComplexity: 1,
340
+ cognitiveComplexity: 0,
341
+ evaluation: 'simple',
342
+ functionCount: 0,
343
+ averageComplexity: 0,
344
+ maxComplexity: 0
345
+ };
346
+ }
347
+ /**
348
+ * 提取程式碼片段(預設實作返回空陣列)
349
+ */
350
+ async extractCodeFragments(_code, _filePath) {
351
+ this.log('debug', 'extractCodeFragments not implemented');
352
+ return [];
353
+ }
354
+ /**
355
+ * 檢測樣板模式(預設實作返回空陣列)
356
+ */
357
+ async detectPatterns(_code, _ast) {
358
+ this.log('debug', 'detectPatterns not implemented');
359
+ return [];
360
+ }
361
+ /**
362
+ * 檢查型別安全問題(預設實作返回空陣列)
363
+ */
364
+ async checkTypeSafety(_code, _ast) {
365
+ this.log('debug', 'checkTypeSafety not implemented');
366
+ return [];
367
+ }
368
+ /**
369
+ * 檢查錯誤處理問題(預設實作返回空陣列)
370
+ */
371
+ async checkErrorHandling(_code, _ast) {
372
+ this.log('debug', 'checkErrorHandling not implemented');
373
+ return [];
374
+ }
375
+ /**
376
+ * 檢查安全性問題(預設實作返回空陣列)
377
+ */
378
+ async checkSecurity(_code, _ast) {
379
+ this.log('debug', 'checkSecurity not implemented');
380
+ return [];
381
+ }
382
+ /**
383
+ * 檢查命名規範問題(預設實作返回空陣列)
384
+ */
385
+ async checkNamingConventions(_symbols, _filePath) {
386
+ this.log('debug', 'checkNamingConventions not implemented');
387
+ return [];
388
+ }
389
+ /**
390
+ * 判斷檔案是否為測試檔案(預設實作)
391
+ */
392
+ isTestFile(filePath) {
393
+ return /\.(test|spec)\.(ts|tsx|js|jsx)$/.test(filePath) ||
394
+ filePath.includes('/__tests__/') ||
395
+ filePath.includes('/__mocks__/');
396
+ }
325
397
  }
326
398
  //# sourceMappingURL=base.js.map