stellar-memory 0.5.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/LICENSE +21 -0
- package/README.md +362 -0
- package/dist/api/routes/analytics.d.ts +15 -0
- package/dist/api/routes/analytics.js +131 -0
- package/dist/api/routes/analytics.js.map +1 -0
- package/dist/api/routes/conflicts.d.ts +12 -0
- package/dist/api/routes/conflicts.js +67 -0
- package/dist/api/routes/conflicts.js.map +1 -0
- package/dist/api/routes/consolidation.d.ts +11 -0
- package/dist/api/routes/consolidation.js +63 -0
- package/dist/api/routes/consolidation.js.map +1 -0
- package/dist/api/routes/constellation.d.ts +4 -0
- package/dist/api/routes/constellation.js +84 -0
- package/dist/api/routes/constellation.js.map +1 -0
- package/dist/api/routes/memories.d.ts +4 -0
- package/dist/api/routes/memories.js +219 -0
- package/dist/api/routes/memories.js.map +1 -0
- package/dist/api/routes/observations.d.ts +10 -0
- package/dist/api/routes/observations.js +42 -0
- package/dist/api/routes/observations.js.map +1 -0
- package/dist/api/routes/orbit.d.ts +4 -0
- package/dist/api/routes/orbit.js +71 -0
- package/dist/api/routes/orbit.js.map +1 -0
- package/dist/api/routes/projects.d.ts +15 -0
- package/dist/api/routes/projects.js +121 -0
- package/dist/api/routes/projects.js.map +1 -0
- package/dist/api/routes/scan.d.ts +4 -0
- package/dist/api/routes/scan.js +403 -0
- package/dist/api/routes/scan.js.map +1 -0
- package/dist/api/routes/sun.d.ts +4 -0
- package/dist/api/routes/sun.js +43 -0
- package/dist/api/routes/sun.js.map +1 -0
- package/dist/api/routes/system.d.ts +4 -0
- package/dist/api/routes/system.js +70 -0
- package/dist/api/routes/system.js.map +1 -0
- package/dist/api/routes/temporal.d.ts +13 -0
- package/dist/api/routes/temporal.js +82 -0
- package/dist/api/routes/temporal.js.map +1 -0
- package/dist/api/server.d.ts +2 -0
- package/dist/api/server.js +99 -0
- package/dist/api/server.js.map +1 -0
- package/dist/api/websocket.d.ts +53 -0
- package/dist/api/websocket.js +168 -0
- package/dist/api/websocket.js.map +1 -0
- package/dist/cli/index.d.ts +12 -0
- package/dist/cli/index.js +35 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init.d.ts +10 -0
- package/dist/cli/init.js +163 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/engine/analytics.d.ts +93 -0
- package/dist/engine/analytics.js +437 -0
- package/dist/engine/analytics.js.map +1 -0
- package/dist/engine/conflict.d.ts +54 -0
- package/dist/engine/conflict.js +322 -0
- package/dist/engine/conflict.js.map +1 -0
- package/dist/engine/consolidation.d.ts +83 -0
- package/dist/engine/consolidation.js +368 -0
- package/dist/engine/consolidation.js.map +1 -0
- package/dist/engine/constellation.d.ts +66 -0
- package/dist/engine/constellation.js +382 -0
- package/dist/engine/constellation.js.map +1 -0
- package/dist/engine/corona.d.ts +53 -0
- package/dist/engine/corona.js +181 -0
- package/dist/engine/corona.js.map +1 -0
- package/dist/engine/embedding.d.ts +44 -0
- package/dist/engine/embedding.js +168 -0
- package/dist/engine/embedding.js.map +1 -0
- package/dist/engine/gravity.d.ts +63 -0
- package/dist/engine/gravity.js +121 -0
- package/dist/engine/gravity.js.map +1 -0
- package/dist/engine/multiproject.d.ts +75 -0
- package/dist/engine/multiproject.js +241 -0
- package/dist/engine/multiproject.js.map +1 -0
- package/dist/engine/observation.d.ts +82 -0
- package/dist/engine/observation.js +357 -0
- package/dist/engine/observation.js.map +1 -0
- package/dist/engine/orbit.d.ts +91 -0
- package/dist/engine/orbit.js +249 -0
- package/dist/engine/orbit.js.map +1 -0
- package/dist/engine/planet.d.ts +64 -0
- package/dist/engine/planet.js +432 -0
- package/dist/engine/planet.js.map +1 -0
- package/dist/engine/procedural.d.ts +71 -0
- package/dist/engine/procedural.js +259 -0
- package/dist/engine/procedural.js.map +1 -0
- package/dist/engine/quality.d.ts +48 -0
- package/dist/engine/quality.js +245 -0
- package/dist/engine/quality.js.map +1 -0
- package/dist/engine/repository.d.ts +79 -0
- package/dist/engine/repository.js +13 -0
- package/dist/engine/repository.js.map +1 -0
- package/dist/engine/sun.d.ts +61 -0
- package/dist/engine/sun.js +240 -0
- package/dist/engine/sun.js.map +1 -0
- package/dist/engine/temporal.d.ts +67 -0
- package/dist/engine/temporal.js +283 -0
- package/dist/engine/temporal.js.map +1 -0
- package/dist/engine/types.d.ts +179 -0
- package/dist/engine/types.js +27 -0
- package/dist/engine/types.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +60 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/connector-registry.d.ts +20 -0
- package/dist/mcp/connector-registry.js +35 -0
- package/dist/mcp/connector-registry.js.map +1 -0
- package/dist/mcp/server.d.ts +13 -0
- package/dist/mcp/server.js +242 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools/daemon-tool.d.ts +16 -0
- package/dist/mcp/tools/daemon-tool.js +58 -0
- package/dist/mcp/tools/daemon-tool.js.map +1 -0
- package/dist/mcp/tools/ingestion-tools.d.ts +20 -0
- package/dist/mcp/tools/ingestion-tools.js +34 -0
- package/dist/mcp/tools/ingestion-tools.js.map +1 -0
- package/dist/mcp/tools/memory-tools.d.ts +122 -0
- package/dist/mcp/tools/memory-tools.js +1037 -0
- package/dist/mcp/tools/memory-tools.js.map +1 -0
- package/dist/scanner/cloud/github.d.ts +34 -0
- package/dist/scanner/cloud/github.js +260 -0
- package/dist/scanner/cloud/github.js.map +1 -0
- package/dist/scanner/cloud/google-drive.d.ts +30 -0
- package/dist/scanner/cloud/google-drive.js +289 -0
- package/dist/scanner/cloud/google-drive.js.map +1 -0
- package/dist/scanner/cloud/notion.d.ts +33 -0
- package/dist/scanner/cloud/notion.js +231 -0
- package/dist/scanner/cloud/notion.js.map +1 -0
- package/dist/scanner/cloud/slack.d.ts +38 -0
- package/dist/scanner/cloud/slack.js +282 -0
- package/dist/scanner/cloud/slack.js.map +1 -0
- package/dist/scanner/cloud/types.d.ts +73 -0
- package/dist/scanner/cloud/types.js +9 -0
- package/dist/scanner/cloud/types.js.map +1 -0
- package/dist/scanner/index.d.ts +35 -0
- package/dist/scanner/index.js +420 -0
- package/dist/scanner/index.js.map +1 -0
- package/dist/scanner/local/filesystem.d.ts +33 -0
- package/dist/scanner/local/filesystem.js +203 -0
- package/dist/scanner/local/filesystem.js.map +1 -0
- package/dist/scanner/local/git.d.ts +24 -0
- package/dist/scanner/local/git.js +161 -0
- package/dist/scanner/local/git.js.map +1 -0
- package/dist/scanner/local/parsers/code.d.ts +3 -0
- package/dist/scanner/local/parsers/code.js +127 -0
- package/dist/scanner/local/parsers/code.js.map +1 -0
- package/dist/scanner/local/parsers/index.d.ts +11 -0
- package/dist/scanner/local/parsers/index.js +24 -0
- package/dist/scanner/local/parsers/index.js.map +1 -0
- package/dist/scanner/local/parsers/json-parser.d.ts +3 -0
- package/dist/scanner/local/parsers/json-parser.js +117 -0
- package/dist/scanner/local/parsers/json-parser.js.map +1 -0
- package/dist/scanner/local/parsers/markdown.d.ts +3 -0
- package/dist/scanner/local/parsers/markdown.js +120 -0
- package/dist/scanner/local/parsers/markdown.js.map +1 -0
- package/dist/scanner/local/parsers/text.d.ts +3 -0
- package/dist/scanner/local/parsers/text.js +41 -0
- package/dist/scanner/local/parsers/text.js.map +1 -0
- package/dist/scanner/metadata-scanner.d.ts +67 -0
- package/dist/scanner/metadata-scanner.js +356 -0
- package/dist/scanner/metadata-scanner.js.map +1 -0
- package/dist/scanner/types.d.ts +47 -0
- package/dist/scanner/types.js +19 -0
- package/dist/scanner/types.js.map +1 -0
- package/dist/service/daemon.d.ts +23 -0
- package/dist/service/daemon.js +105 -0
- package/dist/service/daemon.js.map +1 -0
- package/dist/service/scheduler.d.ts +73 -0
- package/dist/service/scheduler.js +281 -0
- package/dist/service/scheduler.js.map +1 -0
- package/dist/storage/database.d.ts +10 -0
- package/dist/storage/database.js +265 -0
- package/dist/storage/database.js.map +1 -0
- package/dist/storage/queries.d.ts +85 -0
- package/dist/storage/queries.js +865 -0
- package/dist/storage/queries.js.map +1 -0
- package/dist/storage/sqlite-repository.d.ts +32 -0
- package/dist/storage/sqlite-repository.js +68 -0
- package/dist/storage/sqlite-repository.js.map +1 -0
- package/dist/storage/vec.d.ts +62 -0
- package/dist/storage/vec.js +111 -0
- package/dist/storage/vec.js.map +1 -0
- package/dist/utils/config.d.ts +5 -0
- package/dist/utils/config.js +60 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/logger.d.ts +36 -0
- package/dist/utils/logger.js +86 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/time.d.ts +21 -0
- package/dist/utils/time.js +42 -0
- package/dist/utils/time.js.map +1 -0
- package/dist/utils/tokenizer.d.ts +13 -0
- package/dist/utils/tokenizer.js +46 -0
- package/dist/utils/tokenizer.js.map +1 -0
- package/package.json +77 -0
- package/scripts/check-node.mjs +36 -0
- package/scripts/setup.mjs +157 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/storage/queries.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* storage/sqlite-repository.ts — SQLite implementation of MemoryRepository.
|
|
3
|
+
*
|
|
4
|
+
* This adapter wraps the existing queries.ts functions and satisfies the
|
|
5
|
+
* MemoryRepository interface defined in engine/repository.ts.
|
|
6
|
+
*
|
|
7
|
+
* Design notes:
|
|
8
|
+
* - No business logic lives here; all logic stays in the engine layer.
|
|
9
|
+
* - queries.ts functions return `null` for "not found"; we translate to
|
|
10
|
+
* `undefined` to match the interface contract (null is an implementation detail).
|
|
11
|
+
* - This file is the ONLY place in the storage layer that knows about the
|
|
12
|
+
* MemoryRepository interface — other storage files remain unchanged.
|
|
13
|
+
*/
|
|
14
|
+
import type { Memory, SunState, OrbitChange } from '../engine/types.js';
|
|
15
|
+
import type { MemoryRepository, InsertMemoryData } from '../engine/repository.js';
|
|
16
|
+
export declare class SqliteMemoryRepository implements MemoryRepository {
|
|
17
|
+
insert(data: InsertMemoryData): Memory;
|
|
18
|
+
getById(id: string): Memory | undefined;
|
|
19
|
+
getByIds(ids: string[]): Memory[];
|
|
20
|
+
getByProject(project: string): Memory[];
|
|
21
|
+
getByContentHash(project: string, hash: string): Memory | undefined;
|
|
22
|
+
search(project: string, query: string, limit: number): Memory[];
|
|
23
|
+
updateAccess(id: string): void;
|
|
24
|
+
updateOrbit(id: string, distance: number, importance: number, velocity: number): void;
|
|
25
|
+
softDelete(id: string): void;
|
|
26
|
+
getNearestMemories(project: string, limit: number): Memory[];
|
|
27
|
+
getSunState(project: string): SunState | undefined;
|
|
28
|
+
upsertSunState(state: SunState): void;
|
|
29
|
+
insertOrbitLog(change: OrbitChange): void;
|
|
30
|
+
cleanupOrbitLog(daysOld: number): void;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=sqlite-repository.d.ts.map
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* storage/sqlite-repository.ts — SQLite implementation of MemoryRepository.
|
|
3
|
+
*
|
|
4
|
+
* This adapter wraps the existing queries.ts functions and satisfies the
|
|
5
|
+
* MemoryRepository interface defined in engine/repository.ts.
|
|
6
|
+
*
|
|
7
|
+
* Design notes:
|
|
8
|
+
* - No business logic lives here; all logic stays in the engine layer.
|
|
9
|
+
* - queries.ts functions return `null` for "not found"; we translate to
|
|
10
|
+
* `undefined` to match the interface contract (null is an implementation detail).
|
|
11
|
+
* - This file is the ONLY place in the storage layer that knows about the
|
|
12
|
+
* MemoryRepository interface — other storage files remain unchanged.
|
|
13
|
+
*/
|
|
14
|
+
import { insertMemory, getMemoryById, getMemoryByIds, getMemoriesByProject, getMemoryByContentHash, searchMemories, updateMemoryAccess, updateMemoryOrbit, softDeleteMemory, getNearestMemories as queryGetNearestMemories, getSunState as queryGetSunState, upsertSunState as queryUpsertSunState, insertOrbitLog as queryInsertOrbitLog, cleanupOrbitLog as queryCleanupOrbitLog, } from './queries.js';
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
// SqliteMemoryRepository
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
export class SqliteMemoryRepository {
|
|
19
|
+
// ── Memory CRUD ────────────────────────────────────────────────────────────
|
|
20
|
+
insert(data) {
|
|
21
|
+
return insertMemory(data);
|
|
22
|
+
}
|
|
23
|
+
getById(id) {
|
|
24
|
+
return getMemoryById(id) ?? undefined;
|
|
25
|
+
}
|
|
26
|
+
getByIds(ids) {
|
|
27
|
+
return getMemoryByIds(ids);
|
|
28
|
+
}
|
|
29
|
+
getByProject(project) {
|
|
30
|
+
return getMemoriesByProject(project);
|
|
31
|
+
}
|
|
32
|
+
getByContentHash(project, hash) {
|
|
33
|
+
return getMemoryByContentHash(project, hash) ?? undefined;
|
|
34
|
+
}
|
|
35
|
+
// ── Search ─────────────────────────────────────────────────────────────────
|
|
36
|
+
search(project, query, limit) {
|
|
37
|
+
return searchMemories(project, query, limit);
|
|
38
|
+
}
|
|
39
|
+
// ── Orbit / access updates ─────────────────────────────────────────────────
|
|
40
|
+
updateAccess(id) {
|
|
41
|
+
updateMemoryAccess(id);
|
|
42
|
+
}
|
|
43
|
+
updateOrbit(id, distance, importance, velocity) {
|
|
44
|
+
updateMemoryOrbit(id, distance, importance, velocity);
|
|
45
|
+
}
|
|
46
|
+
softDelete(id) {
|
|
47
|
+
softDeleteMemory(id);
|
|
48
|
+
}
|
|
49
|
+
// ── Nearest memories ───────────────────────────────────────────────────────
|
|
50
|
+
getNearestMemories(project, limit) {
|
|
51
|
+
return queryGetNearestMemories(project, limit);
|
|
52
|
+
}
|
|
53
|
+
// ── Sun state ──────────────────────────────────────────────────────────────
|
|
54
|
+
getSunState(project) {
|
|
55
|
+
return queryGetSunState(project) ?? undefined;
|
|
56
|
+
}
|
|
57
|
+
upsertSunState(state) {
|
|
58
|
+
queryUpsertSunState(state);
|
|
59
|
+
}
|
|
60
|
+
// ── Orbit log ──────────────────────────────────────────────────────────────
|
|
61
|
+
insertOrbitLog(change) {
|
|
62
|
+
queryInsertOrbitLog(change);
|
|
63
|
+
}
|
|
64
|
+
cleanupOrbitLog(daysOld) {
|
|
65
|
+
queryCleanupOrbitLog(daysOld);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=sqlite-repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-repository.js","sourceRoot":"","sources":["../../src/storage/sqlite-repository.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EACL,YAAY,EACZ,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,IAAI,uBAAuB,EAC7C,WAAW,IAAI,gBAAgB,EAC/B,cAAc,IAAI,mBAAmB,EACrC,cAAc,IAAI,mBAAmB,EACrC,eAAe,IAAI,oBAAoB,GACxC,MAAM,cAAc,CAAC;AAEtB,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E,MAAM,OAAO,sBAAsB;IACjC,8EAA8E;IAE9E,MAAM,CAAC,IAAsB;QAC3B,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,CAAC,EAAU;QAChB,OAAO,aAAa,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC;IACxC,CAAC;IAED,QAAQ,CAAC,GAAa;QACpB,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,YAAY,CAAC,OAAe;QAC1B,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,gBAAgB,CAAC,OAAe,EAAE,IAAY;QAC5C,OAAO,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,SAAS,CAAC;IAC5D,CAAC;IAED,8EAA8E;IAE9E,MAAM,CAAC,OAAe,EAAE,KAAa,EAAE,KAAa;QAClD,OAAO,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,8EAA8E;IAE9E,YAAY,CAAC,EAAU;QACrB,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC;IAED,WAAW,CAAC,EAAU,EAAE,QAAgB,EAAE,UAAkB,EAAE,QAAgB;QAC5E,iBAAiB,CAAC,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,UAAU,CAAC,EAAU;QACnB,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC;IAED,8EAA8E;IAE9E,kBAAkB,CAAC,OAAe,EAAE,KAAa;QAC/C,OAAO,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,8EAA8E;IAE9E,WAAW,CAAC,OAAe;QACzB,OAAO,gBAAgB,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC;IAChD,CAAC;IAED,cAAc,CAAC,KAAe;QAC5B,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,8EAA8E;IAE9E,cAAc,CAAC,MAAmB;QAChC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,eAAe,CAAC,OAAe;QAC7B,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;CACF"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vec.ts — sqlite-vec integration for vector similarity search
|
|
3
|
+
*
|
|
4
|
+
* Provides a thin layer over the sqlite-vec extension:
|
|
5
|
+
* - loadVecExtension : load sqlite-vec into an existing DatabaseSync instance
|
|
6
|
+
* - createVecTable : create the virtual table + companion mapping table
|
|
7
|
+
* - insertEmbedding : store a float32 embedding for a memory_id
|
|
8
|
+
* - searchByVector : KNN search returning (memory_id, distance) pairs
|
|
9
|
+
* - deleteEmbedding : remove an embedding by memory_id
|
|
10
|
+
*
|
|
11
|
+
* Schema design
|
|
12
|
+
* ─────────────
|
|
13
|
+
* sqlite-vec's vec0 virtual table requires an INTEGER rowid as its primary
|
|
14
|
+
* key. Memory IDs in this project are UUIDs (TEXT), so we maintain a
|
|
15
|
+
* companion table `memory_embedding_map` that maps each memory_id to the
|
|
16
|
+
* integer rowid assigned by vec0.
|
|
17
|
+
*
|
|
18
|
+
* Insertion flow:
|
|
19
|
+
* 1. INSERT into memory_embeddings (vec0) → get auto-assigned rowid
|
|
20
|
+
* 2. INSERT into memory_embedding_map (memory_id → rowid)
|
|
21
|
+
*
|
|
22
|
+
* Search flow:
|
|
23
|
+
* 1. KNN subquery on memory_embeddings with LIMIT
|
|
24
|
+
* 2. JOIN back to memory_embedding_map to recover memory_id
|
|
25
|
+
*/
|
|
26
|
+
import type { DatabaseSync } from 'node:sqlite';
|
|
27
|
+
/**
|
|
28
|
+
* Load the sqlite-vec extension into an open DatabaseSync connection.
|
|
29
|
+
* Must be called once per connection before any vec0 operations.
|
|
30
|
+
* The db must have been opened with `allowExtension: true`.
|
|
31
|
+
*/
|
|
32
|
+
export declare function loadVecExtension(db: DatabaseSync): void;
|
|
33
|
+
/**
|
|
34
|
+
* SQL DDL for the embedding tables.
|
|
35
|
+
* Called from database.ts as part of the main DDL block.
|
|
36
|
+
*/
|
|
37
|
+
export declare const VEC_DDL = "\n-- Companion table: maps TEXT memory_id to the INTEGER rowid used by vec0\nCREATE TABLE IF NOT EXISTS memory_embedding_map (\n memory_id TEXT PRIMARY KEY,\n vec_rowid INTEGER NOT NULL\n);\n\n-- vec0 virtual table for 384-dim float32 embeddings (all-MiniLM-L6-v2)\nCREATE VIRTUAL TABLE IF NOT EXISTS memory_embeddings USING vec0(\n embedding float[384]\n);\n";
|
|
38
|
+
export interface VectorSearchResult {
|
|
39
|
+
memoryId: string;
|
|
40
|
+
distance: number;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Store an embedding for a memory.
|
|
44
|
+
*
|
|
45
|
+
* If the memory already has an embedding, it is replaced (delete + insert).
|
|
46
|
+
* Returns the vec0 rowid assigned to this embedding.
|
|
47
|
+
*/
|
|
48
|
+
export declare function insertEmbedding(db: DatabaseSync, memoryId: string, embedding: Float32Array): number;
|
|
49
|
+
/**
|
|
50
|
+
* KNN search: return the top-k memories closest to the query embedding.
|
|
51
|
+
*
|
|
52
|
+
* sqlite-vec requires a LIMIT clause in the WHERE … MATCH subquery.
|
|
53
|
+
* We use a subquery-then-join pattern to keep the LIMIT inside the
|
|
54
|
+
* vec0 scan while still resolving memory_id from the companion table.
|
|
55
|
+
*/
|
|
56
|
+
export declare function searchByVector(db: DatabaseSync, queryEmbedding: Float32Array, limit?: number): VectorSearchResult[];
|
|
57
|
+
/**
|
|
58
|
+
* Delete the embedding for a memory (if it exists).
|
|
59
|
+
* Called before re-inserting to implement upsert semantics.
|
|
60
|
+
*/
|
|
61
|
+
export declare function deleteEmbedding(db: DatabaseSync, memoryId: string): void;
|
|
62
|
+
//# sourceMappingURL=vec.d.ts.map
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vec.ts — sqlite-vec integration for vector similarity search
|
|
3
|
+
*
|
|
4
|
+
* Provides a thin layer over the sqlite-vec extension:
|
|
5
|
+
* - loadVecExtension : load sqlite-vec into an existing DatabaseSync instance
|
|
6
|
+
* - createVecTable : create the virtual table + companion mapping table
|
|
7
|
+
* - insertEmbedding : store a float32 embedding for a memory_id
|
|
8
|
+
* - searchByVector : KNN search returning (memory_id, distance) pairs
|
|
9
|
+
* - deleteEmbedding : remove an embedding by memory_id
|
|
10
|
+
*
|
|
11
|
+
* Schema design
|
|
12
|
+
* ─────────────
|
|
13
|
+
* sqlite-vec's vec0 virtual table requires an INTEGER rowid as its primary
|
|
14
|
+
* key. Memory IDs in this project are UUIDs (TEXT), so we maintain a
|
|
15
|
+
* companion table `memory_embedding_map` that maps each memory_id to the
|
|
16
|
+
* integer rowid assigned by vec0.
|
|
17
|
+
*
|
|
18
|
+
* Insertion flow:
|
|
19
|
+
* 1. INSERT into memory_embeddings (vec0) → get auto-assigned rowid
|
|
20
|
+
* 2. INSERT into memory_embedding_map (memory_id → rowid)
|
|
21
|
+
*
|
|
22
|
+
* Search flow:
|
|
23
|
+
* 1. KNN subquery on memory_embeddings with LIMIT
|
|
24
|
+
* 2. JOIN back to memory_embedding_map to recover memory_id
|
|
25
|
+
*/
|
|
26
|
+
import * as sqliteVec from 'sqlite-vec';
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
// Extension loading
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
/**
|
|
31
|
+
* Load the sqlite-vec extension into an open DatabaseSync connection.
|
|
32
|
+
* Must be called once per connection before any vec0 operations.
|
|
33
|
+
* The db must have been opened with `allowExtension: true`.
|
|
34
|
+
*/
|
|
35
|
+
export function loadVecExtension(db) {
|
|
36
|
+
// sqlite-vec's load() calls db.loadExtension() internally.
|
|
37
|
+
// The cast is needed because the package types expect its own Db interface.
|
|
38
|
+
sqliteVec.load(db);
|
|
39
|
+
}
|
|
40
|
+
// ---------------------------------------------------------------------------
|
|
41
|
+
// DDL helpers
|
|
42
|
+
// ---------------------------------------------------------------------------
|
|
43
|
+
const EMBEDDING_DIM = 384; // all-MiniLM-L6-v2 output dimension
|
|
44
|
+
/**
|
|
45
|
+
* SQL DDL for the embedding tables.
|
|
46
|
+
* Called from database.ts as part of the main DDL block.
|
|
47
|
+
*/
|
|
48
|
+
export const VEC_DDL = `
|
|
49
|
+
-- Companion table: maps TEXT memory_id to the INTEGER rowid used by vec0
|
|
50
|
+
CREATE TABLE IF NOT EXISTS memory_embedding_map (
|
|
51
|
+
memory_id TEXT PRIMARY KEY,
|
|
52
|
+
vec_rowid INTEGER NOT NULL
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
-- vec0 virtual table for 384-dim float32 embeddings (all-MiniLM-L6-v2)
|
|
56
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS memory_embeddings USING vec0(
|
|
57
|
+
embedding float[${EMBEDDING_DIM}]
|
|
58
|
+
);
|
|
59
|
+
`;
|
|
60
|
+
/**
|
|
61
|
+
* Store an embedding for a memory.
|
|
62
|
+
*
|
|
63
|
+
* If the memory already has an embedding, it is replaced (delete + insert).
|
|
64
|
+
* Returns the vec0 rowid assigned to this embedding.
|
|
65
|
+
*/
|
|
66
|
+
export function insertEmbedding(db, memoryId, embedding) {
|
|
67
|
+
// Remove existing embedding if present (idempotent upsert)
|
|
68
|
+
deleteEmbedding(db, memoryId);
|
|
69
|
+
// Insert the float32 vector into vec0 (Float32Array passed directly)
|
|
70
|
+
const res = db.prepare('INSERT INTO memory_embeddings(embedding) VALUES (?)').run(embedding);
|
|
71
|
+
const vecRowid = res.lastInsertRowid;
|
|
72
|
+
// Record the memory_id → rowid mapping
|
|
73
|
+
db.prepare('INSERT INTO memory_embedding_map(memory_id, vec_rowid) VALUES (?, ?)').run(memoryId, vecRowid);
|
|
74
|
+
return vecRowid;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* KNN search: return the top-k memories closest to the query embedding.
|
|
78
|
+
*
|
|
79
|
+
* sqlite-vec requires a LIMIT clause in the WHERE … MATCH subquery.
|
|
80
|
+
* We use a subquery-then-join pattern to keep the LIMIT inside the
|
|
81
|
+
* vec0 scan while still resolving memory_id from the companion table.
|
|
82
|
+
*/
|
|
83
|
+
export function searchByVector(db, queryEmbedding, limit = 20) {
|
|
84
|
+
const rows = db.prepare(`
|
|
85
|
+
SELECT m.memory_id, knn.distance
|
|
86
|
+
FROM (
|
|
87
|
+
SELECT rowid, distance
|
|
88
|
+
FROM memory_embeddings
|
|
89
|
+
WHERE embedding MATCH ?
|
|
90
|
+
ORDER BY distance
|
|
91
|
+
LIMIT ?
|
|
92
|
+
) knn
|
|
93
|
+
JOIN memory_embedding_map m ON knn.rowid = m.vec_rowid
|
|
94
|
+
ORDER BY knn.distance
|
|
95
|
+
`).all(queryEmbedding, limit);
|
|
96
|
+
return rows.map(r => ({ memoryId: r.memory_id, distance: r.distance }));
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Delete the embedding for a memory (if it exists).
|
|
100
|
+
* Called before re-inserting to implement upsert semantics.
|
|
101
|
+
*/
|
|
102
|
+
export function deleteEmbedding(db, memoryId) {
|
|
103
|
+
// Look up the vec0 rowid for this memory
|
|
104
|
+
const row = db.prepare('SELECT vec_rowid FROM memory_embedding_map WHERE memory_id = ?').get(memoryId);
|
|
105
|
+
if (!row)
|
|
106
|
+
return;
|
|
107
|
+
// Delete from both tables
|
|
108
|
+
db.prepare('DELETE FROM memory_embeddings WHERE rowid = ?').run(row.vec_rowid);
|
|
109
|
+
db.prepare('DELETE FROM memory_embedding_map WHERE memory_id = ?').run(memoryId);
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=vec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vec.js","sourceRoot":"","sources":["../../src/storage/vec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,SAAS,MAAM,YAAY,CAAC;AAGxC,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAgB;IAC/C,2DAA2D;IAC3D,4EAA4E;IAC3E,SAA6C,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,MAAM,aAAa,GAAG,GAAG,CAAC,CAAC,oCAAoC;AAE/D;;;GAGG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;;;;;;;;;oBASH,aAAa;;CAEhC,CAAC;AAWF;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,EAAgB,EAChB,QAAgB,EAChB,SAAuB;IAEvB,2DAA2D;IAC3D,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAE9B,qEAAqE;IACrE,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CACpB,qDAAqD,CACtD,CAAC,GAAG,CAAC,SAAS,CAAgC,CAAC;IAEhD,MAAM,QAAQ,GAAG,GAAG,CAAC,eAAe,CAAC;IAErC,uCAAuC;IACvC,EAAE,CAAC,OAAO,CACR,sEAAsE,CACvE,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE1B,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,EAAgB,EAChB,cAA4B,EAC5B,QAAgB,EAAE;IAElB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;GAWvB,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAmD,CAAC;IAEhF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,EAAgB,EAAE,QAAgB;IAChE,yCAAyC;IACzC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CACpB,gEAAgE,CACjE,CAAC,GAAG,CAAC,QAAQ,CAAsC,CAAC;IAErD,IAAI,CAAC,GAAG;QAAE,OAAO;IAEjB,0BAA0B;IAC1B,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC/E,EAAE,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACnF,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { homedir } from 'node:os';
|
|
2
|
+
import { mkdirSync, existsSync } from 'node:fs';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
function resolveDbPath() {
|
|
5
|
+
const envPath = process.env['STELLAR_DB_PATH'];
|
|
6
|
+
if (envPath) {
|
|
7
|
+
// Ensure parent directory exists for custom paths too
|
|
8
|
+
const dir = join(envPath, '..');
|
|
9
|
+
if (!existsSync(dir)) {
|
|
10
|
+
mkdirSync(dir, { recursive: true });
|
|
11
|
+
}
|
|
12
|
+
return envPath;
|
|
13
|
+
}
|
|
14
|
+
const defaultDir = join(homedir(), '.stellar-memory');
|
|
15
|
+
if (!existsSync(defaultDir)) {
|
|
16
|
+
mkdirSync(defaultDir, { recursive: true });
|
|
17
|
+
}
|
|
18
|
+
return join(defaultDir, 'stellar.db');
|
|
19
|
+
}
|
|
20
|
+
function parseFloat_(value, fallback) {
|
|
21
|
+
if (value === undefined || value === '')
|
|
22
|
+
return fallback;
|
|
23
|
+
const parsed = parseFloat(value);
|
|
24
|
+
return isNaN(parsed) ? fallback : parsed;
|
|
25
|
+
}
|
|
26
|
+
function parseInt_(value, fallback) {
|
|
27
|
+
if (value === undefined || value === '')
|
|
28
|
+
return fallback;
|
|
29
|
+
const parsed = parseInt(value, 10);
|
|
30
|
+
return isNaN(parsed) ? fallback : parsed;
|
|
31
|
+
}
|
|
32
|
+
export function loadConfig() {
|
|
33
|
+
return {
|
|
34
|
+
dbPath: resolveDbPath(),
|
|
35
|
+
defaultProject: process.env['STELLAR_PROJECT'] ?? 'default',
|
|
36
|
+
sunTokenBudget: parseInt_(process.env['STELLAR_SUN_TOKEN_BUDGET'], 800),
|
|
37
|
+
decayHalfLifeHours: parseFloat_(process.env['STELLAR_DECAY_HALF_LIFE'], 72),
|
|
38
|
+
// Frequency saturation: number of accesses at which frequency score plateaus
|
|
39
|
+
frequencySaturationPoint: parseInt_(process.env['STELLAR_FREQ_SAT_POINT'], 20),
|
|
40
|
+
weights: {
|
|
41
|
+
recency: parseFloat_(process.env['STELLAR_WEIGHT_RECENCY'], 0.30),
|
|
42
|
+
frequency: parseFloat_(process.env['STELLAR_WEIGHT_FREQUENCY'], 0.20),
|
|
43
|
+
impact: parseFloat_(process.env['STELLAR_WEIGHT_IMPACT'], 0.30),
|
|
44
|
+
relevance: parseFloat_(process.env['STELLAR_WEIGHT_RELEVANCE'], 0.20),
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
// Singleton config instance — loaded once at startup
|
|
49
|
+
let _config = null;
|
|
50
|
+
export function getConfig() {
|
|
51
|
+
if (!_config) {
|
|
52
|
+
_config = loadConfig();
|
|
53
|
+
}
|
|
54
|
+
return _config;
|
|
55
|
+
}
|
|
56
|
+
// Allow tests to reset the singleton
|
|
57
|
+
export function resetConfig() {
|
|
58
|
+
_config = null;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,SAAS,aAAa;IACpB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC/C,IAAI,OAAO,EAAE,CAAC;QACZ,sDAAsD;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,iBAAiB,CAAC,CAAC;IACtD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,WAAW,CAAC,KAAyB,EAAE,QAAgB;IAC9D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IACzD,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACjC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AAC3C,CAAC;AAED,SAAS,SAAS,CAAC,KAAyB,EAAE,QAAgB;IAC5D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IACzD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO;QACL,MAAM,EAAE,aAAa,EAAE;QACvB,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,SAAS;QAC3D,cAAc,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,EAAE,GAAG,CAAC;QACvE,kBAAkB,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,EAAE,CAAC;QAC3E,6EAA6E;QAC7E,wBAAwB,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE,EAAE,CAAC;QAC9E,OAAO,EAAE;YACP,OAAO,EAAI,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAI,IAAI,CAAC;YACrE,SAAS,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,EAAE,IAAI,CAAC;YACrE,MAAM,EAAK,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAK,IAAI,CAAC;YACrE,SAAS,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,EAAE,IAAI,CAAC;SACtE;KACF,CAAC;AACJ,CAAC;AAED,qDAAqD;AACrD,IAAI,OAAO,GAAyB,IAAI,CAAC;AAEzC,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,UAAU,EAAE,CAAC;IACzB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,WAAW;IACzB,OAAO,GAAG,IAAI,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* utils/logger.ts — Structured JSON logging.
|
|
3
|
+
*
|
|
4
|
+
* MCP servers communicate over stdout; ALL log output MUST go to stderr so it
|
|
5
|
+
* does not corrupt the protocol stream.
|
|
6
|
+
*
|
|
7
|
+
* Log format: one JSON object per line (newline-delimited JSON / NDJSON).
|
|
8
|
+
* Each line contains at minimum: { level, ts, msg }.
|
|
9
|
+
*/
|
|
10
|
+
export declare enum LogLevel {
|
|
11
|
+
DEBUG = 0,
|
|
12
|
+
INFO = 1,
|
|
13
|
+
WARN = 2,
|
|
14
|
+
ERROR = 3
|
|
15
|
+
}
|
|
16
|
+
export interface Logger {
|
|
17
|
+
debug(msg: string, ctx?: Record<string, unknown>): void;
|
|
18
|
+
info(msg: string, ctx?: Record<string, unknown>): void;
|
|
19
|
+
warn(msg: string, ctx?: Record<string, unknown>): void;
|
|
20
|
+
error(msg: string, err?: Error, ctx?: Record<string, unknown>): void;
|
|
21
|
+
}
|
|
22
|
+
export declare class StellarLogger implements Logger {
|
|
23
|
+
private readonly minLevel;
|
|
24
|
+
private readonly component;
|
|
25
|
+
constructor(component: string, minLevel?: LogLevel);
|
|
26
|
+
debug(msg: string, ctx?: Record<string, unknown>): void;
|
|
27
|
+
info(msg: string, ctx?: Record<string, unknown>): void;
|
|
28
|
+
warn(msg: string, ctx?: Record<string, unknown>): void;
|
|
29
|
+
error(msg: string, err?: Error, ctx?: Record<string, unknown>): void;
|
|
30
|
+
private write;
|
|
31
|
+
}
|
|
32
|
+
/** Factory — creates a logger scoped to a named component. */
|
|
33
|
+
export declare function createLogger(component: string): Logger;
|
|
34
|
+
/** Module-level default logger (used before component-specific loggers are created). */
|
|
35
|
+
export declare const logger: Logger;
|
|
36
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* utils/logger.ts — Structured JSON logging.
|
|
3
|
+
*
|
|
4
|
+
* MCP servers communicate over stdout; ALL log output MUST go to stderr so it
|
|
5
|
+
* does not corrupt the protocol stream.
|
|
6
|
+
*
|
|
7
|
+
* Log format: one JSON object per line (newline-delimited JSON / NDJSON).
|
|
8
|
+
* Each line contains at minimum: { level, ts, msg }.
|
|
9
|
+
*/
|
|
10
|
+
export var LogLevel;
|
|
11
|
+
(function (LogLevel) {
|
|
12
|
+
LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
|
|
13
|
+
LogLevel[LogLevel["INFO"] = 1] = "INFO";
|
|
14
|
+
LogLevel[LogLevel["WARN"] = 2] = "WARN";
|
|
15
|
+
LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
|
|
16
|
+
})(LogLevel || (LogLevel = {}));
|
|
17
|
+
const LEVEL_NAMES = {
|
|
18
|
+
[LogLevel.DEBUG]: 'debug',
|
|
19
|
+
[LogLevel.INFO]: 'info',
|
|
20
|
+
[LogLevel.WARN]: 'warn',
|
|
21
|
+
[LogLevel.ERROR]: 'error',
|
|
22
|
+
};
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
// StellarLogger — concrete implementation writing NDJSON to stderr
|
|
25
|
+
// ---------------------------------------------------------------------------
|
|
26
|
+
export class StellarLogger {
|
|
27
|
+
minLevel;
|
|
28
|
+
component;
|
|
29
|
+
constructor(component, minLevel = LogLevel.INFO) {
|
|
30
|
+
this.component = component;
|
|
31
|
+
this.minLevel = resolveMinLevel(minLevel);
|
|
32
|
+
}
|
|
33
|
+
debug(msg, ctx) {
|
|
34
|
+
this.write(LogLevel.DEBUG, msg, undefined, ctx);
|
|
35
|
+
}
|
|
36
|
+
info(msg, ctx) {
|
|
37
|
+
this.write(LogLevel.INFO, msg, undefined, ctx);
|
|
38
|
+
}
|
|
39
|
+
warn(msg, ctx) {
|
|
40
|
+
this.write(LogLevel.WARN, msg, undefined, ctx);
|
|
41
|
+
}
|
|
42
|
+
error(msg, err, ctx) {
|
|
43
|
+
this.write(LogLevel.ERROR, msg, err, ctx);
|
|
44
|
+
}
|
|
45
|
+
write(level, msg, err, ctx) {
|
|
46
|
+
if (level < this.minLevel)
|
|
47
|
+
return;
|
|
48
|
+
const entry = {
|
|
49
|
+
level: LEVEL_NAMES[level],
|
|
50
|
+
ts: new Date().toISOString(),
|
|
51
|
+
component: this.component,
|
|
52
|
+
msg,
|
|
53
|
+
...ctx,
|
|
54
|
+
};
|
|
55
|
+
if (err) {
|
|
56
|
+
entry['err'] = {
|
|
57
|
+
name: err.name,
|
|
58
|
+
message: err.message,
|
|
59
|
+
// Only include stack in debug/info — strip in warn/error for brevity
|
|
60
|
+
...(level <= LogLevel.INFO && err.stack ? { stack: err.stack } : {}),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
process.stderr.write(JSON.stringify(entry) + '\n');
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// ---------------------------------------------------------------------------
|
|
67
|
+
// Helpers
|
|
68
|
+
// ---------------------------------------------------------------------------
|
|
69
|
+
/** Read STELLAR_LOG_LEVEL env var; fallback to the passed-in default. */
|
|
70
|
+
function resolveMinLevel(defaultLevel) {
|
|
71
|
+
const envLevel = process.env['STELLAR_LOG_LEVEL']?.toLowerCase();
|
|
72
|
+
switch (envLevel) {
|
|
73
|
+
case 'debug': return LogLevel.DEBUG;
|
|
74
|
+
case 'info': return LogLevel.INFO;
|
|
75
|
+
case 'warn': return LogLevel.WARN;
|
|
76
|
+
case 'error': return LogLevel.ERROR;
|
|
77
|
+
default: return defaultLevel;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/** Factory — creates a logger scoped to a named component. */
|
|
81
|
+
export function createLogger(component) {
|
|
82
|
+
return new StellarLogger(component);
|
|
83
|
+
}
|
|
84
|
+
/** Module-level default logger (used before component-specific loggers are created). */
|
|
85
|
+
export const logger = createLogger('stellar-memory');
|
|
86
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* utils/time.ts — Relative time string parser.
|
|
3
|
+
*
|
|
4
|
+
* Converts shorthand like "24h", "7d", "30m" into a Date object
|
|
5
|
+
* representing that duration in the past from now.
|
|
6
|
+
* Falls back to ISO 8601 parsing for absolute timestamps.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Parse a time string into a Date.
|
|
10
|
+
*
|
|
11
|
+
* Supported formats:
|
|
12
|
+
* - "30m" → 30 minutes ago
|
|
13
|
+
* - "24h" → 24 hours ago
|
|
14
|
+
* - "7d" → 7 days ago
|
|
15
|
+
* - "2w" → 2 weeks ago
|
|
16
|
+
* - ISO 8601 string → parsed directly
|
|
17
|
+
*
|
|
18
|
+
* @throws {Error} if the string is neither a valid relative time nor a valid ISO date.
|
|
19
|
+
*/
|
|
20
|
+
export declare function parseRelativeTime(input: string): Date;
|
|
21
|
+
//# sourceMappingURL=time.d.ts.map
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* utils/time.ts — Relative time string parser.
|
|
3
|
+
*
|
|
4
|
+
* Converts shorthand like "24h", "7d", "30m" into a Date object
|
|
5
|
+
* representing that duration in the past from now.
|
|
6
|
+
* Falls back to ISO 8601 parsing for absolute timestamps.
|
|
7
|
+
*/
|
|
8
|
+
const RELATIVE_RE = /^(\d+)(m|h|d|w)$/i;
|
|
9
|
+
const UNIT_MS = {
|
|
10
|
+
m: 60 * 1000,
|
|
11
|
+
h: 60 * 60 * 1000,
|
|
12
|
+
d: 24 * 60 * 60 * 1000,
|
|
13
|
+
w: 7 * 24 * 60 * 60 * 1000,
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Parse a time string into a Date.
|
|
17
|
+
*
|
|
18
|
+
* Supported formats:
|
|
19
|
+
* - "30m" → 30 minutes ago
|
|
20
|
+
* - "24h" → 24 hours ago
|
|
21
|
+
* - "7d" → 7 days ago
|
|
22
|
+
* - "2w" → 2 weeks ago
|
|
23
|
+
* - ISO 8601 string → parsed directly
|
|
24
|
+
*
|
|
25
|
+
* @throws {Error} if the string is neither a valid relative time nor a valid ISO date.
|
|
26
|
+
*/
|
|
27
|
+
export function parseRelativeTime(input) {
|
|
28
|
+
const match = input.match(RELATIVE_RE);
|
|
29
|
+
if (match) {
|
|
30
|
+
const amount = parseInt(match[1], 10);
|
|
31
|
+
const unit = match[2].toLowerCase();
|
|
32
|
+
const ms = amount * UNIT_MS[unit];
|
|
33
|
+
return new Date(Date.now() - ms);
|
|
34
|
+
}
|
|
35
|
+
// Fallback: try ISO 8601 parsing
|
|
36
|
+
const date = new Date(input);
|
|
37
|
+
if (isNaN(date.getTime())) {
|
|
38
|
+
throw new Error(`Invalid time format: "${input}". Use relative (e.g. "24h", "7d") or ISO 8601.`);
|
|
39
|
+
}
|
|
40
|
+
return date;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=time.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../src/utils/time.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAExC,MAAM,OAAO,GAA2B;IACtC,CAAC,EAAE,EAAE,GAAG,IAAI;IACZ,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;IACjB,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IACtB,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;CAC3B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACvC,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,EAAE,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,iCAAiC;IACjC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,yBAAyB,KAAK,iDAAiD,CAChF,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight token estimator for mixed English/Korean text.
|
|
3
|
+
*
|
|
4
|
+
* Unicode-aware estimation:
|
|
5
|
+
* - ASCII/Latin text: ~1.3 tokens per whitespace-delimited word
|
|
6
|
+
* - CJK characters (Korean/Chinese/Japanese): ~2.0 tokens per character
|
|
7
|
+
* - Other Unicode: ~1.5 tokens per word
|
|
8
|
+
*
|
|
9
|
+
* This replaces the old 0.75 tokens/word estimate which underestimated
|
|
10
|
+
* by ~50%, causing sun token budget overflows.
|
|
11
|
+
*/
|
|
12
|
+
export declare function estimateTokens(text: string): number;
|
|
13
|
+
//# sourceMappingURL=tokenizer.d.ts.map
|