@su-record/vibe 2.7.18 → 2.7.20

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 (345) hide show
  1. package/.env.example +37 -37
  2. package/CLAUDE.md +153 -153
  3. package/LICENSE +21 -21
  4. package/README.md +451 -449
  5. package/agents/architect-low.md +41 -41
  6. package/agents/architect-medium.md +59 -59
  7. package/agents/architect.md +80 -80
  8. package/agents/build-error-resolver.md +115 -115
  9. package/agents/compounder.md +261 -261
  10. package/agents/diagrammer.md +178 -178
  11. package/agents/docs/api-documenter.md +99 -99
  12. package/agents/docs/changelog-writer.md +93 -93
  13. package/agents/e2e-tester.md +294 -294
  14. package/agents/event/event-comms.md +78 -0
  15. package/agents/event/event-content.md +68 -0
  16. package/agents/event/event-image.md +95 -0
  17. package/agents/event/event-ops.md +84 -0
  18. package/agents/event/event-scheduler.md +69 -0
  19. package/agents/event/event-speaker.md +86 -0
  20. package/agents/explorer-low.md +42 -42
  21. package/agents/explorer-medium.md +59 -59
  22. package/agents/explorer.md +48 -48
  23. package/agents/implementer-low.md +43 -43
  24. package/agents/implementer-medium.md +52 -52
  25. package/agents/implementer.md +54 -54
  26. package/agents/junior-mentor.md +141 -141
  27. package/agents/planning/requirements-analyst.md +84 -84
  28. package/agents/planning/ux-advisor.md +83 -83
  29. package/agents/qa/acceptance-tester.md +86 -86
  30. package/agents/qa/edge-case-finder.md +93 -93
  31. package/agents/refactor-cleaner.md +143 -143
  32. package/agents/research/best-practices-agent.md +199 -199
  33. package/agents/research/codebase-patterns-agent.md +157 -157
  34. package/agents/research/framework-docs-agent.md +188 -188
  35. package/agents/research/security-advisory-agent.md +213 -213
  36. package/agents/review/architecture-reviewer.md +107 -107
  37. package/agents/review/complexity-reviewer.md +116 -116
  38. package/agents/review/data-integrity-reviewer.md +88 -88
  39. package/agents/review/git-history-reviewer.md +103 -103
  40. package/agents/review/performance-reviewer.md +86 -86
  41. package/agents/review/python-reviewer.md +150 -150
  42. package/agents/review/rails-reviewer.md +139 -139
  43. package/agents/review/react-reviewer.md +144 -144
  44. package/agents/review/security-reviewer.md +80 -80
  45. package/agents/review/simplicity-reviewer.md +140 -140
  46. package/agents/review/test-coverage-reviewer.md +116 -116
  47. package/agents/review/typescript-reviewer.md +127 -127
  48. package/agents/searcher.md +54 -54
  49. package/agents/simplifier.md +120 -120
  50. package/agents/tester.md +49 -49
  51. package/agents/ui/ui-a11y-auditor.md +93 -93
  52. package/agents/ui/ui-antipattern-detector.md +94 -94
  53. package/agents/ui/ui-dataviz-advisor.md +69 -69
  54. package/agents/ui/ui-design-system-gen.md +57 -57
  55. package/agents/ui/ui-industry-analyzer.md +49 -49
  56. package/agents/ui/ui-layout-architect.md +65 -65
  57. package/agents/ui/ui-stack-implementer.md +68 -68
  58. package/agents/ui/ux-compliance-reviewer.md +81 -81
  59. package/agents/ui-previewer.md +258 -258
  60. package/commands/vibe.analyze.md +379 -379
  61. package/commands/vibe.event.md +163 -0
  62. package/commands/vibe.review.md +607 -607
  63. package/commands/vibe.run.md +2217 -2124
  64. package/commands/vibe.spec.md +1195 -1195
  65. package/commands/vibe.spec.review.md +569 -569
  66. package/commands/vibe.trace.md +50 -0
  67. package/commands/vibe.utils.md +413 -413
  68. package/commands/vibe.verify.md +484 -484
  69. package/dist/__tests__/architecture.test.d.ts +2 -0
  70. package/dist/__tests__/architecture.test.d.ts.map +1 -0
  71. package/dist/__tests__/architecture.test.js +207 -0
  72. package/dist/__tests__/architecture.test.js.map +1 -0
  73. package/dist/cli/auth.js +3 -3
  74. package/dist/cli/auth.js.map +1 -1
  75. package/dist/cli/collaborator.js +52 -52
  76. package/dist/cli/commands/evolution.js +12 -12
  77. package/dist/cli/commands/info.d.ts.map +1 -1
  78. package/dist/cli/commands/info.js +45 -81
  79. package/dist/cli/commands/info.js.map +1 -1
  80. package/dist/cli/commands/init.js +5 -5
  81. package/dist/cli/commands/remove.js +14 -14
  82. package/dist/cli/commands/sentinel.js +27 -27
  83. package/dist/cli/commands/skills.js +5 -5
  84. package/dist/cli/commands/slack.js +10 -10
  85. package/dist/cli/commands/telegram.js +12 -12
  86. package/dist/cli/detect.d.ts.map +1 -1
  87. package/dist/cli/detect.js +55 -32
  88. package/dist/cli/detect.js.map +1 -1
  89. package/dist/cli/index.d.ts +1 -1
  90. package/dist/cli/index.d.ts.map +1 -1
  91. package/dist/cli/index.js +52 -52
  92. package/dist/cli/index.js.map +1 -1
  93. package/dist/cli/llm/claude-commands.js +16 -16
  94. package/dist/cli/llm/config.js +18 -18
  95. package/dist/cli/llm/gemini-commands.js +16 -16
  96. package/dist/cli/llm/gpt-commands.js +19 -19
  97. package/dist/cli/llm/help.js +21 -21
  98. package/dist/cli/postinstall/constants.d.ts.map +1 -1
  99. package/dist/cli/postinstall/constants.js +24 -0
  100. package/dist/cli/postinstall/constants.js.map +1 -1
  101. package/dist/cli/postinstall/cursor-agents.js +32 -32
  102. package/dist/cli/postinstall/cursor-rules.js +83 -83
  103. package/dist/cli/postinstall/cursor-skills.js +743 -743
  104. package/dist/cli/setup/Provisioner.js +42 -42
  105. package/dist/infra/lib/AutomationLevel.d.ts +48 -0
  106. package/dist/infra/lib/AutomationLevel.d.ts.map +1 -0
  107. package/dist/infra/lib/AutomationLevel.js +157 -0
  108. package/dist/infra/lib/AutomationLevel.js.map +1 -0
  109. package/dist/infra/lib/DecisionTracer.d.ts +81 -0
  110. package/dist/infra/lib/DecisionTracer.d.ts.map +1 -0
  111. package/dist/infra/lib/DecisionTracer.js +135 -0
  112. package/dist/infra/lib/DecisionTracer.js.map +1 -0
  113. package/dist/infra/lib/DeepInit.js +24 -24
  114. package/dist/infra/lib/InteractiveCheckpoint.d.ts +75 -0
  115. package/dist/infra/lib/InteractiveCheckpoint.d.ts.map +1 -0
  116. package/dist/infra/lib/InteractiveCheckpoint.js +179 -0
  117. package/dist/infra/lib/InteractiveCheckpoint.js.map +1 -0
  118. package/dist/infra/lib/IterationTracker.d.ts +44 -0
  119. package/dist/infra/lib/IterationTracker.d.ts.map +1 -1
  120. package/dist/infra/lib/IterationTracker.js +267 -12
  121. package/dist/infra/lib/IterationTracker.js.map +1 -1
  122. package/dist/infra/lib/LoopBreaker.d.ts +56 -0
  123. package/dist/infra/lib/LoopBreaker.d.ts.map +1 -0
  124. package/dist/infra/lib/LoopBreaker.js +109 -0
  125. package/dist/infra/lib/LoopBreaker.js.map +1 -0
  126. package/dist/infra/lib/PythonParser.js +108 -108
  127. package/dist/infra/lib/ReviewRace.js +96 -96
  128. package/dist/infra/lib/SkillFrontmatter.js +28 -28
  129. package/dist/infra/lib/SkillQualityGate.js +9 -9
  130. package/dist/infra/lib/SkillRepository.js +159 -159
  131. package/dist/infra/lib/UltraQA.js +99 -99
  132. package/dist/infra/lib/VerificationLoop.d.ts +105 -0
  133. package/dist/infra/lib/VerificationLoop.d.ts.map +1 -0
  134. package/dist/infra/lib/VerificationLoop.js +189 -0
  135. package/dist/infra/lib/VerificationLoop.js.map +1 -0
  136. package/dist/infra/lib/__tests__/AutomationLevel.test.d.ts +2 -0
  137. package/dist/infra/lib/__tests__/AutomationLevel.test.d.ts.map +1 -0
  138. package/dist/infra/lib/__tests__/AutomationLevel.test.js +297 -0
  139. package/dist/infra/lib/__tests__/AutomationLevel.test.js.map +1 -0
  140. package/dist/infra/lib/__tests__/DecisionTracer.test.d.ts +2 -0
  141. package/dist/infra/lib/__tests__/DecisionTracer.test.d.ts.map +1 -0
  142. package/dist/infra/lib/__tests__/DecisionTracer.test.js +274 -0
  143. package/dist/infra/lib/__tests__/DecisionTracer.test.js.map +1 -0
  144. package/dist/infra/lib/__tests__/InteractiveCheckpoint.test.d.ts +2 -0
  145. package/dist/infra/lib/__tests__/InteractiveCheckpoint.test.d.ts.map +1 -0
  146. package/dist/infra/lib/__tests__/InteractiveCheckpoint.test.js +350 -0
  147. package/dist/infra/lib/__tests__/InteractiveCheckpoint.test.js.map +1 -0
  148. package/dist/infra/lib/__tests__/LoopBreaker.test.d.ts +2 -0
  149. package/dist/infra/lib/__tests__/LoopBreaker.test.d.ts.map +1 -0
  150. package/dist/infra/lib/__tests__/LoopBreaker.test.js +340 -0
  151. package/dist/infra/lib/__tests__/LoopBreaker.test.js.map +1 -0
  152. package/dist/infra/lib/__tests__/VerificationLoop.test.d.ts +2 -0
  153. package/dist/infra/lib/__tests__/VerificationLoop.test.d.ts.map +1 -0
  154. package/dist/infra/lib/__tests__/VerificationLoop.test.js +486 -0
  155. package/dist/infra/lib/__tests__/VerificationLoop.test.js.map +1 -0
  156. package/dist/infra/lib/autonomy/AuditStore.js +41 -41
  157. package/dist/infra/lib/autonomy/ConfirmationStore.js +30 -30
  158. package/dist/infra/lib/autonomy/EventOutbox.js +38 -38
  159. package/dist/infra/lib/autonomy/PolicyEngine.d.ts +3 -3
  160. package/dist/infra/lib/autonomy/PolicyEngine.js +18 -18
  161. package/dist/infra/lib/autonomy/SecuritySentinel.js +1 -1
  162. package/dist/infra/lib/autonomy/SuggestionStore.js +33 -33
  163. package/dist/infra/lib/embedding/VectorStore.js +22 -22
  164. package/dist/infra/lib/embedding/__tests__/EmbeddingProvider.test.js +4 -0
  165. package/dist/infra/lib/embedding/__tests__/EmbeddingProvider.test.js.map +1 -1
  166. package/dist/infra/lib/evolution/AgentAnalyzer.js +10 -10
  167. package/dist/infra/lib/evolution/DeprecationDetector.d.ts +68 -0
  168. package/dist/infra/lib/evolution/DeprecationDetector.d.ts.map +1 -0
  169. package/dist/infra/lib/evolution/DeprecationDetector.js +207 -0
  170. package/dist/infra/lib/evolution/DeprecationDetector.js.map +1 -0
  171. package/dist/infra/lib/evolution/DescriptionOptimizer.js +21 -21
  172. package/dist/infra/lib/evolution/GenerationRegistry.js +36 -36
  173. package/dist/infra/lib/evolution/InsightStore.js +90 -90
  174. package/dist/infra/lib/evolution/ParityTester.d.ts +74 -0
  175. package/dist/infra/lib/evolution/ParityTester.d.ts.map +1 -0
  176. package/dist/infra/lib/evolution/ParityTester.js +238 -0
  177. package/dist/infra/lib/evolution/ParityTester.js.map +1 -0
  178. package/dist/infra/lib/evolution/RollbackManager.js +5 -5
  179. package/dist/infra/lib/evolution/SkillBenchmark.js +23 -23
  180. package/dist/infra/lib/evolution/SkillEvalRunner.js +50 -50
  181. package/dist/infra/lib/evolution/SkillGapDetector.js +10 -10
  182. package/dist/infra/lib/evolution/UsageTracker.js +28 -28
  183. package/dist/infra/lib/evolution/__tests__/deprecation.test.d.ts +2 -0
  184. package/dist/infra/lib/evolution/__tests__/deprecation.test.d.ts.map +1 -0
  185. package/dist/infra/lib/evolution/__tests__/deprecation.test.js +251 -0
  186. package/dist/infra/lib/evolution/__tests__/deprecation.test.js.map +1 -0
  187. package/dist/infra/lib/evolution/__tests__/parity.test.d.ts +2 -0
  188. package/dist/infra/lib/evolution/__tests__/parity.test.d.ts.map +1 -0
  189. package/dist/infra/lib/evolution/__tests__/parity.test.js +319 -0
  190. package/dist/infra/lib/evolution/__tests__/parity.test.js.map +1 -0
  191. package/dist/infra/lib/evolution/index.d.ts +4 -0
  192. package/dist/infra/lib/evolution/index.d.ts.map +1 -1
  193. package/dist/infra/lib/evolution/index.js +3 -0
  194. package/dist/infra/lib/evolution/index.js.map +1 -1
  195. package/dist/infra/lib/gemini/orchestration.js +5 -5
  196. package/dist/infra/lib/gpt/orchestration.js +4 -4
  197. package/dist/infra/lib/gpt/specializations.d.ts +1 -1
  198. package/dist/infra/lib/gpt/specializations.js +1 -1
  199. package/dist/infra/lib/memory/KnowledgeGraph.js +4 -4
  200. package/dist/infra/lib/memory/MemorySearch.js +57 -57
  201. package/dist/infra/lib/memory/MemoryStorage.js +181 -181
  202. package/dist/infra/lib/memory/ObservationStore.js +28 -28
  203. package/dist/infra/lib/memory/ReflectionStore.js +30 -30
  204. package/dist/infra/lib/memory/SessionRAGRetriever.js +7 -7
  205. package/dist/infra/lib/memory/SessionRAGStore.js +225 -225
  206. package/dist/infra/lib/memory/SessionSummarizer.js +9 -9
  207. package/dist/infra/lib/telemetry/SkillTelemetry.d.ts +6 -0
  208. package/dist/infra/lib/telemetry/SkillTelemetry.d.ts.map +1 -1
  209. package/dist/infra/lib/telemetry/SkillTelemetry.js +11 -0
  210. package/dist/infra/lib/telemetry/SkillTelemetry.js.map +1 -1
  211. package/dist/infra/orchestrator/AgentManager.js +12 -12
  212. package/dist/infra/orchestrator/AgentRegistry.js +65 -65
  213. package/dist/infra/orchestrator/BackgroundManager.d.ts.map +1 -1
  214. package/dist/infra/orchestrator/BackgroundManager.js +2 -0
  215. package/dist/infra/orchestrator/BackgroundManager.js.map +1 -1
  216. package/dist/infra/orchestrator/MultiLlmResearch.js +8 -8
  217. package/dist/infra/orchestrator/PhasePipeline.js +1 -1
  218. package/dist/infra/orchestrator/PhasePipeline.js.map +1 -1
  219. package/dist/infra/orchestrator/SwarmOrchestrator.test.js +16 -16
  220. package/dist/infra/orchestrator/parallelResearch.js +24 -24
  221. package/dist/tools/convention/analyzeComplexity.test.js +115 -115
  222. package/dist/tools/convention/validateCodeQuality.test.js +104 -104
  223. package/dist/tools/index.d.ts +16 -19
  224. package/dist/tools/index.d.ts.map +1 -1
  225. package/dist/tools/index.js +15 -27
  226. package/dist/tools/index.js.map +1 -1
  227. package/dist/tools/memory/createMemoryTimeline.js +10 -10
  228. package/dist/tools/memory/getMemoryGraph.js +12 -12
  229. package/dist/tools/memory/getSessionContext.js +9 -9
  230. package/dist/tools/memory/linkMemories.js +14 -14
  231. package/dist/tools/memory/listMemories.js +4 -4
  232. package/dist/tools/memory/recallMemory.js +4 -4
  233. package/dist/tools/memory/saveMemory.js +4 -4
  234. package/dist/tools/memory/searchMemoriesAdvanced.js +23 -23
  235. package/dist/tools/memory/startSession.js +1 -1
  236. package/dist/tools/memory/startSession.js.map +1 -1
  237. package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
  238. package/dist/tools/semantic/astGrep.test.js +6 -6
  239. package/dist/tools/spec/index.d.ts +0 -4
  240. package/dist/tools/spec/index.d.ts.map +1 -1
  241. package/dist/tools/spec/index.js +0 -4
  242. package/dist/tools/spec/index.js.map +1 -1
  243. package/dist/tools/spec/prdParser.test.js +171 -171
  244. package/dist/tools/spec/specGenerator.js +169 -169
  245. package/dist/tools/spec/traceabilityMatrix.js +64 -64
  246. package/dist/tools/spec/traceabilityMatrix.test.js +28 -28
  247. package/hooks/gemini-hooks.json +73 -73
  248. package/hooks/hooks.json +137 -137
  249. package/hooks/scripts/code-check.js +77 -77
  250. package/hooks/scripts/context-save.js +212 -212
  251. package/hooks/scripts/evolution-engine.js +69 -0
  252. package/hooks/scripts/hud-status.js +291 -291
  253. package/hooks/scripts/keyword-detector.js +214 -214
  254. package/hooks/scripts/llm-orchestrate.js +475 -475
  255. package/hooks/scripts/post-edit.js +32 -32
  256. package/hooks/scripts/pre-tool-guard.js +125 -125
  257. package/hooks/scripts/prompt-dispatcher.js +185 -185
  258. package/hooks/scripts/sentinel-guard.js +104 -104
  259. package/hooks/scripts/session-start.js +106 -106
  260. package/hooks/scripts/skill-injector.js +83 -0
  261. package/hooks/scripts/stop-notify.js +209 -209
  262. package/hooks/scripts/utils.js +100 -100
  263. package/languages/csharp-unity.md +515 -515
  264. package/languages/gdscript-godot.md +470 -470
  265. package/languages/ruby-rails.md +489 -489
  266. package/languages/typescript-angular.md +433 -433
  267. package/languages/typescript-astro.md +416 -416
  268. package/languages/typescript-electron.md +406 -406
  269. package/languages/typescript-nestjs.md +524 -524
  270. package/languages/typescript-svelte.md +407 -407
  271. package/languages/typescript-tauri.md +365 -365
  272. package/package.json +101 -123
  273. package/skills/agents-md/SKILL.md +120 -120
  274. package/skills/arch-guard/SKILL.md +180 -180
  275. package/skills/brand-assets/SKILL.md +146 -146
  276. package/skills/capability-loop/SKILL.md +167 -167
  277. package/skills/characterization-test/SKILL.md +206 -206
  278. package/skills/commerce-patterns/SKILL.md +63 -63
  279. package/skills/commit-push-pr/SKILL.md +75 -75
  280. package/skills/context7-usage/SKILL.md +105 -105
  281. package/skills/core-capabilities/SKILL.md +13 -13
  282. package/skills/e2e-commerce/SKILL.md +61 -61
  283. package/skills/event-comms/SKILL.md +161 -0
  284. package/skills/event-ops/SKILL.md +197 -0
  285. package/skills/event-planning/SKILL.md +131 -0
  286. package/skills/exec-plan/SKILL.md +147 -147
  287. package/skills/frontend-design/SKILL.md +12 -12
  288. package/skills/git-worktree/SKILL.md +72 -72
  289. package/skills/handoff/SKILL.md +109 -109
  290. package/skills/parallel-research/SKILL.md +87 -87
  291. package/skills/priority-todos/SKILL.md +63 -63
  292. package/skills/seo-checklist/SKILL.md +57 -57
  293. package/skills/techdebt/SKILL.md +122 -122
  294. package/skills/tool-fallback/SKILL.md +103 -103
  295. package/skills/typescript-advanced-types/SKILL.md +66 -66
  296. package/skills/ui-ux-pro-max/SKILL.md +221 -221
  297. package/skills/vercel-react-best-practices/SKILL.md +59 -59
  298. package/skills/video-production/SKILL.md +51 -51
  299. package/vibe/config.json +29 -29
  300. package/vibe/constitution.md +227 -227
  301. package/vibe/rules/principles/communication-guide.md +98 -98
  302. package/vibe/rules/principles/development-philosophy.md +52 -52
  303. package/vibe/rules/principles/quick-start.md +102 -102
  304. package/vibe/rules/quality/bdd-contract-testing.md +393 -393
  305. package/vibe/rules/quality/checklist.md +276 -276
  306. package/vibe/rules/quality/performance.md +236 -236
  307. package/vibe/rules/quality/testing-strategy.md +440 -440
  308. package/vibe/rules/standards/anti-patterns.md +541 -541
  309. package/vibe/rules/standards/code-structure.md +291 -291
  310. package/vibe/rules/standards/complexity-metrics.md +313 -313
  311. package/vibe/rules/standards/git-workflow.md +237 -237
  312. package/vibe/rules/standards/naming-conventions.md +198 -198
  313. package/vibe/rules/standards/security.md +305 -305
  314. package/vibe/rules/writing/document-style.md +74 -74
  315. package/vibe/setup.sh +31 -31
  316. package/vibe/templates/constitution-template.md +252 -252
  317. package/vibe/templates/contract-backend-template.md +526 -526
  318. package/vibe/templates/contract-frontend-template.md +599 -599
  319. package/vibe/templates/feature-template.md +96 -96
  320. package/vibe/templates/spec-template.md +221 -221
  321. package/vibe/ui-ux-data/charts.csv +26 -26
  322. package/vibe/ui-ux-data/colors.csv +97 -97
  323. package/vibe/ui-ux-data/icons.csv +101 -101
  324. package/vibe/ui-ux-data/landing.csv +31 -31
  325. package/vibe/ui-ux-data/products.csv +96 -96
  326. package/vibe/ui-ux-data/react-performance.csv +45 -45
  327. package/vibe/ui-ux-data/stacks/astro.csv +54 -54
  328. package/vibe/ui-ux-data/stacks/flutter.csv +53 -53
  329. package/vibe/ui-ux-data/stacks/html-tailwind.csv +56 -56
  330. package/vibe/ui-ux-data/stacks/jetpack-compose.csv +53 -53
  331. package/vibe/ui-ux-data/stacks/nextjs.csv +53 -53
  332. package/vibe/ui-ux-data/stacks/nuxt-ui.csv +51 -51
  333. package/vibe/ui-ux-data/stacks/nuxtjs.csv +59 -59
  334. package/vibe/ui-ux-data/stacks/react-native.csv +52 -52
  335. package/vibe/ui-ux-data/stacks/react.csv +54 -54
  336. package/vibe/ui-ux-data/stacks/shadcn.csv +61 -61
  337. package/vibe/ui-ux-data/stacks/svelte.csv +54 -54
  338. package/vibe/ui-ux-data/stacks/swiftui.csv +51 -51
  339. package/vibe/ui-ux-data/stacks/vue.csv +50 -50
  340. package/vibe/ui-ux-data/styles.csv +68 -68
  341. package/vibe/ui-ux-data/typography.csv +57 -57
  342. package/vibe/ui-ux-data/ui-reasoning.csv +101 -101
  343. package/vibe/ui-ux-data/ux-guidelines.csv +99 -99
  344. package/vibe/ui-ux-data/version.json +31 -31
  345. package/vibe/ui-ux-data/web-interface.csv +31 -31
