teammind 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/README.md +366 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +667 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +11 -0
- package/dist/config.js +55 -0
- package/dist/config.js.map +1 -0
- package/dist/constants.d.ts +9 -0
- package/dist/constants.js +18 -0
- package/dist/constants.js.map +1 -0
- package/dist/db.d.ts +60 -0
- package/dist/db.js +246 -0
- package/dist/db.js.map +1 -0
- package/dist/embed.d.ts +6 -0
- package/dist/embed.js +107 -0
- package/dist/embed.js.map +1 -0
- package/dist/extract.d.ts +9 -0
- package/dist/extract.js +101 -0
- package/dist/extract.js.map +1 -0
- package/dist/git.d.ts +9 -0
- package/dist/git.js +54 -0
- package/dist/git.js.map +1 -0
- package/dist/search.d.ts +11 -0
- package/dist/search.js +131 -0
- package/dist/search.js.map +1 -0
- package/dist/server.d.ts +1 -0
- package/dist/server.js +153 -0
- package/dist/server.js.map +1 -0
- package/dist/staleness.d.ts +10 -0
- package/dist/staleness.js +40 -0
- package/dist/staleness.js.map +1 -0
- package/dist/sync.d.ts +22 -0
- package/dist/sync.js +92 -0
- package/dist/sync.js.map +1 -0
- package/package.json +38 -0
package/dist/sync.js
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.exportMemories = exportMemories;
|
|
4
|
+
exports.importMemories = importMemories;
|
|
5
|
+
exports.writeExportFile = writeExportFile;
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
const db_1 = require("./db");
|
|
8
|
+
const embed_1 = require("./embed");
|
|
9
|
+
// Strip anything that looks like a secret
|
|
10
|
+
const SECRET_PATTERNS = [
|
|
11
|
+
/\b[A-Za-z0-9_-]{20,}\b/g, // Long random tokens
|
|
12
|
+
/(?:api[_-]?key|token|secret|password|passwd|pwd)\s*[:=]\s*\S+/gi,
|
|
13
|
+
/sk-[A-Za-z0-9]{32,}/g, // OpenAI-style keys
|
|
14
|
+
/ghp_[A-Za-z0-9]{36}/g, // GitHub tokens
|
|
15
|
+
/Bearer\s+[A-Za-z0-9._-]+/gi,
|
|
16
|
+
];
|
|
17
|
+
function scrubSecrets(text) {
|
|
18
|
+
let out = text;
|
|
19
|
+
// Only scrub if the token looks suspicious (in a key=value context)
|
|
20
|
+
out = out.replace(/(?:api[_-]?key|token|secret|password|passwd|pwd)\s*[:=]\s*\S+/gi, '[REDACTED]');
|
|
21
|
+
out = out.replace(/sk-[A-Za-z0-9]{32,}/g, '[REDACTED]');
|
|
22
|
+
out = out.replace(/ghp_[A-Za-z0-9]{36}/g, '[REDACTED]');
|
|
23
|
+
out = out.replace(/Bearer\s+[A-Za-z0-9._-]{20,}/gi, 'Bearer [REDACTED]');
|
|
24
|
+
return out;
|
|
25
|
+
}
|
|
26
|
+
function exportMemories(repoPath) {
|
|
27
|
+
const memories = (0, db_1.getMemories)(repoPath, { limit: 1000, includeStale: false });
|
|
28
|
+
return {
|
|
29
|
+
version: '1.0',
|
|
30
|
+
exported_at: new Date().toISOString(),
|
|
31
|
+
memories: memories.map(m => ({
|
|
32
|
+
id: m.id,
|
|
33
|
+
content: scrubSecrets(m.content),
|
|
34
|
+
summary: scrubSecrets(m.summary),
|
|
35
|
+
tags: m.tags,
|
|
36
|
+
file_paths: m.file_paths,
|
|
37
|
+
functions: m.functions,
|
|
38
|
+
git_commit: m.git_commit,
|
|
39
|
+
git_branch: m.git_branch,
|
|
40
|
+
created_by: m.created_by,
|
|
41
|
+
created_at: new Date(m.created_at).toISOString(),
|
|
42
|
+
}))
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
async function importMemories(filePath, repoPath, createdBy = 'teammate') {
|
|
46
|
+
if (!(0, fs_1.existsSync)(filePath)) {
|
|
47
|
+
throw new Error(`File not found: ${filePath}`);
|
|
48
|
+
}
|
|
49
|
+
const raw = JSON.parse((0, fs_1.readFileSync)(filePath, 'utf8'));
|
|
50
|
+
if (raw.version !== '1.0' || !Array.isArray(raw.memories)) {
|
|
51
|
+
throw new Error('Invalid team memory file format');
|
|
52
|
+
}
|
|
53
|
+
let imported = 0;
|
|
54
|
+
let skipped = 0;
|
|
55
|
+
for (const m of raw.memories) {
|
|
56
|
+
if (!m.content || !m.summary) {
|
|
57
|
+
skipped++;
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
// Embed and save
|
|
61
|
+
let embedding = null;
|
|
62
|
+
try {
|
|
63
|
+
const vec = await (0, embed_1.embed)(m.content);
|
|
64
|
+
embedding = (0, embed_1.serializeVec)(vec);
|
|
65
|
+
}
|
|
66
|
+
catch { /* embedding optional */ }
|
|
67
|
+
const id = (0, db_1.saveMemory)({
|
|
68
|
+
content: m.content,
|
|
69
|
+
summary: m.summary,
|
|
70
|
+
tags: m.tags || [],
|
|
71
|
+
file_paths: m.file_paths || [],
|
|
72
|
+
functions: m.functions || [],
|
|
73
|
+
embedding,
|
|
74
|
+
repo_path: repoPath,
|
|
75
|
+
git_commit: m.git_commit,
|
|
76
|
+
git_branch: m.git_branch,
|
|
77
|
+
created_by: m.created_by || createdBy,
|
|
78
|
+
source: 'auto',
|
|
79
|
+
stale: 0,
|
|
80
|
+
});
|
|
81
|
+
// Save file refs without hashes (can't recompute historical hashes)
|
|
82
|
+
if (m.file_paths.length > 0) {
|
|
83
|
+
(0, db_1.saveMemoryFiles)(id, m.file_paths.map(fp => ({ path: fp, hash: '' })));
|
|
84
|
+
}
|
|
85
|
+
imported++;
|
|
86
|
+
}
|
|
87
|
+
return { imported, skipped };
|
|
88
|
+
}
|
|
89
|
+
function writeExportFile(exportData, outputPath) {
|
|
90
|
+
(0, fs_1.writeFileSync)(outputPath, JSON.stringify(exportData, null, 2));
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=sync.js.map
|
package/dist/sync.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "teammind",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Git-aware persistent memory for Claude Code teams",
|
|
5
|
+
"bin": {
|
|
6
|
+
"teammind": "./dist/cli.js"
|
|
7
|
+
},
|
|
8
|
+
"main": "./dist/server.js",
|
|
9
|
+
"files": [
|
|
10
|
+
"dist/",
|
|
11
|
+
"README.md"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "tsc",
|
|
15
|
+
"dev": "tsx src/cli.ts",
|
|
16
|
+
"prepublishOnly": "npm run build"
|
|
17
|
+
},
|
|
18
|
+
"keywords": ["claude-code", "mcp", "memory", "ai", "team"],
|
|
19
|
+
"license": "MIT",
|
|
20
|
+
"engines": {
|
|
21
|
+
"node": ">=18.0.0"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@anthropic-ai/sdk": "^0.39.0",
|
|
25
|
+
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
26
|
+
"@huggingface/transformers": "^3.0.0",
|
|
27
|
+
"chalk": "^4.1.2",
|
|
28
|
+
"commander": "^12.1.0",
|
|
29
|
+
"nanoid": "^3.3.7",
|
|
30
|
+
"ora": "^5.4.1",
|
|
31
|
+
"simple-git": "^3.25.0"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"@types/node": "^22.0.0",
|
|
35
|
+
"tsx": "^4.16.0",
|
|
36
|
+
"typescript": "^5.5.0"
|
|
37
|
+
}
|
|
38
|
+
}
|