@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 +0,0 @@
1
- {"version":3,"file":"e2eTestGenerator.d.ts","sourceRoot":"","sources":["../../../src/tools/spec/e2eTestGenerator.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,iCAAiC;AACjC,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wCAAwC;AACxC,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,kBAAkB;AAClB,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,iBAAiB;AACjB,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,YAAY;AACZ,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAoClF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,eAAe,EAAE,CAgE/E;AAMD;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,mBAAmB,EAAE,EAC/B,SAAS,EAAE,eAAe,EAAE,EAC5B,WAAW,EAAE,MAAM,GAClB,gBAAgB,EAAE,CAuFpB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,mBAAwB,GAChC,mBAAmB,CAyCrB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAY3E"}
@@ -1,255 +0,0 @@
1
- /**
2
- * E2E Test Generator - SPEC acceptance criteria + Feature scenarios → Playwright test skeletons
3
- */
4
- import * as fs from 'fs';
5
- import * as path from 'path';
6
- // ============================================
7
- // Parsing Functions
8
- // ============================================
9
- /**
10
- * SPEC의 <acceptance> 블록에서 Phase별 criteria 추출
11
- */
12
- export function parseAcceptanceCriteria(specContent) {
13
- const results = [];
14
- // <acceptance> 블록 추출
15
- const acceptanceMatch = specContent.match(/<acceptance>([\s\S]*?)<\/acceptance>/);
16
- if (!acceptanceMatch)
17
- return results;
18
- const block = acceptanceMatch[1];
19
- // Phase별로 분할
20
- const phasePattern = /###\s*Phase\s*(\d+)[:\s]*([^\n]*)\n([\s\S]*?)(?=###\s*Phase|\s*$)/gi;
21
- let match;
22
- while ((match = phasePattern.exec(block)) !== null) {
23
- const phaseNum = match[1];
24
- const phaseName = match[2].trim();
25
- const criteriaBlock = match[3];
26
- // - [ ] 패턴으로 criteria 추출
27
- const criteria = [];
28
- const criteriaPattern = /- \[ \] (.+)/g;
29
- let criterionMatch;
30
- while ((criterionMatch = criteriaPattern.exec(criteriaBlock)) !== null) {
31
- criteria.push(criterionMatch[1].trim());
32
- }
33
- if (criteria.length > 0) {
34
- results.push({
35
- phase: phaseNum,
36
- phaseName,
37
- criteria,
38
- });
39
- }
40
- }
41
- return results;
42
- }
43
- /**
44
- * Feature 파일에서 Gherkin 시나리오 추출 (Given/When/Then 포함)
45
- */
46
- export function parseGherkinScenarios(featureContent) {
47
- const results = [];
48
- // Phase 추출
49
- const phasePattern = /##\s*Phase\s*(\d+)[:\s]*([^\n]*)\n([\s\S]*?)(?=##\s*Phase|\s*$)/gi;
50
- let phaseMatch;
51
- while ((phaseMatch = phasePattern.exec(featureContent)) !== null) {
52
- const phaseNum = phaseMatch[1];
53
- const phaseBlock = phaseMatch[3];
54
- // 시나리오 추출
55
- const scenarioPattern = /###\s*Scenario\s*\d*[:\s]*([^\n]*)\n```gherkin\n([\s\S]*?)```(?:\n\*\*Verification\*\*[:\s]*([^\n]*))?/gi;
56
- let scenarioMatch;
57
- while ((scenarioMatch = scenarioPattern.exec(phaseBlock)) !== null) {
58
- const name = scenarioMatch[1].trim();
59
- const gherkinBlock = scenarioMatch[2];
60
- const verification = scenarioMatch[3]?.trim();
61
- const given = [];
62
- const when = [];
63
- const then = [];
64
- const and = [];
65
- // Gherkin 라인 파싱
66
- const lines = gherkinBlock.split('\n').map(l => l.trim()).filter(Boolean);
67
- let currentSection = null;
68
- for (const line of lines) {
69
- if (line.startsWith('Scenario:'))
70
- continue;
71
- if (line.startsWith('Given ')) {
72
- currentSection = 'given';
73
- given.push(line.replace(/^Given /, ''));
74
- }
75
- else if (line.startsWith('When ')) {
76
- currentSection = 'when';
77
- when.push(line.replace(/^When /, ''));
78
- }
79
- else if (line.startsWith('Then ')) {
80
- currentSection = 'then';
81
- then.push(line.replace(/^Then /, ''));
82
- }
83
- else if (line.startsWith('And ')) {
84
- const text = line.replace(/^And /, '');
85
- and.push(text);
86
- // And는 직전 섹션에 추가
87
- if (currentSection === 'given')
88
- given.push(text);
89
- else if (currentSection === 'when')
90
- when.push(text);
91
- else if (currentSection === 'then')
92
- then.push(text);
93
- }
94
- }
95
- results.push({
96
- name,
97
- phase: phaseNum,
98
- given,
99
- when,
100
- then,
101
- and,
102
- verification,
103
- });
104
- }
105
- }
106
- return results;
107
- }
108
- // ============================================
109
- // Generation Functions
110
- // ============================================
111
- /**
112
- * Playwright test skeleton 생성
113
- */
114
- export function generatePlaywrightSkeleton(criteria, scenarios, featureName) {
115
- const tests = [];
116
- for (const phase of criteria) {
117
- const phaseScenarios = scenarios.filter(s => s.phase === phase.phase);
118
- const slugName = slugify(phase.phaseName || `phase-${phase.phase}`);
119
- const fileName = `phase-${phase.phase}-${slugName}.spec.ts`;
120
- let content = `import { test, expect } from '@playwright/test';\n\n`;
121
- content += `test.describe('Phase ${phase.phase}: ${phase.phaseName}', () => {\n`;
122
- let scenarioCount = 0;
123
- // Gherkin 시나리오 → test blocks
124
- for (const scenario of phaseScenarios) {
125
- content += `\n test('${escapeQuotes(scenario.name)}', async ({ page }) => {\n`;
126
- if (scenario.given.length > 0) {
127
- content += ` // Given\n`;
128
- for (const g of scenario.given) {
129
- content += ` // - ${g}\n`;
130
- }
131
- content += ` // TODO: Setup test preconditions\n\n`;
132
- }
133
- if (scenario.when.length > 0) {
134
- content += ` // When\n`;
135
- for (const w of scenario.when) {
136
- content += ` // - ${w}\n`;
137
- }
138
- content += ` // TODO: Execute action\n\n`;
139
- }
140
- if (scenario.then.length > 0) {
141
- content += ` // Then\n`;
142
- for (const t of scenario.then) {
143
- content += ` // - ${t}\n`;
144
- }
145
- content += ` // TODO: Assert expected outcome\n`;
146
- }
147
- if (scenario.verification) {
148
- content += `\n // Verification: ${scenario.verification}\n`;
149
- }
150
- content += ` });\n`;
151
- scenarioCount++;
152
- }
153
- // 매칭되지 않은 AC → 추가 test blocks
154
- const coveredByScenario = new Set(phaseScenarios.flatMap(s => {
155
- // verification 필드에서 AC 번호 추출
156
- const match = s.verification?.match(/#(\d+)/);
157
- return match ? [parseInt(match[1]) - 1] : [];
158
- }));
159
- for (let i = 0; i < phase.criteria.length; i++) {
160
- if (!coveredByScenario.has(i) && phaseScenarios.length > 0) {
161
- // 시나리오가 이미 있고 이 AC가 커버되지 않은 경우에만 추가
162
- content += `\n test('AC: ${escapeQuotes(phase.criteria[i])}', async ({ page }) => {\n`;
163
- content += ` // TODO: Implement test for acceptance criterion\n`;
164
- content += ` // AC: Phase ${phase.phase} - ${phase.criteria[i]}\n`;
165
- content += ` });\n`;
166
- scenarioCount++;
167
- }
168
- else if (phaseScenarios.length === 0) {
169
- // Feature 시나리오가 없으면 AC에서만 생성
170
- content += `\n test('${escapeQuotes(phase.criteria[i])}', async ({ page }) => {\n`;
171
- content += ` // TODO: Implement test for acceptance criterion\n`;
172
- content += ` // AC: Phase ${phase.phase} - ${phase.criteria[i]}\n`;
173
- content += ` });\n`;
174
- scenarioCount++;
175
- }
176
- }
177
- content += `});\n`;
178
- tests.push({
179
- fileName,
180
- content,
181
- scenarioCount,
182
- phase: `Phase ${phase.phase}: ${phase.phaseName}`,
183
- });
184
- }
185
- return tests;
186
- }
187
- /**
188
- * 메인 함수: SPEC + Feature → E2E test skeletons
189
- */
190
- export function generateE2ETests(featureName, options = {}) {
191
- const { projectPath = process.cwd(), specPath = `.claude/vibe/specs/${featureName}.md`, featurePath = `.claude/vibe/features/${featureName}.feature`, outputDir = `tests/e2e/${featureName}`, } = options;
192
- // SPEC 파일 읽기
193
- const specFullPath = path.join(projectPath, specPath);
194
- const specContent = readFileSafe(specFullPath);
195
- // Feature 파일 읽기 (split 구조도 지원)
196
- let featureFullPath = path.join(projectPath, featurePath);
197
- let featureContent = readFileSafe(featureFullPath);
198
- // split 구조: {feature-name}/_index.feature
199
- if (!featureContent) {
200
- const splitPath = path.join(projectPath, `.claude/vibe/features/${featureName}/_index.feature`);
201
- featureContent = readFileSafe(splitPath);
202
- if (featureContent)
203
- featureFullPath = splitPath;
204
- }
205
- // 파싱
206
- const criteria = specContent ? parseAcceptanceCriteria(specContent) : [];
207
- const scenarios = featureContent ? parseGherkinScenarios(featureContent) : [];
208
- // 생성
209
- const tests = generatePlaywrightSkeleton(criteria, scenarios, featureName);
210
- const totalScenarios = tests.reduce((sum, t) => sum + t.scenarioCount, 0);
211
- return {
212
- featureName,
213
- tests,
214
- totalScenarios,
215
- outputDir,
216
- };
217
- }
218
- /**
219
- * 생성 결과 요약을 포맷팅
220
- */
221
- export function formatGenerationSummary(result) {
222
- if (result.tests.length === 0) {
223
- return 'No acceptance criteria or feature scenarios found to generate tests.';
224
- }
225
- let output = `Generated E2E test skeletons:\n`;
226
- for (const test of result.tests) {
227
- output += ` ${result.outputDir}/${test.fileName} (${test.scenarioCount} scenarios)\n`;
228
- }
229
- output += ` Total: ${result.totalScenarios} test skeletons across ${result.tests.length} files\n`;
230
- return output;
231
- }
232
- // ============================================
233
- // Helper Functions
234
- // ============================================
235
- function readFileSafe(filePath) {
236
- try {
237
- return fs.readFileSync(filePath, 'utf-8');
238
- }
239
- catch {
240
- return null;
241
- }
242
- }
243
- function slugify(text) {
244
- return text
245
- .toLowerCase()
246
- .replace(/[^a-z0-9\s-]/g, '')
247
- .replace(/\s+/g, '-')
248
- .replace(/-+/g, '-')
249
- .replace(/^-|-$/g, '')
250
- .slice(0, 40);
251
- }
252
- function escapeQuotes(text) {
253
- return text.replace(/'/g, "\\'");
254
- }
255
- //# sourceMappingURL=e2eTestGenerator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"e2eTestGenerator.js","sourceRoot":"","sources":["../../../src/tools/spec/e2eTestGenerator.ts"],"names":[],"mappings":"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"}
@@ -1,76 +0,0 @@
1
- /**
2
- * SPEC Versioning - SPEC 버전 관리 및 Changelog 자동 생성
3
- */
4
- /** SPEC 버전 정보 */
5
- export interface SpecVersion {
6
- version: string;
7
- date: string;
8
- author?: string;
9
- changes: ChangeEntry[];
10
- gitTag?: string;
11
- gitCommit?: string;
12
- }
13
- /** 변경 항목 */
14
- export interface ChangeEntry {
15
- type: 'added' | 'changed' | 'removed' | 'fixed';
16
- description: string;
17
- section?: string;
18
- requirementId?: string;
19
- }
20
- /** 버전 히스토리 */
21
- export interface VersionHistory {
22
- featureName: string;
23
- currentVersion: string;
24
- versions: SpecVersion[];
25
- }
26
- /** 버전 범프 타입 */
27
- export type BumpType = 'major' | 'minor' | 'patch';
28
- /**
29
- * SPEC 버전 범프
30
- */
31
- export declare function bumpSpecVersion(specPath: string, bumpType: BumpType, changes: ChangeEntry[]): SpecVersion;
32
- /**
33
- * 버전 추출
34
- */
35
- export declare function extractVersion(content: string): string | null;
36
- /**
37
- * 버전 증가
38
- */
39
- export declare function incrementVersion(version: string, bumpType: BumpType): string;
40
- /**
41
- * Changelog 생성
42
- */
43
- export declare function generateChangelog(history: VersionHistory): string;
44
- /**
45
- * Git 태그 생성
46
- */
47
- export declare function createGitTag(featureName: string, version: string, message?: string): {
48
- success: boolean;
49
- tag: string;
50
- error?: string;
51
- };
52
- /**
53
- * SPEC 변경사항 감지 (Git diff 기반)
54
- */
55
- export declare function detectSpecChanges(specPath: string, baseRef?: string): ChangeEntry[];
56
- /**
57
- * 최신 SPEC 커밋 조회
58
- */
59
- export declare function getLatestSpecCommit(specPath: string): string | null;
60
- /**
61
- * SPEC 버전 히스토리 로드
62
- */
63
- export declare function loadVersionHistory(specDir: string, featureName: string): VersionHistory;
64
- /**
65
- * SPEC 버전 히스토리 저장
66
- */
67
- export declare function saveVersionHistory(specDir: string, history: VersionHistory): void;
68
- /**
69
- * Baseline 태깅 (릴리즈 준비 완료 표시)
70
- */
71
- export declare function createBaseline(featureName: string, specPath: string): {
72
- success: boolean;
73
- baselineName: string;
74
- error?: string;
75
- };
76
- //# sourceMappingURL=specVersioning.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"specVersioning.d.ts","sourceRoot":"","sources":["../../../src/tools/spec/specVersioning.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,iBAAiB;AACjB,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,YAAY;AACZ,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,cAAc;AACd,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB;AAED,eAAe;AACf,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAMnD;;GAEG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,WAAW,EAAE,GACrB,WAAW,CAgBb;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG7D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAU5E;AA4BD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CA0BjE;AAoBD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,GACf;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAcnD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,MAAiB,GACzB,WAAW,EAAE,CAyCf;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOnE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,cAAc,CAavF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAGjF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAsB5D"}
@@ -1,236 +0,0 @@
1
- /**
2
- * SPEC Versioning - SPEC 버전 관리 및 Changelog 자동 생성
3
- */
4
- import * as fs from 'fs';
5
- import * as path from 'path';
6
- import { execSync } from 'child_process';
7
- // ============================================
8
- // Version Management
9
- // ============================================
10
- /**
11
- * SPEC 버전 범프
12
- */
13
- export function bumpSpecVersion(specPath, bumpType, changes) {
14
- const content = fs.readFileSync(specPath, 'utf-8');
15
- const currentVersion = extractVersion(content) || '0.0.0';
16
- const newVersion = incrementVersion(currentVersion, bumpType);
17
- // 프론트매터 업데이트
18
- const updatedContent = updateFrontmatterVersion(content, newVersion);
19
- fs.writeFileSync(specPath, updatedContent);
20
- const version = {
21
- version: newVersion,
22
- date: new Date().toISOString().split('T')[0],
23
- changes,
24
- };
25
- return version;
26
- }
27
- /**
28
- * 버전 추출
29
- */
30
- export function extractVersion(content) {
31
- const match = content.match(/version:\s*['"]?(\d+\.\d+\.\d+)['"]?/);
32
- return match ? match[1] : null;
33
- }
34
- /**
35
- * 버전 증가
36
- */
37
- export function incrementVersion(version, bumpType) {
38
- const parts = version.split('.').map(Number);
39
- switch (bumpType) {
40
- case 'major':
41
- return `${parts[0] + 1}.0.0`;
42
- case 'minor':
43
- return `${parts[0]}.${parts[1] + 1}.0`;
44
- case 'patch':
45
- return `${parts[0]}.${parts[1]}.${parts[2] + 1}`;
46
- }
47
- }
48
- /**
49
- * 프론트매터 버전 업데이트
50
- */
51
- function updateFrontmatterVersion(content, newVersion) {
52
- const now = new Date().toISOString();
53
- // version 필드 업데이트 또는 추가
54
- if (content.match(/version:/)) {
55
- content = content.replace(/version:\s*['"]?\d+\.\d+\.\d+['"]?/, `version: ${newVersion}`);
56
- }
57
- else {
58
- // 프론트매터에 version 추가
59
- content = content.replace(/^(---\n)/, `$1version: ${newVersion}\n`);
60
- }
61
- // lastUpdated 업데이트
62
- if (content.match(/lastUpdated:/)) {
63
- content = content.replace(/lastUpdated:\s*[^\n]+/, `lastUpdated: ${now}`);
64
- }
65
- return content;
66
- }
67
- // ============================================
68
- // Changelog Generation
69
- // ============================================
70
- /**
71
- * Changelog 생성
72
- */
73
- export function generateChangelog(history) {
74
- let changelog = `# Changelog: ${history.featureName}\n\n`;
75
- changelog += `Current Version: ${history.currentVersion}\n\n`;
76
- for (const version of history.versions.slice().reverse()) {
77
- changelog += `## [${version.version}] - ${version.date}\n\n`;
78
- if (version.gitTag) {
79
- changelog += `Git Tag: ${version.gitTag}\n\n`;
80
- }
81
- // 타입별 그룹화
82
- const grouped = groupChangesByType(version.changes);
83
- for (const [type, entries] of Object.entries(grouped)) {
84
- changelog += `### ${capitalizeFirst(type)}\n\n`;
85
- for (const entry of entries) {
86
- const prefix = entry.requirementId ? `[${entry.requirementId}] ` : '';
87
- const section = entry.section ? ` (${entry.section})` : '';
88
- changelog += `- ${prefix}${entry.description}${section}\n`;
89
- }
90
- changelog += '\n';
91
- }
92
- }
93
- return changelog;
94
- }
95
- /**
96
- * 변경사항을 타입별로 그룹화
97
- */
98
- function groupChangesByType(changes) {
99
- const grouped = {};
100
- for (const change of changes) {
101
- if (!grouped[change.type]) {
102
- grouped[change.type] = [];
103
- }
104
- grouped[change.type].push(change);
105
- }
106
- return grouped;
107
- }
108
- // ============================================
109
- // Git Integration
110
- // ============================================
111
- /**
112
- * Git 태그 생성
113
- */
114
- export function createGitTag(featureName, version, message) {
115
- const tag = `spec/${featureName}/v${version}`;
116
- const tagMessage = message || `SPEC ${featureName} version ${version}`;
117
- try {
118
- execSync(`git tag -a "${tag}" -m "${tagMessage}"`, { encoding: 'utf-8' });
119
- return { success: true, tag };
120
- }
121
- catch (error) {
122
- return {
123
- success: false,
124
- tag,
125
- error: error instanceof Error ? error.message : String(error),
126
- };
127
- }
128
- }
129
- /**
130
- * SPEC 변경사항 감지 (Git diff 기반)
131
- */
132
- export function detectSpecChanges(specPath, baseRef = 'HEAD~1') {
133
- const changes = [];
134
- try {
135
- const diff = execSync(`git diff ${baseRef} -- "${specPath}"`, { encoding: 'utf-8' });
136
- // 추가된 라인 분석
137
- const addedLines = diff.match(/^\+[^+].*/gm) || [];
138
- for (const line of addedLines) {
139
- const cleanLine = line.slice(1).trim();
140
- if (cleanLine.match(/^- \[ \]/) || cleanLine.match(/^1\. \[ \]/)) {
141
- changes.push({
142
- type: 'added',
143
- description: cleanLine.replace(/^[-\d.]+\s*\[ \]\s*/, ''),
144
- section: 'Task',
145
- });
146
- }
147
- }
148
- // 삭제된 라인 분석
149
- const removedLines = diff.match(/^-[^-].*/gm) || [];
150
- for (const line of removedLines) {
151
- const cleanLine = line.slice(1).trim();
152
- if (cleanLine.match(/^- \[ \]/) || cleanLine.match(/^1\. \[ \]/)) {
153
- changes.push({
154
- type: 'removed',
155
- description: cleanLine.replace(/^[-\d.]+\s*\[ \]\s*/, ''),
156
- section: 'Task',
157
- });
158
- }
159
- }
160
- }
161
- catch {
162
- // Git diff 실패 (파일이 새로 생성됨 등)
163
- changes.push({
164
- type: 'added',
165
- description: 'Initial SPEC creation',
166
- });
167
- }
168
- return changes;
169
- }
170
- /**
171
- * 최신 SPEC 커밋 조회
172
- */
173
- export function getLatestSpecCommit(specPath) {
174
- try {
175
- const commit = execSync(`git log -1 --format=%H -- "${specPath}"`, { encoding: 'utf-8' });
176
- return commit.trim() || null;
177
- }
178
- catch {
179
- return null;
180
- }
181
- }
182
- /**
183
- * SPEC 버전 히스토리 로드
184
- */
185
- export function loadVersionHistory(specDir, featureName) {
186
- const historyPath = path.join(specDir, `${featureName}.versions.json`);
187
- try {
188
- const content = fs.readFileSync(historyPath, 'utf-8');
189
- return JSON.parse(content);
190
- }
191
- catch {
192
- return {
193
- featureName,
194
- currentVersion: '0.0.0',
195
- versions: [],
196
- };
197
- }
198
- }
199
- /**
200
- * SPEC 버전 히스토리 저장
201
- */
202
- export function saveVersionHistory(specDir, history) {
203
- const historyPath = path.join(specDir, `${history.featureName}.versions.json`);
204
- fs.writeFileSync(historyPath, JSON.stringify(history, null, 2));
205
- }
206
- /**
207
- * Baseline 태깅 (릴리즈 준비 완료 표시)
208
- */
209
- export function createBaseline(featureName, specPath) {
210
- const content = fs.readFileSync(specPath, 'utf-8');
211
- const version = extractVersion(content) || '1.0.0';
212
- const timestamp = new Date().toISOString().replace(/[:-]/g, '').split('.')[0];
213
- const baselineName = `baseline/${featureName}-v${version}-${timestamp}`;
214
- try {
215
- // Baseline 커밋
216
- execSync(`git add "${specPath}"`, { encoding: 'utf-8' });
217
- execSync(`git commit -m "SPEC baseline: ${featureName} v${version}"`, { encoding: 'utf-8' });
218
- // Baseline 태그
219
- execSync(`git tag "${baselineName}" -m "Baseline for ${featureName} v${version}"`, { encoding: 'utf-8' });
220
- return { success: true, baselineName };
221
- }
222
- catch (error) {
223
- return {
224
- success: false,
225
- baselineName,
226
- error: error instanceof Error ? error.message : String(error),
227
- };
228
- }
229
- }
230
- // ============================================
231
- // Helpers
232
- // ============================================
233
- function capitalizeFirst(str) {
234
- return str.charAt(0).toUpperCase() + str.slice(1);
235
- }
236
- //# sourceMappingURL=specVersioning.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"specVersioning.js","sourceRoot":"","sources":["../../../src/tools/spec/specVersioning.ts"],"names":[],"mappings":"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"}