@su-record/vibe 2.6.22 → 2.6.25

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 (50) hide show
  1. package/commands/vibe.review.md +13 -2
  2. package/commands/vibe.run.md +13 -3
  3. package/commands/vibe.spec.review.md +20 -19
  4. package/dist/lib/MemoryManager.d.ts +11 -0
  5. package/dist/lib/MemoryManager.d.ts.map +1 -1
  6. package/dist/lib/MemoryManager.js +21 -0
  7. package/dist/lib/MemoryManager.js.map +1 -1
  8. package/dist/lib/memory/MemorySearch.d.ts +3 -1
  9. package/dist/lib/memory/MemorySearch.d.ts.map +1 -1
  10. package/dist/lib/memory/MemorySearch.js +60 -0
  11. package/dist/lib/memory/MemorySearch.js.map +1 -1
  12. package/dist/lib/memory/MemoryStorage.d.ts +12 -1
  13. package/dist/lib/memory/MemoryStorage.d.ts.map +1 -1
  14. package/dist/lib/memory/MemoryStorage.js +127 -1
  15. package/dist/lib/memory/MemoryStorage.js.map +1 -1
  16. package/dist/lib/memory/ObservationStore.d.ts +61 -0
  17. package/dist/lib/memory/ObservationStore.d.ts.map +1 -0
  18. package/dist/lib/memory/ObservationStore.js +120 -0
  19. package/dist/lib/memory/ObservationStore.js.map +1 -0
  20. package/dist/lib/memory/SessionSummarizer.d.ts +50 -0
  21. package/dist/lib/memory/SessionSummarizer.d.ts.map +1 -0
  22. package/dist/lib/memory/SessionSummarizer.js +157 -0
  23. package/dist/lib/memory/SessionSummarizer.js.map +1 -0
  24. package/dist/lib/memory/index.d.ts +1 -0
  25. package/dist/lib/memory/index.d.ts.map +1 -1
  26. package/dist/lib/memory/index.js +1 -0
  27. package/dist/lib/memory/index.js.map +1 -1
  28. package/dist/tools/memory/addObservation.d.ts +16 -0
  29. package/dist/tools/memory/addObservation.d.ts.map +1 -0
  30. package/dist/tools/memory/addObservation.js +71 -0
  31. package/dist/tools/memory/addObservation.js.map +1 -0
  32. package/dist/tools/memory/index.d.ts +2 -0
  33. package/dist/tools/memory/index.d.ts.map +1 -1
  34. package/dist/tools/memory/index.js +2 -0
  35. package/dist/tools/memory/index.js.map +1 -1
  36. package/dist/tools/memory/searchMemoriesAdvanced.d.ts.map +1 -1
  37. package/dist/tools/memory/searchMemoriesAdvanced.js +7 -5
  38. package/dist/tools/memory/searchMemoriesAdvanced.js.map +1 -1
  39. package/dist/tools/memory/searchObservations.d.ts +12 -0
  40. package/dist/tools/memory/searchObservations.d.ts.map +1 -0
  41. package/dist/tools/memory/searchObservations.js +67 -0
  42. package/dist/tools/memory/searchObservations.js.map +1 -0
  43. package/dist/tools/memory/startSession.d.ts.map +1 -1
  44. package/dist/tools/memory/startSession.js +16 -2
  45. package/dist/tools/memory/startSession.js.map +1 -1
  46. package/dist/types/tool.d.ts +1 -1
  47. package/dist/types/tool.d.ts.map +1 -1
  48. package/hooks/scripts/code-check.js +49 -1
  49. package/hooks/scripts/context-save.js +21 -1
  50. package/package.json +1 -1
@@ -96,10 +96,21 @@ security-review:
96
96
  | Quick iteration | ❌ Standard review |
97
97
  | API cost concerns | ❌ Standard review |
98
98
 
99
- ### Tool Invocation (Race Mode)
99
+ ### Tool Invocation (Race Mode - GPT + Gemini in parallel via Bash)
100
+
101
+ **🚨 Use stdin pipe to avoid CLI argument length limits on Windows.**
102
+
103
+ 1. Save code to review into `[SCRATCHPAD]/review-code.txt` (using Write tool)
104
+ 2. Run GPT + Gemini in PARALLEL (two Bash tool calls at once):
105
+
106
+ ```bash
107
+ # GPT review (Bash tool call 1)
108
+ node -e "const fs=require('fs');const p=JSON.stringify({prompt:'Review this code for [REVIEW_TYPE]. Return JSON: {issues: [{id, title, description, severity, suggestion}]}. Code: '+fs.readFileSync('[SCRATCHPAD]/review-code.txt','utf8')});process.stdout.write(p)" | node "$(node -p "process.env.APPDATA || require('os').homedir() + '/.config'")/vibe/hooks/scripts/llm-orchestrate.js" gpt orchestrate-json
109
+ ```
100
110
 
