@su-record/vibe 2.6.26 → 2.6.28
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.
- package/CLAUDE.md +202 -153
- package/LICENSE +21 -21
- package/README.md +267 -236
- package/agents/architect-low.md +41 -41
- package/agents/architect-medium.md +59 -59
- package/agents/architect.md +80 -80
- package/agents/build-error-resolver.md +115 -115
- package/agents/compounder.md +261 -261
- package/agents/diagrammer.md +178 -178
- package/agents/docs/api-documenter.md +99 -99
- package/agents/docs/changelog-writer.md +93 -93
- package/agents/e2e-tester.md +266 -266
- package/agents/explorer-low.md +42 -42
- package/agents/explorer-medium.md +59 -59
- package/agents/explorer.md +48 -48
- package/agents/implementer-low.md +43 -43
- package/agents/implementer-medium.md +52 -52
- package/agents/implementer.md +54 -54
- package/agents/planning/requirements-analyst.md +84 -84
- package/agents/planning/ux-advisor.md +83 -83
- package/agents/qa/acceptance-tester.md +86 -86
- package/agents/qa/edge-case-finder.md +93 -93
- package/agents/refactor-cleaner.md +143 -143
- package/agents/research/best-practices-agent.md +199 -199
- package/agents/research/codebase-patterns-agent.md +157 -157
- package/agents/research/framework-docs-agent.md +188 -188
- package/agents/research/security-advisory-agent.md +213 -213
- package/agents/review/architecture-reviewer.md +107 -107
- package/agents/review/complexity-reviewer.md +116 -116
- package/agents/review/data-integrity-reviewer.md +88 -88
- package/agents/review/git-history-reviewer.md +103 -103
- package/agents/review/performance-reviewer.md +86 -86
- package/agents/review/python-reviewer.md +150 -150
- package/agents/review/rails-reviewer.md +139 -139
- package/agents/review/react-reviewer.md +144 -144
- package/agents/review/security-reviewer.md +80 -80
- package/agents/review/simplicity-reviewer.md +140 -140
- package/agents/review/test-coverage-reviewer.md +116 -116
- package/agents/review/typescript-reviewer.md +127 -127
- package/agents/searcher.md +54 -54
- package/agents/simplifier.md +120 -120
- package/agents/tester.md +49 -49
- package/agents/ui-previewer.md +268 -268
- package/commands/vibe.analyze.md +356 -356
- package/commands/vibe.reason.md +329 -329
- package/commands/vibe.review.md +423 -423
- package/commands/vibe.run.md +1313 -1313
- package/commands/vibe.spec.md +1054 -1054
- package/commands/vibe.spec.review.md +412 -412
- package/commands/vibe.trace.md +161 -161
- package/commands/vibe.utils.md +376 -376
- package/commands/vibe.verify.md +375 -375
- package/dist/cli/collaborator.js +52 -52
- package/dist/cli/detect.js +32 -32
- package/dist/cli/hud.js +20 -20
- package/dist/cli/index.js +112 -112
- package/dist/cli/llm.js +144 -144
- package/dist/cli/mcp.d.ts +49 -0
- package/dist/cli/mcp.d.ts.map +1 -0
- package/dist/cli/mcp.js +169 -0
- package/dist/cli/mcp.js.map +1 -0
- package/dist/cli/postinstall.d.ts.map +1 -1
- package/dist/cli/postinstall.js +886 -858
- package/dist/cli/postinstall.js.map +1 -1
- package/dist/cli/setup/GlobalInstaller.d.ts +6 -0
- package/dist/cli/setup/GlobalInstaller.d.ts.map +1 -1
- package/dist/cli/setup/GlobalInstaller.js +26 -0
- package/dist/cli/setup/GlobalInstaller.js.map +1 -1
- package/dist/lib/DeepInit.js +24 -24
- package/dist/lib/IterationTracker.js +11 -11
- package/dist/lib/MemoryManager.d.ts +30 -0
- package/dist/lib/MemoryManager.d.ts.map +1 -1
- package/dist/lib/MemoryManager.js +74 -0
- package/dist/lib/MemoryManager.js.map +1 -1
- package/dist/lib/PythonParser.js +108 -108
- package/dist/lib/ReviewRace.js +96 -96
- package/dist/lib/SkillFrontmatter.js +28 -28
- package/dist/lib/SkillQualityGate.js +9 -9
- package/dist/lib/SkillRepository.js +159 -159
- package/dist/lib/UltraQA.js +77 -77
- package/dist/lib/gemini-api.js +5 -5
- package/dist/lib/gemini-mcp.d.ts +10 -0
- package/dist/lib/gemini-mcp.d.ts.map +1 -0
- package/dist/lib/gemini-mcp.js +353 -0
- package/dist/lib/gemini-mcp.js.map +1 -0
- package/dist/lib/gpt-api.js +4 -4
- package/dist/lib/gpt-mcp.d.ts +10 -0
- package/dist/lib/gpt-mcp.d.ts.map +1 -0
- package/dist/lib/gpt-mcp.js +352 -0
- package/dist/lib/gpt-mcp.js.map +1 -0
- package/dist/lib/memory/KnowledgeGraph.js +4 -4
- package/dist/lib/memory/MemorySearch.js +43 -43
- package/dist/lib/memory/MemoryStorage.js +130 -130
- package/dist/lib/memory/ObservationStore.js +28 -28
- package/dist/lib/memory/SessionRAGRetriever.d.ts +66 -0
- package/dist/lib/memory/SessionRAGRetriever.d.ts.map +1 -0
- package/dist/lib/memory/SessionRAGRetriever.js +196 -0
- package/dist/lib/memory/SessionRAGRetriever.js.map +1 -0
- package/dist/lib/memory/SessionRAGRetriever.test.d.ts +2 -0
- package/dist/lib/memory/SessionRAGRetriever.test.d.ts.map +1 -0
- package/dist/lib/memory/SessionRAGRetriever.test.js +180 -0
- package/dist/lib/memory/SessionRAGRetriever.test.js.map +1 -0
- package/dist/lib/memory/SessionRAGStore.d.ts +153 -0
- package/dist/lib/memory/SessionRAGStore.d.ts.map +1 -0
- package/dist/lib/memory/SessionRAGStore.js +673 -0
- package/dist/lib/memory/SessionRAGStore.js.map +1 -0
- package/dist/lib/memory/SessionRAGStore.test.d.ts +2 -0
- package/dist/lib/memory/SessionRAGStore.test.d.ts.map +1 -0
- package/dist/lib/memory/SessionRAGStore.test.js +326 -0
- package/dist/lib/memory/SessionRAGStore.test.js.map +1 -0
- package/dist/lib/memory/SessionSummarizer.js +9 -9
- package/dist/orchestrator/AgentManager.js +12 -12
- package/dist/orchestrator/MultiLlmResearch.js +8 -8
- package/dist/orchestrator/SmartRouter.js +11 -11
- package/dist/orchestrator/SwarmOrchestrator.test.js +16 -16
- package/dist/orchestrator/parallelResearch.js +24 -24
- package/dist/tools/analytics/getUsageAnalytics.d.ts +10 -0
- package/dist/tools/analytics/getUsageAnalytics.d.ts.map +1 -0
- package/dist/tools/analytics/getUsageAnalytics.js +246 -0
- package/dist/tools/analytics/getUsageAnalytics.js.map +1 -0
- package/dist/tools/analytics/index.d.ts +5 -0
- package/dist/tools/analytics/index.d.ts.map +1 -0
- package/dist/tools/analytics/index.js +5 -0
- package/dist/tools/analytics/index.js.map +1 -0
- package/dist/tools/convention/analyzeComplexity.test.js +115 -115
- package/dist/tools/convention/getCodingGuide.d.ts +7 -0
- package/dist/tools/convention/getCodingGuide.d.ts.map +1 -0
- package/dist/tools/convention/getCodingGuide.js +69 -0
- package/dist/tools/convention/getCodingGuide.js.map +1 -0
- package/dist/tools/convention/validateCodeQuality.test.js +104 -104
- package/dist/tools/index.d.ts +5 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +4 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/memory/index.d.ts +3 -0
- package/dist/tools/memory/index.d.ts.map +1 -1
- package/dist/tools/memory/index.js +4 -0
- package/dist/tools/memory/index.js.map +1 -1
- package/dist/tools/memory/manageGoals.d.ts +11 -0
- package/dist/tools/memory/manageGoals.d.ts.map +1 -0
- package/dist/tools/memory/manageGoals.js +152 -0
- package/dist/tools/memory/manageGoals.js.map +1 -0
- package/dist/tools/memory/retrieveSessionContext.d.ts +9 -0
- package/dist/tools/memory/retrieveSessionContext.d.ts.map +1 -0
- package/dist/tools/memory/retrieveSessionContext.js +140 -0
- package/dist/tools/memory/retrieveSessionContext.js.map +1 -0
- package/dist/tools/memory/saveSessionItem.d.ts +26 -0
- package/dist/tools/memory/saveSessionItem.d.ts.map +1 -0
- package/dist/tools/memory/saveSessionItem.js +218 -0
- package/dist/tools/memory/saveSessionItem.js.map +1 -0
- package/dist/tools/memory/startSession.d.ts.map +1 -1
- package/dist/tools/memory/startSession.js +29 -0
- package/dist/tools/memory/startSession.js.map +1 -1
- package/dist/tools/planning/analyzeRequirements.d.ts +9 -0
- package/dist/tools/planning/analyzeRequirements.d.ts.map +1 -0
- package/dist/tools/planning/analyzeRequirements.js +171 -0
- package/dist/tools/planning/analyzeRequirements.js.map +1 -0
- package/dist/tools/planning/createUserStories.d.ts +9 -0
- package/dist/tools/planning/createUserStories.d.ts.map +1 -0
- package/dist/tools/planning/createUserStories.js +124 -0
- package/dist/tools/planning/createUserStories.js.map +1 -0
- package/dist/tools/planning/featureRoadmap.d.ts +10 -0
- package/dist/tools/planning/featureRoadmap.d.ts.map +1 -0
- package/dist/tools/planning/featureRoadmap.js +207 -0
- package/dist/tools/planning/featureRoadmap.js.map +1 -0
- package/dist/tools/planning/generatePrd.d.ts +11 -0
- package/dist/tools/planning/generatePrd.d.ts.map +1 -0
- package/dist/tools/planning/generatePrd.js +161 -0
- package/dist/tools/planning/generatePrd.js.map +1 -0
- package/dist/tools/planning/index.d.ts +8 -0
- package/dist/tools/planning/index.d.ts.map +1 -0
- package/dist/tools/planning/index.js +8 -0
- package/dist/tools/planning/index.js.map +1 -0
- package/dist/tools/prompt/analyzePrompt.d.ts +7 -0
- package/dist/tools/prompt/analyzePrompt.d.ts.map +1 -0
- package/dist/tools/prompt/analyzePrompt.js +150 -0
- package/dist/tools/prompt/analyzePrompt.js.map +1 -0
- package/dist/tools/prompt/enhancePrompt.d.ts +8 -0
- package/dist/tools/prompt/enhancePrompt.d.ts.map +1 -0
- package/dist/tools/prompt/enhancePrompt.js +110 -0
- package/dist/tools/prompt/enhancePrompt.js.map +1 -0
- package/dist/tools/prompt/enhancePromptGemini.d.ts +8 -0
- package/dist/tools/prompt/enhancePromptGemini.d.ts.map +1 -0
- package/dist/tools/prompt/enhancePromptGemini.js +332 -0
- package/dist/tools/prompt/enhancePromptGemini.js.map +1 -0
- package/dist/tools/prompt/index.d.ts +7 -0
- package/dist/tools/prompt/index.d.ts.map +1 -0
- package/dist/tools/prompt/index.js +7 -0
- package/dist/tools/prompt/index.js.map +1 -0
- package/dist/tools/reasoning/applyReasoningFramework.d.ts +8 -0
- package/dist/tools/reasoning/applyReasoningFramework.d.ts.map +1 -0
- package/dist/tools/reasoning/applyReasoningFramework.js +266 -0
- package/dist/tools/reasoning/applyReasoningFramework.js.map +1 -0
- package/dist/tools/reasoning/index.d.ts +5 -0
- package/dist/tools/reasoning/index.d.ts.map +1 -0
- package/dist/tools/reasoning/index.js +5 -0
- package/dist/tools/reasoning/index.js.map +1 -0
- package/dist/tools/spec/prdParser.test.js +171 -171
- package/dist/tools/spec/specGenerator.js +169 -169
- package/dist/tools/spec/traceabilityMatrix.js +64 -64
- package/dist/tools/spec/traceabilityMatrix.test.js +28 -28
- package/dist/tools/thinking/analyzeProblem.d.ts +7 -0
- package/dist/tools/thinking/analyzeProblem.d.ts.map +1 -0
- package/dist/tools/thinking/analyzeProblem.js +55 -0
- package/dist/tools/thinking/analyzeProblem.js.map +1 -0
- package/dist/tools/thinking/breakDownProblem.d.ts +8 -0
- package/dist/tools/thinking/breakDownProblem.d.ts.map +1 -0
- package/dist/tools/thinking/breakDownProblem.js +145 -0
- package/dist/tools/thinking/breakDownProblem.js.map +1 -0
- package/dist/tools/thinking/createThinkingChain.d.ts +7 -0
- package/dist/tools/thinking/createThinkingChain.d.ts.map +1 -0
- package/dist/tools/thinking/createThinkingChain.js +44 -0
- package/dist/tools/thinking/createThinkingChain.js.map +1 -0
- package/dist/tools/thinking/formatAsPlan.d.ts +9 -0
- package/dist/tools/thinking/formatAsPlan.d.ts.map +1 -0
- package/dist/tools/thinking/formatAsPlan.js +78 -0
- package/dist/tools/thinking/formatAsPlan.js.map +1 -0
- package/dist/tools/thinking/index.d.ts +10 -0
- package/dist/tools/thinking/index.d.ts.map +1 -0
- package/dist/tools/thinking/index.js +10 -0
- package/dist/tools/thinking/index.js.map +1 -0
- package/dist/tools/thinking/stepByStepAnalysis.d.ts +8 -0
- package/dist/tools/thinking/stepByStepAnalysis.d.ts.map +1 -0
- package/dist/tools/thinking/stepByStepAnalysis.js +63 -0
- package/dist/tools/thinking/stepByStepAnalysis.js.map +1 -0
- package/dist/tools/thinking/thinkAloudProcess.d.ts +8 -0
- package/dist/tools/thinking/thinkAloudProcess.d.ts.map +1 -0
- package/dist/tools/thinking/thinkAloudProcess.js +80 -0
- package/dist/tools/thinking/thinkAloudProcess.js.map +1 -0
- package/hooks/hooks.json +115 -115
- package/hooks/scripts/code-check.js +70 -70
- package/hooks/scripts/code-review.js +22 -22
- package/hooks/scripts/complexity.js +22 -22
- package/hooks/scripts/compound.js +23 -23
- package/hooks/scripts/context-save.js +53 -53
- package/hooks/scripts/gemini-ui-gen.js +281 -281
- package/hooks/scripts/generate-brand-assets.js +474 -474
- package/hooks/scripts/hud-multiline.js +262 -262
- package/hooks/scripts/hud-status.js +291 -291
- package/hooks/scripts/keyword-detector.js +214 -214
- package/hooks/scripts/llm-orchestrate.js +171 -171
- package/hooks/scripts/post-edit.js +97 -97
- package/hooks/scripts/post-tool-verify.js +210 -210
- package/hooks/scripts/pre-tool-guard.js +125 -125
- package/hooks/scripts/prompt-dispatcher.js +161 -161
- package/hooks/scripts/recall.js +22 -22
- package/hooks/scripts/session-start.js +30 -30
- package/hooks/scripts/skill-injector.js +191 -191
- package/hooks/scripts/utils.js +97 -97
- package/languages/csharp-unity.md +515 -515
- package/languages/gdscript-godot.md +470 -470
- package/languages/ruby-rails.md +489 -489
- package/languages/typescript-angular.md +433 -433
- package/languages/typescript-astro.md +416 -416
- package/languages/typescript-electron.md +406 -406
- package/languages/typescript-nestjs.md +524 -524
- package/languages/typescript-svelte.md +407 -407
- package/languages/typescript-tauri.md +365 -365
- package/package.json +84 -84
- package/skills/brand-assets.md +141 -141
- package/skills/commerce-patterns.md +361 -361
- package/skills/context7-usage.md +102 -102
- package/skills/e2e-commerce.md +304 -304
- package/skills/frontend-design.md +92 -92
- package/skills/git-worktree.md +181 -181
- package/skills/parallel-research.md +77 -77
- package/skills/priority-todos.md +239 -239
- package/skills/seo-checklist.md +244 -244
- package/skills/tool-fallback.md +190 -190
- package/skills/vibe-capabilities.md +161 -161
- package/vibe/constitution.md +227 -227
- package/vibe/rules/core/communication-guide.md +98 -98
- package/vibe/rules/core/development-philosophy.md +52 -52
- package/vibe/rules/core/quick-start.md +102 -102
- package/vibe/rules/quality/bdd-contract-testing.md +393 -393
- package/vibe/rules/quality/checklist.md +276 -276
- package/vibe/rules/quality/testing-strategy.md +440 -440
- package/vibe/rules/standards/anti-patterns.md +541 -541
- package/vibe/rules/standards/code-structure.md +291 -291
- package/vibe/rules/standards/complexity-metrics.md +313 -313
- package/vibe/rules/standards/naming-conventions.md +198 -198
- package/vibe/setup.sh +31 -31
- package/vibe/templates/constitution-template.md +252 -252
- package/vibe/templates/contract-backend-template.md +526 -526
- package/vibe/templates/contract-frontend-template.md +599 -599
- package/vibe/templates/feature-template.md +96 -96
- package/vibe/templates/spec-template.md +221 -221
|
@@ -32,74 +32,74 @@ export class MemoryStorage {
|
|
|
32
32
|
}
|
|
33
33
|
initializeDatabase() {
|
|
34
34
|
// Create memories table
|
|
35
|
-
this.db.exec(`
|
|
36
|
-
CREATE TABLE IF NOT EXISTS memories (
|
|
37
|
-
key TEXT PRIMARY KEY,
|
|
38
|
-
value TEXT NOT NULL,
|
|
39
|
-
category TEXT NOT NULL DEFAULT 'general',
|
|
40
|
-
timestamp TEXT NOT NULL,
|
|
41
|
-
lastAccessed TEXT NOT NULL,
|
|
42
|
-
priority INTEGER DEFAULT 0
|
|
43
|
-
);
|
|
44
|
-
|
|
45
|
-
CREATE INDEX IF NOT EXISTS idx_category ON memories(category);
|
|
46
|
-
CREATE INDEX IF NOT EXISTS idx_timestamp ON memories(timestamp);
|
|
47
|
-
CREATE INDEX IF NOT EXISTS idx_priority ON memories(priority);
|
|
48
|
-
CREATE INDEX IF NOT EXISTS idx_lastAccessed ON memories(lastAccessed);
|
|
35
|
+
this.db.exec(`
|
|
36
|
+
CREATE TABLE IF NOT EXISTS memories (
|
|
37
|
+
key TEXT PRIMARY KEY,
|
|
38
|
+
value TEXT NOT NULL,
|
|
39
|
+
category TEXT NOT NULL DEFAULT 'general',
|
|
40
|
+
timestamp TEXT NOT NULL,
|
|
41
|
+
lastAccessed TEXT NOT NULL,
|
|
42
|
+
priority INTEGER DEFAULT 0
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
CREATE INDEX IF NOT EXISTS idx_category ON memories(category);
|
|
46
|
+
CREATE INDEX IF NOT EXISTS idx_timestamp ON memories(timestamp);
|
|
47
|
+
CREATE INDEX IF NOT EXISTS idx_priority ON memories(priority);
|
|
48
|
+
CREATE INDEX IF NOT EXISTS idx_lastAccessed ON memories(lastAccessed);
|
|
49
49
|
`);
|
|
50
50
|
// Create memory_relations table for Knowledge Graph
|
|
51
|
-
this.db.exec(`
|
|
52
|
-
CREATE TABLE IF NOT EXISTS memory_relations (
|
|
53
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
54
|
-
sourceKey TEXT NOT NULL,
|
|
55
|
-
targetKey TEXT NOT NULL,
|
|
56
|
-
relationType TEXT NOT NULL,
|
|
57
|
-
strength REAL DEFAULT 1.0,
|
|
58
|
-
metadata TEXT,
|
|
59
|
-
timestamp TEXT NOT NULL,
|
|
60
|
-
UNIQUE(sourceKey, targetKey, relationType)
|
|
61
|
-
);
|
|
62
|
-
|
|
63
|
-
CREATE INDEX IF NOT EXISTS idx_rel_source ON memory_relations(sourceKey);
|
|
64
|
-
CREATE INDEX IF NOT EXISTS idx_rel_target ON memory_relations(targetKey);
|
|
65
|
-
CREATE INDEX IF NOT EXISTS idx_rel_type ON memory_relations(relationType);
|
|
51
|
+
this.db.exec(`
|
|
52
|
+
CREATE TABLE IF NOT EXISTS memory_relations (
|
|
53
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
54
|
+
sourceKey TEXT NOT NULL,
|
|
55
|
+
targetKey TEXT NOT NULL,
|
|
56
|
+
relationType TEXT NOT NULL,
|
|
57
|
+
strength REAL DEFAULT 1.0,
|
|
58
|
+
metadata TEXT,
|
|
59
|
+
timestamp TEXT NOT NULL,
|
|
60
|
+
UNIQUE(sourceKey, targetKey, relationType)
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
CREATE INDEX IF NOT EXISTS idx_rel_source ON memory_relations(sourceKey);
|
|
64
|
+
CREATE INDEX IF NOT EXISTS idx_rel_target ON memory_relations(targetKey);
|
|
65
|
+
CREATE INDEX IF NOT EXISTS idx_rel_type ON memory_relations(relationType);
|
|
66
66
|
`);
|
|
67
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);
|
|
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
85
|
`);
|
|
86
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);
|
|
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);
|
|
103
103
|
`);
|
|
104
104
|
// Enable WAL mode for better concurrency
|
|
105
105
|
this.db.pragma('journal_mode = WAL');
|
|
@@ -111,36 +111,36 @@ export class MemoryStorage {
|
|
|
111
111
|
initializeFTS5() {
|
|
112
112
|
try {
|
|
113
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);
|
|
114
|
+
this.db.exec(`
|
|
115
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS memories_fts
|
|
116
|
+
USING fts5(key, value, content=memories, content_rowid=rowid);
|
|
117
117
|
`);
|
|
118
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;
|
|
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
130
|
`);
|
|
131
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;
|
|
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
144
|
`);
|
|
145
145
|
// Migrate existing data into FTS5 index
|
|
146
146
|
const ftsCount = this.db.prepare(`SELECT COUNT(*) as cnt FROM memories_fts`).get().cnt;
|
|
@@ -162,10 +162,10 @@ export class MemoryStorage {
|
|
|
162
162
|
}
|
|
163
163
|
initializePreparedStatements() {
|
|
164
164
|
try {
|
|
165
|
-
this.recallStmt = this.db.prepare(`
|
|
166
|
-
UPDATE memories SET lastAccessed = ?
|
|
167
|
-
WHERE key = ?
|
|
168
|
-
RETURNING *
|
|
165
|
+
this.recallStmt = this.db.prepare(`
|
|
166
|
+
UPDATE memories SET lastAccessed = ?
|
|
167
|
+
WHERE key = ?
|
|
168
|
+
RETURNING *
|
|
169
169
|
`);
|
|
170
170
|
}
|
|
171
171
|
catch {
|
|
@@ -174,9 +174,9 @@ export class MemoryStorage {
|
|
|
174
174
|
this.recallSelectStmt = this.db.prepare(`SELECT * FROM memories WHERE key = ?`);
|
|
175
175
|
this.recallUpdateStmt = this.db.prepare(`UPDATE memories SET lastAccessed = ? WHERE key = ?`);
|
|
176
176
|
}
|
|
177
|
-
this.saveStmt = this.db.prepare(`
|
|
178
|
-
INSERT OR REPLACE INTO memories (key, value, category, timestamp, lastAccessed, priority)
|
|
179
|
-
VALUES (?, ?, ?, ?, ?, ?)
|
|
177
|
+
this.saveStmt = this.db.prepare(`
|
|
178
|
+
INSERT OR REPLACE INTO memories (key, value, category, timestamp, lastAccessed, priority)
|
|
179
|
+
VALUES (?, ?, ?, ?, ?, ?)
|
|
180
180
|
`);
|
|
181
181
|
}
|
|
182
182
|
migrateFromJSON() {
|
|
@@ -188,9 +188,9 @@ export class MemoryStorage {
|
|
|
188
188
|
const memories = JSON.parse(jsonData);
|
|
189
189
|
if (memories.length === 0)
|
|
190
190
|
return;
|
|
191
|
-
const insert = this.db.prepare(`
|
|
192
|
-
INSERT OR REPLACE INTO memories (key, value, category, timestamp, lastAccessed, priority)
|
|
193
|
-
VALUES (?, ?, ?, ?, ?, ?)
|
|
191
|
+
const insert = this.db.prepare(`
|
|
192
|
+
INSERT OR REPLACE INTO memories (key, value, category, timestamp, lastAccessed, priority)
|
|
193
|
+
VALUES (?, ?, ?, ?, ?, ?)
|
|
194
194
|
`);
|
|
195
195
|
const insertMany = this.db.transaction((items) => {
|
|
196
196
|
for (const item of items) {
|
|
@@ -213,9 +213,9 @@ export class MemoryStorage {
|
|
|
213
213
|
this.saveStmt.run(key, value, category, timestamp, timestamp, priority);
|
|
214
214
|
}
|
|
215
215
|
else {
|
|
216
|
-
const stmt = this.db.prepare(`
|
|
217
|
-
INSERT OR REPLACE INTO memories (key, value, category, timestamp, lastAccessed, priority)
|
|
218
|
-
VALUES (?, ?, ?, ?, ?, ?)
|
|
216
|
+
const stmt = this.db.prepare(`
|
|
217
|
+
INSERT OR REPLACE INTO memories (key, value, category, timestamp, lastAccessed, priority)
|
|
218
|
+
VALUES (?, ?, ?, ?, ?, ?)
|
|
219
219
|
`);
|
|
220
220
|
stmt.run(key, value, category, timestamp, timestamp, priority);
|
|
221
221
|
}
|
|
@@ -253,10 +253,10 @@ export class MemoryStorage {
|
|
|
253
253
|
*/
|
|
254
254
|
update(key, value) {
|
|
255
255
|
const timestamp = new Date().toISOString();
|
|
256
|
-
const stmt = this.db.prepare(`
|
|
257
|
-
UPDATE memories
|
|
258
|
-
SET value = ?, timestamp = ?, lastAccessed = ?
|
|
259
|
-
WHERE key = ?
|
|
256
|
+
const stmt = this.db.prepare(`
|
|
257
|
+
UPDATE memories
|
|
258
|
+
SET value = ?, timestamp = ?, lastAccessed = ?
|
|
259
|
+
WHERE key = ?
|
|
260
260
|
`);
|
|
261
261
|
const result = stmt.run(value, timestamp, timestamp, key);
|
|
262
262
|
return result.changes > 0;
|
|
@@ -266,16 +266,16 @@ export class MemoryStorage {
|
|
|
266
266
|
*/
|
|
267
267
|
list(category) {
|
|
268
268
|
if (category) {
|
|
269
|
-
const stmt = this.db.prepare(`
|
|
270
|
-
SELECT * FROM memories WHERE category = ?
|
|
271
|
-
ORDER BY priority DESC, timestamp DESC
|
|
269
|
+
const stmt = this.db.prepare(`
|
|
270
|
+
SELECT * FROM memories WHERE category = ?
|
|
271
|
+
ORDER BY priority DESC, timestamp DESC
|
|
272
272
|
`);
|
|
273
273
|
return stmt.all(category);
|
|
274
274
|
}
|
|
275
275
|
else {
|
|
276
|
-
const stmt = this.db.prepare(`
|
|
277
|
-
SELECT * FROM memories
|
|
278
|
-
ORDER BY priority DESC, timestamp DESC
|
|
276
|
+
const stmt = this.db.prepare(`
|
|
277
|
+
SELECT * FROM memories
|
|
278
|
+
ORDER BY priority DESC, timestamp DESC
|
|
279
279
|
`);
|
|
280
280
|
return stmt.all();
|
|
281
281
|
}
|
|
@@ -301,13 +301,13 @@ export class MemoryStorage {
|
|
|
301
301
|
if (!this.fts5Available) {
|
|
302
302
|
return this.searchLike(query);
|
|
303
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 ?
|
|
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
311
|
`);
|
|
312
312
|
return stmt.all(query, limit);
|
|
313
313
|
}
|
|
@@ -318,10 +318,10 @@ export class MemoryStorage {
|
|
|
318
318
|
return this.fts5Available;
|
|
319
319
|
}
|
|
320
320
|
searchLike(query) {
|
|
321
|
-
const stmt = this.db.prepare(`
|
|
322
|
-
SELECT * FROM memories
|
|
323
|
-
WHERE key LIKE ? OR value LIKE ?
|
|
324
|
-
ORDER BY priority DESC, timestamp DESC
|
|
321
|
+
const stmt = this.db.prepare(`
|
|
322
|
+
SELECT * FROM memories
|
|
323
|
+
WHERE key LIKE ? OR value LIKE ?
|
|
324
|
+
ORDER BY priority DESC, timestamp DESC
|
|
325
325
|
`);
|
|
326
326
|
const pattern = `%${query}%`;
|
|
327
327
|
return stmt.all(pattern, pattern);
|
|
@@ -330,10 +330,10 @@ export class MemoryStorage {
|
|
|
330
330
|
* Get memories by priority level
|
|
331
331
|
*/
|
|
332
332
|
getByPriority(priority) {
|
|
333
|
-
const stmt = this.db.prepare(`
|
|
334
|
-
SELECT * FROM memories
|
|
335
|
-
WHERE priority = ?
|
|
336
|
-
ORDER BY timestamp DESC
|
|
333
|
+
const stmt = this.db.prepare(`
|
|
334
|
+
SELECT * FROM memories
|
|
335
|
+
WHERE priority = ?
|
|
336
|
+
ORDER BY timestamp DESC
|
|
337
337
|
`);
|
|
338
338
|
return stmt.all(priority);
|
|
339
339
|
}
|
|
@@ -349,10 +349,10 @@ export class MemoryStorage {
|
|
|
349
349
|
* Get memory statistics
|
|
350
350
|
*/
|
|
351
351
|
getStats() {
|
|
352
|
-
const categories = this.db.prepare(`
|
|
353
|
-
SELECT category, COUNT(*) as count
|
|
354
|
-
FROM memories
|
|
355
|
-
GROUP BY category
|
|
352
|
+
const categories = this.db.prepare(`
|
|
353
|
+
SELECT category, COUNT(*) as count
|
|
354
|
+
FROM memories
|
|
355
|
+
GROUP BY category
|
|
356
356
|
`).all();
|
|
357
357
|
const byCategory = {};
|
|
358
358
|
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;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { MemoryStorage } from './MemoryStorage.js';
|
|
2
|
+
import { SessionRAGStore, Decision, Constraint, Goal, Evidence } from './SessionRAGStore.js';
|
|
3
|
+
export interface RetrievalOptions {
|
|
4
|
+
query: string;
|
|
5
|
+
sessionId?: string;
|
|
6
|
+
limit?: number;
|
|
7
|
+
recencyWeight?: number;
|
|
8
|
+
priorityWeight?: number;
|
|
9
|
+
bm25Weight?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface ScoreBreakdown {
|
|
12
|
+
bm25: number;
|
|
13
|
+
recency: number;
|
|
14
|
+
priority: number;
|
|
15
|
+
}
|
|
16
|
+
export interface ScoredItem<T> {
|
|
17
|
+
item: T;
|
|
18
|
+
score: number;
|
|
19
|
+
breakdown: ScoreBreakdown;
|
|
20
|
+
}
|
|
21
|
+
export interface SessionRAGResult {
|
|
22
|
+
decisions: ScoredItem<Decision>[];
|
|
23
|
+
constraints: ScoredItem<Constraint>[];
|
|
24
|
+
goals: ScoredItem<Goal>[];
|
|
25
|
+
evidence: ScoredItem<Evidence>[];
|
|
26
|
+
queryTime: number;
|
|
27
|
+
}
|
|
28
|
+
export declare class SessionRAGRetriever {
|
|
29
|
+
private db;
|
|
30
|
+
private store;
|
|
31
|
+
private fts5Available;
|
|
32
|
+
constructor(storage: MemoryStorage, store: SessionRAGStore);
|
|
33
|
+
/**
|
|
34
|
+
* Retrieve relevant session context with hybrid scoring
|
|
35
|
+
*/
|
|
36
|
+
retrieve(options: RetrievalOptions): SessionRAGResult;
|
|
37
|
+
/**
|
|
38
|
+
* Retrieve only active goals and high-severity constraints (for session start injection)
|
|
39
|
+
*/
|
|
40
|
+
retrieveActiveContext(): {
|
|
41
|
+
goals: Goal[];
|
|
42
|
+
constraints: Constraint[];
|
|
43
|
+
decisions: Decision[];
|
|
44
|
+
};
|
|
45
|
+
private scoreDecisions;
|
|
46
|
+
private scoreConstraints;
|
|
47
|
+
private scoreGoals;
|
|
48
|
+
private scoreEvidence;
|
|
49
|
+
private getCandidateDecisions;
|
|
50
|
+
private getCandidateConstraints;
|
|
51
|
+
private getCandidateGoals;
|
|
52
|
+
private getCandidateEvidence;
|
|
53
|
+
private getBM25Scores;
|
|
54
|
+
/**
|
|
55
|
+
* Normalize BM25 score to 0-1 range.
|
|
56
|
+
* BM25 returns negative values where more negative = better match.
|
|
57
|
+
* We convert to 0-1 where 1 = best match.
|
|
58
|
+
*/
|
|
59
|
+
private normalizeBM25;
|
|
60
|
+
/**
|
|
61
|
+
* Calculate recency score with exponential decay.
|
|
62
|
+
* Returns 0-1 where 1 = just now, 0.5 = half-life ago.
|
|
63
|
+
*/
|
|
64
|
+
private calculateRecency;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=SessionRAGRetriever.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionRAGRetriever.d.ts","sourceRoot":"","sources":["../../../src/lib/memory/SessionRAGRetriever.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,eAAe,EACf,QAAQ,EACR,UAAU,EACV,IAAI,EACJ,QAAQ,EACT,MAAM,sBAAsB,CAAC;AAM9B,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,cAAc,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;IAClC,WAAW,EAAE,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;IACtC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1B,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB;AAYD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,aAAa,CAAU;gBAEnB,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe;IAM1D;;OAEG;IACI,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB;IA0B5D;;OAEG;IACI,qBAAqB,IAAI;QAC9B,KAAK,EAAE,IAAI,EAAE,CAAC;QACd,WAAW,EAAE,UAAU,EAAE,CAAC;QAC1B,SAAS,EAAE,QAAQ,EAAE,CAAC;KACvB;IAaD,OAAO,CAAC,cAAc;IAyBtB,OAAO,CAAC,gBAAgB;IA2BxB,OAAO,CAAC,UAAU;IAyBlB,OAAO,CAAC,aAAa;IA+BrB,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,aAAa;IAyBrB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAQrB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;CAKzB"}
|