@@ -153,48 +153,48 @@ export class Provisioner {
153
153
  const stateSection = details.stateManagement.length > 0
154
154
  ? details.stateManagement.join(', ')
155
155
  : 'N/A';
156
- return `# [Feature Name] SPEC
157
-
158
- ## Overview
159
- <!-- Brief description of the feature -->
160
-
161
- ## Tech Stack
162
- ${stackList}
163
-
164
- ### Infrastructure
165
- - **Databases**: ${dbSection}
166
- - **State Management**: ${stateSection}
167
-
168
- ## Problem Statement
169
- <!-- What problem does this solve? -->
170
-
171
- ## Proposed Solution
172
- <!-- High-level approach -->
173
-
174
- ## Requirements
175
-
176
- ### Functional
177
- 1. <!-- Requirement 1 -->
178
-
179
- ### Non-Functional
180
- 1. <!-- Performance, security, accessibility -->
181
-
182
- ## API Design
183
- <!-- Endpoints, request/response schemas -->
184
-
185
- ## Data Model
186
- <!-- Schema changes, migrations -->
187
-
188
- ## Test Strategy
189
- - Unit tests: <!-- scope -->
190
- - Integration tests: <!-- scope -->
191
- - E2E tests: <!-- scope -->
192
-
193
- ## Acceptance Criteria
194
- - [ ] <!-- Criterion 1 -->
195
-
196
- ## References
197
- <!-- Links to relevant docs, designs, PRs -->
156
+ return `# [Feature Name] SPEC
157
+
158
+ ## Overview
159
+ <!-- Brief description of the feature -->
160
+
161
+ ## Tech Stack
162
+ ${stackList}
163
+
164
+ ### Infrastructure
165
+ - **Databases**: ${dbSection}
166
+ - **State Management**: ${stateSection}
167
+
168
+ ## Problem Statement
169
+ <!-- What problem does this solve? -->
170
+
171
+ ## Proposed Solution
172
+ <!-- High-level approach -->
173
+
174
+ ## Requirements
175
+
176
+ ### Functional
177
+ 1. <!-- Requirement 1 -->
178
+
179
+ ### Non-Functional
180
+ 1. <!-- Performance, security, accessibility -->
181
+
182
+ ## API Design
183
+ <!-- Endpoints, request/response schemas -->
184
+
185
+ ## Data Model
186
+ <!-- Schema changes, migrations -->
187
+
188
+ ## Test Strategy
189
+ - Unit tests: <!-- scope -->
190
+ - Integration tests: <!-- scope -->
191
+ - E2E tests: <!-- scope -->
192
+
193
+ ## Acceptance Criteria
194
+ - [ ] <!-- Criterion 1 -->
195
+
196
+ ## References
197
+ <!-- Links to relevant docs, designs, PRs -->
198
198
  `;
199
199
  }
200
200
  }
@@ -0,0 +1,48 @@
1
+ /**
2
+ * AutomationLevel — 자동화 레벨 시스템
3
+ *
4
+ * L0: Manual — 모든 단계에서 사용자 확인
5
+ * L1: Guided — AI 제안, 사용자 결정
6
+ * L2: Semi-auto — 기본값, 주요 지점에서 확인
7
+ * L3: Auto — 자동 진행, 체크포인트만 확인 (ultrawork)
8
+ * L4: Full-auto — 완전 자동, 달성률 기반 반복 (ralph)
9
+ */
10
+ export type AutomationLevelNumber = 0 | 1 | 2 | 3 | 4;
11
+ export interface AutomationLevel {
12
+ level: AutomationLevelNumber;
13
+ name: string;
14
+ description: string;
15
+ /** Whether to auto-advance between phases */
16
+ autoAdvance: boolean;
17
+ /** Whether to auto-retry on failure */
18
+ autoRetry: boolean;
19
+ /** Max retries (0 = no retry) */
20
+ maxRetries: number;
21
+ /** Whether to require user confirmation at checkpoints */
22
+ requireCheckpoints: boolean;
23
+ /** Whether to use parallel agents */
24
+ parallelAgents: boolean;
25
+ }
26
+ export type AutomationAction = 'phase_advance' | 'architecture_choice' | 'implementation_scope' | 'fix_strategy' | 'retry' | 'destructive';
27
+ export interface TrustScore {
28
+ score: number;
29
+ level: AutomationLevelNumber;
30
+ consecutiveSuccesses: number;
31
+ consecutiveFailures: number;
32
+ totalActions: number;
33
+ }
34
+ export declare const AUTOMATION_LEVELS: Record<AutomationLevelNumber, AutomationLevel>;
35
+ /** Magic keyword → level mapping */
36
+ export declare const KEYWORD_LEVEL_MAP: Record<string, AutomationLevelNumber>;
37
+ /** Detect automation level from user input text */
38
+ export declare function detectAutomationLevel(input: string): AutomationLevel;
39
+ /** Get level by number */
40
+ export declare function getAutomationLevel(level: AutomationLevelNumber): AutomationLevel;
41
+ /** Check if a specific action needs user confirmation at the given level */
42
+ export declare function needsConfirmation(level: AutomationLevelNumber, action: AutomationAction): boolean;
43
+ export declare function createTrustScore(): TrustScore;
44
+ export declare function recordTrustSuccess(trust: TrustScore): TrustScore;
45
+ export declare function recordTrustFailure(trust: TrustScore): TrustScore;
46
+ /** Get recommended level based on trust score */
47
+ export declare function getRecommendedLevel(trust: TrustScore): AutomationLevelNumber;
48
+ //# sourceMappingURL=AutomationLevel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutomationLevel.d.ts","sourceRoot":"","sources":["../../../src/infra/lib/AutomationLevel.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,qBAAqB,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,6CAA6C;IAC7C,WAAW,EAAE,OAAO,CAAC;IACrB,uCAAuC;IACvC,SAAS,EAAE,OAAO,CAAC;IACnB,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,kBAAkB,EAAE,OAAO,CAAC;IAC5B,qCAAqC;IACrC,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,MAAM,gBAAgB,GACxB,eAAe,GACf,qBAAqB,GACrB,sBAAsB,GACtB,cAAc,GACd,OAAO,GACP,aAAa,CAAC;AAElB,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,qBAAqB,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,qBAAqB,EAAE,eAAe,CAmD5E,CAAC;AAEF,oCAAoC;AACpC,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CASnE,CAAC;AA2BF,mDAAmD;AACnD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CASpE;AAED,0BAA0B;AAC1B,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,GAAG,eAAe,CAEhF;AAED,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,qBAAqB,EAC5B,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAET;AAED,wBAAgB,gBAAgB,IAAI,UAAU,CAQ7C;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAahE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAahE;AAED,iDAAiD;AACjD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,qBAAqB,CAE5E"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * AutomationLevel — 자동화 레벨 시스템
3
+ *
4
+ * L0: Manual — 모든 단계에서 사용자 확인
5
+ * L1: Guided — AI 제안, 사용자 결정
6
+ * L2: Semi-auto — 기본값, 주요 지점에서 확인
7
+ * L3: Auto — 자동 진행, 체크포인트만 확인 (ultrawork)
8
+ * L4: Full-auto — 완전 자동, 달성률 기반 반복 (ralph)
9
+ */
10
+ export const AUTOMATION_LEVELS = {
11
+ 0: {
12
+ level: 0,
13
+ name: 'Manual',
14
+ description: 'Every step requires user confirmation',
15
+ autoAdvance: false,
16
+ autoRetry: false,
17
+ maxRetries: 0,
18
+ requireCheckpoints: true,
19
+ parallelAgents: false,
20
+ },
21
+ 1: {
22
+ level: 1,
23
+ name: 'Guided',
24
+ description: 'AI suggests, user decides',
25
+ autoAdvance: false,
26
+ autoRetry: false,
27
+ maxRetries: 0,
28
+ requireCheckpoints: true,
29
+ parallelAgents: false,
30
+ },
31
+ 2: {
32
+ level: 2,
33
+ name: 'Semi-auto',
34
+ description: 'Auto-execute with key checkpoints',
35
+ autoAdvance: true,
36
+ autoRetry: true,
37
+ maxRetries: 2,
38
+ requireCheckpoints: true,
39
+ parallelAgents: false,
40
+ },
41
+ 3: {
42
+ level: 3,
43
+ name: 'Auto',
44
+ description: 'Auto-advance, checkpoint-only review',
45
+ autoAdvance: true,
46
+ autoRetry: true,
47
+ maxRetries: 3,
48
+ requireCheckpoints: true,
49
+ parallelAgents: true,
50
+ },
51
+ 4: {
52
+ level: 4,
53
+ name: 'Full-auto',
54
+ description: 'Fully autonomous, metric-driven iteration',
55
+ autoAdvance: true,
56
+ autoRetry: true,
57
+ maxRetries: 5,
58
+ requireCheckpoints: false,
59
+ parallelAgents: true,
60
+ },
61
+ };
62
+ /** Magic keyword → level mapping */
63
+ export const KEYWORD_LEVEL_MAP = {
64
+ manual: 0,
65
+ guided: 1,
66
+ quick: 2,
67
+ ultrawork: 3,
68
+ ulw: 3,
69
+ ralph: 4,
70
+ ralplan: 4,
71
+ verify: 1,
72
+ };
73
+ const CONFIRMATION_MATRIX = {
74
+ destructive: [0, 1, 2, 3],
75
+ phase_advance: [0, 1],
76
+ architecture_choice: [0, 1, 2],
77
+ implementation_scope: [0, 1, 2],
78
+ fix_strategy: [0, 1],
79
+ retry: [0],
80
+ };
81
+ const TRUST_SCORE_DEFAULTS = {
82
+ INITIAL: 50,
83
+ SUCCESS_DELTA: 5,
84
+ FAILURE_DELTA: 15,
85
+ MAX: 100,
86
+ MIN: 0,
87
+ };
88
+ const TRUST_LEVEL_THRESHOLDS = [
89
+ { max: 20, level: 0 },
90
+ { max: 40, level: 1 },
91
+ { max: 60, level: 2 },
92
+ { max: 80, level: 3 },
93
+ { max: 100, level: 4 },
94
+ ];
95
+ /** Detect automation level from user input text */
96
+ export function detectAutomationLevel(input) {
97
+ const lower = input.toLowerCase();
98
+ for (const [keyword, levelNum] of Object.entries(KEYWORD_LEVEL_MAP)) {
99
+ const pattern = new RegExp(`\\b${keyword}\\b`);
100
+ if (pattern.test(lower)) {
101
+ return AUTOMATION_LEVELS[levelNum];
102
+ }
103
+ }
104
+ return AUTOMATION_LEVELS[2];
105
+ }
106
+ /** Get level by number */
107
+ export function getAutomationLevel(level) {
108
+ return AUTOMATION_LEVELS[level];
109
+ }
110
+ /** Check if a specific action needs user confirmation at the given level */
111
+ export function needsConfirmation(level, action) {
112
+ return CONFIRMATION_MATRIX[action].includes(level);
113
+ }
114
+ export function createTrustScore() {
115
+ return {
116
+ score: TRUST_SCORE_DEFAULTS.INITIAL,
117
+ level: 2,
118
+ consecutiveSuccesses: 0,
119
+ consecutiveFailures: 0,
120
+ totalActions: 0,
121
+ };
122
+ }
123
+ export function recordTrustSuccess(trust) {
124
+ const score = Math.min(TRUST_SCORE_DEFAULTS.MAX, trust.score + TRUST_SCORE_DEFAULTS.SUCCESS_DELTA);
125
+ const updated = {
126
+ score,
127
+ level: scorToLevel(score),
128
+ consecutiveSuccesses: trust.consecutiveSuccesses + 1,
129
+ consecutiveFailures: 0,
130
+ totalActions: trust.totalActions + 1,
131
+ };
132
+ return updated;
133
+ }
134
+ export function recordTrustFailure(trust) {
135
+ const score = Math.max(TRUST_SCORE_DEFAULTS.MIN, trust.score - TRUST_SCORE_DEFAULTS.FAILURE_DELTA);
136
+ const updated = {
137
+ score,
138
+ level: scorToLevel(score),
139
+ consecutiveSuccesses: 0,
140
+ consecutiveFailures: trust.consecutiveFailures + 1,
141
+ totalActions: trust.totalActions + 1,
142
+ };
143
+ return updated;
144
+ }
145
+ /** Get recommended level based on trust score */
146
+ export function getRecommendedLevel(trust) {
147
+ return scorToLevel(trust.score);
148
+ }
149
+ function scorToLevel(score) {
150
+ for (const { max, level } of TRUST_LEVEL_THRESHOLDS) {
151
+ if (score <= max) {
152
+ return level;
153
+ }
154
+ }
155
+ return 4;
156
+ }
157
+ //# sourceMappingURL=AutomationLevel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutomationLevel.js","sourceRoot":"","sources":["../../../src/infra/lib/AutomationLevel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * DecisionTracer — AI decision audit trail
3
+ *
4
+ * All data is stored locally only (JSONL).
5
+ * File: ~/.vibe/analytics/decisions.jsonl
6
+ */
7
+ export interface DecisionRecord {
8
+ /** Schema version */
9
+ v: 1;
10
+ /** ISO 8601 timestamp */
11
+ ts: string;
12
+ /** Decision category */
13
+ category: DecisionCategory;
14
+ /** What was decided */
15
+ decision: string;
16
+ /** Why this was chosen (rationale) */
17
+ rationale: string;
18
+ /** What alternatives were considered */
19
+ alternatives: string[];
20
+ /** Context that informed the decision */
21
+ context: DecisionContext;
22
+ /** Outcome (filled later via updateOutcome) */
23
+ outcome?: DecisionOutcome;
24
+ /** Unique decision ID */
25
+ id: string;
26
+ }
27
+ export type DecisionCategory = 'architecture' | 'implementation' | 'fix_strategy' | 'verification' | 'retry' | 'scope_change' | 'tool_selection';
28
+ export interface DecisionContext {
29
+ /** Feature/SPEC being worked on */
30
+ feature?: string;
31
+ /** Current phase */
32
+ phase?: string;
33
+ /** Related file paths */
34
+ files: string[];
35
+ /** Automation level at time of decision */
36
+ automationLevel?: number;
37
+ }
38
+ export interface DecisionOutcome {
39
+ /** Whether the decision led to success */
40
+ success: boolean;
41
+ /** Impact description */
42
+ impact: string;
43
+ /** Timestamp of outcome recording */
44
+ recordedAt: string;
45
+ }
46
+ export interface DecisionInput {
47
+ category: DecisionCategory;
48
+ decision: string;
49
+ rationale: string;
50
+ alternatives?: string[];
51
+ context?: Partial<DecisionContext>;
52
+ }
53
+ export interface FeatureSummary {
54
+ feature: string;
55
+ totalDecisions: number;
56
+ byCategory: Record<string, number>;
57
+ successRate: number | null;
58
+ decisions: DecisionRecord[];
59
+ }
60
+ export declare class DecisionTracer {
61
+ private readonly logPath;
62
+ private readonly enabled;
63
+ constructor(analyticsDir: string, enabled?: boolean);
64
+ /** Record a new decision */
65
+ record(input: DecisionInput): DecisionRecord;
66
+ /** Update outcome for a previous decision */
67
+ updateOutcome(decisionId: string, outcome: Omit<DecisionOutcome, 'recordedAt'>): boolean;
68
+ /** Read all decisions */
69
+ readAll(): DecisionRecord[];
70
+ /** Query decisions by category */
71
+ queryByCategory(category: DecisionCategory): DecisionRecord[];
72
+ /** Query decisions by feature */
73
+ queryByFeature(feature: string): DecisionRecord[];
74
+ /** Get recent decisions (last N) */
75
+ getRecent(count: number): DecisionRecord[];
76
+ /** Summarize decisions for a feature */
77
+ summarizeFeature(feature: string): FeatureSummary;
78
+ /** Get log path */
79
+ getLogPath(): string;
80
+ }
81
+ //# sourceMappingURL=DecisionTracer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DecisionTracer.d.ts","sourceRoot":"","sources":["../../../src/infra/lib/DecisionTracer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,cAAc;IAC7B,qBAAqB;IACrB,CAAC,EAAE,CAAC,CAAC;IACL,yBAAyB;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,wBAAwB;IACxB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,yCAAyC;IACzC,OAAO,EAAE,eAAe,CAAC;IACzB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,yBAAyB;IACzB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,MAAM,gBAAgB,GACxB,cAAc,GACd,gBAAgB,GAChB,cAAc,GACd,cAAc,GACd,OAAO,GACP,cAAc,GACd,gBAAgB,CAAC;AAErB,MAAM,WAAW,eAAe;IAC9B,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yBAAyB;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,2CAA2C;IAC3C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,0CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,cAAc,EAAE,CAAC;CAC7B;AAuCD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;gBAEtB,YAAY,EAAE,MAAM,EAAE,OAAO,UAAO;IAShD,4BAA4B;IAC5B,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc;IAY5C,6CAA6C;IAC7C,aAAa,CACX,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,GAC3C,OAAO;IAqBV,yBAAyB;IACzB,OAAO,IAAI,cAAc,EAAE;IAU3B,kCAAkC;IAClC,eAAe,CAAC,QAAQ,EAAE,gBAAgB,GAAG,cAAc,EAAE;IAI7D,iCAAiC;IACjC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,EAAE;IAIjD,oCAAoC;IACpC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE;IAK1C,wCAAwC;IACxC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc;IAiBjD,mBAAmB;IACnB,UAAU,IAAI,MAAM;CAGrB"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * DecisionTracer — AI decision audit trail
3
+ *
4
+ * All data is stored locally only (JSONL).
5
+ * File: ~/.vibe/analytics/decisions.jsonl
6
+ */
7
+ import fs from 'fs';
8
+ import path from 'path';
9
+ import crypto from 'crypto';
10
+ function buildRecord(input) {
11
+ return {
12
+ v: 1,
13
+ id: crypto.randomUUID(),
14
+ ts: new Date().toISOString(),
15
+ category: input.category,
16
+ decision: input.decision,
17
+ rationale: input.rationale,
18
+ alternatives: input.alternatives ?? [],
19
+ context: {
20
+ files: [],
21
+ ...input.context,
22
+ },
23
+ };
24
+ }
25
+ function parseLines(content) {
26
+ return content
27
+ .trim()
28
+ .split('\n')
29
+ .filter(line => line.trim().length > 0)
30
+ .flatMap(line => {
31
+ try {
32
+ return [JSON.parse(line)];
33
+ }
34
+ catch {
35
+ return [];
36
+ }
37
+ });
38
+ }
39
+ function computeSuccessRate(decisions) {
40
+ const withOutcome = decisions.filter(d => d.outcome !== undefined);
41
+ if (withOutcome.length === 0)
42
+ return null;
43
+ const successes = withOutcome.filter(d => d.outcome.success).length;
44
+ return successes / withOutcome.length;
45
+ }
46
+ export class DecisionTracer {
47
+ logPath;
48
+ enabled;
49
+ constructor(analyticsDir, enabled = true) {
50
+ this.logPath = path.join(analyticsDir, 'decisions.jsonl');
51
+ this.enabled = enabled;
52
+ if (enabled) {
53
+ fs.mkdirSync(analyticsDir, { recursive: true });
54
+ }
55
+ }
56
+ /** Record a new decision */
57
+ record(input) {
58
+ const record = buildRecord(input);
59
+ if (this.enabled) {
60
+ try {
61
+ fs.appendFileSync(this.logPath, JSON.stringify(record) + '\n');
62
+ }
63
+ catch {
64
+ // Silent fail — tracing should never break the tool
65
+ }
66
+ }
67
+ return record;
68
+ }
69
+ /** Update outcome for a previous decision */
70
+ updateOutcome(decisionId, outcome) {
71
+ if (!this.enabled)
72
+ return false;
73
+ const records = this.readAll();
74
+ const index = records.findIndex(r => r.id === decisionId);
75
+ if (index === -1)
76
+ return false;
77
+ records[index] = {
78
+ ...records[index],
79
+ outcome: { ...outcome, recordedAt: new Date().toISOString() },
80
+ };
81
+ try {
82
+ const content = records.map(r => JSON.stringify(r)).join('\n') + '\n';
83
+ fs.writeFileSync(this.logPath, content);
84
+ return true;
85
+ }
86
+ catch {
87
+ return false;
88
+ }
89
+ }
90
+ /** Read all decisions */
91
+ readAll() {
92
+ if (!fs.existsSync(this.logPath))
93
+ return [];
94
+ try {
95
+ const content = fs.readFileSync(this.logPath, 'utf-8');
96
+ return parseLines(content);
97
+ }
98
+ catch {
99
+ return [];
100
+ }
101
+ }
102
+ /** Query decisions by category */
103
+ queryByCategory(category) {
104
+ return this.readAll().filter(r => r.category === category);
105
+ }
106
+ /** Query decisions by feature */
107
+ queryByFeature(feature) {
108
+ return this.readAll().filter(r => r.context.feature === feature);
109
+ }
110
+ /** Get recent decisions (last N) */
111
+ getRecent(count) {
112
+ const all = this.readAll();
113
+ return all.slice(Math.max(0, all.length - count));
114
+ }
115
+ /** Summarize decisions for a feature */
116
+ summarizeFeature(feature) {
117
+ const decisions = this.queryByFeature(feature);
118
+ const byCategory = {};
119
+ for (const d of decisions) {
120
+ byCategory[d.category] = (byCategory[d.category] ?? 0) + 1;
121
+ }
122
+ return {
123
+ feature,
124
+ totalDecisions: decisions.length,
125
+ byCategory,
126
+ successRate: computeSuccessRate(decisions),
127
+ decisions,
128
+ };
129
+ }
130
+ /** Get log path */
131
+ getLogPath() {
132
+ return this.logPath;
133
+ }
134
+ }
135
+ //# sourceMappingURL=DecisionTracer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DecisionTracer.js","sourceRoot":"","sources":["../../../src/infra/lib/DecisionTracer.ts"],"names":[],"mappings":"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"}
@@ -216,30 +216,30 @@ export function generateNavigationHeader(dir, rootPath) {
216
216
  * Describe DeepInit workflow
217
217
  */
218
218
  export function describeDeepInitWorkflow() {
219
- return `
220
- ## DeepInit Workflow
221
-
222
- Hierarchical AI-readable documentation generation:
223
-
224
- \`\`\`
225
- project/
226
- ├── AGENTS.md ← Root documentation
227
- ├── src/
228
- │ ├── AGENTS.md ← <!-- Parent: ../AGENTS.md -->
229
- │ ├── components/
230
- │ │ └── AGENTS.md ← <!-- Parent: ../AGENTS.md -->
231
- │ └── services/
232
- │ └── AGENTS.md ← <!-- Parent: ../AGENTS.md -->
233
- └── tests/
234
- └── AGENTS.md ← <!-- Parent: ../AGENTS.md -->
235
- \`\`\`
236
-
237
- Features:
238
- - Parent references for navigation
239
- - Auto-detected purpose and conventions
240
- - Preserved manual notes on regeneration
241
- - Entry point identification
242
- - Child module linking
219
+ return `
220
+ ## DeepInit Workflow
221
+
222
+ Hierarchical AI-readable documentation generation:
223
+
224
+ \`\`\`
225
+ project/
226
+ ├── AGENTS.md ← Root documentation
227
+ ├── src/
228
+ │ ├── AGENTS.md ← <!-- Parent: ../AGENTS.md -->
229
+ │ ├── components/
230
+ │ │ └── AGENTS.md ← <!-- Parent: ../AGENTS.md -->
231
+ │ └── services/
232
+ │ └── AGENTS.md ← <!-- Parent: ../AGENTS.md -->
233
+ └── tests/
234
+ └── AGENTS.md ← <!-- Parent: ../AGENTS.md -->
235
+ \`\`\`
236
+
237
+ Features:
238
+ - Parent references for navigation
239
+ - Auto-detected purpose and conventions
240
+ - Preserved manual notes on regeneration
241
+ - Entry point identification
242
+ - Child module linking
243
243
  `.trim();
244
244
  }
