8mem 0.1.1__py3-none-any.whl

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 (61) hide show
  1. 8mem-0.1.1.dist-info/METADATA +559 -0
  2. 8mem-0.1.1.dist-info/RECORD +61 -0
  3. 8mem-0.1.1.dist-info/WHEEL +5 -0
  4. 8mem-0.1.1.dist-info/entry_points.txt +2 -0
  5. 8mem-0.1.1.dist-info/licenses/LICENSE +21 -0
  6. 8mem-0.1.1.dist-info/top_level.txt +1 -0
  7. eightmem/__init__.py +4 -0
  8. eightmem/analyzers/__init__.py +0 -0
  9. eightmem/analyzers/extractor.py +258 -0
  10. eightmem/channels/__init__.py +25 -0
  11. eightmem/channels/telegram_adapter.py +339 -0
  12. eightmem/cli/__init__.py +0 -0
  13. eightmem/cli/main.py +4665 -0
  14. eightmem/core/__init__.py +0 -0
  15. eightmem/core/constants.py +19 -0
  16. eightmem/core/context_export.py +32 -0
  17. eightmem/core/env.py +122 -0
  18. eightmem/core/governance.py +404 -0
  19. eightmem/core/heartbeat.py +83 -0
  20. eightmem/core/import_cache.py +41 -0
  21. eightmem/core/ingestion.py +215 -0
  22. eightmem/core/memory_store.py +55 -0
  23. eightmem/core/models.py +55 -0
  24. eightmem/core/notification_decision.py +37 -0
  25. eightmem/core/paths.py +55 -0
  26. eightmem/core/pipeline.py +13 -0
  27. eightmem/core/signal_connectors.py +76 -0
  28. eightmem/core/sqlite_facts.py +487 -0
  29. eightmem/core/templates.py +22 -0
  30. eightmem/importers/__init__.py +0 -0
  31. eightmem/importers/parser.py +68 -0
  32. eightmem/llm/__init__.py +3 -0
  33. eightmem/llm/ollama.py +143 -0
  34. eightmem/mirror/__init__.py +0 -0
  35. eightmem/mirror/summary.py +98 -0
  36. eightmem/resources/__init__.py +1 -0
  37. eightmem/resources/memory_templates/BELIEFS.md +7 -0
  38. eightmem/resources/memory_templates/CORRECTIONS.md +7 -0
  39. eightmem/resources/memory_templates/DECISIONS.md +7 -0
  40. eightmem/resources/memory_templates/EVOLUTION.md +7 -0
  41. eightmem/resources/memory_templates/IDENTITY.md +7 -0
  42. eightmem/resources/memory_templates/PREFERENCES.md +7 -0
  43. eightmem/services/__init__.py +43 -0
  44. eightmem/services/compare_card.py +574 -0
  45. eightmem/services/memory_service.py +3362 -0
  46. eightmem/services/telegram_service.py +1770 -0
  47. eightmem/services/webhook_service.py +221 -0
  48. eightmem/ui/__init__.py +0 -0
  49. eightmem/ui/app.py +1443 -0
  50. eightmem/ui/static/styles.css +22 -0
  51. eightmem/ui/templates/base.html +45 -0
  52. eightmem/ui/templates/chat.html +70 -0
  53. eightmem/ui/templates/dashboard.html +124 -0
  54. eightmem/ui/templates/edit.html +35 -0
  55. eightmem/ui/templates/everywhere.html +22 -0
  56. eightmem/ui/templates/export.html +31 -0
  57. eightmem/ui/templates/files.html +30 -0
  58. eightmem/ui/templates/import.html +53 -0
  59. eightmem/ui/templates/inbox.html +97 -0
  60. eightmem/ui/templates/mirror.html +128 -0
  61. eightmem/ui/templates/overview.html +35 -0
