@bip-krishna/agentmind 0.1.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/.agentmind/memory.db +0 -0
- package/.context-memory/memory.db +0 -0
- package/README.md +176 -0
- package/apps/dashboard/src/server.ts +369 -0
- package/cli/src/index.ts +163 -0
- package/dist/apps/dashboard/src/server.d.ts +6 -0
- package/dist/apps/dashboard/src/server.d.ts.map +1 -0
- package/dist/apps/dashboard/src/server.js +360 -0
- package/dist/apps/dashboard/src/server.js.map +1 -0
- package/dist/cli/src/index.d.ts +3 -0
- package/dist/cli/src/index.d.ts.map +1 -0
- package/dist/cli/src/index.js +162 -0
- package/dist/cli/src/index.js.map +1 -0
- package/dist/examples/advanced.d.ts +2 -0
- package/dist/examples/advanced.d.ts.map +1 -0
- package/dist/examples/advanced.js +41 -0
- package/dist/examples/advanced.js.map +1 -0
- package/dist/examples/basic.d.ts +2 -0
- package/dist/examples/basic.d.ts.map +1 -0
- package/dist/examples/basic.js +22 -0
- package/dist/examples/basic.js.map +1 -0
- package/dist/packages/core/src/consolidation.d.ts +27 -0
- package/dist/packages/core/src/consolidation.d.ts.map +1 -0
- package/dist/packages/core/src/consolidation.js +97 -0
- package/dist/packages/core/src/consolidation.js.map +1 -0
- package/dist/packages/core/src/events.d.ts +18 -0
- package/dist/packages/core/src/events.d.ts.map +1 -0
- package/dist/packages/core/src/events.js +13 -0
- package/dist/packages/core/src/events.js.map +1 -0
- package/dist/packages/core/src/extraction.d.ts +32 -0
- package/dist/packages/core/src/extraction.d.ts.map +1 -0
- package/dist/packages/core/src/extraction.js +65 -0
- package/dist/packages/core/src/extraction.js.map +1 -0
- package/dist/packages/core/src/index.d.ts +10 -0
- package/dist/packages/core/src/index.d.ts.map +1 -0
- package/dist/packages/core/src/index.js +7 -0
- package/dist/packages/core/src/index.js.map +1 -0
- package/dist/packages/core/src/memory-store.d.ts +36 -0
- package/dist/packages/core/src/memory-store.d.ts.map +1 -0
- package/dist/packages/core/src/memory-store.js +2 -0
- package/dist/packages/core/src/memory-store.js.map +1 -0
- package/dist/packages/core/src/memory.d.ts +75 -0
- package/dist/packages/core/src/memory.d.ts.map +1 -0
- package/dist/packages/core/src/memory.js +402 -0
- package/dist/packages/core/src/memory.js.map +1 -0
- package/dist/packages/core/src/policy.d.ts +17 -0
- package/dist/packages/core/src/policy.d.ts.map +1 -0
- package/dist/packages/core/src/policy.js +22 -0
- package/dist/packages/core/src/policy.js.map +1 -0
- package/dist/packages/core/src/types.d.ts +102 -0
- package/dist/packages/core/src/types.d.ts.map +1 -0
- package/dist/packages/core/src/types.js +23 -0
- package/dist/packages/core/src/types.js.map +1 -0
- package/dist/packages/embeddings/src/index.d.ts +4 -0
- package/dist/packages/embeddings/src/index.d.ts.map +1 -0
- package/dist/packages/embeddings/src/index.js +4 -0
- package/dist/packages/embeddings/src/index.js.map +1 -0
- package/dist/packages/embeddings/src/local.d.ts +15 -0
- package/dist/packages/embeddings/src/local.d.ts.map +1 -0
- package/dist/packages/embeddings/src/local.js +45 -0
- package/dist/packages/embeddings/src/local.js.map +1 -0
- package/dist/packages/embeddings/src/openai.d.ts +17 -0
- package/dist/packages/embeddings/src/openai.d.ts.map +1 -0
- package/dist/packages/embeddings/src/openai.js +41 -0
- package/dist/packages/embeddings/src/openai.js.map +1 -0
- package/dist/packages/embeddings/src/provider.d.ts +8 -0
- package/dist/packages/embeddings/src/provider.d.ts.map +1 -0
- package/dist/packages/embeddings/src/provider.js +12 -0
- package/dist/packages/embeddings/src/provider.js.map +1 -0
- package/dist/packages/integrations/src/anthropic.d.ts +15 -0
- package/dist/packages/integrations/src/anthropic.d.ts.map +1 -0
- package/dist/packages/integrations/src/anthropic.js +25 -0
- package/dist/packages/integrations/src/anthropic.js.map +1 -0
- package/dist/packages/integrations/src/index.d.ts +4 -0
- package/dist/packages/integrations/src/index.d.ts.map +1 -0
- package/dist/packages/integrations/src/index.js +4 -0
- package/dist/packages/integrations/src/index.js.map +1 -0
- package/dist/packages/integrations/src/openai.d.ts +27 -0
- package/dist/packages/integrations/src/openai.d.ts.map +1 -0
- package/dist/packages/integrations/src/openai.js +26 -0
- package/dist/packages/integrations/src/openai.js.map +1 -0
- package/dist/packages/integrations/src/vercel.d.ts +24 -0
- package/dist/packages/integrations/src/vercel.d.ts.map +1 -0
- package/dist/packages/integrations/src/vercel.js +20 -0
- package/dist/packages/integrations/src/vercel.js.map +1 -0
- package/dist/packages/retrieval/src/index.d.ts +3 -0
- package/dist/packages/retrieval/src/index.d.ts.map +1 -0
- package/dist/packages/retrieval/src/index.js +3 -0
- package/dist/packages/retrieval/src/index.js.map +1 -0
- package/dist/packages/retrieval/src/ranker.d.ts +21 -0
- package/dist/packages/retrieval/src/ranker.d.ts.map +1 -0
- package/dist/packages/retrieval/src/ranker.js +54 -0
- package/dist/packages/retrieval/src/ranker.js.map +1 -0
- package/dist/packages/retrieval/src/token.d.ts +3 -0
- package/dist/packages/retrieval/src/token.d.ts.map +1 -0
- package/dist/packages/retrieval/src/token.js +7 -0
- package/dist/packages/retrieval/src/token.js.map +1 -0
- package/dist/packages/storage/src/config.d.ts +14 -0
- package/dist/packages/storage/src/config.d.ts.map +1 -0
- package/dist/packages/storage/src/config.js +41 -0
- package/dist/packages/storage/src/config.js.map +1 -0
- package/dist/packages/storage/src/index.d.ts +4 -0
- package/dist/packages/storage/src/index.d.ts.map +1 -0
- package/dist/packages/storage/src/index.js +4 -0
- package/dist/packages/storage/src/index.js.map +1 -0
- package/dist/packages/storage/src/memory-store.d.ts +37 -0
- package/dist/packages/storage/src/memory-store.d.ts.map +1 -0
- package/dist/packages/storage/src/memory-store.js +107 -0
- package/dist/packages/storage/src/memory-store.js.map +1 -0
- package/dist/packages/storage/src/migrations.d.ts +12 -0
- package/dist/packages/storage/src/migrations.d.ts.map +1 -0
- package/dist/packages/storage/src/migrations.js +89 -0
- package/dist/packages/storage/src/migrations.js.map +1 -0
- package/dist/packages/storage/src/postgres-store.d.ts +45 -0
- package/dist/packages/storage/src/postgres-store.d.ts.map +1 -0
- package/dist/packages/storage/src/postgres-store.js +282 -0
- package/dist/packages/storage/src/postgres-store.js.map +1 -0
- package/dist/packages/storage/src/sqlite-store.d.ts +36 -0
- package/dist/packages/storage/src/sqlite-store.d.ts.map +1 -0
- package/dist/packages/storage/src/sqlite-store.js +243 -0
- package/dist/packages/storage/src/sqlite-store.js.map +1 -0
- package/examples/advanced.ts +46 -0
- package/examples/basic.ts +25 -0
- package/package.json +52 -0
- package/packages/core/package.json +13 -0
- package/packages/core/src/consolidation.ts +104 -0
- package/packages/core/src/events.ts +25 -0
- package/packages/core/src/extraction.ts +81 -0
- package/packages/core/src/index.ts +22 -0
- package/packages/core/src/memory-store.ts +50 -0
- package/packages/core/src/memory.ts +447 -0
- package/packages/core/src/policy.ts +36 -0
- package/packages/core/src/types.ts +119 -0
- package/packages/core/tsconfig.json +6 -0
- package/packages/embeddings/package.json +9 -0
- package/packages/embeddings/src/index.ts +3 -0
- package/packages/embeddings/src/local.ts +47 -0
- package/packages/embeddings/src/openai.ts +50 -0
- package/packages/embeddings/src/provider.d.ts.map +1 -0
- package/packages/embeddings/src/provider.js.map +1 -0
- package/packages/embeddings/src/provider.ts +17 -0
- package/packages/embeddings/tsconfig.json +6 -0
- package/packages/integrations/package.json +7 -0
- package/packages/integrations/src/anthropic.ts +34 -0
- package/packages/integrations/src/index.ts +3 -0
- package/packages/integrations/src/openai.ts +52 -0
- package/packages/integrations/src/vercel.ts +26 -0
- package/packages/retrieval/package.json +8 -0
- package/packages/retrieval/src/index.ts +2 -0
- package/packages/retrieval/src/ranker.d.ts.map +1 -0
- package/packages/retrieval/src/ranker.js.map +1 -0
- package/packages/retrieval/src/ranker.ts +77 -0
- package/packages/retrieval/src/token.d.ts.map +1 -0
- package/packages/retrieval/src/token.js.map +1 -0
- package/packages/retrieval/src/token.ts +5 -0
- package/packages/retrieval/tsconfig.json +6 -0
- package/packages/storage/package.json +11 -0
- package/packages/storage/src/config.ts +44 -0
- package/packages/storage/src/index.ts +3 -0
- package/packages/storage/src/memory-store.ts +100 -0
- package/packages/storage/src/migrations.ts +96 -0
- package/packages/storage/src/postgres-store.ts +299 -0
- package/packages/storage/src/sqlite-store.ts +298 -0
- package/packages/storage/tsconfig.json +6 -0
- package/test-mvp.mjs +82 -0
- package/tests/consolidation.test.ts +45 -0
- package/tests/eval.test.ts +102 -0
- package/tsconfig.json +21 -0
- package/vitest.config.ts +8 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ranker.js","sourceRoot":"","sources":["../../../../packages/retrieval/src/ranker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../../packages/retrieval/src/token.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGnD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../../../packages/retrieval/src/token.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC;IACpB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { MemoryStore } from "../../core/src/memory-store.js";
|
|
2
|
+
export interface StorageConfig {
|
|
3
|
+
provider: "sqlite" | "postgres" | "memory";
|
|
4
|
+
sqlite?: {
|
|
5
|
+
path?: string;
|
|
6
|
+
};
|
|
7
|
+
postgres?: {
|
|
8
|
+
connectionString: string;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export declare function resolveStorageConfig(): StorageConfig;
|
|
12
|
+
export declare function createStoreFromConfig(config: StorageConfig): MemoryStore;
|
|
13
|
+
export declare function autoDetectProject(): string;
|
|
14
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../packages/storage/src/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAElE,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC3C,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE;QAAE,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAC;CACzC;AAED,wBAAgB,oBAAoB,IAAI,aAAa,CAMpD;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,WAAW,CAWxE;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAY1C"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { SqliteMemoryStore } from "./sqlite-store.js";
|
|
2
|
+
import { PostgresMemoryStore } from "./postgres-store.js";
|
|
3
|
+
export function resolveStorageConfig() {
|
|
4
|
+
const pgUrl = process.env.DATABASE_URL ?? process.env.POSTGRES_URL;
|
|
5
|
+
if (pgUrl)
|
|
6
|
+
return { provider: "postgres", postgres: { connectionString: pgUrl } };
|
|
7
|
+
const sqlitePath = process.env.AGENTMIND_DB ?? process.env.CTX_MEMORY_DB ?? "./.agentmind/memory.db";
|
|
8
|
+
if (sqlitePath === ":memory:")
|
|
9
|
+
return { provider: "memory" };
|
|
10
|
+
return { provider: "sqlite", sqlite: { path: sqlitePath } };
|
|
11
|
+
}
|
|
12
|
+
export function createStoreFromConfig(config) {
|
|
13
|
+
switch (config.provider) {
|
|
14
|
+
case "postgres":
|
|
15
|
+
return new PostgresMemoryStore(config.postgres.connectionString);
|
|
16
|
+
case "sqlite":
|
|
17
|
+
return new SqliteMemoryStore({ path: config.sqlite?.path });
|
|
18
|
+
case "memory":
|
|
19
|
+
return new SqliteMemoryStore({ path: ":memory:" });
|
|
20
|
+
default:
|
|
21
|
+
return new SqliteMemoryStore({ path: "./.agentmind/memory.db" });
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export function autoDetectProject() {
|
|
25
|
+
if (process.env.AGENTMIND_PROJECT ?? process.env.CTX_MEMORY_PROJECT)
|
|
26
|
+
return (process.env.AGENTMIND_PROJECT ?? process.env.CTX_MEMORY_PROJECT);
|
|
27
|
+
try {
|
|
28
|
+
const pkg = JSON.parse(require("node:fs").readFileSync("package.json", "utf-8"));
|
|
29
|
+
if (pkg.name)
|
|
30
|
+
return String(pkg.name).replace(/^@.*\//, "");
|
|
31
|
+
}
|
|
32
|
+
catch { }
|
|
33
|
+
try {
|
|
34
|
+
const cwd = process.cwd().split("/").pop() ?? "default";
|
|
35
|
+
return cwd;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return "default";
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../packages/storage/src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAS1D,MAAM,UAAU,oBAAoB;IAClC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IACnE,IAAI,KAAK;QAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAAE,CAAC;IAClF,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,wBAAwB,CAAC;IACrG,IAAI,UAAU,KAAK,UAAU;QAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAC7D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAqB;IACzD,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,KAAK,UAAU;YACb,OAAO,IAAI,mBAAmB,CAAC,MAAM,CAAC,QAAS,CAAC,gBAAgB,CAAC,CAAC;QACpE,KAAK,QAAQ;YACX,OAAO,IAAI,iBAAiB,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,KAAK,QAAQ;YACX,OAAO,IAAI,iBAAiB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACrD;YACE,OAAO,IAAI,iBAAiB,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAW,CAAC;IACxJ,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;QACjF,IAAI,GAAG,CAAC,IAAI;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IACV,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC;QACxD,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/storage/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/storage/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { MemoryStore } from "../../core/src/memory-store.js";
|
|
2
|
+
import type { Memory, Project, Source, SearchQuery, SearchResult, RetrievalEvent } from "../../core/src/types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Pure in-memory store — zero dependencies, ideal for tests.
|
|
5
|
+
*/
|
|
6
|
+
export declare class InMemoryStore implements MemoryStore {
|
|
7
|
+
private projects;
|
|
8
|
+
private projectsByName;
|
|
9
|
+
private sources;
|
|
10
|
+
private memories;
|
|
11
|
+
private embeddings;
|
|
12
|
+
private retrievals;
|
|
13
|
+
createProject(project: Project): Promise<Project>;
|
|
14
|
+
getProject(id: string): Promise<Project | null>;
|
|
15
|
+
getProjectByName(name: string): Promise<Project | null>;
|
|
16
|
+
listProjects(): Promise<Project[]>;
|
|
17
|
+
deleteProject(projectId: string): Promise<void>;
|
|
18
|
+
createSource(source: Source): Promise<Source>;
|
|
19
|
+
getSource(id: string): Promise<Source | null>;
|
|
20
|
+
createMemory(memory: Memory): Promise<void>;
|
|
21
|
+
getMemory(id: string): Promise<Memory | null>;
|
|
22
|
+
updateMemory(id: string, update: Partial<Memory>): Promise<void>;
|
|
23
|
+
deleteMemory(id: string): Promise<void>;
|
|
24
|
+
archiveMemory(id: string): Promise<void>;
|
|
25
|
+
listMemories(projectId: string): Promise<Memory[]>;
|
|
26
|
+
search(query: SearchQuery): Promise<SearchResult[]>;
|
|
27
|
+
upsertEmbedding(memoryId: string, vector: number[], model: string): Promise<void>;
|
|
28
|
+
getEmbedding(memoryId: string): Promise<{
|
|
29
|
+
vector: number[];
|
|
30
|
+
model: string;
|
|
31
|
+
} | null>;
|
|
32
|
+
deleteEmbedding(memoryId: string): Promise<void>;
|
|
33
|
+
logRetrieval(event: RetrievalEvent): Promise<void>;
|
|
34
|
+
listRetrievals(projectId: string, limit?: number): Promise<RetrievalEvent[]>;
|
|
35
|
+
close(): Promise<void>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=memory-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-store.d.ts","sourceRoot":"","sources":["../../../../packages/storage/src/memory-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAElH;;GAEG;AACH,qBAAa,aAAc,YAAW,WAAW;IAC/C,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,UAAU,CAA0D;IAC5E,OAAO,CAAC,UAAU,CAAwB;IAEpC,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAKjD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAG/C,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAGvD,YAAY,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAGlC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/C,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI7C,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAG7C,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAG3C,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAG7C,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhE,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAGvC,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAGlD,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAqBnD,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAGjF,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAGnF,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAGhD,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAGlD,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAGxE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAC7B"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure in-memory store — zero dependencies, ideal for tests.
|
|
3
|
+
*/
|
|
4
|
+
export class InMemoryStore {
|
|
5
|
+
projects = new Map();
|
|
6
|
+
projectsByName = new Map();
|
|
7
|
+
sources = new Map();
|
|
8
|
+
memories = new Map();
|
|
9
|
+
embeddings = new Map();
|
|
10
|
+
retrievals = [];
|
|
11
|
+
async createProject(project) {
|
|
12
|
+
this.projects.set(project.id, project);
|
|
13
|
+
this.projectsByName.set(project.name, project);
|
|
14
|
+
return project;
|
|
15
|
+
}
|
|
16
|
+
async getProject(id) {
|
|
17
|
+
return this.projects.get(id) ?? null;
|
|
18
|
+
}
|
|
19
|
+
async getProjectByName(name) {
|
|
20
|
+
return this.projectsByName.get(name) ?? null;
|
|
21
|
+
}
|
|
22
|
+
async listProjects() {
|
|
23
|
+
return [...this.projects.values()];
|
|
24
|
+
}
|
|
25
|
+
async deleteProject(projectId) {
|
|
26
|
+
const p = this.projects.get(projectId);
|
|
27
|
+
if (p)
|
|
28
|
+
this.projectsByName.delete(p.name);
|
|
29
|
+
this.projects.delete(projectId);
|
|
30
|
+
for (const [id, m] of this.memories)
|
|
31
|
+
if (m.projectId === projectId)
|
|
32
|
+
this.memories.delete(id);
|
|
33
|
+
}
|
|
34
|
+
async createSource(source) {
|
|
35
|
+
this.sources.set(source.id, source);
|
|
36
|
+
return source;
|
|
37
|
+
}
|
|
38
|
+
async getSource(id) {
|
|
39
|
+
return this.sources.get(id) ?? null;
|
|
40
|
+
}
|
|
41
|
+
async createMemory(memory) {
|
|
42
|
+
this.memories.set(memory.id, memory);
|
|
43
|
+
}
|
|
44
|
+
async getMemory(id) {
|
|
45
|
+
return this.memories.get(id) ?? null;
|
|
46
|
+
}
|
|
47
|
+
async updateMemory(id, update) {
|
|
48
|
+
const existing = this.memories.get(id);
|
|
49
|
+
if (!existing)
|
|
50
|
+
return;
|
|
51
|
+
this.memories.set(id, { ...existing, ...update, id, updatedAt: update.updatedAt ?? new Date() });
|
|
52
|
+
}
|
|
53
|
+
async deleteMemory(id) {
|
|
54
|
+
this.memories.delete(id);
|
|
55
|
+
}
|
|
56
|
+
async archiveMemory(id) {
|
|
57
|
+
const m = this.memories.get(id);
|
|
58
|
+
if (m)
|
|
59
|
+
this.memories.set(id, { ...m, archived: true, status: "archived", updatedAt: new Date() });
|
|
60
|
+
}
|
|
61
|
+
async listMemories(projectId) {
|
|
62
|
+
return [...this.memories.values()].filter((m) => m.projectId === projectId).sort((a, b) => b.updatedAt.getTime() - a.updatedAt.getTime());
|
|
63
|
+
}
|
|
64
|
+
async search(query) {
|
|
65
|
+
let candidates = [...this.memories.values()].filter((m) => m.projectId === query.projectId);
|
|
66
|
+
if (query.types?.length)
|
|
67
|
+
candidates = candidates.filter((m) => query.types.includes(m.type));
|
|
68
|
+
if (query.minImportance !== undefined)
|
|
69
|
+
candidates = candidates.filter((m) => m.importance >= query.minImportance);
|
|
70
|
+
if (!query.includeArchived)
|
|
71
|
+
candidates = candidates.filter((m) => !m.archived && m.status !== "archived");
|
|
72
|
+
const qLower = query.query.toLowerCase();
|
|
73
|
+
const qTokens = new Set(qLower.split(/\W+/).filter(Boolean));
|
|
74
|
+
const scored = candidates.map((m) => {
|
|
75
|
+
const cLower = m.content.toLowerCase();
|
|
76
|
+
const cTokens = cLower.split(/\W+/).filter(Boolean);
|
|
77
|
+
let hits = 0;
|
|
78
|
+
for (const t of cTokens)
|
|
79
|
+
if (qTokens.has(t))
|
|
80
|
+
hits++;
|
|
81
|
+
const phraseBoost = cLower.includes(qLower) ? 0.5 : 0;
|
|
82
|
+
const keywordScore = qTokens.size ? Math.min(1, hits / qTokens.size + phraseBoost) : 0;
|
|
83
|
+
const recency = Math.exp(-(Date.now() - m.updatedAt.getTime()) / (1000 * 60 * 60 * 24 * 30));
|
|
84
|
+
const final = keywordScore * 0.7 + m.importance * 0.15 + recency * 0.15;
|
|
85
|
+
return { memory: m, score: final, semanticScore: 0, keywordScore };
|
|
86
|
+
});
|
|
87
|
+
scored.sort((a, b) => b.score - a.score);
|
|
88
|
+
return scored.slice(0, query.limit ?? 5);
|
|
89
|
+
}
|
|
90
|
+
async upsertEmbedding(memoryId, vector, model) {
|
|
91
|
+
this.embeddings.set(memoryId, { vector, model });
|
|
92
|
+
}
|
|
93
|
+
async getEmbedding(memoryId) {
|
|
94
|
+
return this.embeddings.get(memoryId) ?? null;
|
|
95
|
+
}
|
|
96
|
+
async deleteEmbedding(memoryId) {
|
|
97
|
+
this.embeddings.delete(memoryId);
|
|
98
|
+
}
|
|
99
|
+
async logRetrieval(event) {
|
|
100
|
+
this.retrievals.push(event);
|
|
101
|
+
}
|
|
102
|
+
async listRetrievals(projectId, limit = 20) {
|
|
103
|
+
return this.retrievals.filter((r) => r.projectId === projectId).slice(-limit).reverse();
|
|
104
|
+
}
|
|
105
|
+
async close() { }
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=memory-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-store.js","sourceRoot":"","sources":["../../../../packages/storage/src/memory-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration system for both SQLite (node:sqlite) and Postgres.
|
|
3
|
+
* Versioned, idempotent — tracks `schema_migrations` table.
|
|
4
|
+
*/
|
|
5
|
+
export interface Migration {
|
|
6
|
+
version: number;
|
|
7
|
+
name: string;
|
|
8
|
+
up: string;
|
|
9
|
+
}
|
|
10
|
+
export declare const MIGRATIONS: Migration[];
|
|
11
|
+
export declare function getPendingMigrations(applied: number[]): Migration[];
|
|
12
|
+
//# sourceMappingURL=migrations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../../../packages/storage/src/migrations.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,eAAO,MAAM,UAAU,EAAE,SAAS,EAgFjC,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAEnE"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration system for both SQLite (node:sqlite) and Postgres.
|
|
3
|
+
* Versioned, idempotent — tracks `schema_migrations` table.
|
|
4
|
+
*/
|
|
5
|
+
export const MIGRATIONS = [
|
|
6
|
+
{
|
|
7
|
+
version: 1,
|
|
8
|
+
name: "initial",
|
|
9
|
+
up: `
|
|
10
|
+
CREATE TABLE IF NOT EXISTS schema_migrations (
|
|
11
|
+
version INTEGER PRIMARY KEY,
|
|
12
|
+
name TEXT NOT NULL,
|
|
13
|
+
applied_at TEXT NOT NULL
|
|
14
|
+
);
|
|
15
|
+
CREATE TABLE IF NOT EXISTS projects (
|
|
16
|
+
id TEXT PRIMARY KEY,
|
|
17
|
+
name TEXT UNIQUE NOT NULL,
|
|
18
|
+
description TEXT,
|
|
19
|
+
created_at TEXT NOT NULL,
|
|
20
|
+
updated_at TEXT NOT NULL
|
|
21
|
+
);
|
|
22
|
+
CREATE TABLE IF NOT EXISTS sources (
|
|
23
|
+
id TEXT PRIMARY KEY,
|
|
24
|
+
project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
|
|
25
|
+
type TEXT NOT NULL,
|
|
26
|
+
content TEXT,
|
|
27
|
+
created_at TEXT NOT NULL,
|
|
28
|
+
metadata TEXT NOT NULL
|
|
29
|
+
);
|
|
30
|
+
CREATE TABLE IF NOT EXISTS memories (
|
|
31
|
+
id TEXT PRIMARY KEY,
|
|
32
|
+
project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
|
|
33
|
+
type TEXT NOT NULL,
|
|
34
|
+
content TEXT NOT NULL,
|
|
35
|
+
importance REAL NOT NULL,
|
|
36
|
+
confidence REAL NOT NULL,
|
|
37
|
+
status TEXT NOT NULL,
|
|
38
|
+
created_at TEXT NOT NULL,
|
|
39
|
+
updated_at TEXT NOT NULL,
|
|
40
|
+
last_accessed_at TEXT,
|
|
41
|
+
access_count INTEGER NOT NULL,
|
|
42
|
+
source_id TEXT REFERENCES sources(id) ON DELETE SET NULL,
|
|
43
|
+
metadata TEXT NOT NULL,
|
|
44
|
+
archived INTEGER NOT NULL DEFAULT 0
|
|
45
|
+
);
|
|
46
|
+
CREATE TABLE IF NOT EXISTS embeddings (
|
|
47
|
+
memory_id TEXT PRIMARY KEY REFERENCES memories(id) ON DELETE CASCADE,
|
|
48
|
+
vector TEXT NOT NULL,
|
|
49
|
+
model TEXT NOT NULL,
|
|
50
|
+
dimensions INTEGER NOT NULL
|
|
51
|
+
);
|
|
52
|
+
CREATE TABLE IF NOT EXISTS retrieval_events (
|
|
53
|
+
id TEXT PRIMARY KEY,
|
|
54
|
+
project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
|
|
55
|
+
query TEXT NOT NULL,
|
|
56
|
+
retrieved_memory_ids TEXT NOT NULL,
|
|
57
|
+
scores TEXT NOT NULL,
|
|
58
|
+
final_context_tokens INTEGER NOT NULL,
|
|
59
|
+
created_at TEXT NOT NULL
|
|
60
|
+
);
|
|
61
|
+
CREATE TABLE IF NOT EXISTS consolidations (
|
|
62
|
+
id TEXT PRIMARY KEY,
|
|
63
|
+
project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
|
|
64
|
+
summary_memory_id TEXT REFERENCES memories(id) ON DELETE SET NULL,
|
|
65
|
+
source_memory_ids TEXT NOT NULL,
|
|
66
|
+
created_at TEXT NOT NULL
|
|
67
|
+
);
|
|
68
|
+
CREATE INDEX IF NOT EXISTS idx_memories_project ON memories(project_id);
|
|
69
|
+
CREATE INDEX IF NOT EXISTS idx_memories_type ON memories(type);
|
|
70
|
+
CREATE INDEX IF NOT EXISTS idx_memories_status ON memories(status);
|
|
71
|
+
`,
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
version: 2,
|
|
75
|
+
name: "pgvector",
|
|
76
|
+
up: `
|
|
77
|
+
-- Postgres only: enable pgvector
|
|
78
|
+
-- CREATE EXTENSION IF NOT EXISTS vector;
|
|
79
|
+
-- ALTER TABLE embeddings ADD COLUMN IF NOT EXISTS vec vector(1536);
|
|
80
|
+
-- CREATE INDEX IF NOT EXISTS idx_embeddings_vec ON embeddings USING hnsw (vec vector_cosine_ops);
|
|
81
|
+
-- For SQLite, this migration is a no-op (vector stored as JSON text)
|
|
82
|
+
SELECT 1;
|
|
83
|
+
`,
|
|
84
|
+
},
|
|
85
|
+
];
|
|
86
|
+
export function getPendingMigrations(applied) {
|
|
87
|
+
return MIGRATIONS.filter((m) => !applied.includes(m.version));
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=migrations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../../../packages/storage/src/migrations.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,CAAC,MAAM,UAAU,GAAgB;IACrC;QACE,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,SAAS;QACf,EAAE,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8DH;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,UAAU;QAChB,EAAE,EAAE;;;;;;;KAOH;KACF;CACF,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAAC,OAAiB;IACpD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { MemoryStore } from "../../core/src/memory-store.js";
|
|
2
|
+
import type { Memory, Project, Source, SearchQuery, SearchResult, RetrievalEvent } from "../../core/src/types.js";
|
|
3
|
+
export interface PostgresStoreOptions {
|
|
4
|
+
connectionString: string;
|
|
5
|
+
maxPool?: number;
|
|
6
|
+
vectorDimensions?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare class PostgresMemoryStore implements MemoryStore {
|
|
9
|
+
private pool;
|
|
10
|
+
private dimensions;
|
|
11
|
+
private ready;
|
|
12
|
+
constructor(opts: string | PostgresStoreOptions);
|
|
13
|
+
private migrate;
|
|
14
|
+
private ensureReady;
|
|
15
|
+
createProject(project: Project): Promise<Project>;
|
|
16
|
+
getProject(id: string): Promise<Project | null>;
|
|
17
|
+
getProjectByName(name: string): Promise<Project | null>;
|
|
18
|
+
listProjects(): Promise<Project[]>;
|
|
19
|
+
deleteProject(projectId: string): Promise<void>;
|
|
20
|
+
createSource(source: Source): Promise<Source>;
|
|
21
|
+
getSource(id: string): Promise<Source | null>;
|
|
22
|
+
createMemory(memory: Memory): Promise<void>;
|
|
23
|
+
getMemory(id: string): Promise<Memory | null>;
|
|
24
|
+
updateMemory(id: string, update: Partial<Memory>): Promise<void>;
|
|
25
|
+
deleteMemory(id: string): Promise<void>;
|
|
26
|
+
archiveMemory(id: string): Promise<void>;
|
|
27
|
+
listMemories(projectId: string): Promise<Memory[]>;
|
|
28
|
+
search(query: SearchQuery): Promise<SearchResult[]>;
|
|
29
|
+
upsertEmbedding(memoryId: string, vector: number[], model: string): Promise<void>;
|
|
30
|
+
getEmbedding(memoryId: string): Promise<{
|
|
31
|
+
vector: number[];
|
|
32
|
+
model: string;
|
|
33
|
+
} | null>;
|
|
34
|
+
/** pgvector semantic search — use when MemoryEngine wants native vector ranking */
|
|
35
|
+
vectorSearch(projectId: string, queryVector: number[], limit?: number): Promise<Array<{
|
|
36
|
+
memory: Memory;
|
|
37
|
+
distance: number;
|
|
38
|
+
}>>;
|
|
39
|
+
logRetrieval(event: RetrievalEvent): Promise<void>;
|
|
40
|
+
listRetrievals(projectId: string, limit?: number): Promise<RetrievalEvent[]>;
|
|
41
|
+
close(): Promise<void>;
|
|
42
|
+
private mapProject;
|
|
43
|
+
private mapMemory;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=postgres-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres-store.d.ts","sourceRoot":"","sources":["../../../../packages/storage/src/postgres-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAclH,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,mBAAoB,YAAW,WAAW;IACrD,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,KAAK,CAAgB;gBAEjB,IAAI,EAAE,MAAM,GAAG,oBAAoB;YAUjC,OAAO;YA+EP,WAAW;IAGnB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAKjD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAM/C,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAMvD,YAAY,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAKlC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/C,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK7C,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAS7C,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3C,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAM7C,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAOhE,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvC,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKlD,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAoCnD,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjF,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAOzF,mFAAmF;IAC7E,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAexH,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAcxE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAE5B,OAAO,CAAC,UAAU,CAMf;IACH,OAAO,CAAC,SAAS,CAed;CACJ"}
|