101
111
  ```bash
102
- node -e "import('@su-record/vibe/lib/ReviewRace').then(r => r.raceReview({reviewType: 'security', code: 'CODE_HERE'}).then(res => console.log(r.formatRaceResult(res))))"
112
+ # Gemini review (Bash tool call 2 - run in parallel)
113
+ node -e "const fs=require('fs');const p=JSON.stringify({prompt:'Review this code for [REVIEW_TYPE]. Return JSON: {issues: [{id, title, description, severity, suggestion}]}. Code: '+fs.readFileSync('[SCRATCHPAD]/review-code.txt','utf8')});process.stdout.write(p)" | node "$(node -p "process.env.APPDATA || require('os').homedir() + '/.config'")/vibe/hooks/scripts/llm-orchestrate.js" gemini orchestrate-json
103
114
  ```
104
115
 
105
116
  ## Priority System
@@ -905,11 +905,21 @@ After all scenarios are implemented, **GPT and Gemini review in parallel with cr
905
905
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
906
906
  ```
907
907
 
908
- **Race Review Invocation:**
908
+ **Race Review Invocation (GPT + Gemini in parallel via Bash):**
909
+
910
+ **🚨 Use stdin pipe to avoid CLI argument length limits on Windows.**
911
+
912
+ 1. Save code to review into `[SCRATCHPAD]/review-code.txt` (using Write tool)
913
+ 2. Run GPT + Gemini in PARALLEL (two Bash tool calls at once):
914
+
915
+ ```bash
916
+ # GPT review (Bash tool call 1)
917
+ node -e "const fs=require('fs');const p=JSON.stringify({prompt:'Review this code for security, performance, and best practices. Return JSON: {issues: [{id, title, description, severity, suggestion}]}. Code: '+fs.readFileSync('[SCRATCHPAD]/review-code.txt','utf8')});process.stdout.write(p)" | node "$(node -p "process.env.APPDATA || require('os').homedir() + '/.config'")/vibe/hooks/scripts/llm-orchestrate.js" gpt orchestrate-json
918
+ ```
909
919
 
910
920
  ```bash
911
- # Via vibe tools
912
- node -e "import('@su-record/vibe/tools').then(t => t.raceReview({reviewType: 'security', code: '[code]'}).then(r => console.log(t.formatRaceResult(r))))"
921
+ # Gemini review (Bash tool call 2 - run in parallel)
922
+ node -e "const fs=require('fs');const p=JSON.stringify({prompt:'Review this code for security, performance, and best practices. Return JSON: {issues: [{id, title, description, severity, suggestion}]}. Code: '+fs.readFileSync('[SCRATCHPAD]/review-code.txt','utf8')});process.stdout.write(p)" | node "$(node -p "process.env.APPDATA || require('os').homedir() + '/.config'")/vibe/hooks/scripts/llm-orchestrate.js" gemini orchestrate-json
913
923
  ```
914
924
 
915
925
  **Confidence-based Priority:**
@@ -169,7 +169,7 @@ Score: 96/100 ✅ PASSED
169
169
 
170
170
  **🚨 ABSOLUTE RULES FOR RACE REVIEW:**
171
171
 
172
- 1. **YOU MUST** use the Bash tool to call `raceReview` via `node -e`
172
+ 1. **YOU MUST** use the Bash tool to call `llm-orchestrate.js` directly
173
173
  2. **DO NOT** skip GPT/Gemini calls
174
174
  3. **DO NOT** simulate or fake review results
175
175
  4. **YOU MUST** run all 3 rounds sequentially (each round uses updated SPEC)
@@ -178,34 +178,35 @@ Score: 96/100 ✅ PASSED
178
178
 
179
179
  ### 3.1 Review Loop (3 Rounds)
180
180
 
181
- **For EACH round (1, 2, 3), execute this Bash command:**
181
+ **For EACH round (1, 2, 3), run GPT + Gemini in PARALLEL via Bash tool.**
182
182
 
183
- Replace `[SPEC_CONTENT]` with the actual SPEC file content (escaped for JSON), `[FEATURE_NAME]` with the feature name, `[STACK]` with tech stack, and `[N]` with round number.
183
+ **🚨 IMPORTANT: SPEC content is too large for CLI arguments. Use stdin pipe method.**
184
184
 
185
- ```bash
186
- node -e "import('@su-record/vibe/tools').then(async t => { const result = await t.raceReview({reviewType: 'general', code: \`[SPEC_CONTENT]\`, context: 'SPEC review for [FEATURE_NAME]. Stack: [STACK]. Round [N]/3.'}); console.log(t.formatRaceResult(result)); }).catch(e => console.error('Race review failed:', e.message))"
187
- ```
188
-
189
- **🚨 MANDATORY: Use the Bash tool to run the above command for EACH round.**
185
+ **Procedure for each round:**
190
186
 
191
- - Round 1: Run Read results Apply fixes to SPEC → Update SPEC file
192
- - Round 2: Run with updated SPEC Read results → Apply fixes → Update SPEC file
193
- - Round 3: Run with final SPEC → Confirm no issues remain
187
+ **Step A: Save SPEC content to scratchpad temp file (using Write tool):**
188
+ - Write the SPEC content to `[SCRATCHPAD]/spec-content.txt`
194
189
 
195
- **If the `node -e` command fails** (e.g., module not found), use the fallback method:
196
-
197
- **Fallback: Direct llm-orchestrate.js calls (run BOTH in parallel via Bash):**
190
+ **Step B: Run GPT + Gemini in PARALLEL (two separate Bash tool calls at once):**
198
191
 
199
192
  ```bash
