@su-record/vibe 2.7.10 → 2.7.12

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 (282) hide show
  1. package/.env.example +37 -37
  2. package/CLAUDE.md +126 -222
  3. package/LICENSE +21 -21
  4. package/README.md +580 -580
  5. package/agents/architect-low.md +41 -41
  6. package/agents/architect-medium.md +59 -59
  7. package/agents/architect.md +80 -80
  8. package/agents/build-error-resolver.md +115 -115
  9. package/agents/compounder.md +261 -261
  10. package/agents/diagrammer.md +178 -178
  11. package/agents/docs/api-documenter.md +99 -99
  12. package/agents/docs/changelog-writer.md +93 -93
  13. package/agents/e2e-tester.md +266 -266
  14. package/agents/explorer-low.md +42 -42
  15. package/agents/explorer-medium.md +59 -59
  16. package/agents/explorer.md +48 -48
  17. package/agents/implementer-low.md +43 -43
  18. package/agents/implementer-medium.md +52 -52
  19. package/agents/implementer.md +54 -54
  20. package/agents/junior-mentor.md +141 -141
  21. package/agents/planning/requirements-analyst.md +84 -84
  22. package/agents/planning/ux-advisor.md +83 -83
  23. package/agents/qa/acceptance-tester.md +86 -86
  24. package/agents/qa/edge-case-finder.md +93 -93
  25. package/agents/refactor-cleaner.md +143 -143
  26. package/agents/research/best-practices-agent.md +199 -199
  27. package/agents/research/codebase-patterns-agent.md +157 -157
  28. package/agents/research/framework-docs-agent.md +188 -188
  29. package/agents/research/security-advisory-agent.md +213 -213
  30. package/agents/review/architecture-reviewer.md +107 -107
  31. package/agents/review/complexity-reviewer.md +116 -116
  32. package/agents/review/data-integrity-reviewer.md +88 -88
  33. package/agents/review/git-history-reviewer.md +103 -103
  34. package/agents/review/performance-reviewer.md +86 -86
  35. package/agents/review/python-reviewer.md +150 -150
  36. package/agents/review/rails-reviewer.md +139 -139
  37. package/agents/review/react-reviewer.md +144 -144
  38. package/agents/review/security-reviewer.md +80 -80
  39. package/agents/review/simplicity-reviewer.md +140 -140
  40. package/agents/review/test-coverage-reviewer.md +116 -116
  41. package/agents/review/typescript-reviewer.md +127 -127
  42. package/agents/searcher.md +54 -54
  43. package/agents/simplifier.md +120 -120
  44. package/agents/tester.md +49 -49
  45. package/agents/ui/ui-a11y-auditor.md +93 -93
  46. package/agents/ui/ui-antipattern-detector.md +94 -94
  47. package/agents/ui/ui-dataviz-advisor.md +69 -69
  48. package/agents/ui/ui-design-system-gen.md +57 -57
  49. package/agents/ui/ui-industry-analyzer.md +49 -49
  50. package/agents/ui/ui-layout-architect.md +65 -65
  51. package/agents/ui/ui-stack-implementer.md +68 -68
  52. package/agents/ui/ux-compliance-reviewer.md +81 -81
  53. package/agents/ui-previewer.md +260 -260
  54. package/commands/vibe.run.md +83 -0
  55. package/commands/vibe.spec.review.md +558 -558
  56. package/commands/vibe.utils.md +413 -413
  57. package/commands/vibe.voice.md +79 -79
  58. package/dist/cli/auth.d.ts +1 -1
  59. package/dist/cli/auth.d.ts.map +1 -1
  60. package/dist/cli/auth.js +15 -7
  61. package/dist/cli/auth.js.map +1 -1
  62. package/dist/cli/collaborator.js +52 -52
  63. package/dist/cli/commands/evolution.js +12 -12
  64. package/dist/cli/commands/index.d.ts +1 -0
  65. package/dist/cli/commands/index.d.ts.map +1 -1
  66. package/dist/cli/commands/index.js +1 -0
  67. package/dist/cli/commands/index.js.map +1 -1
  68. package/dist/cli/commands/info.d.ts.map +1 -1
  69. package/dist/cli/commands/info.js +62 -56
  70. package/dist/cli/commands/info.js.map +1 -1
  71. package/dist/cli/commands/init.d.ts.map +1 -1
  72. package/dist/cli/commands/init.js +9 -6
  73. package/dist/cli/commands/init.js.map +1 -1
  74. package/dist/cli/commands/remove.js +14 -14
  75. package/dist/cli/commands/sentinel.js +27 -27
  76. package/dist/cli/commands/skills.d.ts +13 -0
  77. package/dist/cli/commands/skills.d.ts.map +1 -0
  78. package/dist/cli/commands/skills.js +83 -0
  79. package/dist/cli/commands/skills.js.map +1 -0
  80. package/dist/cli/commands/slack.js +10 -10
  81. package/dist/cli/commands/telegram.js +12 -12
  82. package/dist/cli/commands/update.d.ts.map +1 -1
  83. package/dist/cli/commands/update.js +3 -0
  84. package/dist/cli/commands/update.js.map +1 -1
  85. package/dist/cli/detect.js +32 -32
  86. package/dist/cli/index.d.ts.map +1 -1
  87. package/dist/cli/index.js +64 -47
  88. package/dist/cli/index.js.map +1 -1
  89. package/dist/cli/llm/claude-commands.js +16 -16
  90. package/dist/cli/llm/config.js +18 -18
  91. package/dist/cli/llm/gemini-commands.js +47 -47
  92. package/dist/cli/llm/gpt-commands.js +19 -19
  93. package/dist/cli/llm/help.js +21 -21
  94. package/dist/cli/postinstall/constants.d.ts +8 -0
  95. package/dist/cli/postinstall/constants.d.ts.map +1 -1
  96. package/dist/cli/postinstall/constants.js +33 -0
  97. package/dist/cli/postinstall/constants.js.map +1 -1
  98. package/dist/cli/postinstall/cursor-agents.js +32 -32
  99. package/dist/cli/postinstall/cursor-rules.js +83 -83
  100. package/dist/cli/postinstall/cursor-skills.js +743 -743
  101. package/dist/cli/postinstall/index.d.ts +1 -1
  102. package/dist/cli/postinstall/index.d.ts.map +1 -1
  103. package/dist/cli/postinstall/index.js +1 -1
  104. package/dist/cli/postinstall/index.js.map +1 -1
  105. package/dist/cli/setup/ProjectSetup.d.ts.map +1 -1
  106. package/dist/cli/setup/ProjectSetup.js +5 -0
  107. package/dist/cli/setup/ProjectSetup.js.map +1 -1
  108. package/dist/cli/setup/Provisioner.js +42 -42
  109. package/dist/cli/types.d.ts +1 -0
  110. package/dist/cli/types.d.ts.map +1 -1
  111. package/dist/infra/lib/DeepInit.js +24 -24
  112. package/dist/infra/lib/IterationTracker.js +11 -11
  113. package/dist/infra/lib/PythonParser.js +108 -108
  114. package/dist/infra/lib/ReviewRace.js +96 -96
  115. package/dist/infra/lib/SkillFrontmatter.js +28 -28
  116. package/dist/infra/lib/SkillQualityGate.js +9 -9
  117. package/dist/infra/lib/SkillRepository.js +159 -159
  118. package/dist/infra/lib/UltraQA.js +99 -99
  119. package/dist/infra/lib/autonomy/AuditStore.js +41 -41
  120. package/dist/infra/lib/autonomy/ConfirmationStore.js +30 -30
  121. package/dist/infra/lib/autonomy/EventOutbox.js +38 -38
  122. package/dist/infra/lib/autonomy/PolicyEngine.js +18 -18
  123. package/dist/infra/lib/autonomy/SecuritySentinel.js +1 -1
  124. package/dist/infra/lib/autonomy/SuggestionStore.js +33 -33
  125. package/dist/infra/lib/embedding/VectorStore.js +22 -22
  126. package/dist/infra/lib/evolution/AgentAnalyzer.js +10 -10
  127. package/dist/infra/lib/evolution/DescriptionOptimizer.d.ts +79 -0
  128. package/dist/infra/lib/evolution/DescriptionOptimizer.d.ts.map +1 -0
  129. package/dist/infra/lib/evolution/DescriptionOptimizer.js +259 -0
  130. package/dist/infra/lib/evolution/DescriptionOptimizer.js.map +1 -0
  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/RollbackManager.js +5 -5
  134. package/dist/infra/lib/evolution/SkillBenchmark.d.ts +81 -0
  135. package/dist/infra/lib/evolution/SkillBenchmark.d.ts.map +1 -0
  136. package/dist/infra/lib/evolution/SkillBenchmark.js +233 -0
  137. package/dist/infra/lib/evolution/SkillBenchmark.js.map +1 -0
  138. package/dist/infra/lib/evolution/SkillClassifier.d.ts +35 -0
  139. package/dist/infra/lib/evolution/SkillClassifier.d.ts.map +1 -0
  140. package/dist/infra/lib/evolution/SkillClassifier.js +167 -0
  141. package/dist/infra/lib/evolution/SkillClassifier.js.map +1 -0
  142. package/dist/infra/lib/evolution/SkillEvalRunner.d.ts +102 -0
  143. package/dist/infra/lib/evolution/SkillEvalRunner.d.ts.map +1 -0
  144. package/dist/infra/lib/evolution/SkillEvalRunner.js +256 -0
  145. package/dist/infra/lib/evolution/SkillEvalRunner.js.map +1 -0
  146. package/dist/infra/lib/evolution/SkillGapDetector.js +10 -10
  147. package/dist/infra/lib/evolution/UsageTracker.js +28 -28
  148. package/dist/infra/lib/evolution/__tests__/eval.test.d.ts +2 -0
  149. package/dist/infra/lib/evolution/__tests__/eval.test.d.ts.map +1 -0
  150. package/dist/infra/lib/evolution/__tests__/eval.test.js +539 -0
  151. package/dist/infra/lib/evolution/__tests__/eval.test.js.map +1 -0
  152. package/dist/infra/lib/evolution/index.d.ts +8 -0
  153. package/dist/infra/lib/evolution/index.d.ts.map +1 -1
  154. package/dist/infra/lib/evolution/index.js +5 -0
  155. package/dist/infra/lib/evolution/index.js.map +1 -1
  156. package/dist/infra/lib/gemini/constants.js +14 -14
  157. package/dist/infra/lib/gemini/orchestration.js +5 -5
  158. package/dist/infra/lib/gpt/oauth.js +44 -44
  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 +137 -137
  191. package/hooks/scripts/code-check.js +70 -70
  192. package/hooks/scripts/context-save.js +212 -212
  193. package/hooks/scripts/hud-status.js +291 -291
  194. package/hooks/scripts/keyword-detector.js +214 -214
  195. package/hooks/scripts/llm-orchestrate.js +646 -646
  196. package/hooks/scripts/post-edit.js +32 -32
  197. package/hooks/scripts/pre-tool-guard.js +125 -125
  198. package/hooks/scripts/prompt-dispatcher.js +185 -185
  199. package/hooks/scripts/sentinel-guard.js +104 -104
  200. package/hooks/scripts/session-start.js +106 -106
  201. package/hooks/scripts/stop-notify.js +209 -209
  202. package/hooks/scripts/utils.js +100 -100
  203. package/languages/csharp-unity.md +515 -515
  204. package/languages/gdscript-godot.md +470 -470
  205. package/languages/ruby-rails.md +489 -489
  206. package/languages/typescript-angular.md +433 -433
  207. package/languages/typescript-astro.md +416 -416
  208. package/languages/typescript-electron.md +406 -406
  209. package/languages/typescript-nestjs.md +524 -524
  210. package/languages/typescript-svelte.md +407 -407
  211. package/languages/typescript-tauri.md +365 -365
  212. package/package.json +121 -121
  213. package/skills/agents-md/SKILL.md +120 -120
  214. package/skills/arch-guard/SKILL.md +180 -0
  215. package/skills/brand-assets/SKILL.md +146 -146
  216. package/skills/capability-loop/SKILL.md +167 -0
  217. package/skills/characterization-test/SKILL.md +206 -206
  218. package/skills/commerce-patterns/SKILL.md +59 -59
  219. package/skills/commit-push-pr/SKILL.md +75 -75
  220. package/skills/context7-usage/SKILL.md +105 -105
  221. package/skills/core-capabilities/SKILL.md +48 -48
  222. package/skills/e2e-commerce/SKILL.md +57 -57
  223. package/skills/exec-plan/SKILL.md +147 -0
  224. package/skills/frontend-design/SKILL.md +73 -73
  225. package/skills/git-worktree/SKILL.md +72 -72
  226. package/skills/handoff/SKILL.md +109 -109
  227. package/skills/parallel-research/SKILL.md +87 -87
  228. package/skills/priority-todos/SKILL.md +63 -63
  229. package/skills/seo-checklist/SKILL.md +57 -57
  230. package/skills/techdebt/SKILL.md +122 -122
  231. package/skills/tool-fallback/SKILL.md +103 -103
  232. package/skills/typescript-advanced-types/SKILL.md +65 -65
  233. package/skills/ui-ux-pro-max/SKILL.md +206 -206
  234. package/skills/vercel-react-best-practices/SKILL.md +59 -59
  235. package/skills/video-production/SKILL.md +51 -51
  236. package/vibe/config.json +29 -29
  237. package/vibe/constitution.md +227 -227
  238. package/vibe/rules/principles/communication-guide.md +98 -98
  239. package/vibe/rules/principles/development-philosophy.md +52 -52
  240. package/vibe/rules/principles/quick-start.md +102 -102
  241. package/vibe/rules/quality/bdd-contract-testing.md +393 -393
  242. package/vibe/rules/quality/checklist.md +276 -276
  243. package/vibe/rules/quality/performance.md +236 -236
  244. package/vibe/rules/quality/testing-strategy.md +440 -440
  245. package/vibe/rules/standards/anti-patterns.md +541 -541
  246. package/vibe/rules/standards/code-structure.md +291 -291
  247. package/vibe/rules/standards/complexity-metrics.md +313 -313
  248. package/vibe/rules/standards/git-workflow.md +237 -237
  249. package/vibe/rules/standards/naming-conventions.md +198 -198
  250. package/vibe/rules/standards/security.md +305 -305
  251. package/vibe/rules/writing/document-style.md +74 -74
  252. package/vibe/setup.sh +31 -31
  253. package/vibe/templates/constitution-template.md +252 -252
  254. package/vibe/templates/contract-backend-template.md +526 -526
  255. package/vibe/templates/contract-frontend-template.md +599 -599
  256. package/vibe/templates/feature-template.md +96 -96
  257. package/vibe/templates/spec-template.md +221 -221
  258. package/vibe/ui-ux-data/charts.csv +26 -26
  259. package/vibe/ui-ux-data/colors.csv +97 -97
  260. package/vibe/ui-ux-data/icons.csv +101 -101
  261. package/vibe/ui-ux-data/landing.csv +31 -31
  262. package/vibe/ui-ux-data/products.csv +96 -96
  263. package/vibe/ui-ux-data/react-performance.csv +45 -45
  264. package/vibe/ui-ux-data/stacks/astro.csv +54 -54
  265. package/vibe/ui-ux-data/stacks/flutter.csv +53 -53
  266. package/vibe/ui-ux-data/stacks/html-tailwind.csv +56 -56
  267. package/vibe/ui-ux-data/stacks/jetpack-compose.csv +53 -53
  268. package/vibe/ui-ux-data/stacks/nextjs.csv +53 -53
  269. package/vibe/ui-ux-data/stacks/nuxt-ui.csv +51 -51
  270. package/vibe/ui-ux-data/stacks/nuxtjs.csv +59 -59
  271. package/vibe/ui-ux-data/stacks/react-native.csv +52 -52
  272. package/vibe/ui-ux-data/stacks/react.csv +54 -54
  273. package/vibe/ui-ux-data/stacks/shadcn.csv +61 -61
  274. package/vibe/ui-ux-data/stacks/svelte.csv +54 -54
  275. package/vibe/ui-ux-data/stacks/swiftui.csv +51 -51
  276. package/vibe/ui-ux-data/stacks/vue.csv +50 -50
  277. package/vibe/ui-ux-data/styles.csv +68 -68
  278. package/vibe/ui-ux-data/typography.csv +57 -57
  279. package/vibe/ui-ux-data/ui-reasoning.csv +101 -101
  280. package/vibe/ui-ux-data/ux-guidelines.csv +99 -99
  281. package/vibe/ui-ux-data/version.json +31 -31
  282. package/vibe/ui-ux-data/web-interface.csv +31 -31