245
245
  //# sourceMappingURL=DeepInit.js.map
@@ -0,0 +1,75 @@
1
+ /**
2
+ * InteractiveCheckpoint — Phase 전환 시 의사결정 게이트
3
+ *
4
+ * /vibe.run 워크플로우에서 주요 지점에 체크포인트를 삽입하여
5
+ * 사용자가 방향을 확인/수정할 수 있도록 함
6
+ */
7
+ export type CheckpointType = 'requirements_confirm' | 'architecture_choice' | 'implementation_scope' | 'verification_result' | 'fix_strategy';
8
+ export interface CheckpointOption {
9
+ /** Option key (e.g., 'a', 'b', 'c') */
10
+ key: string;
11
+ /** Option label */
12
+ label: string;
13
+ /** Detailed description */
14
+ description: string;
15
+ }
16
+ export interface Checkpoint {
17
+ /** Checkpoint type */
18
+ type: CheckpointType;
19
+ /** Title displayed to user */
20
+ title: string;
21
+ /** Context/summary shown to user */
22
+ summary: string;
23
+ /** Available options */
24
+ options: CheckpointOption[];
25
+ /** Default option key (if user doesn't choose) */
26
+ defaultOption: string;
27
+ /** Metadata */
28
+ metadata: Record<string, unknown>;
29
+ }
30
+ export interface CheckpointResult {
31
+ /** Which checkpoint was resolved */
32
+ type: CheckpointType;
33
+ /** Selected option key */
34
+ selectedOption: string;
35
+ /** Timestamp */
36
+ timestamp: string;
37
+ /** Whether this was auto-resolved (at high automation levels) */
38
+ autoResolved: boolean;
39
+ }
40
+ export interface CheckpointHistory {
41
+ feature: string;
42
+ results: CheckpointResult[];
43
+ }
44
+ /** Create a requirements confirmation checkpoint */
45
+ export declare function createRequirementsCheckpoint(requirements: string[], featureName: string): Checkpoint;
46
+ /** Create an architecture choice checkpoint with 3 approaches */
47
+ export declare function createArchitectureCheckpoint(options: Array<{
48
+ approach: string;
49
+ pros: string[];
50
+ cons: string[];
51
+ effort: string;
52
+ }>): Checkpoint;
53
+ /** Create an implementation scope checkpoint */
54
+ export declare function createScopeCheckpoint(files: Array<{
55
+ path: string;
56
+ action: 'create' | 'modify' | 'delete';
57
+ }>, estimatedLines: number): Checkpoint;
58
+ /** Create a verification result checkpoint */
59
+ export declare function createVerificationCheckpoint(achievementRate: number, failedRequirements: string[], iteration: number): Checkpoint;
60
+ /** Create a fix strategy checkpoint */
61
+ export declare function createFixStrategyCheckpoint(issues: Array<{
62
+ severity: 'critical' | 'warning' | 'info';
63
+ description: string;
64
+ }>): Checkpoint;
65
+ /** Format a checkpoint as readable prompt text */
66
+ export declare function formatCheckpoint(checkpoint: Checkpoint): string;
67
+ /** Resolve a checkpoint with user's choice */
68
+ export declare function resolveCheckpoint(checkpoint: Checkpoint, selectedKey: string): CheckpointResult;
69
+ /** Auto-resolve a checkpoint using the default option */
70
+ export declare function autoResolveCheckpoint(checkpoint: Checkpoint): CheckpointResult;
71
+ /** Create a new checkpoint history for a feature */
72
+ export declare function createHistory(feature: string): CheckpointHistory;
73
+ /** Append a result to history (immutable — returns new history) */
74
+ export declare function addToHistory(history: CheckpointHistory, result: CheckpointResult): CheckpointHistory;
75
+ //# sourceMappingURL=InteractiveCheckpoint.d.ts.map