@su-record/vibe 3.0.0 → 3.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 (341) hide show
  1. package/hooks/scripts/__tests__/.vibe/command-log.txt +3 -78
  2. package/hooks/scripts/__tests__/.vibe/memories/memories.db +0 -0
  3. package/hooks/scripts/__tests__/.vibe/memories/memories.db-shm +0 -0
  4. package/hooks/scripts/__tests__/.vibe/memories/memories.db-wal +0 -0
  5. package/hooks/scripts/__tests__/clone-behaviors.test.js +64 -0
  6. package/hooks/scripts/__tests__/clone-merge-responsive.test.js +106 -0
  7. package/hooks/scripts/clone-extract.js +242 -28
  8. package/hooks/scripts/clone-merge-responsive.js +184 -0
  9. package/hooks/scripts/clone-spec.js +33 -8
  10. package/hooks/scripts/clone-validate.js +15 -9
  11. package/package.json +5 -2
  12. package/skills/clone/SKILL.md +132 -55
  13. package/skills/vibe.clone/SKILL.md +39 -19
  14. package/dist/cli/llm/gemini-commands.d.ts +0 -25
  15. package/dist/cli/llm/gemini-commands.d.ts.map +0 -1
  16. package/dist/cli/llm/gemini-commands.js +0 -143
  17. package/dist/cli/llm/gemini-commands.js.map +0 -1
  18. package/dist/cli/postinstall/codex-agents.d.ts +0 -24
  19. package/dist/cli/postinstall/codex-agents.d.ts.map +0 -1
  20. package/dist/cli/postinstall/codex-agents.js +0 -114
  21. package/dist/cli/postinstall/codex-agents.js.map +0 -1
  22. package/dist/cli/postinstall/codex-instruction.d.ts +0 -10
  23. package/dist/cli/postinstall/codex-instruction.d.ts.map +0 -1
  24. package/dist/cli/postinstall/codex-instruction.js +0 -56
  25. package/dist/cli/postinstall/codex-instruction.js.map +0 -1
  26. package/dist/cli/postinstall/gemini-agents.d.ts +0 -12
  27. package/dist/cli/postinstall/gemini-agents.d.ts.map +0 -1
  28. package/dist/cli/postinstall/gemini-agents.js +0 -80
  29. package/dist/cli/postinstall/gemini-agents.js.map +0 -1
  30. package/dist/cli/postinstall/gemini-instruction.d.ts +0 -10
  31. package/dist/cli/postinstall/gemini-instruction.d.ts.map +0 -1
  32. package/dist/cli/postinstall/gemini-instruction.js +0 -59
  33. package/dist/cli/postinstall/gemini-instruction.js.map +0 -1
  34. package/dist/infra/lib/ContextCompressor.d.ts +0 -104
  35. package/dist/infra/lib/ContextCompressor.d.ts.map +0 -1
  36. package/dist/infra/lib/ContextCompressor.js +0 -297
  37. package/dist/infra/lib/ContextCompressor.js.map +0 -1
  38. package/dist/infra/lib/ContextCompressor.test.d.ts +0 -2
  39. package/dist/infra/lib/ContextCompressor.test.d.ts.map +0 -1
  40. package/dist/infra/lib/ContextCompressor.test.js +0 -25
  41. package/dist/infra/lib/ContextCompressor.test.js.map +0 -1
  42. package/dist/infra/lib/ProgressTracker.d.ts +0 -73
  43. package/dist/infra/lib/ProgressTracker.d.ts.map +0 -1
  44. package/dist/infra/lib/ProgressTracker.js +0 -267
  45. package/dist/infra/lib/ProgressTracker.js.map +0 -1
  46. package/dist/infra/lib/TokenBudgetTracker.d.ts +0 -68
  47. package/dist/infra/lib/TokenBudgetTracker.d.ts.map +0 -1
  48. package/dist/infra/lib/TokenBudgetTracker.js +0 -191
  49. package/dist/infra/lib/TokenBudgetTracker.js.map +0 -1
  50. package/dist/infra/lib/autonomy/AuditStore.d.ts +0 -63
  51. package/dist/infra/lib/autonomy/AuditStore.d.ts.map +0 -1
  52. package/dist/infra/lib/autonomy/AuditStore.js +0 -185
  53. package/dist/infra/lib/autonomy/AuditStore.js.map +0 -1
  54. package/dist/infra/lib/autonomy/AutonomyConfig.d.ts +0 -84
  55. package/dist/infra/lib/autonomy/AutonomyConfig.d.ts.map +0 -1
  56. package/dist/infra/lib/autonomy/AutonomyConfig.js +0 -49
  57. package/dist/infra/lib/autonomy/AutonomyConfig.js.map +0 -1
  58. package/dist/infra/lib/autonomy/AutonomyOrchestrator.d.ts +0 -78
  59. package/dist/infra/lib/autonomy/AutonomyOrchestrator.d.ts.map +0 -1
  60. package/dist/infra/lib/autonomy/AutonomyOrchestrator.js +0 -246
  61. package/dist/infra/lib/autonomy/AutonomyOrchestrator.js.map +0 -1
  62. package/dist/infra/lib/autonomy/BackgroundMonitor.d.ts +0 -36
  63. package/dist/infra/lib/autonomy/BackgroundMonitor.d.ts.map +0 -1
  64. package/dist/infra/lib/autonomy/BackgroundMonitor.js +0 -138
  65. package/dist/infra/lib/autonomy/BackgroundMonitor.js.map +0 -1
  66. package/dist/infra/lib/autonomy/CollaborationProtocol.d.ts +0 -56
  67. package/dist/infra/lib/autonomy/CollaborationProtocol.d.ts.map +0 -1
  68. package/dist/infra/lib/autonomy/CollaborationProtocol.js +0 -122
  69. package/dist/infra/lib/autonomy/CollaborationProtocol.js.map +0 -1
  70. package/dist/infra/lib/autonomy/ConfirmationManager.d.ts +0 -42
  71. package/dist/infra/lib/autonomy/ConfirmationManager.d.ts.map +0 -1
  72. package/dist/infra/lib/autonomy/ConfirmationManager.js +0 -200
  73. package/dist/infra/lib/autonomy/ConfirmationManager.js.map +0 -1
  74. package/dist/infra/lib/autonomy/ConfirmationStore.d.ts +0 -55
  75. package/dist/infra/lib/autonomy/ConfirmationStore.d.ts.map +0 -1
  76. package/dist/infra/lib/autonomy/ConfirmationStore.js +0 -130
  77. package/dist/infra/lib/autonomy/ConfirmationStore.js.map +0 -1
  78. package/dist/infra/lib/autonomy/EventBus.d.ts +0 -20
  79. package/dist/infra/lib/autonomy/EventBus.d.ts.map +0 -1
  80. package/dist/infra/lib/autonomy/EventBus.js +0 -119
  81. package/dist/infra/lib/autonomy/EventBus.js.map +0 -1
  82. package/dist/infra/lib/autonomy/EventOutbox.d.ts +0 -32
  83. package/dist/infra/lib/autonomy/EventOutbox.d.ts.map +0 -1
  84. package/dist/infra/lib/autonomy/EventOutbox.js +0 -152
  85. package/dist/infra/lib/autonomy/EventOutbox.js.map +0 -1
  86. package/dist/infra/lib/autonomy/NotificationDispatcher.d.ts +0 -24
  87. package/dist/infra/lib/autonomy/NotificationDispatcher.d.ts.map +0 -1
  88. package/dist/infra/lib/autonomy/NotificationDispatcher.js +0 -112
  89. package/dist/infra/lib/autonomy/NotificationDispatcher.js.map +0 -1
  90. package/dist/infra/lib/autonomy/PolicyEngine.d.ts +0 -76
  91. package/dist/infra/lib/autonomy/PolicyEngine.d.ts.map +0 -1
  92. package/dist/infra/lib/autonomy/PolicyEngine.js +0 -208
  93. package/dist/infra/lib/autonomy/PolicyEngine.js.map +0 -1
  94. package/dist/infra/lib/autonomy/ProactiveAnalyzer.d.ts +0 -61
  95. package/dist/infra/lib/autonomy/ProactiveAnalyzer.d.ts.map +0 -1
  96. package/dist/infra/lib/autonomy/ProactiveAnalyzer.js +0 -236
  97. package/dist/infra/lib/autonomy/ProactiveAnalyzer.js.map +0 -1
  98. package/dist/infra/lib/autonomy/RiskClassifier.d.ts +0 -35
  99. package/dist/infra/lib/autonomy/RiskClassifier.d.ts.map +0 -1
  100. package/dist/infra/lib/autonomy/RiskClassifier.js +0 -147
  101. package/dist/infra/lib/autonomy/RiskClassifier.js.map +0 -1
  102. package/dist/infra/lib/autonomy/SecuritySentinel.d.ts +0 -51
  103. package/dist/infra/lib/autonomy/SecuritySentinel.d.ts.map +0 -1
  104. package/dist/infra/lib/autonomy/SecuritySentinel.js +0 -162
  105. package/dist/infra/lib/autonomy/SecuritySentinel.js.map +0 -1
  106. package/dist/infra/lib/autonomy/SuggestionStore.d.ts +0 -54
  107. package/dist/infra/lib/autonomy/SuggestionStore.d.ts.map +0 -1
  108. package/dist/infra/lib/autonomy/SuggestionStore.js +0 -144
  109. package/dist/infra/lib/autonomy/SuggestionStore.js.map +0 -1
  110. package/dist/infra/lib/autonomy/TaskDecomposer.d.ts +0 -38
  111. package/dist/infra/lib/autonomy/TaskDecomposer.d.ts.map +0 -1
  112. package/dist/infra/lib/autonomy/TaskDecomposer.js +0 -175
  113. package/dist/infra/lib/autonomy/TaskDecomposer.js.map +0 -1
  114. package/dist/infra/lib/autonomy/__tests__/audit-store.test.d.ts +0 -2
  115. package/dist/infra/lib/autonomy/__tests__/audit-store.test.d.ts.map +0 -1
  116. package/dist/infra/lib/autonomy/__tests__/audit-store.test.js +0 -198
  117. package/dist/infra/lib/autonomy/__tests__/audit-store.test.js.map +0 -1
  118. package/dist/infra/lib/autonomy/__tests__/event-bus.test.d.ts +0 -2
  119. package/dist/infra/lib/autonomy/__tests__/event-bus.test.d.ts.map +0 -1
  120. package/dist/infra/lib/autonomy/__tests__/event-bus.test.js +0 -225
  121. package/dist/infra/lib/autonomy/__tests__/event-bus.test.js.map +0 -1
  122. package/dist/infra/lib/autonomy/__tests__/event-core.test.d.ts +0 -2
  123. package/dist/infra/lib/autonomy/__tests__/event-core.test.d.ts.map +0 -1
  124. package/dist/infra/lib/autonomy/__tests__/event-core.test.js +0 -194
  125. package/dist/infra/lib/autonomy/__tests__/event-core.test.js.map +0 -1
  126. package/dist/infra/lib/autonomy/__tests__/governance.test.d.ts +0 -2
  127. package/dist/infra/lib/autonomy/__tests__/governance.test.d.ts.map +0 -1
  128. package/dist/infra/lib/autonomy/__tests__/governance.test.js +0 -540
  129. package/dist/infra/lib/autonomy/__tests__/governance.test.js.map +0 -1
  130. package/dist/infra/lib/autonomy/__tests__/integration.test.d.ts +0 -2
  131. package/dist/infra/lib/autonomy/__tests__/integration.test.d.ts.map +0 -1
  132. package/dist/infra/lib/autonomy/__tests__/integration.test.js +0 -480
  133. package/dist/infra/lib/autonomy/__tests__/integration.test.js.map +0 -1
  134. package/dist/infra/lib/autonomy/__tests__/proactive.test.d.ts +0 -2
  135. package/dist/infra/lib/autonomy/__tests__/proactive.test.d.ts.map +0 -1
  136. package/dist/infra/lib/autonomy/__tests__/proactive.test.js +0 -410
  137. package/dist/infra/lib/autonomy/__tests__/proactive.test.js.map +0 -1
  138. package/dist/infra/lib/autonomy/__tests__/sentinel.test.d.ts +0 -2
  139. package/dist/infra/lib/autonomy/__tests__/sentinel.test.d.ts.map +0 -1
  140. package/dist/infra/lib/autonomy/__tests__/sentinel.test.js +0 -486
  141. package/dist/infra/lib/autonomy/__tests__/sentinel.test.js.map +0 -1
  142. package/dist/infra/lib/autonomy/index.d.ts +0 -18
  143. package/dist/infra/lib/autonomy/index.d.ts.map +0 -1
  144. package/dist/infra/lib/autonomy/index.js +0 -22
  145. package/dist/infra/lib/autonomy/index.js.map +0 -1
  146. package/dist/infra/lib/autonomy/schemas.d.ts +0 -317
  147. package/dist/infra/lib/autonomy/schemas.d.ts.map +0 -1
  148. package/dist/infra/lib/autonomy/schemas.js +0 -90
  149. package/dist/infra/lib/autonomy/schemas.js.map +0 -1
  150. package/dist/infra/lib/claude/index.d.ts +0 -5
  151. package/dist/infra/lib/claude/index.d.ts.map +0 -1
  152. package/dist/infra/lib/claude/index.js +0 -5
  153. package/dist/infra/lib/claude/index.js.map +0 -1
  154. package/dist/infra/lib/claude/storage.d.ts +0 -12
  155. package/dist/infra/lib/claude/storage.d.ts.map +0 -1
  156. package/dist/infra/lib/claude/storage.js +0 -54
  157. package/dist/infra/lib/claude/storage.js.map +0 -1
  158. package/dist/infra/lib/gemini/auth.d.ts +0 -18
  159. package/dist/infra/lib/gemini/auth.d.ts.map +0 -1
  160. package/dist/infra/lib/gemini/auth.js +0 -32
  161. package/dist/infra/lib/gemini/auth.js.map +0 -1
  162. package/dist/infra/lib/gemini/capabilities.d.ts +0 -28
  163. package/dist/infra/lib/gemini/capabilities.d.ts.map +0 -1
  164. package/dist/infra/lib/gemini/capabilities.js +0 -178
  165. package/dist/infra/lib/gemini/capabilities.js.map +0 -1
  166. package/dist/infra/lib/gemini/chat.d.ts +0 -35
  167. package/dist/infra/lib/gemini/chat.d.ts.map +0 -1
  168. package/dist/infra/lib/gemini/chat.js +0 -161
  169. package/dist/infra/lib/gemini/chat.js.map +0 -1
  170. package/dist/infra/lib/gemini/completion.d.ts +0 -12
  171. package/dist/infra/lib/gemini/completion.d.ts.map +0 -1
  172. package/dist/infra/lib/gemini/completion.js +0 -13
  173. package/dist/infra/lib/gemini/completion.js.map +0 -1
  174. package/dist/infra/lib/gemini/constants.d.ts +0 -8
  175. package/dist/infra/lib/gemini/constants.d.ts.map +0 -1
  176. package/dist/infra/lib/gemini/constants.js +0 -11
  177. package/dist/infra/lib/gemini/constants.js.map +0 -1
  178. package/dist/infra/lib/gemini/index.d.ts +0 -13
  179. package/dist/infra/lib/gemini/index.d.ts.map +0 -1
  180. package/dist/infra/lib/gemini/index.js +0 -12
  181. package/dist/infra/lib/gemini/index.js.map +0 -1
  182. package/dist/infra/lib/gemini/models.d.ts +0 -11
  183. package/dist/infra/lib/gemini/models.d.ts.map +0 -1
  184. package/dist/infra/lib/gemini/models.js +0 -38
  185. package/dist/infra/lib/gemini/models.js.map +0 -1
  186. package/dist/infra/lib/gemini/orchestration.d.ts +0 -33
  187. package/dist/infra/lib/gemini/orchestration.d.ts.map +0 -1
  188. package/dist/infra/lib/gemini/orchestration.js +0 -62
  189. package/dist/infra/lib/gemini/orchestration.js.map +0 -1
  190. package/dist/infra/lib/gemini/types.d.ts +0 -115
  191. package/dist/infra/lib/gemini/types.d.ts.map +0 -1
  192. package/dist/infra/lib/gemini/types.js +0 -5
  193. package/dist/infra/lib/gemini/types.js.map +0 -1
  194. package/dist/infra/orchestrator/AgentAnnouncer.d.ts +0 -64
  195. package/dist/infra/orchestrator/AgentAnnouncer.d.ts.map +0 -1
  196. package/dist/infra/orchestrator/AgentAnnouncer.js +0 -127
  197. package/dist/infra/orchestrator/AgentAnnouncer.js.map +0 -1
  198. package/dist/infra/orchestrator/AgentAnnouncer.test.d.ts +0 -5
  199. package/dist/infra/orchestrator/AgentAnnouncer.test.d.ts.map +0 -1
  200. package/dist/infra/orchestrator/AgentAnnouncer.test.js +0 -119
  201. package/dist/infra/orchestrator/AgentAnnouncer.test.js.map +0 -1
  202. package/dist/infra/orchestrator/AgentExecutor.d.ts +0 -22
  203. package/dist/infra/orchestrator/AgentExecutor.d.ts.map +0 -1
  204. package/dist/infra/orchestrator/AgentExecutor.js +0 -272
  205. package/dist/infra/orchestrator/AgentExecutor.js.map +0 -1
  206. package/dist/infra/orchestrator/AgentManager.d.ts +0 -72
  207. package/dist/infra/orchestrator/AgentManager.d.ts.map +0 -1
  208. package/dist/infra/orchestrator/AgentManager.js +0 -183
  209. package/dist/infra/orchestrator/AgentManager.js.map +0 -1
  210. package/dist/infra/orchestrator/AgentManifestCache.d.ts +0 -54
  211. package/dist/infra/orchestrator/AgentManifestCache.d.ts.map +0 -1
  212. package/dist/infra/orchestrator/AgentManifestCache.js +0 -191
  213. package/dist/infra/orchestrator/AgentManifestCache.js.map +0 -1
  214. package/dist/infra/orchestrator/AgentRegistry.d.ts +0 -76
  215. package/dist/infra/orchestrator/AgentRegistry.d.ts.map +0 -1
  216. package/dist/infra/orchestrator/AgentRegistry.js +0 -217
  217. package/dist/infra/orchestrator/AgentRegistry.js.map +0 -1
  218. package/dist/infra/orchestrator/AgentRegistry.test.d.ts +0 -5
  219. package/dist/infra/orchestrator/AgentRegistry.test.d.ts.map +0 -1
  220. package/dist/infra/orchestrator/AgentRegistry.test.js +0 -122
  221. package/dist/infra/orchestrator/AgentRegistry.test.js.map +0 -1
  222. package/dist/infra/orchestrator/BackgroundManager.d.ts +0 -128
  223. package/dist/infra/orchestrator/BackgroundManager.d.ts.map +0 -1
  224. package/dist/infra/orchestrator/BackgroundManager.js +0 -620
  225. package/dist/infra/orchestrator/BackgroundManager.js.map +0 -1
  226. package/dist/infra/orchestrator/BackgroundManager.test.d.ts +0 -6
  227. package/dist/infra/orchestrator/BackgroundManager.test.d.ts.map +0 -1
  228. package/dist/infra/orchestrator/BackgroundManager.test.js +0 -162
  229. package/dist/infra/orchestrator/BackgroundManager.test.js.map +0 -1
  230. package/dist/infra/orchestrator/CheckpointManager.d.ts +0 -54
  231. package/dist/infra/orchestrator/CheckpointManager.d.ts.map +0 -1
  232. package/dist/infra/orchestrator/CheckpointManager.js +0 -121
  233. package/dist/infra/orchestrator/CheckpointManager.js.map +0 -1
  234. package/dist/infra/orchestrator/CodexAgentRuntime.d.ts +0 -12
  235. package/dist/infra/orchestrator/CodexAgentRuntime.d.ts.map +0 -1
  236. package/dist/infra/orchestrator/CodexAgentRuntime.js +0 -94
  237. package/dist/infra/orchestrator/CodexAgentRuntime.js.map +0 -1
  238. package/dist/infra/orchestrator/CodexAgentRuntime.test.d.ts +0 -2
  239. package/dist/infra/orchestrator/CodexAgentRuntime.test.d.ts.map +0 -1
  240. package/dist/infra/orchestrator/CodexAgentRuntime.test.js +0 -37
  241. package/dist/infra/orchestrator/CodexAgentRuntime.test.js.map +0 -1
  242. package/dist/infra/orchestrator/LLMCluster.d.ts +0 -82
  243. package/dist/infra/orchestrator/LLMCluster.d.ts.map +0 -1
  244. package/dist/infra/orchestrator/LLMCluster.js +0 -146
  245. package/dist/infra/orchestrator/LLMCluster.js.map +0 -1
  246. package/dist/infra/orchestrator/MultiLlmResearch.d.ts +0 -31
  247. package/dist/infra/orchestrator/MultiLlmResearch.d.ts.map +0 -1
  248. package/dist/infra/orchestrator/MultiLlmResearch.js +0 -160
  249. package/dist/infra/orchestrator/MultiLlmResearch.js.map +0 -1
  250. package/dist/infra/orchestrator/PhasePipeline.d.ts +0 -122
  251. package/dist/infra/orchestrator/PhasePipeline.d.ts.map +0 -1
  252. package/dist/infra/orchestrator/PhasePipeline.js +0 -385
  253. package/dist/infra/orchestrator/PhasePipeline.js.map +0 -1
  254. package/dist/infra/orchestrator/PhaseResultStore.d.ts +0 -39
  255. package/dist/infra/orchestrator/PhaseResultStore.d.ts.map +0 -1
  256. package/dist/infra/orchestrator/PhaseResultStore.js +0 -151
  257. package/dist/infra/orchestrator/PhaseResultStore.js.map +0 -1
  258. package/dist/infra/orchestrator/SessionStore.d.ts +0 -40
  259. package/dist/infra/orchestrator/SessionStore.d.ts.map +0 -1
  260. package/dist/infra/orchestrator/SessionStore.js +0 -116
  261. package/dist/infra/orchestrator/SessionStore.js.map +0 -1
  262. package/dist/infra/orchestrator/SmartRouter.d.ts +0 -90
  263. package/dist/infra/orchestrator/SmartRouter.d.ts.map +0 -1
  264. package/dist/infra/orchestrator/SmartRouter.js +0 -277
  265. package/dist/infra/orchestrator/SmartRouter.js.map +0 -1
  266. package/dist/infra/orchestrator/SmartRouter.test.d.ts +0 -5
  267. package/dist/infra/orchestrator/SmartRouter.test.d.ts.map +0 -1
  268. package/dist/infra/orchestrator/SmartRouter.test.js +0 -484
  269. package/dist/infra/orchestrator/SmartRouter.test.js.map +0 -1
  270. package/dist/infra/orchestrator/SwarmOrchestrator.d.ts +0 -143
  271. package/dist/infra/orchestrator/SwarmOrchestrator.d.ts.map +0 -1
  272. package/dist/infra/orchestrator/SwarmOrchestrator.js +0 -378
  273. package/dist/infra/orchestrator/SwarmOrchestrator.js.map +0 -1
  274. package/dist/infra/orchestrator/SwarmOrchestrator.test.d.ts +0 -5
  275. package/dist/infra/orchestrator/SwarmOrchestrator.test.d.ts.map +0 -1
  276. package/dist/infra/orchestrator/SwarmOrchestrator.test.js +0 -95
  277. package/dist/infra/orchestrator/SwarmOrchestrator.test.js.map +0 -1
  278. package/dist/infra/orchestrator/agentDiscovery.d.ts +0 -26
  279. package/dist/infra/orchestrator/agentDiscovery.d.ts.map +0 -1
  280. package/dist/infra/orchestrator/agentDiscovery.js +0 -175
  281. package/dist/infra/orchestrator/agentDiscovery.js.map +0 -1
  282. package/dist/infra/orchestrator/backgroundAgent.d.ts +0 -9
  283. package/dist/infra/orchestrator/backgroundAgent.d.ts.map +0 -1
  284. package/dist/infra/orchestrator/backgroundAgent.js +0 -10
  285. package/dist/infra/orchestrator/backgroundAgent.js.map +0 -1
  286. package/dist/infra/orchestrator/index.d.ts +0 -207
  287. package/dist/infra/orchestrator/index.d.ts.map +0 -1
  288. package/dist/infra/orchestrator/index.js +0 -362
  289. package/dist/infra/orchestrator/index.js.map +0 -1
  290. package/dist/infra/orchestrator/orchestrator.d.ts +0 -60
  291. package/dist/infra/orchestrator/orchestrator.d.ts.map +0 -1
  292. package/dist/infra/orchestrator/orchestrator.js +0 -214
  293. package/dist/infra/orchestrator/orchestrator.js.map +0 -1
  294. package/dist/infra/orchestrator/parallelResearch.d.ts +0 -27
  295. package/dist/infra/orchestrator/parallelResearch.d.ts.map +0 -1
  296. package/dist/infra/orchestrator/parallelResearch.js +0 -285
  297. package/dist/infra/orchestrator/parallelResearch.js.map +0 -1
  298. package/dist/infra/orchestrator/types.d.ts +0 -205
  299. package/dist/infra/orchestrator/types.d.ts.map +0 -1
  300. package/dist/infra/orchestrator/types.js +0 -87
  301. package/dist/infra/orchestrator/types.js.map +0 -1
  302. package/dist/infra/orchestrator/types.test.d.ts +0 -2
  303. package/dist/infra/orchestrator/types.test.d.ts.map +0 -1
  304. package/dist/infra/orchestrator/types.test.js +0 -57
  305. package/dist/infra/orchestrator/types.test.js.map +0 -1
  306. package/dist/tools/semantic/analyzeDependencyGraph.d.ts +0 -12
  307. package/dist/tools/semantic/analyzeDependencyGraph.d.ts.map +0 -1
  308. package/dist/tools/semantic/analyzeDependencyGraph.js +0 -359
  309. package/dist/tools/semantic/analyzeDependencyGraph.js.map +0 -1
  310. package/dist/tools/semantic/astGrep.d.ts +0 -25
  311. package/dist/tools/semantic/astGrep.d.ts.map +0 -1
  312. package/dist/tools/semantic/astGrep.js +0 -324
  313. package/dist/tools/semantic/astGrep.js.map +0 -1
  314. package/dist/tools/semantic/astGrep.test.d.ts +0 -2
  315. package/dist/tools/semantic/astGrep.test.d.ts.map +0 -1
  316. package/dist/tools/semantic/astGrep.test.js +0 -74
  317. package/dist/tools/semantic/astGrep.test.js.map +0 -1
  318. package/dist/tools/semantic/findReferences.d.ts +0 -9
  319. package/dist/tools/semantic/findReferences.d.ts.map +0 -1
  320. package/dist/tools/semantic/findReferences.js +0 -200
  321. package/dist/tools/semantic/findReferences.js.map +0 -1
  322. package/dist/tools/semantic/findSymbol.d.ts +0 -8
  323. package/dist/tools/semantic/findSymbol.d.ts.map +0 -1
  324. package/dist/tools/semantic/findSymbol.js +0 -204
  325. package/dist/tools/semantic/findSymbol.js.map +0 -1
  326. package/dist/tools/semantic/index.d.ts +0 -9
  327. package/dist/tools/semantic/index.d.ts.map +0 -1
  328. package/dist/tools/semantic/index.js +0 -11
  329. package/dist/tools/semantic/index.js.map +0 -1
  330. package/dist/tools/semantic/lsp.d.ts +0 -68
  331. package/dist/tools/semantic/lsp.d.ts.map +0 -1
  332. package/dist/tools/semantic/lsp.js +0 -561
  333. package/dist/tools/semantic/lsp.js.map +0 -1
  334. package/dist/tools/spec/e2eTestGenerator.d.ts +0 -61
  335. package/dist/tools/spec/e2eTestGenerator.d.ts.map +0 -1
  336. package/dist/tools/spec/e2eTestGenerator.js +0 -255
  337. package/dist/tools/spec/e2eTestGenerator.js.map +0 -1
  338. package/dist/tools/spec/specVersioning.d.ts +0 -76
  339. package/dist/tools/spec/specVersioning.d.ts.map +0 -1
  340. package/dist/tools/spec/specVersioning.js +0 -236
  341. package/dist/tools/spec/specVersioning.js.map +0 -1
