@su-record/vibe 2.9.17 → 2.9.19

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 (449) hide show
  1. package/.env.example +37 -37
  2. package/LICENSE +21 -21
  3. package/agents/architect-low.md +41 -41
  4. package/agents/architect-medium.md +59 -59
  5. package/agents/architect.md +80 -80
  6. package/agents/build-error-resolver.md +115 -115
  7. package/agents/compounder.md +261 -261
  8. package/agents/diagrammer.md +178 -178
  9. package/agents/docs/api-documenter.md +99 -99
  10. package/agents/docs/changelog-writer.md +93 -93
  11. package/agents/e2e-tester.md +294 -294
  12. package/agents/event/event-comms.md +78 -78
  13. package/agents/event/event-content.md +68 -68
  14. package/agents/event/event-image.md +95 -95
  15. package/agents/event/event-ops.md +84 -84
  16. package/agents/event/event-scheduler.md +69 -69
  17. package/agents/event/event-speaker.md +86 -86
  18. package/agents/explorer-low.md +42 -42
  19. package/agents/explorer-medium.md +59 -59
  20. package/agents/explorer.md +48 -48
  21. package/agents/implementer-low.md +43 -43
  22. package/agents/implementer-medium.md +52 -52
  23. package/agents/implementer.md +54 -54
  24. package/agents/junior-mentor.md +141 -141
  25. package/agents/planning/requirements-analyst.md +84 -84
  26. package/agents/planning/ux-advisor.md +83 -83
  27. package/agents/qa/acceptance-tester.md +86 -86
  28. package/agents/qa/edge-case-finder.md +93 -93
  29. package/agents/qa/qa-coordinator.md +131 -131
  30. package/agents/refactor-cleaner.md +143 -143
  31. package/agents/research/best-practices-agent.md +199 -199
  32. package/agents/research/codebase-patterns-agent.md +157 -157
  33. package/agents/research/framework-docs-agent.md +188 -188
  34. package/agents/research/security-advisory-agent.md +213 -213
  35. package/agents/review/architecture-reviewer.md +107 -107
  36. package/agents/review/complexity-reviewer.md +116 -116
  37. package/agents/review/data-integrity-reviewer.md +88 -88
  38. package/agents/review/git-history-reviewer.md +103 -103
  39. package/agents/review/performance-reviewer.md +86 -86
  40. package/agents/review/python-reviewer.md +150 -150
  41. package/agents/review/rails-reviewer.md +139 -139
  42. package/agents/review/react-reviewer.md +144 -144
  43. package/agents/review/security-reviewer.md +80 -80
  44. package/agents/review/simplicity-reviewer.md +140 -140
  45. package/agents/review/test-coverage-reviewer.md +116 -116
  46. package/agents/review/typescript-reviewer.md +127 -127
  47. package/agents/searcher.md +54 -54
  48. package/agents/simplifier.md +120 -120
  49. package/agents/teams/debug-team.md +70 -70
  50. package/agents/teams/dev-team.md +88 -88
  51. package/agents/teams/docs-team.md +80 -80
  52. package/agents/teams/figma/figma-analyst.md +52 -52
  53. package/agents/teams/figma/figma-architect.md +112 -112
  54. package/agents/teams/figma/figma-auditor.md +82 -82
  55. package/agents/teams/figma/figma-builder.md +100 -100
  56. package/agents/teams/figma-team.md +85 -85
  57. package/agents/teams/fullstack-team.md +83 -83
  58. package/agents/teams/lite-team.md +69 -69
  59. package/agents/teams/migration-team.md +78 -78
  60. package/agents/teams/refactor-team.md +94 -94
  61. package/agents/teams/research-team.md +86 -86
  62. package/agents/teams/review-debate-team.md +125 -125
  63. package/agents/teams/security-team.md +81 -81
  64. package/agents/tester.md +49 -49
  65. package/agents/ui/ui-a11y-auditor.md +93 -93
  66. package/agents/ui/ui-antipattern-detector.md +102 -102
  67. package/agents/ui/ui-dataviz-advisor.md +69 -69
  68. package/agents/ui/ui-design-system-gen.md +57 -57
  69. package/agents/ui/ui-industry-analyzer.md +49 -49
  70. package/agents/ui/ui-layout-architect.md +65 -65
  71. package/agents/ui/ui-stack-implementer.md +68 -68
  72. package/agents/ui/ux-compliance-reviewer.md +81 -81
  73. package/agents/ui-previewer.md +258 -258
  74. package/commands/vibe.analyze.md +533 -533
  75. package/commands/vibe.docs.md +33 -33
  76. package/commands/vibe.event.md +163 -163
  77. package/commands/vibe.figma.md +584 -584
  78. package/commands/vibe.harness.md +177 -177
  79. package/commands/vibe.review.md +624 -624
  80. package/commands/vibe.run.md +1925 -1925
  81. package/commands/vibe.scaffold.md +195 -195
  82. package/commands/vibe.spec.md +565 -565
  83. package/commands/vibe.trace.md +276 -276
  84. package/commands/vibe.utils.md +413 -413
  85. package/commands/vibe.verify.md +519 -519
  86. package/dist/cli/collaborator.js +52 -52
  87. package/dist/cli/commands/codex-proxy.js +15 -15
  88. package/dist/cli/commands/config.js +9 -9
  89. package/dist/cli/commands/evolution.js +12 -12
  90. package/dist/cli/commands/figma.js +20 -20
  91. package/dist/cli/commands/info.js +52 -52
  92. package/dist/cli/commands/init.js +5 -5
  93. package/dist/cli/commands/remove.js +14 -14
  94. package/dist/cli/commands/sentinel.js +27 -27
  95. package/dist/cli/commands/skills.js +5 -5
  96. package/dist/cli/commands/slack.js +10 -10
  97. package/dist/cli/commands/stats.js +6 -6
  98. package/dist/cli/commands/telegram.js +12 -12
  99. package/dist/cli/detect.js +32 -32
  100. package/dist/cli/index.js +33 -33
  101. package/dist/cli/llm/claude-commands.js +16 -16
  102. package/dist/cli/llm/config.js +18 -18
  103. package/dist/cli/llm/gemini-commands.js +16 -16
  104. package/dist/cli/llm/gpt-commands.js +19 -19
  105. package/dist/cli/llm/help.js +21 -21
  106. package/dist/cli/postinstall/cursor-agents.js +32 -32
  107. package/dist/cli/postinstall/cursor-rules.js +83 -83
  108. package/dist/cli/postinstall/cursor-skills.js +743 -743
  109. package/dist/cli/setup/GlobalInstaller.d.ts.map +1 -1
  110. package/dist/cli/setup/GlobalInstaller.js +9 -0
  111. package/dist/cli/setup/GlobalInstaller.js.map +1 -1
  112. package/dist/cli/setup/Provisioner.js +42 -42
  113. package/dist/infra/lib/DeepInit.js +24 -24
  114. package/dist/infra/lib/IterationTracker.js +11 -11
  115. package/dist/infra/lib/PythonParser.js +108 -108
  116. package/dist/infra/lib/ReviewRace.js +96 -96
  117. package/dist/infra/lib/SkillFrontmatter.js +28 -28
  118. package/dist/infra/lib/SkillQualityGate.js +9 -9
  119. package/dist/infra/lib/SkillRepository.js +159 -159
  120. package/dist/infra/lib/UltraQA.js +99 -99
  121. package/dist/infra/lib/autonomy/AuditStore.js +41 -41
  122. package/dist/infra/lib/autonomy/ConfirmationStore.js +30 -30
  123. package/dist/infra/lib/autonomy/EventOutbox.js +38 -38
  124. package/dist/infra/lib/autonomy/PolicyEngine.d.ts +3 -3
  125. package/dist/infra/lib/autonomy/PolicyEngine.js +18 -18
  126. package/dist/infra/lib/autonomy/SecuritySentinel.js +1 -1
  127. package/dist/infra/lib/autonomy/SuggestionStore.js +33 -33
  128. package/dist/infra/lib/embedding/VectorStore.js +22 -22
  129. package/dist/infra/lib/evolution/AgentAnalyzer.js +10 -10
  130. package/dist/infra/lib/evolution/DescriptionOptimizer.js +21 -21
  131. package/dist/infra/lib/evolution/GenerationRegistry.js +36 -36
  132. package/dist/infra/lib/evolution/InsightStore.js +90 -90
  133. package/dist/infra/lib/evolution/ParityTester.js +57 -57
  134. package/dist/infra/lib/evolution/RollbackManager.js +5 -5
  135. package/dist/infra/lib/evolution/SkillBenchmark.js +23 -23
  136. package/dist/infra/lib/evolution/SkillEvalRunner.js +50 -50
  137. package/dist/infra/lib/evolution/SkillGapDetector.js +10 -10
  138. package/dist/infra/lib/evolution/UsageTracker.js +28 -28
  139. package/dist/infra/lib/gemini/orchestration.js +5 -5
  140. package/dist/infra/lib/gpt/orchestration.js +4 -4
  141. package/dist/infra/lib/memory/KnowledgeGraph.js +4 -4
  142. package/dist/infra/lib/memory/MemorySearch.js +57 -57
  143. package/dist/infra/lib/memory/MemoryStorage.js +181 -181
  144. package/dist/infra/lib/memory/ObservationStore.js +28 -28
  145. package/dist/infra/lib/memory/ReflectionStore.js +30 -30
  146. package/dist/infra/lib/memory/SessionRAGRetriever.js +7 -7
  147. package/dist/infra/lib/memory/SessionRAGStore.js +225 -225
  148. package/dist/infra/lib/memory/SessionSummarizer.js +9 -9
  149. package/dist/infra/orchestrator/AgentManager.js +12 -12
  150. package/dist/infra/orchestrator/AgentRegistry.js +65 -65
  151. package/dist/infra/orchestrator/MultiLlmResearch.js +8 -8
  152. package/dist/infra/orchestrator/SwarmOrchestrator.test.js +16 -16
  153. package/dist/infra/orchestrator/parallelResearch.js +24 -24
  154. package/dist/tools/convention/analyzeComplexity.test.js +115 -115
  155. package/dist/tools/convention/validateCodeQuality.test.js +104 -104
  156. package/dist/tools/memory/createMemoryTimeline.js +10 -10
  157. package/dist/tools/memory/getMemoryGraph.js +12 -12
  158. package/dist/tools/memory/getSessionContext.js +9 -9
  159. package/dist/tools/memory/linkMemories.js +14 -14
  160. package/dist/tools/memory/listMemories.js +4 -4
  161. package/dist/tools/memory/recallMemory.js +4 -4
  162. package/dist/tools/memory/saveMemory.js +4 -4
  163. package/dist/tools/memory/searchMemoriesAdvanced.js +23 -23
  164. package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
  165. package/dist/tools/semantic/astGrep.test.js +6 -6
  166. package/dist/tools/spec/prdParser.test.js +171 -171
  167. package/dist/tools/spec/specGenerator.js +169 -169
  168. package/dist/tools/spec/traceabilityMatrix.js +64 -64
  169. package/dist/tools/spec/traceabilityMatrix.test.js +28 -28
  170. package/hooks/gemini-hooks.json +73 -73
  171. package/hooks/hooks.json +126 -126
  172. package/hooks/scripts/__tests__/keyword-detector.test.js +199 -199
  173. package/hooks/scripts/__tests__/pre-tool-guard.test.js +287 -287
  174. package/hooks/scripts/__tests__/sentinel-guard.test.js +208 -208
  175. package/hooks/scripts/auto-commit.js +97 -97
  176. package/hooks/scripts/auto-format.js +64 -64
  177. package/hooks/scripts/auto-test.js +81 -81
  178. package/hooks/scripts/code-check.js +268 -268
  179. package/hooks/scripts/codex-detect.js +46 -46
  180. package/hooks/scripts/codex-review-gate.js +80 -80
  181. package/hooks/scripts/command-log.js +32 -32
  182. package/hooks/scripts/context-save.js +353 -353
  183. package/hooks/scripts/evolution-engine.js +91 -91
  184. package/hooks/scripts/figma-extract.js +635 -635
  185. package/hooks/scripts/figma-guard.js +219 -219
  186. package/hooks/scripts/figma-refine.js +315 -315
  187. package/hooks/scripts/figma-to-scss.js +394 -394
  188. package/hooks/scripts/figma-validate.js +353 -353
  189. package/hooks/scripts/hud-status.js +321 -321
  190. package/hooks/scripts/keyword-detector.js +214 -214
  191. package/hooks/scripts/llm-orchestrate.js +645 -645
  192. package/hooks/scripts/post-edit.js +32 -32
  193. package/hooks/scripts/pr-test-gate.js +52 -52
  194. package/hooks/scripts/pre-tool-guard.js +213 -213
  195. package/hooks/scripts/prompt-dispatcher.js +190 -190
  196. package/hooks/scripts/sentinel-guard.js +130 -130
  197. package/hooks/scripts/session-start.js +177 -177
  198. package/hooks/scripts/skill-injector.js +83 -83
  199. package/hooks/scripts/stop-notify.js +209 -209
  200. package/hooks/scripts/utils.js +257 -243
  201. package/languages/csharp-unity.md +515 -515
  202. package/languages/gdscript-godot.md +470 -470
  203. package/languages/ruby-rails.md +489 -489
  204. package/languages/typescript-angular.md +433 -433
  205. package/languages/typescript-astro.md +416 -416
  206. package/languages/typescript-electron.md +406 -406
  207. package/languages/typescript-nestjs.md +524 -524
  208. package/languages/typescript-svelte.md +407 -407
  209. package/languages/typescript-tauri.md +365 -365
  210. package/package.json +101 -101
  211. package/skills/agents-md/SKILL.md +121 -121
  212. package/skills/agents-md/rubrics/what-to-keep.md +49 -49
  213. package/skills/agents-md/templates/agents-md.md +36 -36
  214. package/skills/arch-guard/SKILL.md +181 -181
  215. package/skills/arch-guard/agents/detector.md +48 -48
  216. package/skills/arch-guard/agents/reporter.md +48 -48
  217. package/skills/arch-guard/agents/rule-generator.md +49 -49
  218. package/skills/arch-guard/agents/violation-checker.md +51 -51
  219. package/skills/arch-guard/frameworks/clean-architecture.md +108 -108
  220. package/skills/arch-guard/frameworks/solid.md +102 -102
  221. package/skills/arch-guard/scripts/check-boundaries.js +90 -90
  222. package/skills/arch-guard/templates/arch-rules.json +47 -47
  223. package/skills/arch-guard/templates/violation-report.md +53 -53
  224. package/skills/brand-assets/SKILL.md +147 -147
  225. package/skills/brand-assets/rubrics/asset-checklist.md +98 -98
  226. package/skills/brand-assets/templates/brand-guide.md +161 -161
  227. package/skills/capability-loop/SKILL.md +272 -272
  228. package/skills/capability-loop/agents/capability-designer.md +61 -61
  229. package/skills/capability-loop/agents/failure-analyst.md +55 -55
  230. package/skills/capability-loop/agents/implementer.md +50 -50
  231. package/skills/capability-loop/agents/tester.md +53 -53
  232. package/skills/capability-loop/templates/capability-spec.md +118 -118
  233. package/skills/capability-loop/templates/failure-analysis.md +118 -118
  234. package/skills/characterization-test/SKILL.md +207 -207
  235. package/skills/characterization-test/agents/behavior-capturer.md +50 -50
  236. package/skills/characterization-test/agents/coverage-checker.md +54 -54
  237. package/skills/characterization-test/agents/reporter.md +50 -50
  238. package/skills/characterization-test/agents/test-writer.md +49 -49
  239. package/skills/characterization-test/rubrics/coverage-criteria.md +53 -53
  240. package/skills/characterization-test/templates/test-template.ts +101 -101
  241. package/skills/chub-usage/SKILL.md +139 -139
  242. package/skills/claude-md-guide/SKILL.md +351 -351
  243. package/skills/claude-md-guide/rubrics/anti-patterns.md +88 -88
  244. package/skills/claude-md-guide/templates/claude-md.md +54 -54
  245. package/skills/commerce-patterns/SKILL.md +64 -64
  246. package/skills/commerce-patterns/rubrics/checkout-flow.md +48 -48
  247. package/skills/commerce-patterns/templates/product-schema.md +85 -85
  248. package/skills/commit-push-pr/SKILL.md +77 -77
  249. package/skills/commit-push-pr/agents/change-analyzer.md +55 -55
  250. package/skills/commit-push-pr/agents/message-writer.md +50 -50
  251. package/skills/commit-push-pr/agents/pr-writer.md +58 -58
  252. package/skills/commit-push-pr/agents/reviewer.md +52 -52
  253. package/skills/commit-push-pr/rubrics/commit-message.md +73 -73
  254. package/skills/commit-push-pr/templates/pr-body.md +63 -63
  255. package/skills/context7-usage/SKILL.md +106 -106
  256. package/skills/context7-usage/rubrics/when-to-use.md +50 -50
  257. package/skills/create-prd/SKILL.md +90 -90
  258. package/skills/create-prd/agents/edge-case-finder.md +48 -48
  259. package/skills/create-prd/agents/prioritizer.md +60 -60
  260. package/skills/create-prd/agents/requirements-writer.md +48 -48
  261. package/skills/create-prd/agents/researcher.md +55 -55
  262. package/skills/create-prd/agents/reviewer.md +54 -54
  263. package/skills/create-prd/frameworks/jobs-to-be-done.md +96 -96
  264. package/skills/create-prd/frameworks/rice-scoring.md +97 -97
  265. package/skills/create-prd/orchestrator.md +70 -70
  266. package/skills/create-prd/rubrics/completeness.md +58 -58
  267. package/skills/create-prd/templates/prd.md +139 -139
  268. package/skills/design-audit/SKILL.md +152 -152
  269. package/skills/design-audit/agents/a11y-auditor.md +43 -43
  270. package/skills/design-audit/agents/performance-auditor.md +46 -46
  271. package/skills/design-audit/agents/responsive-auditor.md +46 -46
  272. package/skills/design-audit/agents/scorer.md +47 -47
  273. package/skills/design-audit/agents/slop-detector.md +47 -47
  274. package/skills/design-audit/frameworks/core-web-vitals.md +107 -107
  275. package/skills/design-audit/frameworks/wcag-checklist.md +64 -64
  276. package/skills/design-audit/orchestrator.md +64 -64
  277. package/skills/design-audit/rubrics/ai-slop-patterns.md +83 -83
  278. package/skills/design-audit/rubrics/scoring.md +63 -63
  279. package/skills/design-audit/templates/report.md +88 -88
  280. package/skills/design-critique/SKILL.md +139 -139
  281. package/skills/design-critique/rubrics/ux-heuristics.md +143 -143
  282. package/skills/design-critique/templates/critique-report.md +86 -86
  283. package/skills/design-distill/SKILL.md +130 -130
  284. package/skills/design-distill/templates/design-system.md +132 -132
  285. package/skills/design-normalize/SKILL.md +133 -133
  286. package/skills/design-normalize/rubrics/token-naming.md +117 -117
  287. package/skills/design-normalize/templates/token-audit.md +89 -89
  288. package/skills/design-polish/SKILL.md +131 -131
  289. package/skills/design-polish/rubrics/polish-checklist.md +68 -68
  290. package/skills/design-polish/templates/polish-report.md +64 -64
  291. package/skills/design-teach/SKILL.md +182 -182
  292. package/skills/design-teach/rubrics/brand-personality.md +73 -73
  293. package/skills/design-teach/templates/design-context.json +36 -36
  294. package/skills/devlog/SKILL.md +143 -143
  295. package/skills/e2e-commerce/SKILL.md +62 -62
  296. package/skills/e2e-commerce/templates/test-scenarios.md +170 -170
  297. package/skills/event-comms/SKILL.md +172 -172
  298. package/skills/event-comms/templates/email-invite.md +99 -99
  299. package/skills/event-comms/templates/sns-post.md +133 -133
  300. package/skills/event-ops/SKILL.md +207 -207
  301. package/skills/event-ops/rubrics/contingency.md +85 -85
  302. package/skills/event-ops/templates/d-day-checklist.md +65 -65
  303. package/skills/event-planning/SKILL.md +144 -144
  304. package/skills/event-planning/rubrics/timeline.md +70 -70
  305. package/skills/event-planning/templates/event-plan.md +91 -91
  306. package/skills/exec-plan/SKILL.md +149 -149
  307. package/skills/exec-plan/agents/decomposer.md +47 -47
  308. package/skills/exec-plan/agents/dependency-mapper.md +44 -44
  309. package/skills/exec-plan/agents/estimator.md +43 -43
  310. package/skills/exec-plan/agents/validator.md +55 -55
  311. package/skills/exec-plan/orchestrator.md +70 -70
  312. package/skills/exec-plan/rubrics/complexity-scoring.md +75 -75
  313. package/skills/exec-plan/templates/plan.md +147 -147
  314. package/skills/git-worktree/SKILL.md +73 -73
  315. package/skills/git-worktree/rubrics/when-to-use.md +55 -55
  316. package/skills/handoff/SKILL.md +110 -110
  317. package/skills/handoff/agents/context-summarizer.md +51 -51
  318. package/skills/handoff/agents/document-writer.md +63 -63
  319. package/skills/handoff/agents/state-collector.md +53 -53
  320. package/skills/handoff/agents/verifier.md +48 -48
  321. package/skills/handoff/rubrics/completeness.md +62 -62
  322. package/skills/handoff/templates/handoff.md +107 -107
  323. package/skills/parallel-research/SKILL.md +89 -89
  324. package/skills/parallel-research/agents/best-practices.md +43 -43
  325. package/skills/parallel-research/agents/codebase-patterns.md +46 -46
  326. package/skills/parallel-research/agents/framework-docs.md +45 -45
  327. package/skills/parallel-research/agents/security-advisory.md +46 -46
  328. package/skills/parallel-research/agents/synthesizer.md +52 -52
  329. package/skills/parallel-research/experts/best-practices.md +50 -50
  330. package/skills/parallel-research/experts/codebase-patterns.md +70 -70
  331. package/skills/parallel-research/experts/framework-docs.md +65 -65
  332. package/skills/parallel-research/experts/security-advisory.md +69 -69
  333. package/skills/parallel-research/orchestrator.md +65 -65
  334. package/skills/parallel-research/templates/synthesis.md +101 -101
  335. package/skills/prioritization-frameworks/SKILL.md +87 -87
  336. package/skills/prioritization-frameworks/rubrics/frameworks.md +79 -79
  337. package/skills/prioritization-frameworks/templates/scoring-matrix.md +69 -69
  338. package/skills/priority-todos/SKILL.md +64 -64
  339. package/skills/priority-todos/rubrics/prioritization.md +70 -70
  340. package/skills/priority-todos/templates/todo-board.md +59 -59
  341. package/skills/seo-checklist/SKILL.md +58 -58
  342. package/skills/seo-checklist/frameworks/structured-data.md +153 -153
  343. package/skills/seo-checklist/rubrics/content-seo.md +42 -42
  344. package/skills/seo-checklist/rubrics/technical-seo.md +48 -48
  345. package/skills/techdebt/SKILL.md +124 -124
  346. package/skills/techdebt/agents/analyzer.md +50 -50
  347. package/skills/techdebt/agents/fixer.md +41 -41
  348. package/skills/techdebt/agents/reviewer.md +47 -47
  349. package/skills/techdebt/agents/scanner.md +44 -44
  350. package/skills/techdebt/orchestrator.md +70 -70
  351. package/skills/techdebt/rubrics/severity.md +51 -51
  352. package/skills/techdebt/scripts/scan.js +90 -90
  353. package/skills/techdebt/templates/report.md +86 -86
  354. package/skills/tool-fallback/SKILL.md +104 -104
  355. package/skills/tool-fallback/rubrics/fallback-chain.md +58 -58
  356. package/skills/typescript-advanced-types/SKILL.md +67 -67
  357. package/skills/typescript-advanced-types/rubrics/type-patterns.md +109 -109
  358. package/skills/ui-ux-pro-max/SKILL.md +236 -236
  359. package/skills/ui-ux-pro-max/reference/color-and-contrast.md +517 -517
  360. package/skills/ui-ux-pro-max/reference/interaction-design.md +544 -544
  361. package/skills/ui-ux-pro-max/reference/motion-design.md +591 -591
  362. package/skills/ui-ux-pro-max/reference/responsive-design.md +463 -463
  363. package/skills/ui-ux-pro-max/reference/spatial-design.md +390 -390
  364. package/skills/ui-ux-pro-max/reference/typography.md +455 -455
  365. package/skills/ui-ux-pro-max/reference/ux-writing.md +469 -469
  366. package/skills/ui-ux-pro-max/rubrics/interaction-states.md +83 -83
  367. package/skills/ui-ux-pro-max/rubrics/responsive-breakpoints.md +99 -99
  368. package/skills/user-personas/SKILL.md +75 -75
  369. package/skills/user-personas/rubrics/research-methods.md +56 -56
  370. package/skills/user-personas/templates/persona.md +89 -89
  371. package/skills/vercel-react-best-practices/SKILL.md +60 -60
  372. package/skills/vercel-react-best-practices/rubrics/performance.md +82 -82
  373. package/skills/vercel-react-best-practices/rubrics/server-components.md +86 -86
  374. package/skills/vibe-docs/templates/architecture.md +80 -80
  375. package/skills/vibe-docs/templates/readme.md +84 -84
  376. package/skills/vibe-docs/templates/release-notes.md +74 -74
  377. package/skills/vibe-figma/SKILL.md +363 -363
  378. package/skills/vibe-figma/rubrics/extraction-checklist.md +51 -51
  379. package/skills/vibe-figma/templates/component-index.md +126 -126
  380. package/skills/vibe-figma/templates/component-spec.md +168 -168
  381. package/skills/vibe-figma/templates/figma-handoff.md +100 -100
  382. package/skills/vibe-figma/templates/remapped-tree.md +277 -277
  383. package/skills/vibe-figma-convert/SKILL.md +235 -235
  384. package/skills/vibe-figma-convert/rubrics/conversion-rules.md +141 -141
  385. package/skills/vibe-figma-convert/templates/component.md +140 -140
  386. package/skills/vibe-figma-extract/SKILL.md +219 -219
  387. package/skills/vibe-figma-extract/rubrics/image-rules.md +157 -157
  388. package/skills/vibe-interview/SKILL.md +358 -358
  389. package/skills/vibe-interview/checklists/api.md +101 -101
  390. package/skills/vibe-interview/checklists/feature.md +88 -88
  391. package/skills/vibe-interview/checklists/library.md +95 -95
  392. package/skills/vibe-interview/checklists/mobile.md +89 -89
  393. package/skills/vibe-interview/checklists/webapp.md +97 -97
  394. package/skills/vibe-interview/checklists/website.md +99 -99
  395. package/skills/vibe-plan/SKILL.md +254 -254
  396. package/skills/vibe-spec/SKILL.md +1155 -1155
  397. package/skills/vibe-spec-review/SKILL.md +726 -726
  398. package/skills/video-production/SKILL.md +52 -52
  399. package/skills/video-production/rubrics/quality-checklist.md +58 -58
  400. package/skills/video-production/templates/production-plan.md +104 -104
  401. package/vibe/config.json +29 -29
  402. package/vibe/constitution.md +227 -227
  403. package/vibe/rules/principles/communication-guide.md +98 -98
  404. package/vibe/rules/principles/development-philosophy.md +52 -52
  405. package/vibe/rules/principles/quick-start.md +102 -102
  406. package/vibe/rules/quality/bdd-contract-testing.md +393 -393
  407. package/vibe/rules/quality/checklist.md +276 -276
  408. package/vibe/rules/quality/performance.md +236 -236
  409. package/vibe/rules/quality/testing-strategy.md +440 -440
  410. package/vibe/rules/standards/anti-patterns.md +541 -541
  411. package/vibe/rules/standards/code-structure.md +291 -291
  412. package/vibe/rules/standards/complexity-metrics.md +313 -313
  413. package/vibe/rules/standards/git-workflow.md +237 -237
  414. package/vibe/rules/standards/naming-conventions.md +198 -198
  415. package/vibe/rules/standards/security.md +305 -305
  416. package/vibe/rules/writing/document-style.md +74 -74
  417. package/vibe/setup.sh +31 -31
  418. package/vibe/templates/claudemd-template.md +74 -74
  419. package/vibe/templates/constitution-template.md +267 -267
  420. package/vibe/templates/contract-backend-template.md +526 -526
  421. package/vibe/templates/contract-frontend-template.md +599 -599
  422. package/vibe/templates/feature-template.md +96 -96
  423. package/vibe/templates/plan-template.md +194 -194
  424. package/vibe/templates/spec-template.md +221 -221
  425. package/vibe/ui-ux-data/charts.csv +26 -26
  426. package/vibe/ui-ux-data/colors.csv +97 -97
  427. package/vibe/ui-ux-data/icons.csv +101 -101
  428. package/vibe/ui-ux-data/landing.csv +31 -31
  429. package/vibe/ui-ux-data/products.csv +96 -96
  430. package/vibe/ui-ux-data/react-performance.csv +45 -45
  431. package/vibe/ui-ux-data/stacks/astro.csv +54 -54
  432. package/vibe/ui-ux-data/stacks/flutter.csv +53 -53
  433. package/vibe/ui-ux-data/stacks/html-tailwind.csv +56 -56
  434. package/vibe/ui-ux-data/stacks/jetpack-compose.csv +53 -53
  435. package/vibe/ui-ux-data/stacks/nextjs.csv +53 -53
  436. package/vibe/ui-ux-data/stacks/nuxt-ui.csv +51 -51
  437. package/vibe/ui-ux-data/stacks/nuxtjs.csv +59 -59
  438. package/vibe/ui-ux-data/stacks/react-native.csv +52 -52
  439. package/vibe/ui-ux-data/stacks/react.csv +54 -54
  440. package/vibe/ui-ux-data/stacks/shadcn.csv +61 -61
  441. package/vibe/ui-ux-data/stacks/svelte.csv +54 -54
  442. package/vibe/ui-ux-data/stacks/swiftui.csv +51 -51
  443. package/vibe/ui-ux-data/stacks/vue.csv +50 -50
  444. package/vibe/ui-ux-data/styles.csv +68 -68
  445. package/vibe/ui-ux-data/typography.csv +57 -57
  446. package/vibe/ui-ux-data/ui-reasoning.csv +101 -101
  447. package/vibe/ui-ux-data/ux-guidelines.csv +99 -99
  448. package/vibe/ui-ux-data/version.json +31 -31
  449. package/vibe/ui-ux-data/web-interface.csv +31 -31
