@mono-agent/memory 0.4.1
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/README.md +61 -0
- package/dist/bujo/capture.d.ts +20 -0
- package/dist/bujo/capture.d.ts.map +1 -0
- package/dist/bujo/capture.js +77 -0
- package/dist/bujo/capture.js.map +1 -0
- package/dist/bujo/cli-env.d.ts +11 -0
- package/dist/bujo/cli-env.d.ts.map +1 -0
- package/dist/bujo/cli-env.js +30 -0
- package/dist/bujo/cli-env.js.map +1 -0
- package/dist/bujo/cli.d.ts +3 -0
- package/dist/bujo/cli.d.ts.map +1 -0
- package/dist/bujo/cli.js +98 -0
- package/dist/bujo/cli.js.map +1 -0
- package/dist/bujo/consolidate.d.ts +15 -0
- package/dist/bujo/consolidate.d.ts.map +1 -0
- package/dist/bujo/consolidate.js +61 -0
- package/dist/bujo/consolidate.js.map +1 -0
- package/dist/bujo/daily.d.ts +17 -0
- package/dist/bujo/daily.d.ts.map +1 -0
- package/dist/bujo/daily.js +47 -0
- package/dist/bujo/daily.js.map +1 -0
- package/dist/bujo/distill.d.ts +10 -0
- package/dist/bujo/distill.d.ts.map +1 -0
- package/dist/bujo/distill.js +50 -0
- package/dist/bujo/distill.js.map +1 -0
- package/dist/bujo/entities.d.ts +24 -0
- package/dist/bujo/entities.d.ts.map +1 -0
- package/dist/bujo/entities.js +80 -0
- package/dist/bujo/entities.js.map +1 -0
- package/dist/bujo/grammar.d.ts +18 -0
- package/dist/bujo/grammar.d.ts.map +1 -0
- package/dist/bujo/grammar.js +147 -0
- package/dist/bujo/grammar.js.map +1 -0
- package/dist/bujo/graph.d.ts +17 -0
- package/dist/bujo/graph.d.ts.map +1 -0
- package/dist/bujo/graph.js +96 -0
- package/dist/bujo/graph.js.map +1 -0
- package/dist/bujo/ids.d.ts +9 -0
- package/dist/bujo/ids.d.ts.map +1 -0
- package/dist/bujo/ids.js +23 -0
- package/dist/bujo/ids.js.map +1 -0
- package/dist/bujo/index.d.ts +26 -0
- package/dist/bujo/index.d.ts.map +1 -0
- package/dist/bujo/index.js +20 -0
- package/dist/bujo/index.js.map +1 -0
- package/dist/bujo/json.d.ts +3 -0
- package/dist/bujo/json.d.ts.map +1 -0
- package/dist/bujo/json.js +58 -0
- package/dist/bujo/json.js.map +1 -0
- package/dist/bujo/llm.d.ts +14 -0
- package/dist/bujo/llm.d.ts.map +1 -0
- package/dist/bujo/llm.js +2 -0
- package/dist/bujo/llm.js.map +1 -0
- package/dist/bujo/migrate.d.ts +12 -0
- package/dist/bujo/migrate.d.ts.map +1 -0
- package/dist/bujo/migrate.js +136 -0
- package/dist/bujo/migrate.js.map +1 -0
- package/dist/bujo/model-error.d.ts +16 -0
- package/dist/bujo/model-error.d.ts.map +1 -0
- package/dist/bujo/model-error.js +20 -0
- package/dist/bujo/model-error.js.map +1 -0
- package/dist/bujo/ollama-llm.d.ts +7 -0
- package/dist/bujo/ollama-llm.d.ts.map +1 -0
- package/dist/bujo/ollama-llm.js +43 -0
- package/dist/bujo/ollama-llm.js.map +1 -0
- package/dist/bujo/projections.d.ts +8 -0
- package/dist/bujo/projections.d.ts.map +1 -0
- package/dist/bujo/projections.js +53 -0
- package/dist/bujo/projections.js.map +1 -0
- package/dist/bujo/rebuild.d.ts +12 -0
- package/dist/bujo/rebuild.d.ts.map +1 -0
- package/dist/bujo/rebuild.js +73 -0
- package/dist/bujo/rebuild.js.map +1 -0
- package/dist/bujo/recall.d.ts +7 -0
- package/dist/bujo/recall.d.ts.map +1 -0
- package/dist/bujo/recall.js +33 -0
- package/dist/bujo/recall.js.map +1 -0
- package/dist/bujo/reconcile.d.ts +37 -0
- package/dist/bujo/reconcile.d.ts.map +1 -0
- package/dist/bujo/reconcile.js +190 -0
- package/dist/bujo/reconcile.js.map +1 -0
- package/dist/bujo/reflect.d.ts +30 -0
- package/dist/bujo/reflect.d.ts.map +1 -0
- package/dist/bujo/reflect.js +100 -0
- package/dist/bujo/reflect.js.map +1 -0
- package/dist/bujo/store.d.ts +77 -0
- package/dist/bujo/store.d.ts.map +1 -0
- package/dist/bujo/store.js +222 -0
- package/dist/bujo/store.js.map +1 -0
- package/dist/bujo/types.d.ts +39 -0
- package/dist/bujo/types.d.ts.map +1 -0
- package/dist/bujo/types.js +2 -0
- package/dist/bujo/types.js.map +1 -0
- package/dist/search/chunks.d.ts +14 -0
- package/dist/search/chunks.d.ts.map +1 -0
- package/dist/search/chunks.js +75 -0
- package/dist/search/chunks.js.map +1 -0
- package/dist/search/circuit-breaker.d.ts +34 -0
- package/dist/search/circuit-breaker.d.ts.map +1 -0
- package/dist/search/circuit-breaker.js +89 -0
- package/dist/search/circuit-breaker.js.map +1 -0
- package/dist/search/embeddings.d.ts +44 -0
- package/dist/search/embeddings.d.ts.map +1 -0
- package/dist/search/embeddings.js +141 -0
- package/dist/search/embeddings.js.map +1 -0
- package/dist/search/index.d.ts +8 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +5 -0
- package/dist/search/index.js.map +1 -0
- package/dist/search/types.d.ts +41 -0
- package/dist/search/types.d.ts.map +1 -0
- package/dist/search/types.js +2 -0
- package/dist/search/types.js.map +1 -0
- package/dist/search/vector-index.d.ts +28 -0
- package/dist/search/vector-index.d.ts.map +1 -0
- package/dist/search/vector-index.js +214 -0
- package/dist/search/vector-index.js.map +1 -0
- package/dist/store/contract.d.ts +2 -0
- package/dist/store/contract.d.ts.map +1 -0
- package/dist/store/contract.js +2 -0
- package/dist/store/contract.js.map +1 -0
- package/dist/store/db.d.ts +84 -0
- package/dist/store/db.d.ts.map +1 -0
- package/dist/store/db.js +471 -0
- package/dist/store/db.js.map +1 -0
- package/dist/store/fts.d.ts +3 -0
- package/dist/store/fts.d.ts.map +1 -0
- package/dist/store/fts.js +6 -0
- package/dist/store/fts.js.map +1 -0
- package/dist/store/index.d.ts +5 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +3 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/ranking.d.ts +16 -0
- package/dist/store/ranking.d.ts.map +1 -0
- package/dist/store/ranking.js +32 -0
- package/dist/store/ranking.js.map +1 -0
- package/dist/store/schema.d.ts +3 -0
- package/dist/store/schema.d.ts.map +1 -0
- package/dist/store/schema.js +61 -0
- package/dist/store/schema.js.map +1 -0
- package/dist/store/types.d.ts +102 -0
- package/dist/store/types.d.ts.map +1 -0
- package/dist/store/types.js +25 -0
- package/dist/store/types.js.map +1 -0
- package/dist/store/vec.d.ts +12 -0
- package/dist/store/vec.d.ts.map +1 -0
- package/dist/store/vec.js +20 -0
- package/dist/store/vec.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { MEMORY_STATUSES, MEMORY_TYPES } from "./types.js";
|
|
2
|
+
/** Ordered DDL applied once at open. `${dim}` is substituted with the configured dimension. */
|
|
3
|
+
export function migrations(dim) {
|
|
4
|
+
return [
|
|
5
|
+
`CREATE TABLE IF NOT EXISTS memories (
|
|
6
|
+
id TEXT PRIMARY KEY,
|
|
7
|
+
seq INTEGER NOT NULL UNIQUE,
|
|
8
|
+
type TEXT NOT NULL CHECK(type IN (${sqlStringList(MEMORY_TYPES)})),
|
|
9
|
+
status TEXT NOT NULL CHECK(status IN (${sqlStringList(MEMORY_STATUSES)})),
|
|
10
|
+
text TEXT NOT NULL,
|
|
11
|
+
salience REAL NOT NULL DEFAULT 0.5,
|
|
12
|
+
is_insight INTEGER NOT NULL DEFAULT 0,
|
|
13
|
+
created_at TEXT NOT NULL,
|
|
14
|
+
last_accessed_at TEXT,
|
|
15
|
+
access_count INTEGER NOT NULL DEFAULT 0,
|
|
16
|
+
valid_from TEXT,
|
|
17
|
+
valid_to TEXT,
|
|
18
|
+
superseded_by TEXT,
|
|
19
|
+
superseded_at TEXT,
|
|
20
|
+
due_at TEXT,
|
|
21
|
+
collection TEXT,
|
|
22
|
+
source_session TEXT,
|
|
23
|
+
source_file TEXT,
|
|
24
|
+
source_line INTEGER,
|
|
25
|
+
embedding_model TEXT,
|
|
26
|
+
dim INTEGER,
|
|
27
|
+
tags TEXT NOT NULL DEFAULT '[]'
|
|
28
|
+
)`,
|
|
29
|
+
`CREATE TABLE IF NOT EXISTS edges (
|
|
30
|
+
src TEXT NOT NULL,
|
|
31
|
+
dst TEXT NOT NULL,
|
|
32
|
+
kind TEXT NOT NULL CHECK(kind IN ('thread','about','supports','supersedes')),
|
|
33
|
+
weight REAL NOT NULL DEFAULT 1.0,
|
|
34
|
+
created_at TEXT NOT NULL,
|
|
35
|
+
PRIMARY KEY(src, dst, kind)
|
|
36
|
+
)`,
|
|
37
|
+
`CREATE VIRTUAL TABLE IF NOT EXISTS memories_fts USING fts5(id UNINDEXED, text)`,
|
|
38
|
+
`CREATE VIRTUAL TABLE IF NOT EXISTS memories_vec USING vec0(embedding float[${dim}] distance_metric=cosine)`,
|
|
39
|
+
`CREATE INDEX IF NOT EXISTS idx_memories_status ON memories(status)`,
|
|
40
|
+
`CREATE INDEX IF NOT EXISTS idx_memories_due ON memories(due_at)`,
|
|
41
|
+
`CREATE TABLE IF NOT EXISTS entities (
|
|
42
|
+
id TEXT PRIMARY KEY,
|
|
43
|
+
name TEXT NOT NULL,
|
|
44
|
+
type TEXT,
|
|
45
|
+
summary TEXT,
|
|
46
|
+
created_at TEXT NOT NULL,
|
|
47
|
+
updated_at TEXT
|
|
48
|
+
)`,
|
|
49
|
+
`CREATE TABLE IF NOT EXISTS entity_relations (
|
|
50
|
+
src TEXT NOT NULL,
|
|
51
|
+
dst TEXT NOT NULL,
|
|
52
|
+
relation TEXT NOT NULL,
|
|
53
|
+
created_at TEXT NOT NULL,
|
|
54
|
+
PRIMARY KEY(src, dst, relation)
|
|
55
|
+
)`,
|
|
56
|
+
];
|
|
57
|
+
}
|
|
58
|
+
function sqlStringList(values) {
|
|
59
|
+
return values.map((value) => `'${value.replaceAll("'", "''")}'`).join(",");
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/store/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE3D,+FAA+F;AAC/F,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO;QACL;;;0CAGsC,aAAa,CAAC,YAAY,CAAC;8CACvB,aAAa,CAAC,eAAe,CAAC;;;;;;;;;;;;;;;;;;;MAmBtE;QACF;;;;;;;MAOE;QACF,gFAAgF;QAChF,8EAA8E,GAAG,2BAA2B;QAC5G,oEAAoE;QACpE,iEAAiE;QACjE;;;;;;;MAOE;QACF;;;;;;MAME;KACH,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,MAAyB;IAC9C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7E,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import type { EmbeddingProvider } from "../search/index.js";
|
|
2
|
+
export type MemoryType = "task" | "event" | "note";
|
|
3
|
+
export declare const MEMORY_TYPES: readonly ["task", "event", "note"];
|
|
4
|
+
export type MemoryStatus = "open" | "done" | "scheduled" | "migrated" | "dropped" | "invalidated";
|
|
5
|
+
export declare const MEMORY_STATUSES: readonly ["open", "done", "scheduled", "migrated", "dropped", "invalidated"];
|
|
6
|
+
export interface MemorySource {
|
|
7
|
+
readonly session?: string;
|
|
8
|
+
readonly file?: string;
|
|
9
|
+
readonly line?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface MemoryRecord {
|
|
12
|
+
readonly id: string;
|
|
13
|
+
readonly type: MemoryType;
|
|
14
|
+
readonly status: MemoryStatus;
|
|
15
|
+
readonly text: string;
|
|
16
|
+
readonly salience: number;
|
|
17
|
+
readonly isInsight: boolean;
|
|
18
|
+
readonly createdAt: string;
|
|
19
|
+
readonly lastAccessedAt?: string;
|
|
20
|
+
readonly accessCount: number;
|
|
21
|
+
readonly validFrom?: string;
|
|
22
|
+
readonly validTo?: string;
|
|
23
|
+
readonly supersededBy?: string;
|
|
24
|
+
readonly supersededAt?: string;
|
|
25
|
+
readonly dueAt?: string;
|
|
26
|
+
readonly tags: readonly string[];
|
|
27
|
+
readonly collection?: string;
|
|
28
|
+
readonly source: MemorySource;
|
|
29
|
+
readonly embeddingModel?: string;
|
|
30
|
+
readonly dim?: number;
|
|
31
|
+
}
|
|
32
|
+
export type MemoryEdgeKind = "thread" | "about" | "supports" | "supersedes";
|
|
33
|
+
export interface RecallHit {
|
|
34
|
+
readonly record: MemoryRecord;
|
|
35
|
+
readonly score: number;
|
|
36
|
+
}
|
|
37
|
+
export interface SimilarHit {
|
|
38
|
+
readonly record: MemoryRecord;
|
|
39
|
+
readonly distance: number;
|
|
40
|
+
}
|
|
41
|
+
export interface EntityRecord {
|
|
42
|
+
readonly id: string;
|
|
43
|
+
readonly name: string;
|
|
44
|
+
readonly type?: string;
|
|
45
|
+
readonly summary?: string;
|
|
46
|
+
readonly createdAt: string;
|
|
47
|
+
readonly updatedAt?: string;
|
|
48
|
+
}
|
|
49
|
+
export interface EntityRelationRecord {
|
|
50
|
+
readonly src: string;
|
|
51
|
+
readonly dst: string;
|
|
52
|
+
readonly relation: string;
|
|
53
|
+
readonly createdAt: string;
|
|
54
|
+
}
|
|
55
|
+
export interface RecallWeights {
|
|
56
|
+
readonly rrf: number;
|
|
57
|
+
readonly recency: number;
|
|
58
|
+
readonly salience: number;
|
|
59
|
+
readonly insight: number;
|
|
60
|
+
}
|
|
61
|
+
export interface RecallOptions {
|
|
62
|
+
readonly topK?: number;
|
|
63
|
+
readonly candidates?: number;
|
|
64
|
+
readonly expandHops?: number;
|
|
65
|
+
readonly includeInvalid?: boolean;
|
|
66
|
+
readonly trackAccess?: boolean;
|
|
67
|
+
readonly now?: Date;
|
|
68
|
+
}
|
|
69
|
+
export interface MemoryStoreStatsOptions {
|
|
70
|
+
readonly topEntitiesLimit?: number;
|
|
71
|
+
}
|
|
72
|
+
export type MemoryCountByStatus = Readonly<Record<MemoryStatus, number>>;
|
|
73
|
+
export type MemoryCountByType = Readonly<Record<MemoryType, number>>;
|
|
74
|
+
export interface MemoryStoreStats {
|
|
75
|
+
readonly totalMemories: number;
|
|
76
|
+
readonly liveMemories: number;
|
|
77
|
+
readonly countsByStatus: MemoryCountByStatus;
|
|
78
|
+
readonly countsByType: MemoryCountByType;
|
|
79
|
+
readonly latestCreatedMemory?: MemoryRecord;
|
|
80
|
+
readonly latestAccessedMemory?: MemoryRecord;
|
|
81
|
+
readonly topEntities: readonly EntityRecord[];
|
|
82
|
+
}
|
|
83
|
+
export interface MemoryDbOptions {
|
|
84
|
+
readonly path: string;
|
|
85
|
+
readonly embeddings?: EmbeddingProvider;
|
|
86
|
+
readonly dim?: number;
|
|
87
|
+
readonly k?: number;
|
|
88
|
+
readonly weights?: Partial<RecallWeights>;
|
|
89
|
+
readonly decayGamma?: number;
|
|
90
|
+
readonly clock?: () => Date;
|
|
91
|
+
}
|
|
92
|
+
/** Default vector dimension used for the `memories_vec` table DDL when no `dim` is provided. */
|
|
93
|
+
export declare const DEFAULT_VEC_DIM = 768;
|
|
94
|
+
/**
|
|
95
|
+
* Re-score weights. `rrf` scales the (small, ~1/k) fused rank score; the others
|
|
96
|
+
* are added on top. These are independent scalars, NOT a distribution that sums to 1.
|
|
97
|
+
*/
|
|
98
|
+
export declare const DEFAULT_WEIGHTS: RecallWeights;
|
|
99
|
+
export declare const DEFAULT_RRF_K = 60;
|
|
100
|
+
/** Exponential recency decay per day: score *= gamma^daysSinceLastAccess. 0.995 ≈ 16% weight after one year. */
|
|
101
|
+
export declare const DEFAULT_DECAY_GAMMA = 0.995;
|
|
102
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export const MEMORY_TYPES = ["task", "event", "note"];
|
|
2
|
+
export const MEMORY_STATUSES = [
|
|
3
|
+
"open",
|
|
4
|
+
"done",
|
|
5
|
+
"scheduled",
|
|
6
|
+
"migrated",
|
|
7
|
+
"dropped",
|
|
8
|
+
"invalidated",
|
|
9
|
+
];
|
|
10
|
+
/** Default vector dimension used for the `memories_vec` table DDL when no `dim` is provided. */
|
|
11
|
+
export const DEFAULT_VEC_DIM = 768;
|
|
12
|
+
/**
|
|
13
|
+
* Re-score weights. `rrf` scales the (small, ~1/k) fused rank score; the others
|
|
14
|
+
* are added on top. These are independent scalars, NOT a distribution that sums to 1.
|
|
15
|
+
*/
|
|
16
|
+
export const DEFAULT_WEIGHTS = {
|
|
17
|
+
rrf: 1.0,
|
|
18
|
+
recency: 0.3,
|
|
19
|
+
salience: 0.3,
|
|
20
|
+
insight: 0.2,
|
|
21
|
+
};
|
|
22
|
+
export const DEFAULT_RRF_K = 60;
|
|
23
|
+
/** Exponential recency decay per day: score *= gamma^daysSinceLastAccess. 0.995 ≈ 16% weight after one year. */
|
|
24
|
+
export const DEFAULT_DECAY_GAMMA = 0.995;
|
|
25
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAA0C,CAAC;AAU/F,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,MAAM;IACN,MAAM;IACN,WAAW;IACX,UAAU;IACV,SAAS;IACT,aAAa;CAC6B,CAAC;AAqG7C,gGAAgG;AAChG,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AAEnC;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAkB;IAC5C,GAAG,EAAE,GAAG;IACR,OAAO,EAAE,GAAG;IACZ,QAAQ,EAAE,GAAG;IACb,OAAO,EAAE,GAAG;CACb,CAAC;AACF,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAChC,gHAAgH;AAChH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Database } from "better-sqlite3";
|
|
2
|
+
/** Load the sqlite-vec extension into an open better-sqlite3 connection. */
|
|
3
|
+
export declare function loadVec(db: Database): void;
|
|
4
|
+
/**
|
|
5
|
+
* Encode a numeric vector as a little-endian float32 BLOB for vec0.
|
|
6
|
+
*
|
|
7
|
+
* sqlite-vec interprets float32 vectors as little-endian, so we write the bytes explicitly with
|
|
8
|
+
* `writeFloatLE` rather than relying on `Float32Array`'s platform-native byte order — that keeps the
|
|
9
|
+
* BLOB correct on a (rare) big-endian runtime.
|
|
10
|
+
*/
|
|
11
|
+
export declare function toBlob(vector: readonly number[]): Buffer;
|
|
12
|
+
//# sourceMappingURL=vec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vec.d.ts","sourceRoot":"","sources":["../../src/store/vec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,4EAA4E;AAC5E,wBAAgB,OAAO,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAE1C;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAMxD"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as sqliteVec from "sqlite-vec";
|
|
2
|
+
/** Load the sqlite-vec extension into an open better-sqlite3 connection. */
|
|
3
|
+
export function loadVec(db) {
|
|
4
|
+
sqliteVec.load(db);
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Encode a numeric vector as a little-endian float32 BLOB for vec0.
|
|
8
|
+
*
|
|
9
|
+
* sqlite-vec interprets float32 vectors as little-endian, so we write the bytes explicitly with
|
|
10
|
+
* `writeFloatLE` rather than relying on `Float32Array`'s platform-native byte order — that keeps the
|
|
11
|
+
* BLOB correct on a (rare) big-endian runtime.
|
|
12
|
+
*/
|
|
13
|
+
export function toBlob(vector) {
|
|
14
|
+
const buf = Buffer.allocUnsafe(vector.length * 4);
|
|
15
|
+
for (let i = 0; i < vector.length; i += 1) {
|
|
16
|
+
buf.writeFloatLE(vector[i] ?? 0, i * 4);
|
|
17
|
+
}
|
|
18
|
+
return buf;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=vec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vec.js","sourceRoot":"","sources":["../../src/store/vec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,SAAS,MAAM,YAAY,CAAC;AAExC,4EAA4E;AAC5E,MAAM,UAAU,OAAO,CAAC,EAAY;IAClC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACrB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,MAAM,CAAC,MAAyB;IAC9C,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mono-agent/memory",
|
|
3
|
+
"version": "0.4.1",
|
|
4
|
+
"description": "Local memory package with SQLite store, embedding search, and Bullet-Journal engine subpaths.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "UNLICENSED",
|
|
7
|
+
"private": false,
|
|
8
|
+
"exports": {
|
|
9
|
+
"./store": {
|
|
10
|
+
"types": "./dist/store/index.d.ts",
|
|
11
|
+
"import": "./dist/store/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./search": {
|
|
14
|
+
"types": "./dist/search/index.d.ts",
|
|
15
|
+
"import": "./dist/search/index.js"
|
|
16
|
+
},
|
|
17
|
+
"./bujo": {
|
|
18
|
+
"types": "./dist/bujo/index.d.ts",
|
|
19
|
+
"import": "./dist/bujo/index.js"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"bin": {
|
|
23
|
+
"memory-bujo": "./dist/bujo/cli.js"
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
26
|
+
"dist",
|
|
27
|
+
"README.md"
|
|
28
|
+
],
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"@mono-agent/agent-contracts": "0.4.1",
|
|
31
|
+
"better-sqlite3": "^11.8.1",
|
|
32
|
+
"sqlite-vec": "^0.1.7-alpha.2"
|
|
33
|
+
},
|
|
34
|
+
"devDependencies": {
|
|
35
|
+
"@types/better-sqlite3": "^7.6.12"
|
|
36
|
+
},
|
|
37
|
+
"publishConfig": {
|
|
38
|
+
"access": "public"
|
|
39
|
+
},
|
|
40
|
+
"scripts": {
|
|
41
|
+
"build": "tsc -p tsconfig.build.json",
|
|
42
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
43
|
+
"test": "vitest run --passWithNoTests"
|
|
44
|
+
}
|
|
45
|
+
}
|