@the-brain/adapter-mongo 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.
Files changed (37) hide show
  1. package/dist/MongoStorageAdapter.d.ts +53 -0
  2. package/dist/MongoStorageAdapter.d.ts.map +1 -0
  3. package/dist/MongoStorageAdapter.js +309 -0
  4. package/dist/MongoStorageAdapter.js.map +1 -0
  5. package/dist/config/db.d.ts +2 -0
  6. package/dist/config/db.d.ts.map +1 -0
  7. package/dist/config/db.js +13 -0
  8. package/dist/config/db.js.map +1 -0
  9. package/dist/index.d.ts +15 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +10 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/models/Action.d.ts +14 -0
  14. package/dist/models/Action.d.ts.map +1 -0
  15. package/dist/models/Action.js +10 -0
  16. package/dist/models/Action.js.map +1 -0
  17. package/dist/models/Category.d.ts +18 -0
  18. package/dist/models/Category.d.ts.map +1 -0
  19. package/dist/models/Category.js +37 -0
  20. package/dist/models/Category.js.map +1 -0
  21. package/dist/models/ChatHistory.d.ts +17 -0
  22. package/dist/models/ChatHistory.d.ts.map +1 -0
  23. package/dist/models/ChatHistory.js +14 -0
  24. package/dist/models/ChatHistory.js.map +1 -0
  25. package/dist/models/LongTermMemory.d.ts +19 -0
  26. package/dist/models/LongTermMemory.d.ts.map +1 -0
  27. package/dist/models/LongTermMemory.js +46 -0
  28. package/dist/models/LongTermMemory.js.map +1 -0
  29. package/dist/models/Synapse.d.ts +17 -0
  30. package/dist/models/Synapse.d.ts.map +1 -0
  31. package/dist/models/Synapse.js +43 -0
  32. package/dist/models/Synapse.js.map +1 -0
  33. package/dist/models/VaultEntry.d.ts +24 -0
  34. package/dist/models/VaultEntry.d.ts.map +1 -0
  35. package/dist/models/VaultEntry.js +57 -0
  36. package/dist/models/VaultEntry.js.map +1 -0
  37. package/package.json +28 -0