@@ -51,9 +51,9 @@ export class ReflectionStore {
51
51
  ? Math.max(0, Math.min(1, input.score))
52
52
  : 0.5;
53
53
  try {
54
- this.db.prepare(`
55
- INSERT INTO reflections (id, sessionId, type, trigger, insights, decisions, patterns, filesContext, score, createdAt)
56
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
54
+ this.db.prepare(`
55
+ INSERT INTO reflections (id, sessionId, type, trigger, insights, decisions, patterns, filesContext, score, createdAt)
56
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
57
57
  `).run(id, input.sessionId || null, input.type, input.trigger, JSON.stringify(insights), JSON.stringify(decisions), JSON.stringify(patterns), JSON.stringify(filesContext), score, createdAt);
58
58
  return id;
59
59
  }
@@ -69,9 +69,9 @@ export class ReflectionStore {
69
69
  // sleep not available, just continue
70
70
  }
71
71
  try {
72
- this.db.prepare(`
73
- INSERT INTO reflections (id, sessionId, type, trigger, insights, decisions, patterns, filesContext, score, createdAt)
74
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
72
+ this.db.prepare(`
73
+ INSERT INTO reflections (id, sessionId, type, trigger, insights, decisions, patterns, filesContext, score, createdAt)
74
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
75
75
  `).run(id, input.sessionId || null, input.type, input.trigger, JSON.stringify(insights), JSON.stringify(decisions), JSON.stringify(patterns), JSON.stringify(filesContext), score, createdAt);
76
76
  return id;
77
77
  }
@@ -89,13 +89,13 @@ export class ReflectionStore {
89
89
  search(query, limit = 20) {
90
90
  if (this.fts5Available) {
91
91
  try {
92
- const rows = this.db.prepare(`
93
- SELECT r.*, bm25(reflections_fts) as rank
94
- FROM reflections_fts fts
95
- JOIN reflections r ON r.rowid = fts.rowid
96
- WHERE reflections_fts MATCH ?
97
- ORDER BY r.score DESC, rank
98
- LIMIT ?
92
+ const rows = this.db.prepare(`
93
+ SELECT r.*, bm25(reflections_fts) as rank
94
+ FROM reflections_fts fts
95
+ JOIN reflections r ON r.rowid = fts.rowid
96
+ WHERE reflections_fts MATCH ?
97
+ ORDER BY r.score DESC, rank
98
+ LIMIT ?
99
99
  `).all(query, limit);
100
100
  return rows.map(this.rowToReflection);
101
101
  }
@@ -104,11 +104,11 @@ export class ReflectionStore {
104
104
  }
105
105
  }
106
106
  const pattern = `%${query}%`;
107
- const rows = this.db.prepare(`
108
- SELECT * FROM reflections
109
- WHERE insights LIKE ? OR decisions LIKE ? OR patterns LIKE ?
110
- ORDER BY score DESC, createdAt DESC
111
- LIMIT ?
107
+ const rows = this.db.prepare(`
108
+ SELECT * FROM reflections
109
+ WHERE insights LIKE ? OR decisions LIKE ? OR patterns LIKE ?
110
+ ORDER BY score DESC, createdAt DESC
111
+ LIMIT ?
112
112
  `).all(pattern, pattern, pattern, limit);
113
113
  return rows.map(this.rowToReflection);
114
114
  }
@@ -116,9 +116,9 @@ export class ReflectionStore {
116
116
  * Get reflections by session ID
117
117
  */
118
118
  getBySession(sessionId) {
119
- const rows = this.db.prepare(`
120
- SELECT * FROM reflections WHERE sessionId = ?
121
- ORDER BY createdAt DESC
119
+ const rows = this.db.prepare(`
120
+ SELECT * FROM reflections WHERE sessionId = ?
121
+ ORDER BY createdAt DESC
122
122
  `).all(sessionId);
123
123
  return rows.map(this.rowToReflection);
124
124
  }
@@ -126,10 +126,10 @@ export class ReflectionStore {
126
126
  * Get most recent reflections
127
127
  */
128
128
  getRecent(limit = 10) {
129
- const rows = this.db.prepare(`
130
- SELECT * FROM reflections
131
- ORDER BY createdAt DESC
132
- LIMIT ?
129
+ const rows = this.db.prepare(`
130
+ SELECT * FROM reflections
131
+ ORDER BY createdAt DESC
132
+ LIMIT ?
133
133
  `).all(limit);
134
134
  return rows.map(this.rowToReflection);
135
135
  }
@@ -137,11 +137,11 @@ export class ReflectionStore {
137
137
  * Get high-value reflections (score >= minScore)
138
138
  */
139
139
  getHighValue(minScore = 0.7, limit = 10) {
140
- const rows = this.db.prepare(`
141
- SELECT * FROM reflections
142
- WHERE score >= ?
143
- ORDER BY score DESC, createdAt DESC
144
- LIMIT ?
140
+ const rows = this.db.prepare(`
141
+ SELECT * FROM reflections
142
+ WHERE score >= ?
143
+ ORDER BY score DESC, createdAt DESC
144
+ LIMIT ?
145
145
  `).all(minScore, limit);
146
146
  return rows.map(this.rowToReflection);
147
147
  }
@@ -304,13 +304,13 @@ export class SessionRAGRetriever {
304
304
  if (!this.fts5Available)
305
305
  return scores;
306
306
  try {
307
- const rows = this.db.prepare(`
308
- SELECT t.id, bm25(${ftsTable}) as rank
309
- FROM ${ftsTable} fts
310
- JOIN ${table} t ON t.id = fts.rowid
311
- WHERE ${ftsTable} MATCH ?
312
- ORDER BY rank
313
- LIMIT ?
307
+ const rows = this.db.prepare(`
308
+ SELECT t.id, bm25(${ftsTable}) as rank
309
+ FROM ${ftsTable} fts
310
+ JOIN ${table} t ON t.id = fts.rowid
311
+ WHERE ${ftsTable} MATCH ?
312
+ ORDER BY rank
313
+ LIMIT ?
314
314
  `).all(MemoryStorage.sanitizeFTS5Query(query), limit);
315
315
  for (const row of rows) {
316
316
  scores.set(row.id, row.rank);