psychmem 1.0.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.
Files changed (93) hide show
  1. package/README.md +632 -0
  2. package/dist/adapters/claude-code/index.d.ts +125 -0
  3. package/dist/adapters/claude-code/index.d.ts.map +1 -0
  4. package/dist/adapters/claude-code/index.js +398 -0
  5. package/dist/adapters/claude-code/index.js.map +1 -0
  6. package/dist/adapters/opencode/index.d.ts +50 -0
  7. package/dist/adapters/opencode/index.d.ts.map +1 -0
  8. package/dist/adapters/opencode/index.js +793 -0
  9. package/dist/adapters/opencode/index.js.map +1 -0
  10. package/dist/adapters/types.d.ts +226 -0
  11. package/dist/adapters/types.d.ts.map +1 -0
  12. package/dist/adapters/types.js +6 -0
  13. package/dist/adapters/types.js.map +1 -0
  14. package/dist/cli.d.ts +19 -0
  15. package/dist/cli.d.ts.map +1 -0
  16. package/dist/cli.js +461 -0
  17. package/dist/cli.js.map +1 -0
  18. package/dist/hooks/index.d.ts +92 -0
  19. package/dist/hooks/index.d.ts.map +1 -0
  20. package/dist/hooks/index.js +304 -0
  21. package/dist/hooks/index.js.map +1 -0
  22. package/dist/hooks/post-tool-use.d.ts +26 -0
  23. package/dist/hooks/post-tool-use.d.ts.map +1 -0
  24. package/dist/hooks/post-tool-use.js +69 -0
  25. package/dist/hooks/post-tool-use.js.map +1 -0
  26. package/dist/hooks/session-end.d.ts +32 -0
  27. package/dist/hooks/session-end.d.ts.map +1 -0
  28. package/dist/hooks/session-end.js +66 -0
  29. package/dist/hooks/session-end.js.map +1 -0
  30. package/dist/hooks/session-start.d.ts +55 -0
  31. package/dist/hooks/session-start.d.ts.map +1 -0
  32. package/dist/hooks/session-start.js +173 -0
  33. package/dist/hooks/session-start.js.map +1 -0
  34. package/dist/hooks/stop.d.ts +72 -0
  35. package/dist/hooks/stop.d.ts.map +1 -0
  36. package/dist/hooks/stop.js +273 -0
  37. package/dist/hooks/stop.js.map +1 -0
  38. package/dist/index.d.ts +114 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +191 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/memory/context-sweep.d.ts +107 -0
  43. package/dist/memory/context-sweep.d.ts.map +1 -0
  44. package/dist/memory/context-sweep.js +557 -0
  45. package/dist/memory/context-sweep.js.map +1 -0
  46. package/dist/memory/patterns.d.ts +106 -0
  47. package/dist/memory/patterns.d.ts.map +1 -0
  48. package/dist/memory/patterns.js +613 -0
  49. package/dist/memory/patterns.js.map +1 -0
  50. package/dist/memory/selective-memory.d.ts +78 -0
  51. package/dist/memory/selective-memory.d.ts.map +1 -0
  52. package/dist/memory/selective-memory.js +227 -0
  53. package/dist/memory/selective-memory.js.map +1 -0
  54. package/dist/memory/structural-analyzer.d.ts +75 -0
  55. package/dist/memory/structural-analyzer.d.ts.map +1 -0
  56. package/dist/memory/structural-analyzer.js +359 -0
  57. package/dist/memory/structural-analyzer.js.map +1 -0
  58. package/dist/retrieval/index.d.ts +106 -0
  59. package/dist/retrieval/index.d.ts.map +1 -0
  60. package/dist/retrieval/index.js +291 -0
  61. package/dist/retrieval/index.js.map +1 -0
  62. package/dist/storage/database.d.ts +138 -0
  63. package/dist/storage/database.d.ts.map +1 -0
  64. package/dist/storage/database.js +748 -0
  65. package/dist/storage/database.js.map +1 -0
  66. package/dist/storage/sqlite-adapter.d.ts +35 -0
  67. package/dist/storage/sqlite-adapter.d.ts.map +1 -0
  68. package/dist/storage/sqlite-adapter.js +103 -0
  69. package/dist/storage/sqlite-adapter.js.map +1 -0
  70. package/dist/transcript/index.d.ts +8 -0
  71. package/dist/transcript/index.d.ts.map +1 -0
  72. package/dist/transcript/index.js +6 -0
  73. package/dist/transcript/index.js.map +1 -0
  74. package/dist/transcript/parser.d.ts +93 -0
  75. package/dist/transcript/parser.d.ts.map +1 -0
  76. package/dist/transcript/parser.js +373 -0
  77. package/dist/transcript/parser.js.map +1 -0
  78. package/dist/transcript/sweep.d.ts +75 -0
  79. package/dist/transcript/sweep.d.ts.map +1 -0
  80. package/dist/transcript/sweep.js +202 -0
  81. package/dist/transcript/sweep.js.map +1 -0
  82. package/dist/types/index.d.ts +328 -0
  83. package/dist/types/index.d.ts.map +1 -0
  84. package/dist/types/index.js +80 -0
  85. package/dist/types/index.js.map +1 -0
  86. package/dist/utils/paths.d.ts +19 -0
  87. package/dist/utils/paths.d.ts.map +1 -0
  88. package/dist/utils/paths.js +43 -0
  89. package/dist/utils/paths.js.map +1 -0
  90. package/hooks/hooks.json +54 -0
  91. package/package.json +83 -0
  92. package/plugin.js +45 -0
  93. package/plugin.json +19 -0