@@ -1,324 +0,0 @@
1
- /**
2
- * ast-grep Tools - 패턴 기반 코드 검색/변환
3
- *
4
- * 지원 언어: JavaScript, TypeScript, TSX, JSX, HTML, CSS
5
- * (Python, Go, Rust 등은 ast-grep-napi에서 별도 동적 등록 필요)
6
- *
7
- * @ast-grep/napi는 네이티브 바이너리 optional dependency → 동적 import
8
- */
9
- import { createRequire } from 'module';
10
- import { readFile, readdir, stat, writeFile } from 'fs/promises';
11
- import * as path from 'path';
12
- // ast-grep 동적 로딩 (createRequire — 네이티브 바이너리에 안정적)
13
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
- let sgModule = null;
15
- let sgLoadFailed = false;
16
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
- function loadAstGrep() {
18
- if (sgModule)
19
- return sgModule;
20
- if (sgLoadFailed) {
21
- throw new Error('@ast-grep/napi is not installed. Run: npm install @ast-grep/napi');
22
- }
23
- try {
24
- const require = createRequire(import.meta.url);
25
- sgModule = require('@ast-grep/napi');
26
- return sgModule;
27
- }
28
- catch {
29
- sgLoadFailed = true;
30
- throw new Error('@ast-grep/napi is not installed. Run: npm install @ast-grep/napi');
31
- }
32
- }
33
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
34
- function getLangParsers(sg) {
35
- return {
36
- '.js': sg.js, '.mjs': sg.js, '.cjs': sg.js,
37
- '.jsx': sg.jsx,
38
- '.ts': sg.ts, '.mts': sg.ts, '.cts': sg.ts,
39
- '.tsx': sg.tsx,
40
- '.html': sg.html, '.htm': sg.html,
41
- '.css': sg.css, '.scss': sg.css,
42
- };
43
- }
44
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
45
- function getLangNameMap(sg) {
46
- return {
47
- javascript: sg.js, typescript: sg.ts,
48
- tsx: sg.tsx, jsx: sg.jsx,
49
- html: sg.html, css: sg.css,
50
- };
51
- }
52
- // Tool Definitions
53
- export const astGrepSearchDefinition = {
54
- name: 'ast_grep_search',
55
- description: 'AST pattern search - Find code patterns using meta-variables ($VAR). Supports JS, TS, TSX, JSX, HTML, CSS.',
56
- inputSchema: {
57
- type: 'object',
58
- properties: {
59
- pattern: {
60
- type: 'string',
61
- description: 'AST pattern with meta-variables (e.g., "console.log($MSG)", "function $NAME($$$) { $$$ }")'
62
- },
63
- path: {
64
- type: 'string',
65
- description: 'Directory or file path to search'
66
- },
67
- lang: {
68
- type: 'string',
69
- enum: ['javascript', 'typescript', 'tsx', 'jsx', 'html', 'css'],
70
- description: 'Language to parse (auto-detected from file extension if not specified)'
71
- },
72
- maxResults: {
73
- type: 'number',
74
- description: 'Maximum number of results to return (default: 50)'
75
- }
76
- },
77
- required: ['pattern', 'path']
78
- },
79
- annotations: {
80
- title: 'AST Grep Search',
81
- audience: ['user', 'assistant'],
82
- readOnlyHint: true,
83
- destructiveHint: false,
84
- idempotentHint: true,
85
- openWorldHint: false
86
- }
87
- };
88
- export const astGrepReplaceDefinition = {
89
- name: 'ast_grep_replace',
90
- description: 'AST pattern replace - Transform code using pattern matching. Supports JS, TS, TSX, JSX, HTML, CSS.',
91
- inputSchema: {
92
- type: 'object',
93
- properties: {
94
- pattern: {
95
- type: 'string',
96
- description: 'AST pattern to match (e.g., "console.log($MSG)")'
97
- },
98
- replacement: {
99
- type: 'string',
100
- description: 'Replacement pattern using captured meta-variables (e.g., "logger.info($MSG)")'
101
- },
102
- path: {
103
- type: 'string',
104
- description: 'Directory or file path'
105
- },
106
- lang: {
107
- type: 'string',
108
- enum: ['javascript', 'typescript', 'tsx', 'jsx', 'html', 'css'],
109
- description: 'Language to parse'
110
- },
111
- dryRun: {
112
- type: 'boolean',
113
- description: 'Preview changes without applying (default: true)'
114
- }
115
- },
116
- required: ['pattern', 'replacement', 'path']
117
- },
118
- annotations: {
119
- title: 'AST Grep Replace',
120
- audience: ['user', 'assistant'],
121
- readOnlyHint: false,
122
- destructiveHint: true,
123
- idempotentHint: false,
124
- openWorldHint: false
125
- }
126
- };
127
- function getParserFromExtension(parsers, filePath) {
128
- const ext = path.extname(filePath).toLowerCase();
129
- return parsers[ext] || null;
130
- }
131
- function getParserFromString(nameMap, langStr) {
132
- return nameMap[langStr.toLowerCase()] || null;
133
- }
134
- async function getFilesRecursive(dir, parsers, targetParser) {
135
- const files = [];
136
- const ignoreDirs = ['node_modules', '.git', 'dist', 'build', '__pycache__', 'venv', '.venv'];
137
- async function walk(currentDir) {
138
- const entries = await readdir(currentDir, { withFileTypes: true });
139
- for (const entry of entries) {
140
- const fullPath = path.join(currentDir, entry.name);
141
- if (entry.isDirectory()) {
142
- if (!ignoreDirs.includes(entry.name) && !entry.name.startsWith('.')) {
143
- await walk(fullPath);
144
- }
145
- }
146
- else if (entry.isFile()) {
147
- const fileParser = getParserFromExtension(parsers, fullPath);
148
- if (fileParser !== null && (targetParser === undefined || fileParser === targetParser)) {
149
- files.push(fullPath);
150
- }
151
- }
152
- }
153
- }
154
- const stats = await stat(dir);
155
- if (stats.isFile()) {
156
- return [dir];
157
- }
158
- await walk(dir);
159
- return files;
160
- }
161
- function getContextLines(content, line, contextSize = 1) {
162
- const lines = content.split('\n');
163
- const start = Math.max(0, line - 1 - contextSize);
164
- const end = Math.min(lines.length, line + contextSize);
165
- return lines.slice(start, end).join('\n');
166
- }
167
- export async function astGrepSearch(args) {
168
- const { pattern, path: searchPath, lang, maxResults = 50 } = args;
169
- try {
170
- const sg = loadAstGrep();
171
- const parsers = getLangParsers(sg);
172
- const nameMap = getLangNameMap(sg);
173
- const targetParser = lang ? getParserFromString(nameMap, lang) : undefined;
174
- const files = await getFilesRecursive(searchPath, parsers, targetParser ?? undefined);
175
- const matches = [];
176
- for (const file of files) {
177
- if (matches.length >= maxResults)
178
- break;
179
- const fileParser = getParserFromExtension(parsers, file);
180
- if (!fileParser)
181
- continue;
182
- try {
183
- const content = await readFile(file, 'utf-8');
184
- const root = fileParser.parse(content).root();
185
- const nodes = root.findAll(pattern);
186
- for (const node of nodes) {
187
- if (matches.length >= maxResults)
188
- break;
189
- const range = node.range();
190
- matches.push({
191
- file,
192
- line: range.start.line + 1,
193
- column: range.start.column + 1,
194
- matchedText: node.text(),
195
- context: getContextLines(content, range.start.line + 1),
196
- });
197
- }
198
- }
199
- catch {
200
- // Skip files that can't be parsed
201
- }
202
- }
203
- if (matches.length === 0) {
204
- return {
205
- content: [{
206
- type: 'text',
207
- text: `No matches found for pattern: ${pattern}`
208
- }]
209
- };
210
- }
211
- const output = matches.map((m, i) => `${i + 1}. ${m.file}:${m.line}:${m.column}\n Match: ${m.matchedText.substring(0, 100)}${m.matchedText.length > 100 ? '...' : ''}`).join('\n\n');
212
- return {
213
- content: [{
214
- type: 'text',
215
- text: `Found ${matches.length} matches for pattern: ${pattern}\n\n${output}`
216
- }]
217
- };
218
- }
219
- catch (error) {
220
- return {
221
- content: [{
222
- type: 'text',
223
- text: `Error searching: ${error instanceof Error ? error.message : 'Unknown error'}`
224
- }]
225
- };
226
- }
227
- }
228
- export async function astGrepReplace(args) {
229
- const { pattern, replacement, path: searchPath, lang, dryRun = true } = args;
230
- try {
231
- const sg = loadAstGrep();
232
- const parsers = getLangParsers(sg);
233
- const nameMap = getLangNameMap(sg);
234
- const targetParser = lang ? getParserFromString(nameMap, lang) : undefined;
235
- const files = await getFilesRecursive(searchPath, parsers, targetParser ?? undefined);
236
- const previews = [];
237
- const fileChanges = new Map();
238
- for (const file of files) {
239
- const fileParser = getParserFromExtension(parsers, file);
240
- if (!fileParser)
241
- continue;
242
- try {
243
- const content = await readFile(file, 'utf-8');
244
- const root = fileParser.parse(content).root();
245
- const nodes = root.findAll(pattern);
246
- if (nodes.length === 0)
247
- continue;
248
- const edits = [];
249
- for (const node of nodes) {
250
- const range = node.range();
251
- // Build replacement with captured meta-variables
252
- let replaced = replacement;
253
- // Get captured variables using getMatch
254
- const metaVarPattern = /\$([A-Z_][A-Z0-9_]*|\$\$)/g;
255
- let match;
256
- while ((match = metaVarPattern.exec(replacement)) !== null) {
257
- const varName = match[1];
258
- const captured = node.getMatch(varName);
259
- if (captured) {
260
- replaced = replaced.replace(new RegExp(`\\$${varName}`, 'g'), captured.text());
261
- }
262
- }
263
- previews.push({
264
- file,
265
- line: range.start.line + 1,
266
- original: node.text(),
267
- replacement: replaced,
268
- });
269
- edits.push({
270
- start: range.start.index,
271
- end: range.end.index,
272
- text: replaced,
273
- });
274
- }
275
- if (edits.length > 0) {
276
- fileChanges.set(file, { content, edits });
277
- }
278
- }
279
- catch {
280
- // Skip files that can't be parsed
281
- }
282
- }
283
- if (previews.length === 0) {
284
- return {
285
- content: [{
286
- type: 'text',
287
- text: `No matches found for pattern: ${pattern}`
288
- }]
289
- };
290
- }
291
- // Apply changes if not dry run
292
- if (!dryRun) {
293
- for (const [file, { content, edits }] of fileChanges) {
294
- // Sort edits by position (descending) to apply from end to start
295
- edits.sort((a, b) => b.start - a.start);
296
- let newContent = content;
297
- for (const edit of edits) {
298
- newContent = newContent.substring(0, edit.start) + edit.text + newContent.substring(edit.end);
299
- }
300
- await writeFile(file, newContent, 'utf-8');
301
- }
302
- }
303
- const output = previews.slice(0, 20).map((p, i) => `${i + 1}. ${p.file}:${p.line}\n - ${p.original.substring(0, 80)}${p.original.length > 80 ? '...' : ''}\n + ${p.replacement.substring(0, 80)}${p.replacement.length > 80 ? '...' : ''}`).join('\n\n');
304
- const modeText = dryRun ? '[DRY RUN] ' : '';
305
- const actionText = dryRun
306
- ? 'Use dryRun: false to apply changes.'
307
- : `Applied ${previews.length} replacements across ${fileChanges.size} files.`;
308
- return {
309
- content: [{
310
- type: 'text',
311
- text: `${modeText}Found ${previews.length} replacements for: ${pattern} → ${replacement}\n\n${output}\n\n${actionText}`
312
- }]
313
- };
314
- }
315
- catch (error) {
316
- return {
317
- content: [{
318
- type: 'text',
319
- text: `Error replacing: ${error instanceof Error ? error.message : 'Unknown error'}`
320
- }]
321
- };
322
- }
323
- }
324
- //# sourceMappingURL=astGrep.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"astGrep.js","sourceRoot":"","sources":["../../../src/tools/semantic/astGrep.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=astGrep.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"astGrep.test.d.ts","sourceRoot":"","sources":["../../../src/tools/semantic/astGrep.test.ts"],"names":[],"mappings":""}
@@ -1,74 +0,0 @@
1
- import { describe, it, expect, beforeAll, afterAll } from 'vitest';
2
- import { astGrepSearch, astGrepReplace } from './astGrep.js';
3
- import { writeFile, mkdir, rm } from 'fs/promises';
4
- import * as path from 'path';
5
- import * as os from 'os';
6
- // @ast-grep/napi는 optional dependency — 미설치 시 테스트 스킵
7
- import { createRequire } from 'module';
8
- let astGrepAvailable = false;
9
- try {
10
- createRequire(import.meta.url).resolve('@ast-grep/napi');
11
- astGrepAvailable = true;
12
- }
13
- catch { /* not installed */ }
14
- describe.skipIf(!astGrepAvailable)('ast-grep tools', () => {
15
- const testDir = path.join(os.tmpdir(), 'ast-grep-test-' + Date.now());
16
- beforeAll(async () => {
17
- await mkdir(testDir, { recursive: true });
18
- await writeFile(path.join(testDir, 'test.ts'), `
19
- console.log("hello");
20
- console.log("world");
21
- function greet(name: string) {
22
- console.log(\`Hello, \${name}\`);
23
- }
24
- `);
25
- });
26
- afterAll(async () => {
27
- await rm(testDir, { recursive: true, force: true });
28
- });
29
- describe('astGrepSearch', () => {
30
- it('should find console.log patterns', async () => {
31
- const result = await astGrepSearch({
32
- pattern: 'console.log($MSG)',
33
- path: testDir,
34
- });
35
- expect(result.content[0].type).toBe('text');
36
- const text = result.content[0].text;
37
- expect(text).toContain('Found');
38
- expect(text).toContain('matches');
39
- });
40
- it('should find function patterns', async () => {
41
- const result = await astGrepSearch({
42
- pattern: 'function $NAME($$$) { $$$ }',
43
- path: testDir,
44
- });
45
- expect(result.content[0].type).toBe('text');
46
- const text = result.content[0].text;
47
- expect(text).toContain('Found');
48
- });
49
- it('should return no matches for non-existent pattern', async () => {
50
- const result = await astGrepSearch({
51
- pattern: 'nonExistentFunction()',
52
- path: testDir,
53
- });
54
- const text = result.content[0].text;
55
- expect(text).toContain('No matches');
56
- });
57
- });
58
- describe('astGrepReplace', () => {
59
- it('should preview replacements in dry run mode', async () => {
60
- const result = await astGrepReplace({
61
- pattern: 'console.log($MSG)',
62
- replacement: 'logger.info($MSG)',
63
- path: testDir,
64
- dryRun: true,
65
- });
66
- const text = result.content[0].text;
67
- expect(text).toContain('[DRY RUN]');
68
- expect(text).toContain('replacements');
69
- expect(text).toContain('console.log');
70
- expect(text).toContain('logger.info');
71
- });
72
- });
73
- });
74
- //# sourceMappingURL=astGrep.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"astGrep.test.js","sourceRoot":"","sources":["../../../src/tools/semantic/astGrep.test.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import { ToolResult, ToolDefinition } from '../../infra/types/tool.js';
2
- export declare const findReferencesDefinition: ToolDefinition;
3
- export declare function findReferences(args: {
4
- symbolName: string;
5
- filePath?: string;
6
- line?: number;
7
- projectPath: string;
8
- }): Promise<ToolResult>;
9
- //# sourceMappingURL=findReferences.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"findReferences.d.ts","sourceRoot":"","sources":["../../../src/tools/semantic/findReferences.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAWvE,eAAO,MAAM,wBAAwB,EAAE,cAqBtC,CAAC;AAEF,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,UAAU,CAAC,CA4HtB"}
@@ -1,200 +0,0 @@
1
- // Semantic code analysis tool - Find References
2
- import * as path from 'path';
3
- import { ProjectCache } from '../../infra/lib/ProjectCache.js';
4
- import { readFile } from 'fs/promises';
5
- import { errorLog } from '../../infra/lib/utils.js';
6
- export const findReferencesDefinition = {
7
- name: 'find_references',
8
- description: 'find usage|references|where used - Find symbol references',
9
- inputSchema: {
10
- type: 'object',
11
- properties: {
12
- symbolName: { type: 'string', description: 'Name of the symbol to find references for' },
13
- filePath: { type: 'string', description: 'File path where the symbol is defined' },
14
- line: { type: 'number', description: 'Line number of the symbol definition' },
15
- projectPath: { type: 'string', description: 'Project directory path' }
16
- },
17
- required: ['symbolName', 'projectPath']
18
- },
19
- annotations: {
20
- title: 'Find References',
21
- audience: ['user', 'assistant'],
22
- readOnlyHint: true,
23
- destructiveHint: false,
24
- idempotentHint: true,
25
- openWorldHint: false
26
- }
27
- };
28
- export async function findReferences(args) {
29
- const { symbolName, filePath, line, projectPath } = args;
30
- try {
31
- // Use cached project for performance
32
- const { Node: TsNode } = await import('ts-morph');
33
- const projectCache = ProjectCache.getInstance();
34
- const project = await projectCache.getOrCreate(projectPath);
35
- const allReferences = [];
36
- // Check for Python files
37
- const glob = await import('glob');
38
- const pythonFiles = glob.globSync(path.join(projectPath, '**/*.py'), {
39
- ignore: ['**/node_modules/**', '**/.git/**', '**/venv/**', '**/__pycache__/**']
40
- });
41
- // Parse Python files for references
42
- for (const pyFile of pythonFiles) {
43
- try {
44
- const content = await readFile(pyFile, 'utf-8');
45
- const lines = content.split('\n');
46
- lines.forEach((line, index) => {
47
- if (line.includes(symbolName)) {
48
- const column = line.indexOf(symbolName);
49
- allReferences.push({
50
- filePath: pyFile,
51
- line: index + 1,
52
- column: column,
53
- text: line.trim().substring(0, 100),
54
- isDefinition: /^(def|class)\s/.test(line.trim())
55
- });
56
- }
57
- });
58
- }
59
- catch (error) {
60
- errorLog(`Error parsing Python file ${pyFile}:`, error);
61
- }
62
- }
63
- // If specific file and line provided, use precise reference finding
64
- if (filePath && line) {
65
- const sourceFile = project.getSourceFile(filePath);
66
- if (sourceFile) {
67
- const position = sourceFile.compilerNode.getPositionOfLineAndCharacter(line - 1, 0);
68
- const node = sourceFile.getDescendantAtPos(position);
69
- if (node) {
70
- const symbol = node.getSymbol();
71
- if (symbol) {
72
- const references = project.getLanguageService().findReferencesAtPosition(sourceFile, position);
73
- if (references) {
74
- for (const ref of references) {
75
- for (const reference of ref.getReferences()) {
76
- const refSourceFile = reference.getSourceFile();
77
- const refNode = reference.getNode();
78
- const start = refNode.getStartLinePos();
79
- const pos = refSourceFile.getLineAndColumnAtPos(start);
80
- allReferences.push({
81
- filePath: refSourceFile.getFilePath(),
82
- line: pos.line,
83
- column: pos.column,
84
- text: refNode.getParent()?.getText().substring(0, 100) || refNode.getText(),
85
- isDefinition: reference.isDefinition() || false
86
- });
87
- }
88
- }
89
- }
90
- }
91
- }
92
- }
93
- }
94
- else {
95
- // Fallback: search by name across all files
96
- for (const sourceFile of project.getSourceFiles()) {
97
- const filePath = sourceFile.getFilePath();
98
- // Skip node_modules and other irrelevant paths
99
- if (filePath.includes('node_modules') || filePath.includes('.git')) {
100
- continue;
101
- }
102
- // Find all identifiers matching the symbol name
103
- sourceFile.forEachDescendant((node) => {
104
- if (TsNode.isIdentifier(node) && node.getText() === symbolName) {
105
- const start = node.getStartLinePos();
106
- const pos = sourceFile.getLineAndColumnAtPos(start);
107
- const parent = node.getParent();
108
- // Determine if this is a definition
109
- const isDefinition = isSymbolDefinition(TsNode, node);
110
- allReferences.push({
111
- filePath: filePath,
112
- line: pos.line,
113
- column: pos.column,
114
- text: parent?.getText().substring(0, 100) || node.getText(),
115
- isDefinition
116
- });
117
- }
118
- });
119
- }
120
- }
121
- const definitions = allReferences.filter(r => r.isDefinition);
122
- const usages = allReferences.filter(r => !r.isDefinition);
123
- return {
124
- content: [{
125
- type: 'text',
126
- text: `Found ${allReferences.length} references (${definitions.length} defs, ${usages.length} uses):\n${allReferences.slice(0, 20).map(r => `${r.isDefinition ? 'DEF' : 'USE'}: ${r.filePath}:${r.line}`).join('\n')}`
127
- }]
128
- };
129
- }
130
- catch (error) {
131
- return {
132
- content: [{
133
- type: 'text',
134
- text: `Error finding references: ${error instanceof Error ? error.message : 'Unknown error'}`
135
- }]
136
- };
137
- }
138
- }
139
- function isSymbolDefinition(NodeClass, node) {
140
- const parent = node.getParent();
141
- if (!parent)
142
- return false;
143
- // Check if this is a declaration
144
- return NodeClass.isFunctionDeclaration(parent) ||
145
- NodeClass.isClassDeclaration(parent) ||
146
- NodeClass.isInterfaceDeclaration(parent) ||
147
- NodeClass.isTypeAliasDeclaration(parent) ||
148
- NodeClass.isVariableDeclaration(parent) ||
149
- NodeClass.isMethodDeclaration(parent) ||
150
- NodeClass.isPropertyDeclaration(parent) ||
151
- NodeClass.isParameterDeclaration(parent);
152
- }
153
- function groupReferencesByFile(references) {
154
- const grouped = {};
155
- for (const ref of references) {
156
- if (!grouped[ref.filePath]) {
157
- grouped[ref.filePath] = [];
158
- }
159
- grouped[ref.filePath].push(ref);
160
- }
161
- // Sort references within each file by line number
162
- for (const filePath in grouped) {
163
- grouped[filePath].sort((a, b) => a.line - b.line);
164
- }
165
- return grouped;
166
- }
167
- function formatReferenceResults(result) {
168
- let output = `# Reference Search Results\n\n`;
169
- output += `**Symbol:** ${result.symbol}\n`;
170
- output += `**Total References:** ${result.totalReferences}\n`;
171
- output += `**Files:** ${result.filesCount}\n`;
172
- output += `**Definitions:** ${result.definitions.length}\n`;
173
- output += `**Usages:** ${result.usages.length}\n\n`;
174
- if (result.totalReferences === 0) {
175
- output += `No references found for "${result.symbol}".\n`;
176
- return output;
177
- }
178
- // Show definitions first
179
- if (result.definitions.length > 0) {
180
- output += `## Definitions\n\n`;
181
- result.definitions.forEach((def, index) => {
182
- output += `${index + 1}. **${def.filePath}:${def.line}:${def.column}**\n`;
183
- output += ` \`\`\`typescript\n ${def.text}\n \`\`\`\n\n`;
184
- });
185
- }
186
- // Show usages grouped by file
187
- output += `## Usages by File\n\n`;
188
- for (const [filePath, refs] of Object.entries(result.references)) {
189
- const usages = refs.filter(r => !r.isDefinition);
190
- if (usages.length === 0)
191
- continue;
192
- output += `### ${filePath} (${usages.length} usages)\n\n`;
193
- usages.forEach((ref) => {
194
- output += `- **Line ${ref.line}:** \`${ref.text.substring(0, 60)}...\`\n`;
195
- });
196
- output += `\n`;
197
- }
198
- return output;
199
- }
200
- //# sourceMappingURL=findReferences.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"findReferences.js","sourceRoot":"","sources":["../../../src/tools/semantic/findReferences.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAGhD,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAUpD,MAAM,CAAC,MAAM,wBAAwB,GAAmB;IACtD,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,2DAA2D;IACxE,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;YACxF,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE;YAClF,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sCAAsC,EAAE;YAC7E,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;SACvE;QACD,QAAQ,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;KACxC;IACD,WAAW,EAAE;QACX,KAAK,EAAE,iBAAiB;QACxB,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;QAC/B,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,KAAK;KACrB;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAKpC;IACC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAEzD,IAAI,CAAC;QACH,qCAAqC;QACrC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,YAAY,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAE5D,MAAM,aAAa,GAAoB,EAAE,CAAC;QAE1C,yBAAyB;QACzB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE;YACnE,MAAM,EAAE,CAAC,oBAAoB,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB,CAAC;SAChF,CAAC,CAAC;QAEH,oCAAoC;QACpC,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAChD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAElC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBAC5B,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;wBACxC,aAAa,CAAC,IAAI,CAAC;4BACjB,QAAQ,EAAE,MAAM;4BAChB,IAAI,EAAE,KAAK,GAAG,CAAC;4BACf,MAAM,EAAE,MAAM;4BACd,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;4BACnC,YAAY,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;yBACjD,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,CAAC,6BAA6B,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAED,oEAAoE;QACpE,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAY,CAAC,6BAA6B,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBACpF,MAAM,IAAI,GAAG,UAAU,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBAErD,IAAI,IAAI,EAAE,CAAC;oBACT,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;oBAChC,IAAI,MAAM,EAAE,CAAC;wBACX,MAAM,UAAU,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,wBAAwB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;wBAE/F,IAAI,UAAU,EAAE,CAAC;4BACf,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gCAC7B,KAAK,MAAM,SAAS,IAAI,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC;oCAC5C,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;oCAChD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;oCACpC,MAAM,KAAK,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;oCACxC,MAAM,GAAG,GAAG,aAAa,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;oCAEvD,aAAa,CAAC,IAAI,CAAC;wCACjB,QAAQ,EAAE,aAAa,CAAC,WAAW,EAAE;wCACrC,IAAI,EAAE,GAAG,CAAC,IAAI;wCACd,MAAM,EAAE,GAAG,CAAC,MAAM;wCAClB,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE;wCAC3E,YAAY,EAAE,SAAS,CAAC,YAAY,EAAE,IAAI,KAAK;qCAChD,CAAC,CAAC;gCACL,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,4CAA4C;YAC5C,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;gBAClD,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;gBAE1C,+CAA+C;gBAC/C,IAAI,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBACnE,SAAS;gBACX,CAAC;gBAED,gDAAgD;gBAChD,UAAU,CAAC,iBAAiB,CAAC,CAAC,IAAI,EAAE,EAAE;oBACpC,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;wBAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;wBACrC,MAAM,GAAG,GAAG,UAAU,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;wBACpD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;wBAEhC,oCAAoC;wBACpC,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;wBAEtD,aAAa,CAAC,IAAI,CAAC;4BACjB,QAAQ,EAAE,QAAQ;4BAClB,IAAI,EAAE,GAAG,CAAC,IAAI;4BACd,MAAM,EAAE,GAAG,CAAC,MAAM;4BAClB,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;4BAC3D,YAAY;yBACb,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAE1D,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,SAAS,aAAa,CAAC,MAAM,gBAAgB,WAAW,CAAC,MAAM,UAAU,MAAM,CAAC,MAAM,YAAY,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CACzI,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,CAC7D,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;iBACf,CAAC;SACH,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;iBAC9F,CAAC;SACH,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CACzB,SAAyC,EACzC,IAAU;IAEV,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAChC,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAE1B,iCAAiC;IACjC,OAAO,SAAS,CAAC,qBAAqB,CAAC,MAAM,CAAC;QACvC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC;QACpC,SAAS,CAAC,sBAAsB,CAAC,MAAM,CAAC;QACxC,SAAS,CAAC,sBAAsB,CAAC,MAAM,CAAC;QACxC,SAAS,CAAC,qBAAqB,CAAC,MAAM,CAAC;QACvC,SAAS,CAAC,mBAAmB,CAAC,MAAM,CAAC;QACrC,SAAS,CAAC,qBAAqB,CAAC,MAAM,CAAC;QACvC,SAAS,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,qBAAqB,CAAC,UAA2B;IACxD,MAAM,OAAO,GAAoC,EAAE,CAAC;IAEpD,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAC7B,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,kDAAkD;IAClD,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;QAC/B,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAW;IACzC,IAAI,MAAM,GAAG,gCAAgC,CAAC;IAC9C,MAAM,IAAI,eAAe,MAAM,CAAC,MAAM,IAAI,CAAC;IAC3C,MAAM,IAAI,yBAAyB,MAAM,CAAC,eAAe,IAAI,CAAC;IAC9D,MAAM,IAAI,cAAc,MAAM,CAAC,UAAU,IAAI,CAAC;IAC9C,MAAM,IAAI,oBAAoB,MAAM,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC;IAC5D,MAAM,IAAI,eAAe,MAAM,CAAC,MAAM,CAAC,MAAM,MAAM,CAAC;IAEpD,IAAI,MAAM,CAAC,eAAe,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,4BAA4B,MAAM,CAAC,MAAM,MAAM,CAAC;QAC1D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,yBAAyB;IACzB,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,oBAAoB,CAAC;QAC/B,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,GAAkB,EAAE,KAAa,EAAE,EAAE;YAC/D,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,OAAO,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC;YAC1E,MAAM,IAAI,2BAA2B,GAAG,CAAC,IAAI,iBAAiB,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,8BAA8B;IAC9B,MAAM,IAAI,uBAAuB,CAAC;IAElC,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QACjE,MAAM,MAAM,GAAI,IAAwB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QACtE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAElC,MAAM,IAAI,OAAO,QAAQ,KAAK,MAAM,CAAC,MAAM,cAAc,CAAC;QAC1D,MAAM,CAAC,OAAO,CAAC,CAAC,GAAkB,EAAE,EAAE;YACpC,MAAM,IAAI,YAAY,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC;QAC5E,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,IAAI,CAAC;IACjB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}