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.
- package/dist/cli/init.d.ts +2 -0
- package/dist/cli/init.js +117 -21
- package/dist/cli/init.js.map +1 -1
- package/dist/engine/consolidation.d.ts +27 -0
- package/dist/engine/consolidation.js +78 -1
- package/dist/engine/consolidation.js.map +1 -1
- package/dist/engine/content-weight.d.ts +24 -0
- package/dist/engine/content-weight.js +94 -0
- package/dist/engine/content-weight.js.map +1 -0
- package/dist/engine/gravity.d.ts +31 -2
- package/dist/engine/gravity.js +52 -3
- package/dist/engine/gravity.js.map +1 -1
- package/dist/engine/orbit.d.ts +39 -41
- package/dist/engine/orbit.js +96 -76
- package/dist/engine/orbit.js.map +1 -1
- package/dist/engine/planet.js +89 -11
- package/dist/engine/planet.js.map +1 -1
- package/dist/engine/types.d.ts +12 -0
- package/dist/mcp/server.d.ts +2 -0
- package/dist/mcp/server.js +50 -19
- package/dist/mcp/server.js.map +1 -1
- package/dist/service/scheduler.d.ts +1 -1
- package/dist/service/scheduler.js +1 -1
- package/dist/service/scheduler.js.map +1 -1
- package/dist/storage/queries.d.ts +2 -0
- package/dist/storage/queries.js +15 -0
- package/dist/storage/queries.js.map +1 -1
- package/dist/utils/config.js +10 -1
- package/dist/utils/config.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/init.d.ts
CHANGED
|
@@ -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
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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
|
-
|
|
62
|
-
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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
|
-
|
|
75
|
-
log('
|
|
76
|
-
log(` ${CYAN}
|
|
77
|
-
|
|
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();
|
package/dist/cli/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":";AACA
|
|
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":"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"}
|
package/dist/engine/gravity.d.ts
CHANGED
|
@@ -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
|