@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,7 +1,7 @@
1
1
  ---
2
2
  name: vibe.clone
3
3
  description: URL → 마크업 레벨 픽셀 완벽 클론 — 헤드리스 브라우저로 라이브 사이트 캡처 후 현재 프로젝트 스택에 맞게 스캐폴딩
4
- argument-hint: "<url> [<url2>...] [--name=<feature>] [--mo-only] [--pc-only] [--ignore-robots] [--no-interact]"
4
+ argument-hint: "<url> [<url2>...] [--name=<feature>] [--mo-only] [--pc-only] [--ignore-robots] [--no-interact] [--real-content]"
5
5
  user-invocable: true
6
6
  ---
7
7
 
@@ -21,6 +21,7 @@ URL을 받아 **마크업 수준으로 정밀 복제**하고 현재 프로젝트
21
21
  /vibe.clone <url1> <url2> <url3> # 다중 페이지 클론 (같은 사이트의 여러 경로)
22
22
  /vibe.clone <url> --ignore-robots # robots.txt 무시 (사이트 소유자 허가 있을 때만)
23
23
  /vibe.clone <url> --no-interact # 능동 인터랙션 스윕 끄기 (완전 결정론적·재현 가능 캡처)
24
+ /vibe.clone <url> --real-content # 텍스트 verbatim 유지 (본인 소유/허가 확인 1회 필수)
24
25
  ```
25
26
 
26
27
  ## Argument Routing
@@ -31,6 +32,7 @@ Step 1) 인자 수집
31
32
  feature = --name=<value> | URL host → kebab-case
32
33
  scope = --mo-only | --pc-only | (기본: both)
33
34
  ignoreRobots = --ignore-robots 플래그 유무
35
+ realContent = --real-content 플래그 유무 (소유/허가 확인 질문 1회 후 적용)
34
36
 
35
37
  Step 2) 인자 검증
36
38
  urls.length === 0 → 사용자에게 URL 입력 요청, 중단
@@ -53,9 +55,11 @@ Phase 0: Setup
53
55
  Phase 1: Capture (병렬 — scope에 따라 MO/PC 동시)
54
56
  - node {{VIBE_PATH}}/hooks/scripts/clone-extract.js capture <url> \
55
57
  --out=/tmp/{feature}/{bp}/ --viewport={WxH} --bp={mo|pc}
56
- - 출력: rendered.html, computed.json, screenshot.png, states.json, behaviors.json, asset-map.json, assets/
57
- - behaviors.json = 능동 인터랙션 스윕(스크롤 헤더/내비 변화 diff + 탭 클릭 콘텐츠 스왑 감지).
58
+ - 출력: rendered.html, computed.json, screenshot.png, states.json, behaviors.json, asset-map.json, assets/ (images·fonts·seo)
59
+ - behaviors.json = 능동 인터랙션 스윕 4종+ (스크롤 헤더 diff · 탭 클릭 콘텐츠 스왑 · 호버 diff ·
60
+ in-view 등장 애니메이션 · time-driven 캐러셀 후보 · 스무스 스크롤 라이브러리 감지).
58
61
  JS로 세팅되는 상태(정적 CSS로는 안 잡힘)를 포착 — 클론 정확도의 핵심. --no-interact 로 비활성화.
62
+ - assets/seo/ = favicon·apple-touch-icon·og:image·webmanifest (Foundation 단계에서 배선)
59
63
 
60
64
  Phase 2: Refine (BP마다 독립)
61
65
  - node {{VIBE_PATH}}/hooks/scripts/clone-refine.js \
@@ -63,21 +67,34 @@ Phase 2: Refine (BP마다 독립)
63
67
  --out=/tmp/{feature}/{bp}/sections.json --states=/tmp/{feature}/{bp}/states.json --bp={mo|pc}
64
68
  - sections.json 에 section.interaction(인터랙션 모델 추정) + section.states(상태 규칙) 포함
65
69
 
66
- Phase 3: Scaffold (BP 순차 — MO 완료 후 PC)
70
+ Phase 2.5: Foundation (순차 — 섹션 빌드 )
71
+ - 폰트 배선(Next → next/font) · assets/seo/ → public/ (favicon·OG·manifest 메타 배선)
72
+ - 인라인 SVG dedupe → 아이콘 모듈 · scrollLib 감지 시 페이지 레벨 배선
73
+
74
+ Phase 3: Scaffold (BP 순차 — MO 완료 후 PC / 섹션은 병렬 빌더 디스패치)
67
75
  - Step 0: node {{VIBE_PATH}}/hooks/scripts/clone-spec.js \
68
76
  /tmp/{feature}/{bp}/sections.json \
69
- --out=./components/{feature}/_specs/ --feature={feature}
70
- → 섹션별 빌드 계약서(_specs/{Section}.spec.md). 빌드 전 TODO(인터랙션 모델 확정·상태 목록·텍스트 교체) 해결
77
+ --out=./components/{feature}/_specs/{bp}/ --feature={feature} [--real-content]
78
+ → 섹션별 빌드 계약서(_specs/{bp}/{Section}.spec.md). 디스패치 전 TODO(인터랙션 모델 확정·상태 목록·텍스트 교체) 해결
79
+ → spec 150줄 초과 시 하위 컴포넌트 spec으로 분할 (기계적 체크 — wc -l)
71
80
  - Step A: node {{VIBE_PATH}}/hooks/scripts/clone-to-scss.js \
72
81
  /tmp/{feature}/{bp}/sections.json \
73
- --out=./styles/{feature}/ --feature={feature}
74
- - Claude: 섹션별로 HTML/컴포넌트 작성 (스택별 .tsx/.vue/.svelte/.html) 확정된 인터랙션 모델 + 모든 상태 반영
82
+ --out=./styles/{feature}/{bp}/ --feature={feature}
83
+ SCSS 초안. 이후 근거(computed/states/behaviors) 인용 수정 허용 clone-validate가 판정자
84
+ - 병렬 디스패치: 섹션별 빌더 서브에이전트 — spec 전문을 프롬프트에 인라인, 병렬 파일 쓰기는 worktree 격리
75
85
  - Step B: node {{VIBE_PATH}}/hooks/scripts/clone-validate.js \
76
- ./styles/{feature}/ /tmp/{feature}/{bp}/sections.json --section={Name}
77
- - 섹션마다 PASS 받고 다음 섹션 진행
86
+ ./styles/{feature}/{bp}/ /tmp/{feature}/{bp}/sections.json --section={Name}
87
+ - 섹션마다 PASS 완료 처리 (머지 순서: 하위 컴포넌트 → 래퍼)
88
+
89
+ Phase 3C: Responsive Merge (MO+PC 모두 Phase 5 통과 후)
90
+ - node {{VIBE_PATH}}/hooks/scripts/clone-merge-responsive.js \
91
+ --mo=./styles/{feature}/mo/ --pc=./styles/{feature}/pc/ \
92
+ --out=./styles/{feature}/ [--breakpoint=1024]
93
+ → mobile-first 병합: MO 선언 = 기본, PC diff만 @media (min-width) 블록
94
+ - 컴포넌트 import를 병합 index.scss로 전환 → Phase 4 → Phase 5를 두 뷰포트 모두 재실행
78
95
 
79
96
  Phase 4: Compile Gate (clone SKILL.md 규칙)
80
- Phase 5: Pixel Verification (P1=0까지 루프 — clone SKILL.md 규칙)
97
+ Phase 5: Pixel Verification (P1=0까지 루프 — clone SKILL.md 규칙; 병합 후엔 MO·PC 양쪽)
81
98
  ```
