@su-record/vibe 2.6.23 → 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 +9 -5
  2. package/commands/vibe.run.md +9 -5
  3. package/commands/vibe.spec.review.md +18 -12
  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
@@ -98,15 +98,19 @@ security-review:
98
98
 
99
99
  ### Tool Invocation (Race Mode - GPT + Gemini in parallel via Bash)
100
100
 
101
- ```bash
102
- # Cross-platform path
103
- VIBE_SCRIPTS="$(node -p "process.env.APPDATA || require('os').homedir() + '/.config'")/vibe/hooks/scripts"
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):
104
105
 
106
+ ```bash
105
107
  # GPT review (Bash tool call 1)
106
- node "$VIBE_SCRIPTS/llm-orchestrate.js" gpt orchestrate-json "Review this code for [REVIEW_TYPE]. Return JSON: {issues: [{id, title, description, severity, suggestion}]}. Code: [CODE_HERE]"
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
+ ```
107
110
 
111
+ ```bash
108
112
  # Gemini review (Bash tool call 2 - run in parallel)
109
- node "$VIBE_SCRIPTS/llm-orchestrate.js" gemini orchestrate-json "Review this code for [REVIEW_TYPE]. Return JSON: {issues: [{id, title, description, severity, suggestion}]}. Code: [CODE_HERE]"
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
110
114
  ```
111
115
 
112
116
  ## Priority System
@@ -907,15 +907,19 @@ After all scenarios are implemented, **GPT and Gemini review in parallel with cr
907
907
 
908
908
  **Race Review Invocation (GPT + Gemini in parallel via Bash):**
909
909
 
910
- ```bash
911
- # Cross-platform path
912
- VIBE_SCRIPTS="$(node -p "process.env.APPDATA || require('os').homedir() + '/.config'")/vibe/hooks/scripts"
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):
913
914
 
915
+ ```bash
914
916
  # GPT review (Bash tool call 1)
915
- node "$VIBE_SCRIPTS/llm-orchestrate.js" gpt orchestrate-json "Review this code for security, performance, and best practices. Return JSON: {issues: [{id, title, description, severity, suggestion}]}. Code: [CODE]"
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
+ ```
916
919
 
920
+ ```bash
917
921
  # Gemini review (Bash tool call 2 - run in parallel)
918
- node "$VIBE_SCRIPTS/llm-orchestrate.js" gemini orchestrate-json "Review this code for security, performance, and best practices. Return JSON: {issues: [{id, title, description, severity, suggestion}]}. Code: [CODE]"
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
919
923
  ```
920
924
 
921
925
  **Confidence-based Priority:**
@@ -178,28 +178,34 @@ Score: 96/100 ✅ PASSED
178
178
 
179
179
  ### 3.1 Review Loop (3 Rounds)
180
180
 
181
- **For EACH round (1, 2, 3), run GPT + Gemini in PARALLEL via Bash tool:**
181
+ **For EACH round (1, 2, 3), run GPT + Gemini in PARALLEL via Bash tool.**
182
182
 
183
- **🚨 MANDATORY: Copy the EXACT path below. DO NOT modify or use alternative paths.**
183
+ **🚨 IMPORTANT: SPEC content is too large for CLI arguments. Use stdin pipe method.**
184
184
 
185
- ```bash
186
- # Cross-platform path (works on Windows/macOS/Linux)
187
- # ⚠️ COPY THIS EXACTLY - DO NOT USE ~/.claude/ or any other path!
188
- VIBE_SCRIPTS="$(node -p "process.env.APPDATA || require('os').homedir() + '/.config'")/vibe/hooks/scripts"
185
+ **Procedure for each round:**
186
+
187
+ **Step A: Save SPEC content to scratchpad temp file (using Write tool):**
188
+ - Write the SPEC content to `[SCRATCHPAD]/spec-content.txt`
189
+
190
+ **Step B: Run GPT + Gemini in PARALLEL (two separate Bash tool calls at once):**
189
191
 
192
+ ```bash
190
193
  # GPT review (Bash tool call 1)
191
- node "$VIBE_SCRIPTS/llm-orchestrate.js" gpt orchestrate-json "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: [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
+ ```
192
196
 
197
+ ```bash
193
198
  # Gemini review (Bash tool call 2 - run in parallel with GPT)
194
- node "$VIBE_SCRIPTS/llm-orchestrate.js" gemini orchestrate-json "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: [SPEC_CONTENT]"
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
195
200
  ```
196
201
 
197
- **🚨 MANDATORY: Use the Bash tool to run BOTH commands above for EACH round.**
202
+ **🚨 MANDATORY: Replace `[SCRATCHPAD]` with the actual scratchpad directory path.**
203
+ **🚨 Replace `[N]` with the current round number (1, 2, or 3).**
198
204
  **🚨 Run GPT and Gemini calls in PARALLEL (two separate Bash tool calls at once).**
199
205
 
200
- - Round 1: Run GPT + Gemini in parallel → Cross-validate → Apply fixes → Update SPEC file
201
- - Round 2: Run with updated SPEC → Cross-validate → Apply fixes → Update SPEC file
202
- - Round 3: Run with final SPEC → Cross-validate → Confirm no issues remain
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
203
209
 
204
210
  ### 3.2 Cross-Validation Rules
205
211
 
@@ -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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"}