@mycodemap/mycodemap 0.1.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 (329) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/LICENSE +21 -0
  3. package/README.md +559 -0
  4. package/dist/ai/claude.d.ts +38 -0
  5. package/dist/ai/claude.d.ts.map +1 -0
  6. package/dist/ai/claude.js +169 -0
  7. package/dist/ai/claude.js.map +1 -0
  8. package/dist/ai/codex.d.ts +38 -0
  9. package/dist/ai/codex.d.ts.map +1 -0
  10. package/dist/ai/codex.js +169 -0
  11. package/dist/ai/codex.js.map +1 -0
  12. package/dist/ai/factory.d.ts +48 -0
  13. package/dist/ai/factory.d.ts.map +1 -0
  14. package/dist/ai/factory.js +95 -0
  15. package/dist/ai/factory.js.map +1 -0
  16. package/dist/ai/index.d.ts +12 -0
  17. package/dist/ai/index.d.ts.map +1 -0
  18. package/dist/ai/index.js +29 -0
  19. package/dist/ai/index.js.map +1 -0
  20. package/dist/ai/provider.d.ts +70 -0
  21. package/dist/ai/provider.d.ts.map +1 -0
  22. package/dist/ai/provider.js +31 -0
  23. package/dist/ai/provider.js.map +1 -0
  24. package/dist/ai/subagent-caller.d.ts +90 -0
  25. package/dist/ai/subagent-caller.d.ts.map +1 -0
  26. package/dist/ai/subagent-caller.js +280 -0
  27. package/dist/ai/subagent-caller.js.map +1 -0
  28. package/dist/ai/types.d.ts +70 -0
  29. package/dist/ai/types.d.ts.map +1 -0
  30. package/dist/ai/types.js +5 -0
  31. package/dist/ai/types.js.map +1 -0
  32. package/dist/cache/file-hash-cache.d.ts +76 -0
  33. package/dist/cache/file-hash-cache.d.ts.map +1 -0
  34. package/dist/cache/file-hash-cache.js +159 -0
  35. package/dist/cache/file-hash-cache.js.map +1 -0
  36. package/dist/cache/index.d.ts +151 -0
  37. package/dist/cache/index.d.ts.map +1 -0
  38. package/dist/cache/index.js +303 -0
  39. package/dist/cache/index.js.map +1 -0
  40. package/dist/cache/lru-cache.d.ts +93 -0
  41. package/dist/cache/lru-cache.d.ts.map +1 -0
  42. package/dist/cache/lru-cache.js +194 -0
  43. package/dist/cache/lru-cache.js.map +1 -0
  44. package/dist/cache/parse-cache.d.ts +68 -0
  45. package/dist/cache/parse-cache.d.ts.map +1 -0
  46. package/dist/cache/parse-cache.js +173 -0
  47. package/dist/cache/parse-cache.js.map +1 -0
  48. package/dist/cli/commands/analyze.d.ts +96 -0
  49. package/dist/cli/commands/analyze.d.ts.map +1 -0
  50. package/dist/cli/commands/analyze.js +567 -0
  51. package/dist/cli/commands/analyze.js.map +1 -0
  52. package/dist/cli/commands/ci.d.ts +25 -0
  53. package/dist/cli/commands/ci.d.ts.map +1 -0
  54. package/dist/cli/commands/ci.js +481 -0
  55. package/dist/cli/commands/ci.js.map +1 -0
  56. package/dist/cli/commands/complexity.d.ts +70 -0
  57. package/dist/cli/commands/complexity.d.ts.map +1 -0
  58. package/dist/cli/commands/complexity.js +479 -0
  59. package/dist/cli/commands/complexity.js.map +1 -0
  60. package/dist/cli/commands/cycles.d.ts +10 -0
  61. package/dist/cli/commands/cycles.d.ts.map +1 -0
  62. package/dist/cli/commands/cycles.js +202 -0
  63. package/dist/cli/commands/cycles.js.map +1 -0
  64. package/dist/cli/commands/deps.d.ts +61 -0
  65. package/dist/cli/commands/deps.d.ts.map +1 -0
  66. package/dist/cli/commands/deps.js +340 -0
  67. package/dist/cli/commands/deps.js.map +1 -0
  68. package/dist/cli/commands/generate.d.ts +8 -0
  69. package/dist/cli/commands/generate.d.ts.map +1 -0
  70. package/dist/cli/commands/generate.js +61 -0
  71. package/dist/cli/commands/generate.js.map +1 -0
  72. package/dist/cli/commands/impact.d.ts +55 -0
  73. package/dist/cli/commands/impact.d.ts.map +1 -0
  74. package/dist/cli/commands/impact.js +455 -0
  75. package/dist/cli/commands/impact.js.map +1 -0
  76. package/dist/cli/commands/init.d.ts +4 -0
  77. package/dist/cli/commands/init.d.ts.map +1 -0
  78. package/dist/cli/commands/init.js +50 -0
  79. package/dist/cli/commands/init.js.map +1 -0
  80. package/dist/cli/commands/query.d.ts +22 -0
  81. package/dist/cli/commands/query.d.ts.map +1 -0
  82. package/dist/cli/commands/query.js +718 -0
  83. package/dist/cli/commands/query.js.map +1 -0
  84. package/dist/cli/commands/watch-foreground.d.ts +9 -0
  85. package/dist/cli/commands/watch-foreground.d.ts.map +1 -0
  86. package/dist/cli/commands/watch-foreground.js +67 -0
  87. package/dist/cli/commands/watch-foreground.js.map +1 -0
  88. package/dist/cli/commands/watch.d.ts +12 -0
  89. package/dist/cli/commands/watch.d.ts.map +1 -0
  90. package/dist/cli/commands/watch.js +114 -0
  91. package/dist/cli/commands/watch.js.map +1 -0
  92. package/dist/cli/commands/workflow.d.ts +25 -0
  93. package/dist/cli/commands/workflow.d.ts.map +1 -0
  94. package/dist/cli/commands/workflow.js +488 -0
  95. package/dist/cli/commands/workflow.js.map +1 -0
  96. package/dist/cli/index.d.ts +3 -0
  97. package/dist/cli/index.d.ts.map +1 -0
  98. package/dist/cli/index.js +115 -0
  99. package/dist/cli/index.js.map +1 -0
  100. package/dist/cli/paths.d.ts +90 -0
  101. package/dist/cli/paths.d.ts.map +1 -0
  102. package/dist/cli/paths.js +136 -0
  103. package/dist/cli/paths.js.map +1 -0
  104. package/dist/cli/runtime-logger.d.ts +13 -0
  105. package/dist/cli/runtime-logger.d.ts.map +1 -0
  106. package/dist/cli/runtime-logger.js +213 -0
  107. package/dist/cli/runtime-logger.js.map +1 -0
  108. package/dist/core/analyzer.d.ts +3 -0
  109. package/dist/core/analyzer.d.ts.map +1 -0
  110. package/dist/core/analyzer.js +359 -0
  111. package/dist/core/analyzer.js.map +1 -0
  112. package/dist/core/ast-complexity-analyzer.d.ts +40 -0
  113. package/dist/core/ast-complexity-analyzer.d.ts.map +1 -0
  114. package/dist/core/ast-complexity-analyzer.js +279 -0
  115. package/dist/core/ast-complexity-analyzer.js.map +1 -0
  116. package/dist/core/global-index.d.ts +69 -0
  117. package/dist/core/global-index.d.ts.map +1 -0
  118. package/dist/core/global-index.js +388 -0
  119. package/dist/core/global-index.js.map +1 -0
  120. package/dist/generator/ai-overview.d.ts +51 -0
  121. package/dist/generator/ai-overview.d.ts.map +1 -0
  122. package/dist/generator/ai-overview.js +160 -0
  123. package/dist/generator/ai-overview.js.map +1 -0
  124. package/dist/generator/context.d.ts +5 -0
  125. package/dist/generator/context.d.ts.map +1 -0
  126. package/dist/generator/context.js +514 -0
  127. package/dist/generator/context.js.map +1 -0
  128. package/dist/generator/file-describer.d.ts +93 -0
  129. package/dist/generator/file-describer.d.ts.map +1 -0
  130. package/dist/generator/file-describer.js +375 -0
  131. package/dist/generator/file-describer.js.map +1 -0
  132. package/dist/generator/index.d.ts +8 -0
  133. package/dist/generator/index.d.ts.map +1 -0
  134. package/dist/generator/index.js +259 -0
  135. package/dist/generator/index.js.map +1 -0
  136. package/dist/index.d.ts +5 -0
  137. package/dist/index.d.ts.map +1 -0
  138. package/dist/index.js +6 -0
  139. package/dist/index.js.map +1 -0
  140. package/dist/orchestrator/adapters/ast-grep-adapter.d.ts +75 -0
  141. package/dist/orchestrator/adapters/ast-grep-adapter.d.ts.map +1 -0
  142. package/dist/orchestrator/adapters/ast-grep-adapter.js +242 -0
  143. package/dist/orchestrator/adapters/ast-grep-adapter.js.map +1 -0
  144. package/dist/orchestrator/adapters/base-adapter.d.ts +24 -0
  145. package/dist/orchestrator/adapters/base-adapter.d.ts.map +1 -0
  146. package/dist/orchestrator/adapters/base-adapter.js +2 -0
  147. package/dist/orchestrator/adapters/base-adapter.js.map +1 -0
  148. package/dist/orchestrator/adapters/codemap-adapter.d.ts +56 -0
  149. package/dist/orchestrator/adapters/codemap-adapter.d.ts.map +1 -0
  150. package/dist/orchestrator/adapters/codemap-adapter.js +163 -0
  151. package/dist/orchestrator/adapters/codemap-adapter.js.map +1 -0
  152. package/dist/orchestrator/adapters/index.d.ts +10 -0
  153. package/dist/orchestrator/adapters/index.d.ts.map +1 -0
  154. package/dist/orchestrator/adapters/index.js +3 -0
  155. package/dist/orchestrator/adapters/index.js.map +1 -0
  156. package/dist/orchestrator/ai-feed-generator.d.ts +210 -0
  157. package/dist/orchestrator/ai-feed-generator.d.ts.map +1 -0
  158. package/dist/orchestrator/ai-feed-generator.js +377 -0
  159. package/dist/orchestrator/ai-feed-generator.js.map +1 -0
  160. package/dist/orchestrator/commit-validator.d.ts +30 -0
  161. package/dist/orchestrator/commit-validator.d.ts.map +1 -0
  162. package/dist/orchestrator/commit-validator.js +87 -0
  163. package/dist/orchestrator/commit-validator.js.map +1 -0
  164. package/dist/orchestrator/confidence.d.ts +25 -0
  165. package/dist/orchestrator/confidence.d.ts.map +1 -0
  166. package/dist/orchestrator/confidence.js +138 -0
  167. package/dist/orchestrator/confidence.js.map +1 -0
  168. package/dist/orchestrator/file-header-scanner.d.ts +48 -0
  169. package/dist/orchestrator/file-header-scanner.d.ts.map +1 -0
  170. package/dist/orchestrator/file-header-scanner.js +158 -0
  171. package/dist/orchestrator/file-header-scanner.js.map +1 -0
  172. package/dist/orchestrator/git-analyzer.d.ts +192 -0
  173. package/dist/orchestrator/git-analyzer.d.ts.map +1 -0
  174. package/dist/orchestrator/git-analyzer.js +539 -0
  175. package/dist/orchestrator/git-analyzer.js.map +1 -0
  176. package/dist/orchestrator/index.d.ts +20 -0
  177. package/dist/orchestrator/index.d.ts.map +1 -0
  178. package/dist/orchestrator/index.js +16 -0
  179. package/dist/orchestrator/index.js.map +1 -0
  180. package/dist/orchestrator/intent-router.d.ts +41 -0
  181. package/dist/orchestrator/intent-router.d.ts.map +1 -0
  182. package/dist/orchestrator/intent-router.js +98 -0
  183. package/dist/orchestrator/intent-router.js.map +1 -0
  184. package/dist/orchestrator/result-fusion.d.ts +114 -0
  185. package/dist/orchestrator/result-fusion.d.ts.map +1 -0
  186. package/dist/orchestrator/result-fusion.js +332 -0
  187. package/dist/orchestrator/result-fusion.js.map +1 -0
  188. package/dist/orchestrator/test-linker.d.ts +166 -0
  189. package/dist/orchestrator/test-linker.d.ts.map +1 -0
  190. package/dist/orchestrator/test-linker.js +570 -0
  191. package/dist/orchestrator/test-linker.js.map +1 -0
  192. package/dist/orchestrator/tool-orchestrator.d.ts +108 -0
  193. package/dist/orchestrator/tool-orchestrator.d.ts.map +1 -0
  194. package/dist/orchestrator/tool-orchestrator.js +247 -0
  195. package/dist/orchestrator/tool-orchestrator.js.map +1 -0
  196. package/dist/orchestrator/types.d.ts +162 -0
  197. package/dist/orchestrator/types.d.ts.map +1 -0
  198. package/dist/orchestrator/types.js +39 -0
  199. package/dist/orchestrator/types.js.map +1 -0
  200. package/dist/orchestrator/workflow/ci-executor.d.ts +157 -0
  201. package/dist/orchestrator/workflow/ci-executor.d.ts.map +1 -0
  202. package/dist/orchestrator/workflow/ci-executor.js +423 -0
  203. package/dist/orchestrator/workflow/ci-executor.js.map +1 -0
  204. package/dist/orchestrator/workflow/config.d.ts +97 -0
  205. package/dist/orchestrator/workflow/config.d.ts.map +1 -0
  206. package/dist/orchestrator/workflow/config.js +115 -0
  207. package/dist/orchestrator/workflow/config.js.map +1 -0
  208. package/dist/orchestrator/workflow/git-analyzer.d.ts +173 -0
  209. package/dist/orchestrator/workflow/git-analyzer.d.ts.map +1 -0
  210. package/dist/orchestrator/workflow/git-analyzer.js +473 -0
  211. package/dist/orchestrator/workflow/git-analyzer.js.map +1 -0
  212. package/dist/orchestrator/workflow/index.d.ts +21 -0
  213. package/dist/orchestrator/workflow/index.d.ts.map +1 -0
  214. package/dist/orchestrator/workflow/index.js +21 -0
  215. package/dist/orchestrator/workflow/index.js.map +1 -0
  216. package/dist/orchestrator/workflow/phase-checkpoint.d.ts +38 -0
  217. package/dist/orchestrator/workflow/phase-checkpoint.d.ts.map +1 -0
  218. package/dist/orchestrator/workflow/phase-checkpoint.js +75 -0
  219. package/dist/orchestrator/workflow/phase-checkpoint.js.map +1 -0
  220. package/dist/orchestrator/workflow/phase-inheritance.d.ts +128 -0
  221. package/dist/orchestrator/workflow/phase-inheritance.d.ts.map +1 -0
  222. package/dist/orchestrator/workflow/phase-inheritance.js +266 -0
  223. package/dist/orchestrator/workflow/phase-inheritance.js.map +1 -0
  224. package/dist/orchestrator/workflow/result-fusion.d.ts +117 -0
  225. package/dist/orchestrator/workflow/result-fusion.d.ts.map +1 -0
  226. package/dist/orchestrator/workflow/result-fusion.js +246 -0
  227. package/dist/orchestrator/workflow/result-fusion.js.map +1 -0
  228. package/dist/orchestrator/workflow/templates.d.ts +116 -0
  229. package/dist/orchestrator/workflow/templates.d.ts.map +1 -0
  230. package/dist/orchestrator/workflow/templates.js +546 -0
  231. package/dist/orchestrator/workflow/templates.js.map +1 -0
  232. package/dist/orchestrator/workflow/test-linker.d.ts +152 -0
  233. package/dist/orchestrator/workflow/test-linker.d.ts.map +1 -0
  234. package/dist/orchestrator/workflow/test-linker.js +342 -0
  235. package/dist/orchestrator/workflow/test-linker.js.map +1 -0
  236. package/dist/orchestrator/workflow/types.d.ts +202 -0
  237. package/dist/orchestrator/workflow/types.d.ts.map +1 -0
  238. package/dist/orchestrator/workflow/types.js +4 -0
  239. package/dist/orchestrator/workflow/types.js.map +1 -0
  240. package/dist/orchestrator/workflow/visualizer.d.ts +56 -0
  241. package/dist/orchestrator/workflow/visualizer.d.ts.map +1 -0
  242. package/dist/orchestrator/workflow/visualizer.js +300 -0
  243. package/dist/orchestrator/workflow/visualizer.js.map +1 -0
  244. package/dist/orchestrator/workflow/workflow-context.d.ts +50 -0
  245. package/dist/orchestrator/workflow/workflow-context.d.ts.map +1 -0
  246. package/dist/orchestrator/workflow/workflow-context.js +105 -0
  247. package/dist/orchestrator/workflow/workflow-context.js.map +1 -0
  248. package/dist/orchestrator/workflow/workflow-orchestrator.d.ts +126 -0
  249. package/dist/orchestrator/workflow/workflow-orchestrator.d.ts.map +1 -0
  250. package/dist/orchestrator/workflow/workflow-orchestrator.js +489 -0
  251. package/dist/orchestrator/workflow/workflow-orchestrator.js.map +1 -0
  252. package/dist/orchestrator/workflow/workflow-persistence.d.ts +38 -0
  253. package/dist/orchestrator/workflow/workflow-persistence.d.ts.map +1 -0
  254. package/dist/orchestrator/workflow/workflow-persistence.js +166 -0
  255. package/dist/orchestrator/workflow/workflow-persistence.js.map +1 -0
  256. package/dist/parser/implementations/fast-parser.d.ts +65 -0
  257. package/dist/parser/implementations/fast-parser.d.ts.map +1 -0
  258. package/dist/parser/implementations/fast-parser.js +299 -0
  259. package/dist/parser/implementations/fast-parser.js.map +1 -0
  260. package/dist/parser/implementations/smart-parser.d.ts +220 -0
  261. package/dist/parser/implementations/smart-parser.d.ts.map +1 -0
  262. package/dist/parser/implementations/smart-parser.js +1536 -0
  263. package/dist/parser/implementations/smart-parser.js.map +1 -0
  264. package/dist/parser/implementations/tree-sitter-parser.d.ts +57 -0
  265. package/dist/parser/implementations/tree-sitter-parser.d.ts.map +1 -0
  266. package/dist/parser/implementations/tree-sitter-parser.js +375 -0
  267. package/dist/parser/implementations/tree-sitter-parser.js.map +1 -0
  268. package/dist/parser/index.d.ts +19 -0
  269. package/dist/parser/index.d.ts.map +1 -0
  270. package/dist/parser/index.js +449 -0
  271. package/dist/parser/index.js.map +1 -0
  272. package/dist/parser/interfaces/IParser.d.ts +218 -0
  273. package/dist/parser/interfaces/IParser.d.ts.map +1 -0
  274. package/dist/parser/interfaces/IParser.js +22 -0
  275. package/dist/parser/interfaces/IParser.js.map +1 -0
  276. package/dist/plugins/built-in/call-graph.d.ts +38 -0
  277. package/dist/plugins/built-in/call-graph.d.ts.map +1 -0
  278. package/dist/plugins/built-in/call-graph.js +135 -0
  279. package/dist/plugins/built-in/call-graph.js.map +1 -0
  280. package/dist/plugins/built-in/complexity-analyzer.d.ts +45 -0
  281. package/dist/plugins/built-in/complexity-analyzer.d.ts.map +1 -0
  282. package/dist/plugins/built-in/complexity-analyzer.js +155 -0
  283. package/dist/plugins/built-in/complexity-analyzer.js.map +1 -0
  284. package/dist/plugins/index.d.ts +34 -0
  285. package/dist/plugins/index.d.ts.map +1 -0
  286. package/dist/plugins/index.js +103 -0
  287. package/dist/plugins/index.js.map +1 -0
  288. package/dist/plugins/plugin-loader.d.ts +22 -0
  289. package/dist/plugins/plugin-loader.d.ts.map +1 -0
  290. package/dist/plugins/plugin-loader.js +200 -0
  291. package/dist/plugins/plugin-loader.js.map +1 -0
  292. package/dist/plugins/plugin-registry.d.ts +20 -0
  293. package/dist/plugins/plugin-registry.d.ts.map +1 -0
  294. package/dist/plugins/plugin-registry.js +143 -0
  295. package/dist/plugins/plugin-registry.js.map +1 -0
  296. package/dist/plugins/types.d.ts +72 -0
  297. package/dist/plugins/types.d.ts.map +1 -0
  298. package/dist/plugins/types.js +5 -0
  299. package/dist/plugins/types.js.map +1 -0
  300. package/dist/types/index.d.ts +373 -0
  301. package/dist/types/index.d.ts.map +1 -0
  302. package/dist/types/index.js +7 -0
  303. package/dist/types/index.js.map +1 -0
  304. package/dist/watcher/daemon.d.ts +64 -0
  305. package/dist/watcher/daemon.d.ts.map +1 -0
  306. package/dist/watcher/daemon.js +189 -0
  307. package/dist/watcher/daemon.js.map +1 -0
  308. package/dist/watcher/file-watcher.d.ts +70 -0
  309. package/dist/watcher/file-watcher.d.ts.map +1 -0
  310. package/dist/watcher/file-watcher.js +127 -0
  311. package/dist/watcher/file-watcher.js.map +1 -0
  312. package/dist/watcher/index.d.ts +5 -0
  313. package/dist/watcher/index.d.ts.map +1 -0
  314. package/dist/watcher/index.js +6 -0
  315. package/dist/watcher/index.js.map +1 -0
  316. package/dist/watcher/watch-worker.d.ts +2 -0
  317. package/dist/watcher/watch-worker.d.ts.map +1 -0
  318. package/dist/watcher/watch-worker.js +57 -0
  319. package/dist/watcher/watch-worker.js.map +1 -0
  320. package/dist/worker/index.d.ts +76 -0
  321. package/dist/worker/index.d.ts.map +1 -0
  322. package/dist/worker/index.js +155 -0
  323. package/dist/worker/index.js.map +1 -0
  324. package/dist/worker/parse-worker.d.ts +2 -0
  325. package/dist/worker/parse-worker.d.ts.map +1 -0
  326. package/dist/worker/parse-worker.js +202 -0
  327. package/dist/worker/parse-worker.js.map +1 -0
  328. package/mycodemap.config.schema.json +42 -0
  329. package/package.json +69 -0
