@su-record/vibe 3.2.64 → 4.0.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 (1417) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +100 -288
  3. package/card.md +9 -0
  4. package/dist/cli.js +584 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/core/check.js +245 -0
  7. package/dist/core/check.js.map +1 -0
  8. package/dist/core/checks/eval.js +66 -0
  9. package/dist/core/checks/eval.js.map +1 -0
  10. package/dist/core/checks/file.js +88 -0
  11. package/dist/core/checks/file.js.map +1 -0
  12. package/dist/core/checks/http.js +48 -0
  13. package/dist/core/checks/http.js.map +1 -0
  14. package/dist/core/checks/run.js +42 -0
  15. package/dist/core/checks/run.js.map +1 -0
  16. package/dist/core/client.js +35 -0
  17. package/dist/core/client.js.map +1 -0
  18. package/dist/core/config.js +30 -0
  19. package/dist/core/config.js.map +1 -0
  20. package/dist/core/errors.js +12 -0
  21. package/dist/core/errors.js.map +1 -0
  22. package/dist/core/github.js +49 -0
  23. package/dist/core/github.js.map +1 -0
  24. package/dist/core/inbox.js +73 -0
  25. package/dist/core/inbox.js.map +1 -0
  26. package/dist/core/intent.js +91 -0
  27. package/dist/core/intent.js.map +1 -0
  28. package/dist/core/knowledge.js +22 -0
  29. package/dist/core/knowledge.js.map +1 -0
  30. package/dist/core/ledger.js +124 -0
  31. package/dist/core/ledger.js.map +1 -0
  32. package/dist/core/paths.js +29 -0
  33. package/dist/core/paths.js.map +1 -0
  34. package/dist/core/profile.js +88 -0
  35. package/dist/core/profile.js.map +1 -0
  36. package/dist/core/regress.js +66 -0
  37. package/dist/core/regress.js.map +1 -0
  38. package/dist/core/research.js +205 -0
  39. package/dist/core/research.js.map +1 -0
  40. package/dist/core/scenarios.js +193 -0
  41. package/dist/core/scenarios.js.map +1 -0
  42. package/dist/core/skills.js +276 -0
  43. package/dist/core/skills.js.map +1 -0
  44. package/dist/core/state.js +70 -0
  45. package/dist/core/state.js.map +1 -0
  46. package/dist/core/store.js +59 -0
  47. package/dist/core/store.js.map +1 -0
  48. package/dist/core/table.js +106 -0
  49. package/dist/core/table.js.map +1 -0
  50. package/dist/core/tokens.js +67 -0
  51. package/dist/core/tokens.js.map +1 -0
  52. package/dist/core/tree.js +97 -0
  53. package/dist/core/tree.js.map +1 -0
  54. package/dist/core/view.js +67 -0
  55. package/dist/core/view.js.map +1 -0
  56. package/dist/install/plugin.js +145 -0
  57. package/dist/install/plugin.js.map +1 -0
  58. package/dist/install/project.js +213 -0
  59. package/dist/install/project.js.map +1 -0
  60. package/hooks/notify.js +92 -0
  61. package/package.json +27 -118
  62. package/skills/vibe/SKILL.md +20 -265
  63. package/skills/vibe.build/SKILL.md +35 -0
  64. package/skills/vibe.discover/SKILL.md +35 -0
  65. package/skills/vibe.handoff/SKILL.md +21 -6
  66. package/skills/vibe.prove/SKILL.md +19 -0
  67. package/skills/vibe.scope/SKILL.md +39 -0
  68. package/.claude-plugin/plugin.json +0 -22
  69. package/.codex-plugin/plugin.json +0 -34
  70. package/.env.example +0 -52
  71. package/CLAUDE.md +0 -239
  72. package/README.en.md +0 -347
  73. package/agents/architect.md +0 -38
  74. package/agents/build-error-resolver.md +0 -46
  75. package/agents/code-reviewer.md +0 -89
  76. package/agents/e2e-tester.md +0 -66
  77. package/agents/event/event-ops.md +0 -61
  78. package/agents/event/event-planner.md +0 -63
  79. package/agents/implementer.md +0 -39
  80. package/agents/security-reviewer.md +0 -56
  81. package/agents/tester.md +0 -53
  82. package/agents/ui/design-reviewer.md +0 -62
  83. package/agents/ui/design-system-gen.md +0 -63
  84. package/dist/cli/auth.d.ts +0 -30
  85. package/dist/cli/auth.d.ts.map +0 -1
  86. package/dist/cli/auth.js +0 -140
  87. package/dist/cli/auth.js.map +0 -1
  88. package/dist/cli/collaborator.d.ts +0 -12
  89. package/dist/cli/collaborator.d.ts.map +0 -1
  90. package/dist/cli/collaborator.js +0 -150
  91. package/dist/cli/collaborator.js.map +0 -1
  92. package/dist/cli/commands/codex-proxy.d.ts +0 -10
  93. package/dist/cli/commands/codex-proxy.d.ts.map +0 -1
  94. package/dist/cli/commands/codex-proxy.js +0 -272
  95. package/dist/cli/commands/codex-proxy.js.map +0 -1
  96. package/dist/cli/commands/config.d.ts +0 -17
  97. package/dist/cli/commands/config.d.ts.map +0 -1
  98. package/dist/cli/commands/config.js +0 -209
  99. package/dist/cli/commands/config.js.map +0 -1
  100. package/dist/cli/commands/evolution.d.ts +0 -16
  101. package/dist/cli/commands/evolution.d.ts.map +0 -1
  102. package/dist/cli/commands/evolution.js +0 -211
  103. package/dist/cli/commands/evolution.js.map +0 -1
  104. package/dist/cli/commands/figma.d.ts +0 -29
  105. package/dist/cli/commands/figma.d.ts.map +0 -1
  106. package/dist/cli/commands/figma.js +0 -147
  107. package/dist/cli/commands/figma.js.map +0 -1
  108. package/dist/cli/commands/index.d.ts +0 -19
  109. package/dist/cli/commands/index.d.ts.map +0 -1
  110. package/dist/cli/commands/index.js +0 -19
  111. package/dist/cli/commands/index.js.map +0 -1
  112. package/dist/cli/commands/info.d.ts +0 -72
  113. package/dist/cli/commands/info.d.ts.map +0 -1
  114. package/dist/cli/commands/info.js +0 -263
  115. package/dist/cli/commands/info.js.map +0 -1
  116. package/dist/cli/commands/init.d.ts +0 -36
  117. package/dist/cli/commands/init.d.ts.map +0 -1
  118. package/dist/cli/commands/init.js +0 -393
  119. package/dist/cli/commands/init.js.map +0 -1
  120. package/dist/cli/commands/llm.d.ts +0 -11
  121. package/dist/cli/commands/llm.d.ts.map +0 -1
  122. package/dist/cli/commands/llm.js +0 -63
  123. package/dist/cli/commands/llm.js.map +0 -1
  124. package/dist/cli/commands/plugin.d.ts +0 -5
  125. package/dist/cli/commands/plugin.d.ts.map +0 -1
  126. package/dist/cli/commands/plugin.js +0 -223
  127. package/dist/cli/commands/plugin.js.map +0 -1
  128. package/dist/cli/commands/remove.d.ts +0 -8
  129. package/dist/cli/commands/remove.d.ts.map +0 -1
  130. package/dist/cli/commands/remove.js +0 -157
  131. package/dist/cli/commands/remove.js.map +0 -1
  132. package/dist/cli/commands/sentinel.d.ts +0 -22
  133. package/dist/cli/commands/sentinel.d.ts.map +0 -1
  134. package/dist/cli/commands/sentinel.js +0 -324
  135. package/dist/cli/commands/sentinel.js.map +0 -1
  136. package/dist/cli/commands/setup.d.ts +0 -9
  137. package/dist/cli/commands/setup.d.ts.map +0 -1
  138. package/dist/cli/commands/setup.js +0 -223
  139. package/dist/cli/commands/setup.js.map +0 -1
  140. package/dist/cli/commands/skills.d.ts +0 -13
  141. package/dist/cli/commands/skills.d.ts.map +0 -1
  142. package/dist/cli/commands/skills.js +0 -117
  143. package/dist/cli/commands/skills.js.map +0 -1
  144. package/dist/cli/commands/slack.d.ts +0 -11
  145. package/dist/cli/commands/slack.d.ts.map +0 -1
  146. package/dist/cli/commands/slack.js +0 -83
  147. package/dist/cli/commands/slack.js.map +0 -1
  148. package/dist/cli/commands/stats.d.ts +0 -13
  149. package/dist/cli/commands/stats.d.ts.map +0 -1
  150. package/dist/cli/commands/stats.js +0 -281
  151. package/dist/cli/commands/stats.js.map +0 -1
  152. package/dist/cli/commands/telegram.d.ts +0 -13
  153. package/dist/cli/commands/telegram.d.ts.map +0 -1
  154. package/dist/cli/commands/telegram.js +0 -236
  155. package/dist/cli/commands/telegram.js.map +0 -1
  156. package/dist/cli/commands/update.d.ts +0 -10
  157. package/dist/cli/commands/update.d.ts.map +0 -1
  158. package/dist/cli/commands/update.js +0 -168
  159. package/dist/cli/commands/update.js.map +0 -1
  160. package/dist/cli/commands/upgrade.d.ts +0 -96
  161. package/dist/cli/commands/upgrade.d.ts.map +0 -1
  162. package/dist/cli/commands/upgrade.js +0 -357
  163. package/dist/cli/commands/upgrade.js.map +0 -1
  164. package/dist/cli/design/design-md-parser.d.ts +0 -25
  165. package/dist/cli/design/design-md-parser.d.ts.map +0 -1
  166. package/dist/cli/design/design-md-parser.js +0 -86
  167. package/dist/cli/design/design-md-parser.js.map +0 -1
  168. package/dist/cli/detect/matcher.d.ts +0 -15
  169. package/dist/cli/detect/matcher.d.ts.map +0 -1
  170. package/dist/cli/detect/matcher.js +0 -278
  171. package/dist/cli/detect/matcher.js.map +0 -1
  172. package/dist/cli/detect/signatures.d.ts +0 -76
  173. package/dist/cli/detect/signatures.d.ts.map +0 -1
  174. package/dist/cli/detect/signatures.js +0 -175
  175. package/dist/cli/detect/signatures.js.map +0 -1
  176. package/dist/cli/detect/workspace.d.ts +0 -7
  177. package/dist/cli/detect/workspace.d.ts.map +0 -1
  178. package/dist/cli/detect/workspace.js +0 -112
  179. package/dist/cli/detect/workspace.js.map +0 -1
  180. package/dist/cli/detect.d.ts +0 -35
  181. package/dist/cli/detect.d.ts.map +0 -1
  182. package/dist/cli/detect.js +0 -213
  183. package/dist/cli/detect.js.map +0 -1
  184. package/dist/cli/generate-release-notes.d.ts +0 -3
  185. package/dist/cli/generate-release-notes.d.ts.map +0 -1
  186. package/dist/cli/generate-release-notes.js +0 -49
  187. package/dist/cli/generate-release-notes.js.map +0 -1
  188. package/dist/cli/index.d.ts +0 -30
  189. package/dist/cli/index.d.ts.map +0 -1
  190. package/dist/cli/index.js +0 -475
  191. package/dist/cli/index.js.map +0 -1
  192. package/dist/cli/llm/antigravity-commands.d.ts +0 -25
  193. package/dist/cli/llm/antigravity-commands.d.ts.map +0 -1
  194. package/dist/cli/llm/antigravity-commands.js +0 -142
  195. package/dist/cli/llm/antigravity-commands.js.map +0 -1
  196. package/dist/cli/llm/claude-commands.d.ts +0 -12
  197. package/dist/cli/llm/claude-commands.d.ts.map +0 -1
  198. package/dist/cli/llm/claude-commands.js +0 -75
  199. package/dist/cli/llm/claude-commands.js.map +0 -1
  200. package/dist/cli/llm/config.d.ts +0 -19
  201. package/dist/cli/llm/config.d.ts.map +0 -1
  202. package/dist/cli/llm/config.js +0 -137
  203. package/dist/cli/llm/config.js.map +0 -1
  204. package/dist/cli/llm/gpt-commands.d.ts +0 -17
  205. package/dist/cli/llm/gpt-commands.d.ts.map +0 -1
  206. package/dist/cli/llm/gpt-commands.js +0 -85
  207. package/dist/cli/llm/gpt-commands.js.map +0 -1
  208. package/dist/cli/llm/help.d.ts +0 -12
  209. package/dist/cli/llm/help.d.ts.map +0 -1
  210. package/dist/cli/llm/help.js +0 -37
  211. package/dist/cli/llm/help.js.map +0 -1
  212. package/dist/cli/llm/index.d.ts +0 -10
  213. package/dist/cli/llm/index.d.ts.map +0 -1
  214. package/dist/cli/llm/index.js +0 -10
  215. package/dist/cli/llm/index.js.map +0 -1
  216. package/dist/cli/llm/model-refresh.d.ts +0 -29
  217. package/dist/cli/llm/model-refresh.d.ts.map +0 -1
  218. package/dist/cli/llm/model-refresh.js +0 -139
  219. package/dist/cli/llm/model-refresh.js.map +0 -1
  220. package/dist/cli/llm/zai-commands.d.ts +0 -15
  221. package/dist/cli/llm/zai-commands.d.ts.map +0 -1
  222. package/dist/cli/llm/zai-commands.js +0 -64
  223. package/dist/cli/llm/zai-commands.js.map +0 -1
  224. package/dist/cli/llm.d.ts +0 -13
  225. package/dist/cli/llm.d.ts.map +0 -1
  226. package/dist/cli/llm.js +0 -13
  227. package/dist/cli/llm.js.map +0 -1
  228. package/dist/cli/postinstall/claude-agents.d.ts +0 -35
  229. package/dist/cli/postinstall/claude-agents.d.ts.map +0 -1
  230. package/dist/cli/postinstall/claude-agents.js +0 -177
  231. package/dist/cli/postinstall/claude-agents.js.map +0 -1
  232. package/dist/cli/postinstall/constants.d.ts +0 -134
  233. package/dist/cli/postinstall/constants.d.ts.map +0 -1
  234. package/dist/cli/postinstall/constants.js +0 -554
  235. package/dist/cli/postinstall/constants.js.map +0 -1
  236. package/dist/cli/postinstall/fs-utils.d.ts +0 -94
  237. package/dist/cli/postinstall/fs-utils.d.ts.map +0 -1
  238. package/dist/cli/postinstall/fs-utils.js +0 -376
  239. package/dist/cli/postinstall/fs-utils.js.map +0 -1
  240. package/dist/cli/postinstall/global-config.d.ts +0 -22
  241. package/dist/cli/postinstall/global-config.d.ts.map +0 -1
  242. package/dist/cli/postinstall/global-config.js +0 -165
  243. package/dist/cli/postinstall/global-config.js.map +0 -1
  244. package/dist/cli/postinstall/inline-skills.d.ts +0 -8
  245. package/dist/cli/postinstall/inline-skills.d.ts.map +0 -1
  246. package/dist/cli/postinstall/inline-skills.js +0 -158
  247. package/dist/cli/postinstall/inline-skills.js.map +0 -1
  248. package/dist/cli/postinstall/main.d.ts +0 -20
  249. package/dist/cli/postinstall/main.d.ts.map +0 -1
  250. package/dist/cli/postinstall/main.js +0 -250
  251. package/dist/cli/postinstall/main.js.map +0 -1
  252. package/dist/cli/postinstall.d.ts +0 -9
  253. package/dist/cli/postinstall.d.ts.map +0 -1
  254. package/dist/cli/postinstall.js +0 -11
  255. package/dist/cli/postinstall.js.map +0 -1
  256. package/dist/cli/prompt.d.ts +0 -28
  257. package/dist/cli/prompt.d.ts.map +0 -1
  258. package/dist/cli/prompt.js +0 -64
  259. package/dist/cli/prompt.js.map +0 -1
  260. package/dist/cli/setup/CodexHooks.d.ts +0 -39
  261. package/dist/cli/setup/CodexHooks.d.ts.map +0 -1
  262. package/dist/cli/setup/CodexHooks.js +0 -73
  263. package/dist/cli/setup/CodexHooks.js.map +0 -1
  264. package/dist/cli/setup/GlobalInstaller.d.ts +0 -10
  265. package/dist/cli/setup/GlobalInstaller.d.ts.map +0 -1
  266. package/dist/cli/setup/GlobalInstaller.js +0 -34
  267. package/dist/cli/setup/GlobalInstaller.js.map +0 -1
  268. package/dist/cli/setup/InstallHome.d.ts +0 -27
  269. package/dist/cli/setup/InstallHome.d.ts.map +0 -1
  270. package/dist/cli/setup/InstallHome.js +0 -105
  271. package/dist/cli/setup/InstallHome.js.map +0 -1
  272. package/dist/cli/setup/LanguageDetector.d.ts +0 -15
  273. package/dist/cli/setup/LanguageDetector.d.ts.map +0 -1
  274. package/dist/cli/setup/LanguageDetector.js +0 -48
  275. package/dist/cli/setup/LanguageDetector.js.map +0 -1
  276. package/dist/cli/setup/LegacyMigration.d.ts +0 -38
  277. package/dist/cli/setup/LegacyMigration.d.ts.map +0 -1
  278. package/dist/cli/setup/LegacyMigration.js +0 -301
  279. package/dist/cli/setup/LegacyMigration.js.map +0 -1
  280. package/dist/cli/setup/NativeDeps.d.ts +0 -29
  281. package/dist/cli/setup/NativeDeps.d.ts.map +0 -1
  282. package/dist/cli/setup/NativeDeps.js +0 -79
  283. package/dist/cli/setup/NativeDeps.js.map +0 -1
  284. package/dist/cli/setup/ProjectSetup.d.ts +0 -105
  285. package/dist/cli/setup/ProjectSetup.d.ts.map +0 -1
  286. package/dist/cli/setup/ProjectSetup.js +0 -694
  287. package/dist/cli/setup/ProjectSetup.js.map +0 -1
  288. package/dist/cli/setup/Provisioner.d.ts +0 -28
  289. package/dist/cli/setup/Provisioner.d.ts.map +0 -1
  290. package/dist/cli/setup/Provisioner.js +0 -215
  291. package/dist/cli/setup/Provisioner.js.map +0 -1
  292. package/dist/cli/setup.d.ts +0 -9
  293. package/dist/cli/setup.d.ts.map +0 -1
  294. package/dist/cli/setup.js +0 -12
  295. package/dist/cli/setup.js.map +0 -1
  296. package/dist/cli/types.d.ts +0 -195
  297. package/dist/cli/types.d.ts.map +0 -1
  298. package/dist/cli/types.js +0 -5
  299. package/dist/cli/types.js.map +0 -1
  300. package/dist/cli/utils/cli-detector.d.ts +0 -35
  301. package/dist/cli/utils/cli-detector.d.ts.map +0 -1
  302. package/dist/cli/utils/cli-detector.js +0 -99
  303. package/dist/cli/utils/cli-detector.js.map +0 -1
  304. package/dist/cli/utils.d.ts +0 -49
  305. package/dist/cli/utils.d.ts.map +0 -1
  306. package/dist/cli/utils.js +0 -137
  307. package/dist/cli/utils.js.map +0 -1
  308. package/dist/infra/lib/AutomationLevel.d.ts +0 -48
  309. package/dist/infra/lib/AutomationLevel.d.ts.map +0 -1
  310. package/dist/infra/lib/AutomationLevel.js +0 -157
  311. package/dist/infra/lib/AutomationLevel.js.map +0 -1
  312. package/dist/infra/lib/ComponentRegistry.d.ts +0 -35
  313. package/dist/infra/lib/ComponentRegistry.d.ts.map +0 -1
  314. package/dist/infra/lib/ComponentRegistry.js +0 -59
  315. package/dist/infra/lib/ComponentRegistry.js.map +0 -1
  316. package/dist/infra/lib/CostAccumulator.d.ts +0 -75
  317. package/dist/infra/lib/CostAccumulator.d.ts.map +0 -1
  318. package/dist/infra/lib/CostAccumulator.js +0 -189
  319. package/dist/infra/lib/CostAccumulator.js.map +0 -1
  320. package/dist/infra/lib/DecisionTracer.d.ts +0 -85
  321. package/dist/infra/lib/DecisionTracer.d.ts.map +0 -1
  322. package/dist/infra/lib/DecisionTracer.js +0 -139
  323. package/dist/infra/lib/DecisionTracer.js.map +0 -1
  324. package/dist/infra/lib/InteractiveCheckpoint.d.ts +0 -75
  325. package/dist/infra/lib/InteractiveCheckpoint.d.ts.map +0 -1
  326. package/dist/infra/lib/InteractiveCheckpoint.js +0 -179
  327. package/dist/infra/lib/InteractiveCheckpoint.js.map +0 -1
  328. package/dist/infra/lib/IterationTracker.d.ts +0 -125
  329. package/dist/infra/lib/IterationTracker.d.ts.map +0 -1
  330. package/dist/infra/lib/IterationTracker.js +0 -444
  331. package/dist/infra/lib/IterationTracker.js.map +0 -1
  332. package/dist/infra/lib/LoopBreaker.d.ts +0 -60
  333. package/dist/infra/lib/LoopBreaker.d.ts.map +0 -1
  334. package/dist/infra/lib/LoopBreaker.js +0 -113
  335. package/dist/infra/lib/LoopBreaker.js.map +0 -1
  336. package/dist/infra/lib/MemoryManager.d.ts +0 -96
  337. package/dist/infra/lib/MemoryManager.d.ts.map +0 -1
  338. package/dist/infra/lib/MemoryManager.js +0 -312
  339. package/dist/infra/lib/MemoryManager.js.map +0 -1
  340. package/dist/infra/lib/ProjectCache.d.ts +0 -28
  341. package/dist/infra/lib/ProjectCache.d.ts.map +0 -1
  342. package/dist/infra/lib/ProjectCache.js +0 -130
  343. package/dist/infra/lib/ProjectCache.js.map +0 -1
  344. package/dist/infra/lib/PythonParser.d.ts +0 -47
  345. package/dist/infra/lib/PythonParser.d.ts.map +0 -1
  346. package/dist/infra/lib/PythonParser.js +0 -268
  347. package/dist/infra/lib/PythonParser.js.map +0 -1
  348. package/dist/infra/lib/SkillFrontmatter.d.ts +0 -70
  349. package/dist/infra/lib/SkillFrontmatter.d.ts.map +0 -1
  350. package/dist/infra/lib/SkillFrontmatter.js +0 -240
  351. package/dist/infra/lib/SkillFrontmatter.js.map +0 -1
  352. package/dist/infra/lib/TaskContext.d.ts +0 -43
  353. package/dist/infra/lib/TaskContext.d.ts.map +0 -1
  354. package/dist/infra/lib/TaskContext.js +0 -84
  355. package/dist/infra/lib/TaskContext.js.map +0 -1
  356. package/dist/infra/lib/VerificationLoop.d.ts +0 -171
  357. package/dist/infra/lib/VerificationLoop.d.ts.map +0 -1
  358. package/dist/infra/lib/VerificationLoop.js +0 -308
  359. package/dist/infra/lib/VerificationLoop.js.map +0 -1
  360. package/dist/infra/lib/antigravity/auth.d.ts +0 -18
  361. package/dist/infra/lib/antigravity/auth.d.ts.map +0 -1
  362. package/dist/infra/lib/antigravity/auth.js +0 -32
  363. package/dist/infra/lib/antigravity/auth.js.map +0 -1
  364. package/dist/infra/lib/antigravity/capabilities.d.ts +0 -28
  365. package/dist/infra/lib/antigravity/capabilities.d.ts.map +0 -1
  366. package/dist/infra/lib/antigravity/capabilities.js +0 -178
  367. package/dist/infra/lib/antigravity/capabilities.js.map +0 -1
  368. package/dist/infra/lib/antigravity/chat.d.ts +0 -34
  369. package/dist/infra/lib/antigravity/chat.d.ts.map +0 -1
  370. package/dist/infra/lib/antigravity/chat.js +0 -166
  371. package/dist/infra/lib/antigravity/chat.js.map +0 -1
  372. package/dist/infra/lib/antigravity/completion.d.ts +0 -12
  373. package/dist/infra/lib/antigravity/completion.d.ts.map +0 -1
  374. package/dist/infra/lib/antigravity/completion.js +0 -13
  375. package/dist/infra/lib/antigravity/completion.js.map +0 -1
  376. package/dist/infra/lib/antigravity/constants.d.ts +0 -8
  377. package/dist/infra/lib/antigravity/constants.d.ts.map +0 -1
  378. package/dist/infra/lib/antigravity/constants.js +0 -11
  379. package/dist/infra/lib/antigravity/constants.js.map +0 -1
  380. package/dist/infra/lib/antigravity/index.d.ts +0 -13
  381. package/dist/infra/lib/antigravity/index.d.ts.map +0 -1
  382. package/dist/infra/lib/antigravity/index.js +0 -12
  383. package/dist/infra/lib/antigravity/index.js.map +0 -1
  384. package/dist/infra/lib/antigravity/models.d.ts +0 -11
  385. package/dist/infra/lib/antigravity/models.d.ts.map +0 -1
  386. package/dist/infra/lib/antigravity/models.js +0 -38
  387. package/dist/infra/lib/antigravity/models.js.map +0 -1
  388. package/dist/infra/lib/antigravity/orchestration.d.ts +0 -33
  389. package/dist/infra/lib/antigravity/orchestration.d.ts.map +0 -1
  390. package/dist/infra/lib/antigravity/orchestration.js +0 -74
  391. package/dist/infra/lib/antigravity/orchestration.js.map +0 -1
  392. package/dist/infra/lib/antigravity/types.d.ts +0 -123
  393. package/dist/infra/lib/antigravity/types.d.ts.map +0 -1
  394. package/dist/infra/lib/antigravity/types.js +0 -5
  395. package/dist/infra/lib/antigravity/types.js.map +0 -1
  396. package/dist/infra/lib/browser/capture.d.ts +0 -26
  397. package/dist/infra/lib/browser/capture.d.ts.map +0 -1
  398. package/dist/infra/lib/browser/capture.js +0 -115
  399. package/dist/infra/lib/browser/capture.js.map +0 -1
  400. package/dist/infra/lib/browser/compare.d.ts +0 -46
  401. package/dist/infra/lib/browser/compare.d.ts.map +0 -1
  402. package/dist/infra/lib/browser/compare.js +0 -188
  403. package/dist/infra/lib/browser/compare.js.map +0 -1
  404. package/dist/infra/lib/browser/index.d.ts +0 -6
  405. package/dist/infra/lib/browser/index.d.ts.map +0 -1
  406. package/dist/infra/lib/browser/index.js +0 -4
  407. package/dist/infra/lib/browser/index.js.map +0 -1
  408. package/dist/infra/lib/browser/launch.d.ts +0 -19
  409. package/dist/infra/lib/browser/launch.d.ts.map +0 -1
  410. package/dist/infra/lib/browser/launch.js +0 -58
  411. package/dist/infra/lib/browser/launch.js.map +0 -1
  412. package/dist/infra/lib/browser/types.d.ts +0 -103
  413. package/dist/infra/lib/browser/types.d.ts.map +0 -1
  414. package/dist/infra/lib/browser/types.js +0 -8
  415. package/dist/infra/lib/browser/types.js.map +0 -1
  416. package/dist/infra/lib/codex-proxy.d.ts +0 -150
  417. package/dist/infra/lib/codex-proxy.d.ts.map +0 -1
  418. package/dist/infra/lib/codex-proxy.js +0 -961
  419. package/dist/infra/lib/codex-proxy.js.map +0 -1
  420. package/dist/infra/lib/config/GlobalConfigManager.d.ts +0 -40
  421. package/dist/infra/lib/config/GlobalConfigManager.d.ts.map +0 -1
  422. package/dist/infra/lib/config/GlobalConfigManager.js +0 -396
  423. package/dist/infra/lib/config/GlobalConfigManager.js.map +0 -1
  424. package/dist/infra/lib/constants.d.ts +0 -81
  425. package/dist/infra/lib/constants.d.ts.map +0 -1
  426. package/dist/infra/lib/constants.js +0 -97
  427. package/dist/infra/lib/constants.js.map +0 -1
  428. package/dist/infra/lib/embedding/EmbeddingProvider.d.ts +0 -20
  429. package/dist/infra/lib/embedding/EmbeddingProvider.d.ts.map +0 -1
  430. package/dist/infra/lib/embedding/EmbeddingProvider.js +0 -83
  431. package/dist/infra/lib/embedding/EmbeddingProvider.js.map +0 -1
  432. package/dist/infra/lib/embedding/VectorStore.d.ts +0 -54
  433. package/dist/infra/lib/embedding/VectorStore.d.ts.map +0 -1
  434. package/dist/infra/lib/embedding/VectorStore.js +0 -139
  435. package/dist/infra/lib/embedding/VectorStore.js.map +0 -1
  436. package/dist/infra/lib/embedding/cosine.d.ts +0 -19
  437. package/dist/infra/lib/embedding/cosine.d.ts.map +0 -1
  438. package/dist/infra/lib/embedding/cosine.js +0 -40
  439. package/dist/infra/lib/embedding/cosine.js.map +0 -1
  440. package/dist/infra/lib/embedding/index.d.ts +0 -9
  441. package/dist/infra/lib/embedding/index.d.ts.map +0 -1
  442. package/dist/infra/lib/embedding/index.js +0 -8
  443. package/dist/infra/lib/embedding/index.js.map +0 -1
  444. package/dist/infra/lib/embedding/types.d.ts +0 -30
  445. package/dist/infra/lib/embedding/types.d.ts.map +0 -1
  446. package/dist/infra/lib/embedding/types.js +0 -12
  447. package/dist/infra/lib/embedding/types.js.map +0 -1
  448. package/dist/infra/lib/evolution/AgentAnalyzer.d.ts +0 -15
  449. package/dist/infra/lib/evolution/AgentAnalyzer.d.ts.map +0 -1
  450. package/dist/infra/lib/evolution/AgentAnalyzer.js +0 -84
  451. package/dist/infra/lib/evolution/AgentAnalyzer.js.map +0 -1
  452. package/dist/infra/lib/evolution/CircuitBreaker.d.ts +0 -31
  453. package/dist/infra/lib/evolution/CircuitBreaker.d.ts.map +0 -1
  454. package/dist/infra/lib/evolution/CircuitBreaker.js +0 -86
  455. package/dist/infra/lib/evolution/CircuitBreaker.js.map +0 -1
  456. package/dist/infra/lib/evolution/DeprecationDetector.d.ts +0 -68
  457. package/dist/infra/lib/evolution/DeprecationDetector.d.ts.map +0 -1
  458. package/dist/infra/lib/evolution/DeprecationDetector.js +0 -207
  459. package/dist/infra/lib/evolution/DeprecationDetector.js.map +0 -1
  460. package/dist/infra/lib/evolution/DescriptionOptimizer.d.ts +0 -124
  461. package/dist/infra/lib/evolution/DescriptionOptimizer.d.ts.map +0 -1
  462. package/dist/infra/lib/evolution/DescriptionOptimizer.js +0 -410
  463. package/dist/infra/lib/evolution/DescriptionOptimizer.js.map +0 -1
  464. package/dist/infra/lib/evolution/EvolutionOrchestrator.d.ts +0 -35
  465. package/dist/infra/lib/evolution/EvolutionOrchestrator.d.ts.map +0 -1
  466. package/dist/infra/lib/evolution/EvolutionOrchestrator.js +0 -212
  467. package/dist/infra/lib/evolution/EvolutionOrchestrator.js.map +0 -1
  468. package/dist/infra/lib/evolution/GenerationRegistry.d.ts +0 -53
  469. package/dist/infra/lib/evolution/GenerationRegistry.d.ts.map +0 -1
  470. package/dist/infra/lib/evolution/GenerationRegistry.js +0 -121
  471. package/dist/infra/lib/evolution/GenerationRegistry.js.map +0 -1
  472. package/dist/infra/lib/evolution/GuardAnalyzer.d.ts +0 -44
  473. package/dist/infra/lib/evolution/GuardAnalyzer.d.ts.map +0 -1
  474. package/dist/infra/lib/evolution/GuardAnalyzer.js +0 -116
  475. package/dist/infra/lib/evolution/GuardAnalyzer.js.map +0 -1
  476. package/dist/infra/lib/evolution/HookTraceReader.d.ts +0 -45
  477. package/dist/infra/lib/evolution/HookTraceReader.d.ts.map +0 -1
  478. package/dist/infra/lib/evolution/HookTraceReader.js +0 -108
  479. package/dist/infra/lib/evolution/HookTraceReader.js.map +0 -1
  480. package/dist/infra/lib/evolution/InsightExtractor.d.ts +0 -24
  481. package/dist/infra/lib/evolution/InsightExtractor.d.ts.map +0 -1
  482. package/dist/infra/lib/evolution/InsightExtractor.js +0 -131
  483. package/dist/infra/lib/evolution/InsightExtractor.js.map +0 -1
  484. package/dist/infra/lib/evolution/InsightStore.d.ts +0 -55
  485. package/dist/infra/lib/evolution/InsightStore.d.ts.map +0 -1
  486. package/dist/infra/lib/evolution/InsightStore.js +0 -219
  487. package/dist/infra/lib/evolution/InsightStore.js.map +0 -1
  488. package/dist/infra/lib/evolution/LifecycleManager.d.ts +0 -43
  489. package/dist/infra/lib/evolution/LifecycleManager.d.ts.map +0 -1
  490. package/dist/infra/lib/evolution/LifecycleManager.js +0 -134
  491. package/dist/infra/lib/evolution/LifecycleManager.js.map +0 -1
  492. package/dist/infra/lib/evolution/ParityTester.d.ts +0 -74
  493. package/dist/infra/lib/evolution/ParityTester.d.ts.map +0 -1
  494. package/dist/infra/lib/evolution/ParityTester.js +0 -238
  495. package/dist/infra/lib/evolution/ParityTester.js.map +0 -1
  496. package/dist/infra/lib/evolution/RollbackManager.d.ts +0 -26
  497. package/dist/infra/lib/evolution/RollbackManager.d.ts.map +0 -1
  498. package/dist/infra/lib/evolution/RollbackManager.js +0 -133
  499. package/dist/infra/lib/evolution/RollbackManager.js.map +0 -1
  500. package/dist/infra/lib/evolution/SkillBenchmark.d.ts +0 -81
  501. package/dist/infra/lib/evolution/SkillBenchmark.d.ts.map +0 -1
  502. package/dist/infra/lib/evolution/SkillBenchmark.js +0 -233
  503. package/dist/infra/lib/evolution/SkillBenchmark.js.map +0 -1
  504. package/dist/infra/lib/evolution/SkillClassifier.d.ts +0 -35
  505. package/dist/infra/lib/evolution/SkillClassifier.d.ts.map +0 -1
  506. package/dist/infra/lib/evolution/SkillClassifier.js +0 -167
  507. package/dist/infra/lib/evolution/SkillClassifier.js.map +0 -1
  508. package/dist/infra/lib/evolution/SkillEvalRunner.d.ts +0 -102
  509. package/dist/infra/lib/evolution/SkillEvalRunner.d.ts.map +0 -1
  510. package/dist/infra/lib/evolution/SkillEvalRunner.js +0 -256
  511. package/dist/infra/lib/evolution/SkillEvalRunner.js.map +0 -1
  512. package/dist/infra/lib/evolution/SkillGapDetector.d.ts +0 -22
  513. package/dist/infra/lib/evolution/SkillGapDetector.d.ts.map +0 -1
  514. package/dist/infra/lib/evolution/SkillGapDetector.js +0 -81
  515. package/dist/infra/lib/evolution/SkillGapDetector.js.map +0 -1
  516. package/dist/infra/lib/evolution/TriggerCollisionDetector.d.ts +0 -27
  517. package/dist/infra/lib/evolution/TriggerCollisionDetector.d.ts.map +0 -1
  518. package/dist/infra/lib/evolution/TriggerCollisionDetector.js +0 -100
  519. package/dist/infra/lib/evolution/TriggerCollisionDetector.js.map +0 -1
  520. package/dist/infra/lib/evolution/UsageTracker.d.ts +0 -53
  521. package/dist/infra/lib/evolution/UsageTracker.d.ts.map +0 -1
  522. package/dist/infra/lib/evolution/UsageTracker.js +0 -157
  523. package/dist/infra/lib/evolution/UsageTracker.js.map +0 -1
  524. package/dist/infra/lib/evolution/generators/AgentGenerator.d.ts +0 -14
  525. package/dist/infra/lib/evolution/generators/AgentGenerator.d.ts.map +0 -1
  526. package/dist/infra/lib/evolution/generators/AgentGenerator.js +0 -55
  527. package/dist/infra/lib/evolution/generators/AgentGenerator.js.map +0 -1
  528. package/dist/infra/lib/evolution/generators/RuleGenerator.d.ts +0 -13
  529. package/dist/infra/lib/evolution/generators/RuleGenerator.d.ts.map +0 -1
  530. package/dist/infra/lib/evolution/generators/RuleGenerator.js +0 -52
  531. package/dist/infra/lib/evolution/generators/RuleGenerator.js.map +0 -1
  532. package/dist/infra/lib/evolution/generators/SkillGenerator.d.ts +0 -15
  533. package/dist/infra/lib/evolution/generators/SkillGenerator.d.ts.map +0 -1
  534. package/dist/infra/lib/evolution/generators/SkillGenerator.js +0 -73
  535. package/dist/infra/lib/evolution/generators/SkillGenerator.js.map +0 -1
  536. package/dist/infra/lib/evolution/index.d.ts +0 -39
  537. package/dist/infra/lib/evolution/index.d.ts.map +0 -1
  538. package/dist/infra/lib/evolution/index.js +0 -32
  539. package/dist/infra/lib/evolution/index.js.map +0 -1
  540. package/dist/infra/lib/figma/api.d.ts +0 -9
  541. package/dist/infra/lib/figma/api.d.ts.map +0 -1
  542. package/dist/infra/lib/figma/api.js +0 -73
  543. package/dist/infra/lib/figma/api.js.map +0 -1
  544. package/dist/infra/lib/figma/audit.d.ts +0 -37
  545. package/dist/infra/lib/figma/audit.d.ts.map +0 -1
  546. package/dist/infra/lib/figma/audit.js +0 -128
  547. package/dist/infra/lib/figma/audit.js.map +0 -1
  548. package/dist/infra/lib/figma/extract.d.ts +0 -37
  549. package/dist/infra/lib/figma/extract.d.ts.map +0 -1
  550. package/dist/infra/lib/figma/extract.js +0 -414
  551. package/dist/infra/lib/figma/extract.js.map +0 -1
  552. package/dist/infra/lib/figma/index.d.ts +0 -6
  553. package/dist/infra/lib/figma/index.d.ts.map +0 -1
  554. package/dist/infra/lib/figma/index.js +0 -4
  555. package/dist/infra/lib/figma/index.js.map +0 -1
  556. package/dist/infra/lib/figma/types.d.ts +0 -182
  557. package/dist/infra/lib/figma/types.d.ts.map +0 -1
  558. package/dist/infra/lib/figma/types.js +0 -13
  559. package/dist/infra/lib/figma/types.js.map +0 -1
  560. package/dist/infra/lib/gpt/auth.d.ts +0 -31
  561. package/dist/infra/lib/gpt/auth.d.ts.map +0 -1
  562. package/dist/infra/lib/gpt/auth.js +0 -178
  563. package/dist/infra/lib/gpt/auth.js.map +0 -1
  564. package/dist/infra/lib/gpt/chat.d.ts +0 -40
  565. package/dist/infra/lib/gpt/chat.d.ts.map +0 -1
  566. package/dist/infra/lib/gpt/chat.js +0 -514
  567. package/dist/infra/lib/gpt/chat.js.map +0 -1
  568. package/dist/infra/lib/gpt/constants.d.ts +0 -9
  569. package/dist/infra/lib/gpt/constants.d.ts.map +0 -1
  570. package/dist/infra/lib/gpt/constants.js +0 -13
  571. package/dist/infra/lib/gpt/constants.js.map +0 -1
  572. package/dist/infra/lib/gpt/embedding.d.ts +0 -15
  573. package/dist/infra/lib/gpt/embedding.d.ts.map +0 -1
  574. package/dist/infra/lib/gpt/embedding.js +0 -80
  575. package/dist/infra/lib/gpt/embedding.js.map +0 -1
  576. package/dist/infra/lib/gpt/index.d.ts +0 -17
  577. package/dist/infra/lib/gpt/index.d.ts.map +0 -1
  578. package/dist/infra/lib/gpt/index.js +0 -17
  579. package/dist/infra/lib/gpt/index.js.map +0 -1
  580. package/dist/infra/lib/gpt/oauth.d.ts +0 -39
  581. package/dist/infra/lib/gpt/oauth.d.ts.map +0 -1
  582. package/dist/infra/lib/gpt/oauth.js +0 -103
  583. package/dist/infra/lib/gpt/oauth.js.map +0 -1
  584. package/dist/infra/lib/gpt/orchestration.d.ts +0 -28
  585. package/dist/infra/lib/gpt/orchestration.d.ts.map +0 -1
  586. package/dist/infra/lib/gpt/orchestration.js +0 -64
  587. package/dist/infra/lib/gpt/orchestration.js.map +0 -1
  588. package/dist/infra/lib/gpt/specializations.d.ts +0 -12
  589. package/dist/infra/lib/gpt/specializations.d.ts.map +0 -1
  590. package/dist/infra/lib/gpt/specializations.js +0 -32
  591. package/dist/infra/lib/gpt/specializations.js.map +0 -1
  592. package/dist/infra/lib/gpt/types.d.ts +0 -80
  593. package/dist/infra/lib/gpt/types.d.ts.map +0 -1
  594. package/dist/infra/lib/gpt/types.js +0 -5
  595. package/dist/infra/lib/gpt/types.js.map +0 -1
  596. package/dist/infra/lib/llm/auth/ApiKeyManager.d.ts +0 -21
  597. package/dist/infra/lib/llm/auth/ApiKeyManager.d.ts.map +0 -1
  598. package/dist/infra/lib/llm/auth/ApiKeyManager.js +0 -43
  599. package/dist/infra/lib/llm/auth/ApiKeyManager.js.map +0 -1
  600. package/dist/infra/lib/llm/auth/AuthProfileManager.d.ts +0 -59
  601. package/dist/infra/lib/llm/auth/AuthProfileManager.d.ts.map +0 -1
  602. package/dist/infra/lib/llm/auth/AuthProfileManager.js +0 -248
  603. package/dist/infra/lib/llm/auth/AuthProfileManager.js.map +0 -1
  604. package/dist/infra/lib/llm/auth/ConfigManager.d.ts +0 -32
  605. package/dist/infra/lib/llm/auth/ConfigManager.d.ts.map +0 -1
  606. package/dist/infra/lib/llm/auth/ConfigManager.js +0 -66
  607. package/dist/infra/lib/llm/auth/ConfigManager.js.map +0 -1
  608. package/dist/infra/lib/llm/auth/ProfileFileLock.d.ts +0 -16
  609. package/dist/infra/lib/llm/auth/ProfileFileLock.d.ts.map +0 -1
  610. package/dist/infra/lib/llm/auth/ProfileFileLock.js +0 -99
  611. package/dist/infra/lib/llm/auth/ProfileFileLock.js.map +0 -1
  612. package/dist/infra/lib/llm/auth/TokenRefresher.d.ts +0 -35
  613. package/dist/infra/lib/llm/auth/TokenRefresher.d.ts.map +0 -1
  614. package/dist/infra/lib/llm/auth/TokenRefresher.js +0 -217
  615. package/dist/infra/lib/llm/auth/TokenRefresher.js.map +0 -1
  616. package/dist/infra/lib/llm/auth/index.d.ts +0 -20
  617. package/dist/infra/lib/llm/auth/index.d.ts.map +0 -1
  618. package/dist/infra/lib/llm/auth/index.js +0 -28
  619. package/dist/infra/lib/llm/auth/index.js.map +0 -1
  620. package/dist/infra/lib/llm/index.d.ts +0 -10
  621. package/dist/infra/lib/llm/index.d.ts.map +0 -1
  622. package/dist/infra/lib/llm/index.js +0 -12
  623. package/dist/infra/lib/llm/index.js.map +0 -1
  624. package/dist/infra/lib/llm/timeout.d.ts +0 -34
  625. package/dist/infra/lib/llm/timeout.d.ts.map +0 -1
  626. package/dist/infra/lib/llm/timeout.js +0 -45
  627. package/dist/infra/lib/llm/timeout.js.map +0 -1
  628. package/dist/infra/lib/llm/types.d.ts +0 -96
  629. package/dist/infra/lib/llm/types.d.ts.map +0 -1
  630. package/dist/infra/lib/llm/types.js +0 -17
  631. package/dist/infra/lib/llm/types.js.map +0 -1
  632. package/dist/infra/lib/llm/utils/index.d.ts +0 -6
  633. package/dist/infra/lib/llm/utils/index.d.ts.map +0 -1
  634. package/dist/infra/lib/llm/utils/index.js +0 -6
  635. package/dist/infra/lib/llm/utils/index.js.map +0 -1
  636. package/dist/infra/lib/llm/utils/retry.d.ts +0 -25
  637. package/dist/infra/lib/llm/utils/retry.d.ts.map +0 -1
  638. package/dist/infra/lib/llm/utils/retry.js +0 -72
  639. package/dist/infra/lib/llm/utils/retry.js.map +0 -1
  640. package/dist/infra/lib/llm/utils/stream.d.ts +0 -13
  641. package/dist/infra/lib/llm/utils/stream.d.ts.map +0 -1
  642. package/dist/infra/lib/llm/utils/stream.js +0 -110
  643. package/dist/infra/lib/llm/utils/stream.js.map +0 -1
  644. package/dist/infra/lib/llm-availability.d.ts +0 -28
  645. package/dist/infra/lib/llm-availability.d.ts.map +0 -1
  646. package/dist/infra/lib/llm-availability.js +0 -69
  647. package/dist/infra/lib/llm-availability.js.map +0 -1
  648. package/dist/infra/lib/memory/IMemoryStorage.d.ts +0 -16
  649. package/dist/infra/lib/memory/IMemoryStorage.d.ts.map +0 -1
  650. package/dist/infra/lib/memory/IMemoryStorage.js +0 -7
  651. package/dist/infra/lib/memory/IMemoryStorage.js.map +0 -1
  652. package/dist/infra/lib/memory/InMemoryStorage.d.ts +0 -13
  653. package/dist/infra/lib/memory/InMemoryStorage.d.ts.map +0 -1
  654. package/dist/infra/lib/memory/InMemoryStorage.js +0 -44
  655. package/dist/infra/lib/memory/InMemoryStorage.js.map +0 -1
  656. package/dist/infra/lib/memory/KnowledgeGraph.d.ts +0 -34
  657. package/dist/infra/lib/memory/KnowledgeGraph.d.ts.map +0 -1
  658. package/dist/infra/lib/memory/KnowledgeGraph.js +0 -222
  659. package/dist/infra/lib/memory/KnowledgeGraph.js.map +0 -1
  660. package/dist/infra/lib/memory/MemorySearch.d.ts +0 -59
  661. package/dist/infra/lib/memory/MemorySearch.d.ts.map +0 -1
  662. package/dist/infra/lib/memory/MemorySearch.js +0 -330
  663. package/dist/infra/lib/memory/MemorySearch.js.map +0 -1
  664. package/dist/infra/lib/memory/MemoryStorage.d.ts +0 -133
  665. package/dist/infra/lib/memory/MemoryStorage.d.ts.map +0 -1
  666. package/dist/infra/lib/memory/MemoryStorage.js +0 -612
  667. package/dist/infra/lib/memory/MemoryStorage.js.map +0 -1
  668. package/dist/infra/lib/memory/ObservationStore.d.ts +0 -61
  669. package/dist/infra/lib/memory/ObservationStore.d.ts.map +0 -1
  670. package/dist/infra/lib/memory/ObservationStore.js +0 -119
  671. package/dist/infra/lib/memory/ObservationStore.js.map +0 -1
  672. package/dist/infra/lib/memory/ReflectionStore.d.ts +0 -60
  673. package/dist/infra/lib/memory/ReflectionStore.d.ts.map +0 -1
  674. package/dist/infra/lib/memory/ReflectionStore.js +0 -153
  675. package/dist/infra/lib/memory/ReflectionStore.js.map +0 -1
  676. package/dist/infra/lib/memory/SessionRAGRetriever.d.ts +0 -89
  677. package/dist/infra/lib/memory/SessionRAGRetriever.d.ts.map +0 -1
  678. package/dist/infra/lib/memory/SessionRAGRetriever.js +0 -348
  679. package/dist/infra/lib/memory/SessionRAGRetriever.js.map +0 -1
  680. package/dist/infra/lib/memory/SessionRAGStore.d.ts +0 -168
  681. package/dist/infra/lib/memory/SessionRAGStore.d.ts.map +0 -1
  682. package/dist/infra/lib/memory/SessionRAGStore.js +0 -763
  683. package/dist/infra/lib/memory/SessionRAGStore.js.map +0 -1
  684. package/dist/infra/lib/memory/SessionSummarizer.d.ts +0 -50
  685. package/dist/infra/lib/memory/SessionSummarizer.d.ts.map +0 -1
  686. package/dist/infra/lib/memory/SessionSummarizer.js +0 -157
  687. package/dist/infra/lib/memory/SessionSummarizer.js.map +0 -1
  688. package/dist/infra/lib/memory/index.d.ts +0 -15
  689. package/dist/infra/lib/memory/index.d.ts.map +0 -1
  690. package/dist/infra/lib/memory/index.js +0 -16
  691. package/dist/infra/lib/memory/index.js.map +0 -1
  692. package/dist/infra/lib/telemetry/SkillTelemetry.d.ts +0 -66
  693. package/dist/infra/lib/telemetry/SkillTelemetry.d.ts.map +0 -1
  694. package/dist/infra/lib/telemetry/SkillTelemetry.js +0 -168
  695. package/dist/infra/lib/telemetry/SkillTelemetry.js.map +0 -1
  696. package/dist/infra/lib/telemetry/VibeSpan.d.ts +0 -20
  697. package/dist/infra/lib/telemetry/VibeSpan.d.ts.map +0 -1
  698. package/dist/infra/lib/telemetry/VibeSpan.js +0 -26
  699. package/dist/infra/lib/telemetry/VibeSpan.js.map +0 -1
  700. package/dist/infra/lib/ui-ux/Bm25Engine.d.ts +0 -67
  701. package/dist/infra/lib/ui-ux/Bm25Engine.d.ts.map +0 -1
  702. package/dist/infra/lib/ui-ux/Bm25Engine.js +0 -153
  703. package/dist/infra/lib/ui-ux/Bm25Engine.js.map +0 -1
  704. package/dist/infra/lib/ui-ux/CsvDataLoader.d.ts +0 -57
  705. package/dist/infra/lib/ui-ux/CsvDataLoader.d.ts.map +0 -1
  706. package/dist/infra/lib/ui-ux/CsvDataLoader.js +0 -158
  707. package/dist/infra/lib/ui-ux/CsvDataLoader.js.map +0 -1
  708. package/dist/infra/lib/ui-ux/DesignSystemGenerator.d.ts +0 -119
  709. package/dist/infra/lib/ui-ux/DesignSystemGenerator.d.ts.map +0 -1
  710. package/dist/infra/lib/ui-ux/DesignSystemGenerator.js +0 -519
  711. package/dist/infra/lib/ui-ux/DesignSystemGenerator.js.map +0 -1
  712. package/dist/infra/lib/ui-ux/SearchService.d.ts +0 -64
  713. package/dist/infra/lib/ui-ux/SearchService.d.ts.map +0 -1
  714. package/dist/infra/lib/ui-ux/SearchService.js +0 -240
  715. package/dist/infra/lib/ui-ux/SearchService.js.map +0 -1
  716. package/dist/infra/lib/ui-ux/UiUxWorkflow.d.ts +0 -58
  717. package/dist/infra/lib/ui-ux/UiUxWorkflow.d.ts.map +0 -1
  718. package/dist/infra/lib/ui-ux/UiUxWorkflow.js +0 -181
  719. package/dist/infra/lib/ui-ux/UiUxWorkflow.js.map +0 -1
  720. package/dist/infra/lib/ui-ux/constants.d.ts +0 -39
  721. package/dist/infra/lib/ui-ux/constants.d.ts.map +0 -1
  722. package/dist/infra/lib/ui-ux/constants.js +0 -203
  723. package/dist/infra/lib/ui-ux/constants.js.map +0 -1
  724. package/dist/infra/lib/ui-ux/index.d.ts +0 -11
  725. package/dist/infra/lib/ui-ux/index.d.ts.map +0 -1
  726. package/dist/infra/lib/ui-ux/index.js +0 -11
  727. package/dist/infra/lib/ui-ux/index.js.map +0 -1
  728. package/dist/infra/lib/ui-ux/types.d.ts +0 -243
  729. package/dist/infra/lib/ui-ux/types.d.ts.map +0 -1
  730. package/dist/infra/lib/ui-ux/types.js +0 -7
  731. package/dist/infra/lib/ui-ux/types.js.map +0 -1
  732. package/dist/infra/lib/utils.d.ts +0 -66
  733. package/dist/infra/lib/utils.d.ts.map +0 -1
  734. package/dist/infra/lib/utils.js +0 -152
  735. package/dist/infra/lib/utils.js.map +0 -1
  736. package/dist/infra/lib/zai/client.d.ts +0 -30
  737. package/dist/infra/lib/zai/client.d.ts.map +0 -1
  738. package/dist/infra/lib/zai/client.js +0 -124
  739. package/dist/infra/lib/zai/client.js.map +0 -1
  740. package/dist/infra/lib/zai/index.d.ts +0 -11
  741. package/dist/infra/lib/zai/index.d.ts.map +0 -1
  742. package/dist/infra/lib/zai/index.js +0 -10
  743. package/dist/infra/lib/zai/index.js.map +0 -1
  744. package/dist/infra/lib/zai/orchestration.d.ts +0 -15
  745. package/dist/infra/lib/zai/orchestration.d.ts.map +0 -1
  746. package/dist/infra/lib/zai/orchestration.js +0 -54
  747. package/dist/infra/lib/zai/orchestration.js.map +0 -1
  748. package/dist/infra/lib/zai/types.d.ts +0 -40
  749. package/dist/infra/lib/zai/types.d.ts.map +0 -1
  750. package/dist/infra/lib/zai/types.js +0 -5
  751. package/dist/infra/lib/zai/types.js.map +0 -1
  752. package/dist/infra/types/tool.d.ts +0 -71
  753. package/dist/infra/types/tool.d.ts.map +0 -1
  754. package/dist/infra/types/tool.js +0 -3
  755. package/dist/infra/types/tool.js.map +0 -1
  756. package/dist/tools/bench/benchCompare.d.ts +0 -78
  757. package/dist/tools/bench/benchCompare.d.ts.map +0 -1
  758. package/dist/tools/bench/benchCompare.js +0 -113
  759. package/dist/tools/bench/benchCompare.js.map +0 -1
  760. package/dist/tools/bench/benchDefinition.d.ts +0 -37
  761. package/dist/tools/bench/benchDefinition.d.ts.map +0 -1
  762. package/dist/tools/bench/benchDefinition.js +0 -69
  763. package/dist/tools/bench/benchDefinition.js.map +0 -1
  764. package/dist/tools/bench/benchReport.d.ts +0 -16
  765. package/dist/tools/bench/benchReport.d.ts.map +0 -1
  766. package/dist/tools/bench/benchReport.js +0 -64
  767. package/dist/tools/bench/benchReport.js.map +0 -1
  768. package/dist/tools/bench/index.d.ts +0 -10
  769. package/dist/tools/bench/index.d.ts.map +0 -1
  770. package/dist/tools/bench/index.js +0 -7
  771. package/dist/tools/bench/index.js.map +0 -1
  772. package/dist/tools/contract/agentContract.d.ts +0 -86
  773. package/dist/tools/contract/agentContract.d.ts.map +0 -1
  774. package/dist/tools/contract/agentContract.js +0 -140
  775. package/dist/tools/contract/agentContract.js.map +0 -1
  776. package/dist/tools/contract/index.d.ts +0 -8
  777. package/dist/tools/contract/index.d.ts.map +0 -1
  778. package/dist/tools/contract/index.js +0 -6
  779. package/dist/tools/contract/index.js.map +0 -1
  780. package/dist/tools/contract/reverseDrift.d.ts +0 -71
  781. package/dist/tools/contract/reverseDrift.d.ts.map +0 -1
  782. package/dist/tools/contract/reverseDrift.js +0 -136
  783. package/dist/tools/contract/reverseDrift.js.map +0 -1
  784. package/dist/tools/convention/analyzeComplexity.d.ts +0 -9
  785. package/dist/tools/convention/analyzeComplexity.d.ts.map +0 -1
  786. package/dist/tools/convention/analyzeComplexity.js +0 -330
  787. package/dist/tools/convention/analyzeComplexity.js.map +0 -1
  788. package/dist/tools/convention/applyQualityRules.d.ts +0 -7
  789. package/dist/tools/convention/applyQualityRules.d.ts.map +0 -1
  790. package/dist/tools/convention/applyQualityRules.js +0 -107
  791. package/dist/tools/convention/applyQualityRules.js.map +0 -1
  792. package/dist/tools/convention/checkCouplingCohesion.d.ts +0 -8
  793. package/dist/tools/convention/checkCouplingCohesion.d.ts.map +0 -1
  794. package/dist/tools/convention/checkCouplingCohesion.js +0 -224
  795. package/dist/tools/convention/checkCouplingCohesion.js.map +0 -1
  796. package/dist/tools/convention/index.d.ts +0 -9
  797. package/dist/tools/convention/index.d.ts.map +0 -1
  798. package/dist/tools/convention/index.js +0 -9
  799. package/dist/tools/convention/index.js.map +0 -1
  800. package/dist/tools/convention/suggestImprovements.d.ts +0 -8
  801. package/dist/tools/convention/suggestImprovements.d.ts.map +0 -1
  802. package/dist/tools/convention/suggestImprovements.js +0 -262
  803. package/dist/tools/convention/suggestImprovements.js.map +0 -1
  804. package/dist/tools/convention/validateCodeQuality.d.ts +0 -41
  805. package/dist/tools/convention/validateCodeQuality.d.ts.map +0 -1
  806. package/dist/tools/convention/validateCodeQuality.js +0 -327
  807. package/dist/tools/convention/validateCodeQuality.js.map +0 -1
  808. package/dist/tools/dispatch/costGate.d.ts +0 -59
  809. package/dist/tools/dispatch/costGate.d.ts.map +0 -1
  810. package/dist/tools/dispatch/costGate.js +0 -85
  811. package/dist/tools/dispatch/costGate.js.map +0 -1
  812. package/dist/tools/dispatch/deterministicSignals.d.ts +0 -61
  813. package/dist/tools/dispatch/deterministicSignals.d.ts.map +0 -1
  814. package/dist/tools/dispatch/deterministicSignals.js +0 -136
  815. package/dist/tools/dispatch/deterministicSignals.js.map +0 -1
  816. package/dist/tools/dispatch/index.d.ts +0 -5
  817. package/dist/tools/dispatch/index.d.ts.map +0 -1
  818. package/dist/tools/dispatch/index.js +0 -3
  819. package/dist/tools/dispatch/index.js.map +0 -1
  820. package/dist/tools/dispatch/vibePaths.d.ts +0 -7
  821. package/dist/tools/dispatch/vibePaths.d.ts.map +0 -1
  822. package/dist/tools/dispatch/vibePaths.js +0 -35
  823. package/dist/tools/dispatch/vibePaths.js.map +0 -1
  824. package/dist/tools/docs/agentsMd.d.ts +0 -45
  825. package/dist/tools/docs/agentsMd.d.ts.map +0 -1
  826. package/dist/tools/docs/agentsMd.js +0 -51
  827. package/dist/tools/docs/agentsMd.js.map +0 -1
  828. package/dist/tools/docs/cacheSurface.d.ts +0 -37
  829. package/dist/tools/docs/cacheSurface.d.ts.map +0 -1
  830. package/dist/tools/docs/cacheSurface.js +0 -98
  831. package/dist/tools/docs/cacheSurface.js.map +0 -1
  832. package/dist/tools/evolution/dashboardTools.d.ts +0 -26
  833. package/dist/tools/evolution/dashboardTools.d.ts.map +0 -1
  834. package/dist/tools/evolution/dashboardTools.js +0 -216
  835. package/dist/tools/evolution/dashboardTools.js.map +0 -1
  836. package/dist/tools/evolution/index.d.ts +0 -3
  837. package/dist/tools/evolution/index.d.ts.map +0 -1
  838. package/dist/tools/evolution/index.js +0 -6
  839. package/dist/tools/evolution/index.js.map +0 -1
  840. package/dist/tools/evolution/insightTools.d.ts +0 -21
  841. package/dist/tools/evolution/insightTools.d.ts.map +0 -1
  842. package/dist/tools/evolution/insightTools.js +0 -184
  843. package/dist/tools/evolution/insightTools.js.map +0 -1
  844. package/dist/tools/index.d.ts +0 -81
  845. package/dist/tools/index.d.ts.map +0 -1
  846. package/dist/tools/index.js +0 -94
  847. package/dist/tools/index.js.map +0 -1
  848. package/dist/tools/interaction/askUser.d.ts +0 -113
  849. package/dist/tools/interaction/askUser.d.ts.map +0 -1
  850. package/dist/tools/interaction/askUser.js +0 -502
  851. package/dist/tools/interaction/askUser.js.map +0 -1
  852. package/dist/tools/interaction/index.d.ts +0 -6
  853. package/dist/tools/interaction/index.d.ts.map +0 -1
  854. package/dist/tools/interaction/index.js +0 -15
  855. package/dist/tools/interaction/index.js.map +0 -1
  856. package/dist/tools/loop/index.d.ts +0 -6
  857. package/dist/tools/loop/index.d.ts.map +0 -1
  858. package/dist/tools/loop/index.js +0 -5
  859. package/dist/tools/loop/index.js.map +0 -1
  860. package/dist/tools/loop/validateLoopDefinition.d.ts +0 -67
  861. package/dist/tools/loop/validateLoopDefinition.d.ts.map +0 -1
  862. package/dist/tools/loop/validateLoopDefinition.js +0 -281
  863. package/dist/tools/loop/validateLoopDefinition.js.map +0 -1
  864. package/dist/tools/memory/addObservation.d.ts +0 -16
  865. package/dist/tools/memory/addObservation.d.ts.map +0 -1
  866. package/dist/tools/memory/addObservation.js +0 -71
  867. package/dist/tools/memory/addObservation.js.map +0 -1
  868. package/dist/tools/memory/autoSaveContext.d.ts +0 -11
  869. package/dist/tools/memory/autoSaveContext.d.ts.map +0 -1
  870. package/dist/tools/memory/autoSaveContext.js +0 -71
  871. package/dist/tools/memory/autoSaveContext.js.map +0 -1
  872. package/dist/tools/memory/createMemoryTimeline.d.ts +0 -13
  873. package/dist/tools/memory/createMemoryTimeline.d.ts.map +0 -1
  874. package/dist/tools/memory/createMemoryTimeline.js +0 -193
  875. package/dist/tools/memory/createMemoryTimeline.js.map +0 -1
  876. package/dist/tools/memory/deleteMemory.d.ts +0 -7
  877. package/dist/tools/memory/deleteMemory.d.ts.map +0 -1
  878. package/dist/tools/memory/deleteMemory.js +0 -45
  879. package/dist/tools/memory/deleteMemory.js.map +0 -1
  880. package/dist/tools/memory/getMemoryGraph.d.ts +0 -12
  881. package/dist/tools/memory/getMemoryGraph.d.ts.map +0 -1
  882. package/dist/tools/memory/getMemoryGraph.js +0 -204
  883. package/dist/tools/memory/getMemoryGraph.js.map +0 -1
  884. package/dist/tools/memory/getSessionContext.d.ts +0 -14
  885. package/dist/tools/memory/getSessionContext.d.ts.map +0 -1
  886. package/dist/tools/memory/getSessionContext.js +0 -252
  887. package/dist/tools/memory/getSessionContext.js.map +0 -1
  888. package/dist/tools/memory/index.d.ts +0 -25
  889. package/dist/tools/memory/index.d.ts.map +0 -1
  890. package/dist/tools/memory/index.js +0 -27
  891. package/dist/tools/memory/index.js.map +0 -1
  892. package/dist/tools/memory/linkMemories.d.ts +0 -13
  893. package/dist/tools/memory/linkMemories.d.ts.map +0 -1
  894. package/dist/tools/memory/linkMemories.js +0 -116
  895. package/dist/tools/memory/linkMemories.js.map +0 -1
  896. package/dist/tools/memory/listMemories.d.ts +0 -8
  897. package/dist/tools/memory/listMemories.d.ts.map +0 -1
  898. package/dist/tools/memory/listMemories.js +0 -48
  899. package/dist/tools/memory/listMemories.js.map +0 -1
  900. package/dist/tools/memory/manageGoals.d.ts +0 -11
  901. package/dist/tools/memory/manageGoals.d.ts.map +0 -1
  902. package/dist/tools/memory/manageGoals.js +0 -152
  903. package/dist/tools/memory/manageGoals.js.map +0 -1
  904. package/dist/tools/memory/prioritizeMemory.d.ts +0 -11
  905. package/dist/tools/memory/prioritizeMemory.d.ts.map +0 -1
  906. package/dist/tools/memory/prioritizeMemory.js +0 -115
  907. package/dist/tools/memory/prioritizeMemory.js.map +0 -1
  908. package/dist/tools/memory/recallMemory.d.ts +0 -8
  909. package/dist/tools/memory/recallMemory.d.ts.map +0 -1
  910. package/dist/tools/memory/recallMemory.js +0 -50
  911. package/dist/tools/memory/recallMemory.js.map +0 -1
  912. package/dist/tools/memory/reflectionTools.d.ts +0 -27
  913. package/dist/tools/memory/reflectionTools.d.ts.map +0 -1
  914. package/dist/tools/memory/reflectionTools.js +0 -180
  915. package/dist/tools/memory/reflectionTools.js.map +0 -1
  916. package/dist/tools/memory/restoreSessionContext.d.ts +0 -9
  917. package/dist/tools/memory/restoreSessionContext.d.ts.map +0 -1
  918. package/dist/tools/memory/restoreSessionContext.js +0 -75
  919. package/dist/tools/memory/restoreSessionContext.js.map +0 -1
  920. package/dist/tools/memory/retrieveSessionContext.d.ts +0 -9
  921. package/dist/tools/memory/retrieveSessionContext.d.ts.map +0 -1
  922. package/dist/tools/memory/retrieveSessionContext.js +0 -140
  923. package/dist/tools/memory/retrieveSessionContext.js.map +0 -1
  924. package/dist/tools/memory/saveMemory.d.ts +0 -9
  925. package/dist/tools/memory/saveMemory.d.ts.map +0 -1
  926. package/dist/tools/memory/saveMemory.js +0 -45
  927. package/dist/tools/memory/saveMemory.js.map +0 -1
  928. package/dist/tools/memory/saveSessionItem.d.ts +0 -26
  929. package/dist/tools/memory/saveSessionItem.d.ts.map +0 -1
  930. package/dist/tools/memory/saveSessionItem.js +0 -218
  931. package/dist/tools/memory/saveSessionItem.js.map +0 -1
  932. package/dist/tools/memory/searchMemories.d.ts +0 -8
  933. package/dist/tools/memory/searchMemories.d.ts.map +0 -1
  934. package/dist/tools/memory/searchMemories.js +0 -43
  935. package/dist/tools/memory/searchMemories.js.map +0 -1
  936. package/dist/tools/memory/searchMemoriesAdvanced.d.ts +0 -15
  937. package/dist/tools/memory/searchMemoriesAdvanced.d.ts.map +0 -1
  938. package/dist/tools/memory/searchMemoriesAdvanced.js +0 -168
  939. package/dist/tools/memory/searchMemoriesAdvanced.js.map +0 -1
  940. package/dist/tools/memory/searchObservations.d.ts +0 -12
  941. package/dist/tools/memory/searchObservations.d.ts.map +0 -1
  942. package/dist/tools/memory/searchObservations.js +0 -67
  943. package/dist/tools/memory/searchObservations.js.map +0 -1
  944. package/dist/tools/memory/startSession.d.ts +0 -9
  945. package/dist/tools/memory/startSession.d.ts.map +0 -1
  946. package/dist/tools/memory/startSession.js +0 -238
  947. package/dist/tools/memory/startSession.js.map +0 -1
  948. package/dist/tools/memory/updateMemory.d.ts +0 -9
  949. package/dist/tools/memory/updateMemory.d.ts.map +0 -1
  950. package/dist/tools/memory/updateMemory.js +0 -52
  951. package/dist/tools/memory/updateMemory.js.map +0 -1
  952. package/dist/tools/release/releaseNotes.d.ts +0 -43
  953. package/dist/tools/release/releaseNotes.d.ts.map +0 -1
  954. package/dist/tools/release/releaseNotes.js +0 -151
  955. package/dist/tools/release/releaseNotes.js.map +0 -1
  956. package/dist/tools/spec/executionPacket.d.ts +0 -102
  957. package/dist/tools/spec/executionPacket.d.ts.map +0 -1
  958. package/dist/tools/spec/executionPacket.js +0 -396
  959. package/dist/tools/spec/executionPacket.js.map +0 -1
  960. package/dist/tools/spec/index.d.ts +0 -18
  961. package/dist/tools/spec/index.d.ts.map +0 -1
  962. package/dist/tools/spec/index.js +0 -19
  963. package/dist/tools/spec/index.js.map +0 -1
  964. package/dist/tools/spec/prdParser.d.ts +0 -42
  965. package/dist/tools/spec/prdParser.d.ts.map +0 -1
  966. package/dist/tools/spec/prdParser.js +0 -293
  967. package/dist/tools/spec/prdParser.js.map +0 -1
  968. package/dist/tools/spec/requirementId.d.ts +0 -64
  969. package/dist/tools/spec/requirementId.d.ts.map +0 -1
  970. package/dist/tools/spec/requirementId.js +0 -160
  971. package/dist/tools/spec/requirementId.js.map +0 -1
  972. package/dist/tools/spec/specGenerator.d.ts +0 -50
  973. package/dist/tools/spec/specGenerator.d.ts.map +0 -1
  974. package/dist/tools/spec/specGenerator.js +0 -505
  975. package/dist/tools/spec/specGenerator.js.map +0 -1
  976. package/dist/tools/spec/specLifecycle.d.ts +0 -40
  977. package/dist/tools/spec/specLifecycle.d.ts.map +0 -1
  978. package/dist/tools/spec/specLifecycle.js +0 -147
  979. package/dist/tools/spec/specLifecycle.js.map +0 -1
  980. package/dist/tools/spec/traceabilityMatrix.d.ts +0 -56
  981. package/dist/tools/spec/traceabilityMatrix.d.ts.map +0 -1
  982. package/dist/tools/spec/traceabilityMatrix.js +0 -479
  983. package/dist/tools/spec/traceabilityMatrix.js.map +0 -1
  984. package/dist/tools/spec/validateSpecDocument.d.ts +0 -30
  985. package/dist/tools/spec/validateSpecDocument.d.ts.map +0 -1
  986. package/dist/tools/spec/validateSpecDocument.js +0 -280
  987. package/dist/tools/spec/validateSpecDocument.js.map +0 -1
  988. package/dist/tools/time/getCurrentTime.d.ts +0 -7
  989. package/dist/tools/time/getCurrentTime.d.ts.map +0 -1
  990. package/dist/tools/time/getCurrentTime.js +0 -58
  991. package/dist/tools/time/getCurrentTime.js.map +0 -1
  992. package/dist/tools/time/index.d.ts +0 -5
  993. package/dist/tools/time/index.d.ts.map +0 -1
  994. package/dist/tools/time/index.js +0 -5
  995. package/dist/tools/time/index.js.map +0 -1
  996. package/dist/tools/ui/generateDesignSystem.d.ts +0 -7
  997. package/dist/tools/ui/generateDesignSystem.d.ts.map +0 -1
  998. package/dist/tools/ui/generateDesignSystem.js +0 -70
  999. package/dist/tools/ui/generateDesignSystem.js.map +0 -1
  1000. package/dist/tools/ui/index.d.ts +0 -9
  1001. package/dist/tools/ui/index.d.ts.map +0 -1
  1002. package/dist/tools/ui/index.js +0 -9
  1003. package/dist/tools/ui/index.js.map +0 -1
  1004. package/dist/tools/ui/persistDesignSystem.d.ts +0 -8
  1005. package/dist/tools/ui/persistDesignSystem.d.ts.map +0 -1
  1006. package/dist/tools/ui/persistDesignSystem.js +0 -77
  1007. package/dist/tools/ui/persistDesignSystem.js.map +0 -1
  1008. package/dist/tools/ui/previewUiAscii.d.ts +0 -14
  1009. package/dist/tools/ui/previewUiAscii.d.ts.map +0 -1
  1010. package/dist/tools/ui/previewUiAscii.js +0 -237
  1011. package/dist/tools/ui/previewUiAscii.js.map +0 -1
  1012. package/dist/tools/ui/searchUiUx.d.ts +0 -8
  1013. package/dist/tools/ui/searchUiUx.d.ts.map +0 -1
  1014. package/dist/tools/ui/searchUiUx.js +0 -82
  1015. package/dist/tools/ui/searchUiUx.js.map +0 -1
  1016. package/dist/tools/ui/searchUiUxStack.d.ts +0 -8
  1017. package/dist/tools/ui/searchUiUxStack.d.ts.map +0 -1
  1018. package/dist/tools/ui/searchUiUxStack.js +0 -83
  1019. package/dist/tools/ui/searchUiUxStack.js.map +0 -1
  1020. package/hooks/antigravity-hooks.json +0 -73
  1021. package/hooks/claude-plugin-hooks.json +0 -123
  1022. package/hooks/hooks.json +0 -128
  1023. package/hooks/plugin-hooks.json +0 -123
  1024. package/hooks/scripts/auto-commit.js +0 -123
  1025. package/hooks/scripts/auto-format.js +0 -125
  1026. package/hooks/scripts/auto-test.js +0 -222
  1027. package/hooks/scripts/clone-extract.js +0 -1306
  1028. package/hooks/scripts/clone-merge-responsive.js +0 -184
  1029. package/hooks/scripts/clone-refine.js +0 -642
  1030. package/hooks/scripts/clone-spec.js +0 -262
  1031. package/hooks/scripts/clone-to-scss.js +0 -275
  1032. package/hooks/scripts/clone-validate.js +0 -286
  1033. package/hooks/scripts/code-check.js +0 -354
  1034. package/hooks/scripts/codex-detect.js +0 -46
  1035. package/hooks/scripts/codex-hook-adapter.js +0 -183
  1036. package/hooks/scripts/codex-notify.js +0 -49
  1037. package/hooks/scripts/codex-review-gate.js +0 -84
  1038. package/hooks/scripts/command-log.js +0 -42
  1039. package/hooks/scripts/context-save.js +0 -342
  1040. package/hooks/scripts/devlog-gen.js +0 -230
  1041. package/hooks/scripts/figma-extract.js +0 -885
  1042. package/hooks/scripts/figma-refine.js +0 -315
  1043. package/hooks/scripts/figma-to-scss.js +0 -401
  1044. package/hooks/scripts/figma-validate.js +0 -353
  1045. package/hooks/scripts/hook-payload.js +0 -64
  1046. package/hooks/scripts/lib/anchor.js +0 -99
  1047. package/hooks/scripts/lib/console-allow.js +0 -66
  1048. package/hooks/scripts/lib/curation-index.js +0 -101
  1049. package/hooks/scripts/lib/dispatcher.js +0 -204
  1050. package/hooks/scripts/lib/ephemeral-lane.js +0 -106
  1051. package/hooks/scripts/lib/gates.js +0 -138
  1052. package/hooks/scripts/lib/glob.js +0 -32
  1053. package/hooks/scripts/lib/hook-context.js +0 -147
  1054. package/hooks/scripts/lib/inbox.js +0 -68
  1055. package/hooks/scripts/lib/iteration-cost.js +0 -178
  1056. package/hooks/scripts/lib/loop-ledger.js +0 -250
  1057. package/hooks/scripts/lib/pr-gate-runner.js +0 -62
  1058. package/hooks/scripts/lib/run-ledger.js +0 -271
  1059. package/hooks/scripts/lib/scope-from-spec.js +0 -340
  1060. package/hooks/scripts/llm-orchestrate.js +0 -699
  1061. package/hooks/scripts/loop-ledger.js +0 -167
  1062. package/hooks/scripts/plugin-hook-entry.js +0 -57
  1063. package/hooks/scripts/post-edit-dispatcher.js +0 -101
  1064. package/hooks/scripts/post-edit.js +0 -55
  1065. package/hooks/scripts/pr-test-gate.js +0 -23
  1066. package/hooks/scripts/pre-tool-dispatcher.js +0 -46
  1067. package/hooks/scripts/pre-tool-guard.js +0 -278
  1068. package/hooks/scripts/prompt-dispatcher.js +0 -237
  1069. package/hooks/scripts/recipe-extractor.js +0 -249
  1070. package/hooks/scripts/scope-guard.js +0 -107
  1071. package/hooks/scripts/sentinel-guard.js +0 -115
  1072. package/hooks/scripts/session-start.js +0 -229
  1073. package/hooks/scripts/step-counter.js +0 -364
  1074. package/hooks/scripts/stop-dispatcher.js +0 -56
  1075. package/hooks/scripts/stop-notify.js +0 -209
  1076. package/hooks/scripts/utils.js +0 -410
  1077. package/hooks/scripts/verify-ledger.js +0 -42
  1078. package/languages/csharp-unity.md +0 -515
  1079. package/languages/dart-flutter.md +0 -510
  1080. package/languages/gdscript-godot.md +0 -470
  1081. package/languages/go.md +0 -397
  1082. package/languages/java-spring.md +0 -587
  1083. package/languages/kotlin-android.md +0 -492
  1084. package/languages/python-django.md +0 -372
  1085. package/languages/python-fastapi.md +0 -387
  1086. package/languages/ruby-rails.md +0 -489
  1087. package/languages/rust.md +0 -426
  1088. package/languages/swift-ios.md +0 -517
  1089. package/languages/typescript-angular.md +0 -433
  1090. package/languages/typescript-astro.md +0 -416
  1091. package/languages/typescript-electron.md +0 -406
  1092. package/languages/typescript-nestjs.md +0 -524
  1093. package/languages/typescript-nextjs.md +0 -442
  1094. package/languages/typescript-node.md +0 -376
  1095. package/languages/typescript-nuxt.md +0 -522
  1096. package/languages/typescript-react-native.md +0 -447
  1097. package/languages/typescript-react.md +0 -526
  1098. package/languages/typescript-svelte.md +0 -407
  1099. package/languages/typescript-tauri.md +0 -365
  1100. package/languages/typescript-vue.md +0 -354
  1101. package/skills/vibe/references/routing-examples.md +0 -85
  1102. package/skills/vibe.agents-md/SKILL.md +0 -172
  1103. package/skills/vibe.agents-md/rubrics/what-to-keep.md +0 -49
  1104. package/skills/vibe.agents-md/templates/agents-md.md +0 -36
  1105. package/skills/vibe.agents-md/templates/claude-md.md +0 -54
  1106. package/skills/vibe.analyze/SKILL.md +0 -105
  1107. package/skills/vibe.analyze/references/mode1-feature.md +0 -81
  1108. package/skills/vibe.analyze/references/mode2-document.md +0 -50
  1109. package/skills/vibe.analyze/references/mode3-website.md +0 -47
  1110. package/skills/vibe.analyze/references/mode4-quality.md +0 -35
  1111. package/skills/vibe.analyze/references/output-templates.md +0 -188
  1112. package/skills/vibe.analyze/references/quality-gate.md +0 -93
  1113. package/skills/vibe.brand-assets/SKILL.md +0 -148
  1114. package/skills/vibe.brand-assets/references/mobile-assets.md +0 -6
  1115. package/skills/vibe.brand-assets/rubrics/asset-checklist.md +0 -98
  1116. package/skills/vibe.brand-assets/templates/brand-guide.md +0 -161
  1117. package/skills/vibe.capability-loop/SKILL.md +0 -208
  1118. package/skills/vibe.capability-loop/agents/capability-designer.md +0 -61
  1119. package/skills/vibe.capability-loop/agents/failure-analyst.md +0 -55
  1120. package/skills/vibe.capability-loop/agents/implementer.md +0 -50
  1121. package/skills/vibe.capability-loop/agents/tester.md +0 -53
  1122. package/skills/vibe.capability-loop/references/escalate.md +0 -86
  1123. package/skills/vibe.capability-loop/templates/capability-spec.md +0 -118
  1124. package/skills/vibe.capability-loop/templates/failure-analysis.md +0 -118
  1125. package/skills/vibe.chub-usage/SKILL.md +0 -11
  1126. package/skills/vibe.clone/SKILL.md +0 -136
  1127. package/skills/vibe.clone/references/capture-rules.md +0 -48
  1128. package/skills/vibe.clone/references/legal-and-error-recovery.md +0 -40
  1129. package/skills/vibe.clone/references/phase-commands.md +0 -118
  1130. package/skills/vibe.clone/references/refine-rules.md +0 -61
  1131. package/skills/vibe.clone/references/scaffold-phases.md +0 -59
  1132. package/skills/vibe.clone/references/setup-and-layout.md +0 -64
  1133. package/skills/vibe.clone/references/verification-loops.md +0 -67
  1134. package/skills/vibe.commerce-patterns/SKILL.md +0 -65
  1135. package/skills/vibe.commerce-patterns/rubrics/checkout-flow.md +0 -48
  1136. package/skills/vibe.commerce-patterns/templates/product-schema.md +0 -85
  1137. package/skills/vibe.commit-push-pr/SKILL.md +0 -83
  1138. package/skills/vibe.commit-push-pr/agents/change-analyzer.md +0 -55
  1139. package/skills/vibe.commit-push-pr/agents/message-writer.md +0 -50
  1140. package/skills/vibe.commit-push-pr/agents/pr-writer.md +0 -58
  1141. package/skills/vibe.commit-push-pr/agents/reviewer.md +0 -52
  1142. package/skills/vibe.commit-push-pr/rubrics/commit-message.md +0 -73
  1143. package/skills/vibe.commit-push-pr/templates/pr-body.md +0 -63
  1144. package/skills/vibe.context7-usage/SKILL.md +0 -11
  1145. package/skills/vibe.continue/SKILL.md +0 -42
  1146. package/skills/vibe.continue/agents/context-summarizer.md +0 -51
  1147. package/skills/vibe.continue/agents/document-writer.md +0 -63
  1148. package/skills/vibe.continue/agents/state-collector.md +0 -53
  1149. package/skills/vibe.continue/agents/verifier.md +0 -48
  1150. package/skills/vibe.continue/references/handoff-completeness.md +0 -62
  1151. package/skills/vibe.continue/references/handoff.md +0 -142
  1152. package/skills/vibe.contract/SKILL.md +0 -345
  1153. package/skills/vibe.create-prd/SKILL.md +0 -98
  1154. package/skills/vibe.create-prd/agents/edge-case-finder.md +0 -48
  1155. package/skills/vibe.create-prd/agents/prioritizer.md +0 -60
  1156. package/skills/vibe.create-prd/agents/requirements-writer.md +0 -48
  1157. package/skills/vibe.create-prd/agents/researcher.md +0 -55
  1158. package/skills/vibe.create-prd/agents/reviewer.md +0 -54
  1159. package/skills/vibe.create-prd/frameworks/jobs-to-be-done.md +0 -96
  1160. package/skills/vibe.create-prd/frameworks/rice-scoring.md +0 -97
  1161. package/skills/vibe.create-prd/orchestrator.md +0 -72
  1162. package/skills/vibe.create-prd/rubrics/completeness.md +0 -58
  1163. package/skills/vibe.create-prd/templates/prd.md +0 -139
  1164. package/skills/vibe.design/SKILL.md +0 -236
  1165. package/skills/vibe.design/heuristics/code-extract.md +0 -100
  1166. package/skills/vibe.design/references/README.md +0 -39
  1167. package/skills/vibe.design/references/brand-personality.md +0 -73
  1168. package/skills/vibe.design/references/design-context.md +0 -184
  1169. package/skills/vibe.design/references/ui-preview.md +0 -20
  1170. package/skills/vibe.design/templates/DESIGN.md.template +0 -100
  1171. package/skills/vibe.design/templates/design-context.json +0 -36
  1172. package/skills/vibe.design-refine/SKILL.md +0 -147
  1173. package/skills/vibe.design-refine/rubrics/polish-checklist.md +0 -68
  1174. package/skills/vibe.design-refine/rubrics/token-naming.md +0 -117
  1175. package/skills/vibe.design-refine/templates/design-system.md +0 -132
  1176. package/skills/vibe.design-refine/templates/polish-report.md +0 -64
  1177. package/skills/vibe.design-refine/templates/token-audit.md +0 -89
  1178. package/skills/vibe.design-review/SKILL.md +0 -150
  1179. package/skills/vibe.design-review/agents/a11y-auditor.md +0 -43
  1180. package/skills/vibe.design-review/agents/performance-auditor.md +0 -46
  1181. package/skills/vibe.design-review/agents/responsive-auditor.md +0 -46
  1182. package/skills/vibe.design-review/agents/scorer.md +0 -47
  1183. package/skills/vibe.design-review/agents/slop-detector.md +0 -47
  1184. package/skills/vibe.design-review/frameworks/core-web-vitals.md +0 -107
  1185. package/skills/vibe.design-review/frameworks/wcag-checklist.md +0 -64
  1186. package/skills/vibe.design-review/orchestrator.md +0 -66
  1187. package/skills/vibe.design-review/rubrics/ai-slop-patterns.md +0 -83
  1188. package/skills/vibe.design-review/rubrics/scoring.md +0 -63
  1189. package/skills/vibe.design-review/rubrics/ux-heuristics.md +0 -143
  1190. package/skills/vibe.design-review/templates/critique-report.md +0 -86
  1191. package/skills/vibe.design-review/templates/report.md +0 -88
  1192. package/skills/vibe.design-teach/SKILL.md +0 -11
  1193. package/skills/vibe.devlog/SKILL.md +0 -147
  1194. package/skills/vibe.devlog/references/auto-push.md +0 -10
  1195. package/skills/vibe.docs/SKILL.md +0 -121
  1196. package/skills/vibe.docs/references/agent.md +0 -59
  1197. package/skills/vibe.docs/references/api-docs-changelog.md +0 -34
  1198. package/skills/vibe.docs/references/arch.md +0 -28
  1199. package/skills/vibe.docs/references/codemaps-output.md +0 -23
  1200. package/skills/vibe.docs/references/codemaps.md +0 -17
  1201. package/skills/vibe.docs/references/diagram-spec.md +0 -34
  1202. package/skills/vibe.docs/references/diagram.md +0 -24
  1203. package/skills/vibe.docs/references/guide.md +0 -23
  1204. package/skills/vibe.docs/references/readme.md +0 -45
  1205. package/skills/vibe.docs/references/release.md +0 -31
  1206. package/skills/vibe.docs/templates/architecture.md +0 -80
  1207. package/skills/vibe.docs/templates/behavioral-principles.md +0 -47
  1208. package/skills/vibe.docs/templates/readme.md +0 -84
  1209. package/skills/vibe.docs/templates/release-notes.md +0 -74
  1210. package/skills/vibe.documentation-provider/SKILL.md +0 -22
  1211. package/skills/vibe.documentation-provider/references/chub.md +0 -141
  1212. package/skills/vibe.documentation-provider/references/context7-when-to-use.md +0 -50
  1213. package/skills/vibe.documentation-provider/references/context7.md +0 -107
  1214. package/skills/vibe.e2e-commerce/SKILL.md +0 -63
  1215. package/skills/vibe.e2e-commerce/templates/test-scenarios.md +0 -170
  1216. package/skills/vibe.educational-content/SKILL.md +0 -164
  1217. package/skills/vibe.educational-content/references/learning-design.md +0 -81
  1218. package/skills/vibe.educational-content/references/output-patterns.md +0 -109
  1219. package/skills/vibe.educational-content/references/source-method.md +0 -40
  1220. package/skills/vibe.event/SKILL.md +0 -66
  1221. package/skills/vibe.event/references/comms.md +0 -173
  1222. package/skills/vibe.event/references/contingency.md +0 -85
  1223. package/skills/vibe.event/references/d-day-checklist-template.md +0 -65
  1224. package/skills/vibe.event/references/email-invite-template.md +0 -99
  1225. package/skills/vibe.event/references/event-plan-template.md +0 -91
  1226. package/skills/vibe.event/references/operations.md +0 -208
  1227. package/skills/vibe.event/references/orchestration-legacy.md +0 -97
  1228. package/skills/vibe.event/references/planning.md +0 -145
  1229. package/skills/vibe.event/references/sns-post-template.md +0 -133
  1230. package/skills/vibe.event/references/timeline.md +0 -70
  1231. package/skills/vibe.event-comms/SKILL.md +0 -11
  1232. package/skills/vibe.event-ops/SKILL.md +0 -11
  1233. package/skills/vibe.event-planning/SKILL.md +0 -11
  1234. package/skills/vibe.figma/SKILL.md +0 -173
  1235. package/skills/vibe.figma/references/branch-phases.md +0 -113
  1236. package/skills/vibe.figma/references/branch1-read-convention.md +0 -82
  1237. package/skills/vibe.figma/references/branch2-read-standalone.md +0 -69
  1238. package/skills/vibe.figma/references/branch3-write.md +0 -122
  1239. package/skills/vibe.figma/references/core-implementation.md +0 -453
  1240. package/skills/vibe.figma/references/state-schema.md +0 -42
  1241. package/skills/vibe.figma/references/step-algorithms.md +0 -204
  1242. package/skills/vibe.figma/rubrics/conversion-rules.md +0 -141
  1243. package/skills/vibe.figma/rubrics/css-mapping.md +0 -125
  1244. package/skills/vibe.figma/rubrics/extraction-checklist.md +0 -51
  1245. package/skills/vibe.figma/rubrics/image-rules.md +0 -157
  1246. package/skills/vibe.figma/templates/component-index.md +0 -126
  1247. package/skills/vibe.figma/templates/component-spec.md +0 -168
  1248. package/skills/vibe.figma/templates/component.md +0 -140
  1249. package/skills/vibe.figma/templates/figma-handoff.md +0 -100
  1250. package/skills/vibe.figma/templates/remapped-tree.md +0 -277
  1251. package/skills/vibe.git-worktree/SKILL.md +0 -70
  1252. package/skills/vibe.git-worktree/references/troubleshooting.md +0 -9
  1253. package/skills/vibe.git-worktree/rubrics/when-to-use.md +0 -55
  1254. package/skills/vibe.harness/SKILL.md +0 -144
  1255. package/skills/vibe.harness/references/report-template.md +0 -46
  1256. package/skills/vibe.image/SKILL.md +0 -77
  1257. package/skills/vibe.image/references/image-generation-examples.md +0 -39
  1258. package/skills/vibe.llm/SKILL.md +0 -57
  1259. package/skills/vibe.loop/SKILL.md +0 -193
  1260. package/skills/vibe.loop/references/install-adapters.md +0 -25
  1261. package/skills/vibe.parallel-research/SKILL.md +0 -92
  1262. package/skills/vibe.parallel-research/agents/best-practices.md +0 -43
  1263. package/skills/vibe.parallel-research/agents/codebase-patterns.md +0 -46
  1264. package/skills/vibe.parallel-research/agents/framework-docs.md +0 -45
  1265. package/skills/vibe.parallel-research/agents/security-advisory.md +0 -46
  1266. package/skills/vibe.parallel-research/agents/synthesizer.md +0 -57
  1267. package/skills/vibe.parallel-research/experts/best-practices.md +0 -50
  1268. package/skills/vibe.parallel-research/experts/codebase-patterns.md +0 -70
  1269. package/skills/vibe.parallel-research/experts/framework-docs.md +0 -65
  1270. package/skills/vibe.parallel-research/experts/security-advisory.md +0 -69
  1271. package/skills/vibe.parallel-research/orchestrator.md +0 -81
  1272. package/skills/vibe.parallel-research/templates/awesome-list.md +0 -32
  1273. package/skills/vibe.parallel-research/templates/paper.md +0 -88
  1274. package/skills/vibe.parallel-research/templates/synthesis.md +0 -101
  1275. package/skills/vibe.presentation/SKILL.md +0 -90
  1276. package/skills/vibe.presentation/references/style-presets.md +0 -25
  1277. package/skills/vibe.prioritization/SKILL.md +0 -95
  1278. package/skills/vibe.prioritization/rubrics/frameworks.md +0 -79
  1279. package/skills/vibe.prioritization/templates/scoring-matrix.md +0 -69
  1280. package/skills/vibe.priority-todos/SKILL.md +0 -11
  1281. package/skills/vibe.react-best-practices/SKILL.md +0 -61
  1282. package/skills/vibe.react-best-practices/rubrics/performance.md +0 -82
  1283. package/skills/vibe.react-best-practices/rubrics/server-components.md +0 -86
  1284. package/skills/vibe.reason/SKILL.md +0 -160
  1285. package/skills/vibe.reason/references/output-format-template.md +0 -57
  1286. package/skills/vibe.reason/references/quality-rubrics.md +0 -94
  1287. package/skills/vibe.reason/references/worked-example.md +0 -45
  1288. package/skills/vibe.regress/SKILL.md +0 -233
  1289. package/skills/vibe.regress/templates/bug.md +0 -44
  1290. package/skills/vibe.regress/templates/test-template.md +0 -30
  1291. package/skills/vibe.review/SKILL.md +0 -321
  1292. package/skills/vibe.review/references/boundary-check.md +0 -25
  1293. package/skills/vibe.review/references/output-template.md +0 -74
  1294. package/skills/vibe.review/references/priority-todos.md +0 -66
  1295. package/skills/vibe.review/references/quality-gate.md +0 -84
  1296. package/skills/vibe.review/references/race-mode.md +0 -117
  1297. package/skills/vibe.review/references/todo-board-template.md +0 -59
  1298. package/skills/vibe.review/references/todo-prioritization.md +0 -70
  1299. package/skills/vibe.review/references/ui-ux-review.md +0 -39
  1300. package/skills/vibe.review/references/worked-examples.md +0 -94
  1301. package/skills/vibe.run/SKILL.md +0 -254
  1302. package/skills/vibe.run/internal/arch-guard/agents/detector.md +0 -48
  1303. package/skills/vibe.run/internal/arch-guard/agents/reporter.md +0 -48
  1304. package/skills/vibe.run/internal/arch-guard/agents/rule-generator.md +0 -49
  1305. package/skills/vibe.run/internal/arch-guard/agents/violation-checker.md +0 -51
  1306. package/skills/vibe.run/internal/arch-guard/frameworks/clean-architecture.md +0 -108
  1307. package/skills/vibe.run/internal/arch-guard/frameworks/solid.md +0 -102
  1308. package/skills/vibe.run/internal/arch-guard/scripts/check-boundaries.js +0 -90
  1309. package/skills/vibe.run/internal/arch-guard/templates/arch-rules.json +0 -47
  1310. package/skills/vibe.run/internal/arch-guard/templates/violation-report.md +0 -53
  1311. package/skills/vibe.run/internal/exec-plan/agents/decomposer.md +0 -47
  1312. package/skills/vibe.run/internal/exec-plan/agents/dependency-mapper.md +0 -44
  1313. package/skills/vibe.run/internal/exec-plan/agents/estimator.md +0 -43
  1314. package/skills/vibe.run/internal/exec-plan/agents/validator.md +0 -55
  1315. package/skills/vibe.run/internal/exec-plan/orchestrator.md +0 -72
  1316. package/skills/vibe.run/internal/exec-plan/rubrics/complexity-scoring.md +0 -75
  1317. package/skills/vibe.run/internal/exec-plan/templates/plan.md +0 -147
  1318. package/skills/vibe.run/references/arch-guard.md +0 -178
  1319. package/skills/vibe.run/references/automation-level.md +0 -51
  1320. package/skills/vibe.run/references/brand-assets.md +0 -59
  1321. package/skills/vibe.run/references/coverage-loop.md +0 -94
  1322. package/skills/vibe.run/references/e2e-and-autofix.md +0 -43
  1323. package/skills/vibe.run/references/exec-plan.md +0 -145
  1324. package/skills/vibe.run/references/guidelines-and-tools.md +0 -84
  1325. package/skills/vibe.run/references/parallel-agents.md +0 -253
  1326. package/skills/vibe.run/references/process-steps.md +0 -179
  1327. package/skills/vibe.run/references/race-review.md +0 -272
  1328. package/skills/vibe.run/references/restraint.md +0 -66
  1329. package/skills/vibe.scaffold/SKILL.md +0 -193
  1330. package/skills/vibe.scaffold/references/clean-architecture.md +0 -17
  1331. package/skills/vibe.seo-checklist/SKILL.md +0 -59
  1332. package/skills/vibe.seo-checklist/frameworks/structured-data.md +0 -153
  1333. package/skills/vibe.seo-checklist/rubrics/content-seo.md +0 -42
  1334. package/skills/vibe.seo-checklist/rubrics/technical-seo.md +0 -48
  1335. package/skills/vibe.spec/SKILL.md +0 -328
  1336. package/skills/vibe.spec/references/legacy-artifacts.md +0 -6
  1337. package/skills/vibe.test/SKILL.md +0 -209
  1338. package/skills/vibe.test/references/report-template.md +0 -101
  1339. package/skills/vibe.tool-fallback/SKILL.md +0 -83
  1340. package/skills/vibe.tool-fallback/references/external-llm.md +0 -10
  1341. package/skills/vibe.tool-fallback/references/file-lookup.md +0 -9
  1342. package/skills/vibe.tool-fallback/references/web-search.md +0 -11
  1343. package/skills/vibe.tool-fallback/rubrics/fallback-chain.md +0 -58
  1344. package/skills/vibe.trace/SKILL.md +0 -8
  1345. package/skills/vibe.ui-ux-pro-max/SKILL.md +0 -236
  1346. package/skills/vibe.ui-ux-pro-max/reference/color-and-contrast.md +0 -517
  1347. package/skills/vibe.ui-ux-pro-max/reference/interaction-design.md +0 -544
  1348. package/skills/vibe.ui-ux-pro-max/reference/motion-design.md +0 -591
  1349. package/skills/vibe.ui-ux-pro-max/reference/responsive-design.md +0 -463
  1350. package/skills/vibe.ui-ux-pro-max/reference/spatial-design.md +0 -390
  1351. package/skills/vibe.ui-ux-pro-max/reference/typography.md +0 -455
  1352. package/skills/vibe.ui-ux-pro-max/reference/ux-writing.md +0 -469
  1353. package/skills/vibe.ui-ux-pro-max/references/charts-and-data.md +0 -7
  1354. package/skills/vibe.ui-ux-pro-max/rubrics/interaction-states.md +0 -83
  1355. package/skills/vibe.ui-ux-pro-max/rubrics/responsive-breakpoints.md +0 -99
  1356. package/skills/vibe.user-personas/SKILL.md +0 -83
  1357. package/skills/vibe.user-personas/rubrics/research-methods.md +0 -56
  1358. package/skills/vibe.user-personas/templates/persona.md +0 -89
  1359. package/skills/vibe.verify/SKILL.md +0 -175
  1360. package/skills/vibe.verify/references/trace-mode.md +0 -271
  1361. package/skills/vibe.video-production/SKILL.md +0 -72
  1362. package/skills/vibe.video-production/rubrics/quality-checklist.md +0 -58
  1363. package/skills/vibe.video-production/templates/production-plan.md +0 -104
  1364. package/vibe/config.json +0 -30
  1365. package/vibe/constitution.md +0 -254
  1366. package/vibe/rules/loop-contract.md +0 -256
  1367. package/vibe/rules/orchestrator-contract.md +0 -57
  1368. package/vibe/rules/prefix-cache-surface.md +0 -98
  1369. package/vibe/rules/principles/communication-guide.md +0 -98
  1370. package/vibe/rules/principles/development-philosophy.md +0 -52
  1371. package/vibe/rules/principles/dual-harness-doctrine.md +0 -74
  1372. package/vibe/rules/principles/quick-start.md +0 -102
  1373. package/vibe/rules/quality/bdd-contract-testing.md +0 -393
  1374. package/vibe/rules/quality/checklist.md +0 -276
  1375. package/vibe/rules/quality/performance.md +0 -236
  1376. package/vibe/rules/quality/testing-strategy.md +0 -440
  1377. package/vibe/rules/standards/anti-patterns.md +0 -541
  1378. package/vibe/rules/standards/code-structure.md +0 -291
  1379. package/vibe/rules/standards/complexity-metrics.md +0 -313
  1380. package/vibe/rules/standards/git-workflow.md +0 -237
  1381. package/vibe/rules/standards/naming-conventions.md +0 -198
  1382. package/vibe/rules/standards/security.md +0 -305
  1383. package/vibe/rules/writing/document-style.md +0 -74
  1384. package/vibe/setup.sh +0 -31
  1385. package/vibe/templates/claudemd-template.md +0 -62
  1386. package/vibe/templates/constitution-template.md +0 -267
  1387. package/vibe/templates/contract-backend-template.md +0 -526
  1388. package/vibe/templates/contract-frontend-template.md +0 -599
  1389. package/vibe/templates/feature-template.md +0 -96
  1390. package/vibe/templates/loop-template.md +0 -85
  1391. package/vibe/templates/plan-template.md +0 -194
  1392. package/vibe/templates/spec-template.md +0 -184
  1393. package/vibe/ui-ux-data/charts.csv +0 -26
  1394. package/vibe/ui-ux-data/colors.csv +0 -97
  1395. package/vibe/ui-ux-data/icons.csv +0 -101
  1396. package/vibe/ui-ux-data/landing.csv +0 -31
  1397. package/vibe/ui-ux-data/products.csv +0 -97
  1398. package/vibe/ui-ux-data/react-performance.csv +0 -45
  1399. package/vibe/ui-ux-data/stacks/astro.csv +0 -54
  1400. package/vibe/ui-ux-data/stacks/flutter.csv +0 -53
  1401. package/vibe/ui-ux-data/stacks/html-tailwind.csv +0 -56
  1402. package/vibe/ui-ux-data/stacks/jetpack-compose.csv +0 -53
  1403. package/vibe/ui-ux-data/stacks/nextjs.csv +0 -53
  1404. package/vibe/ui-ux-data/stacks/nuxt-ui.csv +0 -51
  1405. package/vibe/ui-ux-data/stacks/nuxtjs.csv +0 -59
  1406. package/vibe/ui-ux-data/stacks/react-native.csv +0 -52
  1407. package/vibe/ui-ux-data/stacks/react.csv +0 -54
  1408. package/vibe/ui-ux-data/stacks/shadcn.csv +0 -61
  1409. package/vibe/ui-ux-data/stacks/svelte.csv +0 -54
  1410. package/vibe/ui-ux-data/stacks/swiftui.csv +0 -51
  1411. package/vibe/ui-ux-data/stacks/vue.csv +0 -50
  1412. package/vibe/ui-ux-data/styles.csv +0 -68
  1413. package/vibe/ui-ux-data/typography.csv +0 -58
  1414. package/vibe/ui-ux-data/ui-reasoning.csv +0 -101
  1415. package/vibe/ui-ux-data/ux-guidelines.csv +0 -100
  1416. package/vibe/ui-ux-data/version.json +0 -31
  1417. package/vibe/ui-ux-data/web-interface.csv +0 -31
