@su-record/vibe 2.9.32 → 2.9.33

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 (480) hide show
  1. package/.env.example +37 -37
  2. package/CLAUDE.md +109 -109
  3. package/LICENSE +21 -21
  4. package/README.en.md +220 -220
  5. package/README.md +171 -171
  6. package/agents/architect-low.md +41 -41
  7. package/agents/architect-medium.md +59 -59
  8. package/agents/architect.md +80 -80
  9. package/agents/build-error-resolver.md +115 -115
  10. package/agents/compounder.md +261 -261
  11. package/agents/diagrammer.md +178 -178
  12. package/agents/docs/api-documenter.md +99 -99
  13. package/agents/docs/changelog-writer.md +93 -93
  14. package/agents/e2e-tester.md +294 -294
  15. package/agents/event/event-comms.md +78 -78
  16. package/agents/event/event-content.md +68 -68
  17. package/agents/event/event-image.md +95 -95
  18. package/agents/event/event-ops.md +84 -84
  19. package/agents/event/event-scheduler.md +69 -69
  20. package/agents/event/event-speaker.md +86 -86
  21. package/agents/explorer-low.md +42 -42
  22. package/agents/explorer-medium.md +59 -59
  23. package/agents/explorer.md +48 -48
  24. package/agents/implementer-low.md +43 -43
  25. package/agents/implementer-medium.md +52 -52
  26. package/agents/implementer.md +54 -54
  27. package/agents/junior-mentor.md +141 -141
  28. package/agents/planning/requirements-analyst.md +84 -84
  29. package/agents/planning/ux-advisor.md +83 -83
  30. package/agents/qa/acceptance-tester.md +86 -86
  31. package/agents/qa/edge-case-finder.md +93 -93
  32. package/agents/qa/qa-coordinator.md +131 -131
  33. package/agents/refactor-cleaner.md +143 -143
  34. package/agents/research/best-practices-agent.md +199 -199
  35. package/agents/research/codebase-patterns-agent.md +157 -157
  36. package/agents/research/framework-docs-agent.md +188 -188
  37. package/agents/research/security-advisory-agent.md +213 -213
  38. package/agents/review/architecture-reviewer.md +107 -107
  39. package/agents/review/complexity-reviewer.md +116 -116
  40. package/agents/review/data-integrity-reviewer.md +88 -88
  41. package/agents/review/git-history-reviewer.md +103 -103
  42. package/agents/review/performance-reviewer.md +86 -86
  43. package/agents/review/python-reviewer.md +150 -150
  44. package/agents/review/rails-reviewer.md +139 -139
  45. package/agents/review/react-reviewer.md +144 -144
  46. package/agents/review/security-reviewer.md +80 -80
  47. package/agents/review/simplicity-reviewer.md +140 -140
  48. package/agents/review/test-coverage-reviewer.md +116 -116
  49. package/agents/review/typescript-reviewer.md +127 -127
  50. package/agents/searcher.md +54 -54
  51. package/agents/simplifier.md +120 -120
  52. package/agents/teams/debug-team.md +70 -70
  53. package/agents/teams/dev-team.md +88 -88
  54. package/agents/teams/docs-team.md +80 -80
  55. package/agents/teams/figma/figma-analyst.md +52 -52
  56. package/agents/teams/figma/figma-architect.md +112 -112
  57. package/agents/teams/figma/figma-auditor.md +82 -82
  58. package/agents/teams/figma/figma-builder.md +100 -100
  59. package/agents/teams/figma-team.md +85 -85
  60. package/agents/teams/fullstack-team.md +83 -83
  61. package/agents/teams/lite-team.md +69 -69
  62. package/agents/teams/migration-team.md +78 -78
  63. package/agents/teams/refactor-team.md +94 -94
  64. package/agents/teams/research-team.md +86 -86
  65. package/agents/teams/review-debate-team.md +125 -125
  66. package/agents/teams/security-team.md +81 -81
  67. package/agents/tester.md +49 -49
  68. package/agents/ui/ui-a11y-auditor.md +93 -93
  69. package/agents/ui/ui-antipattern-detector.md +102 -102
  70. package/agents/ui/ui-dataviz-advisor.md +69 -69
  71. package/agents/ui/ui-design-system-gen.md +57 -57
  72. package/agents/ui/ui-industry-analyzer.md +49 -49
  73. package/agents/ui/ui-layout-architect.md +65 -65
  74. package/agents/ui/ui-stack-implementer.md +68 -68
  75. package/agents/ui/ux-compliance-reviewer.md +81 -81
  76. package/agents/ui-previewer.md +258 -258
  77. package/commands/vibe.analyze.md +533 -533
  78. package/commands/vibe.contract.md +105 -105
  79. package/commands/vibe.docs.md +33 -33
  80. package/commands/vibe.event.md +163 -163
  81. package/commands/vibe.figma.md +600 -600
  82. package/commands/vibe.harness.md +177 -177
  83. package/commands/vibe.regress.md +73 -73
  84. package/commands/vibe.review.md +624 -624
  85. package/commands/vibe.run.md +1946 -1946
  86. package/commands/vibe.scaffold.md +195 -195
  87. package/commands/vibe.spec.md +577 -577
  88. package/commands/vibe.test.md +49 -49
  89. package/commands/vibe.trace.md +276 -276
  90. package/commands/vibe.utils.md +413 -413
  91. package/commands/vibe.verify.md +572 -572
  92. package/dist/cli/collaborator.js +52 -52
  93. package/dist/cli/commands/codex-proxy.js +15 -15
  94. package/dist/cli/commands/config.js +9 -9
  95. package/dist/cli/commands/evolution.js +12 -12
  96. package/dist/cli/commands/figma.js +20 -20
  97. package/dist/cli/commands/info.js +46 -46
  98. package/dist/cli/commands/init.d.ts.map +1 -1
  99. package/dist/cli/commands/init.js +15 -10
  100. package/dist/cli/commands/init.js.map +1 -1
  101. package/dist/cli/commands/remove.js +14 -14
  102. package/dist/cli/commands/sentinel.js +27 -27
  103. package/dist/cli/commands/skills.js +5 -5
  104. package/dist/cli/commands/slack.js +10 -10
  105. package/dist/cli/commands/stats.js +6 -6
  106. package/dist/cli/commands/telegram.js +12 -12
  107. package/dist/cli/commands/update.d.ts.map +1 -1
  108. package/dist/cli/commands/update.js +5 -3
  109. package/dist/cli/commands/update.js.map +1 -1
  110. package/dist/cli/detect.js +32 -32
  111. package/dist/cli/index.js +33 -33
  112. package/dist/cli/llm/claude-commands.js +16 -16
  113. package/dist/cli/llm/config.js +18 -18
  114. package/dist/cli/llm/gemini-commands.js +16 -16
  115. package/dist/cli/llm/gpt-commands.js +19 -19
  116. package/dist/cli/llm/help.js +21 -21
  117. package/dist/cli/postinstall/cursor-agents.js +32 -32
  118. package/dist/cli/postinstall/cursor-rules.js +83 -83
  119. package/dist/cli/postinstall/cursor-skills.js +743 -743
  120. package/dist/cli/postinstall/main.d.ts.map +1 -1
  121. package/dist/cli/postinstall/main.js +11 -0
  122. package/dist/cli/postinstall/main.js.map +1 -1
  123. package/dist/cli/setup/ProjectSetup.d.ts +9 -4
  124. package/dist/cli/setup/ProjectSetup.d.ts.map +1 -1
  125. package/dist/cli/setup/ProjectSetup.js +95 -79
  126. package/dist/cli/setup/ProjectSetup.js.map +1 -1
  127. package/dist/cli/setup/Provisioner.js +42 -42
  128. package/dist/cli/setup.d.ts +1 -1
  129. package/dist/cli/setup.d.ts.map +1 -1
  130. package/dist/cli/setup.js +1 -1
  131. package/dist/cli/setup.js.map +1 -1
  132. package/dist/infra/lib/DeepInit.js +24 -24
  133. package/dist/infra/lib/IterationTracker.js +11 -11
  134. package/dist/infra/lib/PythonParser.js +108 -108
  135. package/dist/infra/lib/ReviewRace.js +96 -96
  136. package/dist/infra/lib/SkillFrontmatter.js +28 -28
  137. package/dist/infra/lib/SkillQualityGate.js +9 -9
  138. package/dist/infra/lib/SkillRepository.js +159 -159
  139. package/dist/infra/lib/UltraQA.js +99 -99
  140. package/dist/infra/lib/autonomy/AuditStore.js +41 -41
  141. package/dist/infra/lib/autonomy/ConfirmationStore.js +30 -30
  142. package/dist/infra/lib/autonomy/EventOutbox.js +38 -38
  143. package/dist/infra/lib/autonomy/PolicyEngine.d.ts +3 -3
  144. package/dist/infra/lib/autonomy/PolicyEngine.js +18 -18
  145. package/dist/infra/lib/autonomy/SecuritySentinel.js +1 -1
  146. package/dist/infra/lib/autonomy/SuggestionStore.js +33 -33
  147. package/dist/infra/lib/embedding/VectorStore.js +22 -22
  148. package/dist/infra/lib/evolution/AgentAnalyzer.js +10 -10
  149. package/dist/infra/lib/evolution/DescriptionOptimizer.js +21 -21
  150. package/dist/infra/lib/evolution/GenerationRegistry.js +36 -36
  151. package/dist/infra/lib/evolution/InsightStore.js +90 -90
  152. package/dist/infra/lib/evolution/ParityTester.js +57 -57
  153. package/dist/infra/lib/evolution/RollbackManager.js +5 -5
  154. package/dist/infra/lib/evolution/SkillBenchmark.js +23 -23
  155. package/dist/infra/lib/evolution/SkillEvalRunner.js +50 -50
  156. package/dist/infra/lib/evolution/SkillGapDetector.js +10 -10
  157. package/dist/infra/lib/evolution/UsageTracker.js +28 -28
  158. package/dist/infra/lib/gemini/orchestration.js +5 -5
  159. package/dist/infra/lib/gpt/orchestration.js +4 -4
  160. package/dist/infra/lib/memory/KnowledgeGraph.js +4 -4
  161. package/dist/infra/lib/memory/MemorySearch.js +57 -57
  162. package/dist/infra/lib/memory/MemoryStorage.js +181 -181
  163. package/dist/infra/lib/memory/ObservationStore.js +28 -28
  164. package/dist/infra/lib/memory/ReflectionStore.js +30 -30
  165. package/dist/infra/lib/memory/SessionRAGRetriever.js +7 -7
  166. package/dist/infra/lib/memory/SessionRAGStore.js +225 -225
  167. package/dist/infra/lib/memory/SessionSummarizer.js +9 -9
  168. package/dist/infra/orchestrator/AgentManager.js +12 -12
  169. package/dist/infra/orchestrator/AgentRegistry.js +65 -65
  170. package/dist/infra/orchestrator/MultiLlmResearch.js +8 -8
  171. package/dist/infra/orchestrator/SwarmOrchestrator.test.js +16 -16
  172. package/dist/infra/orchestrator/parallelResearch.js +24 -24
  173. package/dist/tools/convention/analyzeComplexity.test.js +115 -115
  174. package/dist/tools/convention/validateCodeQuality.test.js +104 -104
  175. package/dist/tools/memory/createMemoryTimeline.js +10 -10
  176. package/dist/tools/memory/getMemoryGraph.js +12 -12
  177. package/dist/tools/memory/getSessionContext.js +9 -9
  178. package/dist/tools/memory/linkMemories.js +14 -14
  179. package/dist/tools/memory/listMemories.js +4 -4
  180. package/dist/tools/memory/recallMemory.js +4 -4
  181. package/dist/tools/memory/saveMemory.js +4 -4
  182. package/dist/tools/memory/searchMemoriesAdvanced.js +23 -23
  183. package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
  184. package/dist/tools/semantic/astGrep.test.js +6 -6
  185. package/dist/tools/spec/prdParser.test.js +171 -171
  186. package/dist/tools/spec/specGenerator.js +169 -169
  187. package/dist/tools/spec/traceabilityMatrix.js +64 -64
  188. package/dist/tools/spec/traceabilityMatrix.test.js +28 -28
  189. package/hooks/gemini-hooks.json +73 -73
  190. package/hooks/hooks.json +134 -134
  191. package/hooks/scripts/__tests__/keyword-detector.test.js +199 -199
  192. package/hooks/scripts/__tests__/pre-tool-guard.test.js +409 -409
  193. package/hooks/scripts/__tests__/sentinel-guard.test.js +208 -208
  194. package/hooks/scripts/auto-commit.js +97 -97
  195. package/hooks/scripts/auto-format.js +64 -64
  196. package/hooks/scripts/auto-test.js +81 -81
  197. package/hooks/scripts/code-check.js +271 -271
  198. package/hooks/scripts/codex-detect.js +46 -46
  199. package/hooks/scripts/codex-review-gate.js +80 -80
  200. package/hooks/scripts/command-log.js +32 -32
  201. package/hooks/scripts/context-save.js +353 -353
  202. package/hooks/scripts/evolution-engine.js +91 -91
  203. package/hooks/scripts/figma-extract.js +768 -768
  204. package/hooks/scripts/figma-guard.js +219 -219
  205. package/hooks/scripts/figma-refine.js +315 -315
  206. package/hooks/scripts/figma-to-scss.js +394 -394
  207. package/hooks/scripts/figma-validate.js +353 -353
  208. package/hooks/scripts/hud-status.js +321 -321
  209. package/hooks/scripts/keyword-detector.js +214 -214
  210. package/hooks/scripts/lib/dispatcher.js +87 -87
  211. package/hooks/scripts/lib/scope-from-spec.js +276 -276
  212. package/hooks/scripts/llm-orchestrate.js +645 -645
  213. package/hooks/scripts/post-edit.js +35 -35
  214. package/hooks/scripts/pr-test-gate.js +52 -52
  215. package/hooks/scripts/pre-tool-guard.js +259 -259
  216. package/hooks/scripts/prompt-dispatcher.js +192 -192
  217. package/hooks/scripts/scope-guard.js +145 -145
  218. package/hooks/scripts/sentinel-guard.js +130 -130
  219. package/hooks/scripts/session-start.js +186 -186
  220. package/hooks/scripts/skill-injector.js +83 -83
  221. package/hooks/scripts/step-counter.js +45 -45
  222. package/hooks/scripts/stop-notify.js +209 -209
  223. package/hooks/scripts/utils.js +315 -315
  224. package/languages/csharp-unity.md +515 -515
  225. package/languages/gdscript-godot.md +470 -470
  226. package/languages/ruby-rails.md +489 -489
  227. package/languages/typescript-angular.md +433 -433
  228. package/languages/typescript-astro.md +416 -416
  229. package/languages/typescript-electron.md +406 -406
  230. package/languages/typescript-nestjs.md +524 -524
  231. package/languages/typescript-svelte.md +407 -407
  232. package/languages/typescript-tauri.md +365 -365
  233. package/package.json +106 -106
  234. package/skills/agents-md/SKILL.md +121 -121
  235. package/skills/agents-md/rubrics/what-to-keep.md +49 -49
  236. package/skills/agents-md/templates/agents-md.md +36 -36
  237. package/skills/arch-guard/SKILL.md +181 -181
  238. package/skills/arch-guard/agents/detector.md +48 -48
  239. package/skills/arch-guard/agents/reporter.md +48 -48
  240. package/skills/arch-guard/agents/rule-generator.md +49 -49
  241. package/skills/arch-guard/agents/violation-checker.md +51 -51
  242. package/skills/arch-guard/frameworks/clean-architecture.md +108 -108
  243. package/skills/arch-guard/frameworks/solid.md +102 -102
  244. package/skills/arch-guard/scripts/check-boundaries.js +90 -90
  245. package/skills/arch-guard/templates/arch-rules.json +47 -47
  246. package/skills/arch-guard/templates/violation-report.md +53 -53
  247. package/skills/brand-assets/SKILL.md +147 -147
  248. package/skills/brand-assets/rubrics/asset-checklist.md +98 -98
  249. package/skills/brand-assets/templates/brand-guide.md +161 -161
  250. package/skills/capability-loop/SKILL.md +272 -272
  251. package/skills/capability-loop/agents/capability-designer.md +61 -61
  252. package/skills/capability-loop/agents/failure-analyst.md +55 -55
  253. package/skills/capability-loop/agents/implementer.md +50 -50
  254. package/skills/capability-loop/agents/tester.md +53 -53
  255. package/skills/capability-loop/templates/capability-spec.md +118 -118
  256. package/skills/capability-loop/templates/failure-analysis.md +118 -118
  257. package/skills/characterization-test/SKILL.md +207 -207
  258. package/skills/characterization-test/agents/behavior-capturer.md +50 -50
  259. package/skills/characterization-test/agents/coverage-checker.md +54 -54
  260. package/skills/characterization-test/agents/reporter.md +50 -50
  261. package/skills/characterization-test/agents/test-writer.md +49 -49
  262. package/skills/characterization-test/rubrics/coverage-criteria.md +53 -53
  263. package/skills/characterization-test/templates/test-template.ts +101 -101
  264. package/skills/chub-usage/SKILL.md +139 -139
  265. package/skills/claude-md-guide/SKILL.md +351 -351
  266. package/skills/claude-md-guide/rubrics/anti-patterns.md +88 -88
  267. package/skills/claude-md-guide/templates/claude-md.md +54 -54
  268. package/skills/commerce-patterns/SKILL.md +64 -64
  269. package/skills/commerce-patterns/rubrics/checkout-flow.md +48 -48
  270. package/skills/commerce-patterns/templates/product-schema.md +85 -85
  271. package/skills/commit-push-pr/SKILL.md +77 -77
  272. package/skills/commit-push-pr/agents/change-analyzer.md +55 -55
  273. package/skills/commit-push-pr/agents/message-writer.md +50 -50
  274. package/skills/commit-push-pr/agents/pr-writer.md +58 -58
  275. package/skills/commit-push-pr/agents/reviewer.md +52 -52
  276. package/skills/commit-push-pr/rubrics/commit-message.md +73 -73
  277. package/skills/commit-push-pr/templates/pr-body.md +63 -63
  278. package/skills/context7-usage/SKILL.md +106 -106
  279. package/skills/context7-usage/rubrics/when-to-use.md +50 -50
  280. package/skills/create-prd/SKILL.md +90 -90
  281. package/skills/create-prd/agents/edge-case-finder.md +48 -48
  282. package/skills/create-prd/agents/prioritizer.md +60 -60
  283. package/skills/create-prd/agents/requirements-writer.md +48 -48
  284. package/skills/create-prd/agents/researcher.md +55 -55
  285. package/skills/create-prd/agents/reviewer.md +54 -54
  286. package/skills/create-prd/frameworks/jobs-to-be-done.md +96 -96
  287. package/skills/create-prd/frameworks/rice-scoring.md +97 -97
  288. package/skills/create-prd/orchestrator.md +70 -70
  289. package/skills/create-prd/rubrics/completeness.md +58 -58
  290. package/skills/create-prd/templates/prd.md +139 -139
  291. package/skills/design-audit/SKILL.md +152 -152
  292. package/skills/design-audit/agents/a11y-auditor.md +43 -43
  293. package/skills/design-audit/agents/performance-auditor.md +46 -46
  294. package/skills/design-audit/agents/responsive-auditor.md +46 -46
  295. package/skills/design-audit/agents/scorer.md +47 -47
  296. package/skills/design-audit/agents/slop-detector.md +47 -47
  297. package/skills/design-audit/frameworks/core-web-vitals.md +107 -107
  298. package/skills/design-audit/frameworks/wcag-checklist.md +64 -64
  299. package/skills/design-audit/orchestrator.md +64 -64
  300. package/skills/design-audit/rubrics/ai-slop-patterns.md +83 -83
  301. package/skills/design-audit/rubrics/scoring.md +63 -63
  302. package/skills/design-audit/templates/report.md +88 -88
  303. package/skills/design-critique/SKILL.md +139 -139
  304. package/skills/design-critique/rubrics/ux-heuristics.md +143 -143
  305. package/skills/design-critique/templates/critique-report.md +86 -86
  306. package/skills/design-distill/SKILL.md +130 -130
  307. package/skills/design-distill/templates/design-system.md +132 -132
  308. package/skills/design-normalize/SKILL.md +133 -133
  309. package/skills/design-normalize/rubrics/token-naming.md +117 -117
  310. package/skills/design-normalize/templates/token-audit.md +89 -89
  311. package/skills/design-polish/SKILL.md +131 -131
  312. package/skills/design-polish/rubrics/polish-checklist.md +68 -68
  313. package/skills/design-polish/templates/polish-report.md +64 -64
  314. package/skills/design-teach/SKILL.md +182 -182
  315. package/skills/design-teach/rubrics/brand-personality.md +73 -73
  316. package/skills/design-teach/templates/design-context.json +36 -36
  317. package/skills/devlog/SKILL.md +143 -143
  318. package/skills/e2e-commerce/SKILL.md +62 -62
  319. package/skills/e2e-commerce/templates/test-scenarios.md +170 -170
  320. package/skills/event-comms/SKILL.md +172 -172
  321. package/skills/event-comms/templates/email-invite.md +99 -99
  322. package/skills/event-comms/templates/sns-post.md +133 -133
  323. package/skills/event-ops/SKILL.md +207 -207
  324. package/skills/event-ops/rubrics/contingency.md +85 -85
  325. package/skills/event-ops/templates/d-day-checklist.md +65 -65
  326. package/skills/event-planning/SKILL.md +144 -144
  327. package/skills/event-planning/rubrics/timeline.md +70 -70
  328. package/skills/event-planning/templates/event-plan.md +91 -91
  329. package/skills/exec-plan/SKILL.md +149 -149
  330. package/skills/exec-plan/agents/decomposer.md +47 -47
  331. package/skills/exec-plan/agents/dependency-mapper.md +44 -44
  332. package/skills/exec-plan/agents/estimator.md +43 -43
  333. package/skills/exec-plan/agents/validator.md +55 -55
  334. package/skills/exec-plan/orchestrator.md +70 -70
  335. package/skills/exec-plan/rubrics/complexity-scoring.md +75 -75
  336. package/skills/exec-plan/templates/plan.md +147 -147
  337. package/skills/git-worktree/SKILL.md +73 -73
  338. package/skills/git-worktree/rubrics/when-to-use.md +55 -55
  339. package/skills/handoff/SKILL.md +110 -110
  340. package/skills/handoff/agents/context-summarizer.md +51 -51
  341. package/skills/handoff/agents/document-writer.md +63 -63
  342. package/skills/handoff/agents/state-collector.md +53 -53
  343. package/skills/handoff/agents/verifier.md +48 -48
  344. package/skills/handoff/rubrics/completeness.md +62 -62
  345. package/skills/handoff/templates/handoff.md +107 -107
  346. package/skills/parallel-research/SKILL.md +104 -104
  347. package/skills/parallel-research/agents/best-practices.md +43 -43
  348. package/skills/parallel-research/agents/codebase-patterns.md +46 -46
  349. package/skills/parallel-research/agents/framework-docs.md +45 -45
  350. package/skills/parallel-research/agents/security-advisory.md +46 -46
  351. package/skills/parallel-research/agents/synthesizer.md +57 -57
  352. package/skills/parallel-research/experts/best-practices.md +50 -50
  353. package/skills/parallel-research/experts/codebase-patterns.md +70 -70
  354. package/skills/parallel-research/experts/framework-docs.md +65 -65
  355. package/skills/parallel-research/experts/security-advisory.md +69 -69
  356. package/skills/parallel-research/orchestrator.md +79 -79
  357. package/skills/parallel-research/templates/awesome-list.md +32 -32
  358. package/skills/parallel-research/templates/paper.md +88 -88
  359. package/skills/parallel-research/templates/synthesis.md +101 -101
  360. package/skills/prioritization-frameworks/SKILL.md +87 -87
  361. package/skills/prioritization-frameworks/rubrics/frameworks.md +79 -79
  362. package/skills/prioritization-frameworks/templates/scoring-matrix.md +69 -69
  363. package/skills/priority-todos/SKILL.md +64 -64
  364. package/skills/priority-todos/rubrics/prioritization.md +70 -70
  365. package/skills/priority-todos/templates/todo-board.md +59 -59
  366. package/skills/seo-checklist/SKILL.md +58 -58
  367. package/skills/seo-checklist/frameworks/structured-data.md +153 -153
  368. package/skills/seo-checklist/rubrics/content-seo.md +42 -42
  369. package/skills/seo-checklist/rubrics/technical-seo.md +48 -48
  370. package/skills/techdebt/SKILL.md +124 -124
  371. package/skills/techdebt/agents/analyzer.md +50 -50
  372. package/skills/techdebt/agents/fixer.md +41 -41
  373. package/skills/techdebt/agents/reviewer.md +47 -47
  374. package/skills/techdebt/agents/scanner.md +44 -44
  375. package/skills/techdebt/orchestrator.md +70 -70
  376. package/skills/techdebt/rubrics/severity.md +51 -51
  377. package/skills/techdebt/scripts/scan.js +90 -90
  378. package/skills/techdebt/templates/report.md +86 -86
  379. package/skills/tool-fallback/SKILL.md +104 -104
  380. package/skills/tool-fallback/rubrics/fallback-chain.md +58 -58
  381. package/skills/typescript-advanced-types/SKILL.md +67 -67
  382. package/skills/typescript-advanced-types/rubrics/type-patterns.md +109 -109
  383. package/skills/ui-ux-pro-max/SKILL.md +236 -236
  384. package/skills/ui-ux-pro-max/reference/color-and-contrast.md +517 -517
  385. package/skills/ui-ux-pro-max/reference/interaction-design.md +544 -544
  386. package/skills/ui-ux-pro-max/reference/motion-design.md +591 -591
  387. package/skills/ui-ux-pro-max/reference/responsive-design.md +463 -463
  388. package/skills/ui-ux-pro-max/reference/spatial-design.md +390 -390
  389. package/skills/ui-ux-pro-max/reference/typography.md +455 -455
  390. package/skills/ui-ux-pro-max/reference/ux-writing.md +469 -469
  391. package/skills/ui-ux-pro-max/rubrics/interaction-states.md +83 -83
  392. package/skills/ui-ux-pro-max/rubrics/responsive-breakpoints.md +99 -99
  393. package/skills/user-personas/SKILL.md +75 -75
  394. package/skills/user-personas/rubrics/research-methods.md +56 -56
  395. package/skills/user-personas/templates/persona.md +89 -89
  396. package/skills/vercel-react-best-practices/SKILL.md +60 -60
  397. package/skills/vercel-react-best-practices/rubrics/performance.md +82 -82
  398. package/skills/vercel-react-best-practices/rubrics/server-components.md +86 -86
  399. package/skills/vibe-contract/SKILL.md +166 -166
  400. package/skills/vibe-docs/templates/architecture.md +80 -80
  401. package/skills/vibe-docs/templates/readme.md +84 -84
  402. package/skills/vibe-docs/templates/release-notes.md +74 -74
  403. package/skills/vibe-figma/SKILL.md +363 -363
  404. package/skills/vibe-figma/rubrics/extraction-checklist.md +51 -51
  405. package/skills/vibe-figma/templates/component-index.md +126 -126
  406. package/skills/vibe-figma/templates/component-spec.md +168 -168
  407. package/skills/vibe-figma/templates/figma-handoff.md +100 -100
  408. package/skills/vibe-figma/templates/remapped-tree.md +277 -277
  409. package/skills/vibe-figma-convert/SKILL.md +235 -235
  410. package/skills/vibe-figma-convert/rubrics/conversion-rules.md +141 -141
  411. package/skills/vibe-figma-convert/templates/component.md +140 -140
  412. package/skills/vibe-figma-extract/SKILL.md +241 -241
  413. package/skills/vibe-figma-extract/rubrics/image-rules.md +157 -157
  414. package/skills/vibe-interview/SKILL.md +358 -358
  415. package/skills/vibe-interview/checklists/api.md +101 -101
  416. package/skills/vibe-interview/checklists/feature.md +88 -88
  417. package/skills/vibe-interview/checklists/library.md +95 -95
  418. package/skills/vibe-interview/checklists/mobile.md +89 -89
  419. package/skills/vibe-interview/checklists/webapp.md +97 -97
  420. package/skills/vibe-interview/checklists/website.md +99 -99
  421. package/skills/vibe-plan/SKILL.md +254 -254
  422. package/skills/vibe-regress/SKILL.md +174 -174
  423. package/skills/vibe-regress/templates/bug.md +44 -44
  424. package/skills/vibe-regress/templates/test-jest.md +29 -29
  425. package/skills/vibe-regress/templates/test-vitest.md +30 -30
  426. package/skills/vibe-spec/SKILL.md +1195 -1195
  427. package/skills/vibe-spec-review/SKILL.md +726 -726
  428. package/skills/vibe-test/SKILL.md +140 -140
  429. package/skills/video-production/SKILL.md +52 -52
  430. package/skills/video-production/rubrics/quality-checklist.md +58 -58
  431. package/skills/video-production/templates/production-plan.md +104 -104
  432. package/vibe/config.json +29 -29
  433. package/vibe/constitution.md +227 -227
  434. package/vibe/rules/principles/communication-guide.md +98 -98
  435. package/vibe/rules/principles/development-philosophy.md +52 -52
  436. package/vibe/rules/principles/quick-start.md +102 -102
  437. package/vibe/rules/quality/bdd-contract-testing.md +393 -393
  438. package/vibe/rules/quality/checklist.md +276 -276
  439. package/vibe/rules/quality/performance.md +236 -236
  440. package/vibe/rules/quality/testing-strategy.md +440 -440
  441. package/vibe/rules/standards/anti-patterns.md +541 -541
  442. package/vibe/rules/standards/code-structure.md +291 -291
  443. package/vibe/rules/standards/complexity-metrics.md +313 -313
  444. package/vibe/rules/standards/git-workflow.md +237 -237
  445. package/vibe/rules/standards/naming-conventions.md +198 -198
  446. package/vibe/rules/standards/security.md +305 -305
  447. package/vibe/rules/writing/document-style.md +74 -74
  448. package/vibe/setup.sh +31 -31
  449. package/vibe/templates/claudemd-template.md +74 -74
  450. package/vibe/templates/constitution-template.md +267 -267
  451. package/vibe/templates/contract-backend-template.md +526 -526
  452. package/vibe/templates/contract-frontend-template.md +599 -599
  453. package/vibe/templates/feature-template.md +96 -96
  454. package/vibe/templates/plan-template.md +194 -194
  455. package/vibe/templates/spec-template.md +221 -221
  456. package/vibe/ui-ux-data/charts.csv +26 -26
  457. package/vibe/ui-ux-data/colors.csv +97 -97
  458. package/vibe/ui-ux-data/icons.csv +101 -101
  459. package/vibe/ui-ux-data/landing.csv +31 -31
  460. package/vibe/ui-ux-data/products.csv +96 -96
  461. package/vibe/ui-ux-data/react-performance.csv +45 -45
  462. package/vibe/ui-ux-data/stacks/astro.csv +54 -54
  463. package/vibe/ui-ux-data/stacks/flutter.csv +53 -53
  464. package/vibe/ui-ux-data/stacks/html-tailwind.csv +56 -56
  465. package/vibe/ui-ux-data/stacks/jetpack-compose.csv +53 -53
  466. package/vibe/ui-ux-data/stacks/nextjs.csv +53 -53
  467. package/vibe/ui-ux-data/stacks/nuxt-ui.csv +51 -51
  468. package/vibe/ui-ux-data/stacks/nuxtjs.csv +59 -59
  469. package/vibe/ui-ux-data/stacks/react-native.csv +52 -52
  470. package/vibe/ui-ux-data/stacks/react.csv +54 -54
  471. package/vibe/ui-ux-data/stacks/shadcn.csv +61 -61
  472. package/vibe/ui-ux-data/stacks/svelte.csv +54 -54
  473. package/vibe/ui-ux-data/stacks/swiftui.csv +51 -51
  474. package/vibe/ui-ux-data/stacks/vue.csv +50 -50
  475. package/vibe/ui-ux-data/styles.csv +68 -68
  476. package/vibe/ui-ux-data/typography.csv +57 -57
  477. package/vibe/ui-ux-data/ui-reasoning.csv +101 -101
  478. package/vibe/ui-ux-data/ux-guidelines.csv +99 -99
  479. package/vibe/ui-ux-data/version.json +31 -31
  480. package/vibe/ui-ux-data/web-interface.csv +31 -31
