neoagent 2.4.1-beta.19 → 2.4.1-beta.21
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 +4 -1
- package/docs/getting-started.md +9 -3
- package/flutter_app/assets/branding/app_icon_light_1024.png +0 -0
- package/flutter_app/assets/branding/app_icon_light_128.png +0 -0
- package/flutter_app/assets/branding/app_icon_light_192.png +0 -0
- package/flutter_app/assets/branding/app_icon_light_256.png +0 -0
- package/flutter_app/assets/branding/app_icon_light_32.png +0 -0
- package/flutter_app/assets/branding/app_icon_light_512.png +0 -0
- package/flutter_app/assets/branding/app_icon_light_64.png +0 -0
- package/flutter_app/assets/branding/tray_icon_light_template.png +0 -0
- package/flutter_app/lib/features/location/location_service.dart +3 -0
- package/flutter_app/lib/main.dart +1 -0
- package/flutter_app/lib/main_account_settings.dart +9 -33
- package/flutter_app/lib/main_app_shell.dart +237 -197
- package/flutter_app/lib/main_controller.dart +0 -25
- package/flutter_app/lib/main_devices.dart +2 -0
- package/flutter_app/lib/main_models.dart +144 -0
- package/flutter_app/lib/main_operations.dart +150 -19
- package/flutter_app/lib/main_shared.dart +642 -195
- package/flutter_app/lib/main_theme.dart +2 -0
- package/flutter_app/lib/src/android_apk_drop_zone_web.dart +3 -1
- package/flutter_app/lib/src/security/password_strength.dart +84 -0
- package/flutter_app/lib/src/theme/palette.dart +15 -15
- package/flutter_app/pubspec.yaml +3 -0
- package/flutter_app/web/favicon_light.svg +3 -0
- package/flutter_app/web/icons/Icon-192-light.png +0 -0
- package/flutter_app/web/icons/Icon-512-light.png +0 -0
- package/flutter_app/web/icons/Icon-maskable-192-light.png +0 -0
- package/flutter_app/web/icons/Icon-maskable-512-light.png +0 -0
- package/lib/manager.js +282 -81
- package/package.json +17 -3
- package/server/config/origins.js +3 -1
- package/server/db/database.js +73 -0
- package/server/public/.last_build_id +1 -1
- package/server/public/assets/AssetManifest.bin +1 -1
- package/server/public/assets/AssetManifest.bin.json +1 -1
- package/server/public/assets/assets/branding/app_icon_light_256.png +0 -0
- package/server/public/assets/assets/branding/app_icon_light_512.png +0 -0
- package/server/public/assets/assets/branding/tray_icon_light_template.png +0 -0
- package/server/public/assets/fonts/MaterialIcons-Regular.otf +0 -0
- package/server/public/favicon_light.svg +3 -0
- package/server/public/flutter_bootstrap.js +1 -1
- package/server/public/icons/Icon-192-light.png +0 -0
- package/server/public/icons/Icon-512-light.png +0 -0
- package/server/public/icons/Icon-maskable-192-light.png +0 -0
- package/server/public/icons/Icon-maskable-512-light.png +0 -0
- package/server/public/main.dart.js +68769 -68268
- package/server/routes/agent_profiles.js +3 -0
- package/server/routes/memory.js +22 -1
- package/server/services/account/password_policy.js +6 -1
- package/server/services/memory/intelligence.js +181 -0
- package/server/services/memory/manager.js +475 -25
- package/server/utils/security.js +3 -0
- package/server/services/memory/openhuman_uplift.test.js +0 -98
- package/server/utils/version.test.js +0 -39
package/server/db/database.js
CHANGED
|
@@ -581,6 +581,9 @@ db.exec(`
|
|
|
581
581
|
metadata_json TEXT DEFAULT '{}',
|
|
582
582
|
content TEXT NOT NULL,
|
|
583
583
|
importance INTEGER DEFAULT 5,
|
|
584
|
+
confidence REAL DEFAULT 0.7,
|
|
585
|
+
summary TEXT,
|
|
586
|
+
memory_hash TEXT,
|
|
584
587
|
embedding TEXT,
|
|
585
588
|
access_count INTEGER DEFAULT 0,
|
|
586
589
|
archived INTEGER DEFAULT 0,
|
|
@@ -686,6 +689,62 @@ db.exec(`
|
|
|
686
689
|
CREATE INDEX IF NOT EXISTS idx_memory_ingestion_documents_provider ON memory_ingestion_documents(user_id, agent_id, provider_key, connection_id, updated_at DESC);
|
|
687
690
|
CREATE INDEX IF NOT EXISTS idx_materialized_knowledge_views_user ON materialized_knowledge_views(user_id, agent_id, view_type, updated_at DESC);
|
|
688
691
|
|
|
692
|
+
CREATE TABLE IF NOT EXISTS memory_facts (
|
|
693
|
+
id TEXT PRIMARY KEY,
|
|
694
|
+
memory_id TEXT NOT NULL,
|
|
695
|
+
user_id INTEGER NOT NULL,
|
|
696
|
+
agent_id TEXT,
|
|
697
|
+
subject TEXT NOT NULL,
|
|
698
|
+
predicate TEXT NOT NULL,
|
|
699
|
+
object TEXT NOT NULL,
|
|
700
|
+
category TEXT DEFAULT 'episodic',
|
|
701
|
+
confidence REAL DEFAULT 0.7,
|
|
702
|
+
event_time TEXT,
|
|
703
|
+
metadata_json TEXT DEFAULT '{}',
|
|
704
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
705
|
+
updated_at TEXT DEFAULT (datetime('now')),
|
|
706
|
+
FOREIGN KEY (memory_id) REFERENCES memories(id) ON DELETE CASCADE,
|
|
707
|
+
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
708
|
+
FOREIGN KEY (agent_id) REFERENCES agents(id) ON DELETE SET NULL
|
|
709
|
+
);
|
|
710
|
+
|
|
711
|
+
CREATE TABLE IF NOT EXISTS memory_entities (
|
|
712
|
+
id TEXT PRIMARY KEY,
|
|
713
|
+
user_id INTEGER NOT NULL,
|
|
714
|
+
agent_id TEXT,
|
|
715
|
+
entity_key TEXT NOT NULL,
|
|
716
|
+
name TEXT NOT NULL,
|
|
717
|
+
kind TEXT DEFAULT 'concept',
|
|
718
|
+
aliases_json TEXT DEFAULT '[]',
|
|
719
|
+
summary TEXT DEFAULT '',
|
|
720
|
+
mention_count INTEGER DEFAULT 0,
|
|
721
|
+
first_seen_at TEXT DEFAULT (datetime('now')),
|
|
722
|
+
last_seen_at TEXT DEFAULT (datetime('now')),
|
|
723
|
+
metadata_json TEXT DEFAULT '{}',
|
|
724
|
+
UNIQUE(user_id, agent_id, entity_key),
|
|
725
|
+
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
726
|
+
FOREIGN KEY (agent_id) REFERENCES agents(id) ON DELETE SET NULL
|
|
727
|
+
);
|
|
728
|
+
|
|
729
|
+
CREATE TABLE IF NOT EXISTS memory_entity_mentions (
|
|
730
|
+
entity_id TEXT NOT NULL,
|
|
731
|
+
memory_id TEXT NOT NULL,
|
|
732
|
+
user_id INTEGER NOT NULL,
|
|
733
|
+
agent_id TEXT,
|
|
734
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
735
|
+
PRIMARY KEY (entity_id, memory_id),
|
|
736
|
+
FOREIGN KEY (entity_id) REFERENCES memory_entities(id) ON DELETE CASCADE,
|
|
737
|
+
FOREIGN KEY (memory_id) REFERENCES memories(id) ON DELETE CASCADE,
|
|
738
|
+
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
739
|
+
FOREIGN KEY (agent_id) REFERENCES agents(id) ON DELETE SET NULL
|
|
740
|
+
);
|
|
741
|
+
|
|
742
|
+
CREATE INDEX IF NOT EXISTS idx_memory_facts_memory ON memory_facts(memory_id);
|
|
743
|
+
CREATE INDEX IF NOT EXISTS idx_memory_facts_user ON memory_facts(user_id, agent_id, category, updated_at DESC);
|
|
744
|
+
CREATE INDEX IF NOT EXISTS idx_memory_entities_user ON memory_entities(user_id, agent_id, mention_count DESC, last_seen_at DESC);
|
|
745
|
+
CREATE INDEX IF NOT EXISTS idx_memory_entity_mentions_memory ON memory_entity_mentions(memory_id);
|
|
746
|
+
CREATE INDEX IF NOT EXISTS idx_memory_entity_mentions_entity ON memory_entity_mentions(entity_id);
|
|
747
|
+
|
|
689
748
|
CREATE TABLE IF NOT EXISTS agent_run_events (
|
|
690
749
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
691
750
|
run_id TEXT NOT NULL,
|
|
@@ -984,6 +1043,16 @@ try {
|
|
|
984
1043
|
INSERT INTO messages_fts(rowid, content, role, user_id, agent_id, run_id, platform, platform_chat_id)
|
|
985
1044
|
VALUES (new.id, COALESCE(new.content, ''), new.role, new.user_id, COALESCE(new.agent_id, ''), COALESCE(new.run_id, ''), COALESCE(new.platform, ''), COALESCE(new.platform_chat_id, ''));
|
|
986
1045
|
END;
|
|
1046
|
+
|
|
1047
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS memories_fts USING fts5(
|
|
1048
|
+
memory_id UNINDEXED,
|
|
1049
|
+
user_id UNINDEXED,
|
|
1050
|
+
agent_id UNINDEXED,
|
|
1051
|
+
content,
|
|
1052
|
+
category,
|
|
1053
|
+
entities,
|
|
1054
|
+
tokenize = 'porter unicode61'
|
|
1055
|
+
);
|
|
987
1056
|
`);
|
|
988
1057
|
} catch {
|
|
989
1058
|
// FTS5 is optional. The app still works with LIKE-based fallbacks if unavailable.
|
|
@@ -1035,6 +1104,9 @@ for (const col of [
|
|
|
1035
1104
|
"ALTER TABLE memories ADD COLUMN source_label TEXT",
|
|
1036
1105
|
"ALTER TABLE memories ADD COLUMN stale_after_days INTEGER",
|
|
1037
1106
|
"ALTER TABLE memories ADD COLUMN metadata_json TEXT DEFAULT '{}'",
|
|
1107
|
+
"ALTER TABLE memories ADD COLUMN confidence REAL DEFAULT 0.7",
|
|
1108
|
+
"ALTER TABLE memories ADD COLUMN summary TEXT",
|
|
1109
|
+
"ALTER TABLE memories ADD COLUMN memory_hash TEXT",
|
|
1038
1110
|
"ALTER TABLE scheduled_tasks ADD COLUMN run_at TEXT",
|
|
1039
1111
|
"ALTER TABLE scheduled_tasks ADD COLUMN one_time INTEGER DEFAULT 0",
|
|
1040
1112
|
"ALTER TABLE scheduled_tasks ADD COLUMN execution_mode TEXT DEFAULT 'prompt'",
|
|
@@ -1094,6 +1166,7 @@ function createAgentScopedIndexes() {
|
|
|
1094
1166
|
['conversation_history', 'CREATE INDEX IF NOT EXISTS idx_conv_history_agent ON conversation_history(user_id, agent_id, created_at DESC)'],
|
|
1095
1167
|
['memories', 'CREATE INDEX IF NOT EXISTS idx_memories_agent ON memories(user_id, agent_id, archived, updated_at DESC)'],
|
|
1096
1168
|
['memories', 'CREATE INDEX IF NOT EXISTS idx_memories_scope ON memories(user_id, agent_id, scope_type, scope_id, archived, updated_at DESC)'],
|
|
1169
|
+
['memories', 'CREATE INDEX IF NOT EXISTS idx_memories_hash ON memories(user_id, agent_id, memory_hash, archived)'],
|
|
1097
1170
|
['core_memory', 'CREATE INDEX IF NOT EXISTS idx_core_memory_agent ON core_memory(user_id, agent_id, key)'],
|
|
1098
1171
|
['ai_widgets', 'CREATE UNIQUE INDEX IF NOT EXISTS idx_ai_widgets_system_key ON ai_widgets(user_id, agent_id, system_key) WHERE system_key IS NOT NULL'],
|
|
1099
1172
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
85aec387d5291e4a8061af58ef035c07
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"
|
|
1
|
+
"DQwHIGFzc2V0cy9icmFuZGluZy9hcHBfaWNvbl8yNTYucG5nDAENAQcFYXNzZXQHIGFzc2V0cy9icmFuZGluZy9hcHBfaWNvbl8yNTYucG5nByBhc3NldHMvYnJhbmRpbmcvYXBwX2ljb25fNTEyLnBuZwwBDQEHBWFzc2V0ByBhc3NldHMvYnJhbmRpbmcvYXBwX2ljb25fNTEyLnBuZwcmYXNzZXRzL2JyYW5kaW5nL2FwcF9pY29uX2xpZ2h0XzI1Ni5wbmcMAQ0BBwVhc3NldAcmYXNzZXRzL2JyYW5kaW5nL2FwcF9pY29uX2xpZ2h0XzI1Ni5wbmcHJmFzc2V0cy9icmFuZGluZy9hcHBfaWNvbl9saWdodF81MTIucG5nDAENAQcFYXNzZXQHJmFzc2V0cy9icmFuZGluZy9hcHBfaWNvbl9saWdodF81MTIucG5nByRhc3NldHMvYnJhbmRpbmcvb25ib2FyZGluZ19pbnRyby5tcDQMAQ0BBwVhc3NldAckYXNzZXRzL2JyYW5kaW5nL29uYm9hcmRpbmdfaW50cm8ubXA0Byxhc3NldHMvYnJhbmRpbmcvdHJheV9pY29uX2xpZ2h0X3RlbXBsYXRlLnBuZwwBDQEHBWFzc2V0Byxhc3NldHMvYnJhbmRpbmcvdHJheV9pY29uX2xpZ2h0X3RlbXBsYXRlLnBuZwcmYXNzZXRzL2JyYW5kaW5nL3RyYXlfaWNvbl90ZW1wbGF0ZS5wbmcMAQ0BBwVhc3NldAcmYXNzZXRzL2JyYW5kaW5nL3RyYXlfaWNvbl90ZW1wbGF0ZS5wbmcHMnBhY2thZ2VzL2N1cGVydGlub19pY29ucy9hc3NldHMvQ3VwZXJ0aW5vSWNvbnMudHRmDAENAQcFYXNzZXQHMnBhY2thZ2VzL2N1cGVydGlub19pY29ucy9hc3NldHMvQ3VwZXJ0aW5vSWNvbnMudHRmByxwYWNrYWdlcy9taXhwYW5lbF9mbHV0dGVyL2Fzc2V0cy9taXhwYW5lbC5qcwwBDQEHBWFzc2V0ByxwYWNrYWdlcy9taXhwYW5lbF9mbHV0dGVyL2Fzc2V0cy9taXhwYW5lbC5qcwc3cGFja2FnZXMvcmVjb3JkX3dlYi9hc3NldHMvanMvcmVjb3JkLmZpeHdlYm1kdXJhdGlvbi5qcwwBDQEHBWFzc2V0BzdwYWNrYWdlcy9yZWNvcmRfd2ViL2Fzc2V0cy9qcy9yZWNvcmQuZml4d2VibWR1cmF0aW9uLmpzBy9wYWNrYWdlcy9yZWNvcmRfd2ViL2Fzc2V0cy9qcy9yZWNvcmQud29ya2xldC5qcwwBDQEHBWFzc2V0By9wYWNrYWdlcy9yZWNvcmRfd2ViL2Fzc2V0cy9qcy9yZWNvcmQud29ya2xldC5qcwcWd2ViL2ljb25zL0ljb24tMTkyLnBuZwwBDQEHBWFzc2V0BxZ3ZWIvaWNvbnMvSWNvbi0xOTIucG5n"
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32">
|
|
2
|
+
<image width="32" height="32" xlink:href="data:image/png;base64,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"/>
|
|
3
|
+
</svg>
|
|
@@ -37,6 +37,6 @@ _flutter.buildConfig = {"engineRevision":"4c525dac5ebe5971c5708ef73558ed8edcf4a3
|
|
|
37
37
|
|
|
38
38
|
_flutter.loader.load({
|
|
39
39
|
serviceWorkerSettings: {
|
|
40
|
-
serviceWorkerVersion: "
|
|
40
|
+
serviceWorkerVersion: "3261890854" /* Flutter's service worker is deprecated and will be removed in a future Flutter release. */
|
|
41
41
|
}
|
|
42
42
|
});
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|