universal-agent-memory 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/LICENSE +21 -0
- package/README.md +321 -0
- package/dist/analyzers/index.d.ts +3 -0
- package/dist/analyzers/index.d.ts.map +1 -0
- package/dist/analyzers/index.js +373 -0
- package/dist/analyzers/index.js.map +1 -0
- package/dist/bin/cli.d.ts +3 -0
- package/dist/bin/cli.d.ts.map +1 -0
- package/dist/bin/cli.js +119 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/cli/analyze.d.ts +7 -0
- package/dist/cli/analyze.d.ts.map +1 -0
- package/dist/cli/analyze.js +103 -0
- package/dist/cli/analyze.js.map +1 -0
- package/dist/cli/droids.d.ts +9 -0
- package/dist/cli/droids.d.ts.map +1 -0
- package/dist/cli/droids.js +227 -0
- package/dist/cli/droids.js.map +1 -0
- package/dist/cli/generate.d.ts +9 -0
- package/dist/cli/generate.d.ts.map +1 -0
- package/dist/cli/generate.js +203 -0
- package/dist/cli/generate.js.map +1 -0
- package/dist/cli/init.d.ts +12 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +260 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/memory.d.ts +15 -0
- package/dist/cli/memory.d.ts.map +1 -0
- package/dist/cli/memory.js +274 -0
- package/dist/cli/memory.js.map +1 -0
- package/dist/cli/sync.d.ts +7 -0
- package/dist/cli/sync.d.ts.map +1 -0
- package/dist/cli/sync.js +26 -0
- package/dist/cli/sync.js.map +1 -0
- package/dist/cli/worktree.d.ts +9 -0
- package/dist/cli/worktree.d.ts.map +1 -0
- package/dist/cli/worktree.js +175 -0
- package/dist/cli/worktree.js.map +1 -0
- package/dist/generators/claude-md.d.ts +3 -0
- package/dist/generators/claude-md.d.ts.map +1 -0
- package/dist/generators/claude-md.js +643 -0
- package/dist/generators/claude-md.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/backends/base.d.ts +18 -0
- package/dist/memory/backends/base.d.ts.map +1 -0
- package/dist/memory/backends/base.js +2 -0
- package/dist/memory/backends/base.js.map +1 -0
- package/dist/memory/backends/factory.d.ts +4 -0
- package/dist/memory/backends/factory.d.ts.map +1 -0
- package/dist/memory/backends/factory.js +52 -0
- package/dist/memory/backends/factory.js.map +1 -0
- package/dist/memory/backends/github.d.ts +22 -0
- package/dist/memory/backends/github.d.ts.map +1 -0
- package/dist/memory/backends/github.js +118 -0
- package/dist/memory/backends/github.js.map +1 -0
- package/dist/memory/backends/qdrant-cloud.d.ts +19 -0
- package/dist/memory/backends/qdrant-cloud.d.ts.map +1 -0
- package/dist/memory/backends/qdrant-cloud.js +111 -0
- package/dist/memory/backends/qdrant-cloud.js.map +1 -0
- package/dist/memory/prepopulate.d.ts +76 -0
- package/dist/memory/prepopulate.d.ts.map +1 -0
- package/dist/memory/prepopulate.js +815 -0
- package/dist/memory/prepopulate.js.map +1 -0
- package/dist/memory/short-term/factory.d.ts +23 -0
- package/dist/memory/short-term/factory.d.ts.map +1 -0
- package/dist/memory/short-term/factory.js +28 -0
- package/dist/memory/short-term/factory.js.map +1 -0
- package/dist/memory/short-term/indexeddb.d.ts +25 -0
- package/dist/memory/short-term/indexeddb.d.ts.map +1 -0
- package/dist/memory/short-term/indexeddb.js +64 -0
- package/dist/memory/short-term/indexeddb.js.map +1 -0
- package/dist/memory/short-term/sqlite.d.ts +40 -0
- package/dist/memory/short-term/sqlite.d.ts.map +1 -0
- package/dist/memory/short-term/sqlite.js +136 -0
- package/dist/memory/short-term/sqlite.js.map +1 -0
- package/dist/types/analysis.d.ts +82 -0
- package/dist/types/analysis.d.ts.map +1 -0
- package/dist/types/analysis.js +2 -0
- package/dist/types/analysis.js.map +1 -0
- package/dist/types/config.d.ts +923 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +97 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/merge-claude-md.d.ts +15 -0
- package/dist/utils/merge-claude-md.d.ts.map +1 -0
- package/dist/utils/merge-claude-md.js +149 -0
- package/dist/utils/merge-claude-md.js.map +1 -0
- package/package.json +90 -0
- package/templates/CLAUDE.template.md +632 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/memory/backends/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAI/C,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAsDnG"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { GitHubMemoryBackend } from './github.js';
|
|
2
|
+
import { QdrantCloudBackend } from './qdrant-cloud.js';
|
|
3
|
+
export async function createMemoryBackend(config) {
|
|
4
|
+
if (!config.memory?.longTerm?.enabled) {
|
|
5
|
+
return null;
|
|
6
|
+
}
|
|
7
|
+
const longTerm = config.memory.longTerm;
|
|
8
|
+
// Check GitHub backend (opt-in via config or env vars)
|
|
9
|
+
if (longTerm.github?.enabled) {
|
|
10
|
+
const token = longTerm.github.token || process.env.GITHUB_TOKEN;
|
|
11
|
+
const repo = longTerm.github.repo;
|
|
12
|
+
if (token && repo) {
|
|
13
|
+
try {
|
|
14
|
+
const backend = new GitHubMemoryBackend({
|
|
15
|
+
token,
|
|
16
|
+
repo,
|
|
17
|
+
path: longTerm.github.path || '.uam/memory',
|
|
18
|
+
branch: longTerm.github.branch || 'main',
|
|
19
|
+
});
|
|
20
|
+
if (await backend.isConfigured()) {
|
|
21
|
+
return backend;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
console.warn(`GitHub backend not available: ${error}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// Check Qdrant Cloud backend (opt-in via config or env vars)
|
|
30
|
+
if (longTerm.qdrantCloud?.enabled) {
|
|
31
|
+
const apiKey = longTerm.qdrantCloud.apiKey || process.env.QDRANT_API_KEY;
|
|
32
|
+
const url = longTerm.qdrantCloud.url || process.env.QDRANT_URL;
|
|
33
|
+
if (apiKey && url) {
|
|
34
|
+
try {
|
|
35
|
+
const backend = new QdrantCloudBackend({
|
|
36
|
+
url,
|
|
37
|
+
apiKey,
|
|
38
|
+
collection: longTerm.qdrantCloud.collection || 'agent_memory',
|
|
39
|
+
});
|
|
40
|
+
if (await backend.isConfigured()) {
|
|
41
|
+
return backend;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
console.warn(`Qdrant Cloud backend not available: ${error}`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// No configured backend found - gracefully return null
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/memory/backends/factory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAA0B;IAClE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;IAExC,uDAAuD;IACvD,IAAI,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QAChE,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;QAElC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC;oBACtC,KAAK;oBACL,IAAI;oBACJ,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,aAAa;oBAC3C,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM;iBACzC,CAAC,CAAC;gBAEH,IAAI,MAAM,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;oBACjC,OAAO,OAAO,CAAC;gBACjB,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,iCAAiC,KAAK,EAAE,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;IACH,CAAC;IAED,6DAA6D;IAC7D,IAAI,QAAQ,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QACzE,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QAE/D,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;YAClB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAC;oBACrC,GAAG;oBACH,MAAM;oBACN,UAAU,EAAE,QAAQ,CAAC,WAAW,CAAC,UAAU,IAAI,cAAc;iBAC9D,CAAC,CAAC;gBAEH,IAAI,MAAM,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;oBACjC,OAAO,OAAO,CAAC;gBACjB,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;IAED,uDAAuD;IACvD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { MemoryBackend, MemoryEntry } from './base.js';
|
|
2
|
+
interface GitHubMemoryBackendConfig {
|
|
3
|
+
token: string;
|
|
4
|
+
repo: string;
|
|
5
|
+
path: string;
|
|
6
|
+
branch: string;
|
|
7
|
+
}
|
|
8
|
+
export declare class GitHubMemoryBackend implements MemoryBackend {
|
|
9
|
+
private octokit;
|
|
10
|
+
private repo;
|
|
11
|
+
private owner;
|
|
12
|
+
private path;
|
|
13
|
+
private branch;
|
|
14
|
+
constructor(config: GitHubMemoryBackendConfig);
|
|
15
|
+
isConfigured(): Promise<boolean>;
|
|
16
|
+
store(entry: MemoryEntry): Promise<void>;
|
|
17
|
+
query(query: string, limit?: number): Promise<MemoryEntry[]>;
|
|
18
|
+
getRecent(limit?: number): Promise<MemoryEntry[]>;
|
|
19
|
+
prune(olderThan: Date): Promise<number>;
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=github.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../src/memory/backends/github.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE5D,UAAU,yBAAyB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,mBAAoB,YAAW,aAAa;IACvD,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,yBAAyB;IAWvC,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAShC,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBxC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAOxD,SAAS,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAoC7C,KAAK,CAAC,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;CAiC9C"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { Octokit } from '@octokit/rest';
|
|
2
|
+
export class GitHubMemoryBackend {
|
|
3
|
+
octokit;
|
|
4
|
+
repo;
|
|
5
|
+
owner;
|
|
6
|
+
path;
|
|
7
|
+
branch;
|
|
8
|
+
constructor(config) {
|
|
9
|
+
const token = config.token || process.env.GITHUB_TOKEN;
|
|
10
|
+
if (!token) {
|
|
11
|
+
throw new Error('GitHub token required (GITHUB_TOKEN env var or config)');
|
|
12
|
+
}
|
|
13
|
+
this.octokit = new Octokit({ auth: token });
|
|
14
|
+
[this.owner, this.repo] = config.repo.split('/');
|
|
15
|
+
this.path = config.path;
|
|
16
|
+
this.branch = config.branch;
|
|
17
|
+
}
|
|
18
|
+
async isConfigured() {
|
|
19
|
+
try {
|
|
20
|
+
await this.octokit.repos.get({ owner: this.owner, repo: this.repo });
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async store(entry) {
|
|
28
|
+
const filename = `${entry.timestamp.replace(/:/g, '-')}_${entry.id}.json`;
|
|
29
|
+
const filePath = `${this.path}/${filename}`;
|
|
30
|
+
const content = Buffer.from(JSON.stringify(entry, null, 2)).toString('base64');
|
|
31
|
+
try {
|
|
32
|
+
await this.octokit.repos.createOrUpdateFileContents({
|
|
33
|
+
owner: this.owner,
|
|
34
|
+
repo: this.repo,
|
|
35
|
+
path: filePath,
|
|
36
|
+
message: `Add memory: ${entry.type} - ${entry.content.substring(0, 50)}`,
|
|
37
|
+
content,
|
|
38
|
+
branch: this.branch,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
throw new Error(`Failed to store memory in GitHub: ${error}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
async query(query, limit = 10) {
|
|
46
|
+
const memories = await this.getRecent(50);
|
|
47
|
+
return memories
|
|
48
|
+
.filter((m) => m.content.toLowerCase().includes(query.toLowerCase()))
|
|
49
|
+
.slice(0, limit);
|
|
50
|
+
}
|
|
51
|
+
async getRecent(limit = 50) {
|
|
52
|
+
try {
|
|
53
|
+
const { data: files } = await this.octokit.repos.getContent({
|
|
54
|
+
owner: this.owner,
|
|
55
|
+
repo: this.repo,
|
|
56
|
+
path: this.path,
|
|
57
|
+
ref: this.branch,
|
|
58
|
+
});
|
|
59
|
+
if (!Array.isArray(files))
|
|
60
|
+
return [];
|
|
61
|
+
const sortedFiles = files
|
|
62
|
+
.filter((f) => f.type === 'file' && f.name.endsWith('.json'))
|
|
63
|
+
.sort((a, b) => b.name.localeCompare(a.name))
|
|
64
|
+
.slice(0, limit);
|
|
65
|
+
const memories = [];
|
|
66
|
+
for (const file of sortedFiles) {
|
|
67
|
+
const { data } = await this.octokit.repos.getContent({
|
|
68
|
+
owner: this.owner,
|
|
69
|
+
repo: this.repo,
|
|
70
|
+
path: file.path,
|
|
71
|
+
ref: this.branch,
|
|
72
|
+
});
|
|
73
|
+
if ('content' in data) {
|
|
74
|
+
const content = Buffer.from(data.content, 'base64').toString();
|
|
75
|
+
memories.push(JSON.parse(content));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return memories;
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return [];
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
async prune(olderThan) {
|
|
85
|
+
try {
|
|
86
|
+
const { data: files } = await this.octokit.repos.getContent({
|
|
87
|
+
owner: this.owner,
|
|
88
|
+
repo: this.repo,
|
|
89
|
+
path: this.path,
|
|
90
|
+
ref: this.branch,
|
|
91
|
+
});
|
|
92
|
+
if (!Array.isArray(files))
|
|
93
|
+
return 0;
|
|
94
|
+
let deleted = 0;
|
|
95
|
+
for (const file of files) {
|
|
96
|
+
if (file.type === 'file' && file.name.endsWith('.json')) {
|
|
97
|
+
const timestamp = file.name.split('_')[0].replace(/-/g, ':');
|
|
98
|
+
if (new Date(timestamp) < olderThan) {
|
|
99
|
+
await this.octokit.repos.deleteFile({
|
|
100
|
+
owner: this.owner,
|
|
101
|
+
repo: this.repo,
|
|
102
|
+
path: file.path,
|
|
103
|
+
message: `Prune old memory: ${file.name}`,
|
|
104
|
+
sha: file.sha,
|
|
105
|
+
branch: this.branch,
|
|
106
|
+
});
|
|
107
|
+
deleted++;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return deleted;
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
return 0;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=github.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../../src/memory/backends/github.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { MemoryBackend, MemoryEntry } from './base.js';
|
|
2
|
+
interface QdrantCloudBackendConfig {
|
|
3
|
+
url: string;
|
|
4
|
+
apiKey: string;
|
|
5
|
+
collection: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class QdrantCloudBackend implements MemoryBackend {
|
|
8
|
+
private client;
|
|
9
|
+
private collection;
|
|
10
|
+
constructor(config: QdrantCloudBackendConfig);
|
|
11
|
+
isConfigured(): Promise<boolean>;
|
|
12
|
+
store(entry: MemoryEntry): Promise<void>;
|
|
13
|
+
query(_queryText: string, limit?: number): Promise<MemoryEntry[]>;
|
|
14
|
+
getRecent(limit?: number): Promise<MemoryEntry[]>;
|
|
15
|
+
prune(olderThan: Date): Promise<number>;
|
|
16
|
+
private ensureCollection;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=qdrant-cloud.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qdrant-cloud.d.ts","sourceRoot":"","sources":["../../../src/memory/backends/qdrant-cloud.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE5D,UAAU,wBAAwB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,kBAAmB,YAAW,aAAa;IACtD,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE,wBAAwB;IAYtC,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAShC,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBxC,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAsB7D,SAAS,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAkB7C,KAAK,CAAC,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;YAuB/B,gBAAgB;CAU/B"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { QdrantClient } from '@qdrant/js-client-rest';
|
|
2
|
+
export class QdrantCloudBackend {
|
|
3
|
+
client;
|
|
4
|
+
collection;
|
|
5
|
+
constructor(config) {
|
|
6
|
+
const apiKey = config.apiKey || process.env.QDRANT_API_KEY;
|
|
7
|
+
const url = config.url || process.env.QDRANT_URL;
|
|
8
|
+
if (!url || !apiKey) {
|
|
9
|
+
throw new Error('Qdrant Cloud URL and API key required (QDRANT_URL and QDRANT_API_KEY env vars or config)');
|
|
10
|
+
}
|
|
11
|
+
this.client = new QdrantClient({ url, apiKey });
|
|
12
|
+
this.collection = config.collection;
|
|
13
|
+
}
|
|
14
|
+
async isConfigured() {
|
|
15
|
+
try {
|
|
16
|
+
await this.client.getCollections();
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
async store(entry) {
|
|
24
|
+
if (!entry.embedding) {
|
|
25
|
+
throw new Error('Embedding required for Qdrant storage');
|
|
26
|
+
}
|
|
27
|
+
await this.ensureCollection();
|
|
28
|
+
await this.client.upsert(this.collection, {
|
|
29
|
+
points: [
|
|
30
|
+
{
|
|
31
|
+
id: entry.id,
|
|
32
|
+
vector: entry.embedding,
|
|
33
|
+
payload: {
|
|
34
|
+
timestamp: entry.timestamp,
|
|
35
|
+
type: entry.type,
|
|
36
|
+
content: entry.content,
|
|
37
|
+
tags: entry.tags,
|
|
38
|
+
importance: entry.importance,
|
|
39
|
+
...entry.metadata,
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
async query(_queryText, limit = 10) {
|
|
46
|
+
// TODO: Generate embedding for query string
|
|
47
|
+
// For now, use dummy embedding - needs embedding service integration
|
|
48
|
+
const queryEmbedding = new Array(384).fill(0);
|
|
49
|
+
const results = await this.client.search(this.collection, {
|
|
50
|
+
vector: queryEmbedding,
|
|
51
|
+
limit,
|
|
52
|
+
});
|
|
53
|
+
return results.map((r) => ({
|
|
54
|
+
id: String(r.id),
|
|
55
|
+
timestamp: r.payload?.timestamp,
|
|
56
|
+
type: r.payload?.type,
|
|
57
|
+
content: r.payload?.content,
|
|
58
|
+
embedding: r.vector,
|
|
59
|
+
tags: r.payload?.tags,
|
|
60
|
+
importance: r.payload?.importance,
|
|
61
|
+
metadata: r.payload,
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
async getRecent(limit = 50) {
|
|
65
|
+
const results = await this.client.scroll(this.collection, {
|
|
66
|
+
limit,
|
|
67
|
+
with_payload: true,
|
|
68
|
+
with_vector: false,
|
|
69
|
+
});
|
|
70
|
+
return results.points.map((r) => ({
|
|
71
|
+
id: String(r.id),
|
|
72
|
+
timestamp: r.payload?.timestamp,
|
|
73
|
+
type: r.payload?.type,
|
|
74
|
+
content: r.payload?.content,
|
|
75
|
+
tags: r.payload?.tags,
|
|
76
|
+
importance: r.payload?.importance,
|
|
77
|
+
metadata: r.payload,
|
|
78
|
+
}));
|
|
79
|
+
}
|
|
80
|
+
async prune(olderThan) {
|
|
81
|
+
const results = await this.client.scroll(this.collection, {
|
|
82
|
+
filter: {
|
|
83
|
+
must: [
|
|
84
|
+
{
|
|
85
|
+
key: 'timestamp',
|
|
86
|
+
range: {
|
|
87
|
+
lt: olderThan.toISOString(),
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
],
|
|
91
|
+
},
|
|
92
|
+
limit: 1000,
|
|
93
|
+
with_payload: false,
|
|
94
|
+
});
|
|
95
|
+
const ids = results.points.map((p) => p.id);
|
|
96
|
+
if (ids.length > 0) {
|
|
97
|
+
await this.client.delete(this.collection, { points: ids });
|
|
98
|
+
}
|
|
99
|
+
return ids.length;
|
|
100
|
+
}
|
|
101
|
+
async ensureCollection() {
|
|
102
|
+
const collections = await this.client.getCollections();
|
|
103
|
+
const exists = collections.collections.some((c) => c.name === this.collection);
|
|
104
|
+
if (!exists) {
|
|
105
|
+
await this.client.createCollection(this.collection, {
|
|
106
|
+
vectors: { size: 384, distance: 'Cosine' },
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=qdrant-cloud.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qdrant-cloud.js","sourceRoot":"","sources":["../../../src/memory/backends/qdrant-cloud.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { MemoryEntry } from './backends/base.js';
|
|
2
|
+
export interface PrepopulateOptions {
|
|
3
|
+
docs?: boolean;
|
|
4
|
+
git?: boolean;
|
|
5
|
+
skills?: boolean;
|
|
6
|
+
limit?: number;
|
|
7
|
+
since?: string;
|
|
8
|
+
verbose?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface PrepopulateResult {
|
|
11
|
+
docsProcessed: number;
|
|
12
|
+
gitCommitsProcessed: number;
|
|
13
|
+
skillsDiscovered: number;
|
|
14
|
+
artifactsDiscovered: number;
|
|
15
|
+
memoriesCreated: number;
|
|
16
|
+
errors: string[];
|
|
17
|
+
}
|
|
18
|
+
export interface DiscoveredSkill {
|
|
19
|
+
name: string;
|
|
20
|
+
path: string;
|
|
21
|
+
type: 'droid' | 'skill' | 'command' | 'artifact';
|
|
22
|
+
description?: string;
|
|
23
|
+
platform: 'factory' | 'claude' | 'opencode' | 'generic';
|
|
24
|
+
}
|
|
25
|
+
interface ParsedDocument {
|
|
26
|
+
path: string;
|
|
27
|
+
title: string;
|
|
28
|
+
sections: Array<{
|
|
29
|
+
heading: string;
|
|
30
|
+
content: string;
|
|
31
|
+
type: 'setup' | 'architecture' | 'api' | 'troubleshooting' | 'general';
|
|
32
|
+
}>;
|
|
33
|
+
}
|
|
34
|
+
interface GitCommit {
|
|
35
|
+
hash: string;
|
|
36
|
+
date: string;
|
|
37
|
+
author: string;
|
|
38
|
+
message: string;
|
|
39
|
+
body: string;
|
|
40
|
+
files: string[];
|
|
41
|
+
type: 'fix' | 'feat' | 'refactor' | 'docs' | 'test' | 'chore' | 'revert' | 'other';
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Prepopulate memory from project documentation, git history, and skills/artifacts
|
|
45
|
+
*/
|
|
46
|
+
export declare function prepopulateMemory(cwd: string, options?: PrepopulateOptions): Promise<{
|
|
47
|
+
shortTerm: MemoryEntry[];
|
|
48
|
+
longTerm: MemoryEntry[];
|
|
49
|
+
skills: DiscoveredSkill[];
|
|
50
|
+
}>;
|
|
51
|
+
/**
|
|
52
|
+
* Parse all documentation files in the project
|
|
53
|
+
*/
|
|
54
|
+
export declare function parseDocumentation(cwd: string, verbose?: boolean): Promise<ParsedDocument[]>;
|
|
55
|
+
/**
|
|
56
|
+
* Extract git commit history with details
|
|
57
|
+
*/
|
|
58
|
+
export declare function extractGitHistory(cwd: string, limit?: number, since?: string): Promise<GitCommit[]>;
|
|
59
|
+
/**
|
|
60
|
+
* Convert documentation into memory entries
|
|
61
|
+
*/
|
|
62
|
+
export declare function extractDocumentationMemories(docs: ParsedDocument[]): MemoryEntry[];
|
|
63
|
+
/**
|
|
64
|
+
* Convert git history into memory entries with learnings
|
|
65
|
+
*/
|
|
66
|
+
export declare function extractGitLearnings(commits: GitCommit[]): MemoryEntry[];
|
|
67
|
+
/**
|
|
68
|
+
* Discover skills, droids, commands, and artifacts from various platforms
|
|
69
|
+
*/
|
|
70
|
+
export declare function discoverSkillsAndArtifacts(cwd: string, verbose?: boolean): Promise<DiscoveredSkill[]>;
|
|
71
|
+
/**
|
|
72
|
+
* Convert discovered skills into memory entries
|
|
73
|
+
*/
|
|
74
|
+
export declare function extractSkillMemories(skills: DiscoveredSkill[]): MemoryEntry[];
|
|
75
|
+
export {};
|
|
76
|
+
//# sourceMappingURL=prepopulate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepopulate.d.ts","sourceRoot":"","sources":["../../src/memory/prepopulate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;CACzD;AAED,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,OAAO,GAAG,cAAc,GAAG,KAAK,GAAG,iBAAiB,GAAG,SAAS,CAAC;KACxE,CAAC,CAAC;CACJ;AAED,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;CACpF;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC;IAAE,SAAS,EAAE,WAAW,EAAE,CAAC;IAAC,QAAQ,EAAE,WAAW,EAAE,CAAC;IAAC,MAAM,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC,CA6C3F;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CA2DhG;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,KAAK,SAAM,EACX,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,SAAS,EAAE,CAAC,CA6DtB;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,WAAW,EAAE,CAmClF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,WAAW,EAAE,CAgHvE;AAyTD;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,MAAM,EACX,OAAO,UAAQ,GACd,OAAO,CAAC,eAAe,EAAE,CAAC,CAuG5B;AA8CD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE,CAkG7E"}
|