synapt 0.3.0__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.
- synapt-0.3.0/LICENSE +21 -0
- synapt-0.3.0/PKG-INFO +165 -0
- synapt-0.3.0/README.md +133 -0
- synapt-0.3.0/pyproject.toml +42 -0
- synapt-0.3.0/setup.cfg +4 -0
- synapt-0.3.0/src/synapt/__init__.py +3 -0
- synapt-0.3.0/src/synapt/_models/__init__.py +5 -0
- synapt-0.3.0/src/synapt/_models/api_vision.py +354 -0
- synapt-0.3.0/src/synapt/_models/base.py +21 -0
- synapt-0.3.0/src/synapt/_models/mlx_client.py +133 -0
- synapt-0.3.0/src/synapt/_models/ollama_client.py +44 -0
- synapt-0.3.0/src/synapt/_models/transformers_client.py +125 -0
- synapt-0.3.0/src/synapt/cli.py +64 -0
- synapt-0.3.0/src/synapt/plugins.py +90 -0
- synapt-0.3.0/src/synapt/recall/__init__.py +41 -0
- synapt-0.3.0/src/synapt/recall/_llm_util.py +44 -0
- synapt-0.3.0/src/synapt/recall/_model_router.py +155 -0
- synapt-0.3.0/src/synapt/recall/archive.py +374 -0
- synapt-0.3.0/src/synapt/recall/bm25.py +147 -0
- synapt-0.3.0/src/synapt/recall/chatgpt.py +233 -0
- synapt-0.3.0/src/synapt/recall/cli.py +1840 -0
- synapt-0.3.0/src/synapt/recall/clustering.py +609 -0
- synapt-0.3.0/src/synapt/recall/consolidate.py +1062 -0
- synapt-0.3.0/src/synapt/recall/core.py +2709 -0
- synapt-0.3.0/src/synapt/recall/embeddings.py +130 -0
- synapt-0.3.0/src/synapt/recall/enrich.py +558 -0
- synapt-0.3.0/src/synapt/recall/journal.py +482 -0
- synapt-0.3.0/src/synapt/recall/knowledge.py +361 -0
- synapt-0.3.0/src/synapt/recall/live.py +316 -0
- synapt-0.3.0/src/synapt/recall/promotion.py +213 -0
- synapt-0.3.0/src/synapt/recall/reminders.py +169 -0
- synapt-0.3.0/src/synapt/recall/scrub.py +190 -0
- synapt-0.3.0/src/synapt/recall/server.py +1155 -0
- synapt-0.3.0/src/synapt/recall/storage.py +1895 -0
- synapt-0.3.0/src/synapt/recall/tagging.py +118 -0
- synapt-0.3.0/src/synapt/recall/timeline.py +285 -0
- synapt-0.3.0/src/synapt/recall/working_memory.py +116 -0
- synapt-0.3.0/src/synapt/server.py +63 -0
- synapt-0.3.0/src/synapt.egg-info/PKG-INFO +165 -0
- synapt-0.3.0/src/synapt.egg-info/SOURCES.txt +43 -0
- synapt-0.3.0/src/synapt.egg-info/dependency_links.txt +1 -0
- synapt-0.3.0/src/synapt.egg-info/entry_points.txt +4 -0
- synapt-0.3.0/src/synapt.egg-info/requires.txt +25 -0
- synapt-0.3.0/src/synapt.egg-info/top_level.txt +1 -0
- synapt-0.3.0/tests/test_plugins.py +150 -0
synapt-0.3.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Layne Penney
|
|
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.
|
synapt-0.3.0/PKG-INFO
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: synapt
|
|
3
|
+
Version: 0.3.0
|
|
4
|
+
Summary: Persistent conversational memory for AI coding assistants
|
|
5
|
+
Author: Layne Penney
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://synapt.dev
|
|
8
|
+
Project-URL: Repository, https://github.com/laynepenney/synapt
|
|
9
|
+
Requires-Python: >=3.10
|
|
10
|
+
Description-Content-Type: text/markdown
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Provides-Extra: mcp
|
|
13
|
+
Requires-Dist: mcp[cli]>=1.0; extra == "mcp"
|
|
14
|
+
Provides-Extra: embeddings
|
|
15
|
+
Requires-Dist: sentence-transformers>=2.0; extra == "embeddings"
|
|
16
|
+
Provides-Extra: hf
|
|
17
|
+
Requires-Dist: huggingface_hub>=0.20; extra == "hf"
|
|
18
|
+
Provides-Extra: transformers
|
|
19
|
+
Requires-Dist: transformers>=4.30; extra == "transformers"
|
|
20
|
+
Requires-Dist: torch>=2.0; extra == "transformers"
|
|
21
|
+
Provides-Extra: all
|
|
22
|
+
Requires-Dist: mcp[cli]>=1.0; extra == "all"
|
|
23
|
+
Requires-Dist: sentence-transformers>=2.0; extra == "all"
|
|
24
|
+
Requires-Dist: huggingface_hub>=0.20; extra == "all"
|
|
25
|
+
Requires-Dist: transformers>=4.30; extra == "all"
|
|
26
|
+
Requires-Dist: torch>=2.0; extra == "all"
|
|
27
|
+
Provides-Extra: test
|
|
28
|
+
Requires-Dist: pytest>=7.0; extra == "test"
|
|
29
|
+
Requires-Dist: numpy; extra == "test"
|
|
30
|
+
Requires-Dist: pytest-benchmark>=4.0; extra == "test"
|
|
31
|
+
Dynamic: license-file
|
|
32
|
+
|
|
33
|
+
# synapt
|
|
34
|
+
|
|
35
|
+
Persistent conversational memory for AI coding assistants. Synapt indexes your past coding sessions and makes them searchable — so your AI assistant remembers what you worked on, decisions you made, and patterns you established.
|
|
36
|
+
|
|
37
|
+
Works as an [MCP server](https://modelcontextprotocol.io/) for Claude Code and other MCP-compatible tools.
|
|
38
|
+
|
|
39
|
+
## Install
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
pip install synapt
|
|
43
|
+
|
|
44
|
+
# With MCP server support (recommended)
|
|
45
|
+
pip install 'synapt[mcp]'
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Quick start
|
|
49
|
+
|
|
50
|
+
### 1. Build the index
|
|
51
|
+
|
|
52
|
+
Synapt discovers Claude Code transcripts automatically:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
synapt recall build
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 2. Search past sessions
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
synapt recall search "how did we fix the auth bug"
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### 3. Use as an MCP server
|
|
65
|
+
|
|
66
|
+
Add to your Claude Code config (`.mcp.json`):
|
|
67
|
+
|
|
68
|
+
```json
|
|
69
|
+
{
|
|
70
|
+
"mcpServers": {
|
|
71
|
+
"synapt": {
|
|
72
|
+
"type": "stdio",
|
|
73
|
+
"command": "synapt",
|
|
74
|
+
"args": ["server"]
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
This gives your AI assistant 13 tools for searching past sessions, managing a journal, setting reminders, and building a durable knowledge base.
|
|
81
|
+
|
|
82
|
+
## Features
|
|
83
|
+
|
|
84
|
+
- **Transcript indexing** — BM25 full-text search over past coding sessions
|
|
85
|
+
- **Topic clustering** — Jaccard token-overlap clustering groups related chunks
|
|
86
|
+
- **Knowledge consolidation** — Extracts durable knowledge from session journals
|
|
87
|
+
- **Session journal** — Rich entries with focus, decisions, done items, and next steps
|
|
88
|
+
- **Reminders** — Cross-session sticky reminders that surface at session start
|
|
89
|
+
- **Timeline** — Chronological work arcs showing project narrative
|
|
90
|
+
- **LLM enrichment** — Optional LLM-powered summaries and cluster upgrades
|
|
91
|
+
- **Working memory** — Frequency-boosted search results for active topics
|
|
92
|
+
- **Plugin system** — Extend with additional tools via entry-point discovery
|
|
93
|
+
|
|
94
|
+
## MCP tools
|
|
95
|
+
|
|
96
|
+
| Tool | Description |
|
|
97
|
+
|------|-------------|
|
|
98
|
+
| `recall_search` | Search past sessions by query |
|
|
99
|
+
| `recall_context` | Get context for the current session |
|
|
100
|
+
| `recall_files` | Find sessions that touched specific files |
|
|
101
|
+
| `recall_sessions` | List indexed sessions |
|
|
102
|
+
| `recall_timeline` | View chronological work arcs |
|
|
103
|
+
| `recall_build` | Build or rebuild the transcript index |
|
|
104
|
+
| `recall_setup` | Auto-configure hooks and MCP integration |
|
|
105
|
+
| `recall_stats` | Index statistics |
|
|
106
|
+
| `recall_journal` | Write rich session journal entries |
|
|
107
|
+
| `recall_remind` | Set cross-session reminders |
|
|
108
|
+
| `recall_enrich` | LLM-powered chunk summarization |
|
|
109
|
+
| `recall_consolidate` | Extract knowledge from journals |
|
|
110
|
+
| `recall_contradict` | Flag contradictions in knowledge |
|
|
111
|
+
|
|
112
|
+
## CLI reference
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
synapt recall build # Build index (discovers transcripts automatically)
|
|
116
|
+
synapt recall build --incremental # Skip already-indexed files
|
|
117
|
+
synapt recall search "query" # Search past sessions
|
|
118
|
+
synapt recall stats # Show index statistics
|
|
119
|
+
synapt recall journal --write # Write a session journal entry
|
|
120
|
+
synapt recall setup # Auto-configure hooks
|
|
121
|
+
synapt server # Start MCP server
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Optional backends
|
|
125
|
+
|
|
126
|
+
Synapt uses local LLMs for enrichment and summarization. Install optional backends:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
# MLX (Apple Silicon)
|
|
130
|
+
pip install mlx-lm
|
|
131
|
+
|
|
132
|
+
# Ollama
|
|
133
|
+
# Install from https://ollama.com, then:
|
|
134
|
+
ollama pull qwen2.5:3b
|
|
135
|
+
|
|
136
|
+
# Transformers (GPU/CPU)
|
|
137
|
+
pip install 'synapt[transformers]'
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Plugins
|
|
141
|
+
|
|
142
|
+
Synapt discovers plugins via Python entry points. To create a plugin:
|
|
143
|
+
|
|
144
|
+
1. Create a module with a `register_tools(mcp)` function
|
|
145
|
+
2. Register it in your `pyproject.toml`:
|
|
146
|
+
|
|
147
|
+
```toml
|
|
148
|
+
[project.entry-points."synapt.plugins"]
|
|
149
|
+
my_plugin = "my_package.server"
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
The MCP server automatically discovers and loads plugins at startup.
|
|
153
|
+
|
|
154
|
+
## Development
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
git clone https://github.com/laynepenney/synapt.git
|
|
158
|
+
cd synapt
|
|
159
|
+
pip install -e ".[test]"
|
|
160
|
+
pytest tests/ -v
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## License
|
|
164
|
+
|
|
165
|
+
MIT
|
synapt-0.3.0/README.md
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# synapt
|
|
2
|
+
|
|
3
|
+
Persistent conversational memory for AI coding assistants. Synapt indexes your past coding sessions and makes them searchable — so your AI assistant remembers what you worked on, decisions you made, and patterns you established.
|
|
4
|
+
|
|
5
|
+
Works as an [MCP server](https://modelcontextprotocol.io/) for Claude Code and other MCP-compatible tools.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
pip install synapt
|
|
11
|
+
|
|
12
|
+
# With MCP server support (recommended)
|
|
13
|
+
pip install 'synapt[mcp]'
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Quick start
|
|
17
|
+
|
|
18
|
+
### 1. Build the index
|
|
19
|
+
|
|
20
|
+
Synapt discovers Claude Code transcripts automatically:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
synapt recall build
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### 2. Search past sessions
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
synapt recall search "how did we fix the auth bug"
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### 3. Use as an MCP server
|
|
33
|
+
|
|
34
|
+
Add to your Claude Code config (`.mcp.json`):
|
|
35
|
+
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"mcpServers": {
|
|
39
|
+
"synapt": {
|
|
40
|
+
"type": "stdio",
|
|
41
|
+
"command": "synapt",
|
|
42
|
+
"args": ["server"]
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
This gives your AI assistant 13 tools for searching past sessions, managing a journal, setting reminders, and building a durable knowledge base.
|
|
49
|
+
|
|
50
|
+
## Features
|
|
51
|
+
|
|
52
|
+
- **Transcript indexing** — BM25 full-text search over past coding sessions
|
|
53
|
+
- **Topic clustering** — Jaccard token-overlap clustering groups related chunks
|
|
54
|
+
- **Knowledge consolidation** — Extracts durable knowledge from session journals
|
|
55
|
+
- **Session journal** — Rich entries with focus, decisions, done items, and next steps
|
|
56
|
+
- **Reminders** — Cross-session sticky reminders that surface at session start
|
|
57
|
+
- **Timeline** — Chronological work arcs showing project narrative
|
|
58
|
+
- **LLM enrichment** — Optional LLM-powered summaries and cluster upgrades
|
|
59
|
+
- **Working memory** — Frequency-boosted search results for active topics
|
|
60
|
+
- **Plugin system** — Extend with additional tools via entry-point discovery
|
|
61
|
+
|
|
62
|
+
## MCP tools
|
|
63
|
+
|
|
64
|
+
| Tool | Description |
|
|
65
|
+
|------|-------------|
|
|
66
|
+
| `recall_search` | Search past sessions by query |
|
|
67
|
+
| `recall_context` | Get context for the current session |
|
|
68
|
+
| `recall_files` | Find sessions that touched specific files |
|
|
69
|
+
| `recall_sessions` | List indexed sessions |
|
|
70
|
+
| `recall_timeline` | View chronological work arcs |
|
|
71
|
+
| `recall_build` | Build or rebuild the transcript index |
|
|
72
|
+
| `recall_setup` | Auto-configure hooks and MCP integration |
|
|
73
|
+
| `recall_stats` | Index statistics |
|
|
74
|
+
| `recall_journal` | Write rich session journal entries |
|
|
75
|
+
| `recall_remind` | Set cross-session reminders |
|
|
76
|
+
| `recall_enrich` | LLM-powered chunk summarization |
|
|
77
|
+
| `recall_consolidate` | Extract knowledge from journals |
|
|
78
|
+
| `recall_contradict` | Flag contradictions in knowledge |
|
|
79
|
+
|
|
80
|
+
## CLI reference
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
synapt recall build # Build index (discovers transcripts automatically)
|
|
84
|
+
synapt recall build --incremental # Skip already-indexed files
|
|
85
|
+
synapt recall search "query" # Search past sessions
|
|
86
|
+
synapt recall stats # Show index statistics
|
|
87
|
+
synapt recall journal --write # Write a session journal entry
|
|
88
|
+
synapt recall setup # Auto-configure hooks
|
|
89
|
+
synapt server # Start MCP server
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Optional backends
|
|
93
|
+
|
|
94
|
+
Synapt uses local LLMs for enrichment and summarization. Install optional backends:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
# MLX (Apple Silicon)
|
|
98
|
+
pip install mlx-lm
|
|
99
|
+
|
|
100
|
+
# Ollama
|
|
101
|
+
# Install from https://ollama.com, then:
|
|
102
|
+
ollama pull qwen2.5:3b
|
|
103
|
+
|
|
104
|
+
# Transformers (GPU/CPU)
|
|
105
|
+
pip install 'synapt[transformers]'
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Plugins
|
|
109
|
+
|
|
110
|
+
Synapt discovers plugins via Python entry points. To create a plugin:
|
|
111
|
+
|
|
112
|
+
1. Create a module with a `register_tools(mcp)` function
|
|
113
|
+
2. Register it in your `pyproject.toml`:
|
|
114
|
+
|
|
115
|
+
```toml
|
|
116
|
+
[project.entry-points."synapt.plugins"]
|
|
117
|
+
my_plugin = "my_package.server"
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
The MCP server automatically discovers and loads plugins at startup.
|
|
121
|
+
|
|
122
|
+
## Development
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
git clone https://github.com/laynepenney/synapt.git
|
|
126
|
+
cd synapt
|
|
127
|
+
pip install -e ".[test]"
|
|
128
|
+
pytest tests/ -v
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## License
|
|
132
|
+
|
|
133
|
+
MIT
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "synapt"
|
|
7
|
+
version = "0.3.0"
|
|
8
|
+
description = "Persistent conversational memory for AI coding assistants"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = "MIT"
|
|
11
|
+
requires-python = ">=3.10"
|
|
12
|
+
dependencies = []
|
|
13
|
+
authors = [
|
|
14
|
+
{name = "Layne Penney"},
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
[project.urls]
|
|
18
|
+
Homepage = "https://synapt.dev"
|
|
19
|
+
Repository = "https://github.com/laynepenney/synapt"
|
|
20
|
+
|
|
21
|
+
[project.optional-dependencies]
|
|
22
|
+
mcp = ["mcp[cli]>=1.0"]
|
|
23
|
+
embeddings = ["sentence-transformers>=2.0"]
|
|
24
|
+
hf = ["huggingface_hub>=0.20"]
|
|
25
|
+
transformers = ["transformers>=4.30", "torch>=2.0"]
|
|
26
|
+
all = ["mcp[cli]>=1.0", "sentence-transformers>=2.0", "huggingface_hub>=0.20", "transformers>=4.30", "torch>=2.0"]
|
|
27
|
+
test = ["pytest>=7.0", "numpy", "pytest-benchmark>=4.0"]
|
|
28
|
+
|
|
29
|
+
[project.scripts]
|
|
30
|
+
synapt = "synapt.cli:main"
|
|
31
|
+
synapt-recall = "synapt.recall.cli:main"
|
|
32
|
+
synapt-recall-server = "synapt.recall.server:main"
|
|
33
|
+
|
|
34
|
+
[project.entry-points."synapt.plugins"]
|
|
35
|
+
# Plugins register here via their own pyproject.toml. Example:
|
|
36
|
+
# repair = "synapt_repair.server"
|
|
37
|
+
|
|
38
|
+
[tool.pytest.ini_options]
|
|
39
|
+
addopts = "--benchmark-disable"
|
|
40
|
+
|
|
41
|
+
[tool.setuptools.packages.find]
|
|
42
|
+
where = ["src"]
|
synapt-0.3.0/setup.cfg
ADDED