@@ -0,0 +1,559 @@
1
+ Metadata-Version: 2.4
2
+ Name: 8mem
3
+ Version: 0.1.1
4
+ Summary: 8mem: local-first memory layer for AI chats
5
+ Author: 8mem Contributors
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/tempomesh/8mem
8
+ Project-URL: Repository, https://github.com/tempomesh/8mem
9
+ Project-URL: Issues, https://github.com/tempomesh/8mem/issues
10
+ Keywords: ai,memory,telegram,local-first,ollama
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.11
13
+ Classifier: Programming Language :: Python :: 3.12
14
+ Classifier: Programming Language :: Python :: 3.13
15
+ Requires-Python: >=3.11
16
+ Description-Content-Type: text/markdown
17
+ License-File: LICENSE
18
+ Requires-Dist: typer>=0.12.0
19
+ Requires-Dist: fastapi>=0.115.0
20
+ Requires-Dist: uvicorn>=0.30.0
21
+ Requires-Dist: jinja2>=3.1.0
22
+ Requires-Dist: python-multipart>=0.0.9
23
+ Requires-Dist: pillow>=10.0.0
24
+ Requires-Dist: ruamel.yaml>=0.18.0
25
+ Provides-Extra: dev
26
+ Requires-Dist: pytest>=8.2.0; extra == "dev"
27
+ Requires-Dist: httpx>=0.27.0; extra == "dev"
28
+ Provides-Extra: semantic
29
+ Requires-Dist: sqlite-vec>=0.1.9; extra == "semantic"
30
+ Dynamic: license-file
31
+
32
+ # 8mem
33
+
34
+ ![8mem logo](docs/assets/logo.svg)
35
+
36
+ **Personal memory for AI — local-first, readable, portable.**
37
+
38
+ 8mem is a Telegram-first personal memory system that remembers how you like replies, shows what it is using, and lets you correct it when it gets something wrong.
39
+
40
+ It is built for a simple but painful reality: every AI starts from scratch, and people repeat the same context, tone, preferences, and corrections every day.
41
+
42
+ 8mem fixes that with a lightweight local stack:
43
+ - Markdown memory files
44
+ - JSONL event history
45
+ - SQLite structured facts
46
+ - optional `sqlite-vec` semantic retrieval
47
+ - Python memory logic
48
+
49
+ ## 5-minute local quickstart
50
+
51
+ This is the fastest way to try 8mem locally. No cloud API key is required.
52
+
53
+ Today, the real supported runtime path is Ollama local.
54
+
55
+ ### One-line install
56
+
57
+ The Type 1 public beta installer is:
58
+
59
+ ```bash
60
+ curl -fsSL https://8mem.com/install.sh | bash
61
+ ```
62
+
63
+ This public script contains no secrets and does not require GitHub authentication. It downloads a pinned 8mem wheel from `https://8mem.com/app/install/`, verifies its SHA256 checksum, installs it into a local virtual environment, runs setup, then runs `8mem doctor`.
64
+
65
+ When a terminal is available, the installer asks for the Telegram BotFather token, lets the user skip the public HTTPS webhook URL, and then detects OpenClaw. If `~/.openclaw/openclaw.json` is present, it wires the user's OpenClaw agent automatically and prints a receipt of the files changed. If OpenClaw is not present, 8mem remains usable as a standalone Telegram memory bot after `8mem start`.
66
+
67
+ When no terminal is available, such as CI or a strictly non-interactive shell, setup stays safe: it does not prompt, does not mutate OpenClaw files, and prints the follow-up command.
68
+
69
+ For source installs with repo access, use:
70
+
71
+ ```bash
72
+ git clone https://github.com/tempomesh/8mem.git
73
+ cd 8mem
74
+ bash ./install.sh
75
+ ```
76
+
77
+ The installer creates a local 8mem environment, installs the CLI, runs `8mem setup`, runs `8mem doctor`, and prints the exact next command to start the product.
78
+
79
+ If you do not want to run the installer and already have GitHub access configured, source install still works:
80
+
81
+ ```bash
82
+ pip install git+https://github.com/tempomesh/8mem.git
83
+ ```
84
+
85
+ When 8mem is published to PyPI, the intended install command is:
86
+
87
+ ```bash
88
+ pip install 8mem
89
+ ```
90
+
91
+ More install paths:
92
+ - [INSTALL.md](INSTALL.md)
93
+
94
+ Privacy details:
95
+ - [PRIVACY.md](PRIVACY.md)
96
+
97
+ ### 1. Clone and install
98
+
99
+ ```bash
100
+ git clone https://github.com/tempomesh/8mem.git
101
+ cd 8mem
102
+ python3 -m venv .venv
103
+ source .venv/bin/activate
104
+ pip install -e .
105
+ ```
106
+
107
+ ### 2. Start Ollama and pull one model
108
+
109
+ If Ollama is not installed yet, install it from [ollama.com](https://ollama.com).
110
+
111
+ ```bash
112
+ ollama serve
113
+ ```
114
+
115
+ In another terminal:
116
+
117
+ ```bash
118
+ ollama pull qwen2.5:14b
119
+ ```
120
+
121
+ ### 3. Run guided setup
122
+
123
+ ```bash
124
+ 8mem setup --llm-model qwen2.5:14b
125
+ 8mem doctor
126
+ ```
127
+
128
+ `8mem setup` writes local runtime config under `~/.8mem/.env`, creates memory templates, and avoids manual file editing. During setup, users can set up Telegram now, skip Telegram and use the local UI first, or run setup later when they have a BotFather token and public URL. `8mem doctor` verifies runtime files, Telegram config/webhook if present, local model access, and `/v1/context` readiness.
129
+
130
+ ### Optional: semantic retrieval
131
+
132
+ 8mem's truth path does not depend on vector search. Markdown remains user-readable memory, SQLite facts remain active truth, JSONL remains audit truth, and Engram remains runtime export.
133
+
134
+ For larger memory sets, imports, and better related-memory recall, install the optional semantic layer:
135
+
136
+ ```bash
137
+ pip install "8mem[semantic]"
138
+ ```
139
+
140
+ When installed, `sqlite-vec` is used as a local retrieval helper. If it is missing, 8mem keeps working through exact SQLite/Markdown memory.
141
+
142
+ ### Optional: Wire OpenClaw Agent
143
+
144
+ For Type 1 OpenClaw users, this command is also available if you installed non-interactively or want to re-apply the managed OpenClaw block:
145
+
146
+ ```bash
147
+ 8mem setup --mode openclaw
148
+ ```
149
+
150
+ This reads the OpenClaw workspace from `openclaw.json` when available, appends managed 8mem blocks to OpenClaw `AGENTS.md` and `HEARTBEAT.md`, patches `openclaw.json` so Telegram inline buttons are enabled, and restarts `openclaw-gateway` when systemd is available.
151
+
152
+ For a remote primary 8mem runtime, pass the API URL and bearer key:
153
+
154
+ ```bash
155
+ 8mem setup --mode openclaw \
156
+ --eightmem-api-url http://your-8mem-host:8787 \
157
+ --eightmem-api-key your-remote-8mem-key
158
+ ```
159
+
160
+ The setup does not hardcode your bearer key into OpenClaw files. The connected OpenClaw agent reads `EIGHTMEM_OPENCLAW_API_KEY` from `~/.8mem/.env` for remote primary memory, or `EIGHTMEM_LOCAL_API_KEY` for single-machine local installs.
161
+
162
+ To undo the OpenClaw wiring:
163
+
164
+ ```bash
165
+ 8mem uninstall --mode openclaw
166
+ ```
167
+
168
+ ### 4. Initialize and verify the model path
169
+
170
+ ```bash
171
+ 8mem test-ollama --model qwen2.5:14b --no-memory
172
+ ```
173
+
174
+ ### 5. Try the first real memory flow
175
+
176
+ ```bash
177
+ 8mem analyze examples/chat_export_sample.json
178
+ 8mem ask-ollama "What do you know about how I like responses?" --model qwen2.5:14b
179
+ 8mem start
180
+ 8mem status
181
+ ```
182
+
183
+ Then open:
184
+ - `http://127.0.0.1:8787`
185
+ - `http://127.0.0.1:8787/chat`
186
+
187
+ Use `8mem stop` to stop the background server. Use `8mem start --foreground` for foreground debugging.
188
+
189
+ If you installed 8mem as a user systemd service, update with:
190
+
191
+ ```bash
192
+ git pull
193
+ bash ./install.sh
194
+ systemctl --user restart 8mem.service
195
+ 8mem status
196
+ ```
197
+
198
+ Without systemd, update with:
199
+
200
+ ```bash
201
+ git pull
202
+ bash ./install.sh
203
+ 8mem stop
204
+ 8mem start
205
+ 8mem status
206
+ ```
207
+
208
+ If you want the full Telegram-style product flow, keep reading below.
209
+
210
+ ## Why 8mem
211
+
212
+ Most AI memory products have the same problem:
213
+ - you cannot see what the AI knows about you
214
+ - you cannot correct it safely
215
+ - you cannot move that memory between tools
216
+
217
+ 8mem is designed around the opposite principles:
218
+ - **visible**: memory is readable in plain files
219
+ - **correctable**: contradictions are surfaced, not hidden
220
+ - **portable**: memory can be reused across tools
221
+ - **local-first**: your memory stays on your machine
222
+
223
+ ## What 8mem does
224
+
225
+ You talk normally in Telegram. 8mem picks up what matters, stores it, and uses it later.
226
+
227
+ Example:
228
+
229
+ ```text
230
+ You: Keep my work replies concise
231
+ 8mem: I'll keep my work replies concise.
232
+ Saved to memory: Keep my work replies concise.
233
+
234
+ You: Don't use emojis in client messages
235
+ 8mem: I won't use emojis in client messages.
236
+ Saved to memory: Don't use emojis in client messages.
237
+
238
+ You: Reply like me: can we move tomorrow's meeting
239
+ 8mem: Can we move tomorrow's meeting? Share a time that works for you.
240
+ ```
241
+
242
+ You can also ask:
243
+ - `What do you remember about me?`
244
+ - `What are you using right now?`
245
+ - `What changed about me?`
246
+ - `Show me the normal version vs mine`
247
+
248
+ ## Demo
249
+
250
+ ### Passport
251
+
252
+ The clearest artifact in 8mem is `/passport`: a visible summary of the memory it is actively using for you.
253
+
254
+ ![8mem passport demo](docs/assets/8mem_passport_demo.gif)
255
+
256
+ ### Telegram flow
257
+
258
+ ![8mem Telegram demo](docs/assets/8mem_telegram_demo.gif)
259
+
260
+ ## The best product surfaces
261
+
262
+ ### `/passport`
263
+ Shows the memory 8mem is actively using for you.
264
+
265
+ ![8mem trust demo](docs/assets/8mem_trust_demo.gif)
266
+
267
+ ### `/compare`
268
+ Shows a standard answer next to a memory-shaped answer so you can see whether memory is actually improving output.
269
+
270
+ ### `What changed about me?`
271
+ Shows recent memory changes in a human-readable way.
272
+
273
+ These three surfaces make memory visible instead of hidden.
274
+
275
+ ## Product shape today
276
+
277
+ ### Telegram-first
278
+ - natural memory capture
279
+ - memory-aware replies and drafts
280
+ - recall, compare, passport, recent changes
281
+ - contradiction resolution with inline choices
282
+ - undo and reset
283
+
284
+ ### Web UI
285
+ - dashboard
286
+ - mirror
287
+ - files
288
+ - editor
289
+ - inbox
290
+ - export
291
+
292
+ ### Storage and logic
293
+ - `Markdown` for human-readable memory
294
+ - `JSONL` for append-only event history
295
+ - `SQLite` for structured facts and mirrored events
296
+ - optional `sqlite-vec` for local semantic search
297
+ - Python rules for contradiction and trust logic
298
+
299
+ ## Features
300
+
301
+ ### Natural memory capture
302
+ - save obvious preferences without requiring `Remember:`
303
+ - save obvious corrections without requiring `Correct:`
304
+ - still support explicit power-user commands
305
+ - ignore ambiguous statements instead of saving them aggressively
306
+
307
+ ### Memory visibility
308
+ - `What do you remember about me?`
309
+ - `What are you using right now?`
310
+ - `/passport`
311
+ - `What changed about me?`
312
+ - `8mem forget <text>` to remove a saved memory with confirmation
313
+
314
+ ### Memory-aware output
315
+ - `Reply like me: ...`
316
+ - `Draft: ...`
317
+ - `/compare ...`
318
+
319
+ ### Trust and control
320
+ - contradiction detection
321
+ - contradiction resolution
322
+ - undo last memory change
323
+ - reset memory
324
+
325
+ ### Natural routing
326
+ - typo-tolerant recall
327
+ - natural aliases for compare, recall, draft, and memory view
328
+ - onboarding with `/start`, `help`, and `what can you do`
329
+
330
+ ## How it works
331
+
332
+ Short flow:
333
+
334
+ ```text
335
+ User
336
+ -> Telegram
337
+ -> ui/app.py webhook
338
+ -> telegram_service
339
+ -> exact / fuzzy / LLM intent router
340
+ -> memory_service
341
+ -> Markdown + JSONL + SQLite + optional sqlite-vec
342
+ -> response assembly
343
+ -> ui/app.py sender
344
+ -> Telegram
345
+ -> User
346
+ ```
347
+
348
+ ### The architecture
349
+
350
+ | Layer | Component | Responsibility |
351
+ |---|---|---|
352
+ | Interface | Telegram + web UI | Receive input, present output |
353
+ | Routing | `telegram_service.py` | Intent routing, UX shaping |
354
+ | Memory logic | `memory_service.py` | Normalization, recall, compare, trust logic |
355
+ | Storage | Markdown + JSONL + SQLite | Readable memory, event history, structured facts |
356
+ | Retrieval | optional `sqlite-vec` | Semantic memory lookup when installed |
357
+ | Ingestion | `ingestion.py` + `import_cache.py` | Chunking, candidate fact extraction, apply-to-memory flow |
358
+
359
+ ## Install
360
+
361
+ ### Local-only path
362
+
363
+ ```bash
364
+ git clone https://github.com/tempomesh/8mem.git
365
+ cd 8mem
366
+ python3 -m venv .venv
367
+ source .venv/bin/activate
368
+ pip install -e .
369
+ cp .env.example .env
370
+ ```
371
+
372
+ For the supported local setup, you only need:
373
+ - `OLLAMA_BASE_URL`
374
+ - `DEFAULT_LLM_FALLBACK_MODEL`
375
+
376
+ Preferred path:
377
+
378
+ ```bash
379
+ 8mem setup --llm-model qwen2.5:14b
380
+ 8mem doctor
381
+ ```
382
+
383
+ Ignore the cloud-provider placeholders in `.env.example` for now. They are future-facing, not the current public runtime path.
384
+
385
+ ## Quickstart
386
+
387
+ ### Fastest first success
388
+
389
+ ```bash
390
+ 8mem setup --llm-model qwen2.5:14b
391
+ 8mem doctor
392
+ 8mem test-ollama --model qwen2.5:14b --no-memory
393
+ 8mem analyze examples/chat_export_sample.json
394
+ 8mem ask-ollama "What do you know about how I like responses?" --model qwen2.5:14b
395
+ 8mem start
396
+ 8mem status
397
+ ```
398
+
399
+ Open:
400
+ - `http://127.0.0.1:8787`
401
+ - `http://127.0.0.1:8787/chat`
402
+
403
+ ### Import and mirror flow
404
+
405
+ ```bash
406
+ 8mem analyze examples/chat_export_sample.json
407
+ 8mem mirror
408
+ 8mem export-context -o context.txt
409
+ ```
410
+
411
+ ## Telegram examples
412
+
413
+ ### Save a preference
414
+ ```text
415
+ Keep my work replies concise
416
+ ```
417
+
418
+ ### Save a correction
419
+ ```text
420
+ Don't use emojis in client messages
421
+ ```
422
+
423
+ ### Recall
424
+ ```text
425
+ What do you remember about me?
426
+ ```
427
+
428
+ ### Memory view
429
+ ```text
430
+ What are you using right now?
431
+ ```
432
+
433
+ ### Compare
434
+ ```text
435
+ Compare the normal version with mine: answer this client: Can we move the meeting to Friday?
436
+ ```
437
+
438
+ ### Draft in my style
439
+ ```text
440
+ Reply like me: can we move tomorrow's meeting
441
+ ```
442
+
443
+ ### Recent changes
444
+ ```text
445
+ What changed about me?
446
+ ```
447
+
448
+ ## Power-user commands
449
+
450
+ Core commands:
451
+ - `Remember: keep answers concise`
452
+ - `Correct: do not use emojis`
453
+ - `What do you know about me`
454
+ - `Draft: write a founder update in my style`
455
+ - `reset memory`
456
+ - `undo last memory change`
457
+
458
+ Profile and comparison:
459
+ - `/passport`
460
+ - `/compare Draft: write a founder update in my style`
461
+ - `/compare Draft: recommend a laptop in my style`
462
+ - `/compare Reply: answer this client in my style: <paste client message>`
463
+ - `/compare Summarize: summarize this update in my style`
464
+
465
+ ## Memory files
466
+
467
+ Stored in `~/.8mem/memory/`:
468
+
469
+ - `IDENTITY.md`
470
+ - `BELIEFS.md`
471
+ - `PREFERENCES.md`
472
+ - `CORRECTIONS.md`
473
+ - `EVOLUTION.md`
474
+ - `DECISIONS.md`
475
+ - `.memory_events.jsonl`
476
+
477
+ Markdown files remain the readable source of truth.
478
+
479
+ ## Repo structure
480
+
481
+ ```text
482
+ src/eightmem/
483
+ cli/
484
+ core/
485
+ analyzers/
486
+ importers/
487
+ mirror/
488
+ services/
489
+ ui/
490
+ examples/
491
+ tests/
492
+ docs/
493
+ ```
494
+
495
+ ## Screenshots
496
+
497
+ Dashboard
498
+
499
+ ![8mem dashboard](docs/assets/dashboard.png)
500
+
501
+ Memory editor
502
+
503
+ ![8mem memory editor](docs/assets/editor.png)
504
+
505
+ Telegram demo
506
+
507
+ ![8mem demo flow](docs/assets/8mem_telegram_demo.gif)
508
+
509
+ ## Current status
510
+
511
+ - Phase 4 complete
512
+ - Telegram product loop in place
513
+ - `81` tests passing in the latest verified product pass
514
+
515
+ The core loop now includes:
516
+ - natural memory capture
517
+ - recall
518
+ - passport
519
+ - compare
520
+ - recent changes
521
+ - conflict resolution
522
+ - undo
523
+ - reset
524
+ - memory-aware draft/reply
525
+
526
+ ## What makes 8mem different
527
+
528
+ 1. **Readable memory**
529
+ Every memory is a file you can open and verify.
530
+
531
+ 2. **Visible trust**
532
+ You can see what 8mem knows, what it is using, and what changed.
533
+
534
+ 3. **Portable memory**
535
+ Memory is not trapped in one black-box product.
536
+
537
+ 4. **Lightweight architecture**
538
+ No heavy graph stack required to get useful memory behavior.
539
+
540
+ ## Roadmap
541
+
542
+ Near-term:
543
+ - launch cleanup
544
+ - packaging cleanup
545
+ - public repo polish
546
+ - stronger `/passport` sharing story
547
+
548
+ Longer-term:
549
+ - broader import flows
550
+ - richer memory standard / portability story
551
+ - cross-agent memory propagation story
552
+
553
+ ## Contributing
554
+
555
+ PRs are welcome. Keep changes:
556
+ - local-first
557
+ - readable
558
+ - test-backed
559
+ - memory-safe
@@ -0,0 +1,61 @@
1
+ 8mem-0.1.1.dist-info/licenses/LICENSE,sha256=ESYyLizI0WWtxMeS7rGVcX3ivMezm-HOd5WdeOh-9oU,1056
2
+ eightmem/__init__.py,sha256=fymSQ8SY86R5lD0yG76ROe-VrsC1MlTOJYrSkn8C--8,100
3
+ eightmem/analyzers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
+ eightmem/analyzers/extractor.py,sha256=ZZp50qVu00CoQV0OcTL04aZRZGur1zthSiyQVud5dGU,8518
5
+ eightmem/channels/__init__.py,sha256=LE7XNcus7MlFa-DpDfm_XZqghuY-So-umL3OSpObpew,603
6
+ eightmem/channels/telegram_adapter.py,sha256=nhbyB1nBgwVlknIuCZTxYpxkRz8XYxnw7U-64uHj97k,11634
7
+ eightmem/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
+ eightmem/cli/main.py,sha256=sJMpfvUJ5T4QU2APRIn6OSKpe0MykNSAzbGfJNaahjM,200535
9
+ eightmem/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
+ eightmem/core/constants.py,sha256=fLh6tY1I79edSO5--rmRhEgdF_ovWbSG9Hv2ewO_EJM,636
11
+ eightmem/core/context_export.py,sha256=mZekgSzffcbNF4_UkUBm62me331I0D2W8qdAstI9JI8,1238
12
+ eightmem/core/env.py,sha256=UjkIZhwytwO-GLNeKrS9JsAwvO1vXQ8UdlBnyrm1LMo,3982
13
+ eightmem/core/governance.py,sha256=eKrNP_daD5puq18555eK9lh82lWyVauIISfrv6EKC0k,14248
14
+ eightmem/core/heartbeat.py,sha256=O0ShUdZonZ2JOY5CE-wIduRDHusyN9JQiNJYio_sU6g,2778
15
+ eightmem/core/import_cache.py,sha256=aPTNvavTapN9rkBgl6e_HfHvC-uLH3UsJDmzwBm-YaM,1224
16
+ eightmem/core/ingestion.py,sha256=kPQ9ZGTXbB-OScrgJk0PxKPbuZIL8ORRyUgZYoBJ5Fg,7001
17
+ eightmem/core/memory_store.py,sha256=NHvu0R1grA0gIMR-67KNVfX3eGUT_W1xa4M5t3NNQ7I,1809
18
+ eightmem/core/models.py,sha256=uS0ThikXAzLeM2MjDuYBC6RQbOQhxLqv2PaL9msdiHM,1345
19
+ eightmem/core/notification_decision.py,sha256=JFZ9JlcmwXSTHCoB9N2viJdyoCpDaAPomqdxizc3rCc,997
20
+ eightmem/core/paths.py,sha256=AhA-uAF6p3wKX4KILTVWxbzbPeTtARXaxQWiLcoklXY,1221
21
+ eightmem/core/pipeline.py,sha256=x-3O_iIWXfSGTFOz7r50W40BqpfFvcIuz1BSDK8GnZY,446
22
+ eightmem/core/signal_connectors.py,sha256=XGemvmYMb-3CI56NPk6DQqjHYdXwagBzziV4-2a1-SU,2202
23
+ eightmem/core/sqlite_facts.py,sha256=G0LgN05OHQoj_fVgUr_7M4RSvC4pmh26FLfOSwze5Ow,16811
24
+ eightmem/core/templates.py,sha256=ANoRXwzYN3WbYHvM2OIgy_DMX8YVV9sczBOlApkX5ZQ,633
25
+ eightmem/importers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
+ eightmem/importers/parser.py,sha256=5E-GLTwU_Upo-yBZLefY_8uJC1UA312cNHvqHTts8WE,2034
27
+ eightmem/llm/__init__.py,sha256=hDkvnuO3hjuchvmxxwQxIpeemFkYvZXvzPhNQFotAKY,207
28
+ eightmem/llm/ollama.py,sha256=KYKBJcKB-m5MgUgqScn5WTaXsE4vXx3d6iEFMrqbMJs,4190
29
+ eightmem/mirror/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
+ eightmem/mirror/summary.py,sha256=YUOAqeGGdBxBFlZqIy-J2JWSmzNqvewCpgj1Q67m0S8,3847
31
+ eightmem/resources/__init__.py,sha256=MoE9-eYjk3Ua1r9bWQVs6tuk7XcxfqB90wxKc7o76_M,34
32
+ eightmem/resources/memory_templates/BELIEFS.md,sha256=z7h4PXBEeJYxEYO1bd42rvF_2QSW6DuR6_NFNc80_P4,99
33
+ eightmem/resources/memory_templates/CORRECTIONS.md,sha256=NtVMlkoRpc0IWi-4MkUKcy4rh_QHAVjIcmonMkQYwKs,79
34
+ eightmem/resources/memory_templates/DECISIONS.md,sha256=Yq79DUsutnFDv19A3KKxJkak6-AALjCCpeM21ImbgSU,83
35
+ eightmem/resources/memory_templates/EVOLUTION.md,sha256=F_3zBxsm5dhEQhwSJ6bdSQOsbHpAOmIzihIO49ZljOA,78
36
+ eightmem/resources/memory_templates/IDENTITY.md,sha256=bBYy14uz0eKN-YIrLoUVJofaqucovtJWMm_yB3Sw0rE,81
37
+ eightmem/resources/memory_templates/PREFERENCES.md,sha256=qoCA5X9okvsCVdxpt32G5GTCN6Zh2cIQ0zSki5Q_nX8,82
38
+ eightmem/services/__init__.py,sha256=uD0NDl7PcYCkt9ZFpu3OPQ8yKbf4Ho1EsXAFZRGWaSk,1105
39
+ eightmem/services/compare_card.py,sha256=s0SLZNGqzu2XipMGW0vhs_Yq-umv7l2yygFvjuRxglY,21529
40
+ eightmem/services/memory_service.py,sha256=fegIen1GwfdUBRR1q0b12uFFqsUb0y7fErShSb4BFYU,131164
41
+ eightmem/services/telegram_service.py,sha256=Uxk0mgV9ywDWDNZDAaWyAXD9EtRKgGZkvv7TU11Xpmw,67755
42
+ eightmem/services/webhook_service.py,sha256=zAv2sTyfEIZIiZb1omLqJY7wTEgYeE-p_GIdWvqkI88,6995
43
+ eightmem/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
+ eightmem/ui/app.py,sha256=EnU88FrCrs5XsAH9VIemWjvCb6FP5kF0k4ANIaoXQeM,59658
45
+ eightmem/ui/static/styles.css,sha256=agOL5WG9x4qwnD7daW8oO40rcjf9Axq4Onkzq_XLFG0,4238
46
+ eightmem/ui/templates/base.html,sha256=q22xv3epP9vnRxtJei_M3Nqpc5tAxGPRPCMAvqs6Kvs,2615
47
+ eightmem/ui/templates/chat.html,sha256=AYJm_cagKY_OylKOGu6BcIqUPWOkEizllxIdUmBIiD0,2468
48
+ eightmem/ui/templates/dashboard.html,sha256=gBx98qeI9ctWgzFre6oj2ydDtAzdtqqb0R7G7S1yc1Y,3759
49
+ eightmem/ui/templates/edit.html,sha256=UWwllNN1t5e1qBRVp8VktlGrJSWsOHuhoispvyR1Cf8,1119
50
+ eightmem/ui/templates/everywhere.html,sha256=G1JUKTHymHmWWmVoIlwBhX6-jxtmdymNdHklQ2170io,1284
51
+ eightmem/ui/templates/export.html,sha256=DXY8so6U9xdxWWIU2i35hdmrSgzcSvY57Z5F9JW1oTs,1164
52
+ eightmem/ui/templates/files.html,sha256=S4SoiPt7E-kj7sUms1wVBI9Gc-rk7gdaX9sybl3WSXw,854
53
+ eightmem/ui/templates/import.html,sha256=Ivj82RLcvb5SmdFlSgYSKPD4i3941MtsFj1ht_VuY20,1927
54
+ eightmem/ui/templates/inbox.html,sha256=5UuriWnxr-hTjmX8UlfBSe4UvqusZTKEC-QPSBuP-PY,5039
55
+ eightmem/ui/templates/mirror.html,sha256=98XnbaxG5JhDmV24zBzWkjid2_bXqMh2afVJy_JjU04,3790
56
+ eightmem/ui/templates/overview.html,sha256=-5-7mu-zxvw2XB63kmU7uHIS1YUSogiYXtXwaO2yKVI,1328
57
+ 8mem-0.1.1.dist-info/METADATA,sha256=HDXzmhcMCtqBpWRKDNEv1wvPLfKUKmcMI6yn14Zyoqg,14331
58
+ 8mem-0.1.1.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
59
+ 8mem-0.1.1.dist-info/entry_points.txt,sha256=70bpUEGDjHicOFMYhf2ACElBlMSAwOtYbP_5kSt3I_Q,47
60
+ 8mem-0.1.1.dist-info/top_level.txt,sha256=an0-45UPMb5YeIIsTl2ZXJeHmzZR810xZ9fMbN5_HVU,9
61
+ 8mem-0.1.1.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (82.0.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ 8mem = eightmem.cli.main:app
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1 @@
1
+ eightmem
eightmem/__init__.py ADDED
@@ -0,0 +1,4 @@
1
+ """8mem: local-first memory layer for AI chats."""
2
+
3
+ __all__ = ["__version__"]
4
+ __version__ = "0.1.1"
File without changes