@melandlabs/memory-store 0.3.0 → 1.0.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/README.md +209 -56
- package/dist/{config-2Q092MUz.d.ts → config-CnbqSek5.d.ts} +215 -2
- package/dist/contracts.d.ts +1 -0
- package/dist/contracts.js +2 -0
- package/dist/http.d.ts +21 -5
- package/dist/http.js +1051 -155
- package/dist/index.d.ts +230 -15
- package/dist/index.js +1087 -152
- package/dist/mcp.d.ts +14 -5
- package/dist/mcp.js +1188 -174
- package/dist/policies/memory-graph-correction-policy.d.ts +1 -0
- package/dist/policies/memory-graph-correction-policy.js +4 -0
- package/dist/policies/memory-graph-write-policy.d.ts +1 -0
- package/dist/policies/memory-graph-write-policy.js +2 -0
- package/dist/search/unified-search.d.ts +6 -19
- package/dist/search/unified-search.js +749 -145
- package/dist/server/cli-http.js +1051 -155
- package/dist/server/cli-mcp.js +1185 -171
- package/dist/server/cli-shared.d.ts +5 -2
- package/dist/server/cli-shared.js +6 -4
- package/dist/storage/chroma-memory-index.d.ts +1 -0
- package/dist/storage/chroma-memory-index.js +1 -2
- package/dist/storage/postgres-raw-message-factory.d.ts +4 -1
- package/dist/storage/raw-message-store.d.ts +5 -2
- package/dist/storage/raw-message-store.js +6 -4
- package/dist/storage/sqlite-raw-message-store.d.ts +5 -1
- package/dist/storage/sqlite-raw-message-store.js +6 -4
- package/dist/storage/sqlite-vector-index.d.ts +4 -1
- package/dist/storage/sqlite-vector-index.js +4 -4
- package/dist/unified-search-Bft57TRH.d.ts +122 -0
- package/package.json +11 -7
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
2
|
+
import { U as UnifiedSearchDeps } from '../config-CnbqSek5.js';
|
|
3
|
+
import '@melandlabs/memory-consolidation';
|
|
4
|
+
import '@melandlabs/contracts/peer';
|
|
5
|
+
import '@melandlabs/contracts';
|
|
3
6
|
|
|
4
7
|
/**
|
|
5
8
|
* Shared argv parsing + `unified.*` wiring for the memory-store CLI bins.
|
|
6
9
|
*
|
|
7
10
|
* Both `cli-http.ts` (the HTTP daemon) and `cli-mcp.ts` (the MCP daemon)
|
|
8
11
|
* take the same `--embedding-provider` / `--*-backend` flag surface —
|
|
9
|
-
* the MCP server exposes the same `
|
|
12
|
+
* the MCP server exposes the same `memory.search` tool the HTTP
|
|
10
13
|
* `/v1/search` route does, so they must speak the same config. This
|
|
11
14
|
* module owns that surface so the two bins stay in lock-step.
|
|
12
15
|
*
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { mkdirSync } from 'fs';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { dirname } from 'path';
|
|
4
|
+
import { getOpenContextPath } from '@melandlabs/env-config';
|
|
5
5
|
import { SQLiteRawMessageManager } from '@melandlabs/sqlite';
|
|
6
6
|
import '@melandlabs/ai/memory';
|
|
7
7
|
import '@melandlabs/rag';
|
|
8
|
+
import '@melandlabs/contracts';
|
|
8
9
|
|
|
9
10
|
// src/storage/postgres-raw-message-factory.ts
|
|
10
11
|
var factory = null;
|
|
@@ -14,6 +15,8 @@ async function resolvePostgresFactory(env) {
|
|
|
14
15
|
function hasPostgresFactory() {
|
|
15
16
|
return factory !== null;
|
|
16
17
|
}
|
|
18
|
+
|
|
19
|
+
// src/storage/chroma-memory-index.ts
|
|
17
20
|
var RAW_VECTOR_BACKEND_ENV_KEYS = [
|
|
18
21
|
"RAW_MESSAGE_VECTOR_STORE_BACKEND",
|
|
19
22
|
"MEMORY_VECTOR_STORE_BACKEND",
|
|
@@ -34,11 +37,10 @@ function isRawMessageChromaEnabled() {
|
|
|
34
37
|
|
|
35
38
|
// src/storage/sqlite-raw-message-store.ts
|
|
36
39
|
var manager = null;
|
|
37
|
-
var DEFAULT_SQLITE_PATH = join(homedir(), ".opencontext", "memory", "store.db");
|
|
38
40
|
function resolveSQLiteRawMessageDbPath(dbPath) {
|
|
39
41
|
if (dbPath && dbPath.length > 0) return dbPath;
|
|
40
42
|
const fromEnv = process.env.MEMORY_STORE_DB_PATH?.trim();
|
|
41
|
-
return fromEnv && fromEnv.length > 0 ? fromEnv :
|
|
43
|
+
return fromEnv && fromEnv.length > 0 ? fromEnv : getOpenContextPath("memory", "store.db");
|
|
42
44
|
}
|
|
43
45
|
async function getSQLiteRawMessageManager(options = {}) {
|
|
44
46
|
if (!manager) {
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { buildMemoryRecordEmbeddingDocument } from '@melandlabs/ai/memory';
|
|
2
2
|
import { ChromaVectorStore } from '@melandlabs/rag';
|
|
3
|
+
import '@melandlabs/contracts';
|
|
3
4
|
|
|
4
5
|
// src/storage/chroma-memory-index.ts
|
|
5
|
-
|
|
6
|
-
// src/contracts.ts
|
|
7
6
|
function normalizeTimestampToMs(value) {
|
|
8
7
|
if (!Number.isFinite(value)) {
|
|
9
8
|
return 0;
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as MemoryStoreEnv } from '../config-CnbqSek5.js';
|
|
2
|
+
import '@melandlabs/memory-consolidation';
|
|
3
|
+
import '@melandlabs/contracts/peer';
|
|
4
|
+
import '@melandlabs/contracts';
|
|
2
5
|
|
|
3
6
|
/**
|
|
4
7
|
* Lazy registration slot for the host's Postgres-backed raw message
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import { RawMessageStorageManager } from '@melandlabs/indexeddb
|
|
2
|
-
import {
|
|
1
|
+
import { RawMessageStorageManager } from '@melandlabs/indexeddb';
|
|
2
|
+
import { a as MemoryStoreEnv, M as MemoryStoreConfig } from '../config-CnbqSek5.js';
|
|
3
|
+
import '@melandlabs/memory-consolidation';
|
|
4
|
+
import '@melandlabs/contracts/peer';
|
|
5
|
+
import '@melandlabs/contracts';
|
|
3
6
|
|
|
4
7
|
/**
|
|
5
8
|
* Top-level raw-message store facade.
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { mkdirSync } from 'fs';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { dirname } from 'path';
|
|
3
|
+
import { getOpenContextPath } from '@melandlabs/env-config';
|
|
4
4
|
import { SQLiteRawMessageManager } from '@melandlabs/sqlite';
|
|
5
5
|
import '@melandlabs/ai/memory';
|
|
6
6
|
import '@melandlabs/rag';
|
|
7
|
+
import '@melandlabs/contracts';
|
|
7
8
|
|
|
8
9
|
// src/storage/postgres-raw-message-factory.ts
|
|
9
10
|
var factory = null;
|
|
@@ -13,6 +14,8 @@ async function resolvePostgresFactory(env) {
|
|
|
13
14
|
function hasPostgresFactory() {
|
|
14
15
|
return factory !== null;
|
|
15
16
|
}
|
|
17
|
+
|
|
18
|
+
// src/storage/chroma-memory-index.ts
|
|
16
19
|
var RAW_VECTOR_BACKEND_ENV_KEYS = [
|
|
17
20
|
"RAW_MESSAGE_VECTOR_STORE_BACKEND",
|
|
18
21
|
"MEMORY_VECTOR_STORE_BACKEND",
|
|
@@ -33,11 +36,10 @@ function isRawMessageChromaEnabled() {
|
|
|
33
36
|
|
|
34
37
|
// src/storage/sqlite-raw-message-store.ts
|
|
35
38
|
var manager = null;
|
|
36
|
-
var DEFAULT_SQLITE_PATH = join(homedir(), ".opencontext", "memory", "store.db");
|
|
37
39
|
function resolveSQLiteRawMessageDbPath(dbPath) {
|
|
38
40
|
if (dbPath && dbPath.length > 0) return dbPath;
|
|
39
41
|
const fromEnv = process.env.MEMORY_STORE_DB_PATH?.trim();
|
|
40
|
-
return fromEnv && fromEnv.length > 0 ? fromEnv :
|
|
42
|
+
return fromEnv && fromEnv.length > 0 ? fromEnv : getOpenContextPath("memory", "store.db");
|
|
41
43
|
}
|
|
42
44
|
async function getSQLiteRawMessageManager(options = {}) {
|
|
43
45
|
if (!manager) {
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { SQLiteRawMessageManager } from '@melandlabs/sqlite';
|
|
2
|
-
import {
|
|
2
|
+
import { a as MemoryStoreEnv } from '../config-CnbqSek5.js';
|
|
3
|
+
import '@melandlabs/memory-consolidation';
|
|
4
|
+
import '@melandlabs/contracts/peer';
|
|
5
|
+
import '@melandlabs/contracts';
|
|
3
6
|
|
|
4
7
|
/**
|
|
5
8
|
* SQLite-backed raw message store.
|
|
@@ -45,6 +48,7 @@ declare function lexicalSearchRawMessages(input: {
|
|
|
45
48
|
includeArchived?: boolean;
|
|
46
49
|
platform?: string;
|
|
47
50
|
botId?: string;
|
|
51
|
+
factTypes?: Array<"world" | "experience" | "mental_model">;
|
|
48
52
|
}): Promise<unknown[]>;
|
|
49
53
|
|
|
50
54
|
export { __resetSQLiteRawMessageManagerForTests, closeSQLiteRawMessageManager, getSQLiteRawMessageManager, isSQLiteRawMessageStorageAvailable, lexicalSearchRawMessages, resolveSQLiteRawMessageDbPath };
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { mkdirSync } from 'fs';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { dirname } from 'path';
|
|
3
|
+
import { getOpenContextPath } from '@melandlabs/env-config';
|
|
4
4
|
import { SQLiteRawMessageManager } from '@melandlabs/sqlite';
|
|
5
5
|
import '@melandlabs/ai/memory';
|
|
6
6
|
import '@melandlabs/rag';
|
|
7
|
+
import '@melandlabs/contracts';
|
|
7
8
|
|
|
8
9
|
// src/storage/sqlite-raw-message-store.ts
|
|
10
|
+
|
|
11
|
+
// src/storage/chroma-memory-index.ts
|
|
9
12
|
var RAW_VECTOR_BACKEND_ENV_KEYS = [
|
|
10
13
|
"RAW_MESSAGE_VECTOR_STORE_BACKEND",
|
|
11
14
|
"MEMORY_VECTOR_STORE_BACKEND",
|
|
@@ -26,11 +29,10 @@ function isRawMessageChromaEnabled() {
|
|
|
26
29
|
|
|
27
30
|
// src/storage/sqlite-raw-message-store.ts
|
|
28
31
|
var manager = null;
|
|
29
|
-
var DEFAULT_SQLITE_PATH = join(homedir(), ".opencontext", "memory", "store.db");
|
|
30
32
|
function resolveSQLiteRawMessageDbPath(dbPath) {
|
|
31
33
|
if (dbPath && dbPath.length > 0) return dbPath;
|
|
32
34
|
const fromEnv = process.env.MEMORY_STORE_DB_PATH?.trim();
|
|
33
|
-
return fromEnv && fromEnv.length > 0 ? fromEnv :
|
|
35
|
+
return fromEnv && fromEnv.length > 0 ? fromEnv : getOpenContextPath("memory", "store.db");
|
|
34
36
|
}
|
|
35
37
|
function isSQLiteRawMessageStorageAvailable(_env) {
|
|
36
38
|
return true;
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { VectorSearchResult } from '@melandlabs/rag/vector-service';
|
|
2
|
-
import {
|
|
2
|
+
import { a as MemoryStoreEnv } from '../config-CnbqSek5.js';
|
|
3
|
+
import '@melandlabs/memory-consolidation';
|
|
4
|
+
import '@melandlabs/contracts/peer';
|
|
5
|
+
import '@melandlabs/contracts';
|
|
3
6
|
|
|
4
7
|
/**
|
|
5
8
|
* SQLite-vec-backed raw-message + insight vector index.
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import 'fs';
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
2
|
+
import 'path';
|
|
3
|
+
import { getOpenContextPath } from '@melandlabs/env-config';
|
|
4
4
|
import '@melandlabs/sqlite';
|
|
5
5
|
import '@melandlabs/ai/memory';
|
|
6
6
|
import '@melandlabs/rag';
|
|
7
|
+
import '@melandlabs/contracts';
|
|
7
8
|
|
|
8
9
|
// src/storage/sqlite-raw-message-store.ts
|
|
9
10
|
|
|
10
11
|
// src/storage/sqlite-raw-message-store.ts
|
|
11
|
-
var DEFAULT_SQLITE_PATH = join(homedir(), ".opencontext", "memory", "store.db");
|
|
12
12
|
function resolveSQLiteRawMessageDbPath(dbPath) {
|
|
13
13
|
const fromEnv = process.env.MEMORY_STORE_DB_PATH?.trim();
|
|
14
|
-
return fromEnv && fromEnv.length > 0 ? fromEnv :
|
|
14
|
+
return fromEnv && fromEnv.length > 0 ? fromEnv : getOpenContextPath("memory", "store.db");
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
// src/storage/sqlite-vector-index.ts
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { S as SearchTier, b as UnifiedMemorySearchWarning, c as SearchEvidence, U as UnifiedSearchDeps, d as SearchInput, e as SearchOutput, f as UnifiedMemorySearchInput, g as UnifiedMemorySearchOutput, h as UnifiedMemorySearchResult } from './config-CnbqSek5.js';
|
|
2
|
+
import { MemoryStorageAdapter } from '@melandlabs/ai/memory';
|
|
3
|
+
import { Peer } from '@melandlabs/contracts/peer';
|
|
4
|
+
import { OwnerScope, MemoryConsolidationPlan, ReflectApplyClusterKeyFn, MemoryStorageAdapterLike, MemoryGraphStoreWithOperationHistory, MemoryGraphUpdateResult } from '@melandlabs/memory-consolidation';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* `applyReflectedPlan` — agentic write-back facade.
|
|
8
|
+
*
|
|
9
|
+
* Composes the read-only `search({ synthesize })` evidence pipeline with
|
|
10
|
+
* the `applyReflectedConsolidationPlan` write-side so a single call
|
|
11
|
+
* gathers evidence (raw + summaries + insights + knowledge), vets the
|
|
12
|
+
* plan with the LLM (optional), and persists the result to the graph
|
|
13
|
+
* store + storage.
|
|
14
|
+
*
|
|
15
|
+
* Behaviour parity with `search({ synthesize: true })`:
|
|
16
|
+
* - Reuses the same gather-evidence pipeline so the answer + evidence
|
|
17
|
+
* are identical to a read-only search call.
|
|
18
|
+
* - Honours `peerFilter` via the same scope check used by the unified
|
|
19
|
+
* read pipeline.
|
|
20
|
+
* - LLM `complete` is the same `deps.reasoning.complete` the read-only
|
|
21
|
+
* path uses — no new injection point.
|
|
22
|
+
*
|
|
23
|
+
* Write path:
|
|
24
|
+
* - When `graphStore` is set (either passed in or attached via
|
|
25
|
+
* `attachMemoryGraphStore`), persists the graph plan via
|
|
26
|
+
* `MemoryGraphStoreWithOperationHistory.persistPlan`.
|
|
27
|
+
* - Always runs `storage.deprecateRecords` for `deprecate` entries — the
|
|
28
|
+
* deprecation chain is the critical path, so it runs even when the
|
|
29
|
+
* graph store is missing (with a `reflect_apply_graph_store_not_configured`
|
|
30
|
+
* warning).
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
interface ApplyConsolidateInput {
|
|
34
|
+
userId: string;
|
|
35
|
+
query: string;
|
|
36
|
+
ownerScope: OwnerScope;
|
|
37
|
+
botIds?: string[];
|
|
38
|
+
dateFrom?: string;
|
|
39
|
+
dateTo?: string;
|
|
40
|
+
tiers?: ReadonlyArray<SearchTier>;
|
|
41
|
+
limit?: number;
|
|
42
|
+
threshold?: number;
|
|
43
|
+
plan?: MemoryConsolidationPlan;
|
|
44
|
+
dryRun?: boolean;
|
|
45
|
+
expectedVersion?: string;
|
|
46
|
+
llmPlanReview?: {
|
|
47
|
+
maxTokens?: number;
|
|
48
|
+
};
|
|
49
|
+
authToken?: string;
|
|
50
|
+
peerFilter?: ReadonlyArray<Peer>;
|
|
51
|
+
/**
|
|
52
|
+
* Cluster-key selector forwarded to `buildMemoryConsolidationPlan`.
|
|
53
|
+
* When omitted, callers should pass a pre-built `plan`.
|
|
54
|
+
*/
|
|
55
|
+
getClusterKey?: ReflectApplyClusterKeyFn;
|
|
56
|
+
/**
|
|
57
|
+
* Optional storage adapter — falls back to `store.raw` when wired up by
|
|
58
|
+
* `createMemoryStore`. Required when no `graphStore` is attached and the
|
|
59
|
+
* caller still wants `deprecateRecords` writes.
|
|
60
|
+
*/
|
|
61
|
+
storage?: MemoryStorageAdapterLike;
|
|
62
|
+
graphStore?: MemoryGraphStoreWithOperationHistory;
|
|
63
|
+
}
|
|
64
|
+
interface ApplyConsolidateOutput {
|
|
65
|
+
answer: string;
|
|
66
|
+
plan: MemoryConsolidationPlan;
|
|
67
|
+
persistenceResult?: MemoryGraphUpdateResult;
|
|
68
|
+
deprecationCounts?: Array<{
|
|
69
|
+
supersededBySummaryId: string;
|
|
70
|
+
count: number;
|
|
71
|
+
}>;
|
|
72
|
+
warnings: UnifiedMemorySearchWarning[];
|
|
73
|
+
applied: boolean;
|
|
74
|
+
evidence: SearchEvidence[];
|
|
75
|
+
}
|
|
76
|
+
interface MemoryStoreLike {
|
|
77
|
+
graphStore?: MemoryGraphStoreWithOperationHistory;
|
|
78
|
+
storage?: MemoryStorageAdapterLike | MemoryStorageAdapter;
|
|
79
|
+
}
|
|
80
|
+
declare function applyReflectedPlan(deps: UnifiedSearchDeps, store: MemoryStoreLike, input: ApplyConsolidateInput, _logger: Pick<Console, "log" | "warn" | "error">): Promise<ApplyConsolidateOutput>;
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Unified semantic search facade.
|
|
84
|
+
*
|
|
85
|
+
* Cross-source search over raw messages (always), insights, and
|
|
86
|
+
* uploaded knowledge documents. The host wires up the cross-domain
|
|
87
|
+
* dependencies via `UnifiedSearchDeps` so this module stays
|
|
88
|
+
* framework-agnostic.
|
|
89
|
+
*
|
|
90
|
+
* The public entry point is `search(input)` — a single method. Set
|
|
91
|
+
* `synthesize: true` to opt into the LLM synthesis step.
|
|
92
|
+
*/
|
|
93
|
+
|
|
94
|
+
interface UnifiedSearch {
|
|
95
|
+
/**
|
|
96
|
+
* Single unified read entry point. Set `synthesize: true` to opt into
|
|
97
|
+
* LLM synthesis.
|
|
98
|
+
*/
|
|
99
|
+
search(input: SearchInput): Promise<SearchOutput>;
|
|
100
|
+
/**
|
|
101
|
+
* @deprecated Use `search(input)` instead. Forwarding shim kept for
|
|
102
|
+
* one release window.
|
|
103
|
+
*/
|
|
104
|
+
searchUnifiedMemory(input: UnifiedMemorySearchInput): Promise<UnifiedMemorySearchOutput>;
|
|
105
|
+
/**
|
|
106
|
+
* @deprecated Use `search({ ...input, sources: ["memory"] })` and
|
|
107
|
+
* read `.results` instead.
|
|
108
|
+
*/
|
|
109
|
+
searchRawMemorySemantically(input: UnifiedMemorySearchInput): Promise<UnifiedMemorySearchResult[]>;
|
|
110
|
+
/**
|
|
111
|
+
* Agentic write-back: runs the same evidence pipeline as `search`,
|
|
112
|
+
* then builds a memory-consolidation plan, optionally asks the LLM
|
|
113
|
+
* to veto unsafe entries, and persists via the attached graph store
|
|
114
|
+
* (when present) + soft-deprecates superseded records via the storage
|
|
115
|
+
* adapter. See `./apply-reflect.ts` for the contract and degradation
|
|
116
|
+
* rules.
|
|
117
|
+
*/
|
|
118
|
+
consolidate(input: ApplyConsolidateInput): Promise<ApplyConsolidateOutput>;
|
|
119
|
+
}
|
|
120
|
+
declare function createUnifiedSearch(deps?: UnifiedSearchDeps): UnifiedSearch;
|
|
121
|
+
|
|
122
|
+
export { type ApplyConsolidateInput as A, type UnifiedSearch as U, type ApplyConsolidateOutput as a, applyReflectedPlan as b, createUnifiedSearch as c };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@melandlabs/memory-store",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist",
|
|
@@ -60,14 +60,18 @@
|
|
|
60
60
|
"@modelcontextprotocol/sdk": "^1.25.3",
|
|
61
61
|
"hono": "^4.6.14",
|
|
62
62
|
"zod": "^4.3.6",
|
|
63
|
-
"@melandlabs/ai": "0.
|
|
64
|
-
"@melandlabs/
|
|
63
|
+
"@melandlabs/ai": "0.5.0",
|
|
64
|
+
"@melandlabs/memory-consolidation": "0.5.0",
|
|
65
|
+
"@melandlabs/env-config": "0.4.0",
|
|
66
|
+
"@melandlabs/contracts": "0.5.0",
|
|
67
|
+
"@melandlabs/sqlite": "0.5.0",
|
|
68
|
+
"@melandlabs/vsa": "0.3.0",
|
|
65
69
|
"@melandlabs/rag": "0.2.2",
|
|
66
70
|
"@melandlabs/shared": "0.3.0"
|
|
67
71
|
},
|
|
68
72
|
"peerDependencies": {
|
|
69
|
-
"@melandlabs/ai-rag": "0.2.
|
|
70
|
-
"@melandlabs/indexeddb": "0.
|
|
73
|
+
"@melandlabs/ai-rag": "0.2.6",
|
|
74
|
+
"@melandlabs/indexeddb": "0.5.0"
|
|
71
75
|
},
|
|
72
76
|
"peerDependenciesMeta": {
|
|
73
77
|
"@melandlabs/ai-rag": {
|
|
@@ -80,8 +84,8 @@
|
|
|
80
84
|
"devDependencies": {
|
|
81
85
|
"@types/node": "^22.13.10",
|
|
82
86
|
"typescript": "^5.6.3",
|
|
83
|
-
"@melandlabs/
|
|
84
|
-
"@melandlabs/
|
|
87
|
+
"@melandlabs/ai-rag": "0.2.6",
|
|
88
|
+
"@melandlabs/config": "0.3.0"
|
|
85
89
|
},
|
|
86
90
|
"scripts": {
|
|
87
91
|
"build": "tsup",
|