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/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
@@ -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
+ }