@su-record/vibe 3.2.13 → 3.2.15

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 (305) hide show
  1. package/CLAUDE.md +15 -14
  2. package/README.en.md +1 -1
  3. package/README.md +1 -1
  4. package/dist/cli/setup/ProjectSetup.d.ts +6 -0
  5. package/dist/cli/setup/ProjectSetup.d.ts.map +1 -1
  6. package/dist/cli/setup/ProjectSetup.js +19 -13
  7. package/dist/cli/setup/ProjectSetup.js.map +1 -1
  8. package/dist/infra/lib/codex-proxy.d.ts +126 -0
  9. package/dist/infra/lib/codex-proxy.d.ts.map +1 -1
  10. package/dist/infra/lib/codex-proxy.js +16 -16
  11. package/dist/infra/lib/codex-proxy.js.map +1 -1
  12. package/dist/infra/lib/figma/audit.d.ts.map +1 -1
  13. package/dist/infra/lib/figma/audit.js +0 -2
  14. package/dist/infra/lib/figma/audit.js.map +1 -1
  15. package/dist/infra/lib/figma/extract.d.ts +6 -1
  16. package/dist/infra/lib/figma/extract.d.ts.map +1 -1
  17. package/dist/infra/lib/figma/extract.js +17 -15
  18. package/dist/infra/lib/figma/extract.js.map +1 -1
  19. package/dist/infra/lib/figma/types.d.ts +103 -0
  20. package/dist/infra/lib/figma/types.d.ts.map +1 -1
  21. package/dist/infra/lib/figma/types.js +8 -0
  22. package/dist/infra/lib/figma/types.js.map +1 -1
  23. package/hooks/hooks.json +1 -1
  24. package/hooks/scripts/clone-extract.js +16 -1
  25. package/hooks/scripts/code-check.js +72 -55
  26. package/hooks/scripts/lib/anchor.js +74 -0
  27. package/hooks/scripts/lib/console-allow.js +66 -0
  28. package/hooks/scripts/lib/dispatcher.js +71 -19
  29. package/hooks/scripts/lib/inbox.js +60 -0
  30. package/hooks/scripts/loop-ledger.js +24 -1
  31. package/hooks/scripts/post-edit-dispatcher.js +4 -3
  32. package/hooks/scripts/post-edit.js +2 -2
  33. package/package.json +13 -9
  34. package/skills/vibe/SKILL.md +2 -1
  35. package/skills/vibe.clone/references/verification-loops.md +6 -3
  36. package/skills/vibe.loop/SKILL.md +7 -4
  37. package/skills/vibe.review/SKILL.md +5 -1
  38. package/skills/vibe.run/references/e2e-and-autofix.md +1 -1
  39. package/skills/vibe.run/references/process-steps.md +1 -1
  40. package/vibe/constitution.md +1 -1
  41. package/vibe/rules/loop-contract.md +40 -3
  42. package/vibe/rules/quality/checklist.md +3 -3
  43. package/vibe/templates/constitution-template.md +1 -1
  44. package/dist/__tests__/agent-model-sync.test.d.ts +0 -2
  45. package/dist/__tests__/agent-model-sync.test.d.ts.map +0 -1
  46. package/dist/__tests__/agent-model-sync.test.js +0 -71
  47. package/dist/__tests__/agent-model-sync.test.js.map +0 -1
  48. package/dist/__tests__/architecture.test.d.ts +0 -2
  49. package/dist/__tests__/architecture.test.d.ts.map +0 -1
  50. package/dist/__tests__/architecture.test.js +0 -207
  51. package/dist/__tests__/architecture.test.js.map +0 -1
  52. package/dist/__tests__/skill-namespace.test.d.ts +0 -2
  53. package/dist/__tests__/skill-namespace.test.d.ts.map +0 -1
  54. package/dist/__tests__/skill-namespace.test.js +0 -60
  55. package/dist/__tests__/skill-namespace.test.js.map +0 -1
  56. package/dist/__tests__/stakes-contract.test.d.ts +0 -2
  57. package/dist/__tests__/stakes-contract.test.d.ts.map +0 -1
  58. package/dist/__tests__/stakes-contract.test.js +0 -166
  59. package/dist/__tests__/stakes-contract.test.js.map +0 -1
  60. package/dist/__tests__/stuck-semantics.test.d.ts +0 -2
  61. package/dist/__tests__/stuck-semantics.test.d.ts.map +0 -1
  62. package/dist/__tests__/stuck-semantics.test.js +0 -109
  63. package/dist/__tests__/stuck-semantics.test.js.map +0 -1
  64. package/dist/__tests__/wiring-integrity.test.d.ts +0 -2
  65. package/dist/__tests__/wiring-integrity.test.d.ts.map +0 -1
  66. package/dist/__tests__/wiring-integrity.test.js +0 -160
  67. package/dist/__tests__/wiring-integrity.test.js.map +0 -1
  68. package/dist/cli/commands/info.test.d.ts +0 -2
  69. package/dist/cli/commands/info.test.d.ts.map +0 -1
  70. package/dist/cli/commands/info.test.js +0 -74
  71. package/dist/cli/commands/info.test.js.map +0 -1
  72. package/dist/cli/commands/upgrade.test.d.ts +0 -2
  73. package/dist/cli/commands/upgrade.test.d.ts.map +0 -1
  74. package/dist/cli/commands/upgrade.test.js +0 -99
  75. package/dist/cli/commands/upgrade.test.js.map +0 -1
  76. package/dist/cli/design/design-md-parser.test.d.ts +0 -2
  77. package/dist/cli/design/design-md-parser.test.d.ts.map +0 -1
  78. package/dist/cli/design/design-md-parser.test.js +0 -149
  79. package/dist/cli/design/design-md-parser.test.js.map +0 -1
  80. package/dist/cli/detect.characterization.test.d.ts +0 -7
  81. package/dist/cli/detect.characterization.test.d.ts.map +0 -1
  82. package/dist/cli/detect.characterization.test.js +0 -294
  83. package/dist/cli/detect.characterization.test.js.map +0 -1
  84. package/dist/cli/postinstall/fs-utils.test.d.ts +0 -2
  85. package/dist/cli/postinstall/fs-utils.test.d.ts.map +0 -1
  86. package/dist/cli/postinstall/fs-utils.test.js +0 -259
  87. package/dist/cli/postinstall/fs-utils.test.js.map +0 -1
  88. package/dist/cli/setup/CodexHooks.test.d.ts +0 -2
  89. package/dist/cli/setup/CodexHooks.test.d.ts.map +0 -1
  90. package/dist/cli/setup/CodexHooks.test.js +0 -52
  91. package/dist/cli/setup/CodexHooks.test.js.map +0 -1
  92. package/dist/cli/setup/GlobalInstaller.test.d.ts +0 -2
  93. package/dist/cli/setup/GlobalInstaller.test.d.ts.map +0 -1
  94. package/dist/cli/setup/GlobalInstaller.test.js +0 -16
  95. package/dist/cli/setup/GlobalInstaller.test.js.map +0 -1
  96. package/dist/cli/utils/cli-detector.test.d.ts +0 -2
  97. package/dist/cli/utils/cli-detector.test.d.ts.map +0 -1
  98. package/dist/cli/utils/cli-detector.test.js +0 -52
  99. package/dist/cli/utils/cli-detector.test.js.map +0 -1
  100. package/dist/infra/lib/SkillFrontmatter.test.d.ts +0 -2
  101. package/dist/infra/lib/SkillFrontmatter.test.d.ts.map +0 -1
  102. package/dist/infra/lib/SkillFrontmatter.test.js +0 -60
  103. package/dist/infra/lib/SkillFrontmatter.test.js.map +0 -1
  104. package/dist/infra/lib/__tests__/AutomationLevel.test.d.ts +0 -2
  105. package/dist/infra/lib/__tests__/AutomationLevel.test.d.ts.map +0 -1
  106. package/dist/infra/lib/__tests__/AutomationLevel.test.js +0 -297
  107. package/dist/infra/lib/__tests__/AutomationLevel.test.js.map +0 -1
  108. package/dist/infra/lib/__tests__/ComponentRegistry.test.d.ts +0 -2
  109. package/dist/infra/lib/__tests__/ComponentRegistry.test.d.ts.map +0 -1
  110. package/dist/infra/lib/__tests__/ComponentRegistry.test.js +0 -99
  111. package/dist/infra/lib/__tests__/ComponentRegistry.test.js.map +0 -1
  112. package/dist/infra/lib/__tests__/DecisionTracer.test.d.ts +0 -2
  113. package/dist/infra/lib/__tests__/DecisionTracer.test.d.ts.map +0 -1
  114. package/dist/infra/lib/__tests__/DecisionTracer.test.js +0 -274
  115. package/dist/infra/lib/__tests__/DecisionTracer.test.js.map +0 -1
  116. package/dist/infra/lib/__tests__/InteractiveCheckpoint.test.d.ts +0 -2
  117. package/dist/infra/lib/__tests__/InteractiveCheckpoint.test.d.ts.map +0 -1
  118. package/dist/infra/lib/__tests__/InteractiveCheckpoint.test.js +0 -350
  119. package/dist/infra/lib/__tests__/InteractiveCheckpoint.test.js.map +0 -1
  120. package/dist/infra/lib/__tests__/LoopBreaker.test.d.ts +0 -2
  121. package/dist/infra/lib/__tests__/LoopBreaker.test.d.ts.map +0 -1
  122. package/dist/infra/lib/__tests__/LoopBreaker.test.js +0 -340
  123. package/dist/infra/lib/__tests__/LoopBreaker.test.js.map +0 -1
  124. package/dist/infra/lib/__tests__/VerificationLoop.test.d.ts +0 -2
  125. package/dist/infra/lib/__tests__/VerificationLoop.test.d.ts.map +0 -1
  126. package/dist/infra/lib/__tests__/VerificationLoop.test.js +0 -486
  127. package/dist/infra/lib/__tests__/VerificationLoop.test.js.map +0 -1
  128. package/dist/infra/lib/config/GlobalConfigManager.test.d.ts +0 -2
  129. package/dist/infra/lib/config/GlobalConfigManager.test.d.ts.map +0 -1
  130. package/dist/infra/lib/config/GlobalConfigManager.test.js +0 -9
  131. package/dist/infra/lib/config/GlobalConfigManager.test.js.map +0 -1
  132. package/dist/infra/lib/embedding/__tests__/EmbeddingProvider.test.d.ts +0 -2
  133. package/dist/infra/lib/embedding/__tests__/EmbeddingProvider.test.d.ts.map +0 -1
  134. package/dist/infra/lib/embedding/__tests__/EmbeddingProvider.test.js +0 -43
  135. package/dist/infra/lib/embedding/__tests__/EmbeddingProvider.test.js.map +0 -1
  136. package/dist/infra/lib/embedding/__tests__/VectorStore.test.d.ts +0 -2
  137. package/dist/infra/lib/embedding/__tests__/VectorStore.test.d.ts.map +0 -1
  138. package/dist/infra/lib/embedding/__tests__/VectorStore.test.js +0 -94
  139. package/dist/infra/lib/embedding/__tests__/VectorStore.test.js.map +0 -1
  140. package/dist/infra/lib/embedding/__tests__/cosine.test.d.ts +0 -2
  141. package/dist/infra/lib/embedding/__tests__/cosine.test.d.ts.map +0 -1
  142. package/dist/infra/lib/embedding/__tests__/cosine.test.js +0 -73
  143. package/dist/infra/lib/embedding/__tests__/cosine.test.js.map +0 -1
  144. package/dist/infra/lib/evolution/__tests__/deprecation.test.d.ts +0 -2
  145. package/dist/infra/lib/evolution/__tests__/deprecation.test.d.ts.map +0 -1
  146. package/dist/infra/lib/evolution/__tests__/deprecation.test.js +0 -251
  147. package/dist/infra/lib/evolution/__tests__/deprecation.test.js.map +0 -1
  148. package/dist/infra/lib/evolution/__tests__/eval.test.d.ts +0 -2
  149. package/dist/infra/lib/evolution/__tests__/eval.test.d.ts.map +0 -1
  150. package/dist/infra/lib/evolution/__tests__/eval.test.js +0 -603
  151. package/dist/infra/lib/evolution/__tests__/eval.test.js.map +0 -1
  152. package/dist/infra/lib/evolution/__tests__/generation.test.d.ts +0 -2
  153. package/dist/infra/lib/evolution/__tests__/generation.test.d.ts.map +0 -1
  154. package/dist/infra/lib/evolution/__tests__/generation.test.js +0 -396
  155. package/dist/infra/lib/evolution/__tests__/generation.test.js.map +0 -1
  156. package/dist/infra/lib/evolution/__tests__/insight.test.d.ts +0 -2
  157. package/dist/infra/lib/evolution/__tests__/insight.test.d.ts.map +0 -1
  158. package/dist/infra/lib/evolution/__tests__/insight.test.js +0 -204
  159. package/dist/infra/lib/evolution/__tests__/insight.test.js.map +0 -1
  160. package/dist/infra/lib/evolution/__tests__/integration.test.d.ts +0 -2
  161. package/dist/infra/lib/evolution/__tests__/integration.test.d.ts.map +0 -1
  162. package/dist/infra/lib/evolution/__tests__/integration.test.js +0 -206
  163. package/dist/infra/lib/evolution/__tests__/integration.test.js.map +0 -1
  164. package/dist/infra/lib/evolution/__tests__/lifecycle.test.d.ts +0 -2
  165. package/dist/infra/lib/evolution/__tests__/lifecycle.test.d.ts.map +0 -1
  166. package/dist/infra/lib/evolution/__tests__/lifecycle.test.js +0 -350
  167. package/dist/infra/lib/evolution/__tests__/lifecycle.test.js.map +0 -1
  168. package/dist/infra/lib/evolution/__tests__/parity.test.d.ts +0 -2
  169. package/dist/infra/lib/evolution/__tests__/parity.test.d.ts.map +0 -1
  170. package/dist/infra/lib/evolution/__tests__/parity.test.js +0 -319
  171. package/dist/infra/lib/evolution/__tests__/parity.test.js.map +0 -1
  172. package/dist/infra/lib/llm/auth/AuthProfileManager.test.d.ts +0 -5
  173. package/dist/infra/lib/llm/auth/AuthProfileManager.test.d.ts.map +0 -1
  174. package/dist/infra/lib/llm/auth/AuthProfileManager.test.js +0 -168
  175. package/dist/infra/lib/llm/auth/AuthProfileManager.test.js.map +0 -1
  176. package/dist/infra/lib/llm/auth/TokenRefresher.test.d.ts +0 -2
  177. package/dist/infra/lib/llm/auth/TokenRefresher.test.d.ts.map +0 -1
  178. package/dist/infra/lib/llm/auth/TokenRefresher.test.js +0 -120
  179. package/dist/infra/lib/llm/auth/TokenRefresher.test.js.map +0 -1
  180. package/dist/infra/lib/llm/timeout.test.d.ts +0 -2
  181. package/dist/infra/lib/llm/timeout.test.d.ts.map +0 -1
  182. package/dist/infra/lib/llm/timeout.test.js +0 -50
  183. package/dist/infra/lib/llm/timeout.test.js.map +0 -1
  184. package/dist/infra/lib/llm-availability.test.d.ts +0 -2
  185. package/dist/infra/lib/llm-availability.test.d.ts.map +0 -1
  186. package/dist/infra/lib/llm-availability.test.js +0 -37
  187. package/dist/infra/lib/llm-availability.test.js.map +0 -1
  188. package/dist/infra/lib/memory/KnowledgeGraph.test.d.ts +0 -2
  189. package/dist/infra/lib/memory/KnowledgeGraph.test.d.ts.map +0 -1
  190. package/dist/infra/lib/memory/KnowledgeGraph.test.js +0 -189
  191. package/dist/infra/lib/memory/KnowledgeGraph.test.js.map +0 -1
  192. package/dist/infra/lib/memory/MemorySearch.test.d.ts +0 -2
  193. package/dist/infra/lib/memory/MemorySearch.test.d.ts.map +0 -1
  194. package/dist/infra/lib/memory/MemorySearch.test.js +0 -149
  195. package/dist/infra/lib/memory/MemorySearch.test.js.map +0 -1
  196. package/dist/infra/lib/memory/MemoryStorage.test.d.ts +0 -2
  197. package/dist/infra/lib/memory/MemoryStorage.test.d.ts.map +0 -1
  198. package/dist/infra/lib/memory/MemoryStorage.test.js +0 -198
  199. package/dist/infra/lib/memory/MemoryStorage.test.js.map +0 -1
  200. package/dist/infra/lib/memory/SessionRAGRetriever.test.d.ts +0 -2
  201. package/dist/infra/lib/memory/SessionRAGRetriever.test.d.ts.map +0 -1
  202. package/dist/infra/lib/memory/SessionRAGRetriever.test.js +0 -180
  203. package/dist/infra/lib/memory/SessionRAGRetriever.test.js.map +0 -1
  204. package/dist/infra/lib/memory/SessionRAGStore.test.d.ts +0 -2
  205. package/dist/infra/lib/memory/SessionRAGStore.test.d.ts.map +0 -1
  206. package/dist/infra/lib/memory/SessionRAGStore.test.js +0 -326
  207. package/dist/infra/lib/memory/SessionRAGStore.test.js.map +0 -1
  208. package/dist/infra/lib/memory/__tests__/InMemoryStorage.test.d.ts +0 -2
  209. package/dist/infra/lib/memory/__tests__/InMemoryStorage.test.d.ts.map +0 -1
  210. package/dist/infra/lib/memory/__tests__/InMemoryStorage.test.js +0 -114
  211. package/dist/infra/lib/memory/__tests__/InMemoryStorage.test.js.map +0 -1
  212. package/dist/infra/lib/memory/__tests__/ReflectionStore.test.d.ts +0 -2
  213. package/dist/infra/lib/memory/__tests__/ReflectionStore.test.d.ts.map +0 -1
  214. package/dist/infra/lib/memory/__tests__/ReflectionStore.test.js +0 -196
  215. package/dist/infra/lib/memory/__tests__/ReflectionStore.test.js.map +0 -1
  216. package/dist/infra/lib/memory/index.test.d.ts +0 -2
  217. package/dist/infra/lib/memory/index.test.d.ts.map +0 -1
  218. package/dist/infra/lib/memory/index.test.js +0 -23
  219. package/dist/infra/lib/memory/index.test.js.map +0 -1
  220. package/dist/infra/lib/telemetry/SkillTelemetry.test.d.ts +0 -2
  221. package/dist/infra/lib/telemetry/SkillTelemetry.test.d.ts.map +0 -1
  222. package/dist/infra/lib/telemetry/SkillTelemetry.test.js +0 -124
  223. package/dist/infra/lib/telemetry/SkillTelemetry.test.js.map +0 -1
  224. package/dist/infra/lib/ui-ux/Bm25Engine.test.d.ts +0 -2
  225. package/dist/infra/lib/ui-ux/Bm25Engine.test.d.ts.map +0 -1
  226. package/dist/infra/lib/ui-ux/Bm25Engine.test.js +0 -159
  227. package/dist/infra/lib/ui-ux/Bm25Engine.test.js.map +0 -1
  228. package/dist/infra/lib/ui-ux/CsvDataLoader.test.d.ts +0 -2
  229. package/dist/infra/lib/ui-ux/CsvDataLoader.test.d.ts.map +0 -1
  230. package/dist/infra/lib/ui-ux/CsvDataLoader.test.js +0 -141
  231. package/dist/infra/lib/ui-ux/CsvDataLoader.test.js.map +0 -1
  232. package/dist/infra/lib/ui-ux/DesignSystemGenerator.test.d.ts +0 -2
  233. package/dist/infra/lib/ui-ux/DesignSystemGenerator.test.d.ts.map +0 -1
  234. package/dist/infra/lib/ui-ux/DesignSystemGenerator.test.js +0 -370
  235. package/dist/infra/lib/ui-ux/DesignSystemGenerator.test.js.map +0 -1
  236. package/dist/infra/lib/ui-ux/SearchService.test.d.ts +0 -2
  237. package/dist/infra/lib/ui-ux/SearchService.test.d.ts.map +0 -1
  238. package/dist/infra/lib/ui-ux/SearchService.test.js +0 -215
  239. package/dist/infra/lib/ui-ux/SearchService.test.js.map +0 -1
  240. package/dist/test-helpers/index.d.ts +0 -36
  241. package/dist/test-helpers/index.d.ts.map +0 -1
  242. package/dist/test-helpers/index.js +0 -85
  243. package/dist/test-helpers/index.js.map +0 -1
  244. package/dist/test-helpers/index.test.d.ts +0 -2
  245. package/dist/test-helpers/index.test.d.ts.map +0 -1
  246. package/dist/test-helpers/index.test.js +0 -92
  247. package/dist/test-helpers/index.test.js.map +0 -1
  248. package/dist/tests/curated-release-notes.test.d.ts +0 -2
  249. package/dist/tests/curated-release-notes.test.d.ts.map +0 -1
  250. package/dist/tests/curated-release-notes.test.js +0 -160
  251. package/dist/tests/curated-release-notes.test.js.map +0 -1
  252. package/dist/tools/convention/analyzeComplexity.test.d.ts +0 -2
  253. package/dist/tools/convention/analyzeComplexity.test.d.ts.map +0 -1
  254. package/dist/tools/convention/analyzeComplexity.test.js +0 -207
  255. package/dist/tools/convention/analyzeComplexity.test.js.map +0 -1
  256. package/dist/tools/convention/validateCodeQuality.test.d.ts +0 -2
  257. package/dist/tools/convention/validateCodeQuality.test.d.ts.map +0 -1
  258. package/dist/tools/convention/validateCodeQuality.test.js +0 -230
  259. package/dist/tools/convention/validateCodeQuality.test.js.map +0 -1
  260. package/dist/tools/loop/validateLoopDefinition.test.d.ts +0 -14
  261. package/dist/tools/loop/validateLoopDefinition.test.d.ts.map +0 -1
  262. package/dist/tools/loop/validateLoopDefinition.test.js +0 -229
  263. package/dist/tools/loop/validateLoopDefinition.test.js.map +0 -1
  264. package/dist/tools/spec/executionPacket.test.d.ts +0 -2
  265. package/dist/tools/spec/executionPacket.test.d.ts.map +0 -1
  266. package/dist/tools/spec/executionPacket.test.js +0 -374
  267. package/dist/tools/spec/executionPacket.test.js.map +0 -1
  268. package/dist/tools/spec/prdParser.test.d.ts +0 -6
  269. package/dist/tools/spec/prdParser.test.d.ts.map +0 -1
  270. package/dist/tools/spec/prdParser.test.js +0 -332
  271. package/dist/tools/spec/prdParser.test.js.map +0 -1
  272. package/dist/tools/spec/specGenerator.test.d.ts +0 -2
  273. package/dist/tools/spec/specGenerator.test.d.ts.map +0 -1
  274. package/dist/tools/spec/specGenerator.test.js +0 -130
  275. package/dist/tools/spec/specGenerator.test.js.map +0 -1
  276. package/dist/tools/spec/traceabilityMatrix.path-resolution.test.d.ts +0 -10
  277. package/dist/tools/spec/traceabilityMatrix.path-resolution.test.d.ts.map +0 -1
  278. package/dist/tools/spec/traceabilityMatrix.path-resolution.test.js +0 -120
  279. package/dist/tools/spec/traceabilityMatrix.path-resolution.test.js.map +0 -1
  280. package/dist/tools/spec/traceabilityMatrix.test.d.ts +0 -6
  281. package/dist/tools/spec/traceabilityMatrix.test.d.ts.map +0 -1
  282. package/dist/tools/spec/traceabilityMatrix.test.js +0 -359
  283. package/dist/tools/spec/traceabilityMatrix.test.js.map +0 -1
  284. package/hooks/scripts/__tests__/.vibe/command-log.txt +0 -3
  285. package/hooks/scripts/__tests__/auto-test-debounce.test.js +0 -145
  286. package/hooks/scripts/__tests__/clone-behaviors.test.js +0 -152
  287. package/hooks/scripts/__tests__/clone-merge-responsive.test.js +0 -106
  288. package/hooks/scripts/__tests__/code-check-detectors.test.js +0 -213
  289. package/hooks/scripts/__tests__/code-check-memory-write.test.js +0 -81
  290. package/hooks/scripts/__tests__/codex-hook-adapter.test.js +0 -64
  291. package/hooks/scripts/__tests__/curation-index.test.js +0 -157
  292. package/hooks/scripts/__tests__/dispatcher-inprocess.test.js +0 -99
  293. package/hooks/scripts/__tests__/figma-extract.test.js +0 -338
  294. package/hooks/scripts/__tests__/hook-payload.test.js +0 -29
  295. package/hooks/scripts/__tests__/llm-orchestrate-antigravity.test.js +0 -66
  296. package/hooks/scripts/__tests__/loop-ledger.test.js +0 -321
  297. package/hooks/scripts/__tests__/post-edit-dispatcher.test.js +0 -139
  298. package/hooks/scripts/__tests__/pre-tool-guard.test.js +0 -523
  299. package/hooks/scripts/__tests__/recipe-extractor.test.js +0 -244
  300. package/hooks/scripts/__tests__/run-ledger-verify-required.test.js +0 -151
  301. package/hooks/scripts/__tests__/run-ledger.test.js +0 -481
  302. package/hooks/scripts/__tests__/scope-from-spec.test.js +0 -215
  303. package/hooks/scripts/__tests__/sentinel-guard.test.js +0 -263
  304. package/hooks/scripts/__tests__/step-counter.test.js +0 -459
  305. package/hooks/scripts/__tests__/utils-npm-root.test.js +0 -99
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=stakes-contract.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stakes-contract.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/stakes-contract.test.ts"],"names":[],"mappings":""}
@@ -1,166 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import fs from 'fs';
3
- import path from 'path';
4
- /**
5
- * Stakes-proportional pipeline — 정적 계약 테스트 (SPEC: stakes-proportional-pipeline).
6
- *
7
- * 스킬 본문 규칙은 모델이 읽는 계약이므로, 규칙이 각 파일에 존재·유지되는지를
8
- * 순수 fs 검사로 고정한다 (wiring-integrity 선례). D1–D5 게이트.
9
- */
10
- const ROOT = path.resolve(__dirname, '..', '..');
11
- function read(rel) {
12
- return fs.readFileSync(path.join(ROOT, rel), 'utf-8');
13
- }
14
- describe('D2 — loop-contract.md: Stakes 매핑 SSOT', () => {
15
- const doc = read('vibe/rules/loop-contract.md');
16
- it('stakes 파라미터가 기본값 production 으로 정의된다', () => {
17
- expect(doc).toMatch(/\|\s*`stakes`\s*\|\s*`production`\s*\|/);
18
- });
19
- it('Stakes 매핑 표에 demo/prototype/production 3단계가 있다', () => {
20
- for (const level of ['`demo`', '`prototype`', '`production`']) {
21
- expect(doc, `Stakes 표에 ${level} 행 누락`).toContain(level);
22
- }
23
- });
24
- it('demo/prototype 는 max_iterations 1 + 검증 스크립트 신규 생성 금지', () => {
25
- expect(doc).toContain('신규 생성 금지');
26
- expect(doc).toMatch(/`demo`[^\n]*\|\s*1\s*\|/);
27
- });
28
- it('불확실 시 상향(production) 원칙이 명시된다', () => {
29
- expect(doc).toMatch(/불확실하면 항상 상향|불확실하면 상향/);
30
- });
31
- it('JUDGE 검증 산출물 절제: git diff --numstat 기반 P2 경고 (advisory)', () => {
32
- expect(doc).toContain('JUDGE 검증 산출물 절제');
33
- expect(doc).toContain('git diff --numstat');
34
- expect(doc).toContain('P2');
35
- expect(doc).toMatch(/게이트 통과 여부를 바꾸지 않는다/);
36
- });
37
- it('production 기본 동작 불변: max_iterations 기본 10 유지', () => {
38
- expect(doc).toMatch(/\|\s*`max_iterations`\s*\|\s*10\s*\|/);
39
- });
40
- });
41
- describe('D1 — vibe 디스패처: stakes 분류 규칙', () => {
42
- const doc = read('skills/vibe/SKILL.md');
43
- it('Phase 1-b Stakes 분류 섹션이 존재한다', () => {
44
- expect(doc).toContain('Phase 1-b: Stakes 분류');
45
- });
46
- it('경량 프로파일 매핑(--max-iter 1, 리뷰 1패스, 검증 스크립트 신규 생성 금지)이 명시된다', () => {
47
- expect(doc).toContain('--max-iter 1');
48
- expect(doc).toContain('리뷰 1패스');
49
- expect(doc).toContain('검증 스크립트 신규 생성 금지');
50
- });
51
- it('SSOT 로 loop-contract.md 를 참조한다', () => {
52
- expect(doc).toMatch(/loop-contract\.md[^\n]*Stakes|Stakes[^\n]*loop-contract\.md/);
53
- });
54
- it('불확실 시 상향 + SPEC 승인 편승 질문이 명시된다', () => {
55
- expect(doc).toContain('불확실하면 상향');
56
- expect(doc).toMatch(/SPEC 승인 메시지에 stakes 확인 질문/);
57
- });
58
- });
59
- /**
60
- * 디스패처의 Stakes 표는 **의도적 사본**이다 — 모델이 다른 파일을 로드하지 않고
61
- * 판정할 수 있어야 하므로 D1 이 본문 존재를 요구한다. 문제는 사본이 조용히
62
- * 드리프트한다는 것이고, 실제로 그런 일이 있었다:
63
- *
64
- * SSOT `production` | 기본값 — 신호 없음·상충 포함
65
- * 사본 `production` | 기본값 — 신호 없음 ← "상충 포함" 소실
66
- *
67
- * 신호가 상충할 때 상향(production)하지 않으면 리뷰어 셋과 max_iterations 가
68
- * 통째로 축소된다. 사본을 허용하는 대신 드리프트를 CI 에서 막는다.
69
- */
70
- describe('D1/D2 — Stakes 사본 드리프트 가드', () => {
71
- const dispatcher = read('skills/vibe/SKILL.md');
72
- const ssot = read('vibe/rules/loop-contract.md');
73
- it('상충 신호 → production 상향 규칙이 SSOT 와 사본 양쪽에 있다', () => {
74
- expect(ssot, 'SSOT production 행에 "상충" 누락').toMatch(/`production`[^\n]*상충/);
75
- expect(dispatcher, '디스패처 사본 production 행에 "상충" 누락').toMatch(/`production`[^\n]*상충/);
76
- });
77
- it('prototype 판정 신호가 SSOT 와 사본 양쪽에서 유지보수 가능성을 언급한다', () => {
78
- expect(ssot).toMatch(/`prototype`[^\n]*유지보수 가능성/);
79
- expect(dispatcher).toMatch(/`prototype`[^\n]*유지보수 가능성/);
80
- });
81
- it('사본이 SSOT 우선임을 명시한다 (충돌 시 판단 근거)', () => {
82
- expect(dispatcher).toMatch(/SSOT 가 이긴다|SSOT가 이긴다/);
83
- });
84
- it('세 stakes 값의 판정 신호가 양쪽에 모두 존재한다', () => {
85
- for (const level of ['`demo`', '`prototype`', '`production`']) {
86
- expect(ssot, `SSOT 에 ${level} 누락`).toContain(level);
87
- expect(dispatcher, `사본에 ${level} 누락`).toContain(level);
88
- }
89
- });
90
- });
91
- describe('D3 — vibe.spec: 승인 게이트 stakes 편승 질문', () => {
92
- const doc = read('skills/vibe.spec/SKILL.md');
93
- it('Stakes 편승 질문 규칙이 승인 섹션에 존재한다', () => {
94
- expect(doc).toContain('Stakes 편승 질문');
95
- expect(doc).toMatch(/demo\/prototype\/production/);
96
- });
97
- it('별도 추가 왕복 금지가 명시된다', () => {
98
- expect(doc).toMatch(/추가 확인 왕복을 만들지 않는다/);
99
- });
100
- });
101
- describe('D4 — vibe.run: stakes 프로파일 + JUDGE 절제 참조', () => {
102
- const doc = read('skills/vibe.run/SKILL.md');
103
- it('Stakes 프로파일 섹션이 loop-contract 를 SSOT 로 참조한다', () => {
104
- expect(doc).toContain('Stakes 프로파일');
105
- expect(doc).toMatch(/SSOT[^\n]*loop-contract\.md/);
106
- });
107
- it('demo/prototype 에서 검증 스크립트 신규 생성 금지가 명시된다', () => {
108
- expect(doc).toContain('검증 스크립트 신규 생성 금지');
109
- });
110
- it('JUDGE 검증 산출물 절제(P2, git diff --numstat, advisory)가 명시된다', () => {
111
- expect(doc).toContain('git diff --numstat');
112
- expect(doc).toMatch(/P2 경고/);
113
- expect(doc).toMatch(/advisory/);
114
- });
115
- });
116
- describe('D5 — vibe.review: 리뷰어 스케일링', () => {
117
- const doc = read('skills/vibe.review/SKILL.md');
118
- it('스케일링 표가 존재한다 (demo ≤5 → 2종)', () => {
119
- expect(doc).toContain('리뷰어 스케일링');
120
- expect(doc).toMatch(/demo[^\n]*≤5[^\n]*2종/);
121
- });
122
- it('production 행은 기존 Core Reviewers 전체를 유지한다', () => {
123
- expect(doc).toMatch(/production[^\n]*Core Reviewers 전체/);
124
- // 기존 기본 셋 불변 검증 — Core Reviewers 표의 focus 들이 그대로 존재
125
- for (const focus of [
126
- 'security-reviewer',
127
- 'focus: correctness',
128
- 'focus: data-integrity',
129
- 'focus: performance',
130
- 'focus: architecture',
131
- 'focus: complexity',
132
- 'focus: git-history',
133
- 'focus: test-coverage',
134
- ]) {
135
- expect(doc, `Core Reviewers 에서 ${focus} 가 사라짐 — production 불변 위반`).toContain(focus);
136
- }
137
- });
138
- it('SSOT 로 loop-contract.md 를 참조한다', () => {
139
- expect(doc).toMatch(/loop-contract\.md[^\n]*Stakes/);
140
- });
141
- });
142
- describe('강제화 — stakes 분류를 건너뛸 수 없다 (재테스트 발견 1 회귀 방지)', () => {
143
- it('vibe 디스패처: Stakes 줄 없는 실행 계획은 무효', () => {
144
- const doc = read('skills/vibe/SKILL.md');
145
- expect(doc).toContain('생략 불가');
146
- expect(doc).toMatch(/`Stakes:` 줄이 없는 실행 계획은 무효/);
147
- });
148
- it('spec-template: 헤더에 Stakes 필드가 존재한다', () => {
149
- const doc = read('vibe/templates/spec-template.md');
150
- expect(doc).toMatch(/\*\*Stakes\*\*[^\n]*demo \| prototype \| production/);
151
- });
152
- it('vibe.spec: SPEC 헤더 Stakes 필수 + 경량 SPEC 규칙(분할 금지)', () => {
153
- const doc = read('skills/vibe.spec/SKILL.md');
154
- expect(doc).toContain('Stakes (헤더 필수 필드)');
155
- expect(doc).toMatch(/분할 금지/);
156
- });
157
- it('vibe.spec: 승인 요약에 Stakes 줄이 포함된다', () => {
158
- const doc = read('skills/vibe.spec/SKILL.md');
159
- expect(doc).toMatch(/Stakes: \{demo\|prototype\|production\}/);
160
- });
161
- it('vibe.spec: 셀프 리뷰 체크리스트에 stakes 항목이 있다', () => {
162
- const doc = read('skills/vibe.spec/SKILL.md');
163
- expect(doc).toMatch(/헤더에 `Stakes:` 필드가 있고/);
164
- });
165
- });
166
- //# sourceMappingURL=stakes-contract.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stakes-contract.test.js","sourceRoot":"","sources":["../../src/__tests__/stakes-contract.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=stuck-semantics.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stuck-semantics.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/stuck-semantics.test.ts"],"names":[],"mappings":""}
@@ -1,109 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import fs from 'fs';
3
- import path from 'path';
4
- /**
5
- * `stuck` 시맨틱 계약 — 4개 문서가 서로 모순됐던 회귀를 막는다.
6
- *
7
- * 발견 경위: Codex 하네스에 SKILL.md 를 읽혀 검증하던 중, 같은 규칙이 문서마다
8
- * 다르게 적혀 있는 것이 드러났다.
9
- *
10
- * loop-contract.md:24 stuck = EXIT 조건
11
- * loop-contract.md:44 autonomous = "기록 후 계속" ← 같은 파일 안에서 상충
12
- * CLAUDE.md autonomous "continues"
13
- * vibe/SKILL.md autonomous → "루프 종료" ← 정반대
14
- *
15
- * 확정된 시맨틱: **stuck 은 어느 automationLevel 에서도 루프를 종료한다.**
16
- * 2회 연속 동일 발견은 정의상 재시도가 무의미하므로 루프 연장은 성립하지 않는다.
17
- * automationLevel 이 결정하는 것은 "사람에게 묻는지" 와 "다음 단위로 넘어가는지" 뿐이며,
18
- * 미달은 절대 완료로 기록하지 않는다.
19
- */
20
- const ROOT = path.resolve(__dirname, '..', '..');
21
- function read(rel) {
22
- return fs.readFileSync(path.join(ROOT, rel), 'utf-8');
23
- }
24
- /** stuck 규칙을 진술하는 모든 문서 — 새 문서를 추가하면 여기에 등록한다 */
25
- const DOCS_STATING_STUCK = [
26
- 'vibe/rules/loop-contract.md',
27
- 'CLAUDE.md',
28
- 'AGENTS.md',
29
- 'skills/vibe/SKILL.md',
30
- 'skills/vibe.run/references/automation-level.md',
31
- 'skills/vibe.run/references/coverage-loop.md',
32
- ];
33
- describe('stuck 시맨틱 — SSOT', () => {
34
- const ssot = read('vibe/rules/loop-contract.md');
35
- it('stuck 이 루프를 종료한다고 명시한다', () => {
36
- expect(ssot).toMatch(/그 루프는 종료한다/);
37
- });
38
- it('autonomous 의 "계속" 이 루프 연장이 아님을 명시한다', () => {
39
- expect(ssot).toMatch(/stuck 난 루프를 더 돌린다는 뜻이 아니다/);
40
- });
41
- it('미달을 완료로 기록하지 않는다는 규칙이 있다', () => {
42
- expect(ssot).toMatch(/완료로 기록하지 않는다/);
43
- });
44
- it('confirm/autonomous 모두 루프는 종료임을 표로 구분한다', () => {
45
- // 질문 여부와 루프 종료를 섞지 말라는 지시가 있어야 한다
46
- expect(ssot).toMatch(/이 둘을 섞지 말/);
47
- });
48
- });
49
- describe('stuck 시맨틱 — 문서 간 정합', () => {
50
- it.each(DOCS_STATING_STUCK)('%s 가 stuck 을 "계속 재시도" 로 기술하지 않는다', (rel) => {
51
- const doc = read(rel);
52
- // stuck 을 언급하지 않는 문서는 검사 대상이 아니다
53
- if (!/stuck/i.test(doc))
54
- return;
55
- // "stuck → 계속" 류의 단정을 금지한다. 부정문("계속한다는 뜻이 아니다",
56
- // "keep retrying" 를 부정하는 문장)은 허용해야 하므로, 금지 패턴은
57
- // stuck 직후에 곧바로 연장을 지시하는 형태로 좁힌다.
58
- expect(doc, `${rel}: stuck 을 루프 연장으로 기술함`)
59
- .not.toMatch(/stuck[^\n.]{0,40}(?:이면|→|->)\s*(?:루프를? )?계속(?!한다는 뜻이 아니)/);
60
- });
61
- it.each(DOCS_STATING_STUCK)('%s 가 sub-100/미달을 완료로 기록하지 않는다고 유지한다', (rel) => {
62
- const doc = read(rel);
63
- if (!/stuck/i.test(doc))
64
- return;
65
- // 각 문서는 미달 처리를 어떤 형태로든 명시해야 한다 (완료 금지 / TODO / 인박스)
66
- expect(doc, `${rel}: 미달 처리 규칙 없음`)
67
- .toMatch(/완료로 기록하지 않는다|as complete|TODO|인박스/);
68
- });
69
- /**
70
- * stuck 은 **발견 해시**로 판정한다. 커버리지 수치로 바꿔 적으면 판정이 달라진다 —
71
- * 커버리지가 그대로여도 남은 항목이 바뀌었으면 진전이고, 반대로 커버리지가 올라도
72
- * 같은 발견이 반복되면 막힌 것이다. coverage-loop.md 가 실제로 "연속 2회 동일
73
- * 커버리지" 로 적혀 있었다.
74
- */
75
- it('stuck 판정 기준을 커버리지 수치로 바꿔 적은 문서가 없다', () => {
76
- for (const rel of DOCS_STATING_STUCK) {
77
- expect(read(rel), `${rel}: stuck 을 커버리지 수치로 판정`)
78
- .not.toMatch(/연속 2회 동일 커버리지/);
79
- }
80
- });
81
- });
82
- /**
83
- * Deprecated 별칭 환원은 loop-contract 의 표가 유일 SSOT 다.
84
- * 요약을 여러 곳에 두었더니 `quick` 의 "최소 JUDGE" 가 빠지고 `ralplan` 이
85
- * 누락되는 식으로 어긋났다 — 부분 요약은 전체 사본보다 드리프트를 알아채기 어렵다.
86
- */
87
- describe('deprecated 별칭 매핑 정합', () => {
88
- const ssot = read('vibe/rules/loop-contract.md');
89
- it('SSOT 에 별칭 5종이 모두 정의돼 있다', () => {
90
- for (const alias of ['`ralph`', '`verify`', '`quick`', '`ralplan`', '`ultrawork`']) {
91
- expect(ssot, `SSOT 에 ${alias} 누락`).toContain(alias);
92
- }
93
- });
94
- it('SSOT 의 quick 은 --max-iter 1 + 최소 JUDGE 다', () => {
95
- expect(ssot).toMatch(/`quick`[^\n]*--max-iter 1[^\n]*최소 JUDGE/);
96
- });
97
- it.each(['CLAUDE.md', 'AGENTS.md'])('%s 의 quick 요약이 최소 JUDGE 를 빠뜨리지 않는다', (rel) => {
98
- const doc = read(rel);
99
- if (!/`quick`/.test(doc))
100
- return;
101
- expect(doc, `${rel}: quick 에 최소 JUDGE 누락`)
102
- .toMatch(/`quick`→`--max-iter 1`[^\n]*(?:min JUDGE|최소 JUDGE)/);
103
- });
104
- it('automation-level.md 는 별칭 요약을 두지 않고 SSOT 를 가리킨다', () => {
105
- const doc = read('skills/vibe.run/references/automation-level.md');
106
- expect(doc).toMatch(/요약도 두지 않는다/);
107
- });
108
- });
109
- //# sourceMappingURL=stuck-semantics.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stuck-semantics.test.js","sourceRoot":"","sources":["../../src/__tests__/stuck-semantics.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=wiring-integrity.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wiring-integrity.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/wiring-integrity.test.ts"],"names":[],"mappings":""}
@@ -1,160 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import fs from 'fs';
3
- import path from 'path';
4
- import { globSync } from 'glob';
5
- import { GLOBAL_SKILLS, GLOBAL_SKILLS_OPTIONAL, STACK_TO_SKILLS, CAPABILITY_SKILLS, } from '../cli/postinstall/constants.js';
6
- /**
7
- * F1–F3 — 정적 무결성 테스트 (SPEC: system-lean-hardening Track 4).
8
- *
9
- * A1/B1–B3/B5–B6 처럼 "설치 목록에 없는 걸 체인 호출" / "아무도 참조 안 하는 자산"
10
- * 결함이 재발하지 않도록, 배선(entry→body 스킬 / 훅 스크립트 / 에이전트)을
11
- * 순수 fs+regex 로 검증한다. 빌드 산출물 불필요 — 소스만 읽는다.
12
- */
13
- const ROOT = path.resolve(__dirname, '..', '..');
14
- const SKILLS_DIR = path.join(ROOT, 'skills');
15
- const HOOKS_DIR = path.join(ROOT, 'hooks');
16
- const HOOK_SCRIPTS_DIR = path.join(HOOKS_DIR, 'scripts');
17
- const AGENTS_DIR = path.join(ROOT, 'agents');
18
- const SRC_DIR = path.join(ROOT, 'src');
19
- const RULES_DIR = path.join(ROOT, 'vibe', 'rules');
20
- // ---------------------------------------------------------------------------
21
- // F1 — entry→body skill install integrity
22
- // ---------------------------------------------------------------------------
23
- /**
24
- * SKILL.md 본문에서 체인 호출("Load skill `X`" 및 한국어 "`X` 스킬을 로드")로
25
- * 참조된 body 스킬 이름을 추출한다. `figma:figma-use` 처럼 ':' 가 포함된
26
- * plugin-qualified 참조(외부 플러그인 스킬)는 vibe 설치 목록 대상이 아니므로 제외한다.
27
- */
28
- function extractChainedSkills(content) {
29
- const names = new Set();
30
- const patterns = [/load skill `([^`]+)`/gi, /`([^`]+)`\s*스킬을\s*로드/g];
31
- for (const re of patterns) {
32
- let match;
33
- while ((match = re.exec(content)) !== null) {
34
- const name = match[1].trim();
35
- if (name && !name.includes(':'))
36
- names.add(name);
37
- }
38
- }
39
- return [...names];
40
- }
41
- function flattenMap(map) {
42
- return Object.values(map).flat();
43
- }
44
- describe('F1 — entry→body skill install integrity', () => {
45
- const installedSkillSet = new Set([...GLOBAL_SKILLS]);
46
- const allowedBodySet = new Set([
47
- ...GLOBAL_SKILLS,
48
- ...flattenMap(STACK_TO_SKILLS),
49
- ...flattenMap(CAPABILITY_SKILLS),
50
- ...GLOBAL_SKILLS_OPTIONAL,
51
- ]);
52
- for (const skillName of installedSkillSet) {
53
- const skillFile = path.join(SKILLS_DIR, skillName, 'SKILL.md');
54
- it(`${skillName}: SKILL.md exists`, () => {
55
- expect(fs.existsSync(skillFile), `missing skills/${skillName}/SKILL.md`).toBe(true);
56
- });
57
- if (!fs.existsSync(skillFile))
58
- continue;
59
- const content = fs.readFileSync(skillFile, 'utf-8');
60
- const referenced = extractChainedSkills(content);
61
- for (const body of referenced) {
62
- it(`${skillName}: chain-called body skill \`${body}\` is installed`, () => {
63
- expect(allowedBodySet.has(body), `skills/${skillName}/SKILL.md chain-calls \`${body}\`, but it is not a member of ` +
64
- `GLOBAL_SKILLS ∪ STACK_TO_SKILLS ∪ CAPABILITY_SKILLS ∪ GLOBAL_SKILLS_OPTIONAL. ` +
65
- `Fix: add "${body}" to the appropriate list in src/cli/postinstall/constants.ts.`).toBe(true);
66
- });
67
- }
68
- }
69
- });
70
- // ---------------------------------------------------------------------------
71
- // F2 — hook script reference integrity
72
- // ---------------------------------------------------------------------------
73
- function collectHookScriptNames() {
74
- return fs
75
- .readdirSync(HOOK_SCRIPTS_DIR, { withFileTypes: true })
76
- .filter((entry) => entry.isFile() && entry.name.endsWith('.js'))
77
- .map((entry) => entry.name);
78
- }
79
- function isReferencedInHookScripts(scriptName) {
80
- const otherScripts = collectHookScriptNames().filter((name) => name !== scriptName);
81
- return otherScripts.some((name) => {
82
- const content = fs.readFileSync(path.join(HOOK_SCRIPTS_DIR, name), 'utf-8');
83
- return content.includes(scriptName);
84
- });
85
- }
86
- function isReferencedInFiles(scriptName, files) {
87
- return files.some((file) => fs.readFileSync(file, 'utf-8').includes(scriptName));
88
- }
89
- describe('F2 — hook script reference integrity', () => {
90
- const scriptNames = collectHookScriptNames();
91
- const hooksJson = path.join(HOOKS_DIR, 'hooks.json');
92
- const antigravityJson = path.join(HOOKS_DIR, 'antigravity-hooks.json');
93
- const srcFiles = globSync('**/*.ts', { cwd: SRC_DIR, absolute: true });
94
- const skillMdFiles = [
95
- ...globSync('*/SKILL.md', { cwd: SKILLS_DIR, absolute: true }),
96
- ...globSync('*/references/*.md', { cwd: SKILLS_DIR, absolute: true }),
97
- ];
98
- it('discovers hook scripts', () => {
99
- expect(scriptNames.length).toBeGreaterThan(0);
100
- });
101
- for (const scriptName of scriptNames) {
102
- it(`${scriptName} is referenced by hooks.json, another script, src/, or a skill`, () => {
103
- const referenced = isReferencedInFiles(scriptName, [hooksJson, antigravityJson]) ||
104
- isReferencedInHookScripts(scriptName) ||
105
- isReferencedInFiles(scriptName, srcFiles) ||
106
- isReferencedInFiles(scriptName, skillMdFiles);
107
- expect(referenced, `hooks/scripts/${scriptName} has no reference in hooks.json, antigravity-hooks.json, ` +
108
- `another hooks/scripts/*.js, src/**/*.ts, or skills/**/SKILL.md(+references/*.md). ` +
109
- `Fix: register it or delete it if genuinely dead.`).toBe(true);
110
- });
111
- }
112
- });
113
- // ---------------------------------------------------------------------------
114
- // F3 — agent reference integrity
115
- // ---------------------------------------------------------------------------
116
- /**
117
- * 순수 uninstall-cleanup 목록 파일 — 여기서만 등장하는 건 "살아있다"로 치지 않는다
118
- * (삭제 목록에 남아있어도 참조가 아니라 오히려 제거 대상이라는 뜻이기 때문).
119
- * constants.ts 의 모델/툴 매핑 데이터 테이블도 동일한 이유로 단독으로는 불충분하다
120
- * (실 디스패치/사용 근거가 아니라 설치 시 주입되는 메타데이터 테이블일 뿐).
121
- */
122
- const NON_COUNTING_SRC_FILES = new Set(['remove.ts', 'constants.ts']);
123
- /**
124
- * 알려진 미배선 에이전트 — 발견되면 여기 이름을 추가하고 왜 아직 안 지웠는지 주석을 남긴다.
125
- * (F3 는 이 목록에 있는 에이전트는 실패시키지 않되, 디버트로서 눈에 띄게 남긴다.)
126
- * 현재는 13개 에이전트 전부 정상 배선되어 있어 비어 있다.
127
- */
128
- const KNOWN_UNWIRED = [];
129
- function collectAgentBasenames() {
130
- return globSync('**/*.md', { cwd: AGENTS_DIR }).map((rel) => path.basename(rel, '.md'));
131
- }
132
- function isReferencedInMarkdown(agentName, dir) {
133
- if (!fs.existsSync(dir))
134
- return false;
135
- const files = globSync('**/*.md', { cwd: dir, absolute: true });
136
- return files.some((file) => new RegExp(`\\b${agentName}\\b`).test(fs.readFileSync(file, 'utf-8')));
137
- }
138
- function isReferencedInSrc(agentName) {
139
- const files = globSync('**/*.ts', { cwd: SRC_DIR, absolute: true }).filter((file) => !NON_COUNTING_SRC_FILES.has(path.basename(file)));
140
- return files.some((file) => new RegExp(`\\b${agentName}\\b`).test(fs.readFileSync(file, 'utf-8')));
141
- }
142
- describe('F3 — agent reference integrity', () => {
143
- const agentNames = collectAgentBasenames();
144
- it('discovers agent files', () => {
145
- expect(agentNames.length).toBeGreaterThan(0);
146
- });
147
- for (const agentName of agentNames) {
148
- it(`${agentName} is referenced in skills/, vibe/rules/, or src/ (excluding cleanup-only lists)`, () => {
149
- if (KNOWN_UNWIRED.includes(agentName))
150
- return;
151
- const referenced = isReferencedInMarkdown(agentName, SKILLS_DIR) ||
152
- isReferencedInMarkdown(agentName, RULES_DIR) ||
153
- isReferencedInSrc(agentName);
154
- expect(referenced, `agents/${agentName}.md has no dispatch/usage reference in skills/**/*.md, ` +
155
- `vibe/rules/**/*.md, or src/ (excluding remove.ts / constants.ts alone). ` +
156
- `This is a genuine orphan — add it to KNOWN_UNWIRED with a reason, or delete the agent.`).toBe(true);
157
- });
158
- }
159
- });
160
- //# sourceMappingURL=wiring-integrity.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wiring-integrity.test.js","sourceRoot":"","sources":["../../src/__tests__/wiring-integrity.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=info.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"info.test.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/info.test.ts"],"names":[],"mappings":""}
@@ -1,74 +0,0 @@
1
- import fs from 'fs';
2
- import os from 'os';
3
- import path from 'path';
4
- import { afterEach, describe, expect, it, vi } from 'vitest';
5
- import { formatHookStatus, showHelp, showStatus } from './info.js';
6
- const originalCwd = process.cwd();
7
- function captureLog(run) {
8
- const lines = [];
9
- const spy = vi.spyOn(console, 'log').mockImplementation((message) => {
10
- lines.push(String(message ?? ''));
11
- });
12
- try {
13
- run();
14
- }
15
- finally {
16
- spy.mockRestore();
17
- }
18
- return lines.join('\n');
19
- }
20
- describe('CLI info commands', () => {
21
- afterEach(() => {
22
- process.chdir(originalCwd);
23
- });
24
- it('describes all supported harnesses in help output', () => {
25
- const output = captureLog(showHelp);
26
- expect(output).toContain('Claude Code / Codex / Antigravity');
27
- expect(output).toContain('vibe init --antigravity');
28
- expect(output).not.toContain(['Claude Code', 'exclusive'].join(' '));
29
- expect(output).not.toContain(['Gemini', 'CLI'].join(' '));
30
- });
31
- it('detects .vibe as the project status directory', () => {
32
- const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'vibe-status-'));
33
- fs.mkdirSync(path.join(tempDir, '.vibe'), { recursive: true });
34
- fs.writeFileSync(path.join(tempDir, '.vibe', 'config.json'), JSON.stringify({ language: 'ko', models: {} }));
35
- process.chdir(tempDir);
36
- const output = captureLog(showStatus);
37
- expect(output).toContain(`Project: ✅ ${fs.realpathSync(tempDir)}`);
38
- expect(output).not.toContain('Not a core project');
39
- });
40
- it('surfaces missing hooks in status output', () => {
41
- const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'vibe-status-hooks-'));
42
- fs.mkdirSync(path.join(tempDir, '.vibe'), { recursive: true });
43
- process.chdir(tempDir);
44
- const output = captureLog(showStatus);
45
- expect(output).toContain('Hooks (deterministic gates):');
46
- expect(output).toContain('not installed');
47
- });
48
- });
49
- /**
50
- * 훅 부재는 결정론적 가드가 전부 죽었다는 뜻이므로 상태 화면에서 반드시 보여야 한다.
51
- * `vibe upgrade` 만 쓰는 사용자가 이 상태에 도달할 수 있다 — repairProjectHooks 참조.
52
- */
53
- describe('formatHookStatus', () => {
54
- function tempProject() {
55
- return fs.mkdtempSync(path.join(os.tmpdir(), 'vibe-hookstatus-'));
56
- }
57
- it('reports Claude hooks as installed only when the hooks key exists', () => {
58
- const root = tempProject();
59
- fs.mkdirSync(path.join(root, '.claude'), { recursive: true });
60
- fs.writeFileSync(path.join(root, '.claude', 'settings.local.json'), JSON.stringify({ permissions: {} }));
61
- expect(formatHookStatus(root)).toContain('not installed');
62
- fs.writeFileSync(path.join(root, '.claude', 'settings.local.json'), JSON.stringify({ hooks: { PreToolUse: [] } }));
63
- expect(formatHookStatus(root)).toContain('✓ .claude/settings.local.json');
64
- });
65
- it('reports Codex hooks only for Codex-enabled projects', () => {
66
- const plain = tempProject();
67
- expect(formatHookStatus(plain)).not.toContain('Codex');
68
- const codex = tempProject();
69
- fs.writeFileSync(path.join(codex, 'AGENTS.md'), '# project\n');
70
- expect(formatHookStatus(codex)).toContain('Codex');
71
- expect(formatHookStatus(codex)).toContain('not installed');
72
- });
73
- });
74
- //# sourceMappingURL=info.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"info.test.js","sourceRoot":"","sources":["../../../src/cli/commands/info.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=upgrade.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"upgrade.test.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/upgrade.test.ts"],"names":[],"mappings":""}