@jcmrs/opencode-vmem 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 (140) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/LICENSE +21 -0
  3. package/README.md +172 -0
  4. package/dist/capture/classification.d.ts +37 -0
  5. package/dist/capture/classification.d.ts.map +1 -0
  6. package/dist/capture/classification.js +181 -0
  7. package/dist/capture/classification.js.map +1 -0
  8. package/dist/capture/filtering.d.ts +63 -0
  9. package/dist/capture/filtering.d.ts.map +1 -0
  10. package/dist/capture/filtering.js +195 -0
  11. package/dist/capture/filtering.js.map +1 -0
  12. package/dist/capture/observation.d.ts +28 -0
  13. package/dist/capture/observation.d.ts.map +1 -0
  14. package/dist/capture/observation.js +188 -0
  15. package/dist/capture/observation.js.map +1 -0
  16. package/dist/commands/index.d.ts +38 -0
  17. package/dist/commands/index.d.ts.map +1 -0
  18. package/dist/commands/index.js +375 -0
  19. package/dist/commands/index.js.map +1 -0
  20. package/dist/config.d.ts +5 -0
  21. package/dist/config.d.ts.map +1 -0
  22. package/dist/config.js +41 -0
  23. package/dist/config.js.map +1 -0
  24. package/dist/context/builder.d.ts +19 -0
  25. package/dist/context/builder.d.ts.map +1 -0
  26. package/dist/context/builder.js +209 -0
  27. package/dist/context/builder.js.map +1 -0
  28. package/dist/context/format.d.ts +32 -0
  29. package/dist/context/format.d.ts.map +1 -0
  30. package/dist/context/format.js +211 -0
  31. package/dist/context/format.js.map +1 -0
  32. package/dist/embedding/index.d.ts +3 -0
  33. package/dist/embedding/index.d.ts.map +1 -0
  34. package/dist/embedding/index.js +3 -0
  35. package/dist/embedding/index.js.map +1 -0
  36. package/dist/embedding/provider.d.ts +15 -0
  37. package/dist/embedding/provider.d.ts.map +1 -0
  38. package/dist/embedding/provider.js +19 -0
  39. package/dist/embedding/provider.js.map +1 -0
  40. package/dist/embedding/transformers.d.ts +14 -0
  41. package/dist/embedding/transformers.d.ts.map +1 -0
  42. package/dist/embedding/transformers.js +55 -0
  43. package/dist/embedding/transformers.js.map +1 -0
  44. package/dist/extract/confidence.d.ts +48 -0
  45. package/dist/extract/confidence.d.ts.map +1 -0
  46. package/dist/extract/confidence.js +230 -0
  47. package/dist/extract/confidence.js.map +1 -0
  48. package/dist/extract/llm-extractor.d.ts +35 -0
  49. package/dist/extract/llm-extractor.d.ts.map +1 -0
  50. package/dist/extract/llm-extractor.js +204 -0
  51. package/dist/extract/llm-extractor.js.map +1 -0
  52. package/dist/extract/pipeline.d.ts +44 -0
  53. package/dist/extract/pipeline.d.ts.map +1 -0
  54. package/dist/extract/pipeline.js +171 -0
  55. package/dist/extract/pipeline.js.map +1 -0
  56. package/dist/extract/rules-engine.d.ts +14 -0
  57. package/dist/extract/rules-engine.d.ts.map +1 -0
  58. package/dist/extract/rules-engine.js +314 -0
  59. package/dist/extract/rules-engine.js.map +1 -0
  60. package/dist/extract/summarizer.d.ts +27 -0
  61. package/dist/extract/summarizer.d.ts.map +1 -0
  62. package/dist/extract/summarizer.js +148 -0
  63. package/dist/extract/summarizer.js.map +1 -0
  64. package/dist/hooks/session-idle.d.ts +38 -0
  65. package/dist/hooks/session-idle.d.ts.map +1 -0
  66. package/dist/hooks/session-idle.js +142 -0
  67. package/dist/hooks/session-idle.js.map +1 -0
  68. package/dist/hooks/system-transform.d.ts +41 -0
  69. package/dist/hooks/system-transform.d.ts.map +1 -0
  70. package/dist/hooks/system-transform.js +98 -0
  71. package/dist/hooks/system-transform.js.map +1 -0
  72. package/dist/hooks/tool-after.d.ts +66 -0
  73. package/dist/hooks/tool-after.d.ts.map +1 -0
  74. package/dist/hooks/tool-after.js +155 -0
  75. package/dist/hooks/tool-after.js.map +1 -0
  76. package/dist/index.d.ts +10 -0
  77. package/dist/index.d.ts.map +1 -0
  78. package/dist/index.js +10 -0
  79. package/dist/index.js.map +1 -0
  80. package/dist/mind.d.ts +69 -0
  81. package/dist/mind.d.ts.map +1 -0
  82. package/dist/mind.js +368 -0
  83. package/dist/mind.js.map +1 -0
  84. package/dist/procedural/index.d.ts +4 -0
  85. package/dist/procedural/index.d.ts.map +1 -0
  86. package/dist/procedural/index.js +4 -0
  87. package/dist/procedural/index.js.map +1 -0
  88. package/dist/procedural/induction.d.ts +23 -0
  89. package/dist/procedural/induction.d.ts.map +1 -0
  90. package/dist/procedural/induction.js +104 -0
  91. package/dist/procedural/induction.js.map +1 -0
  92. package/dist/procedural/miner.d.ts +45 -0
  93. package/dist/procedural/miner.d.ts.map +1 -0
  94. package/dist/procedural/miner.js +171 -0
  95. package/dist/procedural/miner.js.map +1 -0
  96. package/dist/procedural/suggester.d.ts +20 -0
  97. package/dist/procedural/suggester.d.ts.map +1 -0
  98. package/dist/procedural/suggester.js +69 -0
  99. package/dist/procedural/suggester.js.map +1 -0
  100. package/dist/store/archive.d.ts +31 -0
  101. package/dist/store/archive.d.ts.map +1 -0
  102. package/dist/store/archive.js +137 -0
  103. package/dist/store/archive.js.map +1 -0
  104. package/dist/store/backup.d.ts +36 -0
  105. package/dist/store/backup.d.ts.map +1 -0
  106. package/dist/store/backup.js +163 -0
  107. package/dist/store/backup.js.map +1 -0
  108. package/dist/store/memorycards.d.ts +31 -0
  109. package/dist/store/memorycards.d.ts.map +1 -0
  110. package/dist/store/memorycards.js +161 -0
  111. package/dist/store/memorycards.js.map +1 -0
  112. package/dist/store/mv2-adapter.d.ts +29 -0
  113. package/dist/store/mv2-adapter.d.ts.map +1 -0
  114. package/dist/store/mv2-adapter.js +359 -0
  115. package/dist/store/mv2-adapter.js.map +1 -0
  116. package/dist/store/procedures.d.ts +79 -0
  117. package/dist/store/procedures.d.ts.map +1 -0
  118. package/dist/store/procedures.js +183 -0
  119. package/dist/store/procedures.js.map +1 -0
  120. package/dist/store/tombstone.d.ts +27 -0
  121. package/dist/store/tombstone.d.ts.map +1 -0
  122. package/dist/store/tombstone.js +136 -0
  123. package/dist/store/tombstone.js.map +1 -0
  124. package/dist/tools/index.d.ts +36 -0
  125. package/dist/tools/index.d.ts.map +1 -0
  126. package/dist/tools/index.js +236 -0
  127. package/dist/tools/index.js.map +1 -0
  128. package/dist/types.d.ts +301 -0
  129. package/dist/types.d.ts.map +1 -0
  130. package/dist/types.js +69 -0
  131. package/dist/types.js.map +1 -0
  132. package/dist/utils/error.d.ts +57 -0
  133. package/dist/utils/error.d.ts.map +1 -0
  134. package/dist/utils/error.js +143 -0
  135. package/dist/utils/error.js.map +1 -0
  136. package/dist/utils/uuid.d.ts +2 -0
  137. package/dist/utils/uuid.d.ts.map +1 -0
  138. package/dist/utils/uuid.js +5 -0
  139. package/dist/utils/uuid.js.map +1 -0
  140. package/package.json +67 -0