82
99
 
83
100
  ## Prerequisites
@@ -94,16 +111,18 @@ Phase 5: Pixel Verification (P1=0까지 루프 — clone SKILL.md 규칙)
94
111
  ├── mo/, pc/ # rendered.html, computed.json, screenshot.png, states.json, behaviors.json, sections.json, assets/
95
112
  └── project-tokens.json # 기존 프로젝트 토큰 인덱스
96
113
 
97
- ./components/{feature}/ # Claude가 작성한 컴포넌트 (.tsx/.vue/.svelte/.html)
98
- ./components/{feature}/_specs/ # clone-spec.js가 생성한 섹션별 빌드 계약서 (*.spec.md)
99
- ./styles/{feature}/ # clone-to-scss.js가 생성한 SCSS 파일
100
- ├── _tokens.scss # CSS 변수
114
+ ./components/{feature}/ # 빌더가 작성한 컴포넌트 (.tsx/.vue/.svelte/.html)
115
+ ./components/{feature}/_specs/{mo,pc}/ # clone-spec.js가 생성한 섹션별 빌드 계약서 (*.spec.md)
116
+ ./styles/{feature}/ # 최종 병합 SCSS (Phase 3C 산출 — mobile-first @media)
117
+ ├── mo/, pc/ # BP별 SCSS 초안 (clone-to-scss.js + 근거 기반 수정)
118
+ ├── _tokens.scss # CSS 변수 (병합)
101
119
  ├── _base.scss # @font-face