package/dist/index.js ADDED
@@ -0,0 +1,191 @@
1
+ /**
2
+ * PsychMem - Main Entry Point
3
+ *
4
+ * Psych-grounded selective memory system for AI agents
5
+ *
6
+ * Usage:
7
+ * psychmem hook <json-input> Process a hook event
8
+ * psychmem search <query> Search memories
9
+ * psychmem get <id> Get memory details
10
+ * psychmem stats Show memory stats
11
+ * psychmem decay Apply decay to all memories
12
+ * psychmem consolidate Run STM→LTM consolidation
13
+ */
14
+ import { PsychMemHooks, createPsychMemHooks } from './hooks/index.js';
15
+ import { MemoryRetrieval } from './retrieval/index.js';
16
+ import { MemoryDatabase, createMemoryDatabase } from './storage/database.js';
17
+ import { DEFAULT_CONFIG } from './types/index.js';
18
+ export class PsychMem {
19
+ hooks;
20
+ retrieval;
21
+ db;
22
+ config;
23
+ initialized = false;
24
+ _externalDb;
25
+ constructor(config = {}, db) {
26
+ this.config = { ...DEFAULT_CONFIG, ...config };
27
+ if (db) {
28
+ this._externalDb = db;
29
+ }
30
+ }
31
+ /**
32
+ * Initialize the PsychMem instance (must be called before use)
33
+ */
34
+ async init() {
35
+ if (this.initialized)
36
+ return;
37
+ this.db = this._externalDb ?? await createMemoryDatabase(this.config);
38
+ this.hooks = await createPsychMemHooks(this.config, this.db);
39
+ this.retrieval = new MemoryRetrieval(this.db, this.config);
40
+ this.initialized = true;
41
+ }
42
+ /**
43
+ * Ensure instance is initialized
44
+ */
45
+ ensureInit() {
46
+ if (!this.initialized) {
47
+ throw new Error('PsychMem not initialized. Call await psychmem.init() first.');
48
+ }
49
+ }
50
+ /**
51
+ * Process a hook event
52
+ */
53
+ async handleHook(input) {
54
+ this.ensureInit();
55
+ return this.hooks.handle(input);
56
+ }
57
+ /**
58
+ * Search memories
59
+ */
60
+ search(query, limit) {
61
+ this.ensureInit();
62
+ return this.retrieval.search(query, undefined, limit);
63
+ }
64
+ /**
65
+ * Get memory by ID
66
+ */
67
+ getMemory(id) {
68
+ this.ensureInit();
69
+ return this.retrieval.getMemory(id);
70
+ }
71
+ /**
72
+ * Get memory details for multiple IDs
73
+ */
74
+ getMemories(ids, sessionId) {
75
+ this.ensureInit();
76
+ return this.retrieval.retrieveDetails(ids, sessionId);
77
+ }
78
+ /**
79
+ * Get memory stats
80
+ */
81
+ getStats() {
82
+ this.ensureInit();
83
+ const stmActive = this.db.getMemoriesByStore('stm', 'active');
84
+ const ltmActive = this.db.getMemoriesByStore('ltm', 'active');
85
+ const stmDecayed = this.db.getMemoriesByStore('stm', 'decayed');
86
+ const ltmDecayed = this.db.getMemoriesByStore('ltm', 'decayed');
87
+ const stmPinned = this.db.getMemoriesByStore('stm', 'pinned');
88
+ const ltmPinned = this.db.getMemoriesByStore('ltm', 'pinned');
89
+ return {
90
+ stm: {
91
+ count: stmActive.length,
92
+ decayedCount: stmDecayed.length,
93
+ pinnedCount: stmPinned.length,
94
+ avgStrength: this.avgStrength(stmActive),
95
+ },
96
+ ltm: {
97
+ count: ltmActive.length,
98
+ decayedCount: ltmDecayed.length,
99
+ pinnedCount: ltmPinned.length,
100
+ avgStrength: this.avgStrength(ltmActive),
101
+ },
102
+ total: stmActive.length + ltmActive.length,
103
+ totalIncludingDecayed: stmActive.length + ltmActive.length +
104
+ stmDecayed.length + ltmDecayed.length +
105
+ stmPinned.length + ltmPinned.length,
106
+ };
107
+ }
108
+ /**
109
+ * List memories, optionally filtered by store and/or status
110
+ */
111
+ listMemories(options = {}) {
112
+ this.ensureInit();
113
+ const { store, status = 'active', limit = 50 } = options;
114
+ if (store) {
115
+ return this.db.getMemoriesByStore(store, status).slice(0, limit);
116
+ }
117
+ const stm = this.db.getMemoriesByStore('stm', status);
118
+ const ltm = this.db.getMemoriesByStore('ltm', status);
119
+ return [...ltm, ...stm]
120
+ .sort((a, b) => b.strength - a.strength)
121
+ .slice(0, limit);
122
+ }
123
+ /**
124
+ * Apply decay to all memories
125
+ */
126
+ applyDecay() {
127
+ this.ensureInit();
128
+ return this.db.applyDecay();
129
+ }
130
+ /**
131
+ * Run consolidation
132
+ */
133
+ runConsolidation() {
134
+ this.ensureInit();
135
+ return this.db.runConsolidation();
136
+ }
137
+ /**
138
+ * Pin a memory (prevent decay)
139
+ */
140
+ pinMemory(id) {
141
+ this.ensureInit();
142
+ this.db.addFeedback('pin', id);
143
+ }
144
+ /**
145
+ * Forget a memory
146
+ */
147
+ forgetMemory(id) {
148
+ this.ensureInit();
149
+ this.db.addFeedback('forget', id);
150
+ }
151
+ /**
152
+ * Remember a memory (boost importance + promote to LTM)
153
+ */
154
+ rememberMemory(id) {
155
+ this.ensureInit();
156
+ this.db.addFeedback('remember', id);
157
+ }
158
+ /**
159
+ * Close database connection
160
+ */
161
+ close() {
162
+ if (this.initialized) {
163
+ this.db.close();
164
+ this.hooks.close();
165
+ }
166
+ }
167
+ avgStrength(memories) {
168
+ if (memories.length === 0)
169
+ return 0;
170
+ return memories.reduce((sum, m) => sum + m.strength, 0) / memories.length;
171
+ }
172
+ }
173
+ /**
174
+ * Create and initialize a PsychMem instance
175
+ */
176
+ export async function createPsychMem(config = {}, db) {
177
+ const psychmem = new PsychMem(config, db);
178
+ await psychmem.init();
179
+ return psychmem;
180
+ }
181
+ // Re-export types and utilities
182
+ export * from './types/index.js';
183
+ export { PsychMemHooks, createPsychMemHooks } from './hooks/index.js';
184
+ export { MemoryRetrieval } from './retrieval/index.js';
185
+ export { MemoryDatabase, createMemoryDatabase } from './storage/database.js';
186
+ export { ContextSweep } from './memory/context-sweep.js';
187
+ export { SelectiveMemory } from './memory/selective-memory.js';
188
+ // Re-export adapters
189
+ export { createOpenCodePlugin, OpenCodeAdapter } from './adapters/opencode/index.js';
190
+ export { ClaudeCodeAdapter, createClaudeCodeAdapter } from './adapters/claude-code/index.js';
191
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Context Sweep - Stage 1 of the selective memory pipeline
3
+ *
4
+ * v1.5: Now includes:
5
+ * - Multilingual keyword patterns (15 languages)
6
+ * - Structural/pragmatic signal detection (language-agnostic)
7
+ * - Unified classification with confidence differentiation
8
+ *
9
+ * Extracts memory candidates from raw events by detecting:
10
+ * - Importance signals (emphasis, corrections, repetitions)
11
+ * - Classification (bugfix, learning, decision, etc.)
12
+ * - Preliminary relevance scoring
13
+ *
14
+ * This is the CRITICAL component - without good extraction, the rest collapses.
15
+ */
16
+ import type { Event, MemoryCandidate, SweepConfig } from '../types/index.js';
17
+ export declare class ContextSweep {
18
+ private config;
19
+ private structuralAnalyzer;
20
+ constructor(config?: Partial<SweepConfig>);
21
+ /**
22
+ * Extract memory candidates from a list of events
23
+ */
24
+ extractCandidates(events: Event[]): MemoryCandidate[];
25
+ /**
26
+ * Extract candidates from conversation text (Stop event)
27
+ * This is a comprehensive analysis of the full conversation
28
+ *
29
+ * v1.5: Now uses multilingual patterns + structural signals
30
+ */
31
+ private extractFromConversationText;
32
+ /**
33
+ * Detect the role (user/assistant/tool) from chunk prefix
34
+ */
35
+ private detectChunkRole;
36
+ /**
37
+ * Check if chunk contains tool error indicators
38
+ */
39
+ private chunkHasToolError;
40
+ /**
41
+ * Get extraction method description
42
+ */
43
+ private getExtractionMethod;
44
+ /**
45
+ * Split content into semantic chunks for analysis.
46
+ *
47
+ * Strategies (tried in order):
48
+ * 1. Double-newline paragraphs (standard prose)
49
+ * 2. Conversation turns (Human:/Assistant: prefixed lines from extractConversationText)
50
+ * 3. Sentences
51
+ * 4. Whole content as single chunk
52
+ */
53
+ private splitIntoChunks;
54
+ /**
55
+ * Extract candidate from a user prompt
56
+ * v1.5: Now uses multilingual patterns + structural signals
57
+ */
58
+ private extractFromUserPrompt;
59
+ /**
60
+ * Extract candidates from tool events (bugs, fixes, learnings)
61
+ * v1.5: Now uses multilingual patterns
62
+ */
63
+ private extractFromToolEvents;
64
+ /**
65
+ * Detect repeated concepts/requests across events
66
+ */
67
+ private detectRepetitions;
68
+ /**
69
+ * Classify content into a memory classification
70
+ * v1.5: Uses multilingual patterns first, then structural heuristics
71
+ */
72
+ private classifyContentMultilingual;
73
+ /**
74
+ * Generate a concise summary for a memory candidate
75
+ * v1.5: Considers structural signals in summary selection
76
+ */
77
+ private generateSummary;
78
+ /**
79
+ * Format summary with classification prefix
80
+ */
81
+ private formatSummary;
82
+ /**
83
+ * Generate summary for tool events
84
+ */
85
+ private generateToolSummary;
86
+ /**
87
+ * Get emoji for classification
88
+ */
89
+ private getClassificationEmoji;
90
+ /**
91
+ * Calculate preliminary importance from signals
92
+ */
93
+ private calculatePreliminaryImportance;
94
+ /**
95
+ * Extract key concepts from content (simple keyword extraction)
96
+ */
97
+ private extractKeyConcepts;
98
+ /**
99
+ * Deduplicate and merge similar candidates
100
+ */
101
+ private deduplicateCandidates;
102
+ /**
103
+ * Simple similarity calculation (Jaccard index on words)
104
+ */
105
+ private calculateSimilarity;
106
+ }
107
+ //# sourceMappingURL=context-sweep.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-sweep.d.ts","sourceRoot":"","sources":["../../src/memory/context-sweep.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,KAAK,EACL,eAAe,EAIf,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAS3B,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,kBAAkB,CAAqB;gBAEnC,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM;IAK7C;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,eAAe,EAAE;IAwCrD;;;;;OAKG;IACH,OAAO,CAAC,2BAA2B;IA+EnC;;OAEG;IACH,OAAO,CAAC,eAAe;IAQvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;;;;;;;OAQG;IACH,OAAO,CAAC,eAAe;IAkDvB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAoD7B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IA6C7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA4CzB;;;OAGG;IACH,OAAO,CAAC,2BAA2B;IAuCnC;;;OAGG;IACH,OAAO,CAAC,eAAe;IAwCvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAKrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAc9B;;OAEG;IACH,OAAO,CAAC,8BAA8B;IAiBtC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA4B1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA+C7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAS5B"}