@@ -1,1306 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * clone-extract.js — 웹사이트 → 렌더링된 DOM/CSS/자산 정밀 추출
5
- *
6
- * Usage:
7
- * node clone-extract.js capture <URL> --out=<dir> --viewport=375x812 --bp=mo [--stealth] [--ignore-robots]
8
- *
9
- * Output (in <dir>):
10
- * rendered.html — sanitized full DOM after JS
11
- * computed.json — per-element computed CSS + box + pseudo-elements + shadow DOM
12
- * screenshot.png — full-page screenshot
13
- * stylesheets.json — @font-face + @keyframes harvested from all sheets
14
- * states.json — non-default state rules (hover/focus/active/checked/tab/aria/data-state)
15
- * behaviors.json — ACTIVE interaction sweep: scroll-triggered header/nav diffs +
16
- * click-driven tab groups (content-swap detection). Captures JS-set
17
- * state that static CSS harvesting can't see. Skip with --no-interact.
18
- * asset-map.json — remote URL → local path mapping
19
- * assets/images/*, assets/fonts/*
20
- *
21
- * Requires: puppeteer (optional peer dep; `npm install puppeteer` if missing)
22
- *
23
- * Fidelity guarantees:
24
- * 1. Pseudo-elements (::before/::after) captured separately
25
- * 2. Shadow DOM traversed (open shadow roots)
26
- * 3. Inline SVG preserved as-is in nodes
27
- * 4. CSS custom properties (--vars) captured per element
28
- * 5. @font-face downloaded with format() preference (woff2 > woff > ttf)
29
- * 6. Node IDs stable via DOM path, not attribute mutation
30
- * 7. <picture>/srcset resolved to currentSrc (matches viewport)
31
- * 8. Gradients & multi-backgrounds preserved verbatim
32
- */
33
-
34
- import fs from 'fs';
35
- import path from 'path';
36
- import { URL } from 'url';
37
- import http from 'http';
38
- import https from 'https';
39
-
40
- // ─── CSS property allow-list (captured per element) ─────────────────
41
- // Kept narrow to keep computed.json sane; downstream scripts may add more.
42
- const CSS_PROPS = [
43
- // layout / box
44
- 'display', 'position', 'top', 'right', 'bottom', 'left', 'inset',
45
- 'float', 'clear',
46
- 'flex-direction', 'flex-wrap', 'justify-content', 'align-items', 'align-content',
47
- 'align-self', 'justify-self', 'place-items', 'place-content',
48
- 'gap', 'row-gap', 'column-gap', 'order', 'flex-grow', 'flex-shrink', 'flex-basis',
49
- 'grid-template-columns', 'grid-template-rows', 'grid-template-areas',
50
- 'grid-column', 'grid-row', 'grid-area', 'grid-auto-flow', 'grid-auto-rows', 'grid-auto-columns',
51
- 'width', 'height', 'min-width', 'min-height', 'max-width', 'max-height',
52
- 'aspect-ratio',
53
- 'margin-top', 'margin-right', 'margin-bottom', 'margin-left',
54
- 'padding-top', 'padding-right', 'padding-bottom', 'padding-left',
55
- 'box-sizing', 'overflow', 'overflow-x', 'overflow-y', 'z-index',
56
- 'pointer-events',
57
- // typography
58
- 'font-family', 'font-size', 'font-weight', 'font-style', 'line-height',
59
- 'letter-spacing', 'word-spacing', 'text-align', 'text-decoration',
60
- 'text-decoration-color', 'text-decoration-thickness', 'text-underline-offset',
61
- 'text-transform', 'text-shadow', 'color',
62
- 'white-space', 'word-break', 'overflow-wrap', 'text-overflow',
63
- '-webkit-line-clamp', '-webkit-box-orient',
64
- // decoration / paint
65
- 'background-color', 'background-image', 'background-size', 'background-position',
66
- 'background-repeat', 'background-attachment', 'background-clip', 'background-origin',
67
- 'background-blend-mode',
68
- 'border-top-width', 'border-right-width', 'border-bottom-width', 'border-left-width',
69
- 'border-top-style', 'border-right-style', 'border-bottom-style', 'border-left-style',
70
- 'border-top-color', 'border-right-color', 'border-bottom-color', 'border-left-color',
71
- 'border-top-left-radius', 'border-top-right-radius',
72
- 'border-bottom-left-radius', 'border-bottom-right-radius',
73
- 'box-shadow', 'opacity', 'mix-blend-mode', 'filter', 'backdrop-filter',
74
- 'transform', 'transform-origin', 'perspective',
75
- 'transition', 'animation', 'visibility',
76
- // content (pseudo-elements need this)
77
- 'content', 'cursor', 'caret-color', 'list-style', 'object-fit', 'object-position',
78
- 'mask-image', 'mask-size', 'mask-position', 'clip-path',
79
- ];
80
-
81
- const SUB_URL_LIMIT = 200;
82
- const SUB_EXCLUDE_TEXT_RE = /^(?:검색|search|top|home|kor|eng|chn|vtn|language|언어|개인정보|privacy|문의|제안|sitemap|사이트맵|youtube|뉴스룸|newsroom|cookie|닫기|partner|파트너)$/i;
83
- const SUB_EXCLUDE_PATH_RE = /\/(?:search|sitemap|privacy|contact|inquiry|cookie|login|auth|policy)(?:\/|$)/i;
84
- const SUB_EXCLUDE_EXT_RE = /\.(?:pdf|zip|jpe?g|png|gif|webp|svg|mp4|mov|avi|docx?|xlsx?|pptx?)$/i;
85
-
86
- // ─── CLI parse ──────────────────────────────────────────────────────
87
- function parseArgs(argv) {
88
- const [, , cmd, urlArg, ...rest] = argv;
89
- const opts = { stealth: false, ignoreRobots: false, interact: true };
90
- for (const arg of rest) {
91
- if (arg.startsWith('--out=')) opts.out = arg.slice(6);
92
- else if (arg.startsWith('--viewport=')) opts.viewport = arg.slice(11);
93
- else if (arg.startsWith('--bp=')) opts.bp = arg.slice(5);
94
- else if (arg.startsWith('--wait=')) opts.wait = Number(arg.slice(7));
95
- else if (arg === '--stealth') opts.stealth = true;
96
- else if (arg === '--ignore-robots') opts.ignoreRobots = true;
97
- else if (arg === '--no-interact') opts.interact = false;
98
- }
99
- return { cmd, url: urlArg, opts };
100
- }
101
-
102
- function parseViewport(v) {
103
- const m = /^(\d+)x(\d+)(?:@(\d+(?:\.\d+)?))?$/.exec(v || '');
104
- if (!m) throw new Error(`Invalid viewport: ${v}. Expected WxH or WxH@DPR (e.g. 375x812@2)`);
105
- return {
106
- width: Number(m[1]),
107
- height: Number(m[2]),
108
- deviceScaleFactor: m[3] ? Number(m[3]) : 1,
109
- };
110
- }
111
-
112
- function localePrefixOf(rawUrl) {
113
- const first = new URL(rawUrl).pathname.split('/').filter(Boolean)[0];
114
- if (!first || !/^[a-z]{2,3}(?:-[a-z]{2})?$/i.test(first)) return null;
115
- return `/${first}`;
116
- }
117
-
118
- function normalizeSubUrl(startUrl, href) {
119
- if (!href || typeof href !== 'string') return null;
120
- try {
121
- const target = new URL(href, startUrl);
122
- if (target.protocol !== 'http:' && target.protocol !== 'https:') return null;
123
- target.hash = '';
124
- target.search = '';
125
- target.pathname = target.pathname.replace(/\/+$/, '') || '/';
126
- return target;
127
- } catch {
128
- return null;
129
- }
130
- }
131
-
132
- function isSameMenuScope(target, start, localePrefix) {
133
- if (target.origin !== start.origin) return false;
134
- if (!localePrefix) return true;
135
- return target.pathname === localePrefix || target.pathname.startsWith(`${localePrefix}/`);
136
- }
137
-
138
- function isExcludedSubLink(target, text) {
139
- const label = String(text || '').trim();
140
- if (SUB_EXCLUDE_TEXT_RE.test(label)) return true;
141
- if (SUB_EXCLUDE_PATH_RE.test(target.pathname)) return true;
142
- return SUB_EXCLUDE_EXT_RE.test(target.pathname);
143
- }
144
-
145
- function collectSubUrls(startUrl, links, limit = SUB_URL_LIMIT) {
146
- const start = normalizeSubUrl(startUrl, startUrl);
147
- if (!start) return [];
148
- const localePrefix = localePrefixOf(start.href);
149
- const urls = [start.href];
150
- const seen = new Set(urls);
151
-
152
- for (const link of links) {
153
- if (urls.length >= limit) break;
154
- const target = normalizeSubUrl(start.href, link.href);
155
- if (!target || seen.has(target.href)) continue;
156
- if (!isSameMenuScope(target, start, localePrefix)) continue;
157
- if (isExcludedSubLink(target, link.text)) continue;
158
- seen.add(target.href);
159
- urls.push(target.href);
160
- }
161
-
162
- return urls;
163
- }
164
-
165
- function findSitemapUrl(startUrl, links) {
166
- const start = normalizeSubUrl(startUrl, startUrl);
167
- if (!start) return null;
168
- const localePrefix = localePrefixOf(start.href);
169
-
170
- for (const link of links) {
171
- const label = String(link.text || '').trim();
172
- if (!/sitemap|사이트맵/i.test(`${label} ${link.href}`)) continue;
173
- const target = normalizeSubUrl(start.href, link.href);
174
- if (target && isSameMenuScope(target, start, localePrefix)) return target.href;
175
- }
176
-
177
- return null;
178
- }
179
-
180
- // ─── Puppeteer dynamic loader (optional dep) ────────────────────────
181
- async function loadPuppeteer() {
182
- try {
183
- return await import('puppeteer');
184
- } catch {
185
- throw new Error(
186
- 'puppeteer is not installed. Run: npm install puppeteer\n' +
187
- 'Required for clone-extract.js (clone Phase 1).',
188
- );
189
- }
190
- }
191
-
192
- // ─── robots.txt check ───────────────────────────────────────────────
193
- async function checkRobots(targetUrl) {
194
- const u = new URL(targetUrl);
195
- const robotsUrl = `${u.protocol}//${u.host}/robots.txt`;
196
- try {
197
- const body = await fetchText(robotsUrl, 5000);
198
- const lines = body.split('\n').map((l) => l.trim());
199
- let inStar = false;
200
- const disallows = [];
201
- for (const line of lines) {
202
- if (/^user-agent:\s*\*/i.test(line)) inStar = true;
203
- else if (/^user-agent:/i.test(line)) inStar = false;
204
- else if (inStar && /^disallow:\s*/i.test(line)) {
205
- const p = line.replace(/^disallow:\s*/i, '').trim();
206
- if (p) disallows.push(p);
207
- }
208
- }
209
- const reqPath = u.pathname || '/';
210
- return disallows.some((p) => reqPath.startsWith(p));
211
- } catch {
212
- return false;
213
- }
214
- }
215
-
216
- function fetchText(url, timeoutMs = 10000) {
217
- return new Promise((resolve, reject) => {
218
- const client = url.startsWith('https:') ? https : http;
219
- const req = client.get(url, { timeout: timeoutMs }, (res) => {
220
- if (res.statusCode && res.statusCode >= 300 && res.statusCode < 400 && res.headers.location) {
221
- return resolve(fetchText(res.headers.location, timeoutMs));
222
- }
223
- if (res.statusCode !== 200) {
224
- return reject(new Error(`HTTP ${res.statusCode} for ${url}`));
225
- }
226
- let data = '';
227
- res.setEncoding('utf8');
228
- res.on('data', (c) => { data += c; });
229
- res.on('end', () => resolve(data));
230
- });
231
- req.on('error', reject);
232
- req.on('timeout', () => req.destroy(new Error(`timeout: ${url}`)));
233
- });
234
- }
235
-
236
- function fetchBinary(url, timeoutMs = 30000, depth = 0) {
237
- if (depth > 5) return Promise.reject(new Error('too many redirects'));
238
- return new Promise((resolve, reject) => {
239
- const client = url.startsWith('https:') ? https : http;
240
- const req = client.get(url, {
241
- timeout: timeoutMs,
242
- headers: { 'User-Agent': 'Mozilla/5.0 clone' },
243
- }, (res) => {
244
- if (res.statusCode && res.statusCode >= 300 && res.statusCode < 400 && res.headers.location) {
245
- const next = new URL(res.headers.location, url).href;
246
- return resolve(fetchBinary(next, timeoutMs, depth + 1));
247
- }
248
- if (res.statusCode !== 200) {
249
- return reject(new Error(`HTTP ${res.statusCode}`));
250
- }
251
- const chunks = [];
252
- res.on('data', (c) => chunks.push(c));
253
- res.on('end', () => resolve(Buffer.concat(chunks)));
254
- });
255
- req.on('error', reject);
256
- req.on('timeout', () => req.destroy(new Error('timeout')));
257
- });
258
- }
259
-
260
- // ─── Asset download with concurrency limit ──────────────────────────
261
- async function downloadAssets(urls, outDir, concurrency = 8) {
262
- const queue = [...urls];
263
- const map = {};
264
- const seenNames = new Set();
265
- const workers = Array.from({ length: concurrency }, async () => {
266
- while (queue.length > 0) {
267
- const u = queue.shift();
268
- if (!u) break;
269
- try {
270
- const buf = await fetchBinary(u);
271
- const filename = uniqueFilename(u, outDir, seenNames);
272
- const full = path.join(outDir, filename);
273
- fs.mkdirSync(path.dirname(full), { recursive: true });
274
- fs.writeFileSync(full, buf);
275
- map[u] = { local: filename, status: 'ok', bytes: buf.length };
276
- } catch (e) {
277
- map[u] = { local: null, status: 'missing', error: String(e.message || e) };
278
- }
279
- }
280
- });
281
- await Promise.all(workers);
282
- return map;
283
- }
284
-
285
- function uniqueFilename(rawUrl, baseDir, seen) {
286
- let base;
287
- try {
288
- const u = new URL(rawUrl);
289
- base = path.basename(u.pathname) || 'asset';
290
- } catch {
291
- base = 'asset';
292
- }
293
- base = base.replace(/[?#].*$/, '') || 'asset';
294
- // sanitize
295
- base = base.replace(/[^a-zA-Z0-9._-]/g, '_');
296
- if (!path.extname(base)) base += '.bin';
297
- let candidate = base;
298
- let i = 1;
299
- while (seen.has(candidate) || fs.existsSync(path.join(baseDir, candidate))) {
300
- const ext = path.extname(base);
301
- const stem = base.slice(0, -ext.length);
302
- candidate = `${stem}-${i++}${ext}`;
303
- }
304
- seen.add(candidate);
305
- return candidate;
306
- }
307
-
308
- // ─── In-page extraction (runs inside the page) ──────────────────────
309
- // IMPORTANT: this function is serialized to a string. It must be self-contained.
310
- const PAGE_EXTRACT = `
311
- (function (props) {
312
- const out = [];
313
- const stylesheets = { fontFaces: [], keyframes: [], cssVars: {} };
314
- const stateRules = [];
315
- const pathById = new Map();
316
-
317
- // ── Non-default state rule harvesting (hover/focus/active/checked/tab/aria/data-state) ──
318
- // Deterministic: read state-dependent declarations straight from the stylesheets
319
- // (no scripted clicking/hovering, so the output stays reproducible).
320
- const propSet = new Set(props);
321
- const STATE_RE = /:hover|:focus(?:-visible|-within)?|:active|:checked|:target|\\[aria-(?:expanded|selected|current|pressed)|\\[data-(?:state|active|open|selected)|\\[open\\]|\\.is-[a-z-]+|\\.has-[a-z-]+|\\.(?:active|open|selected|expanded|current|show|visible|scrolled|sticky|stuck|pinned|fixed|shrink|shrunk|compact|affix|headroom|scrolling)(?![\\w-])/i;
322
- const harvestStateRule = (rule, media) => {
323
- if (rule.selectorText && STATE_RE.test(rule.selectorText)) {
324
- const decl = {};
325
- for (let i = 0; i < rule.style.length; i++) {
326
- const p = rule.style[i];
327
- if (propSet.has(p)) decl[p] = rule.style.getPropertyValue(p).trim();
328
- }
329
- if (Object.keys(decl).length && stateRules.length < 1200) {
330
- stateRules.push({ selector: rule.selectorText.trim(), media: media || null, css: decl });
331
- }
332
- }
333
- // Recurse @media / @supports blocks so state rules nested under them are not lost
334
- if (rule.cssRules && (rule.media || rule.conditionText)) {
335
- const mq = rule.media ? rule.media.mediaText : (media || null);
336
- for (const r of rule.cssRules) harvestStateRule(r, mq);
337
- }
338
- };
339
-
340
- // Stable ID via DOM path (no attribute mutation)
341
- const pathFor = (el, parent) => {
342
- if (!parent) return '0';
343
- const siblings = Array.from(el.parentNode.children);
344
- const idx = siblings.indexOf(el);
345
- return parent + '.' + idx;
346
- };
347
-
348
- const captureCss = (cs) => {
349
- const css = {};
350
- for (const p of props) {
351
- const v = cs.getPropertyValue(p);
352
- if (v && v !== 'normal' && v !== 'auto' && v !== 'none' && v !== '0px' && v !== '') {
353
- css[p] = v.trim();
354
- } else if (v === '0px' || v === 'auto') {
355
- // keep zeros/auto for box model props
356
- if (/^(margin|padding|border|width|height|inset|top|right|bottom|left|gap)/.test(p)) {
357
- css[p] = v.trim();
358
- }
359
- }
360
- }
361
- // CSS custom properties
362
- const vars = {};
363
- for (let i = 0; i < cs.length; i++) {
364
- const name = cs[i];
365
- if (name && name.startsWith('--')) {
366
- vars[name] = cs.getPropertyValue(name).trim();
367
- }
368
- }
369
- if (Object.keys(vars).length) css['--vars'] = vars;
370
- return css;
371
- };
372
-
373
- const capturePseudo = (el, kind, parentId) => {
374
- const cs = getComputedStyle(el, '::' + kind);
375
- const content = cs.getPropertyValue('content');
376
- // Real pseudo-element only if content is not 'none' or empty
377
- if (!content || content === 'none' || content === 'normal') return null;
378
- const css = captureCss(cs);
379
- if (Object.keys(css).length <= 1) return null;
380
- return {
381
- id: parentId + '::' + kind,
382
- parent: parentId,
383
- tag: '::' + kind,
384
- pseudo: true,
385
- content: content,
386
- css,
387
- };
388
- };
389
-
390
- const isSvgElement = (el) => el.namespaceURI === 'http://www.w3.org/2000/svg';
391
-
392
- const captureSvg = (svg, id, parentId) => {
393
- return {
394
- id,
395
- parent: parentId,
396
- tag: 'svg',
397
- isSvg: true,
398
- svgMarkup: svg.outerHTML,
399
- box: rectOf(svg),
400
- css: captureCss(getComputedStyle(svg)),
401
- };
402
- };
403
-
404
- const rectOf = (el) => {
405
- const r = el.getBoundingClientRect();
406
- // Adjust for current scroll (we capture mid-scroll)
407
- return {
408
- x: Math.round((r.x + window.scrollX) * 100) / 100,
409
- y: Math.round((r.y + window.scrollY) * 100) / 100,
410
- w: Math.round(r.width * 100) / 100,
411
- h: Math.round(r.height * 100) / 100,
412
- };
413
- };
414
-
415
- const collectSrcset = (el) => {
416
- const ss = el.getAttribute('srcset') || el.getAttribute('data-srcset');
417
- if (!ss) return [];
418
- return ss.split(',').map((part) => {
419
- const bits = part.trim().split(/\\s+/);
420
- try { return new URL(bits[0], location.href).href; } catch { return null; }
421
- }).filter(Boolean);
422
- };
423
-
424
- const walk = (el, parentId, root) => {
425
- if (!(el instanceof Element)) return;
426
-
427
- const cs = getComputedStyle(el);
428
- if (cs.display === 'none') return;
429
- // Keep visibility:hidden — may matter for layout (placeholders)
430
-
431
- const id = pathFor(el, parentId);
432
- pathById.set(id, el);
433
-
434
- if (isSvgElement(el) && el.tagName.toLowerCase() === 'svg') {
435
- out.push(captureSvg(el, id, parentId));
436
- return;
437
- }
438
-
439
- const node = {
440
- id,
441
- parent: parentId,
442
- tag: el.tagName.toLowerCase(),
443
- classes: el.getAttribute('class') || '',
444
- attrs: {
445
- src: el.getAttribute('src') || el.getAttribute('data-src') || null,
446
- currentSrc: (el.tagName === 'IMG' || el.tagName === 'SOURCE') ? (el.currentSrc || null) : null,
447
- srcset: el.getAttribute('srcset') || el.getAttribute('data-srcset') || null,
448
- href: el.getAttribute('href') || null,
449
- alt: el.getAttribute('alt') || null,
450
- title: el.getAttribute('title') || null,
451
- role: el.getAttribute('role') || null,
452
- ariaLabel: el.getAttribute('aria-label') || null,
453
- type: el.getAttribute('type') || null,
454
- name: el.getAttribute('name') || null,
455
- placeholder: el.getAttribute('placeholder') || null,
456
- value: el.getAttribute('value') || null,
457
- },
458
- text: '',
459
- box: rectOf(el),
460
- css: captureCss(cs),
461
- };
462
-
463
- // Direct text content (only if no element children to avoid duplication)
464
- if (el.children.length === 0 || Array.from(el.childNodes).every((n) => n.nodeType === Node.TEXT_NODE || n.nodeType === Node.ELEMENT_NODE)) {
465
- let txt = '';
466
- for (const n of el.childNodes) {
467
- if (n.nodeType === Node.TEXT_NODE) txt += n.textContent;
468
- }
469
- txt = txt.trim();
470
- if (txt) node.text = txt.length > 2000 ? txt.slice(0, 2000) + '…' : txt;
471
- }
472
-
473
- out.push(node);
474
-
475
- // Pseudo elements
476
- const before = capturePseudo(el, 'before', id);
477
- if (before) out.push(before);
478
- const after = capturePseudo(el, 'after', id);
479
- if (after) out.push(after);
480
-
481
- // Shadow DOM (open shadow roots only)
482
- if (el.shadowRoot && el.shadowRoot.mode === 'open') {
483
- for (const child of el.shadowRoot.children) walk(child, id + '/shadow', root);
484
- }
485
-
486
- for (const child of el.children) walk(child, id, root);
487
- };
488
-
489
- walk(document.documentElement, null, document.documentElement);
490
-
491
- // Collect asset URLs (images + fonts) ─────────────────────────────
492
- const images = new Set();
493
- const fonts = new Set();
494
-
495
- document.querySelectorAll('img').forEach((img) => {
496
- if (img.currentSrc) images.add(img.currentSrc);
497
- else if (img.src) images.add(img.src);
498
- const ss = img.getAttribute('srcset') || img.getAttribute('data-srcset');
499
- if (ss) {
500
- ss.split(',').forEach((p) => {
501
- const u = p.trim().split(/\\s+/)[0];
502
- try { images.add(new URL(u, location.href).href); } catch {}
503
- });
504
- }
505
- });
506
- document.querySelectorAll('source').forEach((s) => {
507
- const ss = s.getAttribute('srcset');
508
- if (!ss) return;
509
- ss.split(',').forEach((p) => {
510
- const u = p.trim().split(/\\s+/)[0];
511
- try { images.add(new URL(u, location.href).href); } catch {}
512
- });
513
- });
514
- document.querySelectorAll('video, audio').forEach((el) => {
515
- if (el.poster) images.add(new URL(el.poster, location.href).href);
516
- });
517
-
518
- const bgUrlRe = /url\\(['"]?([^'")]+)['"]?\\)/g;
519
- document.querySelectorAll('*').forEach((el) => {
520
- const cs = getComputedStyle(el);
521
- const bg = cs.backgroundImage;
522
- if (bg && bg !== 'none') {
523
- let m;
524
- const re = new RegExp(bgUrlRe.source, 'g');
525
- while ((m = re.exec(bg)) !== null) {
526
- try { images.add(new URL(m[1], location.href).href); } catch {}
527
- }
528
- }
529
- // also check pseudo bg
530
- for (const k of ['::before', '::after']) {
531
- const pcs = getComputedStyle(el, k);
532
- const pbg = pcs.backgroundImage;
533
- if (pbg && pbg !== 'none') {
534
- let m;
535
- const re = new RegExp(bgUrlRe.source, 'g');
536
- while ((m = re.exec(pbg)) !== null) {
537
- try { images.add(new URL(m[1], location.href).href); } catch {}
538
- }
539
- }
540
- }
541
- });
542
-
543
- // @font-face from all stylesheets
544
- for (const sheet of document.styleSheets) {
545
- let rules;
546
- try { rules = sheet.cssRules; } catch { continue; }
547
- if (!rules) continue;
548
- for (const rule of rules) {
549
- if (rule.constructor.name === 'CSSFontFaceRule' || rule.type === 5) {
550
- const family = rule.style.getPropertyValue('font-family');
551
- const weight = rule.style.getPropertyValue('font-weight');
552
- const style = rule.style.getPropertyValue('font-style');
553
- const display = rule.style.getPropertyValue('font-display');
554
- const src = rule.style.getPropertyValue('src');
555
- const parsedSrcs = [];
556
- const re = /url\\(['"]?([^'")]+)['"]?\\)(?:\\s*format\\(['"]?([^'")]+)['"]?\\))?/g;
557
- let m;
558
- while ((m = re.exec(src)) !== null) {
559
- const abs = (() => { try { return new URL(m[1], location.href).href; } catch { return m[1]; } })();
560
- parsedSrcs.push({ url: abs, format: m[2] || null });
561
- fonts.add(abs);
562
- }
563
- stylesheets.fontFaces.push({
564
- family: family.replace(/^['"]|['"]$/g, ''),
565
- weight, style, display,
566
- sources: parsedSrcs,
567
- });
568
- } else if (rule.constructor.name === 'CSSKeyframesRule' || rule.type === 7) {
569
- const frames = [];
570
- for (const fr of rule.cssRules) frames.push({ keyText: fr.keyText, css: fr.cssText });
571
- stylesheets.keyframes.push({ name: rule.name, frames });
572
- }
573
- }
574
- for (const rule of rules) harvestStateRule(rule, null);
575
- }
576
-
577
- // :root CSS vars
578
- const rootCs = getComputedStyle(document.documentElement);
579
- for (let i = 0; i < rootCs.length; i++) {
580
- const name = rootCs[i];
581
- if (name && name.startsWith('--')) {
582
- stylesheets.cssVars[name] = rootCs.getPropertyValue(name).trim();
583
- }
584
- }
585
-
586
- return {
587
- nodes: out,
588
- assets: { images: Array.from(images), fonts: Array.from(fonts) },
589
- stylesheets,
590
- stateRules,
591
- title: document.title,
592
- html: document.documentElement.outerHTML,
593
- docSize: {
594
- width: document.documentElement.scrollWidth,
595
- height: document.documentElement.scrollHeight,
596
- },
597
- };
598
- })
599
- `;
600
-
601
- // ─── Progressive scroll to trigger lazy loading ─────────────────────
602
- async function scrollToBottom(page) {
603
- await page.evaluate(`(async () => {
604
- await new Promise((resolve) => {
605
- let total = 0;
606
- const step = 400;
607
- const max = Math.max(document.documentElement.scrollHeight, 50000);
608
- const timer = setInterval(() => {
609
- window.scrollBy(0, step);
610
- total += step;
611
- if (total >= document.body.scrollHeight || total >= max) {
612
- clearInterval(timer);
613
- window.scrollTo(0, 0);
614
- setTimeout(resolve, 600);
615
- }
616
- }, 80);
617
- });
618
- })()`);
619
- }
620
-
621
- // Freeze animations to a deterministic frame for stable capture
622
- async function freezeAnimations(page) {
623
- await page.addStyleTag({
624
- content: `
625
- *, *::before, *::after {
626
- animation-duration: 0s !important;
627
- animation-delay: 0s !important;
628
- animation-play-state: paused !important;
629
- transition-duration: 0s !important;
630
- transition-delay: 0s !important;
631
- }
632
- `,
633
- });
634
- }
635
-
636
- // ─── Active interaction sweep ───────────────────────────────────────
637
- // Static CSS harvesting (states.json) only sees declared :hover/:active/[data-state]
638
- // rules. It is blind to JS-set state: a header that gains a class on scroll, a tab
639
- // group that swaps content on click, Framer/GSAP inline-style animations. This sweep
640
- // actually drives the page and diffs computed styles before/after — the #1 accuracy fix.
641
-
642
- // Subset of props worth diffing for scroll/click state changes (kept small on purpose).
643
- const BEHAVIOR_PROPS = [
644
- 'background-color', 'background-image', 'box-shadow', 'backdrop-filter',
645
- 'height', 'min-height', 'padding-top', 'padding-bottom',
646
- 'transform', 'opacity', 'position', 'top',
647
- 'border-bottom-width', 'border-bottom-color', 'color',
648
- ];
649
-
650
- // Pure style differ — exported for testing. Returns { prop: { from, to } } for changed props.
651
- function diffStyles(a, b) {
652
- const out = {};
653
- if (!a || !b) return out;
654
- const keys = new Set([...Object.keys(a), ...Object.keys(b)]);
655
- for (const k of keys) {
656
- const from = a[k] ?? null;
657
- const to = b[k] ?? null;
658
- if (from !== to && (from || to)) out[k] = { from, to };
659
- }
660
- return out;
661
- }
662
-
663
- // In-page: tag sticky/fixed/top-bar elements with a probe attr so we can re-find them.
664
- const TAG_SCROLL_CANDIDATES = `(function () {
665
- const els = Array.from(document.querySelectorAll(
666
- 'header, nav, [class*="header" i], [class*="nav" i], [class*="sticky" i], [class*="fixed" i]'
667
- ));
668
- const out = []; let i = 0;
669
- for (const el of els) {
670
- if (i >= 6) break;
671
- const cs = getComputedStyle(el);
672
- const r = el.getBoundingClientRect();
673
- const sticky = cs.position === 'fixed' || cs.position === 'sticky';
674
- const topBar = r.top >= 0 && r.top < 120 && r.width > window.innerWidth * 0.5;
675
- if (!sticky && !topBar) continue;
676
- if (el.closest('[data-clone-probe]')) continue;
677
- el.setAttribute('data-clone-probe', 'sc' + i);
678
- const cls = (el.getAttribute('class') || '').trim().split(/\\s+/).filter(Boolean)[0] || '';
679
- out.push({ probe: 'sc' + i, tag: el.tagName.toLowerCase(), cls });
680
- i++;
681
- }
682
- return out;
683
- })`;
684
-
685
- const SNAP_PROBES = `(function (props) {
686
- const out = {};
687
- document.querySelectorAll('[data-clone-probe]').forEach((el) => {
688
- const cs = getComputedStyle(el); const o = {};
689
- for (const p of props) { const v = cs.getPropertyValue(p); if (v) o[p] = v.trim(); }
690
- out[el.getAttribute('data-clone-probe')] = o;
691
- });
692
- return out;
693
- })`;
694
-
695
- // In-page: tag tab-like groups (≥2 siblings) so we can click them.
696
- const TAG_TAB_GROUPS = `(function () {
697
- const els = Array.from(document.querySelectorAll(
698
- '[role="tab"], [aria-selected], button[class*="tab" i], li[class*="tab" i], [data-state="active"], [data-state="inactive"]'
699
- ));
700
- const groups = new Map();
701
- for (const el of els) {
702
- const p = el.parentElement; if (!p) continue;
703
- if (!groups.has(p)) groups.set(p, []);
704
- groups.get(p).push(el);
705
- }
706
- const out = []; let g = 0;
707
- for (const [, items] of groups) {
708
- if (g >= 4) break;
709
- if (items.length < 2) continue;
710
- items.forEach((el, idx) => el.setAttribute('data-clone-tab', g + '_' + idx));
711
- out.push({ group: g, count: items.length, labels: items.map((el) => (el.textContent || '').trim().slice(0, 40)).filter(Boolean) });
712
- g++;
713
- }
714
- return out;
715
- })`;
716
-
717
- // Fingerprint the visible text near a tab group, to detect content swaps on click.
718
- const TAB_CONTENT_FP = `(function (g) {
719
- const first = document.querySelector('[data-clone-tab="' + g + '_0"]');
720
- if (!first) return null;
721
- const box = first.closest('section, main, div');
722
- const root = box ? (box.parentElement || box) : document.body;
723
- return (root.innerText || '').replace(/\\s+/g, ' ').trim().slice(0, 4000);
724
- })`;
725
-
726
- // Hover diff props — 색/그림자/변형 등 호버에서 실제로 바뀌는 것들
727
- const HOVER_PROPS = [
728
- 'color', 'background-color', 'border-color', 'box-shadow',
729
- 'transform', 'opacity', 'text-decoration-line', 'filter', 'outline-width',
730
- ];
731
-
732
- // In-view 등장 애니메이션 diff props
733
- const INVIEW_PROPS = ['opacity', 'transform', 'visibility', 'filter', 'clip-path'];
734
-
735
- // In-page: tag hover candidates. 같은 시그니처(tag+첫 클래스)는 1개만 샘플 — nav 링크 30개 → 1개.
736
- const TAG_HOVER_CANDIDATES = `(function () {
737
- const els = Array.from(document.querySelectorAll('a, button, [role="button"], [class*="btn" i], [class*="card" i]'));
738
- const seen = new Set(); const out = []; let i = 0;
739
- for (const el of els) {
740
- if (i >= 30) break;
741
- const r = el.getBoundingClientRect();
742
- if (r.width < 8 || r.height < 8) continue;
743
- const cls = (el.getAttribute('class') || '').trim().split(/\\s+/).filter(Boolean)[0] || '';
744
- const sig = el.tagName + '.' + cls;
745
- if (seen.has(sig)) continue;
746
- seen.add(sig);
747
- el.setAttribute('data-clone-hover', 'h' + i);
748
- out.push({ probe: 'h' + i, tag: el.tagName.toLowerCase(), cls, transition: getComputedStyle(el).transition });
749
- i++;
750
- }
751
- return out;
752
- })`;
753
-
754
- // In-page: snapshot computed props of all elements tagged with an attribute.
755
- const SNAP_ATTR = `(function (attr, props) {
756
- const out = {};
757
- document.querySelectorAll('[' + attr + ']').forEach((el) => {
758
- const cs = getComputedStyle(el); const o = {};
759
- for (const p of props) { const v = cs.getPropertyValue(p); if (v) o[p] = v.trim(); }
760
- out[el.getAttribute(attr)] = o;
761
- });
762
- return out;
763
- })`;
764
-
765
- // In-page: tag below-the-fold elements that look "waiting to animate" (opacity 0 / transform offset).
766
- const TAG_INVIEW = `(function () {
767
- const innerH = window.innerHeight;
768
- const all = Array.from(document.querySelectorAll('body *')).slice(0, 3000);
769
- const out = []; let i = 0;
770
- for (const el of all) {
771
- if (i >= 20) break;
772
- const r = el.getBoundingClientRect();
773
- if (r.width < 40 || r.height < 40) continue;
774
- if (r.top < innerH) continue;
775
- const cs = getComputedStyle(el);
776
- const hidden = parseFloat(cs.opacity) < 0.05;
777
- const shifted = cs.transform && cs.transform !== 'none';
778
- if (!hidden && !shifted) continue;
779
- if (el.parentElement && el.parentElement.closest('[data-clone-inview]')) continue;
780
- el.setAttribute('data-clone-inview', 'v' + i);
781
- const cls = (el.getAttribute('class') || '').trim().split(/\\s+/).filter(Boolean)[0] || '';
782
- out.push({ probe: 'v' + i, tag: el.tagName.toLowerCase(), cls, top: Math.round(r.top + window.scrollY) });
783
- i++;
784
- }
785
- return out;
786
- })`;
787
-
788
- // In-page: observe class/style mutations for N ms with no input → time-driven candidates (carousels, cycling).
789
- const OBSERVE_MUTATIONS = `(function (ms) {
790
- return new Promise((resolve) => {
791
- const counts = new Map();
792
- const obs = new MutationObserver((muts) => {
793
- for (const m of muts) {
794
- const el = m.target;
795
- if (!el || !el.tagName || el === document.body || el === document.documentElement) continue;
796
- const tag = el.tagName.toLowerCase();
797
- const cls = ((el.getAttribute && el.getAttribute('class')) || '').trim().split(/\\s+/).filter(Boolean)[0] || '';
798
- const key = tag + (cls ? '.' + cls : '');
799
- const e = counts.get(key) || { tag, cls, mutations: 0, kinds: new Set() };
800
- e.mutations++; e.kinds.add(m.type === 'attributes' ? m.attributeName : m.type);
801
- counts.set(key, e);
802
- }
803
- });
804
- obs.observe(document.body, { subtree: true, attributes: true, attributeFilter: ['class', 'style'], childList: true });
805
- setTimeout(() => {
806
- obs.disconnect();
807
- resolve(Array.from(counts.entries())
808
- .map(([label, e]) => ({ label, tag: e.tag, cls: e.cls, mutations: e.mutations, kinds: Array.from(e.kinds) }))
809
- .sort((a, b) => b.mutations - a.mutations)
810
- .slice(0, 10));
811
- }, ms);
812
- });
813
- })`;
814
-
815
- // In-page: smooth-scroll library detection (Lenis, Locomotive). 네이티브와 체감이 확연히 달라 놓치면 바로 티가 난다.
816
- const DETECT_SCROLL_LIB = `(function () {
817
- const checks = [
818
- ['lenis', 'html.lenis, .lenis, [data-lenis]'],
819
- ['locomotive-scroll', '.locomotive-scroll, [data-scroll-container]'],
820
- ];
821
- for (const [name, sel] of checks) {
822
- if (document.querySelector(sel)) return { name, evidence: sel };
823
- }
824
- if (window.Lenis) return { name: 'lenis', evidence: 'window.Lenis' };
825
- if (window.LocomotiveScroll || window.locomotive) return { name: 'locomotive-scroll', evidence: 'window.LocomotiveScroll' };
826
- return null;
827
- })`;
828
-
829
- const wait = (ms) => new Promise((r) => setTimeout(r, ms));
830
-
831
- // ── Scroll-triggered state (header/nav shrink, background, shadow on scroll) ──
832
- async function sweepScrollState(page) {
833
- const out = [];
834
- const candidates = await page.evaluate(`(${TAG_SCROLL_CANDIDATES})()`);
835
- if (!candidates.length) return out;
836
- const before = await page.evaluate(`(${SNAP_PROBES})(${JSON.stringify(BEHAVIOR_PROPS)})`);
837
- const innerH = await page.evaluate('window.innerHeight');
838
- const triggerY = Math.min(700, Math.max(200, Math.round(innerH * 0.9)));
839
- await page.evaluate(`window.scrollTo(0, ${triggerY})`);
840
- await wait(500);
841
- const after = await page.evaluate(`(${SNAP_PROBES})(${JSON.stringify(BEHAVIOR_PROPS)})`);
842
- await page.evaluate('window.scrollTo(0, 0)');
843
- await wait(300);
844
- for (const c of candidates) {
845
- const changed = diffStyles(before[c.probe], after[c.probe]);
846
- if (Object.keys(changed).length) {
847
- out.push({
848
- label: c.cls ? `${c.tag}.${c.cls}` : c.tag,
849
- tag: c.tag, cls: c.cls, triggerScrollY: triggerY, changed,
850
- });
851
- }
852
- }
853
- return out;
854
- }
855
-
856
- // ── Click-driven tab groups (content swap detection) ──
857
- async function sweepTabGroups(page) {
858
- const out = [];
859
- const groups = await page.evaluate(`(${TAG_TAB_GROUPS})()`);
860
- for (const grp of groups) {
861
- try {
862
- const beforeFp = await page.evaluate(`(${TAB_CONTENT_FP})(${grp.group})`);
863
- const clicked = await page.evaluate(
864
- `(function (g) { const t = document.querySelector('[data-clone-tab="' + g + '_1"]'); if (!t) return false; t.click(); return true; })(${grp.group})`
865
- );
866
- if (!clicked) continue;
867
- await wait(450);
868
- const afterFp = await page.evaluate(`(${TAB_CONTENT_FP})(${grp.group})`);
869
- // restore default state
870
- await page.evaluate(
871
- `(function (g) { const t = document.querySelector('[data-clone-tab="' + g + '_0"]'); if (t) t.click(); })(${grp.group})`
872
- );
873
- await wait(200);
874
- out.push({
875
- kind: 'tab-group',
876
- count: grp.count,
877
- tabLabels: grp.labels,
878
- contentSwapsOnClick: beforeFp != null && afterFp != null && beforeFp !== afterFp,
879
- });
880
- } catch { /* one bad group must not abort the whole sweep */ }
881
- }
882
- return out;
883
- }
884
-
885
- // ── Hover states set by JS (static :hover rules already land in states.json) ──
886
- async function sweepHover(page) {
887
- const out = [];
888
- const candidates = await page.evaluate(`(${TAG_HOVER_CANDIDATES})()`);
889
- for (const c of candidates) {
890
- try {
891
- const sel = `[data-clone-hover="${c.probe}"]`;
892
- await page.evaluate(`document.querySelector('${sel}')?.scrollIntoView({ block: 'center' })`);
893
- await wait(150);
894
- const snap = `(${SNAP_ATTR})('data-clone-hover', ${JSON.stringify(HOVER_PROPS)})`;
895
- const before = (await page.evaluate(snap))[c.probe];
896
- await page.hover(sel);
897
- await wait(350);
898
- const after = (await page.evaluate(snap))[c.probe];
899
- await page.mouse.move(0, 0);
900
- await wait(150);
901
- const changed = diffStyles(before, after);
902
- if (Object.keys(changed).length) {
903
- out.push({
904
- label: c.cls ? `${c.tag}.${c.cls}` : c.tag,
905
- tag: c.tag, cls: c.cls, transition: c.transition, changed,
906
- });
907
- }
908
- } catch { /* fail-open: 요소 하나가 스윕 전체를 죽이면 안 된다 */ }
909
- }
910
- await page.evaluate('window.scrollTo(0, 0)');
911
- await wait(200);
912
- return out;
913
- }
914
-
915
- // ── In-view entrance animations (fade-up, slide-in) ──
916
- // 1회성 등장 애니메이션은 lazy-load 스크롤에서 이미 발화했으므로 페이지를 새로 로드해 관찰한다.
917
- async function sweepInView(page) {
918
- const out = [];
919
- await page.goto(page.url(), { waitUntil: 'networkidle2', timeout: 90000 });
920
- await wait(800);
921
- const candidates = await page.evaluate(`(${TAG_INVIEW})()`);
922
- if (!candidates.length) return out;
923
- const snap = `(${SNAP_ATTR})('data-clone-inview', ${JSON.stringify(INVIEW_PROPS)})`;
924
- const before = await page.evaluate(snap);
925
- for (const c of candidates) {
926
- try {
927
- await page.evaluate(`document.querySelector('[data-clone-inview="${c.probe}"]')?.scrollIntoView({ block: 'center' })`);
928
- await wait(600);
929
- } catch { /* fail-open */ }
930
- }
931
- const after = await page.evaluate(snap);
932
- await page.evaluate('window.scrollTo(0, 0)');
933
- await wait(300);
934
- for (const c of candidates) {
935
- const changed = diffStyles(before[c.probe], after[c.probe]);
936
- if (Object.keys(changed).length) {
937
- out.push({
938
- label: c.cls ? `${c.tag}.${c.cls}` : c.tag,
939
- tag: c.tag, cls: c.cls, triggerY: c.top, changed,
940
- });
941
- }
942
- }
943
- await page.evaluate('document.querySelectorAll("[data-clone-inview]").forEach((e) => e.removeAttribute("data-clone-inview"))');
944
- return out;
945
- }
946
-
947
- async function runInteractionSweep(page) {
948
- const behaviors = { scroll: [], interactive: [], hover: [], inview: [], timeDriven: [], scrollLib: null };
949
-
950
- behaviors.scroll = await sweepScrollState(page);
951
- behaviors.interactive = await sweepTabGroups(page);
952
- behaviors.hover = await sweepHover(page);
953
- // 무입력 3초 관찰 — 캐러셀/자동 사이클 후보
954
- try { behaviors.timeDriven = await page.evaluate(`(${OBSERVE_MUTATIONS})(3000)`); } catch { /* fail-open */ }
955
- try { behaviors.scrollLib = await page.evaluate(`(${DETECT_SCROLL_LIB})()`); } catch { /* fail-open */ }
956
-
957
- // Clean up probe attributes BEFORE static extraction so they don't pollute output.
958
- await page.evaluate(
959
- 'document.querySelectorAll("[data-clone-probe],[data-clone-tab],[data-clone-hover]").forEach((e) => { e.removeAttribute("data-clone-probe"); e.removeAttribute("data-clone-tab"); e.removeAttribute("data-clone-hover"); })'
960
- );
961
-
962
- // 마지막: in-view 스윕은 리로드를 동반하므로 다른 스윕 뒤에 실행한다.
963
- behaviors.inview = await sweepInView(page);
964
- // 리로드로 lazy-load 상태가 초기화됐으니 정적 추출 전에 복원한다.
965
- await scrollToBottom(page);
966
- return behaviors;
967
- }
968
-
969
- // In-page: favicon / OG image / webmanifest URLs (Foundation 단계 — public/seo/ 배선용)
970
- const SEO_EXTRACT = `(function () {
971
- const abs = (u) => { try { return new URL(u, location.href).href; } catch { return null; } };
972
- const icons = Array.from(document.querySelectorAll(
973
- 'link[rel*="icon" i], link[rel="apple-touch-icon"], link[rel="manifest"]'
974
- )).map((l) => abs(l.getAttribute('href'))).filter(Boolean);
975
- const og = Array.from(document.querySelectorAll(
976
- 'meta[property="og:image"], meta[name="twitter:image"]'
977
- )).map((m) => abs(m.getAttribute('content'))).filter(Boolean);
978
- return Array.from(new Set(icons.concat(og)));
979
- })`;
980
-
981
- const SUB_LINK_EXTRACT = `(function () {
982
- const links = Array.from(document.querySelectorAll('a[href]')).map((a) => ({
983
- href: a.getAttribute('href'),
984
- text: (a.innerText || a.textContent || '').replace(/\\s+/g, ' ').trim(),
985
- }));
986
- return { links };
987
- })`;
988
-
989
- // HTML sanitization: strip scripts/analytics before saving
990
- function sanitizeHtml(html) {
991
- return html
992
- .replace(/<script\b[^>]*>[\s\S]*?<\/script>/gi, '')
993
- .replace(/<noscript\b[^>]*>[\s\S]*?<\/noscript>/gi, '')
994
- .replace(/\son[a-z]+="[^"]*"/gi, '')
995
- .replace(/\son[a-z]+='[^']*'/gi, '');
996
- }
997
-
998
- async function newClonePage(browser) {
999
- const page = await browser.newPage();
1000
- await page.setViewport({ width: 1440, height: 900, deviceScaleFactor: 1 });
1001
- await page.setUserAgent(
1002
- 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 ' +
1003
- '(KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
1004
- );
1005
- await page.setCacheEnabled(false);
1006
- return page;
1007
- }
1008
-
1009
- async function discoverSubUrls({ url, opts }) {
1010
- if (!url) throw new Error('URL is required');
1011
- if (!opts.out) throw new Error('--out=<file> is required');
1012
-
1013
- if (!opts.ignoreRobots) {
1014
- const blocked = await checkRobots(url);
1015
- if (blocked) {
1016
- throw new Error(
1017
- `robots.txt disallows ${url}. Pass --ignore-robots only with the site owner's permission.`,
1018
- );
1019
- }
1020
- }
1021
-
1022
- const puppeteer = await loadPuppeteer();
1023
- const browser = await puppeteer.launch({
1024
- headless: 'new',
1025
- args: ['--no-sandbox', '--disable-setuid-sandbox', '--disable-dev-shm-usage'],
1026
- });
1027
-
1028
- try {
1029
- const page = await newClonePage(browser);
1030
- await page.goto(url, { waitUntil: 'networkidle2', timeout: 90000 });
1031
- await wait(800);
1032
-
1033
- let source = 'menu';
1034
- let sourceUrl = url;
1035
- let { links } = await page.evaluate(`(${SUB_LINK_EXTRACT})()`);
1036
- const sitemapUrl = findSitemapUrl(url, links);
1037
- if (sitemapUrl) {
1038
- await page.goto(sitemapUrl, { waitUntil: 'networkidle2', timeout: 90000 });
1039
- await wait(800);
1040
- source = 'sitemap';
1041
- sourceUrl = sitemapUrl;
1042
- ({ links } = await page.evaluate(`(${SUB_LINK_EXTRACT})()`));
1043
- }
1044
-
1045
- const urls = collectSubUrls(url, links);
1046
- fs.mkdirSync(path.dirname(opts.out), { recursive: true });
1047
- fs.writeFileSync(
1048
- opts.out,
1049
- JSON.stringify({ meta: { url, source, sourceUrl, count: urls.length }, urls }, null, 2),
1050
- );
1051
- process.stdout.write(`[clone-extract] suburls ${urls.length} → ${opts.out}\n`);
1052
- } finally {
1053
- await browser.close();
1054
- }
1055
- }
1056
-
1057
- // ─── Main capture flow ──────────────────────────────────────────────
1058
- async function capture({ url, opts }) {
1059
- if (!url) throw new Error('URL is required');
1060
- if (!opts.out) throw new Error('--out=<dir> is required');
1061
- if (!opts.viewport) throw new Error('--viewport=WxH is required');
1062
-
1063
- const viewport = parseViewport(opts.viewport);
1064
-
1065
- if (!opts.ignoreRobots) {
1066
- const blocked = await checkRobots(url);
1067
- if (blocked) {
1068
- throw new Error(
1069
- `robots.txt disallows ${url}. Pass --ignore-robots only with the site owner's permission.`,
1070
- );
1071
- }
1072
- }
1073
-
1074
- fs.mkdirSync(opts.out, { recursive: true });
1075
- const assetsDir = path.join(opts.out, 'assets');
1076
- const imagesDir = path.join(assetsDir, 'images');
1077
- const fontsDir = path.join(assetsDir, 'fonts');
1078
- const seoDir = path.join(assetsDir, 'seo');
1079
- fs.mkdirSync(imagesDir, { recursive: true });
1080
- fs.mkdirSync(fontsDir, { recursive: true });
1081
- fs.mkdirSync(seoDir, { recursive: true });
1082
-
1083
- console.log(`[clone-extract] ${opts.bp || ''} ${viewport.width}x${viewport.height}@${viewport.deviceScaleFactor} ${url}`);
1084
-
1085
- const puppeteer = await loadPuppeteer();
1086
- const browser = await puppeteer.launch({
1087
- headless: 'new',
1088
- args: [
1089
- '--no-sandbox',
1090
- '--disable-setuid-sandbox',
1091
- '--disable-dev-shm-usage',
1092
- '--font-render-hinting=none',
1093
- ],
1094
- });
1095
-
1096
- try {
1097
- const page = await newClonePage(browser);
1098
- await page.setViewport(viewport);
1099
-
1100
- await page.goto(url, { waitUntil: 'networkidle2', timeout: 90000 });
1101
- await scrollToBottom(page);
1102
- if (opts.wait) await new Promise((r) => setTimeout(r, opts.wait));
1103
- else await new Promise((r) => setTimeout(r, 1200));
1104
-
1105
- // Active interaction sweep (before freezing — it observes real transitions/JS state).
1106
- let behaviors = null;
1107
- if (opts.interact) {
1108
- try {
1109
- behaviors = await runInteractionSweep(page);
1110
- console.log(
1111
- `[clone-extract] interaction sweep: ${behaviors.scroll.length} scroll-state, ` +
1112
- `${behaviors.interactive.length} tab-group(s), ${behaviors.hover.length} hover, ` +
1113
- `${behaviors.inview.length} in-view, ${behaviors.timeDriven.length} time-driven` +
1114
- `${behaviors.scrollLib ? `, scroll-lib: ${behaviors.scrollLib.name}` : ''}`
1115
- );
1116
- } catch (e) {
1117
- console.log(`[clone-extract] interaction sweep skipped: ${e.message}`);
1118
- }
1119
- }
1120
-
1121
- await freezeAnimations(page);
1122
-
1123
- // PAGE_EXTRACT is a parenthesized function-expression string. page.evaluate treats a
1124
- // string arg as an expression and ignores extra args, so build the call ourselves.
1125
- const extracted = await page.evaluate(`(${PAGE_EXTRACT})(${JSON.stringify(CSS_PROPS)})`);
1126
-
1127
- // Screenshot AFTER freezing animations
1128
- const shotPath = path.join(opts.out, 'screenshot.png');
1129
- await page.screenshot({ path: shotPath, fullPage: true });
1130
-
1131
- // Pick best font per (family+weight+style): prefer woff2 > woff > ttf > otf
1132
- const fontPriority = (fmt) => ({ woff2: 0, woff: 1, ttf: 2, otf: 3 }[fmt] ?? 9);
1133
- const bestFontUrls = new Set();
1134
- for (const ff of extracted.stylesheets.fontFaces) {
1135
- const sorted = [...ff.sources].sort((a, b) => fontPriority(a.format) - fontPriority(b.format));
1136
- if (sorted[0]) bestFontUrls.add(sorted[0].url);
1137
- }
1138
- // Also keep all referenced fonts (don't drop fallbacks completely — keep top 2 per face)
1139
- const fontDownloadSet = new Set(bestFontUrls);
1140
- for (const ff of extracted.stylesheets.fontFaces) {
1141
- const sorted = [...ff.sources].sort((a, b) => fontPriority(a.format) - fontPriority(b.format));
1142
- if (sorted[1]) fontDownloadSet.add(sorted[1].url);
1143
- }
1144
-
1145
- // Favicon / OG / webmanifest — Foundation 단계에서 public/seo/ 로 배선한다
1146
- let seoUrls = [];
1147
- try { seoUrls = await page.evaluate(`(${SEO_EXTRACT})()`); } catch { /* fail-open */ }
1148
-
1149
- console.log(`[clone-extract] downloading ${extracted.assets.images.length} images, ${fontDownloadSet.size} fonts (filtered from ${extracted.assets.fonts.length}), ${seoUrls.length} seo assets`);
1150
- const imageMap = await downloadAssets(extracted.assets.images, imagesDir, 8);
1151
- const fontMap = await downloadAssets(Array.from(fontDownloadSet), fontsDir, 4);
1152
- const seoMap = await downloadAssets(seoUrls, seoDir, 4);
1153
-
1154
- const assetMap = {};
1155
- for (const [u, info] of Object.entries(imageMap)) {
1156
- assetMap[u] = info.status === 'ok'
1157
- ? { local: `assets/images/${info.local}`, status: 'ok', bytes: info.bytes, kind: 'image' }
1158
- : { ...info, kind: 'image' };
1159
- }
1160
- for (const [u, info] of Object.entries(fontMap)) {
1161
- assetMap[u] = info.status === 'ok'
1162
- ? { local: `assets/fonts/${info.local}`, status: 'ok', bytes: info.bytes, kind: 'font' }
1163
- : { ...info, kind: 'font' };
1164
- }
1165
- for (const [u, info] of Object.entries(seoMap)) {
1166
- assetMap[u] = info.status === 'ok'
1167
- ? { local: `assets/seo/${info.local}`, status: 'ok', bytes: info.bytes, kind: 'seo' }
1168
- : { ...info, kind: 'seo' };
1169
- }
1170
-
1171
- // Rewrite HTML — replace remote URLs with local paths
1172
- let html = sanitizeHtml(extracted.html);
1173
- const sortedUrls = Object.keys(assetMap).sort((a, b) => b.length - a.length);
1174
- for (const u of sortedUrls) {
1175
- const info = assetMap[u];
1176
- if (info.status !== 'ok') continue;
1177
- const escaped = u.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
1178
- html = html.replace(new RegExp(escaped, 'g'), info.local);
1179
- }
1180
-
1181
- // Rewrite computed CSS values (background-image, mask-image) per node
1182
- const rewriteCssValue = (val) => {
1183
- if (!val || typeof val !== 'string') return val;
1184
- let out = val;
1185
- for (const u of sortedUrls) {
1186
- const info = assetMap[u];
1187
- if (info.status !== 'ok') continue;
1188
- if (out.includes(u)) out = out.split(u).join(info.local);
1189
- }
1190
- return out;
1191
- };
1192
- for (const node of extracted.nodes) {
1193
- if (!node.css) continue;
1194
- for (const prop of ['background-image', 'mask-image', 'content', 'border-image']) {
1195
- if (node.css[prop]) node.css[prop] = rewriteCssValue(node.css[prop]);
1196
- }
1197
- }
1198
-
1199
- // Rewrite @font-face srcs in stylesheets.fontFaces
1200
- for (const ff of extracted.stylesheets.fontFaces) {
1201
- ff.sources = ff.sources.map((s) => {
1202
- const info = assetMap[s.url];
1203
- return info && info.status === 'ok'
1204
- ? { ...s, url: info.local, original: s.url }
1205
- : s;
1206
- });
1207
- }
1208
-
1209
- // Rewrite remote asset URLs inside harvested state rules (e.g. :hover background-image)
1210
- for (const sr of extracted.stateRules) {
1211
- if (!sr.css) continue;
1212
- for (const prop of ['background-image', 'mask-image', 'border-image']) {
1213
- if (sr.css[prop]) sr.css[prop] = rewriteCssValue(sr.css[prop]);
1214
- }
1215
- }
1216
-
1217
- // Write outputs
1218
- fs.writeFileSync(path.join(opts.out, 'rendered.html'), html);
1219
- fs.writeFileSync(
1220
- path.join(opts.out, 'computed.json'),
1221
- JSON.stringify({
1222
- meta: {
1223
- url,
1224
- viewport,
1225
- bp: opts.bp || null,
1226
- title: extracted.title,
1227
- docSize: extracted.docSize,
1228
- capturedAt: new Date().toISOString(),
1229
- },
1230
- nodes: extracted.nodes,
1231
- }),
1232
- );
1233
- fs.writeFileSync(
1234
- path.join(opts.out, 'stylesheets.json'),
1235
- JSON.stringify(extracted.stylesheets, null, 2),
1236
- );
1237
- fs.writeFileSync(
1238
- path.join(opts.out, 'states.json'),
1239
- JSON.stringify({
1240
- meta: { url, bp: opts.bp || null, capturedAt: new Date().toISOString() },
1241
- stateRules: extracted.stateRules,
1242
- }, null, 2),
1243
- );
1244
- fs.writeFileSync(path.join(opts.out, 'asset-map.json'), JSON.stringify(assetMap, null, 2));
1245
- if (behaviors) {
1246
- // Rewrite any remote asset URLs captured in behavior diffs (scroll/hover/inview).
1247
- const diffed = [...behaviors.scroll, ...(behaviors.hover || []), ...(behaviors.inview || [])];
1248
- for (const s of diffed) {
1249
- for (const ch of Object.values(s.changed)) {
1250
- if (typeof ch.from === 'string') ch.from = rewriteCssValue(ch.from);
1251
- if (typeof ch.to === 'string') ch.to = rewriteCssValue(ch.to);
1252
- }
1253
- }
1254
- fs.writeFileSync(
1255
- path.join(opts.out, 'behaviors.json'),
1256
- JSON.stringify({
1257
- meta: { url, bp: opts.bp || null, capturedAt: new Date().toISOString() },
1258
- ...behaviors,
1259
- }, null, 2),
1260
- );
1261
- }
1262
-
1263
- const okCount = Object.values(assetMap).filter((a) => a.status === 'ok').length;
1264
- console.log(`[clone-extract] done → ${opts.out}`);
1265
- console.log(` nodes: ${extracted.nodes.length}, fontFaces: ${extracted.stylesheets.fontFaces.length}, stateRules: ${extracted.stateRules.length}`);
1266
- console.log(` assets: ${okCount}/${Object.keys(assetMap).length} downloaded`);
1267
- } finally {
1268
- await browser.close();
1269
- }
1270
- }
1271
-
1272
- // ─── Entry ──────────────────────────────────────────────────────────
1273
- const isMain = process.argv[1] && process.argv[1].replace(/\\/g, '/').endsWith('clone-extract.js');
1274
- if (isMain) {
1275
- const { cmd, url, opts } = parseArgs(process.argv);
1276
-
1277
- if (cmd !== 'capture' && cmd !== 'suburls') {
1278
- console.error('Usage: node clone-extract.js capture <URL> --out=<dir> --viewport=WxH[@DPR] --bp=mo|pc [--stealth] [--ignore-robots] [--no-interact] [--wait=ms]');
1279
- console.error(' node clone-extract.js suburls <URL> --out=<file> [--ignore-robots]');
1280
- process.exit(1);
1281
- }
1282
-
1283
- const run = cmd === 'suburls' ? discoverSubUrls : capture;
1284
- run({ url, opts }).catch((err) => {
1285
- console.error(`[clone-extract] FAIL: ${err.message}`);
1286
- if (process.env.DEBUG) console.error(err.stack);
1287
- process.exit(1);
1288
- });
1289
- }
1290
-
1291
- // 순수 함수만 노출한다 — 브라우저 기동 없이 단독 검증 가능한 경로
1292
- // (REQ-audit-p2-remediation-009). capture/discoverSubUrls 등 puppeteer 의존
1293
- // 경로는 여기서 다루지 않는다.
1294
- export {
1295
- collectSubUrls,
1296
- diffStyles,
1297
- parseArgs,
1298
- parseViewport,
1299
- localePrefixOf,
1300
- normalizeSubUrl,
1301
- isSameMenuScope,
1302
- isExcludedSubLink,
1303
- findSitemapUrl,
1304
- uniqueFilename,
1305
- sanitizeHtml,
1306
- };