true-mem 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.
- package/LICENSE +21 -0
- package/README.md +217 -0
- package/dist/adapters/opencode/index.d.ts +11 -0
- package/dist/adapters/opencode/index.d.ts.map +1 -0
- package/dist/adapters/opencode/index.js +676 -0
- package/dist/adapters/opencode/index.js.map +1 -0
- package/dist/adapters/opencode/injection.d.ts +52 -0
- package/dist/adapters/opencode/injection.d.ts.map +1 -0
- package/dist/adapters/opencode/injection.js +93 -0
- package/dist/adapters/opencode/injection.js.map +1 -0
- package/dist/config.d.ts +9 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +61 -0
- package/dist/config.js.map +1 -0
- package/dist/extraction/queue.d.ts +35 -0
- package/dist/extraction/queue.d.ts.map +1 -0
- package/dist/extraction/queue.js +75 -0
- package/dist/extraction/queue.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2900 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +6 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +30 -0
- package/dist/logger.js.map +1 -0
- package/dist/memory/classifier.d.ts +78 -0
- package/dist/memory/classifier.d.ts.map +1 -0
- package/dist/memory/classifier.js +363 -0
- package/dist/memory/classifier.js.map +1 -0
- package/dist/memory/embeddings.d.ts +41 -0
- package/dist/memory/embeddings.d.ts.map +1 -0
- package/dist/memory/embeddings.js +98 -0
- package/dist/memory/embeddings.js.map +1 -0
- package/dist/memory/negative-patterns.d.ts +32 -0
- package/dist/memory/negative-patterns.d.ts.map +1 -0
- package/dist/memory/negative-patterns.js +71 -0
- package/dist/memory/negative-patterns.js.map +1 -0
- package/dist/memory/patterns.d.ts +110 -0
- package/dist/memory/patterns.d.ts.map +1 -0
- package/dist/memory/patterns.js +623 -0
- package/dist/memory/patterns.js.map +1 -0
- package/dist/memory/reconsolidate.d.ts +57 -0
- package/dist/memory/reconsolidate.d.ts.map +1 -0
- package/dist/memory/reconsolidate.js +96 -0
- package/dist/memory/reconsolidate.js.map +1 -0
- package/dist/memory/role-patterns.d.ts +50 -0
- package/dist/memory/role-patterns.d.ts.map +1 -0
- package/dist/memory/role-patterns.js +188 -0
- package/dist/memory/role-patterns.js.map +1 -0
- package/dist/shutdown.d.ts +31 -0
- package/dist/shutdown.d.ts.map +1 -0
- package/dist/shutdown.js +120 -0
- package/dist/shutdown.js.map +1 -0
- package/dist/storage/database.d.ts +77 -0
- package/dist/storage/database.d.ts.map +1 -0
- package/dist/storage/database.js +590 -0
- package/dist/storage/database.js.map +1 -0
- package/dist/storage/sqlite-adapter.d.ts +35 -0
- package/dist/storage/sqlite-adapter.d.ts.map +1 -0
- package/dist/storage/sqlite-adapter.js +99 -0
- package/dist/storage/sqlite-adapter.js.map +1 -0
- package/dist/types.d.ts +266 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +63 -0
- package/dist/types.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite Adapter - Runtime-agnostic SQLite interface
|
|
3
|
+
*
|
|
4
|
+
* Supports:
|
|
5
|
+
* - bun:sqlite (Bun runtime)
|
|
6
|
+
* - node:sqlite (Node.js 22+, no native addons required)
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Detect if running in Bun
|
|
10
|
+
*/
|
|
11
|
+
export function isBun() {
|
|
12
|
+
return typeof globalThis.Bun !== 'undefined';
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Create a SQLite database connection using the appropriate native driver
|
|
16
|
+
*/
|
|
17
|
+
export async function createDatabase(dbPath) {
|
|
18
|
+
if (isBun()) {
|
|
19
|
+
return createBunDatabase(dbPath);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
return createNodeDatabase(dbPath);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Create database using bun:sqlite
|
|
27
|
+
*/
|
|
28
|
+
async function createBunDatabase(dbPath) {
|
|
29
|
+
// @ts-expect-error - bun:sqlite is only available in Bun runtime
|
|
30
|
+
const { Database } = await import('bun:sqlite');
|
|
31
|
+
const db = new Database(dbPath);
|
|
32
|
+
return {
|
|
33
|
+
exec(sql) {
|
|
34
|
+
db.exec(sql);
|
|
35
|
+
},
|
|
36
|
+
prepare(sql) {
|
|
37
|
+
const stmt = db.prepare(sql);
|
|
38
|
+
return {
|
|
39
|
+
run(...params) {
|
|
40
|
+
stmt.run(...params);
|
|
41
|
+
return {
|
|
42
|
+
changes: db.changes,
|
|
43
|
+
lastInsertRowid: db.lastInsertRowid,
|
|
44
|
+
};
|
|
45
|
+
},
|
|
46
|
+
get(...params) {
|
|
47
|
+
return stmt.get(...params);
|
|
48
|
+
},
|
|
49
|
+
all(...params) {
|
|
50
|
+
return stmt.all(...params);
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
},
|
|
54
|
+
close() {
|
|
55
|
+
db.close();
|
|
56
|
+
},
|
|
57
|
+
pragma(pragma) {
|
|
58
|
+
return db.query(`PRAGMA ${pragma}`).get();
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Create database using node:sqlite (Node.js 22+)
|
|
64
|
+
*/
|
|
65
|
+
async function createNodeDatabase(dbPath) {
|
|
66
|
+
// node:sqlite is synchronous — dynamic import keeps the async adapter signature uniform
|
|
67
|
+
const { DatabaseSync } = await import('node:sqlite');
|
|
68
|
+
const db = new DatabaseSync(dbPath);
|
|
69
|
+
return {
|
|
70
|
+
exec(sql) {
|
|
71
|
+
db.exec(sql);
|
|
72
|
+
},
|
|
73
|
+
prepare(sql) {
|
|
74
|
+
const stmt = db.prepare(sql);
|
|
75
|
+
return {
|
|
76
|
+
run(...params) {
|
|
77
|
+
const result = stmt.run(...params);
|
|
78
|
+
return {
|
|
79
|
+
changes: result.changes,
|
|
80
|
+
lastInsertRowid: result.lastInsertRowid,
|
|
81
|
+
};
|
|
82
|
+
},
|
|
83
|
+
get(...params) {
|
|
84
|
+
return stmt.get(...params);
|
|
85
|
+
},
|
|
86
|
+
all(...params) {
|
|
87
|
+
return stmt.all(...params);
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
},
|
|
91
|
+
close() {
|
|
92
|
+
db.close();
|
|
93
|
+
},
|
|
94
|
+
pragma(pragma) {
|
|
95
|
+
return db.prepare(`PRAGMA ${pragma}`).get();
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=sqlite-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-adapter.js","sourceRoot":"","sources":["../../src/storage/sqlite-adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* True-Mem Type Definitions
|
|
3
|
+
* Adapted from PsychMem for OpenCode
|
|
4
|
+
*/
|
|
5
|
+
export type AgentType = 'opencode';
|
|
6
|
+
/**
|
|
7
|
+
* Memory classification aligned with psychological memory models
|
|
8
|
+
*/
|
|
9
|
+
export type MemoryClassification = 'episodic' | 'semantic' | 'procedural' | 'bugfix' | 'learning' | 'preference' | 'decision' | 'constraint';
|
|
10
|
+
/**
|
|
11
|
+
* Memory scope determines injection behavior
|
|
12
|
+
*/
|
|
13
|
+
export type MemoryScope = 'user' | 'project';
|
|
14
|
+
/**
|
|
15
|
+
* Classifications that are user-level (always injected)
|
|
16
|
+
*/
|
|
17
|
+
export declare const USER_LEVEL_CLASSIFICATIONS: MemoryClassification[];
|
|
18
|
+
/**
|
|
19
|
+
* Classifications that are project-level (only injected for matching project)
|
|
20
|
+
*/
|
|
21
|
+
export declare const PROJECT_LEVEL_CLASSIFICATIONS: MemoryClassification[];
|
|
22
|
+
export declare function isUserLevelClassification(classification: MemoryClassification): boolean;
|
|
23
|
+
export declare function getScopeForClassification(classification: MemoryClassification): MemoryScope;
|
|
24
|
+
/**
|
|
25
|
+
* Memory store type
|
|
26
|
+
*/
|
|
27
|
+
export type MemoryStore = 'stm' | 'ltm';
|
|
28
|
+
/**
|
|
29
|
+
* Memory status for lifecycle management
|
|
30
|
+
*/
|
|
31
|
+
export type MemoryStatus = 'active' | 'decayed' | 'pinned' | 'forgotten';
|
|
32
|
+
/**
|
|
33
|
+
* Message role from OpenCode SDK
|
|
34
|
+
*/
|
|
35
|
+
export type MessageRole = 'user' | 'assistant' | 'system';
|
|
36
|
+
/**
|
|
37
|
+
* Role-aware context for memory extraction
|
|
38
|
+
*/
|
|
39
|
+
export interface RoleAwareContext {
|
|
40
|
+
/**
|
|
41
|
+
* Primary role of the message containing the memory candidate
|
|
42
|
+
*/
|
|
43
|
+
primaryRole: MessageRole;
|
|
44
|
+
/**
|
|
45
|
+
* Role-weighted score (10x for Human messages)
|
|
46
|
+
*/
|
|
47
|
+
roleWeightedScore: number;
|
|
48
|
+
/**
|
|
49
|
+
* Whether Assistant context supports the memory
|
|
50
|
+
*/
|
|
51
|
+
hasAssistantContext: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Full conversation with role markers
|
|
54
|
+
*/
|
|
55
|
+
fullConversation: string;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* A line with its role from the conversation
|
|
59
|
+
*/
|
|
60
|
+
export interface RoleAwareLine {
|
|
61
|
+
text: string;
|
|
62
|
+
role: MessageRole;
|
|
63
|
+
lineNumber: number;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Role validation rules for memory classifications
|
|
67
|
+
* Determines which roles are valid sources for each classification type
|
|
68
|
+
*/
|
|
69
|
+
export declare const ROLE_VALIDATION_RULES: Record<string, {
|
|
70
|
+
validRoles: MessageRole[];
|
|
71
|
+
requiresPrimary: boolean;
|
|
72
|
+
}>;
|
|
73
|
+
/**
|
|
74
|
+
* Weight multiplier for Human messages in signal scoring
|
|
75
|
+
*/
|
|
76
|
+
export declare const HUMAN_MESSAGE_WEIGHT_MULTIPLIER = 10;
|
|
77
|
+
/**
|
|
78
|
+
* Check if a classification requires Human as primary source
|
|
79
|
+
*/
|
|
80
|
+
export declare function requiresHumanPrimary(classification: string): boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Check if a role is valid for a classification
|
|
83
|
+
*/
|
|
84
|
+
export declare function isValidRoleForClassification(classification: string, role: MessageRole): boolean;
|
|
85
|
+
export interface Session {
|
|
86
|
+
id: string;
|
|
87
|
+
project: string;
|
|
88
|
+
startedAt: Date;
|
|
89
|
+
endedAt?: Date | undefined;
|
|
90
|
+
status: 'active' | 'completed' | 'abandoned';
|
|
91
|
+
metadata?: Record<string, unknown> | undefined;
|
|
92
|
+
transcriptPath?: string | undefined;
|
|
93
|
+
transcriptWatermark?: number | undefined;
|
|
94
|
+
messageWatermark?: number | undefined;
|
|
95
|
+
}
|
|
96
|
+
export interface Event {
|
|
97
|
+
id: string;
|
|
98
|
+
sessionId: string;
|
|
99
|
+
hookType: HookType;
|
|
100
|
+
timestamp: Date;
|
|
101
|
+
content: string;
|
|
102
|
+
toolName?: string | undefined;
|
|
103
|
+
toolInput?: string | undefined;
|
|
104
|
+
toolOutput?: string | undefined;
|
|
105
|
+
metadata?: Record<string, unknown> | undefined;
|
|
106
|
+
}
|
|
107
|
+
export interface MemoryUnit {
|
|
108
|
+
id: string;
|
|
109
|
+
sessionId?: string | undefined;
|
|
110
|
+
store: MemoryStore;
|
|
111
|
+
classification: MemoryClassification;
|
|
112
|
+
summary: string;
|
|
113
|
+
sourceEventIds: string[];
|
|
114
|
+
projectScope?: string | undefined;
|
|
115
|
+
createdAt: Date;
|
|
116
|
+
updatedAt: Date;
|
|
117
|
+
lastAccessedAt: Date;
|
|
118
|
+
recency: number;
|
|
119
|
+
frequency: number;
|
|
120
|
+
importance: number;
|
|
121
|
+
utility: number;
|
|
122
|
+
novelty: number;
|
|
123
|
+
confidence: number;
|
|
124
|
+
interference: number;
|
|
125
|
+
strength: number;
|
|
126
|
+
decayRate: number;
|
|
127
|
+
tags: string[];
|
|
128
|
+
associations: string[];
|
|
129
|
+
status: MemoryStatus;
|
|
130
|
+
version: number;
|
|
131
|
+
evidence: MemoryEvidence[];
|
|
132
|
+
embedding?: Float32Array | undefined;
|
|
133
|
+
}
|
|
134
|
+
export interface MemoryEvidence {
|
|
135
|
+
eventId: string;
|
|
136
|
+
timestamp: Date;
|
|
137
|
+
contribution: string;
|
|
138
|
+
confidenceDelta: number;
|
|
139
|
+
}
|
|
140
|
+
export type HookType = 'SessionStart' | 'UserPromptSubmit' | 'PostToolUse' | 'Stop' | 'SessionEnd';
|
|
141
|
+
export interface HookInput {
|
|
142
|
+
hookType: HookType;
|
|
143
|
+
sessionId: string;
|
|
144
|
+
timestamp: string;
|
|
145
|
+
data: HookData;
|
|
146
|
+
}
|
|
147
|
+
export type HookData = SessionStartData | UserPromptSubmitData | PostToolUseData | StopData | SessionEndData;
|
|
148
|
+
export interface SessionStartData {
|
|
149
|
+
project: string;
|
|
150
|
+
workingDirectory: string;
|
|
151
|
+
metadata?: Record<string, unknown>;
|
|
152
|
+
}
|
|
153
|
+
export interface UserPromptSubmitData {
|
|
154
|
+
prompt: string;
|
|
155
|
+
metadata?: Record<string, unknown>;
|
|
156
|
+
}
|
|
157
|
+
export interface PostToolUseData {
|
|
158
|
+
toolName: string;
|
|
159
|
+
toolInput: string;
|
|
160
|
+
toolOutput: string;
|
|
161
|
+
success: boolean;
|
|
162
|
+
duration?: number;
|
|
163
|
+
metadata?: Record<string, unknown>;
|
|
164
|
+
}
|
|
165
|
+
export interface StopData {
|
|
166
|
+
reason: 'user' | 'complete' | 'error' | 'timeout' | 'compaction';
|
|
167
|
+
stopReason?: string;
|
|
168
|
+
conversationText?: string;
|
|
169
|
+
summary?: string;
|
|
170
|
+
metadata?: Record<string, unknown>;
|
|
171
|
+
}
|
|
172
|
+
export interface SessionEndData {
|
|
173
|
+
reason: 'normal' | 'clear' | 'abandoned';
|
|
174
|
+
metadata?: Record<string, unknown>;
|
|
175
|
+
}
|
|
176
|
+
export interface HookOutput {
|
|
177
|
+
success: boolean;
|
|
178
|
+
context?: string;
|
|
179
|
+
error?: string;
|
|
180
|
+
memoriesCreated?: number;
|
|
181
|
+
}
|
|
182
|
+
export interface MemoryCandidate {
|
|
183
|
+
summary: string;
|
|
184
|
+
classification: MemoryClassification;
|
|
185
|
+
sourceEventIds: string[];
|
|
186
|
+
importanceSignals: ImportanceSignal[];
|
|
187
|
+
preliminaryImportance: number;
|
|
188
|
+
extractionMethod: string;
|
|
189
|
+
confidence: number;
|
|
190
|
+
}
|
|
191
|
+
export interface ImportanceSignal {
|
|
192
|
+
type: ImportanceSignalType;
|
|
193
|
+
source: string;
|
|
194
|
+
weight: number;
|
|
195
|
+
}
|
|
196
|
+
export type ImportanceSignalType = 'explicit_remember' | 'emphasis_cue' | 'correction' | 'repeated_request' | 'emotional_language' | 'tool_failure' | 'bug_fix' | 'decision' | 'constraint' | 'preference' | 'learning' | 'typography_emphasis' | 'correction_pattern' | 'repetition_pattern' | 'elaboration' | 'structural_enumeration' | 'meta_reference' | 'quoted_text' | 'code_block';
|
|
197
|
+
export interface MemoryFeatureVector {
|
|
198
|
+
recency: number;
|
|
199
|
+
frequency: number;
|
|
200
|
+
importance: number;
|
|
201
|
+
utility: number;
|
|
202
|
+
novelty: number;
|
|
203
|
+
confidence: number;
|
|
204
|
+
interference: number;
|
|
205
|
+
}
|
|
206
|
+
export interface ScoringWeights {
|
|
207
|
+
recency: number;
|
|
208
|
+
frequency: number;
|
|
209
|
+
importance: number;
|
|
210
|
+
utility: number;
|
|
211
|
+
novelty: number;
|
|
212
|
+
confidence: number;
|
|
213
|
+
interference: number;
|
|
214
|
+
}
|
|
215
|
+
export interface RetrievalQuery {
|
|
216
|
+
query: string;
|
|
217
|
+
filters?: RetrievalFilters | undefined;
|
|
218
|
+
limit?: number | undefined;
|
|
219
|
+
includeDecayed?: boolean | undefined;
|
|
220
|
+
}
|
|
221
|
+
export interface RetrievalFilters {
|
|
222
|
+
store?: MemoryStore;
|
|
223
|
+
classifications?: MemoryClassification[];
|
|
224
|
+
minStrength?: number;
|
|
225
|
+
tags?: string[];
|
|
226
|
+
since?: Date;
|
|
227
|
+
}
|
|
228
|
+
export interface SweepConfig {
|
|
229
|
+
structuralWeight: number;
|
|
230
|
+
signalThreshold: number;
|
|
231
|
+
enableRegexPatterns: boolean;
|
|
232
|
+
enableStructuralAnalysis: boolean;
|
|
233
|
+
regexConfidence: number;
|
|
234
|
+
structuralConfidence: number;
|
|
235
|
+
}
|
|
236
|
+
export interface OpenCodeConfig {
|
|
237
|
+
injectOnCompaction: boolean;
|
|
238
|
+
extractOnCompaction: boolean;
|
|
239
|
+
extractOnMessage: boolean;
|
|
240
|
+
maxCompactionMemories: number;
|
|
241
|
+
maxSessionStartMemories: number;
|
|
242
|
+
messageWindowSize: number;
|
|
243
|
+
messageImportanceThreshold: number;
|
|
244
|
+
}
|
|
245
|
+
export interface PsychMemConfig {
|
|
246
|
+
agentType: AgentType;
|
|
247
|
+
dbPath: string;
|
|
248
|
+
stmDecayRate: number;
|
|
249
|
+
ltmDecayRate: number;
|
|
250
|
+
stmToLtmStrengthThreshold: number;
|
|
251
|
+
stmToLtmFrequencyThreshold: number;
|
|
252
|
+
scoringWeights: ScoringWeights;
|
|
253
|
+
defaultRetrievalLimit: number;
|
|
254
|
+
maxContextTokens: number;
|
|
255
|
+
autoPromoteToLtm: MemoryClassification[];
|
|
256
|
+
maxMemoriesPerStop: number;
|
|
257
|
+
deduplicationThreshold: number;
|
|
258
|
+
sweep: SweepConfig;
|
|
259
|
+
opencode: OpenCodeConfig;
|
|
260
|
+
applyDecayOnlyToEpisodic?: boolean;
|
|
261
|
+
decayThreshold?: number;
|
|
262
|
+
}
|
|
263
|
+
export type { Plugin, PluginInput, Hooks } from '@opencode-ai/plugin';
|
|
264
|
+
export type { Message, Part } from '@opencode-ai/sdk';
|
|
265
|
+
export type OpenCodeEvent = import('@opencode-ai/sdk').Event;
|
|
266
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* True-Memory Type Definitions
|
|
3
|
+
* Adapted from PsychMem for OpenCode
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Classifications that are user-level (always injected)
|
|
7
|
+
*/
|
|
8
|
+
export const USER_LEVEL_CLASSIFICATIONS = [
|
|
9
|
+
'constraint',
|
|
10
|
+
'preference',
|
|
11
|
+
'learning',
|
|
12
|
+
'procedural',
|
|
13
|
+
];
|
|
14
|
+
/**
|
|
15
|
+
* Classifications that are project-level (only injected for matching project)
|
|
16
|
+
*/
|
|
17
|
+
export const PROJECT_LEVEL_CLASSIFICATIONS = [
|
|
18
|
+
'decision',
|
|
19
|
+
'bugfix',
|
|
20
|
+
'episodic',
|
|
21
|
+
'semantic',
|
|
22
|
+
];
|
|
23
|
+
export function isUserLevelClassification(classification) {
|
|
24
|
+
return USER_LEVEL_CLASSIFICATIONS.includes(classification);
|
|
25
|
+
}
|
|
26
|
+
export function getScopeForClassification(classification) {
|
|
27
|
+
return isUserLevelClassification(classification) ? 'user' : 'project';
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Role validation rules for memory classifications
|
|
31
|
+
* Determines which roles are valid sources for each classification type
|
|
32
|
+
*/
|
|
33
|
+
export const ROLE_VALIDATION_RULES = {
|
|
34
|
+
// User-level classifications: MUST originate from Human messages
|
|
35
|
+
constraint: { validRoles: ['user'], requiresPrimary: true },
|
|
36
|
+
preference: { validRoles: ['user'], requiresPrimary: true },
|
|
37
|
+
learning: { validRoles: ['user'], requiresPrimary: true },
|
|
38
|
+
procedural: { validRoles: ['user'], requiresPrimary: true },
|
|
39
|
+
// Project-level classifications: Can be Assistant-acknowledged
|
|
40
|
+
decision: { validRoles: ['user', 'assistant'], requiresPrimary: false },
|
|
41
|
+
bugfix: { validRoles: ['user', 'assistant'], requiresPrimary: false },
|
|
42
|
+
semantic: { validRoles: ['user', 'assistant'], requiresPrimary: false },
|
|
43
|
+
episodic: { validRoles: ['user', 'assistant'], requiresPrimary: false },
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Weight multiplier for Human messages in signal scoring
|
|
47
|
+
*/
|
|
48
|
+
export const HUMAN_MESSAGE_WEIGHT_MULTIPLIER = 10;
|
|
49
|
+
/**
|
|
50
|
+
* Check if a classification requires Human as primary source
|
|
51
|
+
*/
|
|
52
|
+
export function requiresHumanPrimary(classification) {
|
|
53
|
+
const rule = ROLE_VALIDATION_RULES[classification];
|
|
54
|
+
return rule?.requiresPrimary ?? false;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Check if a role is valid for a classification
|
|
58
|
+
*/
|
|
59
|
+
export function isValidRoleForClassification(classification, role) {
|
|
60
|
+
const rule = ROLE_VALIDATION_RULES[classification];
|
|
61
|
+
return rule?.validRoles.includes(role) ?? true;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA8BH;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAA2B;IAChE,YAAY;IACZ,YAAY;IACZ,UAAU;IACV,YAAY;CACb,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAA2B;IACnE,UAAU;IACV,QAAQ;IACR,UAAU;IACV,UAAU;CACX,CAAC;AAEF,MAAM,UAAU,yBAAyB,CAAC,cAAoC;IAC5E,OAAO,0BAA0B,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,cAAoC;IAC5E,OAAO,yBAAyB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACxE,CAAC;AAuDD;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAA4E;IAC5G,iEAAiE;IACjE,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC,MAAM,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE;IAC3D,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC,MAAM,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE;IAC3D,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,MAAM,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE;IACzD,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC,MAAM,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE;IAE3D,+DAA+D;IAC/D,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE;IACvE,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE;IACrE,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE;IACvE,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE;CACxE,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,EAAE,CAAC;AAElD;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,cAAsB;IACzD,MAAM,IAAI,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;IACnD,OAAO,IAAI,EAAE,eAAe,IAAI,KAAK,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAAC,cAAsB,EAAE,IAAiB;IACpF,MAAM,IAAI,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;IACnD,OAAO,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AACjD,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "true-mem",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Persistent memory plugin for OpenCode with cognitive psychology-based memory management",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "bun build src/index.ts --outdir dist --target bun --format esm && tsc --emitDeclarationOnly",
|
|
16
|
+
"dev": "bun build src/index.ts --outdir dist --target bun --format esm --watch",
|
|
17
|
+
"typecheck": "tsc --noEmit"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"opencode",
|
|
21
|
+
"ai",
|
|
22
|
+
"memory",
|
|
23
|
+
"plugin",
|
|
24
|
+
"persistent",
|
|
25
|
+
"cognitive",
|
|
26
|
+
"coding-assistant"
|
|
27
|
+
],
|
|
28
|
+
"author": "rizal72",
|
|
29
|
+
"license": "MIT",
|
|
30
|
+
"repository": {
|
|
31
|
+
"type": "git",
|
|
32
|
+
"url": "git+https://github.com/rizal72/true-mem.git"
|
|
33
|
+
},
|
|
34
|
+
"bugs": {
|
|
35
|
+
"url": "https://github.com/rizal72/true-mem/issues"
|
|
36
|
+
},
|
|
37
|
+
"homepage": "https://github.com/rizal72/true-mem#readme",
|
|
38
|
+
"files": [
|
|
39
|
+
"dist/",
|
|
40
|
+
"README.md",
|
|
41
|
+
"LICENSE"
|
|
42
|
+
],
|
|
43
|
+
"dependencies": {
|
|
44
|
+
"@opencode-ai/plugin": "^1.2.6",
|
|
45
|
+
"@opencode-ai/sdk": "^1.2.6",
|
|
46
|
+
"uuid": "^13.0.0"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@types/node": "^25.0.0",
|
|
50
|
+
"@types/uuid": "^10.0.0",
|
|
51
|
+
"bun-types": "^1.3.0",
|
|
52
|
+
"typescript": "^5.9.3"
|
|
53
|
+
}
|
|
54
|
+
}
|