logica-mind 0.3.3__tar.gz
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.
- logica_mind-0.3.3/.github/ISSUE_TEMPLATE/bug_report.md +33 -0
- logica_mind-0.3.3/.github/ISSUE_TEMPLATE/feature_request.md +23 -0
- logica_mind-0.3.3/.github/PULL_REQUEST_TEMPLATE.md +18 -0
- logica_mind-0.3.3/.github/workflows/ci.yml +45 -0
- logica_mind-0.3.3/.gitignore +41 -0
- logica_mind-0.3.3/BENCHMARKS.md +247 -0
- logica_mind-0.3.3/CHANGELOG.md +294 -0
- logica_mind-0.3.3/CODE_OF_CONDUCT.md +59 -0
- logica_mind-0.3.3/CONTRIBUTING.md +59 -0
- logica_mind-0.3.3/LICENSE +201 -0
- logica_mind-0.3.3/NOTICE +11 -0
- logica_mind-0.3.3/PKG-INFO +486 -0
- logica_mind-0.3.3/README.md +435 -0
- logica_mind-0.3.3/SECURITY.md +44 -0
- logica_mind-0.3.3/bench/README.md +59 -0
- logica_mind-0.3.3/bench/data/facts-cache.json +1 -0
- logica_mind-0.3.3/bench/data/judge-checkpoint-openai-full.json +1 -0
- logica_mind-0.3.3/bench/data/judge-checkpoint-openai-supplement.json +1 -0
- logica_mind-0.3.3/bench/data/judge-checkpoint-openai.json +1 -0
- logica_mind-0.3.3/bench/data/judge-checkpoint.json +1 -0
- logica_mind-0.3.3/bench/data/locomo10.json +66751 -0
- logica_mind-0.3.3/bench/locomo.py +124 -0
- logica_mind-0.3.3/bench/locomo_judge.py +249 -0
- logica_mind-0.3.3/clients/typescript/package.json +18 -0
- logica_mind-0.3.3/clients/typescript/src/index.ts +119 -0
- logica_mind-0.3.3/clients/typescript/tsconfig.json +13 -0
- logica_mind-0.3.3/docs/README.md +47 -0
- logica_mind-0.3.3/docs/api-reference.md +246 -0
- logica_mind-0.3.3/docs/categorization.md +216 -0
- logica_mind-0.3.3/docs/cli.md +226 -0
- logica_mind-0.3.3/docs/concepts.md +249 -0
- logica_mind-0.3.3/docs/connections.md +62 -0
- logica_mind-0.3.3/docs/dashboard.md +204 -0
- logica_mind-0.3.3/docs/dreaming.md +246 -0
- logica_mind-0.3.3/docs/embeddings-and-reranking.md +341 -0
- logica_mind-0.3.3/docs/graph-explorer.md +121 -0
- logica_mind-0.3.3/docs/graph-intelligence.md +112 -0
- logica_mind-0.3.3/docs/hooks.md +169 -0
- logica_mind-0.3.3/docs/img/dashboard-analytics.png +0 -0
- logica_mind-0.3.3/docs/img/dashboard-calendar.png +0 -0
- logica_mind-0.3.3/docs/img/dashboard-changes.png +0 -0
- logica_mind-0.3.3/docs/img/dashboard-connected.png +0 -0
- logica_mind-0.3.3/docs/img/dashboard-context.png +0 -0
- logica_mind-0.3.3/docs/img/dashboard-dreams.png +0 -0
- logica_mind-0.3.3/docs/img/dashboard-graph-areas.png +0 -0
- logica_mind-0.3.3/docs/img/dashboard-graph-path.png +0 -0
- logica_mind-0.3.3/docs/img/dashboard-graph.png +0 -0
- logica_mind-0.3.3/docs/img/dashboard-help.png +0 -0
- logica_mind-0.3.3/docs/img/dashboard-integrations.png +0 -0
- logica_mind-0.3.3/docs/img/dashboard-lake.png +0 -0
- logica_mind-0.3.3/docs/img/dashboard-learn.png +0 -0
- logica_mind-0.3.3/docs/img/dashboard-memories.png +0 -0
- logica_mind-0.3.3/docs/img/dashboard-observations.png +0 -0
- logica_mind-0.3.3/docs/img/dashboard-orbit.png +0 -0
- logica_mind-0.3.3/docs/img/dashboard-profile-map.png +0 -0
- logica_mind-0.3.3/docs/img/dashboard-profile.png +0 -0
- logica_mind-0.3.3/docs/img/dashboard-rings.png +0 -0
- logica_mind-0.3.3/docs/img/dashboard-sessions.png +0 -0
- logica_mind-0.3.3/docs/img/dashboard-spotlight.png +0 -0
- logica_mind-0.3.3/docs/img/demo-learn.gif +0 -0
- logica_mind-0.3.3/docs/img/demo-path.gif +0 -0
- logica_mind-0.3.3/docs/img/demo-spotlight.gif +0 -0
- logica_mind-0.3.3/docs/img/demo.gif +0 -0
- logica_mind-0.3.3/docs/img/i18n-ar-rtl.png +0 -0
- logica_mind-0.3.3/docs/img/i18n-zh.png +0 -0
- logica_mind-0.3.3/docs/img/overview-home.png +0 -0
- logica_mind-0.3.3/docs/img/social-preview.png +0 -0
- logica_mind-0.3.3/docs/installation.md +119 -0
- logica_mind-0.3.3/docs/integrations.md +354 -0
- logica_mind-0.3.3/docs/internationalization.md +76 -0
- logica_mind-0.3.3/docs/knowledge-graph.md +403 -0
- logica_mind-0.3.3/docs/mcp.md +213 -0
- logica_mind-0.3.3/docs/memory-extraction.md +157 -0
- logica_mind-0.3.3/docs/portability-and-privacy.md +249 -0
- logica_mind-0.3.3/docs/providers.md +189 -0
- logica_mind-0.3.3/docs/quickstart.md +253 -0
- logica_mind-0.3.3/docs/sessions-and-records.md +270 -0
- logica_mind-0.3.3/docs/stores.md +337 -0
- logica_mind-0.3.3/docs/user-model-and-peers.md +202 -0
- logica_mind-0.3.3/examples/provider_adapter.py +40 -0
- logica_mind-0.3.3/examples/quickstart.py +23 -0
- logica_mind-0.3.3/logica_mind/__init__.py +16 -0
- logica_mind-0.3.3/logica_mind/__main__.py +6 -0
- logica_mind-0.3.3/logica_mind/_vector.py +48 -0
- logica_mind-0.3.3/logica_mind/cli.py +125 -0
- logica_mind-0.3.3/logica_mind/core.py +2324 -0
- logica_mind-0.3.3/logica_mind/demo.py +263 -0
- logica_mind-0.3.3/logica_mind/devtools.py +235 -0
- logica_mind-0.3.3/logica_mind/dreaming.py +245 -0
- logica_mind-0.3.3/logica_mind/embeddings/__init__.py +27 -0
- logica_mind-0.3.3/logica_mind/embeddings/base.py +31 -0
- logica_mind-0.3.3/logica_mind/embeddings/batched.py +76 -0
- logica_mind-0.3.3/logica_mind/embeddings/hashing.py +71 -0
- logica_mind-0.3.3/logica_mind/embeddings/local.py +44 -0
- logica_mind-0.3.3/logica_mind/embeddings/multimodal.py +57 -0
- logica_mind-0.3.3/logica_mind/embeddings/onnx.py +87 -0
- logica_mind-0.3.3/logica_mind/embeddings/openai.py +58 -0
- logica_mind-0.3.3/logica_mind/embeddings/voyage.py +138 -0
- logica_mind-0.3.3/logica_mind/extract/__init__.py +6 -0
- logica_mind-0.3.3/logica_mind/extract/base.py +40 -0
- logica_mind-0.3.3/logica_mind/extract/heuristic.py +107 -0
- logica_mind-0.3.3/logica_mind/extract/llm.py +113 -0
- logica_mind-0.3.3/logica_mind/extract/noop.py +21 -0
- logica_mind-0.3.3/logica_mind/extract/taxonomy.py +131 -0
- logica_mind-0.3.3/logica_mind/graph/__init__.py +6 -0
- logica_mind-0.3.3/logica_mind/graph/analytics.py +179 -0
- logica_mind-0.3.3/logica_mind/graph/extractor.py +97 -0
- logica_mind-0.3.3/logica_mind/graph/temporal.py +454 -0
- logica_mind-0.3.3/logica_mind/graph/types.py +82 -0
- logica_mind-0.3.3/logica_mind/hooks.py +405 -0
- logica_mind-0.3.3/logica_mind/integrations/__init__.py +13 -0
- logica_mind-0.3.3/logica_mind/integrations/langchain.py +59 -0
- logica_mind-0.3.3/logica_mind/integrations/llamaindex.py +55 -0
- logica_mind-0.3.3/logica_mind/llm/__init__.py +11 -0
- logica_mind-0.3.3/logica_mind/llm/anthropic.py +41 -0
- logica_mind-0.3.3/logica_mind/llm/base.py +63 -0
- logica_mind-0.3.3/logica_mind/llm/claude_cli.py +73 -0
- logica_mind-0.3.3/logica_mind/llm/openai.py +39 -0
- logica_mind-0.3.3/logica_mind/mcp_server.py +631 -0
- logica_mind-0.3.3/logica_mind/providers.py +142 -0
- logica_mind-0.3.3/logica_mind/rerank/__init__.py +18 -0
- logica_mind-0.3.3/logica_mind/rerank/base.py +27 -0
- logica_mind-0.3.3/logica_mind/rerank/graph.py +66 -0
- logica_mind-0.3.3/logica_mind/rerank/mmr.py +62 -0
- logica_mind-0.3.3/logica_mind/rerank/rrf.py +47 -0
- logica_mind-0.3.3/logica_mind/rerank/voyage.py +75 -0
- logica_mind-0.3.3/logica_mind/stores/__init__.py +24 -0
- logica_mind-0.3.3/logica_mind/stores/base.py +230 -0
- logica_mind-0.3.3/logica_mind/stores/memory.py +51 -0
- logica_mind-0.3.3/logica_mind/stores/multi.py +219 -0
- logica_mind-0.3.3/logica_mind/stores/obsidian.py +205 -0
- logica_mind-0.3.3/logica_mind/stores/postgres.py +140 -0
- logica_mind-0.3.3/logica_mind/stores/redis.py +99 -0
- logica_mind-0.3.3/logica_mind/stores/sqlite.py +497 -0
- logica_mind-0.3.3/logica_mind/stores/supabase.py +275 -0
- logica_mind-0.3.3/logica_mind/types.py +103 -0
- logica_mind-0.3.3/logica_mind/user/__init__.py +4 -0
- logica_mind-0.3.3/logica_mind/user/dialectic.py +265 -0
- logica_mind-0.3.3/logica_mind/web/__init__.py +4 -0
- logica_mind-0.3.3/logica_mind/web/app/.gitignore +4 -0
- logica_mind-0.3.3/logica_mind/web/app/index.html +12 -0
- logica_mind-0.3.3/logica_mind/web/app/package-lock.json +2482 -0
- logica_mind-0.3.3/logica_mind/web/app/package.json +27 -0
- logica_mind-0.3.3/logica_mind/web/app/src/App.tsx +139 -0
- logica_mind-0.3.3/logica_mind/web/app/src/api.ts +187 -0
- logica_mind-0.3.3/logica_mind/web/app/src/components/CommandPalette.tsx +154 -0
- logica_mind-0.3.3/logica_mind/web/app/src/components/Composer.tsx +81 -0
- logica_mind-0.3.3/logica_mind/web/app/src/components/DemoBanner.tsx +79 -0
- logica_mind-0.3.3/logica_mind/web/app/src/components/GraphCanvas.tsx +640 -0
- logica_mind-0.3.3/logica_mind/web/app/src/components/HelpTip.tsx +39 -0
- logica_mind-0.3.3/logica_mind/web/app/src/components/InsightList.tsx +26 -0
- logica_mind-0.3.3/logica_mind/web/app/src/components/Integrations.tsx +129 -0
- logica_mind-0.3.3/logica_mind/web/app/src/components/LearningBurst.tsx +129 -0
- logica_mind-0.3.3/logica_mind/web/app/src/components/Markdown.tsx +51 -0
- logica_mind-0.3.3/logica_mind/web/app/src/components/MemoryCard.tsx +96 -0
- logica_mind-0.3.3/logica_mind/web/app/src/components/MemoryDetail.tsx +192 -0
- logica_mind-0.3.3/logica_mind/web/app/src/components/NodeDetail.tsx +186 -0
- logica_mind-0.3.3/logica_mind/web/app/src/components/Pager.tsx +36 -0
- logica_mind-0.3.3/logica_mind/web/app/src/components/Settings.tsx +207 -0
- logica_mind-0.3.3/logica_mind/web/app/src/components/Sidebar.tsx +86 -0
- logica_mind-0.3.3/logica_mind/web/app/src/components/TabBar.tsx +38 -0
- logica_mind-0.3.3/logica_mind/web/app/src/components/Topbar.tsx +33 -0
- logica_mind-0.3.3/logica_mind/web/app/src/i18n.tsx +556 -0
- logica_mind-0.3.3/logica_mind/web/app/src/index.css +65 -0
- logica_mind-0.3.3/logica_mind/web/app/src/lifearea.ts +35 -0
- logica_mind-0.3.3/logica_mind/web/app/src/locales/ar.ts +483 -0
- logica_mind-0.3.3/logica_mind/web/app/src/locales/bn.ts +483 -0
- logica_mind-0.3.3/logica_mind/web/app/src/locales/de.ts +483 -0
- logica_mind-0.3.3/logica_mind/web/app/src/locales/es.ts +483 -0
- logica_mind-0.3.3/logica_mind/web/app/src/locales/fr.ts +483 -0
- logica_mind-0.3.3/logica_mind/web/app/src/locales/hi.ts +483 -0
- logica_mind-0.3.3/logica_mind/web/app/src/locales/id.ts +483 -0
- logica_mind-0.3.3/logica_mind/web/app/src/locales/it.ts +483 -0
- logica_mind-0.3.3/logica_mind/web/app/src/locales/ja.ts +483 -0
- logica_mind-0.3.3/logica_mind/web/app/src/locales/ko.ts +483 -0
- logica_mind-0.3.3/logica_mind/web/app/src/locales/pt.ts +485 -0
- logica_mind-0.3.3/logica_mind/web/app/src/locales/ru.ts +483 -0
- logica_mind-0.3.3/logica_mind/web/app/src/locales/tr.ts +483 -0
- logica_mind-0.3.3/logica_mind/web/app/src/locales/zh.ts +483 -0
- logica_mind-0.3.3/logica_mind/web/app/src/main.tsx +13 -0
- logica_mind-0.3.3/logica_mind/web/app/src/memctx.ts +7 -0
- logica_mind-0.3.3/logica_mind/web/app/src/nav.tsx +36 -0
- logica_mind-0.3.3/logica_mind/web/app/src/navctx.ts +17 -0
- logica_mind-0.3.3/logica_mind/web/app/src/predlabel.ts +11 -0
- logica_mind-0.3.3/logica_mind/web/app/src/theme.ts +31 -0
- logica_mind-0.3.3/logica_mind/web/app/src/views/Analytics.tsx +209 -0
- logica_mind-0.3.3/logica_mind/web/app/src/views/Calendar.tsx +143 -0
- logica_mind-0.3.3/logica_mind/web/app/src/views/Changes.tsx +99 -0
- logica_mind-0.3.3/logica_mind/web/app/src/views/ContextBlock.tsx +185 -0
- logica_mind-0.3.3/logica_mind/web/app/src/views/Dreams.tsx +342 -0
- logica_mind-0.3.3/logica_mind/web/app/src/views/GraphView.tsx +703 -0
- logica_mind-0.3.3/logica_mind/web/app/src/views/Insights.tsx +92 -0
- logica_mind-0.3.3/logica_mind/web/app/src/views/Memories.tsx +84 -0
- logica_mind-0.3.3/logica_mind/web/app/src/views/Observations.tsx +94 -0
- logica_mind-0.3.3/logica_mind/web/app/src/views/Overview.tsx +49 -0
- logica_mind-0.3.3/logica_mind/web/app/src/views/Peers.tsx +70 -0
- logica_mind-0.3.3/logica_mind/web/app/src/views/Profile.tsx +194 -0
- logica_mind-0.3.3/logica_mind/web/app/src/views/Sessions.tsx +223 -0
- logica_mind-0.3.3/logica_mind/web/app/src/views/UserModel.tsx +61 -0
- logica_mind-0.3.3/logica_mind/web/app/src/views/Workspace.tsx +73 -0
- logica_mind-0.3.3/logica_mind/web/app/tsconfig.json +20 -0
- logica_mind-0.3.3/logica_mind/web/app/vite.config.ts +16 -0
- logica_mind-0.3.3/logica_mind/web/dist/assets/ar-D2w4YmaP.js +98 -0
- logica_mind-0.3.3/logica_mind/web/dist/assets/bn-BZNCaIhP.js +98 -0
- logica_mind-0.3.3/logica_mind/web/dist/assets/de-CtdW_KS4.js +98 -0
- logica_mind-0.3.3/logica_mind/web/dist/assets/es-plUTCAhb.js +98 -0
- logica_mind-0.3.3/logica_mind/web/dist/assets/fr-CUFOkQI1.js +98 -0
- logica_mind-0.3.3/logica_mind/web/dist/assets/hi-C176wp9e.js +98 -0
- logica_mind-0.3.3/logica_mind/web/dist/assets/id-C9LdD1t2.js +98 -0
- logica_mind-0.3.3/logica_mind/web/dist/assets/index-BInm_nz4.js +154 -0
- logica_mind-0.3.3/logica_mind/web/dist/assets/index-D5osCRia.css +1 -0
- logica_mind-0.3.3/logica_mind/web/dist/assets/it-B-1YvgcV.js +98 -0
- logica_mind-0.3.3/logica_mind/web/dist/assets/ja-k_zMuwbj.js +98 -0
- logica_mind-0.3.3/logica_mind/web/dist/assets/ko-Dvds2wGr.js +98 -0
- logica_mind-0.3.3/logica_mind/web/dist/assets/pt-DJTF19QO.js +98 -0
- logica_mind-0.3.3/logica_mind/web/dist/assets/ru-X9YFYwtM.js +98 -0
- logica_mind-0.3.3/logica_mind/web/dist/assets/tr-Bxde-MIW.js +98 -0
- logica_mind-0.3.3/logica_mind/web/dist/assets/zh-Chn-ciXb.js +98 -0
- logica_mind-0.3.3/logica_mind/web/dist/index.html +13 -0
- logica_mind-0.3.3/logica_mind/web/index.html +468 -0
- logica_mind-0.3.3/logica_mind/web/server.py +1306 -0
- logica_mind-0.3.3/migrations/supabase.sql +84 -0
- logica_mind-0.3.3/pyproject.toml +58 -0
- logica_mind-0.3.3/sdk-ts/README.md +28 -0
- logica_mind-0.3.3/sdk-ts/package.json +18 -0
- logica_mind-0.3.3/sdk-ts/src/index.ts +98 -0
- logica_mind-0.3.3/sdk-ts/tsconfig.json +13 -0
- logica_mind-0.3.3/tests/test_core.py +1733 -0
- logica_mind-0.3.3/tests/test_graph_facets.py +163 -0
- logica_mind-0.3.3/tests/test_moats.py +715 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug report
|
|
3
|
+
about: Report a problem so we can fix it
|
|
4
|
+
title: "[bug] "
|
|
5
|
+
labels: bug
|
|
6
|
+
assignees: ''
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
**Describe the bug**
|
|
10
|
+
A clear and concise description of what the bug is.
|
|
11
|
+
|
|
12
|
+
**To reproduce**
|
|
13
|
+
Minimal steps or a code snippet that triggers the bug:
|
|
14
|
+
|
|
15
|
+
```python
|
|
16
|
+
from logica_mind import LogicaMind
|
|
17
|
+
# ...
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
**Expected behavior**
|
|
21
|
+
What you expected to happen.
|
|
22
|
+
|
|
23
|
+
**Actual behavior**
|
|
24
|
+
What actually happened (include the full error / traceback if any).
|
|
25
|
+
|
|
26
|
+
**Environment**
|
|
27
|
+
- Logica Mind version:
|
|
28
|
+
- Python version:
|
|
29
|
+
- OS:
|
|
30
|
+
- Store / embedder in use (e.g. SQLite + hashing, Supabase + Voyage):
|
|
31
|
+
|
|
32
|
+
**Additional context**
|
|
33
|
+
Anything else that helps — but please do NOT paste secrets or private data.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature request
|
|
3
|
+
about: Suggest an idea or improvement
|
|
4
|
+
title: "[feature] "
|
|
5
|
+
labels: enhancement
|
|
6
|
+
assignees: ''
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
**What problem does this solve?**
|
|
10
|
+
A clear description of the use case or pain point.
|
|
11
|
+
|
|
12
|
+
**Proposed solution**
|
|
13
|
+
What you'd like to happen. API sketch welcome:
|
|
14
|
+
|
|
15
|
+
```python
|
|
16
|
+
# how you'd want to call it
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
**Alternatives considered**
|
|
20
|
+
Other approaches you thought about.
|
|
21
|
+
|
|
22
|
+
**Additional context**
|
|
23
|
+
Links, prior art, or anything else relevant.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Pull Request
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
<!-- What does this change and why? -->
|
|
6
|
+
|
|
7
|
+
## Checklist
|
|
8
|
+
|
|
9
|
+
- [ ] `pytest -q` passes
|
|
10
|
+
- [ ] If the dashboard (`logica_mind/web/app/`) changed, I rebuilt and committed
|
|
11
|
+
`logica_mind/web/dist/` (`npm ci && npm run build`)
|
|
12
|
+
- [ ] Docs / README updated if behavior changed
|
|
13
|
+
- [ ] No secrets, API keys, or private data committed
|
|
14
|
+
- [ ] New/changed behavior is covered by tests
|
|
15
|
+
|
|
16
|
+
## Notes
|
|
17
|
+
|
|
18
|
+
<!-- Anything reviewers should know. -->
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
# Runs the offline test suite and builds the dashboard. The suite needs no API
|
|
4
|
+
# keys (SQLite + hashing embedder); the production backends (Supabase/Postgres/
|
|
5
|
+
# Redis/Voyage/OpenAI) are exercised by stubbed/mocked tests, not live services.
|
|
6
|
+
on:
|
|
7
|
+
push:
|
|
8
|
+
pull_request:
|
|
9
|
+
workflow_dispatch:
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
test:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
strategy:
|
|
15
|
+
matrix:
|
|
16
|
+
python-version: ["3.10", "3.11", "3.12"]
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v4
|
|
19
|
+
- uses: actions/setup-python@v5
|
|
20
|
+
with:
|
|
21
|
+
python-version: ${{ matrix.python-version }}
|
|
22
|
+
- name: Install (editable, no extras needed for the offline suite)
|
|
23
|
+
run: pip install -e .
|
|
24
|
+
- name: Run tests
|
|
25
|
+
run: pip install pytest && pytest -q
|
|
26
|
+
|
|
27
|
+
ui-build:
|
|
28
|
+
runs-on: ubuntu-latest
|
|
29
|
+
steps:
|
|
30
|
+
- uses: actions/checkout@v4
|
|
31
|
+
- uses: actions/setup-node@v4
|
|
32
|
+
with:
|
|
33
|
+
node-version: "20"
|
|
34
|
+
- name: Build the dashboard
|
|
35
|
+
working-directory: logica_mind/web/app
|
|
36
|
+
run: |
|
|
37
|
+
npm ci || npm install
|
|
38
|
+
npm run build
|
|
39
|
+
- name: Fail if the committed dist is stale
|
|
40
|
+
run: |
|
|
41
|
+
if ! git diff --quiet -- logica_mind/web/dist; then
|
|
42
|
+
echo "::error::logica_mind/web/dist is out of date — run 'npm run build' and commit it."
|
|
43
|
+
git --no-pager diff --stat -- logica_mind/web/dist
|
|
44
|
+
exit 1
|
|
45
|
+
fi
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*.egg-info/
|
|
5
|
+
.eggs/
|
|
6
|
+
/build/
|
|
7
|
+
/dist/ # python sdist/wheel build (root-anchored, so it does NOT
|
|
8
|
+
# match logica_mind/web/dist — the BUILT dashboard ships)
|
|
9
|
+
.pytest_cache/
|
|
10
|
+
.venv/
|
|
11
|
+
venv/
|
|
12
|
+
.env
|
|
13
|
+
|
|
14
|
+
# local SQLite stores / demo databases
|
|
15
|
+
*.db
|
|
16
|
+
*.db-wal
|
|
17
|
+
*.db-shm
|
|
18
|
+
*.sqlite
|
|
19
|
+
*.sqlite3
|
|
20
|
+
|
|
21
|
+
# runtime sidecars written next to the store (regenerated; may contain local data)
|
|
22
|
+
*_session_names.json
|
|
23
|
+
*_dream_journal.json
|
|
24
|
+
|
|
25
|
+
# node / vite UI dev tree (the build output lives in logica_mind/web/dist, tracked)
|
|
26
|
+
node_modules/
|
|
27
|
+
logica_mind/web/app/dist/
|
|
28
|
+
logica_mind/web/app/.vite/
|
|
29
|
+
|
|
30
|
+
# misc
|
|
31
|
+
.DS_Store
|
|
32
|
+
*.log
|
|
33
|
+
|
|
34
|
+
# internal-only docs (kept locally, never published)
|
|
35
|
+
/FEATURES.md
|
|
36
|
+
/ROADMAP.md
|
|
37
|
+
/ARCHITECTURE.md
|
|
38
|
+
|
|
39
|
+
# never commit deps (incl. build symlinks)
|
|
40
|
+
node_modules
|
|
41
|
+
**/node_modules
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
# Benchmarks for agent memory
|
|
2
|
+
|
|
3
|
+
Honest numbers, open methodology, one-command reproduction. This page reports
|
|
4
|
+
how Logica Mind scores on the public benchmarks the agent-memory industry uses
|
|
5
|
+
— and explains, with sources, why vendor headline numbers are rarely
|
|
6
|
+
comparable to each other.
|
|
7
|
+
|
|
8
|
+
> **TL;DR** — on LoCoMo under the *same published protocol the Mem0 paper used*
|
|
9
|
+
> (gpt-4o-mini answerer **and** judge, adversarial category excluded), Logica
|
|
10
|
+
> Mind's **full pipeline scores 72.5%** — above every memory system in the
|
|
11
|
+
> published protocol (Mem0ᵍ 68.4%, Mem0 66.9%, Zep 66.0%) and within 0.4pt of
|
|
12
|
+
> the full-context ceiling (72.9%), while paying **one LLM call per session**
|
|
13
|
+
> at write time (~35× fewer than per-write extraction pipelines). With **zero
|
|
14
|
+
> LLM calls at write time** it still scores **67.3%** — above Mem0 and Zep —
|
|
15
|
+
> and fully keyless (local ONNX, no API at all) it scores **60.9%**, matching
|
|
16
|
+
> the best RAG baseline with **87ms p50** local retrieval and $0 per write.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## LoCoMo — full run (locomo10, 1,540 scored questions)
|
|
21
|
+
|
|
22
|
+
| Mode | **accuracy (J)** | **retrieval latency** | **median context** |
|
|
23
|
+
|---|---|---|---|
|
|
24
|
+
| **full pipeline** (1 LLM call per *session* at write) | **72.5%** | 1,606 / 2,859 ms (p50/p95)³ | 3,525 tokens |
|
|
25
|
+
| zero-LLM writes, `openai` embedder (text-embedding-3-small) | **67.3%** | 584 / 1,452 ms (p50/p95)³ | 2,648 tokens |
|
|
26
|
+
| zero-LLM writes, `onnx` embedder (**no API keys at all**) | **60.9%** | 87 / 338 ms (p50/p95) | 2,738 tokens |
|
|
27
|
+
|
|
28
|
+
³ The `openai`/full-pipeline rows embed each query over the network (the full
|
|
29
|
+
pipeline runs two lookups per question: dialogue + facts), measured while the
|
|
30
|
+
benchmark hammered the machine with 8 concurrent workers — latency is dominated
|
|
31
|
+
by API round-trips, not the library. The `onnx` row is fully in-process: that's
|
|
32
|
+
the latency the library itself is responsible for.
|
|
33
|
+
|
|
34
|
+
**Accuracy by question category** (official locomo10 category mapping¹):
|
|
35
|
+
|
|
36
|
+
```text
|
|
37
|
+
full pipeline · session distillation at write — overall 72.5%
|
|
38
|
+
single-hop █████████████████░░░ 83.5% (702/841)
|
|
39
|
+
temporal ██████████████░░░░░░ 70.7% (227/321)
|
|
40
|
+
multi-hop ███████████░░░░░░░░░ 53.2% (150/282)
|
|
41
|
+
open-domain ███████░░░░░░░░░░░░░ 37.0% (34/92)
|
|
42
|
+
|
|
43
|
+
zero-LLM writes · openai embedder — overall 67.3%
|
|
44
|
+
single-hop █████████████████░░░ 82.9% (697/841)
|
|
45
|
+
temporal ████████████░░░░░░░░ 60.4% (194/321)
|
|
46
|
+
multi-hop █████████░░░░░░░░░░░ 43.3% (122/282)
|
|
47
|
+
open-domain ████░░░░░░░░░░░░░░░░ 21.7% (20/92)
|
|
48
|
+
|
|
49
|
+
zero-LLM writes · onnx embedder (keyless) — overall 60.9%
|
|
50
|
+
single-hop ███████████████░░░░░ 74.7% (628/841)
|
|
51
|
+
temporal ███████████░░░░░░░░░ 56.7% (182/321)
|
|
52
|
+
multi-hop ███████░░░░░░░░░░░░░ 36.5% (103/282)
|
|
53
|
+
open-domain █████░░░░░░░░░░░░░░░ 25.0% (23/92)
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
For reference, Mem0's published per-category numbers (same protocol,
|
|
57
|
+
[Table 1](https://arxiv.org/html/2504.19413v1)): single-hop 67.1%, temporal
|
|
58
|
+
55.5%, multi-hop 51.2%, open-domain 72.9%. The full pipeline **beats Mem0 on
|
|
59
|
+
single-hop (+16.4pts), temporal (+15.2pts) and multi-hop (+2.0pts)**;
|
|
60
|
+
open-domain remains their stronghold (it rewards broad world-knowledge
|
|
61
|
+
synthesis) — even after the pipeline nearly doubled our score there. Zero-LLM
|
|
62
|
+
writes already beat them on single-hop and temporal with no ingestion cost at
|
|
63
|
+
all.
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Why zero-LLM writes beat the extraction pipelines
|
|
68
|
+
|
|
69
|
+
Scoring 67.3% — above Mem0 (66.9%) and Zep (66.0%) — *without paying an LLM
|
|
70
|
+
per memory written* isn't luck. Three design decisions do the work:
|
|
71
|
+
|
|
72
|
+
**1. Distillation loses detail; raw turns keep it.**
|
|
73
|
+
Mem0, Zep, LangMem and OpenAI Memory all run every incoming message through an
|
|
74
|
+
LLM at write time and store the *summary*. But 55% of LoCoMo's scored
|
|
75
|
+
questions are single-hop — the answer sits verbatim in one dialogue turn, with
|
|
76
|
+
its exact wording, number or date. A distilled fact has often thrown that
|
|
77
|
+
detail away; the raw turn never does. That's the single-hop gap: **82.9% vs
|
|
78
|
+
Mem0's 67.1%**. Logica Mind's strategy is *retrieve precise, read wide*: every
|
|
79
|
+
turn is stored as its own memory (a precise retrieval unit that fits the
|
|
80
|
+
embedder's window), and the answer context expands each hit with its ±2
|
|
81
|
+
neighbouring turns, in conversation order, so the answerer sees the local
|
|
82
|
+
dialogue — not an isolated fragment.
|
|
83
|
+
|
|
84
|
+
**2. Time is a first-class column, not an afterthought.**
|
|
85
|
+
Every memory carries its session date (the same reason the knowledge graph is
|
|
86
|
+
*temporal*), and the answerer is instructed to resolve relative time — a
|
|
87
|
+
memory dated 15 July saying "last Friday" means the Friday before 15 July.
|
|
88
|
+
Temporal questions: **60.4% vs Mem0's published 55.5%** — and temporal memory
|
|
89
|
+
is the product Zep sells.
|
|
90
|
+
|
|
91
|
+
**3. The economics are not a footnote.**
|
|
92
|
+
Ingesting LoCoMo means ~26,000 dialogue turns. Per-write extraction pipelines
|
|
93
|
+
pay an LLM call (plus latency, plus a third party seeing your data) for every
|
|
94
|
+
one of them. Logica Mind pays **zero** — ingestion is free, private and local
|
|
95
|
+
— and still scores higher. The optional full pipeline pays **one call per
|
|
96
|
+
session** (~350 for all of LoCoMo, ~35× fewer), not one per write.
|
|
97
|
+
|
|
98
|
+
**Where extraction does win** — and we say so: in zero-LLM mode, multi-hop
|
|
99
|
+
(43.3% vs 51.2%) and open-domain (21.7% vs 72.9%), questions whose answer must
|
|
100
|
+
be *synthesized across many turns*. A distilled fact base can pre-join what
|
|
101
|
+
raw turns keep apart. The full pipeline buys exactly that back — multi-hop
|
|
102
|
+
jumps to 53.2% (now above Mem0) and open-domain nearly doubles to 37.0% —
|
|
103
|
+
**without giving up the raw-turn advantage** (single-hop holds at 83.5%).
|
|
104
|
+
|
|
105
|
+
**A negative result we publish anyway:** the *obvious* full-pipeline design —
|
|
106
|
+
let distilled facts and raw turns compete in one top-k — scores **63.1%**,
|
|
107
|
+
*worse than not extracting at all* (67.3%). Facts rank high semantically and
|
|
108
|
+
crowd the precise dialogue turns out of the retrieval budget, killing the
|
|
109
|
+
single-hop advantage. The design that wins (72.5%) keeps the dialogue
|
|
110
|
+
retrieval untouched and *appends* facts as a separate lookup. If you're
|
|
111
|
+
building a memory system: extraction is only worth its cost when it
|
|
112
|
+
supplements raw evidence instead of replacing it.
|
|
113
|
+
|
|
114
|
+
The shape is exactly what zero-LLM ingestion predicts: questions answerable from
|
|
115
|
+
retrieved dialogue (single-hop, temporal) score high; questions that need facts
|
|
116
|
+
*synthesized across many turns* (multi-hop, open-domain) are where write-time
|
|
117
|
+
distillation earns its cost — that's what the **full pipeline** row measures.
|
|
118
|
+
|
|
119
|
+
¹ Verified against the dataset itself: category 1 = multi-hop (282), 2 =
|
|
120
|
+
temporal (321), 3 = open-domain (96 in the dataset; 92 carry evidence
|
|
121
|
+
annotations and are scored), 4 = single-hop (841); category 5 = adversarial
|
|
122
|
+
(446) has no gold answers and is excluded — the same exclusion
|
|
123
|
+
[hard-coded in Mem0's evaluation code](https://github.com/mem0ai/mem0/blob/main/evaluation/evals.py).
|
|
124
|
+
|
|
125
|
+
**Protocol** (matches the [Mem0 paper](https://arxiv.org/abs/2504.19413)
|
|
126
|
+
family): ingest the conversation, `recall(question, k)` → answer with
|
|
127
|
+
**gpt-4o-mini** from only the retrieved context → grade with a **gpt-4o-mini**
|
|
128
|
+
judge against the gold label. Two write-time modes are reported:
|
|
129
|
+
|
|
130
|
+
- **zero-LLM writes** (k=20): every dialogue turn stored raw (speaker +
|
|
131
|
+
session date), no LLM at ingestion — the free/private/local trade.
|
|
132
|
+
- **full pipeline** (k=20 dialogue + 10 facts, ±3 neighbours): Logica Mind's
|
|
133
|
+
LLM extraction distills durable facts at write time — **one call per
|
|
134
|
+
session** (~35× fewer LLM calls than per-memory extraction pipelines). The
|
|
135
|
+
facts *supplement* the dialogue retrieval instead of competing with it for
|
|
136
|
+
the same top-k: the answer context is the same dialogue the zero-LLM mode
|
|
137
|
+
retrieves, plus the 10 most relevant distilled facts appended separately.
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
python bench/locomo.py --embedder onnx # retrieval-only (free)
|
|
141
|
+
OPENAI_API_KEY=… python bench/locomo_judge.py --embedder openai # zero-LLM writes (~$3)
|
|
142
|
+
OPENAI_API_KEY=… python bench/locomo_judge.py --embedder openai \
|
|
143
|
+
--ingest supplement --k 20 --radius 3 # full pipeline (~$4)
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## How this compares — published numbers, same protocol family
|
|
149
|
+
|
|
150
|
+
LoCoMo **J score** with gpt-4o-mini answering, adversarial excluded, as
|
|
151
|
+
**published in the [Mem0 paper, Table 1](https://arxiv.org/html/2504.19413v1)**
|
|
152
|
+
(±, Letta's from [their blog](https://www.letta.com/blog/benchmarking-ai-agent-memory)):
|
|
153
|
+
|
|
154
|
+
| System | LoCoMo J | LLM at write time | Source |
|
|
155
|
+
|---|---|---|---|
|
|
156
|
+
| Letta (filesystem agent) | 74.0% | agent-managed | [Letta blog](https://www.letta.com/blog/benchmarking-ai-agent-memory) |
|
|
157
|
+
| Full-context baseline (no memory system) | 72.9% | — | [Mem0 paper](https://arxiv.org/html/2504.19413v1) |
|
|
158
|
+
| **Logica Mind (full pipeline: session distillation at write)** | **72.5%** | **yes — 1 call per session, ~35× fewer calls** | this page |
|
|
159
|
+
| Mem0ᵍ (graph variant) | 68.4% | yes, every write | [Mem0 paper](https://arxiv.org/html/2504.19413v1) |
|
|
160
|
+
| **Logica Mind (zero-LLM ingestion, openai embedder)** | **67.3%** | **no** | this page |
|
|
161
|
+
| Mem0 | 66.9% | yes, every write | [Mem0 paper](https://arxiv.org/html/2504.19413v1) |
|
|
162
|
+
| Zep (as measured by Mem0 — disputed²) | 66.0% | yes, every write | [Mem0 paper](https://arxiv.org/html/2504.19413v1) |
|
|
163
|
+
| Best RAG baseline | 61.0% | no | [Mem0 paper](https://arxiv.org/html/2504.19413v1) |
|
|
164
|
+
| **Logica Mind (zero-LLM ingestion, onnx embedder — fully keyless memory)** | **60.9%** | **no** | this page |
|
|
165
|
+
| LangMem | 58.1% | yes | [Mem0 paper](https://arxiv.org/html/2504.19413v1) |
|
|
166
|
+
| OpenAI Memory | 52.9% | yes | [Mem0 paper](https://arxiv.org/html/2504.19413v1) |
|
|
167
|
+
| A-Mem | 48.4% | yes | [Mem0 paper](https://arxiv.org/html/2504.19413v1) |
|
|
168
|
+
|
|
169
|
+
² **The Zep number is publicly disputed.** Mem0 measured Zep at 66.0% and
|
|
170
|
+
[filed an issue](https://github.com/getzep/zep-papers/issues/5) arguing Zep's
|
|
171
|
+
earlier 84% claim improperly included the adversarial category (recomputing it
|
|
172
|
+
as 58.4%); Zep [rebutted](https://blog.getzep.com/lies-damn-lies-statistics-is-mem0-really-sota-in-agent-memory/)
|
|
173
|
+
alleging misconfiguration and reported 75.1% for itself under its own re-run.
|
|
174
|
+
Both can't be right — which is exactly why this page pins every number to its
|
|
175
|
+
source and protocol.
|
|
176
|
+
|
|
177
|
+
### About the much bigger numbers on vendor sites
|
|
178
|
+
|
|
179
|
+
[Zep's research page](https://www.getzep.com/research/) reports **94.7%** on
|
|
180
|
+
LoCoMo and [Mem0's README](https://github.com/mem0ai/mem0) reports **91.6%**
|
|
181
|
+
(April 2026, "new algorithm"). These are **self-reported, post-paper numbers
|
|
182
|
+
under each vendor's own methodology** (different answerer models, judges,
|
|
183
|
+
retrieval budgets and dataset corrections), not peer-reviewed and not
|
|
184
|
+
comparable to the table above — note both vendors' *peer-comparable* numbers
|
|
185
|
+
in the published protocol are in the 60s. Letta showed a **plain filesystem
|
|
186
|
+
agent scores 74.0%** ([blog](https://www.letta.com/blog/benchmarking-ai-agent-memory)),
|
|
187
|
+
and the full-context baseline (72.9%) beats most memory systems — LoCoMo
|
|
188
|
+
conversations average only ~16–26k tokens, so the honest reading is:
|
|
189
|
+
**LoCoMo measures retrieval quality, not memory magic.** That's also
|
|
190
|
+
[Zep's own criticism](https://blog.getzep.com/lies-damn-lies-statistics-is-mem0-really-sota-in-agent-memory/)
|
|
191
|
+
of the benchmark.
|
|
192
|
+
|
|
193
|
+
### What memory systems actually sell: latency & token cost
|
|
194
|
+
|
|
195
|
+
The Mem0 paper's own argument: full-context costs **17.1s p95** end-to-end vs
|
|
196
|
+
1.4s with memory — the value is latency/cost, not accuracy. On that axis:
|
|
197
|
+
|
|
198
|
+
| System | Search latency (published) | Where memory lives |
|
|
199
|
+
|---|---|---|
|
|
200
|
+
| **Logica Mind (onnx, fully local)** | **87ms p50 / 338ms p95 (measured, this run)** | in-process, local SQLite |
|
|
201
|
+
| Zep (cloud) | 87–104ms p50 / 155–162ms p95 ([site](https://www.getzep.com/research/)) | network service |
|
|
202
|
+
| Mem0 | 148ms p50 / 200ms p95 ([paper](https://arxiv.org/html/2504.19413v1)) | network service |
|
|
203
|
+
| LangMem | 17,990ms p50 ([Mem0 paper](https://arxiv.org/html/2504.19413v1)) | store-dependent |
|
|
204
|
+
|
|
205
|
+
Logica Mind's retrieval is a local hybrid search — no network hop, no per-call
|
|
206
|
+
billing, and **$0 per memory written** (competing pipelines invoke an LLM on
|
|
207
|
+
every write: that's the cost curve they don't put on the landing page).
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## Positioning — verified, with sources (June 2026)
|
|
212
|
+
|
|
213
|
+
| | **Logica Mind** | Mem0 | Zep / Graphiti | Letta | LangMem |
|
|
214
|
+
|---|---|---|---|---|---|
|
|
215
|
+
| License (OSS) | Apache-2.0 | Apache-2.0 | Apache-2.0 (Graphiti engine) | Apache-2.0 | MIT |
|
|
216
|
+
| Core install | **zero dependencies** | requires `openai` + `posthog` (telemetry) ([pyproject](https://raw.githubusercontent.com/mem0ai/mem0/main/pyproject.toml)) | needs Neo4j/FalkorDB/Neptune/Kuzu ([repo](https://github.com/getzep/graphiti)) | Postgres + pgvector ([docs](https://docs.letta.com/guides/docker/postgres/)) | 8 langchain-* deps ([pyproject](https://github.com/langchain-ai/langmem/blob/main/pyproject.toml)) |
|
|
217
|
+
| Works with no API key | **yes (hashing/onnx + heuristic extraction)** | no (LLM extraction at write) | no (LLM required at ingestion) | no (agent LLM) | no |
|
|
218
|
+
| Temporal knowledge graph | **yes, OSS** (point-in-time replay, fact invalidation) | removed from OSS; temporal = paid Platform v3 ([docs](https://docs.mem0.ai/platform/features/temporal-reasoning)) | yes (Graphiti, bi-temporal) | no (blocks + archival) | no |
|
|
219
|
+
| Self-hosted dashboard | **yes — 15 languages, graph explorer, zero services** | bundled with self-hosted server (needs OPENAI_API_KEY + JWT) | cloud only (server OSS deprecated) | ADE connects via HTTPS/cloud ([docs](https://docs.letta.com/guides/ade/overview/)) | none |
|
|
220
|
+
| Self-host status | first-class | supported (docker) | Graphiti yes; Zep server OSS **deprecated** | Docker image **deprecated** ([docs](https://docs.letta.com/guides/docker/)) | SDK only |
|
|
221
|
+
| Cloud pricing | — (self-host) | $19–$249/mo ([pricing](https://mem0.ai/pricing)) | free tier; Flex ~$104/mo | app.letta.com | via LangGraph Platform |
|
|
222
|
+
|
|
223
|
+
*(GitHub stars, 2026-06-10, via API: Mem0 58.3k · Graphiti 27.3k · Letta 23.2k
|
|
224
|
+
· LangMem 1.5k.)*
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Methodology notes & honesty policy
|
|
229
|
+
|
|
230
|
+
- Every external number above links to its primary source; nothing is
|
|
231
|
+
estimated. When sources conflict (Zep×Mem0), both sides are shown.
|
|
232
|
+
- Our runs: Apple M4 (CPU), Logica Mind v0.3.x defaults, hybrid vector+lexical
|
|
233
|
+
search + recency/importance blend + graph-aware boost; dialogue turns
|
|
234
|
+
ingested raw (speaker + session date), answer context = retrieved turns plus
|
|
235
|
+
neighbouring turns (±2 in the zero-LLM runs, ±3 in the full pipeline);
|
|
236
|
+
~$3-4 of gpt-4o-mini for answer+judge per full run.
|
|
237
|
+
- The answerer prompt is part of the system under test (as in every published
|
|
238
|
+
pipeline): the zero-LLM runs used a strict answer-from-memories prompt; the
|
|
239
|
+
full-pipeline run additionally allows stating the reasonable inference the
|
|
240
|
+
memories imply. The judge prompt is identical across all runs.
|
|
241
|
+
- Known limitation we don't hide: with **zero LLM at write time** there is no
|
|
242
|
+
fact distillation at ingestion, so multi-hop/open-domain questions suffer —
|
|
243
|
+
that is the trade those rows sell (free, private, local writes). The **full
|
|
244
|
+
pipeline** rows measure what the optional write-time extraction buys back,
|
|
245
|
+
at 1 LLM call per session instead of per memory.
|
|
246
|
+
- Reproduce everything: `bench/locomo.py` (retrieval, free) and
|
|
247
|
+
`bench/locomo_judge.py` (J score, needs an OpenAI key).
|