@@ -59,111 +59,111 @@ export class MemoryStorage {
59
59
  }
60
60
  initializeDatabase() {
61
61
  // Create memories table
62
- this.db.exec(`
63
- CREATE TABLE IF NOT EXISTS memories (
64
- key TEXT PRIMARY KEY,
65
- value TEXT NOT NULL,
66
- category TEXT NOT NULL DEFAULT 'general',
67
- timestamp TEXT NOT NULL,
68
- lastAccessed TEXT NOT NULL,
69
- priority INTEGER DEFAULT 0
70
- );
71
-
72
- CREATE INDEX IF NOT EXISTS idx_category ON memories(category);
73
- CREATE INDEX IF NOT EXISTS idx_timestamp ON memories(timestamp);
74
- CREATE INDEX IF NOT EXISTS idx_priority ON memories(priority);
75
- CREATE INDEX IF NOT EXISTS idx_lastAccessed ON memories(lastAccessed);
62
+ this.db.exec(`
63
+ CREATE TABLE IF NOT EXISTS memories (
64
+ key TEXT PRIMARY KEY,
65
+ value TEXT NOT NULL,
66
+ category TEXT NOT NULL DEFAULT 'general',
67
+ timestamp TEXT NOT NULL,
68
+ lastAccessed TEXT NOT NULL,
69
+ priority INTEGER DEFAULT 0
70
+ );
71
+
72
+ CREATE INDEX IF NOT EXISTS idx_category ON memories(category);
73
+ CREATE INDEX IF NOT EXISTS idx_timestamp ON memories(timestamp);
74
+ CREATE INDEX IF NOT EXISTS idx_priority ON memories(priority);
75
+ CREATE INDEX IF NOT EXISTS idx_lastAccessed ON memories(lastAccessed);
76
76
  `);
77
77
  // Create memory_relations table for Knowledge Graph
78
- this.db.exec(`
79
- CREATE TABLE IF NOT EXISTS memory_relations (
80
- id INTEGER PRIMARY KEY AUTOINCREMENT,
81
- sourceKey TEXT NOT NULL,
82
- targetKey TEXT NOT NULL,
83
- relationType TEXT NOT NULL,
84
- strength REAL DEFAULT 1.0,
85
- metadata TEXT,
86
- timestamp TEXT NOT NULL,
87
- UNIQUE(sourceKey, targetKey, relationType)
88
- );
89
-
90
- CREATE INDEX IF NOT EXISTS idx_rel_source ON memory_relations(sourceKey);
91
- CREATE INDEX IF NOT EXISTS idx_rel_target ON memory_relations(targetKey);
92
- CREATE INDEX IF NOT EXISTS idx_rel_type ON memory_relations(relationType);
78
+ this.db.exec(`
79
+ CREATE TABLE IF NOT EXISTS memory_relations (
80
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
81
+ sourceKey TEXT NOT NULL,
82
+ targetKey TEXT NOT NULL,
83
+ relationType TEXT NOT NULL,
84
+ strength REAL DEFAULT 1.0,
85
+ metadata TEXT,
86
+ timestamp TEXT NOT NULL,
87
+ UNIQUE(sourceKey, targetKey, relationType)
88
+ );
89
+
90
+ CREATE INDEX IF NOT EXISTS idx_rel_source ON memory_relations(sourceKey);
91
+ CREATE INDEX IF NOT EXISTS idx_rel_target ON memory_relations(targetKey);
92
+ CREATE INDEX IF NOT EXISTS idx_rel_type ON memory_relations(relationType);
93
93
  `);
94
94
  // Create observations table for structured observation capture
95
- this.db.exec(`
96
- CREATE TABLE IF NOT EXISTS observations (
97
- id INTEGER PRIMARY KEY AUTOINCREMENT,
98
- sessionId TEXT,
99
- type TEXT NOT NULL CHECK(type IN ('decision','bugfix','feature','refactor','discovery')),
100
- title TEXT NOT NULL,
101
- narrative TEXT,
102
- facts TEXT,
103
- concepts TEXT,
104
- filesModified TEXT,
105
- timestamp TEXT NOT NULL,
106
- projectPath TEXT
107
- );
108
-
109
- CREATE INDEX IF NOT EXISTS idx_obs_session ON observations(sessionId);
110
- CREATE INDEX IF NOT EXISTS idx_obs_type ON observations(type);
111
- CREATE INDEX IF NOT EXISTS idx_obs_timestamp ON observations(timestamp);
95
+ this.db.exec(`
96
+ CREATE TABLE IF NOT EXISTS observations (
97
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
98
+ sessionId TEXT,
99
+ type TEXT NOT NULL CHECK(type IN ('decision','bugfix','feature','refactor','discovery')),
100
+ title TEXT NOT NULL,
101
+ narrative TEXT,
102
+ facts TEXT,
103
+ concepts TEXT,
104
+ filesModified TEXT,
105
+ timestamp TEXT NOT NULL,
106
+ projectPath TEXT
107
+ );
108
+
109
+ CREATE INDEX IF NOT EXISTS idx_obs_session ON observations(sessionId);
110
+ CREATE INDEX IF NOT EXISTS idx_obs_type ON observations(type);
111
+ CREATE INDEX IF NOT EXISTS idx_obs_timestamp ON observations(timestamp);
112
112
  `);
113
113
  // Create session_summaries table
114
- this.db.exec(`
115
- CREATE TABLE IF NOT EXISTS session_summaries (
116
- id INTEGER PRIMARY KEY AUTOINCREMENT,
117
- sessionId TEXT UNIQUE NOT NULL,
118
- request TEXT,
119
- investigated TEXT,
120
- learned TEXT,
121
- completed TEXT,
122
- nextSteps TEXT,
123
- filesRead TEXT,
124
- filesEdited TEXT,
125
- timestamp TEXT NOT NULL
126
- );
127
-
128
- CREATE INDEX IF NOT EXISTS idx_ss_session ON session_summaries(sessionId);
129
- CREATE INDEX IF NOT EXISTS idx_ss_timestamp ON session_summaries(timestamp);
114
+ this.db.exec(`
115
+ CREATE TABLE IF NOT EXISTS session_summaries (
116
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
117
+ sessionId TEXT UNIQUE NOT NULL,
118
+ request TEXT,
119
+ investigated TEXT,
120
+ learned TEXT,
121
+ completed TEXT,
122
+ nextSteps TEXT,
123
+ filesRead TEXT,
124
+ filesEdited TEXT,
125
+ timestamp TEXT NOT NULL
126
+ );
127
+
128
+ CREATE INDEX IF NOT EXISTS idx_ss_session ON session_summaries(sessionId);
129
+ CREATE INDEX IF NOT EXISTS idx_ss_timestamp ON session_summaries(timestamp);
130
130
  `);
131
131
  // Create usage_events table for self-evolution (Phase 4)
132
- this.db.exec(`
133
- CREATE TABLE IF NOT EXISTS usage_events (
134
- id TEXT PRIMARY KEY,
135
- generationId TEXT NOT NULL,
136
- sessionId TEXT,
137
- matchedPrompt TEXT,
138
- feedback TEXT CHECK(feedback IN ('positive','negative','neutral') OR feedback IS NULL),
139
- createdAt TEXT NOT NULL
140
- );
141
-
142
- CREATE INDEX IF NOT EXISTS idx_ue_gen ON usage_events(generationId);
143
- CREATE INDEX IF NOT EXISTS idx_ue_session ON usage_events(sessionId);
144
- CREATE INDEX IF NOT EXISTS idx_ue_feedback ON usage_events(feedback);
145
- CREATE INDEX IF NOT EXISTS idx_ue_created ON usage_events(createdAt);
132
+ this.db.exec(`
133
+ CREATE TABLE IF NOT EXISTS usage_events (
134
+ id TEXT PRIMARY KEY,
135
+ generationId TEXT NOT NULL,
136
+ sessionId TEXT,
137
+ matchedPrompt TEXT,
138
+ feedback TEXT CHECK(feedback IN ('positive','negative','neutral') OR feedback IS NULL),
139
+ createdAt TEXT NOT NULL
140
+ );
141
+
142
+ CREATE INDEX IF NOT EXISTS idx_ue_gen ON usage_events(generationId);
143
+ CREATE INDEX IF NOT EXISTS idx_ue_session ON usage_events(sessionId);
144
+ CREATE INDEX IF NOT EXISTS idx_ue_feedback ON usage_events(feedback);
145
+ CREATE INDEX IF NOT EXISTS idx_ue_created ON usage_events(createdAt);
146
146
  `);
147
147
  // Create reflections table for self-evolution (Phase 1)
148
- this.db.exec(`
149
- CREATE TABLE IF NOT EXISTS reflections (
150
- id TEXT PRIMARY KEY,
151
- sessionId TEXT,
152
- type TEXT NOT NULL CHECK(type IN ('minor','major')),
153
- trigger TEXT NOT NULL CHECK(trigger IN ('context_pressure','session_end','manual')),
154
- insights TEXT,
155
- decisions TEXT,
156
- patterns TEXT,
157
- filesContext TEXT,
158
- score REAL DEFAULT 0.5 CHECK(score >= 0 AND score <= 1),
159
- createdAt TEXT NOT NULL
160
- );
161
-
162
- CREATE INDEX IF NOT EXISTS idx_refl_session ON reflections(sessionId);
163
- CREATE INDEX IF NOT EXISTS idx_refl_type ON reflections(type);
164
- CREATE INDEX IF NOT EXISTS idx_refl_trigger ON reflections(trigger);
165
- CREATE INDEX IF NOT EXISTS idx_refl_score ON reflections(score);
166
- CREATE INDEX IF NOT EXISTS idx_refl_created ON reflections(createdAt);
148
+ this.db.exec(`
149
+ CREATE TABLE IF NOT EXISTS reflections (
150
+ id TEXT PRIMARY KEY,
151
+ sessionId TEXT,
152
+ type TEXT NOT NULL CHECK(type IN ('minor','major')),
153
+ trigger TEXT NOT NULL CHECK(trigger IN ('context_pressure','session_end','manual')),
154
+ insights TEXT,
155
+ decisions TEXT,
156
+ patterns TEXT,
157
+ filesContext TEXT,
158
+ score REAL DEFAULT 0.5 CHECK(score >= 0 AND score <= 1),
159
+ createdAt TEXT NOT NULL
160
+ );
161
+
162
+ CREATE INDEX IF NOT EXISTS idx_refl_session ON reflections(sessionId);
163
+ CREATE INDEX IF NOT EXISTS idx_refl_type ON reflections(type);
164
+ CREATE INDEX IF NOT EXISTS idx_refl_trigger ON reflections(trigger);
165
+ CREATE INDEX IF NOT EXISTS idx_refl_score ON reflections(score);
166
+ CREATE INDEX IF NOT EXISTS idx_refl_created ON reflections(createdAt);
167
167
  `);
168
168
  // Enable WAL mode for better concurrency
169
169
  this.db.pragma('journal_mode = WAL');
@@ -175,56 +175,56 @@ export class MemoryStorage {
175
175
  initializeFTS5() {
176
176
  try {
177
177
  // Create FTS5 virtual table for memories
178
- this.db.exec(`
179
- CREATE VIRTUAL TABLE IF NOT EXISTS memories_fts
180
- USING fts5(key, value, content=memories, content_rowid=rowid);
178
+ this.db.exec(`
179
+ CREATE VIRTUAL TABLE IF NOT EXISTS memories_fts
180
+ USING fts5(key, value, content=memories, content_rowid=rowid);
181
181
  `);
182
182
  // Triggers to keep FTS5 in sync with memories table
183
- this.db.exec(`
184
- CREATE TRIGGER IF NOT EXISTS memories_ai AFTER INSERT ON memories BEGIN
185
- INSERT INTO memories_fts(rowid, key, value) VALUES (new.rowid, new.key, new.value);
186
- END;
187
- CREATE TRIGGER IF NOT EXISTS memories_ad AFTER DELETE ON memories BEGIN
188
- INSERT INTO memories_fts(memories_fts, rowid, key, value) VALUES('delete', old.rowid, old.key, old.value);
189
- END;
190
- CREATE TRIGGER IF NOT EXISTS memories_au AFTER UPDATE ON memories BEGIN
191
- INSERT INTO memories_fts(memories_fts, rowid, key, value) VALUES('delete', old.rowid, old.key, old.value);
192
- INSERT INTO memories_fts(rowid, key, value) VALUES (new.rowid, new.key, new.value);
193
- END;
183
+ this.db.exec(`
184
+ CREATE TRIGGER IF NOT EXISTS memories_ai AFTER INSERT ON memories BEGIN
185
+ INSERT INTO memories_fts(rowid, key, value) VALUES (new.rowid, new.key, new.value);
186
+ END;
187
+ CREATE TRIGGER IF NOT EXISTS memories_ad AFTER DELETE ON memories BEGIN
188
+ INSERT INTO memories_fts(memories_fts, rowid, key, value) VALUES('delete', old.rowid, old.key, old.value);
189
+ END;
190
+ CREATE TRIGGER IF NOT EXISTS memories_au AFTER UPDATE ON memories BEGIN
191
+ INSERT INTO memories_fts(memories_fts, rowid, key, value) VALUES('delete', old.rowid, old.key, old.value);
192
+ INSERT INTO memories_fts(rowid, key, value) VALUES (new.rowid, new.key, new.value);
193
+ END;
194
194
  `);
195
195
  // Create FTS5 for observations
196
- this.db.exec(`
197
- CREATE VIRTUAL TABLE IF NOT EXISTS observations_fts
198
- USING fts5(title, narrative, facts, concepts, content=observations, content_rowid=id);
199
-
200
- CREATE TRIGGER IF NOT EXISTS observations_ai AFTER INSERT ON observations BEGIN
201
- INSERT INTO observations_fts(rowid, title, narrative, facts, concepts)
202
- VALUES (new.id, new.title, new.narrative, new.facts, new.concepts);
203
- END;
204
- CREATE TRIGGER IF NOT EXISTS observations_ad AFTER DELETE ON observations BEGIN
205
- INSERT INTO observations_fts(observations_fts, rowid, title, narrative, facts, concepts)
206
- VALUES('delete', old.id, old.title, old.narrative, old.facts, old.concepts);
207
- END;
196
+ this.db.exec(`
197
+ CREATE VIRTUAL TABLE IF NOT EXISTS observations_fts
198
+ USING fts5(title, narrative, facts, concepts, content=observations, content_rowid=id);
199
+
200
+ CREATE TRIGGER IF NOT EXISTS observations_ai AFTER INSERT ON observations BEGIN
201
+ INSERT INTO observations_fts(rowid, title, narrative, facts, concepts)
202
+ VALUES (new.id, new.title, new.narrative, new.facts, new.concepts);
203
+ END;
204
+ CREATE TRIGGER IF NOT EXISTS observations_ad AFTER DELETE ON observations BEGIN
205
+ INSERT INTO observations_fts(observations_fts, rowid, title, narrative, facts, concepts)
206
+ VALUES('delete', old.id, old.title, old.narrative, old.facts, old.concepts);
207
+ END;
208
208
  `);
209
209
  // Create FTS5 for reflections
210
- this.db.exec(`
211
- CREATE VIRTUAL TABLE IF NOT EXISTS reflections_fts
212
- USING fts5(insights, decisions, patterns, content=reflections, content_rowid=rowid);
213
-
214
- CREATE TRIGGER IF NOT EXISTS reflections_ai AFTER INSERT ON reflections BEGIN
215
- INSERT INTO reflections_fts(rowid, insights, decisions, patterns)
216
- VALUES (new.rowid, new.insights, new.decisions, new.patterns);
217
- END;
218
- CREATE TRIGGER IF NOT EXISTS reflections_ad AFTER DELETE ON reflections BEGIN
219
- INSERT INTO reflections_fts(reflections_fts, rowid, insights, decisions, patterns)
220
- VALUES('delete', old.rowid, old.insights, old.decisions, old.patterns);
221
- END;
222
- CREATE TRIGGER IF NOT EXISTS reflections_au AFTER UPDATE ON reflections BEGIN
223
- INSERT INTO reflections_fts(reflections_fts, rowid, insights, decisions, patterns)
224
- VALUES('delete', old.rowid, old.insights, old.decisions, old.patterns);
225
- INSERT INTO reflections_fts(rowid, insights, decisions, patterns)
226
- VALUES (new.rowid, new.insights, new.decisions, new.patterns);
227
- END;
210
+ this.db.exec(`
211
+ CREATE VIRTUAL TABLE IF NOT EXISTS reflections_fts
212
+ USING fts5(insights, decisions, patterns, content=reflections, content_rowid=rowid);
213
+
214
+ CREATE TRIGGER IF NOT EXISTS reflections_ai AFTER INSERT ON reflections BEGIN
215
+ INSERT INTO reflections_fts(rowid, insights, decisions, patterns)
216
+ VALUES (new.rowid, new.insights, new.decisions, new.patterns);
217
+ END;
218
+ CREATE TRIGGER IF NOT EXISTS reflections_ad AFTER DELETE ON reflections BEGIN
219
+ INSERT INTO reflections_fts(reflections_fts, rowid, insights, decisions, patterns)
220
+ VALUES('delete', old.rowid, old.insights, old.decisions, old.patterns);
221
+ END;
222
+ CREATE TRIGGER IF NOT EXISTS reflections_au AFTER UPDATE ON reflections BEGIN
223
+ INSERT INTO reflections_fts(reflections_fts, rowid, insights, decisions, patterns)
224
+ VALUES('delete', old.rowid, old.insights, old.decisions, old.patterns);
225
+ INSERT INTO reflections_fts(rowid, insights, decisions, patterns)
226
+ VALUES (new.rowid, new.insights, new.decisions, new.patterns);
227
+ END;
228
228
  `);
229
229
  // Migrate existing data into FTS5 index
230
230
  const ftsCount = this.db.prepare(`SELECT COUNT(*) as cnt FROM memories_fts`).get().cnt;
@@ -246,10 +246,10 @@ export class MemoryStorage {
246
246
  }
247
247
  initializePreparedStatements() {
248
248
  try {
249
- this.recallStmt = this.db.prepare(`
250
- UPDATE memories SET lastAccessed = ?
251
- WHERE key = ?
252
- RETURNING *
249
+ this.recallStmt = this.db.prepare(`
250
+ UPDATE memories SET lastAccessed = ?
251
+ WHERE key = ?
252
+ RETURNING *
253
253
  `);
254
254
  }
255
255
  catch {
@@ -258,9 +258,9 @@ export class MemoryStorage {
258
258
  this.recallSelectStmt = this.db.prepare(`SELECT * FROM memories WHERE key = ?`);
259
259
  this.recallUpdateStmt = this.db.prepare(`UPDATE memories SET lastAccessed = ? WHERE key = ?`);
260
260
  }
261
- this.saveStmt = this.db.prepare(`
262
- INSERT OR REPLACE INTO memories (key, value, category, timestamp, lastAccessed, priority)
263
- VALUES (?, ?, ?, ?, ?, ?)
261
+ this.saveStmt = this.db.prepare(`
262
+ INSERT OR REPLACE INTO memories (key, value, category, timestamp, lastAccessed, priority)
263
+ VALUES (?, ?, ?, ?, ?, ?)
264
264
  `);
265
265
  }
266
266
  migrateFromJSON() {
@@ -272,9 +272,9 @@ export class MemoryStorage {
272
272
  const memories = JSON.parse(jsonData);
273
273
  if (memories.length === 0)
274
274
  return;
275
- const insert = this.db.prepare(`
276
- INSERT OR REPLACE INTO memories (key, value, category, timestamp, lastAccessed, priority)
277
- VALUES (?, ?, ?, ?, ?, ?)
275
+ const insert = this.db.prepare(`
276
+ INSERT OR REPLACE INTO memories (key, value, category, timestamp, lastAccessed, priority)
277
+ VALUES (?, ?, ?, ?, ?, ?)
278
278
  `);
279
279
  const insertMany = this.db.transaction((items) => {
280
280
  for (const item of items) {
@@ -350,9 +350,9 @@ export class MemoryStorage {
350
350
  this.saveStmt.run(key, value, category, timestamp, timestamp, priority);
351
351
  }
352
352
  else {
353
- const stmt = this.db.prepare(`
354
- INSERT OR REPLACE INTO memories (key, value, category, timestamp, lastAccessed, priority)
355
- VALUES (?, ?, ?, ?, ?, ?)
353
+ const stmt = this.db.prepare(`
354
+ INSERT OR REPLACE INTO memories (key, value, category, timestamp, lastAccessed, priority)
355
+ VALUES (?, ?, ?, ?, ?, ?)
356
356
  `);
357
357
  stmt.run(key, value, category, timestamp, timestamp, priority);
358
358
  }
@@ -395,10 +395,10 @@ export class MemoryStorage {
395
395
  */
396
396
  update(key, value) {
397
397
  const timestamp = new Date().toISOString();
398
- const stmt = this.db.prepare(`
399
- UPDATE memories
400
- SET value = ?, timestamp = ?, lastAccessed = ?
401
- WHERE key = ?
398
+ const stmt = this.db.prepare(`
399
+ UPDATE memories
400
+ SET value = ?, timestamp = ?, lastAccessed = ?
401
+ WHERE key = ?
402
402
  `);
403
403
  const result = stmt.run(value, timestamp, timestamp, key);
404
404
  return result.changes > 0;
@@ -408,16 +408,16 @@ export class MemoryStorage {
408
408
  */
409
409
  list(category) {
410
410
  if (category) {
411
- const stmt = this.db.prepare(`
412
- SELECT * FROM memories WHERE category = ?
413
- ORDER BY priority DESC, timestamp DESC
411
+ const stmt = this.db.prepare(`
412
+ SELECT * FROM memories WHERE category = ?
413
+ ORDER BY priority DESC, timestamp DESC
414
414
  `);
415
415
  return stmt.all(category);
416
416
  }
417
417
  else {
418
- const stmt = this.db.prepare(`
419
- SELECT * FROM memories
420
- ORDER BY priority DESC, timestamp DESC
418
+ const stmt = this.db.prepare(`
419
+ SELECT * FROM memories
420
+ ORDER BY priority DESC, timestamp DESC
421
421
  `);
422
422
  return stmt.all();
423
423
  }
@@ -453,13 +453,13 @@ export class MemoryStorage {
453
453
  if (!this.fts5Available) {
454
454
  return this.searchLike(query);
455
455
  }
456
- const stmt = this.db.prepare(`
457
- SELECT m.*, bm25(memories_fts) as rank
458
- FROM memories_fts fts
459
- JOIN memories m ON m.rowid = fts.rowid
460
- WHERE memories_fts MATCH ?
461
- ORDER BY rank
462
- LIMIT ?
456
+ const stmt = this.db.prepare(`
457
+ SELECT m.*, bm25(memories_fts) as rank
458
+ FROM memories_fts fts
459
+ JOIN memories m ON m.rowid = fts.rowid
460
+ WHERE memories_fts MATCH ?
461
+ ORDER BY rank
462
+ LIMIT ?
463
463
  `);
464
464
  return stmt.all(MemoryStorage.sanitizeFTS5Query(query), limit);
465
465
  }
@@ -470,10 +470,10 @@ export class MemoryStorage {
470
470
  return this.fts5Available;
471
471
  }
472
472
  searchLike(query) {
473
- const stmt = this.db.prepare(`
474
- SELECT * FROM memories
475
- WHERE key LIKE ? OR value LIKE ?
476
- ORDER BY priority DESC, timestamp DESC
473
+ const stmt = this.db.prepare(`
474
+ SELECT * FROM memories
475
+ WHERE key LIKE ? OR value LIKE ?
476
+ ORDER BY priority DESC, timestamp DESC
477
477
  `);
478
478
  const pattern = `%${query}%`;
479
479
  return stmt.all(pattern, pattern);
@@ -482,10 +482,10 @@ export class MemoryStorage {
482
482
  * Get memories by priority level
483
483
  */
484
484
  getByPriority(priority) {
485
- const stmt = this.db.prepare(`
486
- SELECT * FROM memories
487
- WHERE priority = ?
488
- ORDER BY timestamp DESC
485
+ const stmt = this.db.prepare(`
486
+ SELECT * FROM memories
487
+ WHERE priority = ?
488
+ ORDER BY timestamp DESC
489
489
  `);
490
490
  return stmt.all(priority);
491
491
  }
@@ -501,10 +501,10 @@ export class MemoryStorage {
501
501
  * Get memory statistics
502
502
  */
503
503
  getStats() {
504
- const categories = this.db.prepare(`
505
- SELECT category, COUNT(*) as count
506
- FROM memories
507
- GROUP BY category
504
+ const categories = this.db.prepare(`
505
+ SELECT category, COUNT(*) as count
506
+ FROM memories
507
+ GROUP BY category
508
508
  `).all();
509
509
  const byCategory = {};
510
510
  let total = 0;
@@ -9,9 +9,9 @@ export class ObservationStore {
9
9
  */
10
10
  add(input) {
11
11
  const timestamp = new Date().toISOString();
12
- const stmt = this.db.prepare(`
13
- INSERT INTO observations (sessionId, type, title, narrative, facts, concepts, filesModified, timestamp, projectPath)
14
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
12
+ const stmt = this.db.prepare(`
13
+ INSERT INTO observations (sessionId, type, title, narrative, facts, concepts, filesModified, timestamp, projectPath)
14
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
15
15
  `);
16
16
  const result = stmt.run(input.sessionId || null, input.type, input.title, input.narrative || null, input.facts ? JSON.stringify(input.facts) : null, input.concepts ? JSON.stringify(input.concepts) : null, input.filesModified ? JSON.stringify(input.filesModified) : null, timestamp, input.projectPath || null);
17
17
  return result.lastInsertRowid;
@@ -20,9 +20,9 @@ export class ObservationStore {
20
20
  * Get observations by session ID
21
21
  */
22
22
  getBySession(sessionId, limit = 50) {
23
- const rows = this.db.prepare(`
24
- SELECT * FROM observations WHERE sessionId = ?
25
- ORDER BY timestamp DESC LIMIT ?
23
+ const rows = this.db.prepare(`
24
+ SELECT * FROM observations WHERE sessionId = ?
25
+ ORDER BY timestamp DESC LIMIT ?
26
26
  `).all(sessionId, limit);
27
27
  return rows.map(this.rowToObservation);
28
28
  }
@@ -31,15 +31,15 @@ export class ObservationStore {
31
31
  */
32
32
  getRecent(limit = 10, type) {
33
33
  if (type) {
34
- const rows = this.db.prepare(`
35
- SELECT * FROM observations WHERE type = ?
36
- ORDER BY timestamp DESC LIMIT ?
34
+ const rows = this.db.prepare(`
35
+ SELECT * FROM observations WHERE type = ?
36
+ ORDER BY timestamp DESC LIMIT ?
37
37
  `).all(type, limit);
38
38
  return rows.map(this.rowToObservation);
39
39
  }
40
- const rows = this.db.prepare(`
41
- SELECT * FROM observations
42
- ORDER BY timestamp DESC LIMIT ?
40
+ const rows = this.db.prepare(`
41
+ SELECT * FROM observations
42
+ ORDER BY timestamp DESC LIMIT ?
43
43
  `).all(limit);
44
44
  return rows.map(this.rowToObservation);
45
45
  }
@@ -47,9 +47,9 @@ export class ObservationStore {
47
47
  * Get observations by type
48
48
  */
49
49
  getByType(type, limit = 20) {
50
- const rows = this.db.prepare(`
51
- SELECT * FROM observations WHERE type = ?
52
- ORDER BY timestamp DESC LIMIT ?
50
+ const rows = this.db.prepare(`
51
+ SELECT * FROM observations WHERE type = ?
52
+ ORDER BY timestamp DESC LIMIT ?
53
53
  `).all(type, limit);
54
54
  return rows.map(this.rowToObservation);
55
55
  }
@@ -58,23 +58,23 @@ export class ObservationStore {
58
58
  */
59
59
  search(query, limit = 20) {
60
60
  try {
61
- const rows = this.db.prepare(`
62
- SELECT o.*, bm25(observations_fts) as rank
63
- FROM observations_fts fts
64
- JOIN observations o ON o.id = fts.rowid
65
- WHERE observations_fts MATCH ?
66
- ORDER BY rank
67
- LIMIT ?
61
+ const rows = this.db.prepare(`
62
+ SELECT o.*, bm25(observations_fts) as rank
63
+ FROM observations_fts fts
64
+ JOIN observations o ON o.id = fts.rowid
65
+ WHERE observations_fts MATCH ?
66
+ ORDER BY rank
67
+ LIMIT ?
68
68
  `).all(query, limit);
69
69
  return rows.map(this.rowToObservation);
70
70
  }
71
71
  catch {
72
72
  // FTS5 not available, fallback to LIKE
73
73
  const pattern = `%${query}%`;
74
- const rows = this.db.prepare(`
75
- SELECT * FROM observations
76
- WHERE title LIKE ? OR narrative LIKE ? OR facts LIKE ? OR concepts LIKE ?
77
- ORDER BY timestamp DESC LIMIT ?
74
+ const rows = this.db.prepare(`
75
+ SELECT * FROM observations
76
+ WHERE title LIKE ? OR narrative LIKE ? OR facts LIKE ? OR concepts LIKE ?
77
+ ORDER BY timestamp DESC LIMIT ?
78
78
  `).all(pattern, pattern, pattern, pattern, limit);
79
79
  return rows.map(this.rowToObservation);
80
80
  }
@@ -83,8 +83,8 @@ export class ObservationStore {
83
83
  * Get observation statistics
84
84
  */
85
85
  getStats() {
86
- const types = this.db.prepare(`
87
- SELECT type, COUNT(*) as count FROM observations GROUP BY type
86
+ const types = this.db.prepare(`
87
+ SELECT type, COUNT(*) as count FROM observations GROUP BY type
88
88
  `).all();
89
89
  const byType = {};
90
90
  let total = 0;