200
- VIBE_SCRIPTS="$(node -p "process.env.APPDATA || require('os').homedir() + '/.config'")/vibe/hooks/scripts"
201
-
202
193
  # GPT review (Bash tool call 1)
203
- node "$VIBE_SCRIPTS/llm-orchestrate.js" gpt orchestrate-json "Review this SPEC for completeness, specificity, testability, security, and performance. Find issues. Return JSON: {issues: [{id, title, description, severity, suggestion}]}. SPEC content: [SPEC_CONTENT]"
194
+ node -e "const fs=require('fs');const p=JSON.stringify({prompt:'Review this SPEC for completeness, specificity, testability, security, and performance. Round [N]/3. Find issues and improvements. Return JSON: {issues: [{id, title, description, severity, suggestion}]}. SPEC content: '+fs.readFileSync('[SCRATCHPAD]/spec-content.txt','utf8')});process.stdout.write(p)" | node "$(node -p "process.env.APPDATA || require('os').homedir() + '/.config'")/vibe/hooks/scripts/llm-orchestrate.js" gpt orchestrate-json
195
+ ```
204
196
 
205
- # Gemini review (Bash tool call 2 - run in parallel)
206
- node "$VIBE_SCRIPTS/llm-orchestrate.js" gemini orchestrate-json "Review this SPEC for completeness, specificity, testability, security, and performance. Find issues. Return JSON: {issues: [{id, title, description, severity, suggestion}]}. SPEC content: [SPEC_CONTENT]"
197
+ ```bash
198
+ # Gemini review (Bash tool call 2 - run in parallel with GPT)
199
+ node -e "const fs=require('fs');const p=JSON.stringify({prompt:'Review this SPEC for completeness, specificity, testability, security, and performance. Round [N]/3. Find issues and improvements. Return JSON: {issues: [{id, title, description, severity, suggestion}]}. SPEC content: '+fs.readFileSync('[SCRATCHPAD]/spec-content.txt','utf8')});process.stdout.write(p)" | node "$(node -p "process.env.APPDATA || require('os').homedir() + '/.config'")/vibe/hooks/scripts/llm-orchestrate.js" gemini orchestrate-json
207
200
  ```
208
201
 
202
+ **🚨 MANDATORY: Replace `[SCRATCHPAD]` with the actual scratchpad directory path.**
203
+ **🚨 Replace `[N]` with the current round number (1, 2, or 3).**
204
+ **🚨 Run GPT and Gemini calls in PARALLEL (two separate Bash tool calls at once).**
205
+
206
+ - Round 1: Write SPEC → Run GPT + Gemini in parallel → Cross-validate → Apply fixes → Update SPEC file
207
+ - Round 2: Write updated SPEC → Run → Cross-validate → Apply fixes → Update SPEC file
208
+ - Round 3: Write final SPEC → Run → Cross-validate → Confirm no issues remain
209
+
209
210
  ### 3.2 Cross-Validation Rules
210
211
 
211
212
  | Agreement | Priority | Action |
@@ -1,11 +1,14 @@
1
1
  import { MemoryRelation, MemoryGraph } from '../types/tool.js';
2
2
  import { MemoryItem } from './memory/MemoryStorage.js';
3
3
  import { SearchStrategy, SearchOptions } from './memory/MemorySearch.js';
4
+ import { Observation, ObservationInput, ObservationType } from './memory/ObservationStore.js';
4
5
  export { MemoryItem } from './memory/MemoryStorage.js';
6
+ export { Observation, ObservationInput, ObservationType } from './memory/ObservationStore.js';
5
7
  export declare class MemoryManager {
6
8
  private storage;
7
9
  private graph;
8
10
  private memorySearch;
11
+ private observations;
9
12
  private static instances;
10
13
  private static instance;
11
14
  private static cleanupRegistered;
@@ -39,6 +42,14 @@ export declare class MemoryManager {
39
42
  unlinkMemories(sourceKey: string, targetKey: string, relationType?: string): boolean;
40
43
  search(query: string): MemoryItem[];
41
44
  searchAdvanced(query: string, strategy: SearchStrategy, options?: SearchOptions): MemoryItem[];
45
+ addObservation(input: ObservationInput): number;
46
+ searchObservations(query: string, limit?: number): Observation[];
47
+ getRecentObservations(limit?: number, type?: ObservationType): Observation[];
48
+ getObservationsBySession(sessionId: string, limit?: number): Observation[];
49
+ getObservationStats(): {
50
+ total: number;
51
+ byType: Record<string, number>;
52
+ };
42
53
  close(): void;
43
54
  static resetInstance(projectPath?: string): void;
44
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryManager.d.ts","sourceRoot":"","sources":["../../src/lib/MemoryManager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAiB,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEtE,OAAO,EAAgB,cAAc,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAGvF,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,YAAY,CAAe;IAGnC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAyC;IAEjE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA8B;IACrD,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAS;IAEzC,OAAO;IAuCP;;OAEG;IACH,OAAO,CAAC,aAAa;IAUrB;;OAEG;WACW,WAAW,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,aAAa;IA+CvD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAkB,EAAE,QAAQ,GAAE,MAAU,GAAG,IAAI;IAI1F,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAItC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAI3C,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE;IAIrC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE;IAI7C,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAInD,QAAQ,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;IAIjE,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,UAAU,EAAE;IAInF,SAAS,IAAI,MAAM;IAQnB,YAAY,CACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,QAAQ,GAAE,MAAY,EACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO;IAIH,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,GAAE,UAAU,GAAG,UAAU,GAAG,MAAe,GAAG,cAAc,EAAE;IAIjG,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE;IAIvF,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,WAAW;IAI5D,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAI/D,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO;IAQpF,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE;IAInC,cAAc,CACnB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,cAAc,EACxB,OAAO,GAAE,aAAkB,GAC1B,UAAU,EAAE;IAQR,KAAK,IAAI,IAAI;WAIN,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;CAmBxD"}
1
+ {"version":3,"file":"MemoryManager.d.ts","sourceRoot":"","sources":["../../src/lib/MemoryManager.ts"],"names":[],"mappings":"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"}
@@ -5,10 +5,12 @@ import { readFileSync } from 'fs';
5
5
  import { MemoryStorage } from './memory/MemoryStorage.js';
6
6
  import { KnowledgeGraph } from './memory/KnowledgeGraph.js';
7
7
  import { MemorySearch } from './memory/MemorySearch.js';
8
+ import { ObservationStore } from './memory/ObservationStore.js';
8
9
  export class MemoryManager {
9
10
  storage;
10
11
  graph;
11
12
  memorySearch;
13
+ observations;
12
14
  // Map of projectPath -> MemoryManager instance (for project-based memory)
13
15
  static instances = new Map();
14
16
  // Legacy single instance (for backward compatibility)
@@ -46,6 +48,7 @@ export class MemoryManager {
46
48
  this.storage = new MemoryStorage(resolvedPath);
47
49
  this.graph = new KnowledgeGraph(this.storage);
48
50
  this.memorySearch = new MemorySearch(this.storage, this.graph);
51
+ this.observations = new ObservationStore(this.storage);
49
52
  }
50
53
  /**
51
54
  * Check if the given path is the vibe package itself
@@ -163,6 +166,24 @@ export class MemoryManager {
163
166
  return this.memorySearch.searchAdvanced(query, strategy, options);
164
167
  }
165
168
  // ============================================================================
169
+ // Observation Operations (delegated to ObservationStore)
170
+ // ============================================================================
171
+ addObservation(input) {
172
+ return this.observations.add(input);
173
+ }
174
+ searchObservations(query, limit = 20) {
175
+ return this.observations.search(query, limit);
176
+ }
177
+ getRecentObservations(limit = 10, type) {
178
+ return this.observations.getRecent(limit, type);
179
+ }
180
+ getObservationsBySession(sessionId, limit = 50) {
181
+ return this.observations.getBySession(sessionId, limit);
182
+ }
183
+ getObservationStats() {
184
+ return this.observations.getStats();
185
+ }
186
+ // ============================================================================
166
187
  // Lifecycle Management
167
188
  // ============================================================================
168
189
  close() {
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryManager.js","sourceRoot":"","sources":["../../src/lib/MemoryManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MemoryManager.js","sourceRoot":"","sources":["../../src/lib/MemoryManager.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { MemoryItem, MemoryStorage } from './MemoryStorage.js';
2
2
  import { KnowledgeGraph } from './KnowledgeGraph.js';
3
- export type SearchStrategy = 'keyword' | 'graph_traversal' | 'temporal' | 'priority' | 'context_aware';
3
+ export type SearchStrategy = 'keyword' | 'fulltext' | 'graph_traversal' | 'temporal' | 'priority' | 'context_aware';
4
4
  export interface SearchOptions {
5
5
  limit?: number;
6
6
  category?: string;
@@ -18,6 +18,8 @@ export declare class MemorySearch {
18
18
  */
19
19
  searchAdvanced(query: string, strategy: SearchStrategy, options?: SearchOptions): MemoryItem[];
20
20
  private searchKeyword;
21
+ private searchFulltext;
22
+ private searchKeywordLike;
21
23
  private searchTemporal;
22
24
  private searchByPriority;
23
25
  private searchContextAware;
@@ -1 +1 @@
1
- {"version":3,"file":"MemorySearch.d.ts","sourceRoot":"","sources":["../../../src/lib/memory/MemorySearch.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,iBAAiB,GAAG,UAAU,GAAG,UAAU,GAAG,eAAe,CAAC;AAEvG,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,KAAK,CAAiB;gBAElB,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc;IAMzD;;OAEG;IACI,cAAc,CACnB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,cAAc,EACxB,OAAO,GAAE,aAAkB,GAC1B,UAAU,EAAE;IAyBf,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,kBAAkB;CAqB3B"}
1
+ {"version":3,"file":"MemorySearch.d.ts","sourceRoot":"","sources":["../../../src/lib/memory/MemorySearch.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,UAAU,GAAG,iBAAiB,GAAG,UAAU,GAAG,UAAU,GAAG,eAAe,CAAC;AAEpH,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,KAAK,CAAiB;gBAElB,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc;IAMzD;;OAEG;IACI,cAAc,CACnB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,cAAc,EACxB,OAAO,GAAE,aAAkB,GAC1B,UAAU,EAAE;IA4Bf,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,kBAAkB;CA2D3B"}
@@ -17,6 +17,8 @@ export class MemorySearch {
17
17
  switch (strategy) {
18
18
  case 'keyword':
19
19
  return this.searchKeyword(query, limit, category);
20
+ case 'fulltext':
21
+ return this.searchFulltext(query, limit, category);
20
22
  case 'graph_traversal':
21
23
  if (!startKey)
22
24
  return this.searchKeyword(query, limit, category);
@@ -32,6 +34,26 @@ export class MemorySearch {
32
34
  }
33
35
  }
34
36
  searchKeyword(query, limit, category) {
37
+ return this.searchKeywordLike(query, limit, category);
38
+ }
39
+ searchFulltext(query, limit, category) {
40
+ if (!this.storage.isFTS5Available()) {
41
+ return this.searchKeywordLike(query, limit, category);
42
+ }
43
+ if (category) {
44
+ const stmt = this.db.prepare(`
45
+ SELECT m.*, bm25(memories_fts) as rank
46
+ FROM memories_fts fts
47
+ JOIN memories m ON m.rowid = fts.rowid
48
+ WHERE memories_fts MATCH ? AND m.category = ?
49
+ ORDER BY rank
50
+ LIMIT ?
51
+ `);
52
+ return stmt.all(query, category, limit);
53
+ }
54
+ return this.storage.searchFTS(query, limit);
55
+ }
56
+ searchKeywordLike(query, limit, category) {
35
57
  let sql = `
