teammind 0.2.0 → 0.2.2

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.
@@ -0,0 +1,6 @@
1
+ declare const GLOBAL_CLAUDE_MD: string;
2
+ export declare function extractPreferencesFromTranscripts(transcripts: string[]): string[];
3
+ export declare function readPersonaSection(): string | null;
4
+ export declare function writePersonaSection(prefs: string[]): void;
5
+ export declare function clearPersonaSection(): void;
6
+ export { GLOBAL_CLAUDE_MD };
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.GLOBAL_CLAUDE_MD = void 0;
7
+ exports.extractPreferencesFromTranscripts = extractPreferencesFromTranscripts;
8
+ exports.readPersonaSection = readPersonaSection;
9
+ exports.writePersonaSection = writePersonaSection;
10
+ exports.clearPersonaSection = clearPersonaSection;
11
+ const fs_1 = require("fs");
12
+ const path_1 = __importDefault(require("path"));
13
+ const os_1 = __importDefault(require("os"));
14
+ const GLOBAL_CLAUDE_MD = path_1.default.join(os_1.default.homedir(), '.claude', 'CLAUDE.md');
15
+ exports.GLOBAL_CLAUDE_MD = GLOBAL_CLAUDE_MD;
16
+ const SECTION_START = '<!-- teammind-persona:start -->';
17
+ const SECTION_END = '<!-- teammind-persona:end -->';
18
+ // ─── Explicit feedback signals ────────────────────────────────────────────────
19
+ // Things users directly say about how they want Claude to behave.
20
+ const EXPLICIT_SIGNALS = [
21
+ [
22
+ /\b(too long|too verbose|too wordy|be (?:more )?(?:brief|concise|short)|keep it (?:short|brief|concise)|shorter)\b/gi,
23
+ 'Keep responses concise — avoid lengthy explanations',
24
+ ],
25
+ [
26
+ /\b(stop (?:explaining|summariz\w*)|don'?t explain|skip (?:the )?explanation|no explanation)\b/gi,
27
+ 'Skip explanations unless explicitly asked',
28
+ ],
29
+ [
30
+ /\b(don'?t summarize|no summary|skip (?:the )?summary|stop summariz\w*)\b/gi,
31
+ 'Do not add a summary at the end of responses',
32
+ ],
33
+ [
34
+ /\b(just (?:show|write|give)(?: me)?(?: the)? code|show(?: the)? code (?:first|directly)|code first)\b/gi,
35
+ 'Show code directly rather than describing it first',
36
+ ],
37
+ [
38
+ /\bjust do it\b|don'?t ask(?: me)?\b|without asking\b|stop asking\b/gi,
39
+ 'Take action directly — do not ask for confirmation on straightforward tasks',
40
+ ],
41
+ [
42
+ /\buse bullet points?\b|format (?:it |this )?(?:as |with )?(?:bullets?|bullet points?)\b/gi,
43
+ 'Use bullet points for multi-item responses',
44
+ ],
45
+ [
46
+ /\bdon'?t (?:add|use|put) (?:any )?emojis?\b|no emojis?\b/gi,
47
+ 'Do not use emojis',
48
+ ],
49
+ [
50
+ /\bmore (?:detail|context|depth)\b|explain (?:more|further|in (?:more )?detail)\b/gi,
51
+ 'Provide more detail and context when explaining things',
52
+ ],
53
+ ];
54
+ // ─── Behavioral pattern analysis ─────────────────────────────────────────────
55
+ // Inferred from how the user naturally writes — no explicit feedback needed.
56
+ function wordCount(s) {
57
+ return s.trim().split(/\s+/).filter(Boolean).length;
58
+ }
59
+ function analyzeBehavior(messages) {
60
+ if (messages.length < 3)
61
+ return [];
62
+ const prefs = [];
63
+ // 1. Message length → response length preference
64
+ const lengths = messages.map(wordCount);
65
+ const median = lengths.slice().sort((a, b) => a - b)[Math.floor(lengths.length / 2)];
66
+ if (median < 12) {
67
+ prefs.push('User sends short, direct messages — keep responses concise and to the point');
68
+ }
69
+ // 2. Direct command style (messages that start with a verb or are imperative)
70
+ const imperativeRx = /^(find|add|fix|make|show|write|build|change|update|remove|delete|get|run|check|use|go|create|give|just|do|push|test|read|try|look|tell|explain|help|stop|start|move|set|put|take|let|keep|turn|open|close|clean|refactor|rename|edit|search|fetch|deploy|install|enable|disable)\b/i;
71
+ const imperativeCount = messages.filter(m => imperativeRx.test(m.trim())).length;
72
+ if (imperativeCount / messages.length > 0.4) {
73
+ prefs.push('User is action-oriented — lead with action, not discussion');
74
+ }
75
+ // 3. Correction/redirect pattern ("no", "actually", "wait", "i dont want", "not that")
76
+ const correctionRx = /^(no\b|nope|not that|actually|wait|wrong|i don'?t want|i didn'?t|that'?s not|not what)/i;
77
+ const correctionCount = messages.filter(m => correctionRx.test(m.trim())).length;
78
+ if (correctionCount >= 2) {
79
+ prefs.push('Pivot quickly when corrected — do not over-explain the mistake');
80
+ }
81
+ // 4. Casual/lowercase style (no capitalization, no punctuation)
82
+ const lowercaseCount = messages.filter(m => m.length > 3 && m === m.toLowerCase()).length;
83
+ if (lowercaseCount / messages.length > 0.6) {
84
+ prefs.push('User writes casually — match with a direct, informal tone');
85
+ }
86
+ // 5. "find more" / "more" as standalone → user scans quickly, wants more options not deeper dives
87
+ const moreRx = /^(find more|more|give me more|show more|keep going|continue|next)\b/i;
88
+ const moreCount = messages.filter(m => moreRx.test(m.trim())).length;
89
+ if (moreCount >= 2) {
90
+ prefs.push('User prefers breadth — when asked for more, provide new options rather than elaborating');
91
+ }
92
+ return prefs;
93
+ }
94
+ // ─── Extraction ───────────────────────────────────────────────────────────────
95
+ function getUserMessages(transcript) {
96
+ const messages = [];
97
+ const rx = /\[USER\]:\s*/gi;
98
+ let m;
99
+ while ((m = rx.exec(transcript)) !== null) {
100
+ const start = m.index + m[0].length;
101
+ const rest = transcript.slice(start);
102
+ const cutoff = rest.search(/\n\[(?:USER|HUMAN|ASSISTANT)\]:/i);
103
+ const body = (cutoff > 0 ? rest.slice(0, cutoff) : rest).trim();
104
+ // Skip tool output injections and very long messages (not real user turns)
105
+ if (body.length > 5 && body.length < 500)
106
+ messages.push(body);
107
+ }
108
+ return messages;
109
+ }
110
+ function extractPreferencesFromTranscripts(transcripts) {
111
+ const explicitCounts = new Map();
112
+ const allMessages = [];
113
+ for (const transcript of transcripts) {
114
+ const userMessages = getUserMessages(transcript);
115
+ allMessages.push(...userMessages);
116
+ const seenInSession = new Set();
117
+ for (const msg of userMessages) {
118
+ for (const [rx, pref] of EXPLICIT_SIGNALS) {
119
+ rx.lastIndex = 0;
120
+ if (rx.test(msg) && !seenInSession.has(pref)) {
121
+ seenInSession.add(pref);
122
+ explicitCounts.set(pref, (explicitCounts.get(pref) || 0) + 1);
123
+ }
124
+ }
125
+ }
126
+ }
127
+ const explicit = [...explicitCounts.entries()]
128
+ .sort((a, b) => b[1] - a[1])
129
+ .slice(0, 4)
130
+ .map(([pref]) => pref);
131
+ const behavioral = analyzeBehavior(allMessages);
132
+ // Merge: explicit signals take priority, behavioral fills the rest up to 6 total
133
+ const combined = [...explicit];
134
+ for (const b of behavioral) {
135
+ if (combined.length >= 6)
136
+ break;
137
+ combined.push(b);
138
+ }
139
+ return combined;
140
+ }
141
+ // ─── CLAUDE.md read / write / clear ──────────────────────────────────────────
142
+ function readPersonaSection() {
143
+ if (!(0, fs_1.existsSync)(GLOBAL_CLAUDE_MD))
144
+ return null;
145
+ const content = (0, fs_1.readFileSync)(GLOBAL_CLAUDE_MD, 'utf8');
146
+ const start = content.indexOf(SECTION_START);
147
+ const end = content.indexOf(SECTION_END);
148
+ if (start === -1 || end === -1)
149
+ return null;
150
+ return content.slice(start + SECTION_START.length, end).trim();
151
+ }
152
+ function writePersonaSection(prefs) {
153
+ const section = [
154
+ SECTION_START,
155
+ '',
156
+ '## User Interaction Preferences',
157
+ '',
158
+ ...prefs.map(p => `- ${p}`),
159
+ '',
160
+ SECTION_END,
161
+ ].join('\n');
162
+ (0, fs_1.mkdirSync)(path_1.default.dirname(GLOBAL_CLAUDE_MD), { recursive: true });
163
+ if (!(0, fs_1.existsSync)(GLOBAL_CLAUDE_MD)) {
164
+ (0, fs_1.writeFileSync)(GLOBAL_CLAUDE_MD, section + '\n');
165
+ return;
166
+ }
167
+ const content = (0, fs_1.readFileSync)(GLOBAL_CLAUDE_MD, 'utf8');
168
+ const start = content.indexOf(SECTION_START);
169
+ const end = content.indexOf(SECTION_END);
170
+ if (start === -1 || end === -1) {
171
+ (0, fs_1.writeFileSync)(GLOBAL_CLAUDE_MD, content.trimEnd() + '\n\n' + section + '\n');
172
+ }
173
+ else {
174
+ const before = content.slice(0, start);
175
+ const after = content.slice(end + SECTION_END.length);
176
+ (0, fs_1.writeFileSync)(GLOBAL_CLAUDE_MD, before + section + after);
177
+ }
178
+ }
179
+ function clearPersonaSection() {
180
+ if (!(0, fs_1.existsSync)(GLOBAL_CLAUDE_MD))
181
+ return;
182
+ const content = (0, fs_1.readFileSync)(GLOBAL_CLAUDE_MD, 'utf8');
183
+ const start = content.indexOf(SECTION_START);
184
+ const end = content.indexOf(SECTION_END);
185
+ if (start === -1 || end === -1)
186
+ return;
187
+ const before = content.slice(0, start).trimEnd();
188
+ const after = content.slice(end + SECTION_END.length).trimStart();
189
+ const result = [before, after].filter(Boolean).join('\n\n');
190
+ (0, fs_1.writeFileSync)(GLOBAL_CLAUDE_MD, result ? result + '\n' : '');
191
+ }
192
+ //# sourceMappingURL=persona.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persona.js","sourceRoot":"","sources":["../src/persona.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "teammind",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Git-aware persistent memory for Claude Code teams",
5
5
  "bin": {
6
6
  "teammind": "./dist/cli.js"
@@ -15,7 +15,13 @@
15
15
  "dev": "tsx src/cli.ts",
16
16
  "prepublishOnly": "npm run build"
17
17
  },
18
- "keywords": ["claude-code", "mcp", "memory", "ai", "team"],
18
+ "keywords": [
19
+ "claude-code",
20
+ "mcp",
21
+ "memory",
22
+ "ai",
23
+ "team"
24
+ ],
19
25
  "license": "MIT",
20
26
  "engines": {
21
27
  "node": ">=18.0.0"