@@ -0,0 +1,70 @@
1
+ import type { CodeMap } from '../types/index.js';
2
+ /**
3
+ * AI Provider 配置
4
+ */
5
+ export interface AIProviderConfig {
6
+ /** 超时时间(毫秒) */
7
+ timeout?: number;
8
+ /** 最大 token 数 */
9
+ maxTokens?: number;
10
+ /** 模型版本 */
11
+ model?: string;
12
+ }
13
+ /**
14
+ * AI 响应结果
15
+ */
16
+ export interface AIResponse {
17
+ /** 响应内容 */
18
+ content: string;
19
+ /** 使用的模型 */
20
+ model?: string;
21
+ /** 消耗的 token 数 */
22
+ usage?: {
23
+ prompt: number;
24
+ completion: number;
25
+ total: number;
26
+ };
27
+ }
28
+ /**
29
+ * AI Provider 基类
30
+ * 所有 AI Provider 都应继承此类
31
+ */
32
+ export declare abstract class AIProvider {
33
+ /** Provider 名称 */
34
+ abstract readonly name: string;
35
+ /** 默认配置 */
36
+ protected config: AIProviderConfig;
37
+ constructor(config?: AIProviderConfig);
38
+ /**
39
+ * 执行 AI 推理
40
+ * @param prompt 提示词
41
+ * @param context 上下文数据(CodeMap)
42
+ */
43
+ abstract execute(prompt: string, context?: CodeMap): Promise<AIResponse>;
44
+ /**
45
+ * 检查 Provider 是否可用
46
+ */
47
+ abstract isAvailable(): Promise<boolean>;
48
+ /**
49
+ * 获取 Provider 类型
50
+ */
51
+ getProviderType(): string;
52
+ /**
53
+ * 销毁 Provider(可选实现)
54
+ */
55
+ destroy(): void;
56
+ }
57
+ /**
58
+ * Provider 类型枚举
59
+ */
60
+ export type ProviderType = 'claude' | 'codex' | 'openai' | 'gemini';
61
+ /**
62
+ * Provider 工厂配置
63
+ */
64
+ export interface ProviderFactoryConfig {
65
+ /** 使用的 Provider 类型 */
66
+ provider?: ProviderType;
67
+ /** Provider 配置 */
68
+ config?: AIProviderConfig;
69
+ }
70
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/ai/provider.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,eAAe;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,KAAK,CAAC,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED;;;GAGG;AACH,8BAAsB,UAAU;IAC9B,kBAAkB;IAClB,kBAAyB,IAAI,EAAE,MAAM,CAAC;IAEtC,WAAW;IACX,SAAS,CAAC,MAAM,EAAE,gBAAgB,CAAC;gBAEvB,MAAM,GAAE,gBAAqB;IAQzC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAExE;;OAEG;IACH,QAAQ,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAExC;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,OAAO,IAAI,IAAI;CAGhB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,sBAAsB;IACtB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,kBAAkB;IAClB,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B"}
@@ -0,0 +1,31 @@
1
+ // ============================================
2
+ // AI Provider 基础类型定义
3
+ // ============================================
4
+ /**
5
+ * AI Provider 基类
6
+ * 所有 AI Provider 都应继承此类
7
+ */
8
+ export class AIProvider {
9
+ /** 默认配置 */
10
+ config;
11
+ constructor(config = {}) {
12
+ this.config = {
13
+ timeout: 60000, // 默认 60 秒
14
+ maxTokens: 4000,
15
+ ...config
16
+ };
17
+ }
18
+ /**
19
+ * 获取 Provider 类型
20
+ */
21
+ getProviderType() {
22
+ return this.name;
23
+ }
24
+ /**
25
+ * 销毁 Provider(可选实现)
26
+ */
27
+ destroy() {
28
+ // 默认空实现,子类可覆盖
29
+ }
30
+ }
31
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/ai/provider.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,qBAAqB;AACrB,+CAA+C;AAgC/C;;;GAGG;AACH,MAAM,OAAgB,UAAU;IAI9B,WAAW;IACD,MAAM,CAAmB;IAEnC,YAAY,SAA2B,EAAE;QACvC,IAAI,CAAC,MAAM,GAAG;YACZ,OAAO,EAAE,KAAK,EAAE,UAAU;YAC1B,SAAS,EAAE,IAAI;YACf,GAAG,MAAM;SACV,CAAC;IACJ,CAAC;IAcD;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,cAAc;IAChB,CAAC;CACF"}
@@ -0,0 +1,90 @@
1
+ import type { CodeMap } from '../types/index.js';
2
+ /**
3
+ * Subagent 输入类型
4
+ */
5
+ export interface SubagentInput {
6
+ project: CodeMap['project'];
7
+ summary: CodeMap['summary'];
8
+ modules: CodeMap['modules'];
9
+ dependencies: CodeMap['dependencies'];
10
+ requestType: 'overview' | 'analysis' | 'documentation';
11
+ options: {
12
+ includeContext: boolean;
13
+ maxModules: number;
14
+ };
15
+ }
16
+ /**
17
+ * 架构信息
18
+ */
19
+ export interface ArchitectureInfo {
20
+ pattern: string;
21
+ layers: Array<{
22
+ name: string;
23
+ responsibility: string;
24
+ modules: string[];
25
+ }>;
26
+ metrics: {
27
+ coupling: 'low' | 'medium' | 'high';
28
+ cohesion: 'low' | 'medium' | 'high';
29
+ complexity: 'low' | 'medium' | 'high';
30
+ };
31
+ }
32
+ /**
33
+ * Subagent 输出类型
34
+ */
35
+ export interface SubagentOutput {
36
+ type: string;
37
+ title: string;
38
+ content: string;
39
+ highlights: string[];
40
+ architecture?: ArchitectureInfo;
41
+ metadata: {
42
+ generatedAt: string;
43
+ model: string;
44
+ };
45
+ }
46
+ /**
47
+ * Subagent Caller 配置
48
+ */
49
+ export interface SubagentCallerConfig {
50
+ /** CLI 路径 */
51
+ cliPath?: string;
52
+ /** 超时时间(毫秒) */
53
+ timeout?: number;
54
+ /** 子 agent 名称 */
55
+ subagentName?: string;
56
+ }
57
+ /**
58
+ * Subagent Caller - 通过 Claude CLI 调用 subagent
59
+ */
60
+ export declare class SubagentCaller {
61
+ private cliPath;
62
+ private timeout;
63
+ private subagentName;
64
+ constructor(config?: SubagentCallerConfig);
65
+ /**
66
+ * 调用 subagent 生成项目概述
67
+ */
68
+ generateOverview(codeMap: CodeMap): Promise<SubagentOutput>;
69
+ /**
70
+ * 构建调用 subagent 的 prompt
71
+ */
72
+ private buildPrompt;
73
+ /**
74
+ * 执行 CLI 调用
75
+ */
76
+ private execute;
77
+ /**
78
+ * 解析 subagent 输出
79
+ */
80
+ private parseOutput;
81
+ /**
82
+ * 检查 CLI 是否可用
83
+ */
84
+ isAvailable(): Promise<boolean>;
85
+ }
86
+ /**
87
+ * 创建默认的 SubagentCaller 实例
88
+ */
89
+ export declare function createSubagentCaller(config?: SubagentCallerConfig): SubagentCaller;
90
+ //# sourceMappingURL=subagent-caller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-caller.d.ts","sourceRoot":"","sources":["../../src/ai/subagent-caller.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACtC,WAAW,EAAE,UAAU,GAAG,UAAU,GAAG,eAAe,CAAC;IACvD,OAAO,EAAE;QACP,cAAc,EAAE,OAAO,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,cAAc,EAAE,MAAM,CAAC;QACvB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC,CAAC;IACH,OAAO,EAAE;QACP,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;QACpC,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;QACpC,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;KACvC,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,QAAQ,EAAE;QACR,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,aAAa;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAS;gBAEjB,MAAM,GAAE,oBAAyB;IAQ7C;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IA8BjE;;OAEG;IACH,OAAO,CAAC,WAAW;IAkGnB;;OAEG;IACH,OAAO,CAAC,OAAO;IAyDf;;OAEG;IACH,OAAO,CAAC,WAAW;IAwDnB;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAqBtC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,oBAAoB,GAAG,cAAc,CAElF"}
@@ -0,0 +1,280 @@
1
+ // ============================================
2
+ // Subagent Caller - Task 工具调用封装
3
+ // ============================================
4
+ import { spawn } from 'child_process';
5
+ /**
6
+ * Subagent Caller - 通过 Claude CLI 调用 subagent
7
+ */
8
+ export class SubagentCaller {
9
+ cliPath;
10
+ timeout;
11
+ subagentName;
12
+ constructor(config = {}) {
13
+ this.cliPath = config.cliPath || 'claude';
14
+ this.timeout = config.timeout || 120000; // 默认 2 分钟
15
+ this.subagentName = config.subagentName || 'ai-generator';
16
+ // 使用 subagentName 构建提示词(用于日志或调试)
17
+ void this.subagentName;
18
+ }
19
+ /**
20
+ * 调用 subagent 生成项目概述
21
+ */
22
+ async generateOverview(codeMap) {
23
+ // 准备输入数据
24
+ const input = {
25
+ project: codeMap.project,
26
+ summary: {
27
+ totalFiles: codeMap.summary.totalFiles,
28
+ totalModules: codeMap.summary.totalModules,
29
+ totalExports: codeMap.summary.totalExports,
30
+ totalTypes: codeMap.summary.totalTypes,
31
+ totalLines: codeMap.summary.totalLines
32
+ },
33
+ modules: codeMap.modules.slice(0, 20), // 限制数量
34
+ dependencies: codeMap.dependencies,
35
+ requestType: 'overview',
36
+ options: {
37
+ includeContext: true,
38
+ maxModules: 20
39
+ }
40
+ };
41
+ // 构建 prompt
42
+ const prompt = this.buildPrompt(input);
43
+ // 调用 CLI
44
+ const result = await this.execute(prompt);
45
+ // 解析输出
46
+ return this.parseOutput(result);
47
+ }
48
+ /**
49
+ * 构建调用 subagent 的 prompt
50
+ */
51
+ buildPrompt(input) {
52
+ const contextJson = JSON.stringify(input, null, 2);
53
+ return `# AI Generator Subagent
54
+
55
+ 你是 AI Generator Subagent,负责根据 CodeMap 数据生成专业的项目概述。
56
+
57
+ ## 角色定义
58
+
59
+ 你是一位专业的软件架构师,擅长分析 TypeScript/JavaScript 项目结构,识别架构模式,并提供有价值的见解。
60
+
61
+ ## 输入数据
62
+
63
+ \`\`\`json
64
+ ${contextJson}
65
+ \`\`\`
66
+
67
+ ## 任务
68
+
69
+ 根据上述 CodeMap 数据,生成一个专业的项目概述,需要包含以下内容:
70
+
71
+ ### 1. 项目概览
72
+ - 项目名称和基本信息
73
+ - 技术栈识别
74
+ - 总体架构描述
75
+
76
+ ### 2. 统计信息
77
+ - 文件总数、代码行数、模块数量
78
+ - 导出符号数量和类型分布
79
+
80
+ ### 3. 核心模块分析
81
+ - 最重要的 5-10 个模块及其职责
82
+ - 每个模块的关键导出
83
+ - 模块间的依赖关系
84
+
85
+ ### 4. 架构特点
86
+ - 识别的架构模式(如分层、DDD、微服务等)
87
+ - 各层的职责和边界
88
+ - 依赖方向和耦合度
89
+
90
+ ### 5. 亮点模块
91
+ - 值得注意的模块或设计模式
92
+ - 可能的创新点或最佳实践
93
+
94
+ ### 6. 建议(可选)
95
+ - 潜在的改进方向
96
+ - 架构优化建议
97
+
98
+ ## 输出格式
99
+
100
+ 请返回 JSON 格式的结果,包含以下字段:
101
+
102
+ \`\`\`json
103
+ {
104
+ "type": "overview",
105
+ "title": "项目概述标题",
106
+ "content": "Markdown 格式的详细描述(支持多级标题、列表、表格等)",
107
+ "highlights": ["亮点1", "亮点2", ...],
108
+ "architecture": {
109
+ "pattern": "识别的架构模式",
110
+ "layers": [
111
+ {
112
+ "name": "层名称",
113
+ "responsibility": "职责描述",
114
+ "modules": ["模块列表"]
115
+ }
116
+ ],
117
+ "metrics": {
118
+ "coupling": "low|medium|high",
119
+ "cohesion": "low|medium|high",
120
+ "complexity": "low|medium|high"
121
+ }
122
+ },
123
+ "metadata": {
124
+ "generatedAt": "ISO 时间戳",
125
+ "model": "sonnet"
126
+ }
127
+ }
128
+ \`\`\`
129
+
130
+ ## 输出指南
131
+
132
+ 1. **准确性**: 确保分析基于实际数据,不要臆造信息
133
+ 2. **专业性**: 使用标准的软件架构术语
134
+ 3. **简洁性**: 保持内容简洁但完整,突出重点
135
+ 4. **可读性**: 使用 Markdown 格式提高可读性
136
+ 5. **实用性**: 提供有价值的架构见解和建议
137
+
138
+ ## 注意事项
139
+
140
+ - 如果某些信息无法从输入数据中确定,请标注为"未识别"或"需要更多信息"
141
+ - 优先分析依赖关系最复杂的模块
142
+ - 关注导出数量多、被依赖次数多的核心模块
143
+
144
+ 请确保返回的是有效的 JSON 格式,不要包含其他文字说明。
145
+ `;
146
+ }
147
+ /**
148
+ * 执行 CLI 调用
149
+ */
150
+ execute(prompt) {
151
+ return new Promise((resolve, reject) => {
152
+ const args = [
153
+ '-p',
154
+ '--output-format', 'json',
155
+ '--dangerously-skip-permissions'
156
+ ];
157
+ let stdout = '';
158
+ let stderr = '';
159
+ let killed = false;
160
+ const proc = spawn(this.cliPath, args, {
161
+ stdio: ['pipe', 'pipe', 'pipe']
162
+ });
163
+ // 超时处理
164
+ const timeoutId = setTimeout(() => {
165
+ killed = true;
166
+ proc.kill('SIGTERM');
167
+ reject(new Error(`Subagent 执行超时(${this.timeout / 1000}秒)`));
168
+ }, this.timeout);
169
+ proc.stdout.on('data', (data) => {
170
+ stdout += data.toString();
171
+ });
172
+ proc.stderr.on('data', (data) => {
173
+ stderr += data.toString();
174
+ });
175
+ proc.on('close', (code) => {
176
+ clearTimeout(timeoutId);
177
+ if (killed)
178
+ return;
179
+ if (code !== 0 && code !== null) {
180
+ reject(new Error(`Subagent CLI 错误: ${stderr || `exit code ${code}`}`));
181
+ return;
182
+ }
183
+ resolve(stdout);
184
+ });
185
+ proc.on('error', (error) => {
186
+ clearTimeout(timeoutId);
187
+ if (!killed) {
188
+ reject(new Error(`Subagent CLI 执行失败: ${error.message}`));
189
+ }
190
+ });
191
+ // 发送提示词
192
+ proc.stdin.write(prompt);
193
+ proc.stdin.end();
194
+ });
195
+ }
196
+ /**
197
+ * 解析 subagent 输出
198
+ */
199
+ parseOutput(stdout) {
200
+ // Claude 可能输出多行 JSON,需要找到有效的 JSON
201
+ const lines = stdout.trim().split('\n');
202
+ let jsonStr = '';
203
+ // 从后往前找有效的 JSON 对象
204
+ for (let i = lines.length - 1; i >= 0; i--) {
205
+ const line = lines[i].trim();
206
+ if (line.startsWith('{') && line.endsWith('}')) {
207
+ jsonStr = line;
208
+ break;
209
+ }
210
+ }
211
+ if (!jsonStr) {
212
+ // 如果没有 JSON,返回默认格式
213
+ return {
214
+ type: 'overview',
215
+ title: '项目概述',
216
+ content: stdout.trim(),
217
+ highlights: [],
218
+ metadata: {
219
+ generatedAt: new Date().toISOString(),
220
+ model: 'unknown'
221
+ }
222
+ };
223
+ }
224
+ try {
225
+ const parsed = JSON.parse(jsonStr);
226
+ return {
227
+ type: parsed.type || 'overview',
228
+ title: parsed.title || '项目概述',
229
+ content: parsed.content || stdout.trim(),
230
+ highlights: parsed.highlights || [],
231
+ architecture: parsed.architecture,
232
+ metadata: {
233
+ generatedAt: parsed.metadata?.generatedAt || new Date().toISOString(),
234
+ model: parsed.metadata?.model || 'sonnet'
235
+ }
236
+ };
237
+ }
238
+ catch (error) {
239
+ // 解析失败,返回原始内容
240
+ return {
241
+ type: 'overview',
242
+ title: '项目概述',
243
+ content: stdout.trim(),
244
+ highlights: [],
245
+ metadata: {
246
+ generatedAt: new Date().toISOString(),
247
+ model: 'parse-error'
248
+ }
249
+ };
250
+ }
251
+ }
252
+ /**
253
+ * 检查 CLI 是否可用
254
+ */
255
+ async isAvailable() {
256
+ return new Promise((resolve) => {
257
+ const proc = spawn(this.cliPath, ['--version'], {
258
+ stdio: 'ignore'
259
+ });
260
+ proc.on('close', (code) => {
261
+ resolve(code === 0);
262
+ });
263
+ proc.on('error', () => {
264
+ resolve(false);
265
+ });
266
+ // 2 秒超时
267
+ setTimeout(() => {
268
+ proc.kill();
269
+ resolve(false);
270
+ }, 2000);
271
+ });
272
+ }
273
+ }
274
+ /**
275
+ * 创建默认的 SubagentCaller 实例
276
+ */
277
+ export function createSubagentCaller(config) {
278
+ return new SubagentCaller(config);
279
+ }
280
+ //# sourceMappingURL=subagent-caller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-caller.js","sourceRoot":"","sources":["../../src/ai/subagent-caller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ export interface AIProviderOptions {
2
+ /** Provider 名称 */
3
+ name: string;
4
+ /** 超时时间(毫秒) */
5
+ timeout?: number;
6
+ /** 最大重试次数 */
7
+ maxRetries?: number;
8
+ /** 是否启用调试模式 */
9
+ debug?: boolean;
10
+ /** 自定义环境变量 */
11
+ env?: Record<string, string>;
12
+ }
13
+ export interface ChatRequest {
14
+ /** 提示词 */
15
+ prompt: string;
16
+ /** 额外上下文 */
17
+ context?: Record<string, unknown>;
18
+ /** 系统提示词 */
19
+ systemPrompt?: string;
20
+ /** 最大令牌数 */
21
+ maxTokens?: number;
22
+ /** 温度参数 */
23
+ temperature?: number;
24
+ }
25
+ export interface ChatResponse {
26
+ /** 响应内容 */
27
+ content: string;
28
+ /** 使用的 provider */
29
+ provider: string;
30
+ /** 消耗的令牌数 */
31
+ usage?: {
32
+ promptTokens: number;
33
+ completionTokens: number;
34
+ totalTokens: number;
35
+ };
36
+ /** 响应时间(毫秒) */
37
+ latency: number;
38
+ }
39
+ export interface ProviderStatus {
40
+ /** Provider 名称 */
41
+ name: string;
42
+ /** 是否可用 */
43
+ isAvailable: boolean;
44
+ /** 检查时间 */
45
+ checkedAt: string;
46
+ /** 错误信息(如果不可用) */
47
+ error?: string;
48
+ }
49
+ export type ProviderType = 'claude' | 'codex';
50
+ export interface ProviderInfo {
51
+ /** Provider 类型 */
52
+ type: ProviderType;
53
+ /** 显示名称 */
54
+ displayName: string;
55
+ /** 描述 */
56
+ description: string;
57
+ /** CLI 命令 */
58
+ command: string;
59
+ /** 默认参数 */
60
+ defaultArgs: string[];
61
+ }
62
+ export interface CLIResult {
63
+ /** 退出码 */
64
+ exitCode: number;
65
+ /** 标准输出 */
66
+ stdout: string;
67
+ /** 标准错误 */
68
+ stderr: string;
69
+ }
70
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ai/types.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,iBAAiB;IAChC,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc;IACd,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAGD,MAAM,WAAW,WAAW;IAC1B,UAAU;IACV,MAAM,EAAE,MAAM,CAAC;IACf,YAAY;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,YAAY;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,MAAM,WAAW,YAAY;IAC3B,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa;IACb,KAAK,CAAC,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,cAAc;IAC7B,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC;AAG9C,MAAM,WAAW,YAAY;IAC3B,kBAAkB;IAClB,IAAI,EAAE,YAAY,CAAC;IACnB,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS;IACT,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW;IACX,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAGD,MAAM,WAAW,SAAS;IACxB,UAAU;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW;IACX,MAAM,EAAE,MAAM,CAAC;IACf,WAAW;IACX,MAAM,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,5 @@
1
+ // ============================================
2
+ // AI Provider 类型定义
3
+ // ============================================
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/ai/types.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,mBAAmB;AACnB,+CAA+C"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * 计算文件的 SHA256 哈希值
3
+ * @param filePath 文件路径
4
+ * @returns 文件内容的 SHA256 哈希值(十六进制字符串)
5
+ */
6
+ export declare function computeFileHash(filePath: string): Promise<string>;
7
+ /**
8
+ * 计算多个文件的哈希
9
+ * @param filePaths 文件路径数组
10
+ * @returns 文件路径到哈希值的映射
11
+ */
12
+ export declare function computeFileHashes(filePaths: string[]): Promise<Map<string, string>>;
13
+ /**
14
+ * 比较两个文件的哈希值
15
+ * @param filePath1 第一个文件路径
16
+ * @param filePath2 第二个文件路径
17
+ * @returns 是否相等
18
+ */
19
+ export declare function compareFileHashes(filePath1: string, filePath2: string): Promise<boolean>;
20
+ /**
21
+ * 文件哈希缓存类
22
+ * 缓存文件的哈希值,避免重复计算
23
+ */
24
+ export declare class FileHashCache {
25
+ private hashCache;
26
+ private fsStatCache;
27
+ /**
28
+ * 获取文件的哈希值
29
+ * 如果文件未修改,返回缓存的哈希值
30
+ * @param filePath 文件路径
31
+ * @returns 文件的 SHA256 哈希值
32
+ */
33
+ getHash(filePath: string): Promise<string>;
34
+ /**
35
+ * 获取多个文件的哈希值
36
+ * @param filePaths 文件路径数组
37
+ * @returns 文件路径到哈希值的映射
38
+ */
39
+ getHashes(filePaths: string[]): Promise<Map<string, string>>;
40
+ /**
41
+ * 检查文件是否已修改
42
+ * @param filePath 文件路径
43
+ * @returns 文件是否已修改
44
+ */
45
+ hasChanged(filePath: string): Promise<boolean>;
46
+ /**
47
+ * 清除指定文件的缓存
48
+ * @param filePath 文件路径
49
+ */
50
+ invalidate(filePath: string): void;
51
+ /**
52
+ * 清除所有缓存
53
+ */
54
+ clear(): void;
55
+ /**
56
+ * 获取缓存大小
57
+ */
58
+ get size(): number;
59
+ }
60
+ /**
61
+ * 生成缓存键
62
+ * @param filePath 文件路径
63
+ * @param hash 文件哈希值
64
+ * @returns 缓存键
65
+ */
66
+ export declare function generateCacheKey(filePath: string, hash: string): string;
67
+ /**
68
+ * 解析缓存键
69
+ * @param cacheKey 缓存键
70
+ * @returns 文件名和哈希值
71
+ */
72
+ export declare function parseCacheKey(cacheKey: string): {
73
+ filename: string;
74
+ hash: string;
75
+ };
76
+ //# sourceMappingURL=file-hash-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-hash-cache.d.ts","sourceRoot":"","sources":["../../src/cache/file-hash-cache.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAKvE;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAgBzF;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC,CAOlB;AAED;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAsD;IACvE,OAAO,CAAC,WAAW,CAAsD;IAEzE;;;;;OAKG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAsBhD;;;;OAIG;IACG,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAalE;;;;OAIG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAkBpD;;;OAGG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKlC;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAMlF"}