36
58
  SELECT * FROM memories
37
59
  WHERE (key LIKE ? OR value LIKE ?)
@@ -64,6 +86,44 @@ export class MemorySearch {
64
86
  return this.db.prepare(sql).all(`%${query}%`, `%${query}%`, limit);
65
87
  }
66
88
  searchContextAware(query, limit, category) {
89
+ // Use FTS5 rank if available for better relevance scoring
90
+ if (this.storage.isFTS5Available()) {
91
+ try {
92
+ let sql;
93
+ const params = [];
94
+ if (category) {
95
+ sql = `
96
+ SELECT m.*,
97
+ (bm25(memories_fts) * -1 + m.priority * 0.5) as relevance_score
98
+ FROM memories_fts fts
99
+ JOIN memories m ON m.rowid = fts.rowid
100
+ WHERE memories_fts MATCH ? AND m.category = ?
101
+ ORDER BY relevance_score DESC, m.lastAccessed DESC
102
+ LIMIT ?
103
+ `;
104
+ params.push(query, category, limit);
105
+ }
106
+ else {
107
+ sql = `
108
+ SELECT m.*,
109
+ (bm25(memories_fts) * -1 + m.priority * 0.5) as relevance_score
110
+ FROM memories_fts fts
111
+ JOIN memories m ON m.rowid = fts.rowid
112
+ WHERE memories_fts MATCH ?
113
+ ORDER BY relevance_score DESC, m.lastAccessed DESC
114
+ LIMIT ?
115
+ `;
116
+ params.push(query, limit);
117
+ }
118
+ const results = this.db.prepare(sql).all(...params);
119
+ if (results.length > 0)
120
+ return results;
121
+ }
122
+ catch {
123
+ // FTS5 query failed, fall through to LIKE-based scoring
124
+ }
125
+ }
126
+ // LIKE-based fallback
67
127
  let sql = `
68
128
  SELECT *,
69
129
  (CASE WHEN key LIKE ? THEN 3 ELSE 0 END +
@@ -1 +1 @@
1
- {"version":3,"file":"MemorySearch.js","sourceRoot":"","sources":["../../../src/lib/memory/MemorySearch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MemorySearch.js","sourceRoot":"","sources":["../../../src/lib/memory/MemorySearch.ts"],"names":[],"mappings":"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"}
@@ -14,8 +14,10 @@ export declare class MemoryStorage {
14
14
  private saveStmt;
15
15
  private recallSelectStmt;
16
16
  private recallUpdateStmt;
17
+ private fts5Available;
17
18
  constructor(projectPath: string);
18
19
  private initializeDatabase;
20
+ private initializeFTS5;
19
21
  private initializePreparedStatements;
20
22
  private migrateFromJSON;
21
23
  /**
@@ -39,9 +41,18 @@ export declare class MemoryStorage {
39
41
  */
40
42
  list(category?: string): MemoryItem[];
41
43
  /**
42
- * Search memories by keyword
44
+ * Search memories by keyword (FTS5 priority, LIKE fallback)
43
45
  */
44
46
  search(query: string): MemoryItem[];
47
+ /**
48
+ * Full-text search using FTS5 with bm25 ranking
49
+ */
50
+ searchFTS(query: string, limit?: number): MemoryItem[];
51
+ /**
52
+ * Check if FTS5 is available
53
+ */
54
+ isFTS5Available(): boolean;
55
+ private searchLike;
45
56
  /**
46
57
  * Get memories by priority level
47
58
  */
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryStorage.d.ts","sourceRoot":"","sources":["../../../src/lib/memory/MemoryStorage.ts"],"names":[],"mappings":"AAGA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAItC,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,aAAa;IACxB,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAChC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAClC,OAAO,CAAC,UAAU,CAAmC;IACrD,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,gBAAgB,CAAmC;IAC3D,OAAO,CAAC,gBAAgB,CAAmC;gBAE/C,WAAW,EAAE,MAAM;IAsB/B,OAAO,CAAC,kBAAkB;IA2C1B,OAAO,CAAC,4BAA4B;IAoBpC,OAAO,CAAC,eAAe;IAoCvB;;OAEG;IACI,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAkB,EAAE,QAAQ,GAAE,MAAU,GAAG,IAAI;IAcjG;;OAEG;IACI,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAoB7C;;OAEG;IACI,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IASnC;;OAEG;IACI,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAYlD;;OAEG;IACI,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE;IAgB5C;;OAEG;IACI,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE;IAW1C;;OAEG;IACI,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE;IAUpD;;OAEG;IACI,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAM1D;;OAEG;IACI,QAAQ,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;IAkBxE;;OAEG;IACI,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,UAAU,EAAE;IAmB1F;;OAEG;IACI,WAAW,IAAI,QAAQ,CAAC,QAAQ;IAIvC;;OAEG;IACI,SAAS,IAAI,MAAM;IAI1B;;OAEG;IACI,KAAK,IAAI,IAAI;CAKrB"}
1
+ {"version":3,"file":"MemoryStorage.d.ts","sourceRoot":"","sources":["../../../src/lib/memory/MemoryStorage.ts"],"names":[],"mappings":"AAGA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAItC,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,aAAa;IACxB,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAChC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAClC,OAAO,CAAC,UAAU,CAAmC;IACrD,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,gBAAgB,CAAmC;IAC3D,OAAO,CAAC,gBAAgB,CAAmC;IAC3D,OAAO,CAAC,aAAa,CAAS;gBAElB,WAAW,EAAE,MAAM;IAsB/B,OAAO,CAAC,kBAAkB;IAqF1B,OAAO,CAAC,cAAc;IAyDtB,OAAO,CAAC,4BAA4B;IAoBpC,OAAO,CAAC,eAAe;IAoCvB;;OAEG;IACI,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAkB,EAAE,QAAQ,GAAE,MAAU,GAAG,IAAI;IAcjG;;OAEG;IACI,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAoB7C;;OAEG;IACI,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IASnC;;OAEG;IACI,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAYlD;;OAEG;IACI,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE;IAgB5C;;OAEG;IACI,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE;IAW1C;;OAEG;IACI,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,UAAU,EAAE;IAiBjE;;OAEG;IACI,eAAe,IAAI,OAAO;IAIjC,OAAO,CAAC,UAAU;IAWlB;;OAEG;IACI,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE;IAUpD;;OAEG;IACI,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAM1D;;OAEG;IACI,QAAQ,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;IAkBxE;;OAEG;IACI,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,UAAU,EAAE;IAmB1F;;OAEG;IACI,WAAW,IAAI,QAAQ,CAAC,QAAQ;IAIvC;;OAEG;IACI,SAAS,IAAI,MAAM;IAI1B;;OAEG;IACI,KAAK,IAAI,IAAI;CAKrB"}
@@ -10,6 +10,7 @@ export class MemoryStorage {
10
10
  saveStmt = null;
11
11
  recallSelectStmt = null;
12
12
  recallUpdateStmt = null;
13
+ fts5Available = false;
13
14
  constructor(projectPath) {
14
15
  // Normalize path
15
16
  const resolvedPath = path.resolve(projectPath);
@@ -62,12 +63,103 @@ export class MemoryStorage {
62
63
  CREATE INDEX IF NOT EXISTS idx_rel_source ON memory_relations(sourceKey);
63
64
  CREATE INDEX IF NOT EXISTS idx_rel_target ON memory_relations(targetKey);
64
65
  CREATE INDEX IF NOT EXISTS idx_rel_type ON memory_relations(relationType);
66
+ `);
67
+ // Create observations table for structured observation capture
68
+ this.db.exec(`
69
+ CREATE TABLE IF NOT EXISTS observations (
70
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
71
+ sessionId TEXT,
72
+ type TEXT NOT NULL CHECK(type IN ('decision','bugfix','feature','refactor','discovery')),
73
+ title TEXT NOT NULL,
74
+ narrative TEXT,
75
+ facts TEXT,
76
+ concepts TEXT,
77
+ filesModified TEXT,
78
+ timestamp TEXT NOT NULL,
79
+ projectPath TEXT
80
+ );
81
+
82
+ CREATE INDEX IF NOT EXISTS idx_obs_session ON observations(sessionId);
83
+ CREATE INDEX IF NOT EXISTS idx_obs_type ON observations(type);
84
+ CREATE INDEX IF NOT EXISTS idx_obs_timestamp ON observations(timestamp);
85
+ `);
86
+ // Create session_summaries table
87
+ this.db.exec(`
88
+ CREATE TABLE IF NOT EXISTS session_summaries (
89
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
90
+ sessionId TEXT UNIQUE NOT NULL,
91
+ request TEXT,
92
+ investigated TEXT,
93
+ learned TEXT,
94
+ completed TEXT,
95
+ nextSteps TEXT,
96
+ filesRead TEXT,
97
+ filesEdited TEXT,
98
+ timestamp TEXT NOT NULL
99
+ );
100
+
101
+ CREATE INDEX IF NOT EXISTS idx_ss_session ON session_summaries(sessionId);
102
+ CREATE INDEX IF NOT EXISTS idx_ss_timestamp ON session_summaries(timestamp);
65
103
  `);
