-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathindex.ts
More file actions
79 lines (75 loc) · 2.43 KB
/
Copy pathindex.ts
File metadata and controls
79 lines (75 loc) · 2.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/**
* Memory module — durable episode storage + retrieval for Claude sessions.
*
* Public surface:
* - createMemory() — factory wiring store + embedder + engine
* - SqliteEpisodeStore, MemoryEngine, EpisodeChunker — lower-level handles
* - workspaceIdFromPath() — canonicalize a workdir into a stable workspace id
* - buildMemoryMcpServer() — wrap the engine as an MCP server for the Agent SDK
*/
import { SqliteEpisodeStore } from "./store.js";
import { createEmbedder, type EmbedderConfig } from "./embedder.js";
import { MemoryEngine } from "./engine.js";
export {
SqliteEpisodeStore,
workspaceIdFromPath,
legacyWorkspaceIdFromPath,
type WorkspaceTenant,
} from "./store.js";
export { MemoryEngine, type SessionSearchHit } from "./engine.js";
export { EpisodeChunker, extractFilePaths } from "./chunker.js";
export { buildMemoryMcpServer } from "./mcp.js";
export {
MemoryMcpHttp,
MEMORY_MCP_PATH,
MEMORY_MCP_SERVER_NAME,
MEMORY_MCP_TOKEN_ENV,
type MemoryMcpBinding,
type MemoryMcpMount,
} from "./mcp-http.js";
export {
memoryToolDefs,
MEMORY_TOOL_NAMES,
formatHits,
formatTimeline,
formatEpisode,
type MemoryToolDef,
type MemoryToolContext,
} from "./tools.js";
export { DEFAULT_EMBEDDING_MODEL, createEmbedder } from "./embedder.js";
export { buildWorkspaceIndex, MAX_INDEX_BYTES } from "./index-builder.js";
export { IndexScheduler } from "./index-scheduler.js";
export {
clusterEpisodes,
clusterEpisodesYielding,
MIN_EPISODES_FOR_CLUSTERING,
type Cluster,
type ClusterMember,
type ClusterableEpisode,
} from "./cluster.js";
export {
WorkspaceClusterer,
workspaceClustererFor,
type WorkspaceClustererOptions,
} from "./workspace-clusterer.js";
export {
HeuristicLabeler,
HaikuLabeler,
CachedLabeler,
createLabeler,
type Labeler,
type ClusterLabel,
} from "./cluster-labeler.js";
export type { Episode, EpisodeKind, RecallHit, RecallQuery } from "./types.js";
export interface MemoryConfig {
/** Absolute path to the memory SQLite database. */
dbPath: string;
/** Embedder config — model name, cache dir. */
embedder?: EmbedderConfig;
}
/** Build a ready-to-use MemoryEngine. Caller must call `engine.init()` before first use. */
export async function createMemory(config: MemoryConfig): Promise<MemoryEngine> {
const store = new SqliteEpisodeStore(config.dbPath);
const embedder = await createEmbedder(config.embedder);
return new MemoryEngine({ store, embedder });
}