stellar-memory 0.6.0 → 0.8.0

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.
@@ -5,6 +5,8 @@
5
5
  * Usage:
6
6
  * npx stellar-memory init # Configure Claude Code + download model
7
7
  * npx stellar-memory init --skip-model # Skip embedding model download
8
+ * npx stellar-memory init --global # Register MCP globally (default)
9
+ * npx stellar-memory init --project # Register MCP in .mcp.json (project-level)
8
10
  */
9
11
  export {};
10
12
  //# sourceMappingURL=init.d.ts.map
package/dist/cli/init.js CHANGED
@@ -5,11 +5,15 @@
5
5
  * Usage:
6
6
  * npx stellar-memory init # Configure Claude Code + download model
7
7
  * npx stellar-memory init --skip-model # Skip embedding model download
8
+ * npx stellar-memory init --global # Register MCP globally (default)
9
+ * npx stellar-memory init --project # Register MCP in .mcp.json (project-level)
8
10
  */
9
11
  import { execSync, spawnSync } from 'node:child_process';
10
- import { existsSync } from 'node:fs';
11
- import { resolve, dirname } from 'node:path';
12
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
13
+ import { resolve, dirname, join } from 'node:path';
12
14
  import { fileURLToPath } from 'node:url';
15
+ import { homedir } from 'node:os';
16
+ import { createInterface } from 'node:readline';
13
17
  const __dirname = dirname(fileURLToPath(import.meta.url));
14
18
  const ROOT = resolve(__dirname, '..');
15
19
  const CYAN = '\x1b[36m';
@@ -49,32 +53,124 @@ function checkClaudeCLI() {
49
53
  return false;
50
54
  }
51
55
  }
