@gotza02/smartagent 1.2.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 (75) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +422 -0
  3. package/dist/config/index.d.ts +72 -0
  4. package/dist/config/index.d.ts.map +1 -0
  5. package/dist/config/index.js +329 -0
  6. package/dist/config/index.js.map +1 -0
  7. package/dist/core/agent-manager.d.ts +116 -0
  8. package/dist/core/agent-manager.d.ts.map +1 -0
  9. package/dist/core/agent-manager.js +460 -0
  10. package/dist/core/agent-manager.js.map +1 -0
  11. package/dist/core/context-manager.d.ts +107 -0
  12. package/dist/core/context-manager.d.ts.map +1 -0
  13. package/dist/core/context-manager.js +467 -0
  14. package/dist/core/context-manager.js.map +1 -0
  15. package/dist/core/database.d.ts +82 -0
  16. package/dist/core/database.d.ts.map +1 -0
  17. package/dist/core/database.js +751 -0
  18. package/dist/core/database.js.map +1 -0
  19. package/dist/core/event-emitter.d.ts +110 -0
  20. package/dist/core/event-emitter.d.ts.map +1 -0
  21. package/dist/core/event-emitter.js +240 -0
  22. package/dist/core/event-emitter.js.map +1 -0
  23. package/dist/core/metrics.d.ts +108 -0
  24. package/dist/core/metrics.d.ts.map +1 -0
  25. package/dist/core/metrics.js +281 -0
  26. package/dist/core/metrics.js.map +1 -0
  27. package/dist/core/middleware.d.ts +63 -0
  28. package/dist/core/middleware.d.ts.map +1 -0
  29. package/dist/core/middleware.js +194 -0
  30. package/dist/core/middleware.js.map +1 -0
  31. package/dist/core/plugin-system.d.ts +86 -0
  32. package/dist/core/plugin-system.d.ts.map +1 -0
  33. package/dist/core/plugin-system.js +251 -0
  34. package/dist/core/plugin-system.js.map +1 -0
  35. package/dist/core/task-scheduler.d.ts +130 -0
  36. package/dist/core/task-scheduler.d.ts.map +1 -0
  37. package/dist/core/task-scheduler.js +401 -0
  38. package/dist/core/task-scheduler.js.map +1 -0
  39. package/dist/engines/auto-router.d.ts +76 -0
  40. package/dist/engines/auto-router.d.ts.map +1 -0
  41. package/dist/engines/auto-router.js +445 -0
  42. package/dist/engines/auto-router.js.map +1 -0
  43. package/dist/engines/parallel-execution.d.ts +104 -0
  44. package/dist/engines/parallel-execution.d.ts.map +1 -0
  45. package/dist/engines/parallel-execution.js +591 -0
  46. package/dist/engines/parallel-execution.js.map +1 -0
  47. package/dist/engines/sequential-thinking.d.ts +88 -0
  48. package/dist/engines/sequential-thinking.d.ts.map +1 -0
  49. package/dist/engines/sequential-thinking.js +406 -0
  50. package/dist/engines/sequential-thinking.js.map +1 -0
  51. package/dist/index.d.ts +12 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +1101 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/security/validation.d.ts +87 -0
  56. package/dist/security/validation.d.ts.map +1 -0
  57. package/dist/security/validation.js +465 -0
  58. package/dist/security/validation.js.map +1 -0
  59. package/dist/tools/filesystem.d.ts +90 -0
  60. package/dist/tools/filesystem.d.ts.map +1 -0
  61. package/dist/tools/filesystem.js +292 -0
  62. package/dist/tools/filesystem.js.map +1 -0
  63. package/dist/tools/terminal.d.ts +99 -0
  64. package/dist/tools/terminal.d.ts.map +1 -0
  65. package/dist/tools/terminal.js +363 -0
  66. package/dist/tools/terminal.js.map +1 -0
  67. package/dist/types/index.d.ts +306 -0
  68. package/dist/types/index.d.ts.map +1 -0
  69. package/dist/types/index.js +54 -0
  70. package/dist/types/index.js.map +1 -0
  71. package/dist/utils/logger.d.ts +22 -0
  72. package/dist/utils/logger.d.ts.map +1 -0
  73. package/dist/utils/logger.js +189 -0
  74. package/dist/utils/logger.js.map +1 -0
  75. package/package.json +71 -0