66
104
  // Enable WAL mode for better concurrency
67
105
  this.db.pragma('journal_mode = WAL');
106
+ // Initialize FTS5 full-text search (with fallback if not supported)
107
+ this.initializeFTS5();
68
108
  // Pre-compile frequently used statements
69
109
  this.initializePreparedStatements();
70
110
  }
111
+ initializeFTS5() {
112
+ try {
113
+ // Create FTS5 virtual table for memories
114
+ this.db.exec(`
115
+ CREATE VIRTUAL TABLE IF NOT EXISTS memories_fts
116
+ USING fts5(key, value, content=memories, content_rowid=rowid);
117
+ `);
118
+ // Triggers to keep FTS5 in sync with memories table
119
+ this.db.exec(`
120
+ CREATE TRIGGER IF NOT EXISTS memories_ai AFTER INSERT ON memories BEGIN
121
+ INSERT INTO memories_fts(rowid, key, value) VALUES (new.rowid, new.key, new.value);
122
+ END;
123
+ CREATE TRIGGER IF NOT EXISTS memories_ad AFTER DELETE ON memories BEGIN
124
+ INSERT INTO memories_fts(memories_fts, rowid, key, value) VALUES('delete', old.rowid, old.key, old.value);
125
+ END;
126
+ CREATE TRIGGER IF NOT EXISTS memories_au AFTER UPDATE ON memories BEGIN
127
+ INSERT INTO memories_fts(memories_fts, rowid, key, value) VALUES('delete', old.rowid, old.key, old.value);
128
+ INSERT INTO memories_fts(rowid, key, value) VALUES (new.rowid, new.key, new.value);
129
+ END;
130
+ `);
131
+ // Create FTS5 for observations
132
+ this.db.exec(`
133
+ CREATE VIRTUAL TABLE IF NOT EXISTS observations_fts
134
+ USING fts5(title, narrative, facts, concepts, content=observations, content_rowid=id);
135
+
136
+ CREATE TRIGGER IF NOT EXISTS observations_ai AFTER INSERT ON observations BEGIN
137
+ INSERT INTO observations_fts(rowid, title, narrative, facts, concepts)
138
+ VALUES (new.id, new.title, new.narrative, new.facts, new.concepts);
139
+ END;
140
+ CREATE TRIGGER IF NOT EXISTS observations_ad AFTER DELETE ON observations BEGIN
141
+ INSERT INTO observations_fts(observations_fts, rowid, title, narrative, facts, concepts)
142
+ VALUES('delete', old.id, old.title, old.narrative, old.facts, old.concepts);
143
+ END;
144
+ `);
145
+ // Migrate existing data into FTS5 index
146
+ const ftsCount = this.db.prepare(`SELECT COUNT(*) as cnt FROM memories_fts`).get().cnt;
147
+ const memCount = this.db.prepare(`SELECT COUNT(*) as cnt FROM memories`).get().cnt;
148
+ if (ftsCount === 0 && memCount > 0) {
149
+ this.db.exec(`INSERT INTO memories_fts(rowid, key, value) SELECT rowid, key, value FROM memories`);
150
+ }
151
+ const obsFtsCount = this.db.prepare(`SELECT COUNT(*) as cnt FROM observations_fts`).get().cnt;
152
+ const obsCount = this.db.prepare(`SELECT COUNT(*) as cnt FROM observations`).get().cnt;
153
+ if (obsFtsCount === 0 && obsCount > 0) {
154
+ this.db.exec(`INSERT INTO observations_fts(rowid, title, narrative, facts, concepts) SELECT id, title, narrative, facts, concepts FROM observations`);
155
+ }
156
+ this.fts5Available = true;
157
+ }
158
+ catch {
159
+ // FTS5 not supported in this build of better-sqlite3
160
+ this.fts5Available = false;
161
+ }
162
+ }
71
163
  initializePreparedStatements() {
72
164
  try {
73
165
  this.recallStmt = this.db.prepare(`
@@ -189,9 +281,43 @@ export class MemoryStorage {
189
281
  }
190
282
  }
191
283
  /**
192
- * Search memories by keyword
284
+ * Search memories by keyword (FTS5 priority, LIKE fallback)
193
285
  */
194
286
  search(query) {
287
+ if (this.fts5Available) {
288
+ try {
289
+ return this.searchFTS(query);
290
+ }
291
+ catch {
292
+ // FTS5 query failed, fall through to LIKE
293
+ }
294
+ }
295
+ return this.searchLike(query);
296
+ }
297
+ /**
298
+ * Full-text search using FTS5 with bm25 ranking
299
+ */
300
+ searchFTS(query, limit = 50) {
301
+ if (!this.fts5Available) {
302
+ return this.searchLike(query);
303
+ }
304
+ const stmt = this.db.prepare(`
305
+ SELECT m.*, bm25(memories_fts) as rank
306
+ FROM memories_fts fts
307
+ JOIN memories m ON m.rowid = fts.rowid
308
+ WHERE memories_fts MATCH ?
309
+ ORDER BY rank
310
+ LIMIT ?
311
+ `);
312
+ return stmt.all(query, limit);
313
+ }
314
+ /**
315
+ * Check if FTS5 is available
316
+ */
317
+ isFTS5Available() {
318
+ return this.fts5Available;
319
+ }
320
+ searchLike(query) {
195
321
  const stmt = this.db.prepare(`
196
322
  SELECT * FROM memories
197
323
  WHERE key LIKE ? OR value LIKE ?
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryStorage.js","sourceRoot":"","sources":["../../../src/lib/memory/MemoryStorage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MemoryStorage.js","sourceRoot":"","sources":["../../../src/lib/memory/MemoryStorage.ts"],"names":[],"mappings":"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"}