agent-world 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +55 -4
- package/dist/cli/commands.d.ts +109 -0
- package/dist/cli/commands.js +2024 -0
- package/dist/cli/display.d.ts +124 -0
- package/dist/cli/display.js +381 -0
- package/dist/cli/hitl.d.ts +33 -0
- package/dist/cli/hitl.js +81 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/stream.d.ts +41 -0
- package/dist/cli/stream.js +222 -0
- package/dist/core/activity-tracker.d.ts +16 -0
- package/dist/core/activity-tracker.d.ts.map +1 -0
- package/dist/core/activity-tracker.js +91 -0
- package/dist/core/activity-tracker.js.map +1 -0
- package/dist/core/ai-commands.d.ts +16 -0
- package/dist/core/ai-commands.d.ts.map +1 -0
- package/dist/core/ai-commands.js +24 -0
- package/dist/core/ai-commands.js.map +1 -0
- package/dist/core/ai-sdk-patch.d.ts +24 -0
- package/dist/core/ai-sdk-patch.d.ts.map +1 -0
- package/dist/core/ai-sdk-patch.js +169 -0
- package/dist/core/ai-sdk-patch.js.map +1 -0
- package/dist/core/anthropic-direct.d.ts +52 -0
- package/dist/core/anthropic-direct.d.ts.map +1 -0
- package/dist/core/anthropic-direct.js +301 -0
- package/dist/core/anthropic-direct.js.map +1 -0
- package/dist/core/approval-cache.d.ts +104 -0
- package/dist/core/approval-cache.d.ts.map +1 -0
- package/dist/core/approval-cache.js +150 -0
- package/dist/core/approval-cache.js.map +1 -0
- package/dist/core/chat-constants.d.ts +20 -0
- package/dist/core/chat-constants.d.ts.map +1 -0
- package/dist/core/chat-constants.js +22 -0
- package/dist/core/chat-constants.js.map +1 -0
- package/dist/core/create-agent-tool.d.ts +66 -0
- package/dist/core/create-agent-tool.d.ts.map +1 -0
- package/dist/core/create-agent-tool.js +212 -0
- package/dist/core/create-agent-tool.js.map +1 -0
- package/dist/core/events/approval-checker.d.ts +61 -0
- package/dist/core/events/approval-checker.d.ts.map +1 -0
- package/dist/core/events/approval-checker.js +226 -0
- package/dist/core/events/approval-checker.js.map +1 -0
- package/dist/core/events/index.d.ts +25 -0
- package/dist/core/events/index.d.ts.map +1 -0
- package/dist/core/events/index.js +30 -0
- package/dist/core/events/index.js.map +1 -0
- package/dist/core/events/memory-manager.d.ts +73 -0
- package/dist/core/events/memory-manager.d.ts.map +1 -0
- package/dist/core/events/memory-manager.js +1218 -0
- package/dist/core/events/memory-manager.js.map +1 -0
- package/dist/core/events/mention-logic.d.ts +39 -0
- package/dist/core/events/mention-logic.d.ts.map +1 -0
- package/dist/core/events/mention-logic.js +163 -0
- package/dist/core/events/mention-logic.js.map +1 -0
- package/dist/core/events/orchestrator.d.ts +69 -0
- package/dist/core/events/orchestrator.d.ts.map +1 -0
- package/dist/core/events/orchestrator.js +883 -0
- package/dist/core/events/orchestrator.js.map +1 -0
- package/dist/core/events/persistence.d.ts +41 -0
- package/dist/core/events/persistence.d.ts.map +1 -0
- package/dist/core/events/persistence.js +296 -0
- package/dist/core/events/persistence.js.map +1 -0
- package/dist/core/events/publishers.d.ts +81 -0
- package/dist/core/events/publishers.d.ts.map +1 -0
- package/dist/core/events/publishers.js +272 -0
- package/dist/core/events/publishers.js.map +1 -0
- package/dist/core/events/subscribers.d.ts +45 -0
- package/dist/core/events/subscribers.d.ts.map +1 -0
- package/dist/core/events/subscribers.js +288 -0
- package/dist/core/events/subscribers.js.map +1 -0
- package/dist/core/events/tool-bridge-logging.d.ts +28 -0
- package/dist/core/events/tool-bridge-logging.d.ts.map +1 -0
- package/dist/core/events/tool-bridge-logging.js +94 -0
- package/dist/core/events/tool-bridge-logging.js.map +1 -0
- package/dist/core/events-metadata.d.ts +72 -0
- package/dist/core/events-metadata.d.ts.map +1 -0
- package/dist/core/events-metadata.js +167 -0
- package/dist/core/events-metadata.js.map +1 -0
- package/dist/core/events.d.ts +186 -0
- package/dist/core/events.d.ts.map +1 -0
- package/dist/core/events.js +1248 -0
- package/dist/core/events.js.map +1 -0
- package/dist/core/export.d.ts +106 -0
- package/dist/core/export.d.ts.map +1 -0
- package/dist/core/export.js +705 -0
- package/dist/core/export.js.map +1 -0
- package/dist/core/file-tools.d.ts +114 -0
- package/dist/core/file-tools.d.ts.map +1 -0
- package/dist/core/file-tools.js +370 -0
- package/dist/core/file-tools.js.map +1 -0
- package/dist/core/google-direct.d.ts +58 -0
- package/dist/core/google-direct.d.ts.map +1 -0
- package/dist/core/google-direct.js +298 -0
- package/dist/core/google-direct.js.map +1 -0
- package/dist/core/hitl.d.ts +54 -0
- package/dist/core/hitl.d.ts.map +1 -0
- package/dist/core/hitl.js +153 -0
- package/dist/core/hitl.js.map +1 -0
- package/dist/core/index.d.ts +59 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +70 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/llm-config.d.ts +128 -0
- package/dist/core/llm-config.d.ts.map +1 -0
- package/dist/core/llm-config.js +164 -0
- package/dist/core/llm-config.js.map +1 -0
- package/dist/core/llm-manager.d.ts +163 -0
- package/dist/core/llm-manager.d.ts.map +1 -0
- package/dist/core/llm-manager.js +669 -0
- package/dist/core/llm-manager.js.map +1 -0
- package/dist/core/load-skill-tool.d.ts +55 -0
- package/dist/core/load-skill-tool.d.ts.map +1 -0
- package/dist/core/load-skill-tool.js +468 -0
- package/dist/core/load-skill-tool.js.map +1 -0
- package/dist/core/logger.d.ts +88 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +358 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/managers.d.ts +131 -0
- package/dist/core/managers.d.ts.map +1 -0
- package/dist/core/managers.js +1223 -0
- package/dist/core/managers.js.map +1 -0
- package/dist/core/mcp-server-registry.d.ts +304 -0
- package/dist/core/mcp-server-registry.d.ts.map +1 -0
- package/dist/core/mcp-server-registry.js +1769 -0
- package/dist/core/mcp-server-registry.js.map +1 -0
- package/dist/core/mcp-tools.d.ts +56 -0
- package/dist/core/mcp-tools.d.ts.map +1 -0
- package/dist/core/mcp-tools.js +186 -0
- package/dist/core/mcp-tools.js.map +1 -0
- package/dist/core/message-prep.d.ts +81 -0
- package/dist/core/message-prep.d.ts.map +1 -0
- package/dist/core/message-prep.js +223 -0
- package/dist/core/message-prep.js.map +1 -0
- package/dist/core/message-processing-control.d.ts +54 -0
- package/dist/core/message-processing-control.d.ts.map +1 -0
- package/dist/core/message-processing-control.js +139 -0
- package/dist/core/message-processing-control.js.map +1 -0
- package/dist/core/openai-direct.d.ts +80 -0
- package/dist/core/openai-direct.d.ts.map +1 -0
- package/dist/core/openai-direct.js +374 -0
- package/dist/core/openai-direct.js.map +1 -0
- package/dist/core/shell-cmd-tool.d.ts +235 -0
- package/dist/core/shell-cmd-tool.d.ts.map +1 -0
- package/dist/core/shell-cmd-tool.js +1157 -0
- package/dist/core/shell-cmd-tool.js.map +1 -0
- package/dist/core/shell-process-registry.d.ts +88 -0
- package/dist/core/shell-process-registry.d.ts.map +1 -0
- package/dist/core/shell-process-registry.js +309 -0
- package/dist/core/shell-process-registry.js.map +1 -0
- package/dist/core/skill-registry.d.ts +75 -0
- package/dist/core/skill-registry.d.ts.map +1 -0
- package/dist/core/skill-registry.js +369 -0
- package/dist/core/skill-registry.js.map +1 -0
- package/dist/core/skill-script-runner.d.ts +89 -0
- package/dist/core/skill-script-runner.d.ts.map +1 -0
- package/dist/core/skill-script-runner.js +274 -0
- package/dist/core/skill-script-runner.js.map +1 -0
- package/dist/core/skill-selector.d.ts +65 -0
- package/dist/core/skill-selector.d.ts.map +1 -0
- package/dist/core/skill-selector.js +190 -0
- package/dist/core/skill-selector.js.map +1 -0
- package/dist/core/skill-settings.d.ts +20 -0
- package/dist/core/skill-settings.d.ts.map +1 -0
- package/dist/core/skill-settings.js +40 -0
- package/dist/core/skill-settings.js.map +1 -0
- package/dist/core/storage/agent-storage.d.ts +134 -0
- package/dist/core/storage/agent-storage.d.ts.map +1 -0
- package/dist/core/storage/agent-storage.js +498 -0
- package/dist/core/storage/agent-storage.js.map +1 -0
- package/dist/core/storage/eventStorage/fileEventStorage.d.ts +100 -0
- package/dist/core/storage/eventStorage/fileEventStorage.d.ts.map +1 -0
- package/dist/core/storage/eventStorage/fileEventStorage.js +494 -0
- package/dist/core/storage/eventStorage/fileEventStorage.js.map +1 -0
- package/dist/core/storage/eventStorage/index.d.ts +31 -0
- package/dist/core/storage/eventStorage/index.d.ts.map +1 -0
- package/dist/core/storage/eventStorage/index.js +31 -0
- package/dist/core/storage/eventStorage/index.js.map +1 -0
- package/dist/core/storage/eventStorage/memoryEventStorage.d.ts +87 -0
- package/dist/core/storage/eventStorage/memoryEventStorage.d.ts.map +1 -0
- package/dist/core/storage/eventStorage/memoryEventStorage.js +244 -0
- package/dist/core/storage/eventStorage/memoryEventStorage.js.map +1 -0
- package/dist/core/storage/eventStorage/sqliteEventStorage.d.ts +45 -0
- package/dist/core/storage/eventStorage/sqliteEventStorage.d.ts.map +1 -0
- package/dist/core/storage/eventStorage/sqliteEventStorage.js +301 -0
- package/dist/core/storage/eventStorage/sqliteEventStorage.js.map +1 -0
- package/dist/core/storage/eventStorage/types.d.ts +142 -0
- package/dist/core/storage/eventStorage/types.d.ts.map +1 -0
- package/dist/core/storage/eventStorage/types.js +43 -0
- package/dist/core/storage/eventStorage/types.js.map +1 -0
- package/dist/core/storage/eventStorage/validation.d.ts +30 -0
- package/dist/core/storage/eventStorage/validation.d.ts.map +1 -0
- package/dist/core/storage/eventStorage/validation.js +68 -0
- package/dist/core/storage/eventStorage/validation.js.map +1 -0
- package/dist/core/storage/legacy-migrations.d.ts +45 -0
- package/dist/core/storage/legacy-migrations.d.ts.map +1 -0
- package/dist/core/storage/legacy-migrations.js +295 -0
- package/dist/core/storage/legacy-migrations.js.map +1 -0
- package/dist/core/storage/memory-storage.d.ts +105 -0
- package/dist/core/storage/memory-storage.d.ts.map +1 -0
- package/dist/core/storage/memory-storage.js +415 -0
- package/dist/core/storage/memory-storage.js.map +1 -0
- package/dist/core/storage/migration-runner.d.ts +96 -0
- package/dist/core/storage/migration-runner.d.ts.map +1 -0
- package/dist/core/storage/migration-runner.js +306 -0
- package/dist/core/storage/migration-runner.js.map +1 -0
- package/dist/core/storage/queue-storage.d.ts +147 -0
- package/dist/core/storage/queue-storage.d.ts.map +1 -0
- package/dist/core/storage/queue-storage.js +290 -0
- package/dist/core/storage/queue-storage.js.map +1 -0
- package/dist/core/storage/skill-storage.d.ts +136 -0
- package/dist/core/storage/skill-storage.d.ts.map +1 -0
- package/dist/core/storage/skill-storage.js +474 -0
- package/dist/core/storage/skill-storage.js.map +1 -0
- package/dist/core/storage/sqlite-schema.d.ts +95 -0
- package/dist/core/storage/sqlite-schema.d.ts.map +1 -0
- package/dist/core/storage/sqlite-schema.js +156 -0
- package/dist/core/storage/sqlite-schema.js.map +1 -0
- package/dist/core/storage/sqlite-storage.d.ts +146 -0
- package/dist/core/storage/sqlite-storage.d.ts.map +1 -0
- package/dist/core/storage/sqlite-storage.js +709 -0
- package/dist/core/storage/sqlite-storage.js.map +1 -0
- package/dist/core/storage/storage-factory.d.ts +61 -0
- package/dist/core/storage/storage-factory.d.ts.map +1 -0
- package/dist/core/storage/storage-factory.js +794 -0
- package/dist/core/storage/storage-factory.js.map +1 -0
- package/dist/core/storage/validation.d.ts +36 -0
- package/dist/core/storage/validation.d.ts.map +1 -0
- package/dist/core/storage/validation.js +79 -0
- package/dist/core/storage/validation.js.map +1 -0
- package/dist/core/storage/world-storage.d.ts +114 -0
- package/dist/core/storage/world-storage.d.ts.map +1 -0
- package/dist/core/storage/world-storage.js +378 -0
- package/dist/core/storage/world-storage.js.map +1 -0
- package/dist/core/subscription.d.ts +43 -0
- package/dist/core/subscription.d.ts.map +1 -0
- package/dist/core/subscription.js +227 -0
- package/dist/core/subscription.js.map +1 -0
- package/dist/core/tool-utils.d.ts +80 -0
- package/dist/core/tool-utils.d.ts.map +1 -0
- package/dist/core/tool-utils.js +273 -0
- package/dist/core/tool-utils.js.map +1 -0
- package/dist/core/types.d.ts +595 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +158 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/utils.d.ts +138 -0
- package/dist/core/utils.d.ts.map +1 -0
- package/dist/core/utils.js +478 -0
- package/dist/core/utils.js.map +1 -0
- package/dist/core/world-class.d.ts +43 -0
- package/dist/core/world-class.d.ts.map +1 -0
- package/dist/core/world-class.js +90 -0
- package/dist/core/world-class.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/public/assets/agent-sprites-DJFgj-zP.png +0 -0
- package/dist/public/assets/border-KHK37r8y.svg +83 -0
- package/dist/public/assets/index-C9kPXL6G.css +1 -0
- package/dist/public/assets/index-DOQEHGWt.js +96 -0
- package/dist/public/index.html +21 -0
- package/dist/server/api.d.ts +2 -0
- package/dist/server/api.js +1124 -0
- package/dist/server/index.d.ts +29 -0
- package/dist/server/sse-handler.d.ts +62 -0
- package/dist/server/sse-handler.js +234 -0
- package/package.json +21 -5
- package/scripts/launch-electron.js +0 -58
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite Database Schema for Agent World System
|
|
3
|
+
*
|
|
4
|
+
* Logger Category: storage.schema
|
|
5
|
+
* Purpose: Schema utilities and PRAGMA configuration
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - PRAGMA configuration for performance and integrity
|
|
9
|
+
* - Schema version tracking (PRAGMA user_version)
|
|
10
|
+
* - Database statistics and integrity validation
|
|
11
|
+
* - Index and trigger creation utilities
|
|
12
|
+
*
|
|
13
|
+
* Schema Design:
|
|
14
|
+
* - worlds: Core world configuration and metadata
|
|
15
|
+
* - agents: Agent configuration with LLM settings
|
|
16
|
+
* - agent_memory: Current active conversation memory
|
|
17
|
+
* - memory_archives: Archive session metadata with rich information
|
|
18
|
+
* - archived_messages: Historical conversation content linked to archives
|
|
19
|
+
* - archive_statistics: Usage analytics and management data
|
|
20
|
+
* - world_chats: Chat session management
|
|
21
|
+
* - events: Event storage with sequences
|
|
22
|
+
* - event_sequences: Atomic sequence generation
|
|
23
|
+
*
|
|
24
|
+
* Implementation:
|
|
25
|
+
* - PRAGMA settings for performance and integrity
|
|
26
|
+
* - JSON column types for flexible configuration storage
|
|
27
|
+
* - Timestamp tracking for all operations
|
|
28
|
+
* - Cascading deletes for data consistency
|
|
29
|
+
* - Prepared statements for security and performance
|
|
30
|
+
* - 2025-11-02: Refactored to remove migration logic (now in migration-runner.ts)
|
|
31
|
+
* - 2025-11-02: Schema initialization deprecated - all databases use migration system (0000-0009)
|
|
32
|
+
* - 2025-11-02: Removed initializeSchema() - migration 0000 handles base schema creation
|
|
33
|
+
*/
|
|
34
|
+
import { promisify } from 'util';
|
|
35
|
+
import * as fs from 'fs';
|
|
36
|
+
import * as path from 'path';
|
|
37
|
+
import { createCategoryLogger } from '../logger.js';
|
|
38
|
+
const logger = createCategoryLogger('storage.schema');
|
|
39
|
+
export async function createSQLiteSchemaContext(config) {
|
|
40
|
+
if (typeof window !== 'undefined') {
|
|
41
|
+
throw new Error('SQLite not available in browser environment');
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
// Ensure parent directory exists for the database file
|
|
45
|
+
const dbPath = config.database;
|
|
46
|
+
const dir = path.dirname(dbPath);
|
|
47
|
+
if (!fs.existsSync(dir)) {
|
|
48
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
49
|
+
}
|
|
50
|
+
// Use dynamic import for ESM compatibility
|
|
51
|
+
const sqlite3Module = await import('sqlite3');
|
|
52
|
+
const sqlite3 = sqlite3Module.default || sqlite3Module;
|
|
53
|
+
const db = new sqlite3.Database(dbPath);
|
|
54
|
+
configurePragmas({ db, config });
|
|
55
|
+
return { db, config, isInitialized: false };
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
console.error('[sqlite-schema] Failed to import or initialize sqlite3:', error);
|
|
59
|
+
throw new Error('SQLite3 module not available. Please install sqlite3: npm install sqlite3');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// ...existing code...
|
|
63
|
+
export function configurePragmas(ctx) {
|
|
64
|
+
const { db, config } = ctx;
|
|
65
|
+
try {
|
|
66
|
+
if (config.enableWAL !== false) {
|
|
67
|
+
db.run("PRAGMA journal_mode = WAL");
|
|
68
|
+
}
|
|
69
|
+
if (config.enableForeignKeys !== false) {
|
|
70
|
+
db.run("PRAGMA foreign_keys = ON");
|
|
71
|
+
}
|
|
72
|
+
db.run(`PRAGMA busy_timeout = ${config.busyTimeout || 30000}`);
|
|
73
|
+
db.run(`PRAGMA cache_size = ${config.cacheSize || -64000}`);
|
|
74
|
+
db.run("PRAGMA synchronous = NORMAL");
|
|
75
|
+
db.run("PRAGMA page_size = 4096");
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
// Ignore pragma errors in test environments
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* @deprecated All schema initialization is now handled by the migration system.
|
|
83
|
+
* This file only provides utility functions for PRAGMA configuration and database introspection.
|
|
84
|
+
* Schema creation (tables, indexes, triggers) is defined in migrations/*.sql files.
|
|
85
|
+
*/
|
|
86
|
+
export async function getSchemaVersion(ctx) {
|
|
87
|
+
const get = promisify(ctx.db.get.bind(ctx.db));
|
|
88
|
+
try {
|
|
89
|
+
const result = await get("PRAGMA user_version");
|
|
90
|
+
return result.user_version;
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return 0;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
export async function setSchemaVersion(ctx, version) {
|
|
97
|
+
const run = promisify(ctx.db.run.bind(ctx.db));
|
|
98
|
+
await run(`PRAGMA user_version = ${version}`);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Validate database integrity
|
|
102
|
+
* Checks for corruption and foreign key constraint violations
|
|
103
|
+
*/
|
|
104
|
+
export async function validateIntegrity(ctx) {
|
|
105
|
+
const get = promisify(ctx.db.get.bind(ctx.db));
|
|
106
|
+
const all = promisify(ctx.db.all.bind(ctx.db));
|
|
107
|
+
const errors = [];
|
|
108
|
+
try {
|
|
109
|
+
const integrityCheck = await get("PRAGMA integrity_check");
|
|
110
|
+
if (integrityCheck.integrity_check !== 'ok') {
|
|
111
|
+
errors.push(`Database integrity check failed: ${integrityCheck.integrity_check}`);
|
|
112
|
+
}
|
|
113
|
+
const foreignKeyCheck = await all("PRAGMA foreign_key_check");
|
|
114
|
+
if (foreignKeyCheck.length > 0) {
|
|
115
|
+
errors.push(`Foreign key constraint violations: ${foreignKeyCheck.length}`);
|
|
116
|
+
}
|
|
117
|
+
return { isValid: errors.length === 0, errors };
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
errors.push(`Integrity validation error: ${error instanceof Error ? error.message : error}`);
|
|
121
|
+
return { isValid: false, errors };
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
export async function getDatabaseStats(ctx) {
|
|
125
|
+
const get = promisify(ctx.db.get.bind(ctx.db));
|
|
126
|
+
const [worldCount, agentCount, activeMemoryCount, archiveCount, archivedMessageCount, sizeInfo] = await Promise.all([
|
|
127
|
+
get("SELECT COUNT(*) as count FROM worlds"),
|
|
128
|
+
get("SELECT COUNT(*) as count FROM agents"),
|
|
129
|
+
get("SELECT COUNT(*) as count FROM agent_memory"),
|
|
130
|
+
get("SELECT COUNT(*) as count FROM memory_archives"),
|
|
131
|
+
get("SELECT COUNT(*) as count FROM archived_messages"),
|
|
132
|
+
get("PRAGMA page_count")
|
|
133
|
+
]);
|
|
134
|
+
return {
|
|
135
|
+
worldCount: worldCount.count || 0,
|
|
136
|
+
agentCount: agentCount.count || 0,
|
|
137
|
+
activeMemoryCount: activeMemoryCount.count || 0,
|
|
138
|
+
archiveCount: archiveCount.count || 0,
|
|
139
|
+
archivedMessageCount: archivedMessageCount.count || 0,
|
|
140
|
+
databaseSize: (sizeInfo.page_count || 0) * 4096
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
export async function closeSchema(ctx) {
|
|
144
|
+
return new Promise((resolve, reject) => {
|
|
145
|
+
ctx.db.close((err) => {
|
|
146
|
+
if (err)
|
|
147
|
+
reject(err);
|
|
148
|
+
else
|
|
149
|
+
resolve();
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
export function getDatabase(ctx) {
|
|
154
|
+
return ctx.db;
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=sqlite-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-schema.js","sourceRoot":"","sources":["../../../core/storage/sqlite-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite Storage Implementation for Agent World System
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - Full implementation of StorageAPI interface for SQLite backend
|
|
6
|
+
* - Complete chat operations with proper TypeScript types (WorldChat, ChatData, etc.)
|
|
7
|
+
* - Enhanced snapshot operations for world state preservation and restoration
|
|
8
|
+
* - Enhanced archive management with rich metadata and search capabilities
|
|
9
|
+
* - Optimized queries with prepared statements and transactions
|
|
10
|
+
* - Data integrity with foreign key constraints and validation
|
|
11
|
+
* - Migration support from file-based storage
|
|
12
|
+
* - Performance monitoring and analytics
|
|
13
|
+
*
|
|
14
|
+
* Enhanced Chat Features:
|
|
15
|
+
* - Full CRUD operations for world chats with proper type safety
|
|
16
|
+
* - Snapshot storage and restoration with atomic transactions
|
|
17
|
+
* - Foreign key relationships ensuring data consistency
|
|
18
|
+
* - Efficient querying with indexed columns
|
|
19
|
+
*
|
|
20
|
+
* Enhanced Archive Features:
|
|
21
|
+
* - Rich archive metadata (session names, reasons, statistics)
|
|
22
|
+
* - Content-based search across archived conversations
|
|
23
|
+
* - Archive usage analytics and trends
|
|
24
|
+
* - Efficient querying by date, agent, participants
|
|
25
|
+
* - Export capabilities in various formats
|
|
26
|
+
*
|
|
27
|
+
* Implementation:
|
|
28
|
+
* - Maintains compatibility with existing storage interfaces
|
|
29
|
+
* - Uses proper async/await patterns for SQLite operations
|
|
30
|
+
* - Implements batch operations for efficiency
|
|
31
|
+
* - Provides transaction support for data consistency
|
|
32
|
+
* - Includes comprehensive error handling and validation
|
|
33
|
+
* - Complete type safety with proper TypeScript interfaces
|
|
34
|
+
*
|
|
35
|
+
* Recent Changes:
|
|
36
|
+
* - 2026-02-13: Added atomic compare-and-set chat title update helper (`updateChatNameIfCurrent`).
|
|
37
|
+
* - 2026-02-13: Fixed migration directory resolution so Electron runtimes launched from `electron/` still run root `migrations/`.
|
|
38
|
+
* - 2025-08-01: Added proper TypeScript types for all chat operations
|
|
39
|
+
* - 2025-08-01: Implemented restoreFromSnapshot with atomic transactions
|
|
40
|
+
* - 2025-08-01: Enhanced type safety removing any types
|
|
41
|
+
* - 2025-08-06: Fixed initialization order - migration check before schema initialization
|
|
42
|
+
* - 2025-11-02: Integrated SQL migration runner, removed legacy migrations
|
|
43
|
+
*/
|
|
44
|
+
import type { Database } from 'sqlite3';
|
|
45
|
+
import { createSQLiteSchemaContext, ArchiveMetadata, ArchiveStatistics, SQLiteConfig } from './sqlite-schema.js';
|
|
46
|
+
import type { World, Agent, AgentMessage, Chat, UpdateChatParams, WorldChat } from '../types.js';
|
|
47
|
+
/**
|
|
48
|
+
* Enhanced archive query options
|
|
49
|
+
*/
|
|
50
|
+
export interface ArchiveQueryOptions {
|
|
51
|
+
worldId?: string;
|
|
52
|
+
agentId?: string;
|
|
53
|
+
startDate?: Date;
|
|
54
|
+
endDate?: Date;
|
|
55
|
+
sessionName?: string;
|
|
56
|
+
tags?: string[];
|
|
57
|
+
participants?: string[];
|
|
58
|
+
searchContent?: string;
|
|
59
|
+
limit?: number;
|
|
60
|
+
offset?: number;
|
|
61
|
+
sortBy?: 'created_at' | 'message_count' | 'session_name';
|
|
62
|
+
sortOrder?: 'ASC' | 'DESC';
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Archive search result
|
|
66
|
+
*/
|
|
67
|
+
export interface ArchiveSearchResult {
|
|
68
|
+
archives: ArchiveInfo[];
|
|
69
|
+
totalCount: number;
|
|
70
|
+
hasMore: boolean;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Archive information with metadata
|
|
74
|
+
*/
|
|
75
|
+
export interface ArchiveInfo {
|
|
76
|
+
id: number;
|
|
77
|
+
agentId: string;
|
|
78
|
+
worldId: string;
|
|
79
|
+
sessionName?: string;
|
|
80
|
+
archiveReason?: string;
|
|
81
|
+
messageCount: number;
|
|
82
|
+
startTime?: Date;
|
|
83
|
+
endTime?: Date;
|
|
84
|
+
participants: string[];
|
|
85
|
+
tags: string[];
|
|
86
|
+
createdAt: Date;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Archive export options
|
|
90
|
+
*/
|
|
91
|
+
export interface ArchiveExportOptions {
|
|
92
|
+
format: 'json' | 'csv' | 'txt' | 'markdown';
|
|
93
|
+
includeMetadata?: boolean;
|
|
94
|
+
includeMessages?: boolean;
|
|
95
|
+
compression?: 'none' | 'gzip';
|
|
96
|
+
}
|
|
97
|
+
export interface SQLiteStorageContext {
|
|
98
|
+
schemaCtx: Awaited<ReturnType<typeof createSQLiteSchemaContext>>;
|
|
99
|
+
db: Database;
|
|
100
|
+
isInitialized: boolean;
|
|
101
|
+
}
|
|
102
|
+
export declare function createSQLiteStorageContext(config: SQLiteConfig): Promise<SQLiteStorageContext>;
|
|
103
|
+
/**
|
|
104
|
+
* Utility to initialize the database schema and insert a default world and agent if not present.
|
|
105
|
+
* This is useful for first-time setup or testing.
|
|
106
|
+
*/
|
|
107
|
+
export declare function initializeWithDefaults(ctx: SQLiteStorageContext): Promise<void>;
|
|
108
|
+
export declare function saveWorld(ctx: SQLiteStorageContext, worldData: World): Promise<void>;
|
|
109
|
+
export declare function loadWorld(ctx: SQLiteStorageContext, worldId: string): Promise<World | null>;
|
|
110
|
+
export declare function deleteWorld(ctx: SQLiteStorageContext, worldId: string): Promise<boolean>;
|
|
111
|
+
export declare function listWorlds(ctx: SQLiteStorageContext): Promise<World[]>;
|
|
112
|
+
export declare function saveAgent(ctx: SQLiteStorageContext, worldId: string, agent: Agent): Promise<void>;
|
|
113
|
+
export declare function loadAgent(ctx: SQLiteStorageContext, worldId: string, agentId: string): Promise<Agent | null>;
|
|
114
|
+
export declare function deleteAgent(ctx: SQLiteStorageContext, worldId: string, agentId: string): Promise<boolean>;
|
|
115
|
+
export declare function listAgents(ctx: SQLiteStorageContext, worldId: string): Promise<Agent[]>;
|
|
116
|
+
export declare function saveAgentMemory(ctx: SQLiteStorageContext, worldId: string, agentId: string, memory: AgentMessage[]): Promise<void>;
|
|
117
|
+
export declare function deleteMemoryByChatId(ctx: SQLiteStorageContext, worldId: string, chatId: string): Promise<number>;
|
|
118
|
+
export declare function getMemory(ctx: SQLiteStorageContext, worldId: string, chatId: string): Promise<AgentMessage[]>;
|
|
119
|
+
export declare function saveAgentsBatch(ctx: SQLiteStorageContext, worldId: string, agents: Agent[]): Promise<void>;
|
|
120
|
+
export declare function loadAgentsBatch(ctx: SQLiteStorageContext, worldId: string, agentIds: string[]): Promise<Agent[]>;
|
|
121
|
+
export declare function validateIntegrity(ctx: SQLiteStorageContext, worldId: string, agentId?: string): Promise<boolean>;
|
|
122
|
+
export declare function repairData(ctx: SQLiteStorageContext, worldId: string, agentId?: string): Promise<boolean>;
|
|
123
|
+
export declare function saveChatData(ctx: SQLiteStorageContext, worldId: string, chat: Chat): Promise<void>;
|
|
124
|
+
export declare function loadChatData(ctx: SQLiteStorageContext, worldId: string, chatId: string): Promise<Chat | null>;
|
|
125
|
+
export declare function deleteChatData(ctx: SQLiteStorageContext, worldId: string, chatId: string): Promise<boolean>;
|
|
126
|
+
export declare function listChatHistories(ctx: SQLiteStorageContext, worldId: string): Promise<Chat[]>;
|
|
127
|
+
export declare function updateChatData(ctx: SQLiteStorageContext, worldId: string, chatId: string, updates: UpdateChatParams): Promise<Chat | null>;
|
|
128
|
+
export declare function updateChatNameIfCurrent(ctx: SQLiteStorageContext, worldId: string, chatId: string, expectedName: string, nextName: string): Promise<boolean>;
|
|
129
|
+
export declare function saveWorldChat(ctx: SQLiteStorageContext, worldId: string, chatId: string, chat: WorldChat): Promise<void>;
|
|
130
|
+
export declare function loadWorldChatFull(ctx: SQLiteStorageContext, worldId: string, chatId: string): Promise<WorldChat | null>;
|
|
131
|
+
export declare function loadWorldChat(ctx: SQLiteStorageContext, worldId: string, chatId: string): Promise<WorldChat | null>;
|
|
132
|
+
export declare function restoreFromWorldChat(ctx: SQLiteStorageContext, worldId: string, chat: WorldChat): Promise<boolean>;
|
|
133
|
+
export declare function archiveAgentMemory(ctx: SQLiteStorageContext, worldId: string, agentId: string, memory: AgentMessage[], metadata?: ArchiveMetadata): Promise<number>;
|
|
134
|
+
export declare function searchArchives(ctx: SQLiteStorageContext, options: ArchiveQueryOptions): Promise<ArchiveSearchResult>;
|
|
135
|
+
export declare function getArchiveStatistics(ctx: SQLiteStorageContext, worldId: string, agentId?: string): Promise<ArchiveStatistics>;
|
|
136
|
+
export declare function exportArchive(ctx: SQLiteStorageContext, archiveId: number, options: ArchiveExportOptions): Promise<string>;
|
|
137
|
+
export declare function close(ctx: SQLiteStorageContext): Promise<void>;
|
|
138
|
+
export declare function getDatabaseStats(ctx: SQLiteStorageContext): Promise<{
|
|
139
|
+
worldCount: number;
|
|
140
|
+
agentCount: number;
|
|
141
|
+
activeMemoryCount: number;
|
|
142
|
+
archiveCount: number;
|
|
143
|
+
archivedMessageCount: number;
|
|
144
|
+
databaseSize: number;
|
|
145
|
+
}>;
|
|
146
|
+
//# sourceMappingURL=sqlite-storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-storage.d.ts","sourceRoot":"","sources":["../../../core/storage/sqlite-storage.ts"],"names":[],"mappings":"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"}
|