102
- ├── _shared.scss # 유틸
103
- ├── sections/_<name>.scss # 섹션별 partial
104
- ├── index.scss # 마스터 orchestrator
105
- └── class-plan.json # 노드 id → BEM 클래스
120
+ ├── _shared.scss # 유틸 + 글로벌 동작 (scroll-lib 등)
121
+ ├── sections/_<name>.scss # 섹션별 partial (병합)
122
+ ├── index.scss # 마스터 orchestrator (병합)
123
+ └── class-plan.json # 노드 id → BEM 클래스 (병합)
106
124
  ./public/images/{feature}/ # 다운로드된 이미지/폰트
125
+ ./public/ (프로젝트 관례 경로) # favicon·OG·manifest (assets/seo/ 에서 배선)
107
126
  ```
108
127
 
109
128
  ## Legal Notes
@@ -121,6 +140,7 @@ Phase 5: Pixel Verification (P1=0까지 루프 — clone SKILL.md 규칙)
121
140
 
122
141
  Claude 기본 행동:
123
142
  - 저작권 텍스트 → 플레이스홀더("[Lorem ipsum]") 교체
143
+ - --real-content → 소유/허가 확인 질문 1회 후 verbatim 유지 (본인 사이트 재구축 유스케이스)
124
144
  - robots.txt 차단 경로 → 명시적 --ignore-robots 없으면 거부
125
145
  - 사용자 의도가 사칭/기만이면 즉시 거부
126
146
  ```