52
- function configureMCP() {
53
- if (!checkClaudeCLI()) {
54
- warn('Claude CLI not found skipping MCP auto-configuration');
55
- log('');
56
- log(' To manually configure, add to your MCP settings:');
57
- log(` ${CYAN}claude mcp add stellar-memory -- npx -y stellar-memory${RESET}`);
58
- log('');
59
- return false;
56
+ /** Prompt user for a yes/no or choice question. Returns trimmed input. */
57
+ function prompt(question) {
58
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
59
+ return new Promise((resolve) => {
60
+ rl.question(question, (answer) => {
61
+ rl.close();
62
+ resolve(answer.trim());
63
+ });
64
+ });
65
+ }
66
+ const MCP_SERVER_CONFIG = {
67
+ command: 'npx',
68
+ args: ['-y', 'stellar-memory'],
69
+ };
70
+ /** Write MCP config to project-level .mcp.json in cwd. */
71
+ function configureMCPProject() {
72
+ const mcpPath = join(process.cwd(), '.mcp.json');
73
+ let config = {};
74
+ if (existsSync(mcpPath)) {
75
+ try {
76
+ config = JSON.parse(readFileSync(mcpPath, 'utf-8'));
77
+ }
78
+ catch {
79
+ warn('.mcp.json exists but is unreadable — overwriting');
80
+ }
60
81
  }
61
- log('');
62
- log('Configuring Claude MCP server...');
82
+ if (!config.mcpServers) {
83
+ config.mcpServers = {};
84
+ }
85
+ if (config.mcpServers['stellar-memory']) {
86
+ success('MCP already registered in .mcp.json');
87
+ return true;
88
+ }
89
+ config.mcpServers['stellar-memory'] = MCP_SERVER_CONFIG;
90
+ writeFileSync(mcpPath, JSON.stringify(config, null, 2));
91
+ success(`MCP registered in ${mcpPath}`);
92
+ log(` ${CYAN}Scope:${RESET} project-level (only this directory)`);
93
+ return true;
94
+ }
95
+ /** Write MCP config to global ~/.claude/mcp_settings.json. */
96
+ function configureMCPGlobal() {
97
+ const claudeDir = join(homedir(), '.claude');
98
+ const settingsPath = join(claudeDir, 'mcp_settings.json');
99
+ if (!existsSync(claudeDir)) {
100
+ mkdirSync(claudeDir, { recursive: true });
101
+ }
102
+ let config = {};
103
+ if (existsSync(settingsPath)) {
104
+ try {
105
+ config = JSON.parse(readFileSync(settingsPath, 'utf-8'));
106
+ }
107
+ catch {
108
+ warn('mcp_settings.json exists but is unreadable — overwriting');
109
+ }
110
+ }
111
+ if (!config.mcpServers) {
112
+ config.mcpServers = {};
113
+ }
114
+ if (config.mcpServers['stellar-memory']) {
115
+ success('MCP already registered globally (~/.claude/mcp_settings.json)');
116
+ return true;
117
+ }
118
+ config.mcpServers['stellar-memory'] = MCP_SERVER_CONFIG;
119
+ writeFileSync(settingsPath, JSON.stringify(config, null, 2));
120
+ success('MCP registered globally (~/.claude/mcp_settings.json)');
121
+ log(` ${CYAN}Scope:${RESET} all Claude Code projects`);
122
+ return true;
123
+ }
124
+ /** Try claude CLI first, then fall back to direct file editing. */
125
+ function configureMCPViaCLI(scope) {
126
+ const scopeFlag = scope === 'global' ? '--global' : '--project';
63
127
  const result = spawnSync('claude', [
64
- 'mcp', 'add', 'stellar-memory', '--', 'npx', '-y', 'stellar-memory'
128
+ 'mcp', 'add', scopeFlag, 'stellar-memory', '--', 'npx', '-y', 'stellar-memory'
65
129
  ], {
66
130
  stdio: 'inherit',
67
131
  shell: true,
68
132
  });
69
- if (result.status === 0) {
70
- success('MCP server registered with Claude');
71
- return true;
133
+ return result.status === 0;
134
+ }
135
+ async function configureMCP(args) {
136
+ log('');
137
+ log('Configuring Claude MCP server...');
138
+ // Determine scope from flags, or ask interactively
139
+ let scope;
140
+ if (args.includes('--project')) {
141
+ scope = 'project';
142
+ }
143
+ else if (args.includes('--global')) {
144
+ scope = 'global';
145
+ }
146
+ else if (!process.stdin.isTTY) {
147
+ // Non-interactive (e.g. piped) — default to global
148
+ scope = 'global';
149
+ log(` ${CYAN}Defaulting to global MCP registration (non-interactive mode)${RESET}`);
72
150
  }
73
151
  else {
74
- warn('MCP auto-configuration failed');
75
- log(' You can manually run:');
76
- log(` ${CYAN}claude mcp add stellar-memory -- npx -y stellar-memory${RESET}`);
77
- return false;
152
+ log('');
153
+ log(' Where should Stellar Memory be registered?');
154
+ log(` ${CYAN}[1]${RESET} Global available in all Claude Code projects ${BOLD}(recommended)${RESET}`);
155
+ log(` ${CYAN}[2]${RESET} Project — only this directory (.mcp.json)`);
156
+ log('');
157
+ const answer = await prompt(' Enter 1 or 2 [1]: ');
158
+ scope = answer === '2' ? 'project' : 'global';
159
+ }
160
+ // Try claude CLI if available (it handles edge cases better)
161
+ if (checkClaudeCLI()) {
162
+ if (configureMCPViaCLI(scope)) {
163
+ success(`MCP server registered with Claude (${scope})`);
164
+ return true;
165
+ }
166
+ warn('claude CLI registration failed — falling back to direct config edit');
167
+ }
168
+ // Direct file edit fallback
169
+ if (scope === 'project') {
170
+ return configureMCPProject();
171
+ }
172
+ else {
173
+ return configureMCPGlobal();
78
174
  }
79
175
  }
80
176
  async function downloadModel() {
@@ -144,7 +240,7 @@ async function main() {
144
240
  warn('Skipping model download (--skip-model)');
145
241
  }
146
242
  // 3. Configure MCP
147
- configureMCP();
243
+ await configureMCP(args);
148
244
  // 4. Install Claude Code hooks (auto-restore + auto-observe + auto-commit)
149
245
  const { installHooks } = await import('./hooks/install.js');
150
246
  installHooks();
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,10 @@
16
16
  * - Mark sources as consolidated and push them to the Oort cloud.
17
17
  */
18
18
  import type { Memory } from './types.js';
19
+ /** Above this similarity: treat new memory as near-duplicate → enrich existing. */
20
+ export declare const ENRICH_THRESHOLD = 0.85;
21
+ /** Above this similarity: treat new memory as exact duplicate → skip entirely. */
22
+ export declare const SKIP_THRESHOLD = 0.95;
19
23
  /**
20
24
  * Deduplicate an array of sentences using Jaccard similarity.
21
25
  *
@@ -26,6 +30,29 @@ import type { Memory } from './types.js';
26
30
  * Returns the deduplicated array of sentences in original order.
27
31
  */
28
32
  export declare function deduplicateSentences(sentences: string[]): string[];
33
+ export interface SimilarMemoryResult {
34
+ memory: Memory;
35
+ similarity: number;
36
+ /** 'skip' if similarity ≥ SKIP_THRESHOLD, 'enrich' if ≥ ENRICH_THRESHOLD */
37
+ action: 'skip' | 'enrich';
38
+ }
39
+ /**
40
+ * Check whether a candidate text is too similar to any existing memory in the
41
+ * project. Returns the most similar memory and recommended action, or null if
42
+ * no similar memory is found.
43
+ *
44
+ * Uses stored embeddings when available (fast — no model inference needed).
45
+ * Falls back to Jaccard text similarity when embeddings are absent.
46
+ *
47
+ * This is designed to be called synchronously in createMemory() using the
48
+ * pre-fetched embedding cache from the corona, so it must not do async work.
49
+ */
50
+ export declare function findSimilarMemory(project: string, candidateText: string, candidateEmbedding: Float32Array | null, excludeId?: string): SimilarMemoryResult | null;
51
+ /**
52
+ * Enrich an existing memory by merging unique sentences from new content into it.
53
+ * Returns the updated memory.
54
+ */
55
+ export declare function enrichMemory(existing: Memory, newContent: string): Memory;
29
56
  /**
30
57
  * Find groups of memories that are candidates for consolidation.
31
58
  *
@@ -15,7 +15,7 @@
15
15
  * - Create a new consolidated memory.
16
16
  * - Mark sources as consolidated and push them to the Oort cloud.
17
17
  */
18
- import { getMemoriesByProject, consolidateMemories, getConsolidationHistory, updateMemoryOrbit, insertOrbitLog, } from '../storage/queries.js';
18
+ import { getMemoriesByProject, consolidateMemories, getConsolidationHistory, updateMemoryOrbit, updateMemoryContent, insertOrbitLog, } from '../storage/queries.js';
19
19
  import { createMemory } from './planet.js';
20
20
  import { generateEmbedding } from './embedding.js';
21
21
  import { cosineSimilarity } from './gravity.js';
@@ -29,6 +29,13 @@ const SIMILARITY_THRESHOLD = 0.80; // cosine similarity cutoff for grouping
29
29
  const DISTANCE_TOLERANCE = 3.0; // AU — memories must be within ±3 AU
30
30
  const OORT_DISTANCE = 95.0; // source memories are pushed here post-merge
31
31
  const JACCARD_DEDUP_THRESHOLD = 0.70; // sentence deduplication cutoff
32
+ // ---------------------------------------------------------------------------
33
+ // Pre-save dedup thresholds
34
+ // ---------------------------------------------------------------------------
35
+ /** Above this similarity: treat new memory as near-duplicate → enrich existing. */
36
+ export const ENRICH_THRESHOLD = 0.85;
37
+ /** Above this similarity: treat new memory as exact duplicate → skip entirely. */
38
+ export const SKIP_THRESHOLD = 0.95;
32
39
  // Type priority for choosing the merged memory's type (higher = more important)
33
40
  const TYPE_PRIORITY = {
34
41
  decision: 6,
@@ -141,6 +148,76 @@ function textSimilarity(a, b) {
141
148
  const tokensB = tokenizeToSet(b.content + ' ' + b.summary);
142
149
  return jaccardSimilarity(tokensA, tokensB);
143
150
  }
151
+ /**
152
+ * Check whether a candidate text is too similar to any existing memory in the
153
+ * project. Returns the most similar memory and recommended action, or null if
154
+ * no similar memory is found.
155
+ *
156
+ * Uses stored embeddings when available (fast — no model inference needed).
157
+ * Falls back to Jaccard text similarity when embeddings are absent.
158
+ *
159
+ * This is designed to be called synchronously in createMemory() using the
160
+ * pre-fetched embedding cache from the corona, so it must not do async work.
161
+ */
162
+ export function findSimilarMemory(project, candidateText, candidateEmbedding, excludeId) {
163
+ const existing = getMemoriesByProject(project).filter(m => !m.consolidated_into && !m.deleted_at && m.id !== excludeId);
164
+ if (existing.length === 0)
165
+ return null;
166
+ const candidateTokens = candidateEmbedding === null
167
+ ? tokenizeToSet(candidateText)
168
+ : null;
169
+ let bestMemory = null;
170
+ let bestSim = 0;
171
+ for (const m of existing) {
172
+ let sim;
173
+ if (candidateEmbedding !== null) {
174
+ const storedEmb = getStoredEmbedding(m.id);
175
+ if (storedEmb) {
176
+ sim = cosineSimilarity(candidateEmbedding, storedEmb);
177
+ }
178
+ else {
179
+ // Fallback: text similarity
180
+ const mTokens = tokenizeToSet(m.content + ' ' + m.summary);
181
+ sim = jaccardSimilarity(candidateTokens, mTokens);
182
+ }
183
+ }
184
+ else {
185
+ const mTokens = tokenizeToSet(m.content + ' ' + m.summary);
186
+ sim = jaccardSimilarity(candidateTokens, mTokens);
187
+ }
188
+ if (sim > bestSim) {
189
+ bestSim = sim;
190
+ bestMemory = m;
191
+ }
192
+ }
193
+ if (!bestMemory || bestSim < ENRICH_THRESHOLD)
194
+ return null;
195
+ return {
196
+ memory: bestMemory,
197
+ similarity: bestSim,
198
+ action: bestSim >= SKIP_THRESHOLD ? 'skip' : 'enrich',
199
+ };
200
+ }
201
+ /**
202
+ * Enrich an existing memory by merging unique sentences from new content into it.
203
+ * Returns the updated memory.
204
+ */
205
+ export function enrichMemory(existing, newContent) {
206
+ const existingSentences = splitIntoSentences(existing.content);
207
+ const newSentences = splitIntoSentences(newContent);
208
+ const combined = deduplicateSentences([...existingSentences, ...newSentences]);
209
+ const mergedContent = combined.join(' ');
210
+ // Only update if the merged content is actually richer
211
+ if (mergedContent === existing.content)
212
+ return existing;
213
+ updateMemoryContent(existing.id, mergedContent);
214
+ log.debug('Enriched existing memory with new content', {
215
+ id: existing.id,
216
+ before: existing.content.length,
217
+ after: mergedContent.length,
218
+ });
219
+ return { ...existing, content: mergedContent };
220
+ }
144
221
  // ---------------------------------------------------------------------------
145
222
  // Candidate finding
146
223
  // ---------------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"consolidation.js","sourceRoot":"","sources":["../../src/engine/consolidation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"consolidation.js","sourceRoot":"","sources":["../../src/engine/consolidation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * content-weight.ts — Content-Based Value Evaluation
3
+ *
4
+ * Produces a multiplier in [0, 1] that reflects how *valuable* a memory's
5
+ * content is, independent of how recent or frequently accessed it is.
6
+ *
7
+ * Two signals are combined:
8
+ * - scope_multiplier : how broad / well-connected the memory is
9
+ * - reversibility_bonus: penalty/bonus based on how hard the decision is to undo
10
+ *
11
+ * The final value is clamped to [0, 1].
12
+ */
13
+ import type { MemoryType } from './types.js';
14
+ /**
15
+ * Calculate a content-based weight for a memory.
16
+ *
17
+ * Returns a value in [0, 1].
18
+ *
19
+ * @param content - Memory content text
20
+ * @param type - MemoryType (decision, observation, etc.)
21
+ * @param memoryId - Optional: used to look up constellation edge count
22
+ */
23
+ export declare function calculateContentWeight(content: string, type: MemoryType, memoryId?: string): number;
24
+ //# sourceMappingURL=content-weight.d.ts.map
@@ -0,0 +1,94 @@
1
+ /**
2
+ * content-weight.ts — Content-Based Value Evaluation
3
+ *
4
+ * Produces a multiplier in [0, 1] that reflects how *valuable* a memory's
5
+ * content is, independent of how recent or frequently accessed it is.
6
+ *
7
+ * Two signals are combined:
8
+ * - scope_multiplier : how broad / well-connected the memory is
9
+ * - reversibility_bonus: penalty/bonus based on how hard the decision is to undo
10
+ *
11
+ * The final value is clamped to [0, 1].
12
+ */
13
+ import { IMPACT_DEFAULTS } from './types.js';
14
+ import { getEdgeCountForMemory } from '../storage/queries.js';
15
+ // ---------------------------------------------------------------------------
16
+ // Reversibility keyword lists
17
+ // ---------------------------------------------------------------------------
18
+ const HIGH_COST_KEYWORDS = [
19
+ 'migration', 'architecture', 'database', 'schema', 'breaking',
20
+ 'infrastructure', 'security', 'authentication',
21
+ '마이그레이션', '아키텍처', '스키마', '데이터베이스', '인프라', '보안', '인증',
22
+ ];
23
+ const LOW_COST_KEYWORDS = [
24
+ 'rename', 'style', 'format', 'lint', 'typo', 'comment',
25
+ '이름변경', '포맷', '스타일', '오타', '주석',
26
+ ];
27
+ // ---------------------------------------------------------------------------
28
+ // Named entity extraction (reuse same heuristics as quality.ts)
29
+ // ---------------------------------------------------------------------------
30
+ function extractEntities(text) {
31
+ const found = [];
32
+ const camelPascal = text.match(/\b[A-Z][a-zA-Z0-9]{2,}\b|\b[a-z][a-z0-9]*[A-Z][a-zA-Z0-9]*\b/g);
33
+ if (camelPascal)
34
+ found.push(...camelPascal);
35
+ const kebabSnake = text.match(/\b[a-z][a-z0-9]*(?:[-_][a-z0-9]+){1,}\b/g);
36
+ if (kebabSnake)
37
+ found.push(...kebabSnake.filter(t => t.length > 4));
38
+ const versions = text.match(/\bv?\d+\.\d+(?:\.\d+)?(?:-[a-z0-9.]+)?\b|\^?\d+\.\d+|\~\d+\.\d+/gi);
39
+ if (versions)
40
+ found.push(...versions);
41
+ const paths = text.match(/(?:\/[\w.\-]+){2,}|(?:\.\/)[\w.\-/]+|[A-Za-z]:\\[\w.\\\-]+/g);
42
+ if (paths)
43
+ found.push(...paths);
44
+ const urls = text.match(/https?:\/\/[^\s)>"']+/g);
45
+ if (urls)
46
+ found.push(...urls);
47
+ return [...new Set(found)];
48
+ }
49
+ // ---------------------------------------------------------------------------
50
+ // Scope multiplier — how broad / well-connected is this memory?
51
+ // ---------------------------------------------------------------------------
52
+ function calculateScope(content, memoryId) {
53
+ const entityCount = extractEntities(content).length;
54
+ let referenceCount = 0;
55
+ if (memoryId) {
56
+ referenceCount = getEdgeCountForMemory(memoryId);
57
+ }
58
+ const contentLengthFactor = Math.min(1.0, content.length / 300);
59
+ const scopeRaw = 0.4 * Math.min(1, entityCount / 5) +
60
+ 0.3 * Math.min(1, referenceCount / 3) +
61
+ 0.3 * contentLengthFactor;
62
+ // Range: [0.7, 1.3]
63
+ return 0.7 + 0.6 * scopeRaw;
64
+ }
65
+ // ---------------------------------------------------------------------------
66
+ // Reversibility bonus — how costly is this change to undo?
67
+ // ---------------------------------------------------------------------------
68
+ function calculateReversibility(content) {
69
+ const lower = content.toLowerCase();
70
+ if (HIGH_COST_KEYWORDS.some(kw => lower.includes(kw)))
71
+ return 0.15;
72
+ if (LOW_COST_KEYWORDS.some(kw => lower.includes(kw)))
73
+ return -0.10;
74
+ return 0;
75
+ }
76
+ // ---------------------------------------------------------------------------
77
+ // Public API
78
+ // ---------------------------------------------------------------------------
79
+ /**
80
+ * Calculate a content-based weight for a memory.
81
+ *
82
+ * Returns a value in [0, 1].
83
+ *
84
+ * @param content - Memory content text
85
+ * @param type - MemoryType (decision, observation, etc.)
86
+ * @param memoryId - Optional: used to look up constellation edge count
87
+ */
88
+ export function calculateContentWeight(content, type, memoryId) {
89
+ const typeBase = IMPACT_DEFAULTS[type];
90
+ const scopeMultiplier = calculateScope(content, memoryId);
91
+ const reversibilityBonus = calculateReversibility(content);
92
+ return Math.max(0, Math.min(1, typeBase * scopeMultiplier + reversibilityBonus));
93
+ }
94
+ //# sourceMappingURL=content-weight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-weight.js","sourceRoot":"","sources":["../../src/engine/content-weight.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,8EAA8E;AAC9E,8BAA8B;AAC9B,8EAA8E;AAE9E,MAAM,kBAAkB,GAAG;IACzB,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU;IAC7D,gBAAgB,EAAE,UAAU,EAAE,gBAAgB;IAC9C,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI;CACrD,CAAC;AAEF,MAAM,iBAAiB,GAAG;IACxB,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS;IACtD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI;CAChC,CAAC;AAEF,8EAA8E;AAC9E,gEAAgE;AAChE,8EAA8E;AAE9E,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;IAChG,IAAI,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;IAE5C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC1E,IAAI,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAEpE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACjG,IAAI,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;IAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACxF,IAAI,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;IAEhC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAClD,IAAI,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAE9B,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED,8EAA8E;AAC9E,gEAAgE;AAChE,8EAA8E;AAE9E,SAAS,cAAc,CAAC,OAAe,EAAE,QAAiB;IACxD,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAEpD,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,QAAQ,EAAE,CAAC;QACb,cAAc,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IAEhE,MAAM,QAAQ,GACZ,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC;QAClC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,CAAC,CAAC;QACrC,GAAG,GAAG,mBAAmB,CAAC;IAE5B,oBAAoB;IACpB,OAAO,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC;AAC9B,CAAC;AAED,8EAA8E;AAC9E,2DAA2D;AAC3D,8EAA8E;AAE9E,SAAS,sBAAsB,CAAC,OAAe;IAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACnE,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC;IACnE,OAAO,CAAC,CAAC;AACX,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAAe,EACf,IAAgB,EAChB,QAAiB;IAEjB,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC1D,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAE3D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,eAAe,GAAG,kBAAkB,CAAC,CAAC,CAAC;AACnF,CAAC"}
@@ -1,10 +1,16 @@
1
1
  /**
2
- * gravity.ts — Relevance calculation (keyword + vector)
2
+ * gravity.ts — Relevance calculation (keyword + vector) and retrieval scoring
3
3
  *
4
4
  * Phase 1: keyword overlap between memory content and sun context.
5
5
  * Phase 2: cosine vector similarity + hybrid score combining both.
6
6
  *
7
- * Hybrid formula: 0.7 × vectorRelevance + 0.3 × keywordRelevance
7
+ * Hybrid formula (storage relevance): 0.7 × vectorRelevance + 0.3 × keywordRelevance
8
+ *
9
+ * Retrieval formula (search ranking):
10
+ * retrieval_score = semanticW × semantic_similarity
11
+ * + keywordW × keyword_overlap
12
+ * + proximityW × proximity_bonus
13
+ * where proximity_bonus = 1.0 - (distance / 100)
8
14
  *
9
15
  * The keyword score is retained as a fast fallback when embeddings are not
10
16
  * available (e.g., during unit tests or before the model has loaded).
@@ -60,4 +66,27 @@ export declare function vectorRelevance(memoryEmbedding: Float32Array | null | u
60
66
  * - If sunText is empty → pure vector score (if embedding available).
61
67
  */
62
68
  export declare function hybridRelevance(memoryText: string, sunText: string, memoryEmbedding: Float32Array | null | undefined, sunEmbedding: Float32Array | null | undefined): number;
69
+ /**
70
+ * Calculate retrieval score for ranking search results.
71
+ *
72
+ * Separate from storage importance — this score is computed at query time
73
+ * and reflects how well a memory matches the user's current query, biased
74
+ * toward memories that are already close (high proximity bonus).
75
+ *
76
+ * retrieval_score = semanticW × semantic_similarity
77
+ * + keywordW × keyword_overlap
78
+ * + proximityW × proximity_bonus
79
+ *
80
+ * proximity_bonus = 1.0 - clamp(distance / 100, 0, 1)
81
+ * → 1.0 for a memory at 0 AU (core), 0.0 at 100 AU (forgotten)
82
+ *
83
+ * Falls back to keyword + proximity when embeddings are absent.
84
+ *
85
+ * Weights default to 0.55 / 0.25 / 0.20 but can be overridden from config.
86
+ */
87
+ export declare function retrievalScore(memoryText: string, queryText: string, memoryDistance: number, memoryEmbedding: Float32Array | null | undefined, queryEmbedding: Float32Array | null | undefined, weights?: {
88
+ semantic: number;
89
+ keyword: number;
90
+ proximity: number;
91
+ }): number;
63
92
  //# sourceMappingURL=gravity.d.ts.map