@@ -0,0 +1,301 @@
1
+ export type ObservationType = 'tool_execution' | 'file_read' | 'file_write' | 'file_edit' | 'command_run' | 'search_query' | 'user_message' | 'agent_response' | 'decision' | 'error' | 'preference_expressed' | 'goal_stated' | 'constraint_identified' | 'workflow_step' | 'milestone' | 'external_event';
2
+ export type ObservationSource = 'hook-automatic' | 'hook-manual' | 'extraction-derived' | 'import-external';
3
+ export interface ObservationMetadata {
4
+ filePath?: string;
5
+ fileLine?: number;
6
+ fileRange?: [number, number];
7
+ projectPath?: string;
8
+ gitBranch?: string;
9
+ gitCommit?: string;
10
+ agentModel?: string;
11
+ agentProvider?: string;
12
+ isNoisy?: boolean;
13
+ isFlagged?: boolean;
14
+ flagReason?: string;
15
+ [key: string]: unknown;
16
+ }
17
+ export interface Observation {
18
+ id: string;
19
+ frameId: string;
20
+ type: ObservationType;
21
+ subtype?: string;
22
+ content: string;
23
+ tool: string;
24
+ input?: Record<string, unknown>;
25
+ output?: string;
26
+ timestamp: number;
27
+ sessionId: string;
28
+ sequenceNumber: number;
29
+ source: ObservationSource;
30
+ confidence: number;
31
+ parentId?: string;
32
+ relatedIds?: string[];
33
+ metadata: ObservationMetadata;
34
+ }
35
+ export type MemoryKind = 'fact' | 'preference' | 'goal' | 'profile';
36
+ export type VersionRelation = 'replaces' | 'extends' | 'narrows';
37
+ export interface MemoryCard {
38
+ id: string;
39
+ frameId: string;
40
+ entity: string;
41
+ slot: string;
42
+ value: string;
43
+ kind: MemoryKind;
44
+ confidence: number;
45
+ sourceObservationId?: string;
46
+ documentDate?: number;
47
+ versionRelation?: VersionRelation;
48
+ previousValue?: string;
49
+ metadata?: Record<string, unknown>;
50
+ createdAt: number;
51
+ updatedAt: number;
52
+ }
53
+ export interface MemoryCardIndex {
54
+ byEntity: Map<string, Set<string>>;
55
+ bySlot: Map<string, Set<string>>;
56
+ byKind: Map<MemoryKind, Set<string>>;
57
+ }
58
+ export type TombstoneReason = 'user_request' | 'low_confidence' | 'contradicted' | 'outdated' | 'duplicate' | 'error';
59
+ export type TombstoneSource = 'user' | 'review' | 'auto-confidence' | 'auto-contradict' | 'import' | 'migration';
60
+ export type TombstoneStatus = 'pending' | 'confirmed' | 'reverted';
61
+ export interface TombstoneEntry {
62
+ frameId: string;
63
+ reason: TombstoneReason;
64
+ source: TombstoneSource;
65
+ confidence?: number;
66
+ replacedBy?: string;
67
+ createdAt: number;
68
+ status: TombstoneStatus;
69
+ notes?: string;
70
+ }
71
+ export interface TombstoneIndex {
72
+ version: number;
73
+ entries: Record<string, TombstoneEntry>;
74
+ lastUpdated: number;
75
+ }
76
+ export type SessionStatus = 'active' | 'idle' | 'ended';
77
+ export interface SessionStats {
78
+ totalObservations: number;
79
+ memoryCardsCreated: number;
80
+ memoryCardsUpdated: number;
81
+ tombstonesCreated: number;
82
+ errors: number;
83
+ }
84
+ export interface Session {
85
+ id: string;
86
+ status: SessionStatus;
87
+ startedAt: number;
88
+ endedAt?: number;
89
+ lastActivityAt: number;
90
+ summary?: SessionSummary;
91
+ stats: SessionStats;
92
+ metadata?: Record<string, unknown>;
93
+ }
94
+ export interface SessionSummary {
95
+ generatedAt: number;
96
+ observationCount: number;
97
+ topObservationTypes: Array<{
98
+ type: ObservationType;
99
+ count: number;
100
+ }>;
101
+ keyDecisions: string[];
102
+ preferencesLearned: string[];
103
+ goalsIdentified: string[];
104
+ filesModified: string[];
105
+ topics: string[];
106
+ confidence: number;
107
+ }
108
+ export interface ExtractionRule {
109
+ name: string;
110
+ priority: number;
111
+ enabled: boolean;
112
+ pattern: RegExp;
113
+ matchFields: MatchField[];
114
+ kind: MemoryKind;
115
+ entityTemplate: string;
116
+ slotTemplate: string;
117
+ valueTemplate: string;
118
+ polarity?: 'positive' | 'negative';
119
+ versionRelation?: VersionRelation;
120
+ validators?: RuleValidator[];
121
+ description?: string;
122
+ examples?: string[];
123
+ }
124
+ export type MatchField = 'content' | 'output' | 'input' | 'title';
125
+ export interface RuleValidator {
126
+ type: 'regex' | 'enum' | 'range' | 'custom';
127
+ config: unknown;
128
+ errorMessage?: string;
129
+ }
130
+ export interface EnrichmentContext {
131
+ frameId: string;
132
+ sourceUri: string;
133
+ text: string;
134
+ title?: string;
135
+ input?: Record<string, unknown>;
136
+ output?: string;
137
+ metadata?: Record<string, unknown>;
138
+ timestamp?: number;
139
+ }
140
+ export interface EnrichmentResult {
141
+ cards: MemoryCard[];
142
+ matchedRules: string[];
143
+ skippedRules: string[];
144
+ errors: Array<{
145
+ rule: string;
146
+ error: string;
147
+ }>;
148
+ source: 'rules' | 'llm' | 'hybrid';
149
+ processingTimeMs: number;
150
+ }
151
+ export interface ConfidenceScore {
152
+ score: number;
153
+ factors: string[];
154
+ shouldFlag: boolean;
155
+ shouldTombstone: boolean;
156
+ }
157
+ export interface ContextOptions {
158
+ maxTokens: number;
159
+ prioritizeRecent: boolean;
160
+ prioritizeRelevant: boolean;
161
+ includeObservations: boolean;
162
+ includeMemoryCards: boolean;
163
+ includeEpisodes: boolean;
164
+ includeSessionSummary: boolean;
165
+ since?: number;
166
+ entity?: string;
167
+ types?: ObservationType[];
168
+ format: 'markdown' | 'json' | 'plain';
169
+ }
170
+ export interface ContextBlock {
171
+ content: string;
172
+ tokenCount: number;
173
+ included: {
174
+ observations: number;
175
+ memoryCards: number;
176
+ episodes: number;
177
+ sessionSummaries: number;
178
+ };
179
+ excluded: {
180
+ observations: number;
181
+ memoryCards: number;
182
+ episodes: number;
183
+ };
184
+ sources: string[];
185
+ }
186
+ export type Polarity = 'positive' | 'negative';
187
+ export interface ProceduralState {
188
+ type: string;
189
+ data: Record<string, unknown>;
190
+ hash: string;
191
+ }
192
+ export interface ProceduralAction {
193
+ tool: string;
194
+ input: Record<string, unknown>;
195
+ summary: string;
196
+ }
197
+ export interface ProceduralResult {
198
+ success: boolean;
199
+ output?: string;
200
+ error?: string;
201
+ }
202
+ export interface SARTuple {
203
+ id: string;
204
+ sessionId: string;
205
+ timestamp: number;
206
+ state: ProceduralState;
207
+ action: ProceduralAction;
208
+ result: ProceduralResult;
209
+ confidence: number;
210
+ workflowId?: string;
211
+ sequenceNumber: number;
212
+ }
213
+ export interface WorkflowPattern {
214
+ id: string;
215
+ name: string;
216
+ description: string;
217
+ steps: Array<{
218
+ statePattern: ProceduralState;
219
+ suggestedAction: ProceduralAction;
220
+ expectedResult: Partial<ProceduralResult>;
221
+ }>;
222
+ occurrences: number;
223
+ lastTriggered?: number;
224
+ confidence: number;
225
+ }
226
+ export declare enum ErrorSeverity {
227
+ TRANSIENT = "transient",
228
+ RECOVERABLE = "recoverable",
229
+ DATA_LOSS = "data_loss",
230
+ PERMANENT = "permanent"
231
+ }
232
+ export declare enum ErrorCode {
233
+ MV2_OPEN_FAILED = "MV2_OPEN_FAILED",
234
+ MV2_WRITE_FAILED = "MV2_WRITE_FAILED",
235
+ MV2_CORRUPTED = "MV2_CORRUPTED",
236
+ MV2_LOCK_TIMEOUT = "MV2_LOCK_TIMEOUT",
237
+ RULES_MATCH_FAILED = "RULES_MATCH_FAILED",
238
+ LLM_TIMEOUT = "LLM_TIMEOUT",
239
+ LLM_RATE_LIMIT = "LLM_RATE_LIMIT",
240
+ LLM_INVALID_RESPONSE = "LLM_INVALID_RESPONSE",
241
+ EMBEDDING_LOAD_FAILED = "EMBEDDING_LOAD_FAILED",
242
+ EMBEDDING_TIMEOUT = "EMBEDDING_TIMEOUT",
243
+ CONTEXT_BUILD_FAILED = "CONTEXT_BUILD_FAILED",
244
+ TOKEN_BUDGET_EXCEEDED = "TOKEN_BUDGET_EXCEEDED",
245
+ FILE_NOT_FOUND = "FILE_NOT_FOUND",
246
+ FILE_PERMISSION = "FILE_PERMISSION",
247
+ FILE_LOCKED = "FILE_LOCKED",
248
+ CONFIG_INVALID = "CONFIG_INVALID",
249
+ CONFIG_MISSING = "CONFIG_MISSING",
250
+ HOOK_TIMEOUT = "HOOK_TIMEOUT",
251
+ HOOK_FAILED = "HOOK_FAILED"
252
+ }
253
+ export interface VmemError extends Error {
254
+ code: ErrorCode;
255
+ severity: ErrorSeverity;
256
+ recoverable: boolean;
257
+ recoveryHint?: string;
258
+ context?: Record<string, unknown>;
259
+ }
260
+ export interface VmemConfig {
261
+ memoryPath: string;
262
+ capture: {
263
+ enabled: boolean;
264
+ observedTools: string[];
265
+ skipPatterns: RegExp[];
266
+ minOutputLength: number;
267
+ };
268
+ extraction: {
269
+ rulesEnabled: boolean;
270
+ llmEnabled: boolean;
271
+ llmProvider: 'zai' | 'openai';
272
+ llmModel: string;
273
+ llmApiKey?: string;
274
+ batchSize: number;
275
+ };
276
+ confidence: {
277
+ acceptThreshold: number;
278
+ flagThreshold: number;
279
+ autoTombstone: boolean;
280
+ };
281
+ context: {
282
+ maxTokens: number;
283
+ format: 'markdown' | 'json';
284
+ includeObservations: boolean;
285
+ includeMemoryCards: boolean;
286
+ includeProcedures: boolean;
287
+ };
288
+ embedding: {
289
+ enabled: boolean;
290
+ model: string;
291
+ cacheDir: string;
292
+ dimension: number;
293
+ };
294
+ optimization: {
295
+ autoArchive: boolean;
296
+ archiveAfterDays: number;
297
+ keepBackups: number;
298
+ };
299
+ }
300
+ export declare const defaultConfig: VmemConfig;
301
+ //# 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,69 @@
1
+ export var ErrorSeverity;
2
+ (function (ErrorSeverity) {
3
+ ErrorSeverity["TRANSIENT"] = "transient";
4
+ ErrorSeverity["RECOVERABLE"] = "recoverable";
5
+ ErrorSeverity["DATA_LOSS"] = "data_loss";
6
+ ErrorSeverity["PERMANENT"] = "permanent";
7
+ })(ErrorSeverity || (ErrorSeverity = {}));
8
+ export var ErrorCode;
9
+ (function (ErrorCode) {
10
+ ErrorCode["MV2_OPEN_FAILED"] = "MV2_OPEN_FAILED";
11
+ ErrorCode["MV2_WRITE_FAILED"] = "MV2_WRITE_FAILED";
12
+ ErrorCode["MV2_CORRUPTED"] = "MV2_CORRUPTED";
13
+ ErrorCode["MV2_LOCK_TIMEOUT"] = "MV2_LOCK_TIMEOUT";
14
+ ErrorCode["RULES_MATCH_FAILED"] = "RULES_MATCH_FAILED";
15
+ ErrorCode["LLM_TIMEOUT"] = "LLM_TIMEOUT";
16
+ ErrorCode["LLM_RATE_LIMIT"] = "LLM_RATE_LIMIT";
17
+ ErrorCode["LLM_INVALID_RESPONSE"] = "LLM_INVALID_RESPONSE";
18
+ ErrorCode["EMBEDDING_LOAD_FAILED"] = "EMBEDDING_LOAD_FAILED";
19
+ ErrorCode["EMBEDDING_TIMEOUT"] = "EMBEDDING_TIMEOUT";
20
+ ErrorCode["CONTEXT_BUILD_FAILED"] = "CONTEXT_BUILD_FAILED";
21
+ ErrorCode["TOKEN_BUDGET_EXCEEDED"] = "TOKEN_BUDGET_EXCEEDED";
22
+ ErrorCode["FILE_NOT_FOUND"] = "FILE_NOT_FOUND";
23
+ ErrorCode["FILE_PERMISSION"] = "FILE_PERMISSION";
24
+ ErrorCode["FILE_LOCKED"] = "FILE_LOCKED";
25
+ ErrorCode["CONFIG_INVALID"] = "CONFIG_INVALID";
26
+ ErrorCode["CONFIG_MISSING"] = "CONFIG_MISSING";
27
+ ErrorCode["HOOK_TIMEOUT"] = "HOOK_TIMEOUT";
28
+ ErrorCode["HOOK_FAILED"] = "HOOK_FAILED";
29
+ })(ErrorCode || (ErrorCode = {}));
30
+ export const defaultConfig = {
31
+ memoryPath: '.opencode/memory/mind.mv2',
32
+ capture: {
33
+ enabled: true,
34
+ observedTools: ['read', 'write', 'edit', 'bash', 'grep', 'glob'],
35
+ skipPatterns: [/^\s*$/],
36
+ minOutputLength: 50
37
+ },
38
+ extraction: {
39
+ rulesEnabled: true,
40
+ llmEnabled: true,
41
+ llmProvider: 'zai',
42
+ llmModel: 'glm-5',
43
+ batchSize: 10
44
+ },
45
+ confidence: {
46
+ acceptThreshold: 0.8,
47
+ flagThreshold: 0.4,
48
+ autoTombstone: true
49
+ },
50
+ context: {
51
+ maxTokens: 3000,
52
+ format: 'markdown',
53
+ includeObservations: true,
54
+ includeMemoryCards: true,
55
+ includeProcedures: true
56
+ },
57
+ embedding: {
58
+ enabled: true,
59
+ model: 'Xenova/nomic-embed-text-v1',
60
+ cacheDir: '.opencode/memory/models/',
61
+ dimension: 768
62
+ },
63
+ optimization: {
64
+ autoArchive: false,
65
+ archiveAfterDays: 30,
66
+ keepBackups: 5
67
+ }
68
+ };
69
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA0RA,MAAM,CAAN,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,wCAAuB,CAAA;IACvB,4CAA2B,CAAA;IAC3B,wCAAuB,CAAA;IACvB,wCAAuB,CAAA;AACzB,CAAC,EALW,aAAa,KAAb,aAAa,QAKxB;AAED,MAAM,CAAN,IAAY,SAoBX;AApBD,WAAY,SAAS;IACnB,gDAAmC,CAAA;IACnC,kDAAqC,CAAA;IACrC,4CAA+B,CAAA;IAC/B,kDAAqC,CAAA;IACrC,sDAAyC,CAAA;IACzC,wCAA2B,CAAA;IAC3B,8CAAiC,CAAA;IACjC,0DAA6C,CAAA;IAC7C,4DAA+C,CAAA;IAC/C,oDAAuC,CAAA;IACvC,0DAA6C,CAAA;IAC7C,4DAA+C,CAAA;IAC/C,8CAAiC,CAAA;IACjC,gDAAmC,CAAA;IACnC,wCAA2B,CAAA;IAC3B,8CAAiC,CAAA;IACjC,8CAAiC,CAAA;IACjC,0CAA6B,CAAA;IAC7B,wCAA2B,CAAA;AAC7B,CAAC,EApBW,SAAS,KAAT,SAAS,QAoBpB;AAmDD,MAAM,CAAC,MAAM,aAAa,GAAe;IACvC,UAAU,EAAE,2BAA2B;IACvC,OAAO,EAAE;QACP,OAAO,EAAE,IAAI;QACb,aAAa,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QAChE,YAAY,EAAE,CAAC,OAAO,CAAC;QACvB,eAAe,EAAE,EAAE;KACpB;IACD,UAAU,EAAE;QACV,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,KAAK;QAClB,QAAQ,EAAE,OAAO;QACjB,SAAS,EAAE,EAAE;KACd;IACD,UAAU,EAAE;QACV,eAAe,EAAE,GAAG;QACpB,aAAa,EAAE,GAAG;QAClB,aAAa,EAAE,IAAI;KACpB;IACD,OAAO,EAAE;QACP,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,UAAU;QAClB,mBAAmB,EAAE,IAAI;QACzB,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,IAAI;KACxB;IACD,SAAS,EAAE;QACT,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,4BAA4B;QACnC,QAAQ,EAAE,0BAA0B;QACpC,SAAS,EAAE,GAAG;KACf;IACD,YAAY,EAAE;QACZ,WAAW,EAAE,KAAK;QAClB,gBAAgB,EAAE,EAAE;QACpB,WAAW,EAAE,CAAC;KACf;CACF,CAAC"}
@@ -0,0 +1,57 @@
1
+ export declare enum ErrorSeverity {
2
+ TRANSIENT = "transient",
3
+ RECOVERABLE = "recoverable",
4
+ DATA_LOSS = "data_loss",
5
+ PERMANENT = "permanent"
6
+ }
7
+ export declare enum ErrorCode {
8
+ MV2_OPEN_FAILED = "MV2_OPEN_FAILED",
9
+ MV2_WRITE_FAILED = "MV2_WRITE_FAILED",
10
+ MV2_CORRUPTED = "MV2_CORRUPTED",
11
+ MV2_LOCK_TIMEOUT = "MV2_LOCK_TIMEOUT",
12
+ RULES_MATCH_FAILED = "RULES_MATCH_FAILED",
13
+ LLM_TIMEOUT = "LLM_TIMEOUT",
14
+ LLM_RATE_LIMIT = "LLM_RATE_LIMIT",
15
+ LLM_INVALID_RESPONSE = "LLM_INVALID_RESPONSE",
16
+ EMBEDDING_LOAD_FAILED = "EMBEDDING_LOAD_FAILED",
17
+ EMBEDDING_TIMEOUT = "EMBEDDING_TIMEOUT",
18
+ CONTEXT_BUILD_FAILED = "CONTEXT_BUILD_FAILED",
19
+ TOKEN_BUDGET_EXCEEDED = "TOKEN_BUDGET_EXCEEDED",
20
+ FILE_NOT_FOUND = "FILE_NOT_FOUND",
21
+ FILE_PERMISSION = "FILE_PERMISSION",
22
+ FILE_LOCKED = "FILE_LOCKED",
23
+ CONFIG_INVALID = "CONFIG_INVALID",
24
+ CONFIG_MISSING = "CONFIG_MISSING",
25
+ HOOK_TIMEOUT = "HOOK_TIMEOUT",
26
+ HOOK_FAILED = "HOOK_FAILED"
27
+ }
28
+ export declare class VmemError extends Error {
29
+ readonly code: ErrorCode;
30
+ readonly severity: ErrorSeverity;
31
+ readonly recoverable: boolean;
32
+ readonly recoveryHint?: string | undefined;
33
+ readonly context?: Record<string, unknown> | undefined;
34
+ constructor(message: string, code: ErrorCode, severity?: ErrorSeverity, recoverable?: boolean, recoveryHint?: string | undefined, context?: Record<string, unknown> | undefined);
35
+ static transient(message: string, code: ErrorCode, context?: Record<string, unknown>): VmemError;
36
+ static recoverable(message: string, code: ErrorCode, hint?: string, context?: Record<string, unknown>): VmemError;
37
+ static dataLoss(message: string, code: ErrorCode, context?: Record<string, unknown>): VmemError;
38
+ static permanent(message: string, code: ErrorCode, hint?: string, context?: Record<string, unknown>): VmemError;
39
+ toJSON(): object;
40
+ }
41
+ export interface RecoveryStrategy {
42
+ errorCodes: ErrorCode[];
43
+ maxAttempts: number;
44
+ backoffMs: number;
45
+ recovery: (error: VmemError, attempt: number) => Promise<boolean>;
46
+ }
47
+ export declare function sleep(ms: number): Promise<void>;
48
+ export declare function withRetry<T>(fn: () => Promise<T>, options?: {
49
+ maxAttempts?: number;
50
+ backoffMs?: number;
51
+ shouldRetry?: (error: Error) => boolean;
52
+ }): Promise<T>;
53
+ export declare function formatErrorForUser(error: VmemError): string;
54
+ export declare const HOOK_TIMEOUTS: Record<string, number>;
55
+ export declare function withTimeout<T>(fn: () => Promise<T>, timeoutMs: number, hookName?: string): Promise<T | undefined>;
56
+ export declare function wrapHook<T extends (...args: any[]) => Promise<any>>(hookName: string, handler: T): T;
57
+ //# sourceMappingURL=error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/utils/error.ts"],"names":[],"mappings":"AAAA,oBAAY,aAAa;IACvB,SAAS,cAAc;IACvB,WAAW,gBAAgB;IAC3B,SAAS,cAAc;IACvB,SAAS,cAAc;CACxB;AAED,oBAAY,SAAS;IACnB,eAAe,oBAAoB;IACnC,gBAAgB,qBAAqB;IACrC,aAAa,kBAAkB;IAC/B,gBAAgB,qBAAqB;IACrC,kBAAkB,uBAAuB;IACzC,WAAW,gBAAgB;IAC3B,cAAc,mBAAmB;IACjC,oBAAoB,yBAAyB;IAC7C,qBAAqB,0BAA0B;IAC/C,iBAAiB,sBAAsB;IACvC,oBAAoB,yBAAyB;IAC7C,qBAAqB,0BAA0B;IAC/C,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IACnC,WAAW,gBAAgB;IAC3B,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IACjC,YAAY,iBAAiB;IAC7B,WAAW,gBAAgB;CAC5B;AAED,qBAAa,SAAU,SAAQ,KAAK;aAGhB,IAAI,EAAE,SAAS;aACf,QAAQ,EAAE,aAAa;aACvB,WAAW,EAAE,OAAO;aACpB,YAAY,CAAC,EAAE,MAAM;aACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBALjD,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,SAAS,EACf,QAAQ,GAAE,aAAyC,EACnD,WAAW,GAAE,OAAc,EAC3B,YAAY,CAAC,EAAE,MAAM,YAAA,EACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;IAMnD,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAIhG,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAIjH,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAI/F,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAI/G,MAAM,IAAI,MAAM;CAWjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACnE;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED,wBAAsB,SAAS,CAAC,CAAC,EAC/B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE;IACP,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;CACpC,GACL,OAAO,CAAC,CAAC,CAAC,CAoBZ;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CA0B3D;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMhD,CAAC;AAEF,wBAAsB,WAAW,CAAC,CAAC,EACjC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAmBxB;AAED,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EACjE,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,GACT,CAAC,CAWH"}
@@ -0,0 +1,143 @@
1
+ export var ErrorSeverity;
2
+ (function (ErrorSeverity) {
3
+ ErrorSeverity["TRANSIENT"] = "transient";
4
+ ErrorSeverity["RECOVERABLE"] = "recoverable";
5
+ ErrorSeverity["DATA_LOSS"] = "data_loss";
6
+ ErrorSeverity["PERMANENT"] = "permanent";
7
+ })(ErrorSeverity || (ErrorSeverity = {}));
8
+ export var ErrorCode;
9
+ (function (ErrorCode) {
10
+ ErrorCode["MV2_OPEN_FAILED"] = "MV2_OPEN_FAILED";
11
+ ErrorCode["MV2_WRITE_FAILED"] = "MV2_WRITE_FAILED";
12
+ ErrorCode["MV2_CORRUPTED"] = "MV2_CORRUPTED";
13
+ ErrorCode["MV2_LOCK_TIMEOUT"] = "MV2_LOCK_TIMEOUT";
14
+ ErrorCode["RULES_MATCH_FAILED"] = "RULES_MATCH_FAILED";
15
+ ErrorCode["LLM_TIMEOUT"] = "LLM_TIMEOUT";
16
+ ErrorCode["LLM_RATE_LIMIT"] = "LLM_RATE_LIMIT";
17
+ ErrorCode["LLM_INVALID_RESPONSE"] = "LLM_INVALID_RESPONSE";
18
+ ErrorCode["EMBEDDING_LOAD_FAILED"] = "EMBEDDING_LOAD_FAILED";
19
+ ErrorCode["EMBEDDING_TIMEOUT"] = "EMBEDDING_TIMEOUT";
20
+ ErrorCode["CONTEXT_BUILD_FAILED"] = "CONTEXT_BUILD_FAILED";
21
+ ErrorCode["TOKEN_BUDGET_EXCEEDED"] = "TOKEN_BUDGET_EXCEEDED";
22
+ ErrorCode["FILE_NOT_FOUND"] = "FILE_NOT_FOUND";
23
+ ErrorCode["FILE_PERMISSION"] = "FILE_PERMISSION";
24
+ ErrorCode["FILE_LOCKED"] = "FILE_LOCKED";
25
+ ErrorCode["CONFIG_INVALID"] = "CONFIG_INVALID";
26
+ ErrorCode["CONFIG_MISSING"] = "CONFIG_MISSING";
27
+ ErrorCode["HOOK_TIMEOUT"] = "HOOK_TIMEOUT";
28
+ ErrorCode["HOOK_FAILED"] = "HOOK_FAILED";
29
+ })(ErrorCode || (ErrorCode = {}));
30
+ export class VmemError extends Error {
31
+ code;
32
+ severity;
33
+ recoverable;
34
+ recoveryHint;
35
+ context;
36
+ constructor(message, code, severity = ErrorSeverity.RECOVERABLE, recoverable = true, recoveryHint, context) {
37
+ super(message);
38
+ this.code = code;
39
+ this.severity = severity;
40
+ this.recoverable = recoverable;
41
+ this.recoveryHint = recoveryHint;
42
+ this.context = context;
43
+ this.name = 'VmemError';
44
+ }
45
+ static transient(message, code, context) {
46
+ return new VmemError(message, code, ErrorSeverity.TRANSIENT, true, undefined, context);
47
+ }
48
+ static recoverable(message, code, hint, context) {
49
+ return new VmemError(message, code, ErrorSeverity.RECOVERABLE, true, hint, context);
50
+ }
51
+ static dataLoss(message, code, context) {
52
+ return new VmemError(message, code, ErrorSeverity.DATA_LOSS, true, 'Restore from backup', context);
53
+ }
54
+ static permanent(message, code, hint, context) {
55
+ return new VmemError(message, code, ErrorSeverity.PERMANENT, false, hint, context);
56
+ }
57
+ toJSON() {
58
+ return {
59
+ name: this.name,
60
+ message: this.message,
61
+ code: this.code,
62
+ severity: this.severity,
63
+ recoverable: this.recoverable,
64
+ recoveryHint: this.recoveryHint,
65
+ context: this.context
66
+ };
67
+ }
68
+ }
69
+ export function sleep(ms) {
70
+ return new Promise(resolve => setTimeout(resolve, ms));
71
+ }
72
+ export async function withRetry(fn, options = {}) {
73
+ const { maxAttempts = 3, backoffMs = 100, shouldRetry = () => true } = options;
74
+ let lastError;
75
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
76
+ try {
77
+ return await fn();
78
+ }
79
+ catch (error) {
80
+ lastError = error instanceof Error ? error : new Error(String(error));
81
+ if (attempt === maxAttempts || !shouldRetry(lastError)) {
82
+ throw lastError;
83
+ }
84
+ await sleep(backoffMs * attempt);
85
+ }
86
+ }
87
+ throw lastError;
88
+ }
89
+ export function formatErrorForUser(error) {
90
+ switch (error.code) {
91
+ case ErrorCode.LLM_TIMEOUT:
92
+ return 'Memory extraction timed out. Using fast extraction only.';
93
+ case ErrorCode.LLM_RATE_LIMIT:
94
+ return 'API rate limit reached. Using cached patterns only.';
95
+ case ErrorCode.EMBEDDING_LOAD_FAILED:
96
+ return 'Could not load embedding model. Keyword search only.';
97
+ case ErrorCode.MV2_CORRUPTED:
98
+ return 'Memory file corrupted. Attempting to restore from backup...';
99
+ case ErrorCode.FILE_PERMISSION:
100
+ return 'Permission denied. Check file permissions for .opencode/memory/';
101
+ case ErrorCode.CONFIG_INVALID:
102
+ return `Invalid configuration: ${error.message}`;
103
+ case ErrorCode.FILE_NOT_FOUND:
104
+ return `File not found: ${error.context?.path || 'unknown'}`;
105
+ default:
106
+ return `Memory system error: ${error.message}`;
107
+ }
108
+ }
109
+ export const HOOK_TIMEOUTS = {
110
+ 'tool.execute.after': 50,
111
+ 'session.idle': 5000,
112
+ 'system.transform': 100,
113
+ 'session.created': 500,
114
+ 'session.compacting': 200
115
+ };
116
+ export async function withTimeout(fn, timeoutMs, hookName) {
117
+ try {
118
+ return await Promise.race([
119
+ fn(),
120
+ new Promise((_, reject) => setTimeout(() => reject(new VmemError(`Hook ${hookName || 'operation'} timed out`, ErrorCode.HOOK_TIMEOUT, ErrorSeverity.RECOVERABLE)), timeoutMs))
121
+ ]);
122
+ }
123
+ catch (error) {
124
+ if (error instanceof VmemError && error.code === ErrorCode.HOOK_TIMEOUT) {
125
+ console.warn(`[vmem] ${error.message}`);
126
+ return undefined;
127
+ }
128
+ throw error;
129
+ }
130
+ }
131
+ export function wrapHook(hookName, handler) {
132
+ const timeout = HOOK_TIMEOUTS[hookName] ?? 1000;
133
+ return (async (...args) => {
134
+ try {
135
+ return await withTimeout(() => handler(...args), timeout, hookName);
136
+ }
137
+ catch (error) {
138
+ console.error(`[vmem] Hook ${hookName} failed:`, error instanceof Error ? error.message : String(error));
139
+ return undefined;
140
+ }
141
+ });
142
+ }
143
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/utils/error.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function uuid(): string;
2
+ //# sourceMappingURL=uuid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uuid.d.ts","sourceRoot":"","sources":["../../src/utils/uuid.ts"],"names":[],"mappings":"AAEA,wBAAgB,IAAI,IAAI,MAAM,CAE7B"}
@@ -0,0 +1,5 @@
1
+ import { randomUUID } from 'crypto';
2
+ export function uuid() {
3
+ return randomUUID();
4
+ }
5
+ //# sourceMappingURL=uuid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uuid.js","sourceRoot":"","sources":["../../src/utils/uuid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,MAAM,UAAU,IAAI;IAClB,OAAO,UAAU,EAAE,CAAC;AACtB,CAAC"}