@@ -1,25 +0,0 @@
1
- /**
2
- * Gemini CLI 명령어
3
- *
4
- * - vibe gemini key: API Key 설정
5
- * - vibe gemini status: 상태 확인
6
- * - vibe gemini logout: 설정 제거
7
- */
8
- /**
9
- * Gemini 인증 핵심 로직 (process.exit 없음)
10
- * API Key 확인
11
- */
12
- export declare function geminiAuthCore(): boolean;
13
- /**
14
- * Gemini 인증 (CLI 명령어용)
15
- */
16
- export declare function geminiAuth(): Promise<void>;
17
- /**
18
- * Gemini 상태 확인
19
- */
20
- export declare function geminiStatus(): void;
21
- /**
22
- * Gemini 로그아웃
23
- */
24
- export declare function geminiLogout(): void;
25
- //# sourceMappingURL=gemini-commands.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gemini-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/llm/gemini-commands.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAcH;;;GAGG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAYxC;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAwBhD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAiCnC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CA6BnC"}
@@ -1,143 +0,0 @@
1
- /**
2
- * Gemini CLI 명령어
3
- *
4
- * - vibe gemini key: API Key 설정
5
- * - vibe gemini status: 상태 확인
6
- * - vibe gemini logout: 설정 제거
7
- */
8
- import fs from 'fs';
9
- import { getProjectConfigPath, getProjectConfigPaths, readGlobalConfig, writeGlobalConfig, } from '../../infra/lib/config/GlobalConfigManager.js';
10
- /**
11
- * Gemini 인증 핵심 로직 (process.exit 없음)
12
- * API Key 확인
13
- */
14
- export function geminiAuthCore() {
15
- const config = readGlobalConfig();
16
- const apiKey = config.credentials?.gemini?.apiKey || process.env.GEMINI_API_KEY;
17
- if (apiKey) {
18
- updateConfigOnAuth('apikey');
19
- console.log('Gemini API Key configured.');
20
- return true;
21
- }
22
- console.log('No API key found. Run "vibe gemini key <key>" to set up.');
23
- return false;
24
- }
25
- /**
26
- * Gemini 인증 (CLI 명령어용)
27
- */
28
- export async function geminiAuth() {
29
- console.log(`
30
- Gemini Authentication
31
-
32
- API Key (Google AI Studio):
33
- vibe gemini key <your-api-key>
34
-
35
- Get your API key from:
36
- https://aistudio.google.com/apikey
37
- `);
38
- const config = readGlobalConfig();
39
- const apiKey = config.credentials?.gemini?.apiKey;
40
- if (apiKey) {
41
- console.log('API Key: configured');
42
- console.log('\nStatus: vibe gemini status');
43
- console.log('Logout: vibe gemini logout');
44
- process.exit(0);
45
- }
46
- console.log('No API key configured.');
47
- console.log('Run: vibe gemini key <your-api-key>');
48
- process.exit(1);
49
- }
50
- /**
51
- * Gemini 상태 확인
52
- */
53
- export function geminiStatus() {
54
- try {
55
- const config = readGlobalConfig();
56
- const geminiCreds = config.credentials?.gemini;
57
- const hasApiKey = Boolean(geminiCreds?.apiKey) || Boolean(process.env.GEMINI_API_KEY);
58
- if (hasApiKey) {
59
- const modelOverrides = config.models;
60
- const lines = [
61
- '\nGemini Status\n',
62
- 'Auth: API Key',
63
- `Source: ${geminiCreds?.apiKey ? '~/.vibe/config.json' : 'GEMINI_API_KEY env'}`,
64
- ];
65
- lines.push('\nModels:');
66
- lines.push(` gemini=${modelOverrides?.gemini || process.env.GEMINI_MODEL || '(default)'}`);
67
- lines.push(` geminiFlash=${modelOverrides?.geminiFlash || process.env.GEMINI_FLASH_MODEL || '(default)'}\n`);
68
- console.log(lines.join('\n'));
69
- return;
70
- }
71
- console.log(`
72
- Gemini Status
73
-
74
- No credentials found.
75
-
76
- Set up:
77
- vibe gemini key <your-api-key>
78
- or set GEMINI_API_KEY env var
79
- `);
80
- }
81
- catch (error) {
82
- const message = error instanceof Error ? error.message : String(error);
83
- console.error('Status check failed:', message);
84
- }
85
- }
86
- /**
87
- * Gemini 로그아웃
88
- */
89
- export function geminiLogout() {
90
- try {
91
- const config = readGlobalConfig();
92
- if (config.credentials?.gemini) {
93
- delete config.credentials.gemini;
94
- writeGlobalConfig(config);
95
- console.log('Gemini credentials removed from ~/.vibe/config.json');
96
- }
97
- const projectRoot = process.cwd();
98
- const configPath = findExistingProjectConfig(projectRoot);
99
- if (fs.existsSync(configPath)) {
100
- try {
101
- const projConfig = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
102
- if (projConfig.models?.gemini) {
103
- projConfig.models.gemini.enabled = false;
104
- projConfig.models.gemini.authType = undefined;
105
- projConfig.models.gemini.email = undefined;
106
- fs.writeFileSync(configPath, JSON.stringify(projConfig, null, 2));
107
- }
108
- }
109
- catch { /* ignore */ }
110
- }
111
- console.log('Gemini credentials cleared.');
112
- }
113
- catch (error) {
114
- const message = error instanceof Error ? error.message : String(error);
115
- console.error('Logout failed:', message);
116
- }
117
- }
118
- /**
119
- * config.json에 Gemini 활성화 기록
120
- */
121
- function updateConfigOnAuth(method) {
122
- const configPath = findExistingProjectConfig(process.cwd());
123
- if (!fs.existsSync(configPath))
124
- return;
125
- try {
126
- const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
127
- if (!config.models)
128
- config.models = {};
129
- config.models.gemini = {
130
- enabled: true,
131
- authType: method,
132
- role: 'exploration',
133
- description: 'Gemini (API Key)',
134
- };
135
- fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
136
- }
137
- catch { /* ignore */ }
138
- }
139
- function findExistingProjectConfig(projectRoot) {
140
- return getProjectConfigPaths(projectRoot).find(p => fs.existsSync(p))
141
- || getProjectConfigPath(projectRoot);
142
- }
143
- //# sourceMappingURL=gemini-commands.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gemini-commands.js","sourceRoot":"","sources":["../../../src/cli/llm/gemini-commands.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- /**
2
- * Codex 플러그인 설치
3
- *
4
- * Codex v0.117.0+ 플러그인 시스템 대응.
5
- * agents + skills → ~/.codex/plugins/vibe/ 플러그인 번들로 패키징.
6
- *
7
- * 생성 구조:
8
- * ~/.codex/plugins/vibe/
9
- * ├── .codex-plugin/plugin.json
10
- * ├── skills/
11
- * ├── agents/
12
- * └── AGENTS.md
13
- */
14
- /**
15
- * Codex 플러그인 설치 (agents + skills + manifest + AGENTS.md)
16
- *
17
- * @param agentsSource - agents/ 소스 디렉토리
18
- * @param skillsSource - skills/ 소스 디렉토리
19
- * @param codexConfigDir - ~/.codex/ 디렉토리
20
- * @param packageRoot - 패키지 루트 디렉토리
21
- */
22
- export declare function installCodexPlugin(agentsSource: string, skillsSource: string, codexConfigDir: string, packageRoot: string): void;
23
- export declare const installCodexAgents: typeof installCodexPlugin;
24
- //# sourceMappingURL=codex-agents.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex-agents.d.ts","sourceRoot":"","sources":["../../../src/cli/postinstall/codex-agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAgFH;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,GAClB,IAAI,CA+BN;AAGD,eAAO,MAAM,kBAAkB,2BAAqB,CAAC"}
@@ -1,114 +0,0 @@
1
- /**
2
- * Codex 플러그인 설치
3
- *
4
- * Codex v0.117.0+ 플러그인 시스템 대응.
5
- * agents + skills → ~/.codex/plugins/vibe/ 플러그인 번들로 패키징.
6
- *
7
- * 생성 구조:
8
- * ~/.codex/plugins/vibe/
9
- * ├── .codex-plugin/plugin.json
10
- * ├── skills/
11
- * ├── agents/
12
- * └── AGENTS.md
13
- */
14
- import path from 'path';
15
- import fs from 'fs';
16
- import { ensureDir, removeDirRecursive, copySkillsFiltered, removeLegacySkills } from './fs-utils.js';
17
- import { GLOBAL_SKILLS, LEGACY_SKILL_DIRS } from './constants.js';
18
- import { generateCodexAgentsMd } from './codex-instruction.js';
19
- /**
20
- * package.json에서 버전 읽기
21
- */
22
- function getPackageVersion(packageRoot) {
23
- try {
24
- const pkgPath = path.join(packageRoot, 'package.json');
25
- const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
26
- return pkg.version ?? '0.0.0';
27
- }
28
- catch {
29
- return '0.0.0';
30
- }
31
- }
32
- /**
33
- * .codex-plugin/plugin.json 매니페스트 생성
34
- */
35
- function writePluginManifest(pluginDir, version) {
36
- const manifestDir = path.join(pluginDir, '.codex-plugin');
37
- ensureDir(manifestDir);
38
- const manifest = {
39
- name: 'vibe',
40
- version,
41
- description: 'VIBE — Easy vibe coding with minimum quality guaranteed',
42
- skills: './skills/',
43
- agents: './agents/',
44
- };
45
- fs.writeFileSync(path.join(manifestDir, 'plugin.json'), JSON.stringify(manifest, null, 2) + '\n', 'utf-8');
46
- }
47
- /**
48
- * agents/*.md → pluginDir/agents/ 재귀 복사 (YAML frontmatter 제거)
49
- */
50
- function installAgentsToPlugin(agentsSource, pluginAgentsDir) {
51
- if (!fs.existsSync(agentsSource))
52
- return 0;
53
- ensureDir(pluginAgentsDir);
54
- let installed = 0;
55
- function processDirectory(srcDir, destDir) {
56
- ensureDir(destDir);
57
- const entries = fs.readdirSync(srcDir, { withFileTypes: true });
58
- for (const entry of entries) {
59
- const srcPath = path.join(srcDir, entry.name);
60
- const destPath = path.join(destDir, entry.name);
61
- if (entry.isDirectory()) {
62
- processDirectory(srcPath, destPath);
63
- }
64
- else if (entry.name.endsWith('.md')) {
65
- try {
66
- let content = fs.readFileSync(srcPath, 'utf-8');
67
- content = content.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
68
- content = content.replace(/^---\n[\s\S]*?\n---\n/, '');
69
- fs.writeFileSync(destPath, content.trimStart(), 'utf-8');
70
- installed++;
71
- }
72
- catch {
73
- // skip failed files
74
- }
75
- }
76
- }
77
- }
78
- processDirectory(agentsSource, pluginAgentsDir);
79
- return installed;
80
- }
81
- /**
82
- * Codex 플러그인 설치 (agents + skills + manifest + AGENTS.md)
83
- *
84
- * @param agentsSource - agents/ 소스 디렉토리
85
- * @param skillsSource - skills/ 소스 디렉토리
86
- * @param codexConfigDir - ~/.codex/ 디렉토리
87
- * @param packageRoot - 패키지 루트 디렉토리
88
- */
89
- export function installCodexPlugin(agentsSource, skillsSource, codexConfigDir, packageRoot) {
90
- const pluginDir = path.join(codexConfigDir, 'plugins', 'vibe');
91
- // 클린 설치
92
- if (fs.existsSync(pluginDir)) {
93
- removeDirRecursive(pluginDir);
94
- }
95
- ensureDir(pluginDir);
96
- // 1. 매니페스트 생성
97
- const version = getPackageVersion(packageRoot);
98
- writePluginManifest(pluginDir, version);
99
- // 2. Agents 설치
100
- const agentCount = installAgentsToPlugin(agentsSource, path.join(pluginDir, 'agents'));
101
- // 3. Skills 설치
102
- const pluginSkillsDir = path.join(pluginDir, 'skills');
103
- if (fs.existsSync(skillsSource)) {
104
- ensureDir(pluginSkillsDir);
105
- removeLegacySkills(pluginSkillsDir, LEGACY_SKILL_DIRS);
106
- copySkillsFiltered(skillsSource, pluginSkillsDir, GLOBAL_SKILLS);
107
- }
108
- // 4. AGENTS.md 생성 (플러그인 내부)
109
- generateCodexAgentsMd(pluginDir, packageRoot);
110
- console.log(` 📦 Codex plugin: ${agentCount} agents installed → ${pluginDir}`);
111
- }
112
- // 레거시 호환 — installCodexAgents 이름으로도 export
113
- export const installCodexAgents = installCodexPlugin;
114
- //# sourceMappingURL=codex-agents.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex-agents.js","sourceRoot":"","sources":["../../../src/cli/postinstall/codex-agents.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Codex CLI 전역 AGENTS.md 생성
3
- *
4
- * CLAUDE.md에서 VIBE 섹션을 읽어 Codex AGENTS.md 형식으로 변환
5
- */
6
- /**
7
- * 전역 ~/.codex/AGENTS.md 생성
8
- */
9
- export declare function generateCodexAgentsMd(codexDir: string, packageRoot: string): void;
10
- //# sourceMappingURL=codex-instruction.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex-instruction.d.ts","sourceRoot":"","sources":["../../../src/cli/postinstall/codex-instruction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmDH;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAQjF"}
@@ -1,56 +0,0 @@
1
- /**
2
- * Codex CLI 전역 AGENTS.md 생성
3
- *
4
- * CLAUDE.md에서 VIBE 섹션을 읽어 Codex AGENTS.md 형식으로 변환
5
- */
6
- import path from 'path';
7
- import fs from 'fs';
8
- const CORE_START_MARKER = '# VIBE';
9
- const CORE_END_MARKER = '<!-- VIBE:END -->';
10
- /**
11
- * CLAUDE.md에서 VIBE 섹션 추출 (CLI-neutral 공통 내용)
12
- */
13
- function getVibeInstructionContent(packageRoot) {
14
- const claudeMdPath = path.join(packageRoot, 'CLAUDE.md');
15
- if (!fs.existsSync(claudeMdPath))
16
- return '';
17
- const content = fs.readFileSync(claudeMdPath, 'utf-8').replace(/\r\n/g, '\n');
18
- const startIdx = content.indexOf(CORE_START_MARKER);
19
- const endIdx = content.indexOf(CORE_END_MARKER);
20
- if (startIdx === -1)
21
- return '';
22
- const endPos = endIdx !== -1 ? endIdx + CORE_END_MARKER.length : content.length;
23
- return content.substring(startIdx, endPos);
24
- }
25
- /**
26
- * VIBE 내용을 Codex 형식으로 변환
27
- * - "Claude Code Exclusive" 문구 제거
28
- * - hooks 관련 섹션 제거 (Codex 미지원)
29
- * - 경로 참조를 ~/.codex/ 기준으로 변환
30
- */
31
- function adaptForCodex(content) {
32
- let adapted = content;
33
- // "Claude Code Exclusive" 문구 제거
34
- adapted = adapted.replace(/\(Claude Code Exclusive\)/g, '');
35
- adapted = adapted.replace(/Claude Code Exclusive/g, '');
36
- // Hooks System 섹션 제거 (Codex 미지원)
37
- adapted = adapted.replace(/## Hooks System\n[\s\S]*?(?=\n## )/g, '');
38
- // ~/.claude/ → ~/.codex/ 경로 변환
39
- adapted = adapted.replace(/~\/\.claude\//g, '~/.codex/');
40
- adapted = adapted.replace(/\.claude\//g, '.codex/');
41
- // "Claude Code" → "Codex CLI" 변환 (일반적 참조)
42
- adapted = adapted.replace(/Claude Code/g, 'Codex CLI');
43
- return adapted.trim();
44
- }
45
- /**
46
- * 전역 ~/.codex/AGENTS.md 생성
47
- */
48
- export function generateCodexAgentsMd(codexDir, packageRoot) {
49
- const vibeContent = getVibeInstructionContent(packageRoot);
50
- if (!vibeContent)
51
- return;
52
- const codexContent = adaptForCodex(vibeContent);
53
- const agentsMdPath = path.join(codexDir, 'AGENTS.md');
54
- fs.writeFileSync(agentsMdPath, codexContent + '\n', 'utf-8');
55
- }
56
- //# sourceMappingURL=codex-instruction.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex-instruction.js","sourceRoot":"","sources":["../../../src/cli/postinstall/codex-instruction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AACnC,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAE5C;;GAEG;AACH,SAAS,yBAAyB,CAAC,WAAmB;IACpD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACzD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,EAAE,CAAC;IAE5C,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC9E,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAEhD,IAAI,QAAQ,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAEhF,OAAO,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,OAAe;IACpC,IAAI,OAAO,GAAG,OAAO,CAAC;IAEtB,gCAAgC;IAChC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,4BAA4B,EAAE,EAAE,CAAC,CAAC;IAC5D,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;IAExD,iCAAiC;IACjC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,qCAAqC,EAAE,EAAE,CAAC,CAAC;IAErE,+BAA+B;IAC/B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;IACzD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAEpD,0CAA0C;IAC1C,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAEvD,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB,EAAE,WAAmB;IACzE,MAAM,WAAW,GAAG,yBAAyB,CAAC,WAAW,CAAC,CAAC;IAC3D,IAAI,CAAC,WAAW;QAAE,OAAO;IAEzB,MAAM,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAEtD,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/D,CAAC"}
@@ -1,12 +0,0 @@
1
- /**
2
- * Gemini CLI 에이전트 변환 및 설치
3
- *
4
- * VIBE 에이전트 마크다운 파일을 Gemini CLI 형식
5
- * (YAML frontmatter: name, description만) 으로 변환하여 ~/.gemini/agents/에 설치
6
- */
7
- /**
8
- * Gemini CLI 에이전트 설치
9
- * agents/ → ~/.gemini/agents/ 재귀 순회하여 변환 후 설치
10
- */
11
- export declare function installGeminiAgents(agentsSource: string, geminiAgentsDir: string): void;
12
- //# sourceMappingURL=gemini-agents.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gemini-agents.d.ts","sourceRoot":"","sources":["../../../src/cli/postinstall/gemini-agents.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6CH;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI,CAsCvF"}
@@ -1,80 +0,0 @@
1
- /**
2
- * Gemini CLI 에이전트 변환 및 설치
3
- *
4
- * VIBE 에이전트 마크다운 파일을 Gemini CLI 형식
5
- * (YAML frontmatter: name, description만) 으로 변환하여 ~/.gemini/agents/에 설치
6
- */
7
- import path from 'path';
8
- import fs from 'fs';
9
- import { ensureDir, removeDirRecursive } from './fs-utils.js';
10
- /**
11
- * VIBE 에이전트를 Gemini CLI 형식으로 변환
12
- * Gemini frontmatter: name, description만 (model/tools/permissionMode 없음)
13
- */
14
- function convertAgentToGemini(content, filename) {
15
- const normalizedContent = content.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
16
- const name = path.basename(filename, '.md');
17
- // 제목 추출
18
- const titleMatch = normalizedContent.match(/^# (.+)$/m);
19
- const title = titleMatch ? titleMatch[1].trim() : name;
20
- // Role 섹션 추출
21
- const roleMatch = normalizedContent.match(/## Role\s*\n([\s\S]*?)(?=\n## )/);
22
- const roleLines = roleMatch
23
- ? roleMatch[1]
24
- .split('\n')
25
- .filter((line) => line.trim().startsWith('- '))
26
- .map((line) => line.trim().replace(/^- /, '').trim())
27
- .slice(0, 3)
28
- : [];
29
- const description = roleLines.length > 0
30
- ? `${title}. ${roleLines.join(', ')}.`
31
- : title;
32
- // Gemini YAML frontmatter (name, description만)
33
- let frontmatter = '---\n';
34
- frontmatter += `name: ${name}\n`;
35
- frontmatter += `description: ${description}\n`;
36
- frontmatter += '---\n';
37
- // 기존 frontmatter 제거 후 원본 본문 유지
38
- const bodyContent = normalizedContent.replace(/^---\n[\s\S]*?\n---\n/, '');
39
- return `${frontmatter}\n${bodyContent}`;
40
- }
41
- /**
42
- * Gemini CLI 에이전트 설치
43
- * agents/ → ~/.gemini/agents/ 재귀 순회하여 변환 후 설치
44
- */
45
- export function installGeminiAgents(agentsSource, geminiAgentsDir) {
46
- if (!fs.existsSync(agentsSource)) {
47
- return;
48
- }
49
- // 클린 설치
50
- if (fs.existsSync(geminiAgentsDir)) {
51
- removeDirRecursive(geminiAgentsDir);
52
- }
53
- ensureDir(geminiAgentsDir);
54
- let installed = 0;
55
- function processDirectory(srcDir, destDir) {
56
- ensureDir(destDir);
57
- const entries = fs.readdirSync(srcDir, { withFileTypes: true });
58
- for (const entry of entries) {
59
- const srcPath = path.join(srcDir, entry.name);
60
- const destPath = path.join(destDir, entry.name);
61
- if (entry.isDirectory()) {
62
- processDirectory(srcPath, destPath);
63
- }
64
- else if (entry.name.endsWith('.md')) {
65
- try {
66
- const content = fs.readFileSync(srcPath, 'utf-8');
67
- const geminiContent = convertAgentToGemini(content, entry.name);
68
- fs.writeFileSync(destPath, geminiContent, 'utf-8');
69
- installed++;
70
- }
71
- catch {
72
- // skip failed files
73
- }
74
- }
75
- }
76
- }
77
- processDirectory(agentsSource, geminiAgentsDir);
78
- console.log(` 📦 Gemini agents: ${installed} installed`);
79
- }
80
- //# sourceMappingURL=gemini-agents.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gemini-agents.js","sourceRoot":"","sources":["../../../src/cli/postinstall/gemini-agents.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Gemini CLI 전역 GEMINI.md 생성
3
- *
4
- * CLAUDE.md에서 VIBE 섹션을 읽어 GEMINI.md 형식으로 변환
5
- */
6
- /**
7
- * 전역 ~/.gemini/GEMINI.md 생성
8
- */
9
- export declare function generateGeminiMd(geminiDir: string, packageRoot: string): void;
10
- //# sourceMappingURL=gemini-instruction.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gemini-instruction.d.ts","sourceRoot":"","sources":["../../../src/cli/postinstall/gemini-instruction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAsDH;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAQ7E"}