@@ -0,0 +1,467 @@
1
+ /**
2
+ * Context Manager
3
+ * Manages context persistence, checkpoints, and handoffs
4
+ */
5
+ import { v4 as uuidv4 } from "uuid";
6
+ import { database } from "./database.js";
7
+ import { configManager } from "../config/index.js";
8
+ import { logger } from "../utils/logger.js";
9
+ /**
10
+ * Context Manager
11
+ * Handles context lifecycle and persistence
12
+ */
13
+ export class ContextManager {
14
+ contexts = new Map();
15
+ checkpointTimers = new Map();
16
+ /**
17
+ * Create a new context for an agent
18
+ */
19
+ async createContext(agentId, options = {}) {
20
+ const contextId = uuidv4();
21
+ const now = new Date().toISOString();
22
+ const context = {
23
+ id: contextId,
24
+ agentId,
25
+ messages: options.initialMessages || [],
26
+ artifacts: [],
27
+ checkpoints: [],
28
+ tokenCount: 0,
29
+ maxTokens: options.maxTokens || configManager.get("contextMaxTokens"),
30
+ createdAt: now,
31
+ updatedAt: now,
32
+ };
33
+ // Save to memory
34
+ this.contexts.set(contextId, context);
35
+ // Save to database
36
+ await database.saveContext(context);
37
+ // Start checkpoint timer
38
+ this.startCheckpointTimer(contextId);
39
+ logger.info("Context created", {
40
+ category: "context",
41
+ contextId,
42
+ agentId,
43
+ });
44
+ return context;
45
+ }
46
+ /**
47
+ * Get context by ID
48
+ */
49
+ async getContext(contextId) {
50
+ // Check memory first
51
+ const memoryContext = this.contexts.get(contextId);
52
+ if (memoryContext)
53
+ return memoryContext;
54
+ // Fallback to database
55
+ return database.getContext(contextId);
56
+ }
57
+ /**
58
+ * Get context by agent ID
59
+ */
60
+ async getContextByAgent(agentId) {
61
+ // Check memory
62
+ for (const context of this.contexts.values()) {
63
+ if (context.agentId === agentId)
64
+ return context;
65
+ }
66
+ // Fallback to database
67
+ return database.getContextByAgent(agentId);
68
+ }
69
+ /**
70
+ * Add message to context
71
+ */
72
+ async addMessage(contextId, message) {
73
+ const context = await this.getContext(contextId);
74
+ if (!context)
75
+ return null;
76
+ const newMessage = {
77
+ id: uuidv4(),
78
+ ...message,
79
+ timestamp: new Date().toISOString(),
80
+ };
81
+ context.messages.push(newMessage);
82
+ context.updatedAt = new Date().toISOString();
83
+ // Update token count (rough estimate)
84
+ context.tokenCount += Math.ceil(message.content.length / 4);
85
+ // Check if auto-summarize needed
86
+ if (context.messages.length >= configManager.get("contextAutoSummarizeThreshold")) {
87
+ await this.autoSummarize(contextId);
88
+ }
89
+ // Save to database
90
+ await database.saveContext(context);
91
+ return context;
92
+ }
93
+ /**
94
+ * Add artifact to context
95
+ */
96
+ async addArtifact(contextId, artifact) {
97
+ const context = await this.getContext(contextId);
98
+ if (!context)
99
+ return null;
100
+ const newArtifact = {
101
+ id: uuidv4(),
102
+ ...artifact,
103
+ createdAt: new Date().toISOString(),
104
+ };
105
+ context.artifacts.push(newArtifact);
106
+ context.updatedAt = new Date().toISOString();
107
+ await database.saveContext(context);
108
+ logger.info("Artifact added to context", {
109
+ category: "context",
110
+ contextId,
111
+ artifactId: newArtifact.id,
112
+ artifactType: newArtifact.type,
113
+ });
114
+ return context;
115
+ }
116
+ /**
117
+ * Create a checkpoint
118
+ */
119
+ async createCheckpoint(contextId, options = {}) {
120
+ const context = await this.getContext(contextId);
121
+ if (!context)
122
+ return null;
123
+ const checkpointId = uuidv4();
124
+ const sequence = context.checkpoints.length + 1;
125
+ const checkpoint = {
126
+ id: checkpointId,
127
+ contextId,
128
+ sequence,
129
+ messages: [...context.messages],
130
+ artifacts: [...context.artifacts],
131
+ thoughtChainId: options.thoughtChainId,
132
+ createdAt: new Date().toISOString(),
133
+ };
134
+ context.checkpoints.push(checkpoint);
135
+ context.updatedAt = new Date().toISOString();
136
+ // Save to database
137
+ await database.saveCheckpoint(checkpoint);
138
+ await database.saveContext(context);
139
+ logger.info("Checkpoint created", {
140
+ category: "context",
141
+ contextId,
142
+ checkpointId,
143
+ sequence,
144
+ });
145
+ return checkpoint;
146
+ }
147
+ /**
148
+ * Restore to a checkpoint
149
+ */
150
+ async restoreCheckpoint(contextId, checkpointId) {
151
+ const context = await this.getContext(contextId);
152
+ if (!context)
153
+ return null;
154
+ const checkpoint = context.checkpoints.find((c) => c.id === checkpointId);
155
+ if (!checkpoint)
156
+ return null;
157
+ // Restore state
158
+ context.messages = [...checkpoint.messages];
159
+ context.artifacts = [...checkpoint.artifacts];
160
+ context.updatedAt = new Date().toISOString();
161
+ // Recalculate token count
162
+ context.tokenCount = context.messages.reduce((sum, m) => sum + Math.ceil(m.content.length / 4), 0);
163
+ await database.saveContext(context);
164
+ logger.info("Context restored to checkpoint", {
165
+ category: "context",
166
+ contextId,
167
+ checkpointId,
168
+ sequence: checkpoint.sequence,
169
+ });
170
+ return context;
171
+ }
172
+ /**
173
+ * Get checkpoints for a context
174
+ */
175
+ async getCheckpoints(contextId) {
176
+ const context = await this.getContext(contextId);
177
+ if (!context)
178
+ return [];
179
+ return context.checkpoints;
180
+ }
181
+ /**
182
+ * Perform handoff between agents
183
+ */
184
+ async handoff(fromAgentId, toAgentId, taskId, options = {}) {
185
+ // Get source context
186
+ const fromContext = await this.getContextByAgent(fromAgentId);
187
+ if (!fromContext)
188
+ return null;
189
+ // Create or get target context
190
+ let toContext = await this.getContextByAgent(toAgentId);
191
+ if (!toContext) {
192
+ toContext = await this.createContext(toAgentId);
193
+ }
194
+ // Prepare context snapshot
195
+ const contextSnapshot = {
196
+ messages: fromContext.messages.slice(-20), // Last 20 messages
197
+ artifacts: fromContext.artifacts,
198
+ };
199
+ // Create handoff record
200
+ const handoffId = uuidv4();
201
+ const handoff = {
202
+ id: handoffId,
203
+ fromAgentId,
204
+ toAgentId,
205
+ taskId,
206
+ contextSnapshot,
207
+ notes: options.notes,
208
+ timestamp: new Date().toISOString(),
209
+ };
210
+ // Add handoff message to target context
211
+ await this.addMessage(toContext.id, {
212
+ role: "system",
213
+ content: `Handoff from ${fromAgentId}: ${options.notes || "Task transferred"}`,
214
+ metadata: {
215
+ handoffId,
216
+ fromAgentId,
217
+ taskId,
218
+ },
219
+ });
220
+ // Transfer artifacts
221
+ for (const artifact of fromContext.artifacts) {
222
+ await this.addArtifact(toContext.id, {
223
+ type: artifact.type,
224
+ name: artifact.name,
225
+ content: artifact.content,
226
+ metadata: {
227
+ ...artifact.metadata,
228
+ transferredFrom: fromAgentId,
229
+ handoffId,
230
+ },
231
+ });
232
+ }
233
+ // Save handoff to database
234
+ await database.saveHandoff(handoff);
235
+ logger.info("Handoff completed", {
236
+ category: "context",
237
+ handoffId,
238
+ fromAgentId,
239
+ toAgentId,
240
+ taskId,
241
+ });
242
+ return handoff;
243
+ }
244
+ /**
245
+ * Get handoff history for an agent
246
+ */
247
+ async getHandoffHistory(agentId) {
248
+ return database.getHandoffsByAgent(agentId);
249
+ }
250
+ /**
251
+ * Auto-summarize context when it gets too large
252
+ * Uses extractive summarization based on message importance and recency
253
+ */
254
+ async autoSummarize(contextId) {
255
+ const context = await this.getContext(contextId);
256
+ if (!context)
257
+ return null;
258
+ // Create checkpoint before summarizing
259
+ await this.createCheckpoint(contextId);
260
+ const messageCount = context.messages.length;
261
+ const scoredMessages = context.messages.map((msg, index) => {
262
+ let score = 0;
263
+ // Length score (longer messages often have more content)
264
+ score += Math.min(msg.content.length / 100, 5);
265
+ // Role importance score
266
+ switch (msg.role) {
267
+ case "tool":
268
+ score += 5; // Tool results are important
269
+ break;
270
+ case "assistant":
271
+ score += 3; // Assistant responses are important
272
+ break;
273
+ case "user":
274
+ score += 2; // User messages have moderate importance
275
+ break;
276
+ case "system":
277
+ score += 4; // System messages are important
278
+ break;
279
+ }
280
+ // Recency score (newer messages are more relevant)
281
+ const recencyWeight = index / messageCount;
282
+ score += recencyWeight * 3;
283
+ return { message: msg, score, index };
284
+ });
285
+ // Sort by score descending and take top messages
286
+ const topMessages = scoredMessages
287
+ .sort((a, b) => b.score - a.score)
288
+ .slice(0, 10);
289
+ // Build summary from top-scoring message excerpts
290
+ const excerpts = topMessages.map(({ message }) => {
291
+ const content = message.content.substring(0, 150);
292
+ return `[${message.role}]: ${content}${message.content.length > 150 ? "..." : ""}`;
293
+ });
294
+ const summary = `Context Summary (${messageCount} messages):\n${excerpts.join("\n")}`;
295
+ context.summary = summary;
296
+ // Keep system messages and recent messages (existing behavior)
297
+ const systemMessages = context.messages.filter((m) => m.role === "system");
298
+ const recentMessages = context.messages.slice(-20);
299
+ // Merge without duplicates
300
+ const seenIds = new Set();
301
+ context.messages = [...systemMessages, ...recentMessages].filter((m) => {
302
+ if (seenIds.has(m.id))
303
+ return false;
304
+ seenIds.add(m.id);
305
+ return true;
306
+ });
307
+ context.tokenCount = context.messages.reduce((sum, m) => sum + Math.ceil(m.content.length / 4), 0);
308
+ await database.saveContext(context);
309
+ logger.info("Context auto-summarized", {
310
+ category: "context",
311
+ contextId,
312
+ originalMessageCount: messageCount,
313
+ newMessageCount: context.messages.length,
314
+ topScoredMessages: topMessages.length,
315
+ });
316
+ return context;
317
+ }
318
+ /**
319
+ * Summarize context manually
320
+ */
321
+ async summarize(contextId, summary) {
322
+ const context = await this.getContext(contextId);
323
+ if (!context)
324
+ return null;
325
+ context.summary = summary;
326
+ context.updatedAt = new Date().toISOString();
327
+ await database.saveContext(context);
328
+ return context;
329
+ }
330
+ /**
331
+ * Export context as JSON
332
+ */
333
+ async exportToJSON(contextId) {
334
+ const context = await this.getContext(contextId);
335
+ if (!context)
336
+ return null;
337
+ return JSON.stringify(context, null, 2);
338
+ }
339
+ /**
340
+ * Export context as Markdown
341
+ */
342
+ async exportToMarkdown(contextId) {
343
+ const context = await this.getContext(contextId);
344
+ if (!context)
345
+ return null;
346
+ let markdown = `# Context Export\n\n`;
347
+ markdown += `- **Context ID:** ${context.id}\n`;
348
+ markdown += `- **Agent ID:** ${context.agentId}\n`;
349
+ markdown += `- **Created:** ${context.createdAt}\n`;
350
+ markdown += `- **Updated:** ${context.updatedAt}\n`;
351
+ markdown += `- **Token Count:** ${context.tokenCount}/${context.maxTokens}\n\n`;
352
+ if (context.summary) {
353
+ markdown += `## Summary\n\n${context.summary}\n\n`;
354
+ }
355
+ markdown += `## Messages (${context.messages.length})\n\n`;
356
+ for (const message of context.messages) {
357
+ markdown += `### ${message.role} (${message.timestamp})\n\n`;
358
+ markdown += `${message.content}\n\n`;
359
+ }
360
+ markdown += `## Artifacts (${context.artifacts.length})\n\n`;
361
+ for (const artifact of context.artifacts) {
362
+ markdown += `### ${artifact.name} (${artifact.type})\n\n`;
363
+ markdown += "```\n";
364
+ markdown += artifact.content.substring(0, 500);
365
+ if (artifact.content.length > 500) {
366
+ markdown += "\n... (truncated)";
367
+ }
368
+ markdown += "\n```\n\n";
369
+ }
370
+ markdown += `## Checkpoints (${context.checkpoints.length})\n\n`;
371
+ for (const checkpoint of context.checkpoints) {
372
+ markdown += `- **Checkpoint ${checkpoint.sequence}** (${checkpoint.createdAt})\n`;
373
+ }
374
+ return markdown;
375
+ }
376
+ /**
377
+ * Start automatic checkpoint timer
378
+ */
379
+ startCheckpointTimer(contextId) {
380
+ const timer = setInterval(async () => {
381
+ try {
382
+ await this.createCheckpoint(contextId);
383
+ }
384
+ catch (error) {
385
+ logger.error("Auto-checkpoint failed", {
386
+ category: "context",
387
+ contextId,
388
+ error: error instanceof Error ? error.message : String(error),
389
+ });
390
+ }
391
+ }, configManager.get("checkpointInterval") * 60 * 1000);
392
+ this.checkpointTimers.set(contextId, timer);
393
+ }
394
+ /**
395
+ * Stop checkpoint timer
396
+ */
397
+ stopCheckpointTimer(contextId) {
398
+ const timer = this.checkpointTimers.get(contextId);
399
+ if (timer) {
400
+ clearInterval(timer);
401
+ this.checkpointTimers.delete(contextId);
402
+ }
403
+ }
404
+ /**
405
+ * Delete context
406
+ */
407
+ async deleteContext(contextId) {
408
+ const context = this.contexts.get(contextId);
409
+ if (!context)
410
+ return false;
411
+ // Stop checkpoint timer
412
+ this.stopCheckpointTimer(contextId);
413
+ // Remove from memory
414
+ this.contexts.delete(contextId);
415
+ logger.info("Context deleted", {
416
+ category: "context",
417
+ contextId,
418
+ agentId: context.agentId,
419
+ });
420
+ return true;
421
+ }
422
+ /**
423
+ * Cleanup old contexts
424
+ */
425
+ async cleanup(maxAgeHours = 24) {
426
+ const now = Date.now();
427
+ const maxAgeMs = maxAgeHours * 60 * 60 * 1000;
428
+ let cleaned = 0;
429
+ for (const [contextId, context] of this.contexts.entries()) {
430
+ const age = now - new Date(context.updatedAt).getTime();
431
+ if (age > maxAgeMs) {
432
+ await this.deleteContext(contextId);
433
+ cleaned++;
434
+ }
435
+ }
436
+ logger.info("Context cleanup completed", {
437
+ category: "context",
438
+ cleaned,
439
+ maxAgeHours,
440
+ });
441
+ return cleaned;
442
+ }
443
+ /**
444
+ * Get context statistics
445
+ */
446
+ async getStats() {
447
+ let totalMessages = 0;
448
+ let totalArtifacts = 0;
449
+ let totalCheckpoints = 0;
450
+ for (const context of this.contexts.values()) {
451
+ totalMessages += context.messages.length;
452
+ totalArtifacts += context.artifacts.length;
453
+ totalCheckpoints += context.checkpoints.length;
454
+ }
455
+ const totalContexts = this.contexts.size;
456
+ return {
457
+ totalContexts,
458
+ totalMessages,
459
+ totalArtifacts,
460
+ totalCheckpoints,
461
+ averageMessagesPerContext: totalContexts > 0 ? Math.round(totalMessages / totalContexts) : 0,
462
+ };
463
+ }
464
+ }
465
+ // Export singleton
466
+ export const contextManager = new ContextManager();
467
+ //# sourceMappingURL=context-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-manager.js","sourceRoot":"","sources":["../../src/core/context-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Database Manager
3
+ * SQLite/libSQL database operations for context persistence
4
+ */
5
+ import type { Agent, Task, ThoughtChain, Context, HandoffContext, Checkpoint, ParallelExecution } from "../types/index.js";
6
+ /**
7
+ * Database Manager
8
+ * Handles all database operations
9
+ */
10
+ export declare class DatabaseManager {
11
+ private client;
12
+ private initialized;
13
+ /**
14
+ * Initialize database connection and schema
15
+ */
16
+ initialize(): Promise<void>;
17
+ /**
18
+ * Create database schema
19
+ */
20
+ private createSchema;
21
+ saveAgent(agent: Agent): Promise<void>;
22
+ getAgent(agentId: string): Promise<Agent | null>;
23
+ getAllAgents(): Promise<Agent[]>;
24
+ getAgentsByType(type: string): Promise<Agent[]>;
25
+ getAgentsByStatus(status: string): Promise<Agent[]>;
26
+ deleteAgent(agentId: string): Promise<boolean>;
27
+ saveTask(task: Task): Promise<void>;
28
+ getTask(taskId: string): Promise<Task | null>;
29
+ getTasksByAgent(agentId: string): Promise<Task[]>;
30
+ getTasksByStatus(status: string): Promise<Task[]>;
31
+ saveContext(context: Context): Promise<void>;
32
+ getContext(contextId: string): Promise<Context | null>;
33
+ getContextByAgent(agentId: string): Promise<Context | null>;
34
+ saveCheckpoint(checkpoint: Checkpoint): Promise<void>;
35
+ getCheckpointsByContext(contextId: string): Promise<Checkpoint[]>;
36
+ saveHandoff(handoff: HandoffContext): Promise<void>;
37
+ getHandoffsByAgent(agentId: string): Promise<HandoffContext[]>;
38
+ saveAuditLog(log: {
39
+ level: string;
40
+ category: string;
41
+ agentId?: string;
42
+ taskId?: string;
43
+ action: string;
44
+ details?: Record<string, unknown>;
45
+ }): Promise<void>;
46
+ getAuditLogs(options?: {
47
+ level?: string;
48
+ category?: string;
49
+ agentId?: string;
50
+ limit?: number;
51
+ since?: Date;
52
+ }): Promise<Array<Record<string, unknown>>>;
53
+ saveThoughtChain(chain: ThoughtChain): Promise<void>;
54
+ getThoughtChain(chainId: string): Promise<ThoughtChain | null>;
55
+ getThoughtChainsByAgent(agentId: string): Promise<ThoughtChain[]>;
56
+ saveParallelExecution(execution: ParallelExecution): Promise<void>;
57
+ getParallelExecution(executionId: string): Promise<ParallelExecution | null>;
58
+ getSystemStats(): Promise<{
59
+ totalAgents: number;
60
+ agentsByStatus: Record<string, number>;
61
+ agentsByType: Record<string, number>;
62
+ totalTasks: number;
63
+ tasksByStatus: Record<string, number>;
64
+ totalContexts: number;
65
+ totalCheckpoints: number;
66
+ totalHandoffs: number;
67
+ }>;
68
+ private safeJsonParse;
69
+ private rowToAgent;
70
+ private rowToTask;
71
+ private rowToContext;
72
+ private rowToCheckpoint;
73
+ private rowToHandoff;
74
+ private rowToThoughtChain;
75
+ private rowToParallelExecution;
76
+ /**
77
+ * Close database connection
78
+ */
79
+ close(): Promise<void>;
80
+ }
81
+ export declare const database: DatabaseManager;
82
+ //# sourceMappingURL=database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/core/database.ts"],"names":[],"mappings":"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"}