@@ -92,60 +92,60 @@ export function shouldContinue(session) {
92
92
  * Generate architect diagnosis prompt
93
93
  */
94
94
  export function generateDiagnosisPrompt(result) {
95
- return `
96
- ## QA Failure Diagnosis Required
97
-
98
- **Cycle**: ${result.cycle}
99
- **Goal**: ${result.goal}
100
- **Command**: ${result.command}
101
- **Exit Code**: ${result.exitCode}
102
-
103
- ### Output:
104
- \`\`\`
105
- ${result.output.slice(0, 2000)}
106
- \`\`\`
107
-
108
- ### Task:
109
- 1. Identify the root cause of this failure
110
- 2. Determine if it's a code issue, config issue, or environment issue
111
- 3. Provide a specific fix recommendation
112
-
113
- Return JSON:
114
- \`\`\`json
115
- {
116
- "rootCause": "description of root cause",
117
- "category": "code|config|environment|dependency",
118
- "fix": "specific fix to apply",
119
- "files": ["list", "of", "files", "to", "modify"],
120
- "confidence": "high|medium|low"
121
- }
122
- \`\`\`
95
+ return `
96
+ ## QA Failure Diagnosis Required
97
+
98
+ **Cycle**: ${result.cycle}
99
+ **Goal**: ${result.goal}
100
+ **Command**: ${result.command}
101
+ **Exit Code**: ${result.exitCode}
102
+
103
+ ### Output:
104
+ \`\`\`
105
+ ${result.output.slice(0, 2000)}
106
+ \`\`\`
107
+
108
+ ### Task:
109
+ 1. Identify the root cause of this failure
110
+ 2. Determine if it's a code issue, config issue, or environment issue
111
+ 3. Provide a specific fix recommendation
112
+
113
+ Return JSON:
114
+ \`\`\`json
115
+ {
116
+ "rootCause": "description of root cause",
117
+ "category": "code|config|environment|dependency",
118
+ "fix": "specific fix to apply",
119
+ "files": ["list", "of", "files", "to", "modify"],
120
+ "confidence": "high|medium|low"
121
+ }
122
+ \`\`\`
123
123
  `.trim();
124
124
  }
125
125
  /**
126
126
  * Generate executor fix prompt
127
127
  */
128
128
  export function generateFixPrompt(diagnosis, result) {
129
- return `
130
- ## Apply Fix for QA Failure
131
-
132
- **Previous Diagnosis**:
133
- ${diagnosis}
134
-
135
- **Failed Command**: ${result.command}
136
- **Cycle**: ${result.cycle}
137
-
138
- ### Task:
139
- Apply the fix identified in the diagnosis. Make minimal changes to resolve the issue.
140
-
141
- ### Rules:
142
- 1. Only modify files mentioned in the diagnosis
143
- 2. Make the smallest change that fixes the issue
144
- 3. Do not refactor or improve unrelated code
145
- 4. Run the verification command after fixing
146
-
147
- ### After fixing, run:
148
- \`${result.command}\`
129
+ return `
130
+ ## Apply Fix for QA Failure
131
+
132
+ **Previous Diagnosis**:
133
+ ${diagnosis}
134
+
135
+ **Failed Command**: ${result.command}
136
+ **Cycle**: ${result.cycle}
137
+
138
+ ### Task:
139
+ Apply the fix identified in the diagnosis. Make minimal changes to resolve the issue.
140
+
141
+ ### Rules:
142
+ 1. Only modify files mentioned in the diagnosis
143
+ 2. Make the smallest change that fixes the issue
144
+ 3. Do not refactor or improve unrelated code
145
+ 4. Run the verification command after fixing
146
+
147
+ ### After fixing, run:
148
+ \`${result.command}\`
149
149
  `.trim();
150
150
  }
151
151
  /**
@@ -157,28 +157,28 @@ export function generateArchitectureEscalationPrompt(session) {
157
157
  const failureSummary = recentFailures
158
158
  .map((c, i) => ` Attempt ${i + 1}: ${c.goal} - ${c.output.slice(0, 150)}`)
159
159
  .join('\n');
160
- return `
161
- ## ⚠️ 3-Fix Rule Triggered - Architecture Question Required
162
-
163
- **Same issue failed ${session.config.maxSameFailure}+ times.** This suggests an architectural problem, not a failed hypothesis.
164
-
165
- ### Failure Pattern:
166
- ${failureSummary}
167
-
168
- ### Architecture Problem Indicators:
169
- - Each fix reveals new shared state/coupling issues in different places
170
- - Fixes require "massive refactoring" to implement
171
- - Each fix creates new symptoms elsewhere
172
-
173
- ### Required Action:
174
- **STOP attempting more fixes.** Discuss with user before proceeding.
175
-
176
- ### Questions for User:
177
- 1. Is the current approach fundamentally sound?
178
- 2. Are we persisting through sheer inertia?
179
- 3. Should we refactor architecture vs. continue fixing symptoms?
180
-
181
- **Do NOT attempt Fix #${session.config.maxSameFailure + 1} without architectural discussion.**
160
+ return `
161
+ ## ⚠️ 3-Fix Rule Triggered - Architecture Question Required
162
+
163
+ **Same issue failed ${session.config.maxSameFailure}+ times.** This suggests an architectural problem, not a failed hypothesis.
164
+
165
+ ### Failure Pattern:
166
+ ${failureSummary}
167
+
168
+ ### Architecture Problem Indicators:
169
+ - Each fix reveals new shared state/coupling issues in different places
170
+ - Fixes require "massive refactoring" to implement
171
+ - Each fix creates new symptoms elsewhere
172
+
173
+ ### Required Action:
174
+ **STOP attempting more fixes.** Discuss with user before proceeding.
175
+
176
+ ### Questions for User:
177
+ 1. Is the current approach fundamentally sound?
178
+ 2. Are we persisting through sheer inertia?
179
+ 3. Should we refactor architecture vs. continue fixing symptoms?
180
+
181
+ **Do NOT attempt Fix #${session.config.maxSameFailure + 1} without architectural discussion.**
182
182
  `.trim();
183
183
  }
184
184
  /**
@@ -263,35 +263,35 @@ export function parseQAGoals(input) {
263
263
  * Create UltraQA workflow description
264
264
  */
265
265
  export function describeUltraQAWorkflow() {
266
- return `
267
- ## UltraQA Workflow
268
-
269
- 5-cycle autonomous QA loop:
270
-
271
- \`\`\`
272
- ┌─────────────────────────────────────────────┐
273
- │ ULTRAQA CYCLE │
274
- │ │
275
- │ 1. Run verification (test/build/lint) │
276
- │ ↓ │
277
- │ 2. Check result │
278
- │ ↓ │
279
- │ ┌───┴───┐ │
280
- │ PASS FAIL │
281
- │ ↓ ↓ │
282
- │ DONE 3. Architect diagnosis │
283
- │ ↓ │
284
- │ 4. Executor fix │
285
- │ ↓ │
286
- │ 5. Repeat (max 5 cycles) │
287
- └─────────────────────────────────────────────┘
288
- \`\`\`
289
-
290
- Exit conditions:
291
- - ✅ All goals pass (with evidence)
292
- - ⚠️ Same failure 3 times → Architecture Question (3-Fix Rule)
293
- - ❌ Max 5 cycles reached
294
- - ❌ Environment error
266
+ return `
267
+ ## UltraQA Workflow
268
+
269
+ 5-cycle autonomous QA loop:
270
+
271
+ \`\`\`
272
+ ┌─────────────────────────────────────────────┐
273
+ │ ULTRAQA CYCLE │
274
+ │ │
275
+ │ 1. Run verification (test/build/lint) │
276
+ │ ↓ │
277
+ │ 2. Check result │
278
+ │ ↓ │
279
+ │ ┌───┴───┐ │
280
+ │ PASS FAIL │
281
+ │ ↓ ↓ │
282
+ │ DONE 3. Architect diagnosis │
283
+ │ ↓ │
284
+ │ 4. Executor fix │
285
+ │ ↓ │
286
+ │ 5. Repeat (max 5 cycles) │
287
+ └─────────────────────────────────────────────┘
288
+ \`\`\`
289
+
290
+ Exit conditions:
291
+ - ✅ All goals pass (with evidence)
292
+ - ⚠️ Same failure 3 times → Architecture Question (3-Fix Rule)
293
+ - ❌ Max 5 cycles reached
294
+ - ❌ Environment error
295
295
  `.trim();
296
296
  }
297
297
  //# sourceMappingURL=UltraQA.js.map
@@ -16,55 +16,55 @@ export class AuditStore {
16
16
  constructor(storage) {
17
17
  this.db = storage.getDatabase();
18
18
  this.initTables();
19
- this.insertStmt = this.db.prepare(`
20
- INSERT INTO audit_events
21
- (id, correlationId, causationId, eventType, agentId, actionType, riskLevel, payload, outcome, createdAt)
22
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
19
+ this.insertStmt = this.db.prepare(`
20
+ INSERT INTO audit_events
21
+ (id, correlationId, causationId, eventType, agentId, actionType, riskLevel, payload, outcome, createdAt)
22
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
23
23
  `);
24
24
  }
25
25
  initTables() {
26
- this.db.exec(`
27
- CREATE TABLE IF NOT EXISTS audit_events (
28
- id TEXT PRIMARY KEY,
29
- correlationId TEXT NOT NULL,
30
- causationId TEXT,
31
- eventType TEXT NOT NULL,
32
- agentId TEXT,
33
- actionType TEXT,
34
- riskLevel TEXT,
35
- payload TEXT NOT NULL,
36
- outcome TEXT CHECK(outcome IS NULL OR outcome IN ('allowed', 'blocked', 'pending', 'expired')),
37
- createdAt TEXT NOT NULL
38
- );
39
- CREATE INDEX IF NOT EXISTS idx_audit_agent_time ON audit_events(agentId, createdAt);
40
- CREATE INDEX IF NOT EXISTS idx_audit_type_time ON audit_events(eventType, createdAt);
41
- CREATE INDEX IF NOT EXISTS idx_audit_correlation ON audit_events(correlationId);
26
+ this.db.exec(`
27
+ CREATE TABLE IF NOT EXISTS audit_events (
28
+ id TEXT PRIMARY KEY,
29
+ correlationId TEXT NOT NULL,
30
+ causationId TEXT,
31
+ eventType TEXT NOT NULL,
32
+ agentId TEXT,
33
+ actionType TEXT,
34
+ riskLevel TEXT,
35
+ payload TEXT NOT NULL,
36
+ outcome TEXT CHECK(outcome IS NULL OR outcome IN ('allowed', 'blocked', 'pending', 'expired')),
37
+ createdAt TEXT NOT NULL
38
+ );
39
+ CREATE INDEX IF NOT EXISTS idx_audit_agent_time ON audit_events(agentId, createdAt);
40
+ CREATE INDEX IF NOT EXISTS idx_audit_type_time ON audit_events(eventType, createdAt);
41
+ CREATE INDEX IF NOT EXISTS idx_audit_correlation ON audit_events(correlationId);
42
42
  `);
43
43
  try {
44
- this.db.exec(`
45
- CREATE VIRTUAL TABLE IF NOT EXISTS audit_events_fts USING fts5(
46
- eventType, agentId, payload,
47
- content='audit_events', content_rowid='rowid'
48
- );
44
+ this.db.exec(`
45
+ CREATE VIRTUAL TABLE IF NOT EXISTS audit_events_fts USING fts5(
46
+ eventType, agentId, payload,
47
+ content='audit_events', content_rowid='rowid'
48
+ );
49
49
  `);
50
- this.db.exec(`
51
- CREATE TRIGGER IF NOT EXISTS audit_events_fts_ai AFTER INSERT ON audit_events BEGIN
52
- INSERT INTO audit_events_fts(rowid, eventType, agentId, payload)
53
- VALUES (new.rowid, new.eventType, new.agentId, new.payload);
54
- END;
50
+ this.db.exec(`
51
+ CREATE TRIGGER IF NOT EXISTS audit_events_fts_ai AFTER INSERT ON audit_events BEGIN
52
+ INSERT INTO audit_events_fts(rowid, eventType, agentId, payload)
53
+ VALUES (new.rowid, new.eventType, new.agentId, new.payload);
54
+ END;
55
55
  `);
56
56
  this.fts5Available = true;
57
57
  }
58
58
  catch {
59
59
  this.fts5Available = false;
60
60
  }
61
- this.db.exec(`
62
- CREATE TRIGGER IF NOT EXISTS prevent_audit_update
63
- BEFORE UPDATE ON audit_events
64
- BEGIN SELECT RAISE(ABORT, 'Audit logs are immutable'); END;
65
- CREATE TRIGGER IF NOT EXISTS prevent_audit_delete
66
- BEFORE DELETE ON audit_events
67
- BEGIN SELECT RAISE(ABORT, 'Audit logs are immutable'); END;
61
+ this.db.exec(`
62
+ CREATE TRIGGER IF NOT EXISTS prevent_audit_update
63
+ BEFORE UPDATE ON audit_events
64
+ BEGIN SELECT RAISE(ABORT, 'Audit logs are immutable'); END;
65
+ CREATE TRIGGER IF NOT EXISTS prevent_audit_delete
66
+ BEFORE DELETE ON audit_events
67
+ BEGIN SELECT RAISE(ABORT, 'Audit logs are immutable'); END;
68
68
  `);
69
69
  }
70
70
  static redactSensitive(payload) {
@@ -170,10 +170,10 @@ export class AuditStore {
170
170
  const pageSize = Math.min(limit || DEFAULT_PAGE_SIZE, MAX_PAGE_SIZE);
171
171
  try {
172
172
  return this.db
173
- .prepare(`SELECT a.* FROM audit_events a
174
- JOIN audit_events_fts f ON a.rowid = f.rowid
175
- WHERE audit_events_fts MATCH ?
176
- ORDER BY rank
173
+ .prepare(`SELECT a.* FROM audit_events a
174
+ JOIN audit_events_fts f ON a.rowid = f.rowid
175
+ WHERE audit_events_fts MATCH ?
176
+ ORDER BY rank
177
177
  LIMIT ?`)
178
178
  .all(sanitized, pageSize);
179
179
  }
@@ -20,41 +20,41 @@ export class ConfirmationStore {
20
20
  constructor(storage) {
21
21
  this.db = storage.getDatabase();
22
22
  this.initTables();
23
- this.insertStmt = this.db.prepare(`
24
- INSERT INTO confirmations
25
- (id, correlationId, actionType, actionSummary, riskLevel, riskScore, riskFactors,
26
- status, expiresAt, idempotencyKey, createdAt)
27
- VALUES (?, ?, ?, ?, ?, ?, ?, 'pending', ?, ?, ?)
23
+ this.insertStmt = this.db.prepare(`
24
+ INSERT INTO confirmations
25
+ (id, correlationId, actionType, actionSummary, riskLevel, riskScore, riskFactors,
26
+ status, expiresAt, idempotencyKey, createdAt)
27
+ VALUES (?, ?, ?, ?, ?, ?, ?, 'pending', ?, ?, ?)
28
28
  `);
29
- this.resolveStmt = this.db.prepare(`
30
- UPDATE confirmations SET status = ?, respondedAt = ?, ownerResponse = ?
31
- WHERE id = ? AND status = 'pending'
29
+ this.resolveStmt = this.db.prepare(`
30
+ UPDATE confirmations SET status = ?, respondedAt = ?, ownerResponse = ?
31
+ WHERE id = ? AND status = 'pending'
32
32
  `);
33
33
  this.getByIdStmt = this.db.prepare('SELECT * FROM confirmations WHERE id = ?');
34
34
  }
35
35
  initTables() {
36
- this.db.exec(`
37
- CREATE TABLE IF NOT EXISTS confirmations (
38
- id TEXT PRIMARY KEY,
39
- correlationId TEXT NOT NULL,
40
- actionType TEXT NOT NULL,
41
- actionSummary TEXT NOT NULL,
42
- riskLevel TEXT NOT NULL,
43
- riskScore INTEGER NOT NULL,
44
- riskFactors TEXT NOT NULL,
45
- status TEXT NOT NULL DEFAULT 'pending'
46
- CHECK(status IN ('pending', 'approved', 'rejected', 'expired', 'cancelled')),
47
- channel TEXT,
48
- notifiedAt TEXT,
49
- respondedAt TEXT,
50
- ownerResponse TEXT,
51
- expiresAt TEXT NOT NULL,
52
- idempotencyKey TEXT UNIQUE,
53
- createdAt TEXT NOT NULL
54
- );
55
- CREATE INDEX IF NOT EXISTS idx_confirmation_status_expires ON confirmations(status, expiresAt);
56
- CREATE INDEX IF NOT EXISTS idx_confirmation_correlation ON confirmations(correlationId);
57
- CREATE INDEX IF NOT EXISTS idx_confirmation_idempotency ON confirmations(idempotencyKey);
36
+ this.db.exec(`
37
+ CREATE TABLE IF NOT EXISTS confirmations (
38
+ id TEXT PRIMARY KEY,
39
+ correlationId TEXT NOT NULL,
40
+ actionType TEXT NOT NULL,
41
+ actionSummary TEXT NOT NULL,
42
+ riskLevel TEXT NOT NULL,
43
+ riskScore INTEGER NOT NULL,
44
+ riskFactors TEXT NOT NULL,
45
+ status TEXT NOT NULL DEFAULT 'pending'
46
+ CHECK(status IN ('pending', 'approved', 'rejected', 'expired', 'cancelled')),
47
+ channel TEXT,
48
+ notifiedAt TEXT,
49
+ respondedAt TEXT,
50
+ ownerResponse TEXT,
51
+ expiresAt TEXT NOT NULL,
52
+ idempotencyKey TEXT UNIQUE,
53
+ createdAt TEXT NOT NULL
54
+ );
55
+ CREATE INDEX IF NOT EXISTS idx_confirmation_status_expires ON confirmations(status, expiresAt);
56
+ CREATE INDEX IF NOT EXISTS idx_confirmation_correlation ON confirmations(correlationId);
57
+ CREATE INDEX IF NOT EXISTS idx_confirmation_idempotency ON confirmations(idempotencyKey);
58
58
  `);
59
59
  }
60
60
  create(input) {
@@ -18,52 +18,52 @@ export class EventOutbox {
18
18
  this.db = storage.getDatabase();
19
19
  this.eventBus = eventBus;
20
20
  this.initTables();
21
- this.enqueueStmt = this.db.prepare(`
22
- INSERT INTO event_outbox (id, eventType, payload, status, retryCount, createdAt)
23
- VALUES (?, ?, ?, 'pending', 0, ?)
21
+ this.enqueueStmt = this.db.prepare(`
22
+ INSERT INTO event_outbox (id, eventType, payload, status, retryCount, createdAt)
23
+ VALUES (?, ?, ?, 'pending', 0, ?)
24
24
  `);
25
- this.markProcessingStmt = this.db.prepare(`
26
- UPDATE event_outbox SET status = 'processing' WHERE id = ? AND status = 'pending'
25
+ this.markProcessingStmt = this.db.prepare(`
26
+ UPDATE event_outbox SET status = 'processing' WHERE id = ? AND status = 'pending'
27
27
  `);
28
- this.markPublishedStmt = this.db.prepare(`
29
- UPDATE event_outbox SET status = 'published', publishedAt = ? WHERE id = ?
28
+ this.markPublishedStmt = this.db.prepare(`
29
+ UPDATE event_outbox SET status = 'published', publishedAt = ? WHERE id = ?
30
30
  `);
31
- this.markPendingRetryStmt = this.db.prepare(`
32
- UPDATE event_outbox SET status = 'pending', retryCount = retryCount + 1, lastRetryAt = ? WHERE id = ?
31
+ this.markPendingRetryStmt = this.db.prepare(`
32
+ UPDATE event_outbox SET status = 'pending', retryCount = retryCount + 1, lastRetryAt = ? WHERE id = ?
33
33
  `);
34
- this.markFailedStmt = this.db.prepare(`
35
- UPDATE event_outbox SET status = 'failed' WHERE id = ?
34
+ this.markFailedStmt = this.db.prepare(`
35
+ UPDATE event_outbox SET status = 'failed' WHERE id = ?
36
36
  `);
37
- this.moveToDeadLetterStmt = this.db.prepare(`
38
- INSERT INTO dead_letter_events (id, originalEventId, eventType, payload, error, retryCount, failedAt)
39
- VALUES (?, ?, ?, ?, ?, ?, ?)
37
+ this.moveToDeadLetterStmt = this.db.prepare(`
38
+ INSERT INTO dead_letter_events (id, originalEventId, eventType, payload, error, retryCount, failedAt)
39
+ VALUES (?, ?, ?, ?, ?, ?, ?)
40
40
  `);
41
41
  }
42
42
  initTables() {
43
- this.db.exec(`
44
- CREATE TABLE IF NOT EXISTS event_outbox (
45
- id TEXT PRIMARY KEY,
46
- eventType TEXT NOT NULL,
47
- payload TEXT NOT NULL,
48
- status TEXT DEFAULT 'pending' CHECK(status IN ('pending', 'processing', 'published', 'failed')),
49
- retryCount INTEGER DEFAULT 0,
50
- lastRetryAt TEXT,
51
- createdAt TEXT NOT NULL,
52
- publishedAt TEXT
53
- );
54
- CREATE INDEX IF NOT EXISTS idx_outbox_status ON event_outbox(status, createdAt);
55
-
56
- CREATE TABLE IF NOT EXISTS dead_letter_events (
57
- id TEXT PRIMARY KEY,
58
- originalEventId TEXT NOT NULL,
59
- eventType TEXT NOT NULL,
60
- payload TEXT NOT NULL,
61
- error TEXT NOT NULL,
62
- retryCount INTEGER NOT NULL,
63
- failedAt TEXT NOT NULL,
64
- resolvedAt TEXT,
65
- status TEXT DEFAULT 'failed' CHECK(status IN ('failed', 'retried', 'discarded'))
66
- );
43
+ this.db.exec(`
44
+ CREATE TABLE IF NOT EXISTS event_outbox (
45
+ id TEXT PRIMARY KEY,
46
+ eventType TEXT NOT NULL,
47
+ payload TEXT NOT NULL,
48
+ status TEXT DEFAULT 'pending' CHECK(status IN ('pending', 'processing', 'published', 'failed')),
49
+ retryCount INTEGER DEFAULT 0,
50
+ lastRetryAt TEXT,
51
+ createdAt TEXT NOT NULL,
52
+ publishedAt TEXT
53
+ );
54
+ CREATE INDEX IF NOT EXISTS idx_outbox_status ON event_outbox(status, createdAt);
55
+
56
+ CREATE TABLE IF NOT EXISTS dead_letter_events (
57
+ id TEXT PRIMARY KEY,
58
+ originalEventId TEXT NOT NULL,
59
+ eventType TEXT NOT NULL,
60
+ payload TEXT NOT NULL,
61
+ error TEXT NOT NULL,
62
+ retryCount INTEGER NOT NULL,
63
+ failedAt TEXT NOT NULL,
64
+ resolvedAt TEXT,
65
+ status TEXT DEFAULT 'failed' CHECK(status IN ('failed', 'retried', 'discarded'))
66
+ );
67
67
  `);
68
68
  }
69
69
  enqueue(event) {
@@ -11,13 +11,13 @@ declare const PolicyRuleSchema: z.ZodObject<{
11
11
  params: "params";
12
12
  }>;
13
13
  operator: z.ZodEnum<{
14
- in: "in";
15
- eq: "eq";
16
- neq: "neq";
17
14
  contains: "contains";
15
+ eq: "eq";
18
16
  matches: "matches";
19
17
  gt: "gt";
20
18
  lt: "lt";
19
+ in: "in";
20
+ neq: "neq";
21
21
  }>;
22
22
  value: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>, z.ZodNumber]>;
23
23
  }, z.core.$strip>;
@@ -63,26 +63,26 @@ export class PolicyEngine {
63
63
  this.allPoliciesStmt = this.db.prepare(`SELECT * FROM policies WHERE enabled = 1 ORDER BY priority DESC, createdAt ASC`);
64
64
  }
65
65
  initTables() {
66
- this.db.exec(`
67
- CREATE TABLE IF NOT EXISTS policies (
68
- id TEXT PRIMARY KEY,
69
- name TEXT NOT NULL UNIQUE,
70
- description TEXT,
71
- rules TEXT NOT NULL,
72
- action TEXT NOT NULL DEFAULT 'block'
73
- CHECK(action IN ('block', 'require_confirmation', 'allow')),
74
- priority INTEGER DEFAULT 0,
75
- enabled INTEGER DEFAULT 1,
76
- version INTEGER DEFAULT 1,
77
- createdAt TEXT NOT NULL,
78
- updatedAt TEXT NOT NULL
79
- );
66
+ this.db.exec(`
67
+ CREATE TABLE IF NOT EXISTS policies (
68
+ id TEXT PRIMARY KEY,
69
+ name TEXT NOT NULL UNIQUE,
70
+ description TEXT,
71
+ rules TEXT NOT NULL,
72
+ action TEXT NOT NULL DEFAULT 'block'
73
+ CHECK(action IN ('block', 'require_confirmation', 'allow')),
74
+ priority INTEGER DEFAULT 0,
75
+ enabled INTEGER DEFAULT 1,
76
+ version INTEGER DEFAULT 1,
77
+ createdAt TEXT NOT NULL,
78
+ updatedAt TEXT NOT NULL
79
+ );
80
80
  `);
81
81
  }
82
82
  seedDefaultPolicies() {
83
- const insertOrIgnore = this.db.prepare(`
84
- INSERT OR IGNORE INTO policies (id, name, description, rules, action, priority, enabled, version, createdAt, updatedAt)
85
- VALUES (?, ?, ?, ?, ?, ?, 1, 1, ?, ?)
83
+ const insertOrIgnore = this.db.prepare(`
84
+ INSERT OR IGNORE INTO policies (id, name, description, rules, action, priority, enabled, version, createdAt, updatedAt)
85
+ VALUES (?, ?, ?, ?, ?, ?, 1, 1, ?, ?)
86
86
  `);
87
87
  const now = new Date().toISOString();
88
88
  const txn = this.db.transaction(() => {
@@ -114,7 +114,7 @@ export class PolicyEngine {
114
114
  PolicyRuleSchema.parse(rule);
115
115
  }
116
116
  this.db
117
- .prepare(`INSERT INTO policies (id, name, description, rules, action, priority, enabled, version, createdAt, updatedAt)
117
+ .prepare(`INSERT INTO policies (id, name, description, rules, action, priority, enabled, version, createdAt, updatedAt)
118
118
  VALUES (?, ?, ?, ?, ?, ?, 1, 1, ?, ?)`)
119
119
  .run(id, policy.name, policy.description ?? null, JSON.stringify(policy.rules), policy.action, policy.priority ?? 0, now, now);
120
120
  return id;
@@ -30,7 +30,7 @@ export class SecuritySentinel {
30
30
  this.auditStore = deps.auditStore;
31
31
  this.db = deps.storage.getDatabase();
32
32
  this.projectRoot = deps.projectRoot ?? process.cwd();
33
- this.recentDeleteStmt = this.db.prepare(`SELECT COUNT(*) as count FROM audit_events
33
+ this.recentDeleteStmt = this.db.prepare(`SELECT COUNT(*) as count FROM audit_events
34
34
  WHERE agentId = ? AND actionType = 'file_delete' AND createdAt >= ?`);
35
35
  }
36
36
  static getInstance(deps) {
@@ -8,41 +8,41 @@ export class SuggestionStore {
8
8
  constructor(storage) {
9
9
  this.db = storage.getDatabase();
10
10
  this.initTables();
11
- this.insertStmt = this.db.prepare(`
12
- INSERT INTO suggestions
13
- (id, type, title, description, priority, evidence, suggestedAction, status, riskLevel, sourceModule, createdAt)
14
- VALUES (?, ?, ?, ?, ?, ?, ?, 'pending', ?, ?, ?)
11
+ this.insertStmt = this.db.prepare(`
12
+ INSERT INTO suggestions
13
+ (id, type, title, description, priority, evidence, suggestedAction, status, riskLevel, sourceModule, createdAt)
14
+ VALUES (?, ?, ?, ?, ?, ?, ?, 'pending', ?, ?, ?)
15
15
  `);
16
16
  }
17
17
  initTables() {
18
- this.db.exec(`
19
- CREATE TABLE IF NOT EXISTS suggestions (
20
- id TEXT PRIMARY KEY,
21
- type TEXT NOT NULL CHECK(type IN ('security','performance','quality','dependency','pattern')),
22
- title TEXT NOT NULL,
23
- description TEXT NOT NULL,
24
- priority INTEGER NOT NULL CHECK(priority BETWEEN 1 AND 5),
25
- evidence TEXT NOT NULL,
26
- suggestedAction TEXT,
27
- status TEXT DEFAULT 'pending' CHECK(status IN ('pending','accepted','dismissed','auto_applied')),
28
- riskLevel TEXT DEFAULT 'LOW',
29
- sourceModule TEXT NOT NULL,
30
- createdAt TEXT NOT NULL,
31
- resolvedAt TEXT
32
- );
33
- CREATE INDEX IF NOT EXISTS idx_suggestion_status_priority ON suggestions(status, priority);
34
- CREATE INDEX IF NOT EXISTS idx_suggestion_type_created ON suggestions(type, createdAt);
18
+ this.db.exec(`
19
+ CREATE TABLE IF NOT EXISTS suggestions (
20
+ id TEXT PRIMARY KEY,
21
+ type TEXT NOT NULL CHECK(type IN ('security','performance','quality','dependency','pattern')),
22
+ title TEXT NOT NULL,
23
+ description TEXT NOT NULL,
24
+ priority INTEGER NOT NULL CHECK(priority BETWEEN 1 AND 5),
25
+ evidence TEXT NOT NULL,
26
+ suggestedAction TEXT,
27
+ status TEXT DEFAULT 'pending' CHECK(status IN ('pending','accepted','dismissed','auto_applied')),
28
+ riskLevel TEXT DEFAULT 'LOW',
29
+ sourceModule TEXT NOT NULL,
30
+ createdAt TEXT NOT NULL,
31
+ resolvedAt TEXT
32
+ );
33
+ CREATE INDEX IF NOT EXISTS idx_suggestion_status_priority ON suggestions(status, priority);
34
+ CREATE INDEX IF NOT EXISTS idx_suggestion_type_created ON suggestions(type, createdAt);
35
35
  `);
36
36
  try {
37
- this.db.exec(`
38
- CREATE VIRTUAL TABLE IF NOT EXISTS suggestions_fts USING fts5(
39
- title, description,
40
- content='suggestions', content_rowid='rowid'
41
- );
42
- CREATE TRIGGER IF NOT EXISTS suggestions_fts_ai AFTER INSERT ON suggestions BEGIN
43
- INSERT INTO suggestions_fts(rowid, title, description)
44
- VALUES (new.rowid, new.title, new.description);
45
- END;
37
+ this.db.exec(`
38
+ CREATE VIRTUAL TABLE IF NOT EXISTS suggestions_fts USING fts5(
39
+ title, description,
40
+ content='suggestions', content_rowid='rowid'
41
+ );
42
+ CREATE TRIGGER IF NOT EXISTS suggestions_fts_ai AFTER INSERT ON suggestions BEGIN
43
+ INSERT INTO suggestions_fts(rowid, title, description)
44
+ VALUES (new.rowid, new.title, new.description);
45
+ END;
46
46
  `);
47
47
  this.fts5Available = true;
48
48
  }
@@ -102,9 +102,9 @@ export class SuggestionStore {
102
102
  return [];
103
103
  try {
104
104
  return this.db
105
- .prepare(`SELECT s.* FROM suggestions s
106
- JOIN suggestions_fts f ON s.rowid = f.rowid
107
- WHERE suggestions_fts MATCH ?
105
+ .prepare(`SELECT s.* FROM suggestions s
106
+ JOIN suggestions_fts f ON s.rowid = f.rowid
107
+ WHERE suggestions_fts MATCH ?
108
108
  ORDER BY rank LIMIT ?`)
109
109
  .all(sanitized, limit);
110
110
  }