@@ -0,0 +1,53 @@
1
+ import { IStorageAdapter, CategoryInfo, EntryAnalysisData, ActionInfo } from "@the-brain/core";
2
+ import type { IVaultEntry, ILongTermMemory, ICategory, TopicAnalysis, LongTermMemoryData } from "@the-brain/core";
3
+ export declare class MongoStorageAdapter implements IStorageAdapter {
4
+ createEntry(userId: string, rawText: string, analysis: EntryAnalysisData): Promise<IVaultEntry>;
5
+ getEntryById(entryId: string): Promise<IVaultEntry | null>;
6
+ getVaultData(userId: string): Promise<{
7
+ entries: IVaultEntry[];
8
+ memories: ILongTermMemory[];
9
+ categories: ICategory[];
10
+ }>;
11
+ deleteVaultEntry(entryId: string, userId: string): Promise<IVaultEntry | null>;
12
+ getCategories(): Promise<CategoryInfo[]>;
13
+ getUniqueUserIds(): Promise<string[]>;
14
+ getActions(): Promise<ActionInfo[]>;
15
+ getChatHistory(userId: string): Promise<{
16
+ role: "user" | "assistant";
17
+ content: string;
18
+ }[]>;
19
+ appendChatMessage(userId: string, role: "user" | "assistant", content: string, maxMessages: number): Promise<void>;
20
+ upsertAction(name: string, description: string, isBuiltIn?: boolean): Promise<void>;
21
+ findRelevantEntries(userId: string, keywords: string[]): Promise<IVaultEntry[]>;
22
+ findSimilarEntries(userId: string, embedding: number[], topK?: number): Promise<IVaultEntry[]>;
23
+ updateEntryEmbedding(entryId: string, embedding: number[]): Promise<void>;
24
+ getSynapsesBySource(entryId: string, limit: number): Promise<{
25
+ targetId: string;
26
+ weight: number;
27
+ reason: string;
28
+ targetSummary?: string;
29
+ targetRawText?: string;
30
+ }[]>;
31
+ processSynapseLinks(synapses: {
32
+ sourceId: string;
33
+ targetId: string;
34
+ reason: string;
35
+ strength: number;
36
+ }[], deltaEntryIds: Set<string>): Promise<number>;
37
+ findDeltaEntries(userId: string, since: Date): Promise<IVaultEntry[]>;
38
+ findContextEntries(userId: string, excludeIds: string[]): Promise<IVaultEntry[]>;
39
+ applyTopicAnalysis(topic: TopicAnalysis): Promise<number>;
40
+ findStrongEntries(userId: string): Promise<IVaultEntry[]>;
41
+ upsertLTM(userId: string, topic: string, category: string, memoryData: LongTermMemoryData, entries: IVaultEntry[]): Promise<void>;
42
+ markConsolidated(entries: IVaultEntry[]): Promise<void>;
43
+ getConsolidatedEntryIds(): Promise<string[]>;
44
+ findEntriesToDecay(since: Date): Promise<IVaultEntry[]>;
45
+ decayEntries(entryIds: {
46
+ toString(): string;
47
+ }[]): Promise<number>;
48
+ pruneDeadEntries(): Promise<number>;
49
+ pruneDeadSynapses(): Promise<number>;
50
+ findEntriesReadyForLTM(): Promise<IVaultEntry[]>;
51
+ countEntries(): Promise<number>;
52
+ }
53
+ //# sourceMappingURL=MongoStorageAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MongoStorageAdapter.d.ts","sourceRoot":"","sources":["../src/MongoStorageAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,309 @@
1
+ import mongoose from "mongoose";
2
+ import { VaultEntry } from "./models/VaultEntry.js";
3
+ import { Category } from "./models/Category.js";
4
+ import { LongTermMemory } from "./models/LongTermMemory.js";
5
+ import { Synapse } from "./models/Synapse.js";
6
+ import { Action } from "./models/Action.js";
7
+ import { ChatHistory } from "./models/ChatHistory.js";
8
+ import { BRAIN, MEMORY } from "@the-brain/core";
9
+ // ─── Synapse helpers ──────────────────────────────────────────────────────────
10
+ const INITIAL_SYNAPSE_WEIGHT = 0.3;
11
+ const INITIAL_SYNAPSE_STABILITY = 0.5;
12
+ const MAX_SYNAPSES_PER_ENTRY = 3;
13
+ async function fireSynapse(id1, id2, reason = "Manual connection") {
14
+ const fromId = new mongoose.Types.ObjectId(id1);
15
+ const toId = new mongoose.Types.ObjectId(id2);
16
+ const [from, to] = fromId.toString() < toId.toString()
17
+ ? [fromId, toId]
18
+ : [toId, fromId];
19
+ let synapse = await Synapse.findOne({ from, to });
20
+ const isNew = !synapse;
21
+ if (synapse) {
22
+ synapse.weight = Math.min(1.0, synapse.weight + 0.1);
23
+ synapse.lastFired = new Date();
24
+ synapse.reason = reason;
25
+ synapse.stability = Math.min(1.0, synapse.stability + 0.05);
26
+ await synapse.save();
27
+ }
28
+ else {
29
+ synapse = new Synapse({
30
+ from,
31
+ to,
32
+ weight: INITIAL_SYNAPSE_WEIGHT,
33
+ stability: INITIAL_SYNAPSE_STABILITY,
34
+ lastFired: new Date(),
35
+ reason,
36
+ });
37
+ await synapse.save();
38
+ }
39
+ return { created: isNew };
40
+ }
41
+ // ─── Cosine similarity ────────────────────────────────────────────────────────
42
+ function cosineSimilarity(a, b) {
43
+ if (a.length !== b.length || a.length === 0)
44
+ return 0;
45
+ let dot = 0, normA = 0, normB = 0;
46
+ for (let i = 0; i < a.length; i++) {
47
+ dot += a[i] * b[i];
48
+ normA += a[i] * a[i];
49
+ normB += b[i] * b[i];
50
+ }
51
+ return normA === 0 || normB === 0 ? 0 : dot / (Math.sqrt(normA) * Math.sqrt(normB));
52
+ }
53
+ export class MongoStorageAdapter {
54
+ // ─── Entry CRUD ───────────────────────────────────────────────────────────
55
+ async createEntry(userId, rawText, analysis) {
56
+ const entry = new VaultEntry({ userId, rawText, analysis });
57
+ return entry.save();
58
+ }
59
+ async getEntryById(entryId) {
60
+ return VaultEntry.findById(entryId);
61
+ }
62
+ // ─── Vault ────────────────────────────────────────────────────────────────
63
+ async getVaultData(userId) {
64
+ const [entries, memories, categories] = await Promise.all([
65
+ VaultEntry.find({ userId }).sort({ createdAt: -1 }),
66
+ LongTermMemory.find({ userId }).populate('categoryId').sort({ createdAt: -1 }),
67
+ Category.find({ isActive: true }).sort({ order: 1 }),
68
+ ]);
69
+ return {
70
+ entries: entries,
71
+ memories: memories,
72
+ categories: categories,
73
+ };
74
+ }
75
+ async deleteVaultEntry(entryId, userId) {
76
+ return VaultEntry.findOneAndDelete({ _id: entryId, userId });
77
+ }
78
+ // ─── Shared ───────────────────────────────────────────────────────────────
79
+ async getCategories() {
80
+ const categories = await Category.find({ isActive: true }).sort({ order: 1 });
81
+ return categories.map(cat => ({
82
+ name: cat.name,
83
+ description: cat.description,
84
+ keywords: cat.keywords,
85
+ }));
86
+ }
87
+ async getUniqueUserIds() {
88
+ const ids = await VaultEntry.distinct('userId');
89
+ return ids.map((id) => String(id));
90
+ }
91
+ async getActions() {
92
+ const actions = await Action.find({ isActive: true });
93
+ return actions.map(a => ({ name: a.name, description: a.description }));
94
+ }
95
+ async getChatHistory(userId) {
96
+ const doc = await ChatHistory.findOne({ userId });
97
+ if (!doc)
98
+ return [];
99
+ return doc.messages.map(m => ({ role: m.role, content: m.content }));
100
+ }
101
+ async appendChatMessage(userId, role, content, maxMessages) {
102
+ await ChatHistory.findOneAndUpdate({ userId }, {
103
+ $push: { messages: { $each: [{ role, content }], $slice: -maxMessages } },
104
+ $set: { updatedAt: new Date() },
105
+ }, { upsert: true });
106
+ }
107
+ async upsertAction(name, description, isBuiltIn = false) {
108
+ await Action.findOneAndUpdate({ name }, { name, description, isBuiltIn, isActive: true }, { upsert: true });
109
+ }
110
+ // ─── Intent Context ───────────────────────────────────────────────────────
111
+ async findRelevantEntries(userId, keywords) {
112
+ const pattern = keywords.join('|');
113
+ return VaultEntry.find({
114
+ userId,
115
+ $or: [
116
+ { 'analysis.tags': { $in: keywords } },
117
+ { 'analysis.summary': { $regex: pattern, $options: 'i' } },
118
+ { rawText: { $regex: pattern, $options: 'i' } },
119
+ ],
120
+ })
121
+ .sort({ 'analysis.strength': -1, lastActivityAt: -1 })
122
+ .limit(MEMORY.CONTEXT_TOP_ENTRIES)
123
+ .lean();
124
+ }
125
+ async findSimilarEntries(userId, embedding, topK = 3) {
126
+ const candidates = await VaultEntry.find({
127
+ userId,
128
+ embedding: { $exists: true, $ne: [] },
129
+ })
130
+ .select('_id rawText analysis embedding')
131
+ .lean();
132
+ if (candidates.length === 0)
133
+ return [];
134
+ const scored = candidates.map(entry => ({
135
+ entry,
136
+ score: cosineSimilarity(embedding, entry.embedding),
137
+ }));
138
+ scored.sort((a, b) => b.score - a.score);
139
+ return scored.slice(0, topK).map(s => s.entry);
140
+ }
141
+ async updateEntryEmbedding(entryId, embedding) {
142
+ await VaultEntry.updateOne({ _id: entryId }, { $set: { embedding } });
143
+ }
144
+ // ─── Synapse Queries & Management ────────────────────────────────────────
145
+ async getSynapsesBySource(entryId, limit) {
146
+ const synapses = await Synapse.find({ from: new mongoose.Types.ObjectId(entryId) })
147
+ .sort({ weight: -1 })
148
+ .limit(limit)
149
+ .populate('to', 'analysis.summary analysis.tags rawText')
150
+ .lean();
151
+ return synapses.map(synapse => {
152
+ const targetEntry = synapse.to;
153
+ return {
154
+ targetId: targetEntry._id.toString(),
155
+ weight: synapse.weight,
156
+ reason: synapse.reason || 'semantyczne podobieństwo',
157
+ targetSummary: targetEntry.analysis?.summary,
158
+ targetRawText: targetEntry.rawText,
159
+ };
160
+ });
161
+ }
162
+ async processSynapseLinks(synapses, deltaEntryIds) {
163
+ let createdCount = 0;
164
+ const synapsesBySource = new Map();
165
+ for (const synapse of synapses) {
166
+ if (!synapsesBySource.has(synapse.sourceId)) {
167
+ synapsesBySource.set(synapse.sourceId, []);
168
+ }
169
+ synapsesBySource.get(synapse.sourceId).push(synapse);
170
+ }
171
+ for (const [sourceId, links] of synapsesBySource) {
172
+ if (!deltaEntryIds.has(sourceId))
173
+ continue;
174
+ const topLinks = links
175
+ .sort((a, b) => b.strength - a.strength)
176
+ .slice(0, MAX_SYNAPSES_PER_ENTRY);
177
+ console.log(`👁️ [Świadomość] 📎 Wpis ${sourceId.substring(0, 8)}... → ${topLinks.length} synaps (max ${MAX_SYNAPSES_PER_ENTRY})`);
178
+ for (const link of topLinks) {
179
+ try {
180
+ const { created } = await fireSynapse(link.sourceId, link.targetId, link.reason);
181
+ if (created)
182
+ createdCount++;
183
+ }
184
+ catch (error) {
185
+ console.error(`👁️ [Świadomość] ❌ Błąd tworzenia synapsy:`, error);
186
+ }
187
+ }
188
+ }
189
+ return createdCount;
190
+ }
191
+ // ─── Conscious Processor ──────────────────────────────────────────────────
192
+ async findDeltaEntries(userId, since) {
193
+ return VaultEntry.find({
194
+ userId,
195
+ $or: [
196
+ { isAnalyzed: false },
197
+ { lastActivityAt: { $gte: since } },
198
+ ],
199
+ })
200
+ .sort({ lastActivityAt: -1 })
201
+ .limit(MEMORY.DELTA_ENTRIES_LIMIT);
202
+ }
203
+ async findContextEntries(userId, excludeIds) {
204
+ return VaultEntry.find({
205
+ userId,
206
+ _id: { $nin: excludeIds.map(id => new mongoose.Types.ObjectId(id)) },
207
+ isAnalyzed: true,
208
+ 'analysis.strength': { $gte: BRAIN.STRENGTH_CONTEXT_MIN },
209
+ })
210
+ .sort({ 'analysis.strength': -1, lastActivityAt: -1 })
211
+ .limit(MEMORY.CONTEXT_ENTRIES_LIMIT)
212
+ .select('_id rawText analysis');
213
+ }
214
+ async applyTopicAnalysis(topic) {
215
+ const ops = topic.entryIds.map(id => ({
216
+ updateOne: {
217
+ filter: { _id: new mongoose.Types.ObjectId(id) },
218
+ update: {
219
+ $set: { 'analysis.category': topic.category, isAnalyzed: true },
220
+ $addToSet: { 'analysis.tags': { $each: topic.tags } },
221
+ $inc: { 'analysis.strength': topic.importance || 1 },
222
+ },
223
+ },
224
+ }));
225
+ if (ops.length === 0)
226
+ return 0;
227
+ await VaultEntry.bulkWrite(ops);
228
+ return ops.length;
229
+ }
230
+ async findStrongEntries(userId) {
231
+ return VaultEntry.find({
232
+ userId,
233
+ 'analysis.strength': { $gte: BRAIN.STRENGTH_LTM_THRESHOLD },
234
+ isConsolidated: false,
235
+ });
236
+ }
237
+ async upsertLTM(userId, topic, category, memoryData, entries) {
238
+ const categoryDoc = await Category.findOne({ name: category, isActive: true });
239
+ const existing = await LongTermMemory.findOne({ userId, topic });
240
+ if (existing) {
241
+ existing.summary = memoryData.summary;
242
+ existing.tags = [...new Set([...existing.tags, ...memoryData.tags])];
243
+ existing.sourceEntryIds = entries.map(e => new mongoose.Types.ObjectId(e._id.toString()));
244
+ await existing.save();
245
+ }
246
+ else {
247
+ await LongTermMemory.create({
248
+ userId,
249
+ summary: memoryData.summary,
250
+ tags: memoryData.tags,
251
+ categoryId: categoryDoc?._id || null,
252
+ categoryName: category,
253
+ topic,
254
+ sourceEntryIds: entries.map(e => new mongoose.Types.ObjectId(e._id.toString())),
255
+ strength: BRAIN.LTM_INITIAL_STRENGTH,
256
+ });
257
+ }
258
+ }
259
+ async markConsolidated(entries) {
260
+ await VaultEntry.updateMany({ _id: { $in: entries.map(e => new mongoose.Types.ObjectId(e._id.toString())) } }, { $set: { isConsolidated: true } });
261
+ }
262
+ // ─── Subconscious Routine ─────────────────────────────────────────────────
263
+ async getConsolidatedEntryIds() {
264
+ const ids = await LongTermMemory.distinct('sourceEntryIds');
265
+ return ids.map((id) => String(id));
266
+ }
267
+ async findEntriesToDecay(since) {
268
+ return VaultEntry.find({
269
+ isConsolidated: false,
270
+ lastActivityAt: { $lt: since },
271
+ 'analysis.strength': { $gt: 0 },
272
+ }).select('_id analysis.strength');
273
+ }
274
+ async decayEntries(entryIds) {
275
+ if (entryIds.length === 0)
276
+ return 0;
277
+ const ops = entryIds.map(id => ({
278
+ updateOne: {
279
+ filter: { _id: new mongoose.Types.ObjectId(id.toString()) },
280
+ update: { $inc: { 'analysis.strength': -1 } },
281
+ },
282
+ }));
283
+ const result = await VaultEntry.bulkWrite(ops);
284
+ return result.modifiedCount;
285
+ }
286
+ async pruneDeadEntries() {
287
+ const result = await VaultEntry.deleteMany({
288
+ 'analysis.strength': { $lte: BRAIN.STRENGTH_DECAY_PRUNE },
289
+ isConsolidated: false,
290
+ });
291
+ return result.deletedCount;
292
+ }
293
+ async pruneDeadSynapses() {
294
+ const result = await Synapse.deleteMany({
295
+ weight: { $lte: BRAIN.SYNAPSE_PRUNE_WEIGHT },
296
+ });
297
+ return result.deletedCount;
298
+ }
299
+ async findEntriesReadyForLTM() {
300
+ return VaultEntry.find({
301
+ 'analysis.strength': { $gte: BRAIN.STRENGTH_LTM_THRESHOLD },
302
+ isConsolidated: false,
303
+ }).select('_id');
304
+ }
305
+ async countEntries() {
306
+ return VaultEntry.countDocuments();
307
+ }
308
+ }
309
+ //# sourceMappingURL=MongoStorageAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MongoStorageAdapter.js","sourceRoot":"","sources":["../src/MongoStorageAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function connectDB(): Promise<void>;
2
+ //# sourceMappingURL=db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/config/db.ts"],"names":[],"mappings":"AAEA,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAS/C"}
@@ -0,0 +1,13 @@
1
+ import mongoose from 'mongoose';
2
+ export async function connectDB() {
3
+ try {
4
+ const uri = process.env.MONGODB_URI || 'mongodb://localhost:27017/brain-app';
5
+ await mongoose.connect(uri);
6
+ console.log('✅ MongoDB connected successfully');
7
+ }
8
+ catch (error) {
9
+ console.error('❌ MongoDB connection error:', error);
10
+ process.exit(1);
11
+ }
12
+ }
13
+ //# sourceMappingURL=db.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/config/db.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,qCAAqC,CAAC;QAC7E,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,15 @@
1
+ export { MongoStorageAdapter } from "./MongoStorageAdapter.js";
2
+ export { connectDB } from "./config/db.js";
3
+ export { VaultEntry } from "./models/VaultEntry.js";
4
+ export type { IVaultEntryDoc } from "./models/VaultEntry.js";
5
+ export { Synapse } from "./models/Synapse.js";
6
+ export type { ISynapseDoc } from "./models/Synapse.js";
7
+ export { LongTermMemory } from "./models/LongTermMemory.js";
8
+ export type { ILongTermMemoryDoc } from "./models/LongTermMemory.js";
9
+ export { Category } from "./models/Category.js";
10
+ export type { ICategoryDoc } from "./models/Category.js";
11
+ export { Action } from "./models/Action.js";
12
+ export type { IActionDoc } from "./models/Action.js";
13
+ export { ChatHistory } from "./models/ChatHistory.js";
14
+ export type { IChatHistoryDoc, IChatMessageDoc } from "./models/ChatHistory.js";
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,10 @@
1
+ export { MongoStorageAdapter } from "./MongoStorageAdapter.js";
2
+ export { connectDB } from "./config/db.js";
3
+ // ─── Model exports (for advanced usage) ──────────────────────────────────────
4
+ export { VaultEntry } from "./models/VaultEntry.js";
5
+ export { Synapse } from "./models/Synapse.js";
6
+ export { LongTermMemory } from "./models/LongTermMemory.js";
7
+ export { Category } from "./models/Category.js";
8
+ export { Action } from "./models/Action.js";
9
+ export { ChatHistory } from "./models/ChatHistory.js";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,gFAAgF;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import mongoose from "mongoose";
2
+ export interface IActionDoc extends mongoose.Document {
3
+ name: string;
4
+ description: string;
5
+ isActive: boolean;
6
+ isBuiltIn: boolean;
7
+ createdAt: Date;
8
+ }
9
+ export declare const Action: mongoose.Model<IActionDoc, {}, {}, {}, mongoose.Document<unknown, {}, IActionDoc, {}, {}> & IActionDoc & Required<{
10
+ _id: mongoose.Types.ObjectId;
11
+ }> & {
12
+ __v: number;
13
+ }, any>;
14
+ //# sourceMappingURL=Action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Action.d.ts","sourceRoot":"","sources":["../../src/models/Action.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAUhC,MAAM,WAAW,UAAW,SAAQ,QAAQ,CAAC,QAAQ;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,eAAO,MAAM,MAAM;;;;OAAqD,CAAC"}
@@ -0,0 +1,10 @@
1
+ import mongoose from "mongoose";
2
+ const actionSchema = new mongoose.Schema({
3
+ name: { type: String, required: true, unique: true },
4
+ description: { type: String, required: true },
5
+ isActive: { type: Boolean, default: true },
6
+ isBuiltIn: { type: Boolean, default: false },
7
+ createdAt: { type: Date, default: Date.now },
8
+ });
9
+ export const Action = mongoose.model("Action", actionSchema);
10
+ //# sourceMappingURL=Action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Action.js","sourceRoot":"","sources":["../../src/models/Action.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,YAAY,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACpD,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC7C,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;IAC1C,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;IAC5C,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;CAC7C,CAAC,CAAC;AAUH,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAa,QAAQ,EAAE,YAAY,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import mongoose, { Document } from 'mongoose';
2
+ export interface ICategoryDoc extends Document {
3
+ name: string;
4
+ description: string;
5
+ icon: string;
6
+ color: string;
7
+ keywords: string[];
8
+ isActive: boolean;
9
+ order: number;
10
+ createdAt: Date;
11
+ updatedAt: Date;
12
+ }
13
+ export declare const Category: mongoose.Model<ICategoryDoc, {}, {}, {}, mongoose.Document<unknown, {}, ICategoryDoc, {}, {}> & ICategoryDoc & Required<{
14
+ _id: mongoose.Types.ObjectId;
15
+ }> & {
16
+ __v: number;
17
+ }, any>;
18
+ //# sourceMappingURL=Category.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Category.d.ts","sourceRoot":"","sources":["../../src/models/Category.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,EAAE,EAAE,QAAQ,EAAU,MAAM,UAAU,CAAC;AAEtD,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAwCD,eAAO,MAAM,QAAQ;;;;OAA2D,CAAC"}
@@ -0,0 +1,37 @@
1
+ import mongoose, { Schema } from 'mongoose';
2
+ const categorySchema = new Schema({
3
+ name: {
4
+ type: String,
5
+ required: true,
6
+ unique: true,
7
+ trim: true,
8
+ },
9
+ description: {
10
+ type: String,
11
+ required: true,
12
+ },
13
+ icon: {
14
+ type: String,
15
+ default: '📁',
16
+ },
17
+ color: {
18
+ type: String,
19
+ default: '#6B7280',
20
+ },
21
+ keywords: {
22
+ type: [String],
23
+ default: [],
24
+ },
25
+ isActive: {
26
+ type: Boolean,
27
+ default: true,
28
+ },
29
+ order: {
30
+ type: Number,
31
+ default: 0,
32
+ },
33
+ }, {
34
+ timestamps: true,
35
+ });
36
+ export const Category = mongoose.model('Category', categorySchema);
37
+ //# sourceMappingURL=Category.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Category.js","sourceRoot":"","sources":["../../src/models/Category.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,EAAE,EAAY,MAAM,EAAE,MAAM,UAAU,CAAC;AActD,MAAM,cAAc,GAAG,IAAI,MAAM,CAC/B;IACE,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,IAAI;KACX;IACD,WAAW,EAAE;QACX,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACf;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,IAAI;KACd;IACD,KAAK,EAAE;QACL,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,SAAS;KACnB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,EAAE;KACZ;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,IAAI;KACd;IACD,KAAK,EAAE;QACL,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,CAAC;KACX;CACF,EACD;IACE,UAAU,EAAE,IAAI;CACjB,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAe,UAAU,EAAE,cAAc,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import mongoose from "mongoose";
2
+ export interface IChatMessageDoc {
3
+ role: "user" | "assistant";
4
+ content: string;
5
+ createdAt: Date;
6
+ }
7
+ export interface IChatHistoryDoc extends mongoose.Document {
8
+ userId: string;
9
+ messages: IChatMessageDoc[];
10
+ updatedAt: Date;
11
+ }
12
+ export declare const ChatHistory: mongoose.Model<IChatHistoryDoc, {}, {}, {}, mongoose.Document<unknown, {}, IChatHistoryDoc, {}, {}> & IChatHistoryDoc & Required<{
13
+ _id: mongoose.Types.ObjectId;
14
+ }> & {
15
+ __v: number;
16
+ }, any>;
17
+ //# sourceMappingURL=ChatHistory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatHistory.d.ts","sourceRoot":"","sources":["../../src/models/ChatHistory.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAchC,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,eAAgB,SAAQ,QAAQ,CAAC,QAAQ;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,eAAO,MAAM,WAAW;;;;OAAoE,CAAC"}
@@ -0,0 +1,14 @@
1
+ import mongoose from "mongoose";
2
+ const chatHistorySchema = new mongoose.Schema({
3
+ userId: { type: String, required: true, unique: true },
4
+ messages: [
5
+ {
6
+ role: { type: String, enum: ["user", "assistant"], required: true },
7
+ content: { type: String, required: true },
8
+ createdAt: { type: Date, default: Date.now },
9
+ },
10
+ ],
11
+ updatedAt: { type: Date, default: Date.now },
12
+ });
13
+ export const ChatHistory = mongoose.model("ChatHistory", chatHistorySchema);
14
+ //# sourceMappingURL=ChatHistory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatHistory.js","sourceRoot":"","sources":["../../src/models/ChatHistory.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,iBAAiB,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC;IAC5C,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACtD,QAAQ,EAAE;QACR;YACE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;YACnE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACzC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;SAC7C;KACF;IACD,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;CAC7C,CAAC,CAAC;AAcH,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAkB,aAAa,EAAE,iBAAiB,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import mongoose, { Document, Types } from 'mongoose';
2
+ export interface ILongTermMemoryDoc extends Document {
3
+ userId: string;
4
+ summary: string | null;
5
+ tags: string[];
6
+ strength: number;
7
+ categoryId: Types.ObjectId | null;
8
+ categoryName: string | null;
9
+ sourceEntryIds: Types.ObjectId[];
10
+ topic: string | null;
11
+ createdAt: Date;
12
+ updatedAt: Date;
13
+ }
14
+ export declare const LongTermMemory: mongoose.Model<ILongTermMemoryDoc, {}, {}, {}, mongoose.Document<unknown, {}, ILongTermMemoryDoc, {}, {}> & ILongTermMemoryDoc & Required<{
15
+ _id: Types.ObjectId;
16
+ }> & {
17
+ __v: number;
18
+ }, any>;
19
+ //# sourceMappingURL=LongTermMemory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LongTermMemory.d.ts","sourceRoot":"","sources":["../../src/models/LongTermMemory.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,EAAE,EAAE,QAAQ,EAAU,KAAK,EAAE,MAAM,UAAU,CAAC;AAE7D,MAAM,WAAW,kBAAmB,SAAQ,QAAQ;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IAClC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;IACjC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAkDD,eAAO,MAAM,cAAc;;;;OAA6E,CAAC"}
@@ -0,0 +1,46 @@
1
+ import mongoose, { Schema } from 'mongoose';
2
+ const longTermMemorySchema = new Schema({
3
+ userId: {
4
+ type: String,
5
+ required: true,
6
+ index: true,
7
+ },
8
+ summary: {
9
+ type: String,
10
+ default: null,
11
+ },
12
+ tags: {
13
+ type: [String],
14
+ default: [],
15
+ },
16
+ strength: {
17
+ type: Number,
18
+ default: 10,
19
+ min: 1,
20
+ max: 10,
21
+ },
22
+ categoryId: {
23
+ type: Schema.Types.ObjectId,
24
+ ref: 'Category',
25
+ default: null,
26
+ },
27
+ categoryName: {
28
+ type: String,
29
+ default: null,
30
+ },
31
+ sourceEntryIds: {
32
+ type: [Schema.Types.ObjectId],
33
+ ref: 'VaultEntry',
34
+ default: [],
35
+ },
36
+ topic: {
37
+ type: String,
38
+ default: null,
39
+ },
40
+ }, {
41
+ timestamps: true,
42
+ });
43
+ longTermMemorySchema.index({ userId: 1, categoryId: 1 });
44
+ longTermMemorySchema.index({ userId: 1, topic: 1 });
45
+ export const LongTermMemory = mongoose.model('LongTermMemory', longTermMemorySchema);
46
+ //# sourceMappingURL=LongTermMemory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LongTermMemory.js","sourceRoot":"","sources":["../../src/models/LongTermMemory.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,EAAE,EAAY,MAAM,EAAS,MAAM,UAAU,CAAC;AAe7D,MAAM,oBAAoB,GAAG,IAAI,MAAM,CACrC;IACE,MAAM,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,IAAI;KACZ;IACD,OAAO,EAAE;QACP,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,IAAI;KACd;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,EAAE;KACZ;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,EAAE;KACR;IACD,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;QAC3B,GAAG,EAAE,UAAU;QACf,OAAO,EAAE,IAAI;KACd;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,IAAI;KACd;IACD,cAAc,EAAE;QACd,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC7B,GAAG,EAAE,YAAY;QACjB,OAAO,EAAE,EAAE;KACZ;IACD,KAAK,EAAE;QACL,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,IAAI;KACd;CACF,EACD;IACE,UAAU,EAAE,IAAI;CACjB,CACF,CAAC;AAEF,oBAAoB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;AACzD,oBAAoB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAqB,gBAAgB,EAAE,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import mongoose, { Document, Types } from 'mongoose';
2
+ export interface ISynapseDoc extends Document {
3
+ from: Types.ObjectId;
4
+ to: Types.ObjectId;
5
+ weight: number;
6
+ stability: number;
7
+ reason?: string;
8
+ lastFired: Date;
9
+ createdAt: Date;
10
+ updatedAt: Date;
11
+ }
12
+ export declare const Synapse: mongoose.Model<ISynapseDoc, {}, {}, {}, mongoose.Document<unknown, {}, ISynapseDoc, {}, {}> & ISynapseDoc & Required<{
13
+ _id: Types.ObjectId;
14
+ }> & {
15
+ __v: number;
16
+ }, any>;
17
+ //# sourceMappingURL=Synapse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Synapse.d.ts","sourceRoot":"","sources":["../../src/models/Synapse.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,EAAE,EAAE,QAAQ,EAAU,KAAK,EAAE,MAAM,UAAU,CAAC;AAE7D,MAAM,WAAW,WAAY,SAAQ,QAAQ;IAC3C,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC;IACrB,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AA+CD,eAAO,MAAM,OAAO;;;;OAAwD,CAAC"}
@@ -0,0 +1,43 @@
1
+ import mongoose, { Schema } from 'mongoose';
2
+ const synapseSchema = new Schema({
3
+ from: {
4
+ type: Schema.Types.ObjectId,
5
+ ref: 'VaultEntry',
6
+ required: true,
7
+ },
8
+ to: {
9
+ type: Schema.Types.ObjectId,
10
+ ref: 'VaultEntry',
11
+ required: true,
12
+ },
13
+ weight: {
14
+ type: Number,
15
+ required: true,
16
+ default: 0.1,
17
+ min: 0.0,
18
+ max: 1.0,
19
+ },
20
+ stability: {
21
+ type: Number,
22
+ required: true,
23
+ default: 0.5,
24
+ min: 0.0,
25
+ max: 1.0,
26
+ },
27
+ reason: {
28
+ type: String,
29
+ default: null,
30
+ },
31
+ lastFired: {
32
+ type: Date,
33
+ default: Date.now,
34
+ },
35
+ }, {
36
+ timestamps: true,
37
+ });
38
+ synapseSchema.index({ from: 1, to: 1 }, { unique: true });
39
+ synapseSchema.index({ from: 1, weight: -1 });
40
+ synapseSchema.index({ to: 1, weight: -1 });
41
+ synapseSchema.index({ lastFired: 1, weight: 1 });
42
+ export const Synapse = mongoose.model('Synapse', synapseSchema);
43
+ //# sourceMappingURL=Synapse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Synapse.js","sourceRoot":"","sources":["../../src/models/Synapse.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,EAAE,EAAY,MAAM,EAAS,MAAM,UAAU,CAAC;AAa7D,MAAM,aAAa,GAAG,IAAI,MAAM,CAC9B;IACE,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;QAC3B,GAAG,EAAE,YAAY;QACjB,QAAQ,EAAE,IAAI;KACf;IACD,EAAE,EAAE;QACF,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;QAC3B,GAAG,EAAE,YAAY;QACjB,QAAQ,EAAE,IAAI;KACf;IACD,MAAM,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,GAAG;QACZ,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;KACT;IACD,SAAS,EAAE;QACT,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,GAAG;QACZ,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;KACT;IACD,MAAM,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,IAAI;KACd;IACD,SAAS,EAAE;QACT,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,IAAI,CAAC,GAAG;KAClB;CACF,EACD;IACE,UAAU,EAAE,IAAI;CACjB,CACF,CAAC;AAEF,aAAa,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1D,aAAa,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7C,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3C,aAAa,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAEjD,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAc,SAAS,EAAE,aAAa,CAAC,CAAC"}
@@ -0,0 +1,24 @@
1
+ import mongoose from "mongoose";
2
+ export interface IVaultEntryDoc extends mongoose.Document {
3
+ userId: string;
4
+ rawText: string;
5
+ analysis?: {
6
+ summary: string;
7
+ tags: string[];
8
+ strength: number;
9
+ category: string;
10
+ isProcessed: boolean;
11
+ };
12
+ embedding?: number[];
13
+ isAnalyzed: boolean;
14
+ isConsolidated: boolean;
15
+ lastActivityAt: Date;
16
+ createdAt: Date;
17
+ updatedAt: Date;
18
+ }
19
+ export declare const VaultEntry: mongoose.Model<IVaultEntryDoc, {}, {}, {}, mongoose.Document<unknown, {}, IVaultEntryDoc, {}, {}> & IVaultEntryDoc & Required<{
20
+ _id: mongoose.Types.ObjectId;
21
+ }> & {
22
+ __v: number;
23
+ }, any>;
24
+ //# sourceMappingURL=VaultEntry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VaultEntry.d.ts","sourceRoot":"","sources":["../../src/models/VaultEntry.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAoEhC,MAAM,WAAW,cAAe,SAAQ,QAAQ,CAAC,QAAQ;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,IAAI,CAAC;IACrB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,eAAO,MAAM,UAAU;;;;OAAiE,CAAC"}
@@ -0,0 +1,57 @@
1
+ import mongoose from "mongoose";
2
+ const vaultEntrySchema = new mongoose.Schema({
3
+ userId: {
4
+ type: String,
5
+ required: true,
6
+ index: true,
7
+ },
8
+ rawText: {
9
+ type: String,
10
+ required: true,
11
+ },
12
+ analysis: {
13
+ summary: { type: String },
14
+ tags: [{ type: String }],
15
+ strength: { type: Number, min: 0, max: 10, default: 5 },
16
+ category: { type: String },
17
+ isProcessed: { type: Boolean, default: false },
18
+ },
19
+ isAnalyzed: {
20
+ type: Boolean,
21
+ default: false,
22
+ index: true,
23
+ },
24
+ isConsolidated: {
25
+ type: Boolean,
26
+ default: false,
27
+ index: true,
28
+ },
29
+ embedding: {
30
+ type: [Number],
31
+ default: undefined,
32
+ },
33
+ lastActivityAt: {
34
+ type: Date,
35
+ default: Date.now,
36
+ index: true,
37
+ },
38
+ createdAt: {
39
+ type: Date,
40
+ default: Date.now,
41
+ },
42
+ updatedAt: {
43
+ type: Date,
44
+ default: Date.now,
45
+ },
46
+ });
47
+ vaultEntrySchema.index({ userId: 1, createdAt: -1 });
48
+ vaultEntrySchema.pre('save', function (next) {
49
+ this.updatedAt = new Date();
50
+ next();
51
+ });
52
+ vaultEntrySchema.pre('findOneAndUpdate', function (next) {
53
+ this.set({ updatedAt: new Date() });
54
+ next();
55
+ });
56
+ export const VaultEntry = mongoose.model('VaultEntry', vaultEntrySchema);
57
+ //# sourceMappingURL=VaultEntry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VaultEntry.js","sourceRoot":"","sources":["../../src/models/VaultEntry.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,gBAAgB,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,IAAI;KACZ;IAED,OAAO,EAAE;QACP,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACf;IAED,QAAQ,EAAE;QACR,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QACzB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACxB,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;QACvD,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QAC1B,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;KAC/C;IAED,UAAU,EAAE;QACV,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,IAAI;KACZ;IAED,cAAc,EAAE;QACd,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,IAAI;KACZ;IAED,SAAS,EAAE;QACT,IAAI,EAAE,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,SAAS;KACnB;IAED,cAAc,EAAE;QACd,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,IAAI,CAAC,GAAG;QACjB,KAAK,EAAE,IAAI;KACZ;IAED,SAAS,EAAE;QACT,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,IAAI,CAAC,GAAG;KAClB;IAED,SAAS,EAAE;QACT,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,IAAI,CAAC,GAAG;KAClB;CACF,CAAC,CAAC;AAEH,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAErD,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,IAAI;IACzC,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IAC5B,IAAI,EAAE,CAAC;AACT,CAAC,CAAC,CAAC;AAEH,gBAAgB,CAAC,GAAG,CAAC,kBAAkB,EAAE,UAAU,IAAI;IACrD,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;IACpC,IAAI,EAAE,CAAC;AACT,CAAC,CAAC,CAAC;AAoBH,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAiB,YAAY,EAAE,gBAAgB,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "@the-brain/adapter-mongo",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "import": "./dist/index.js",
10
+ "types": "./dist/index.d.ts"
11
+ }
12
+ },
13
+ "files": ["dist", "README.md"],
14
+ "scripts": {
15
+ "build": "tsc",
16
+ "dev": "tsc --watch"
17
+ },
18
+ "peerDependencies": {
19
+ "@the-brain/core": "*",
20
+ "mongoose": "^8.0.0"
21
+ },
22
+ "devDependencies": {
23
+ "@the-brain/core": "*",
24
+ "mongoose": "^8.5.0",
25
+ "typescript": "^5.5.3",
26
+ "@types/node": "^22.0.0"
27
+ }
28
+ }