ricoeur 0.1.1__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.
- ricoeur-0.1.1/.gitignore +13 -0
- ricoeur-0.1.1/.python-version +1 -0
- ricoeur-0.1.1/PKG-INFO +178 -0
- ricoeur-0.1.1/README.md +138 -0
- ricoeur-0.1.1/pyproject.toml +52 -0
- ricoeur-0.1.1/research/ricoeur-cli.md +797 -0
- ricoeur-0.1.1/src/ricoeur/__init__.py +3 -0
- ricoeur-0.1.1/src/ricoeur/cli.py +379 -0
- ricoeur-0.1.1/src/ricoeur/config.py +135 -0
- ricoeur-0.1.1/src/ricoeur/db.py +134 -0
- ricoeur-0.1.1/src/ricoeur/importers/__init__.py +6 -0
- ricoeur-0.1.1/src/ricoeur/importers/base.py +116 -0
- ricoeur-0.1.1/src/ricoeur/importers/chatgpt.py +215 -0
- ricoeur-0.1.1/src/ricoeur/importers/claude.py +157 -0
- ricoeur-0.1.1/src/ricoeur/search.py +142 -0
- ricoeur-0.1.1/uv.lock +2745 -0
ricoeur-0.1.1/.gitignore
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.10
|
ricoeur-0.1.1/PKG-INFO
ADDED
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ricoeur
|
|
3
|
+
Version: 0.1.1
|
|
4
|
+
Summary: A local-first archive, search, and intelligence engine for your LLM conversation history.
|
|
5
|
+
Requires-Python: >=3.10
|
|
6
|
+
Requires-Dist: click>=8.1
|
|
7
|
+
Requires-Dist: rich>=13.0
|
|
8
|
+
Requires-Dist: tomli-w>=1.0
|
|
9
|
+
Requires-Dist: tomli>=2.0; python_version < '3.11'
|
|
10
|
+
Provides-Extra: all
|
|
11
|
+
Requires-Dist: bertopic>=0.16; extra == 'all'
|
|
12
|
+
Requires-Dist: duckdb>=0.10; extra == 'all'
|
|
13
|
+
Requires-Dist: fastapi>=0.110; extra == 'all'
|
|
14
|
+
Requires-Dist: fasttext-wheel>=0.9; extra == 'all'
|
|
15
|
+
Requires-Dist: mcp>=1.0; extra == 'all'
|
|
16
|
+
Requires-Dist: numpy>=1.24; extra == 'all'
|
|
17
|
+
Requires-Dist: pyarrow>=14.0; extra == 'all'
|
|
18
|
+
Requires-Dist: sentence-transformers>=2.2; extra == 'all'
|
|
19
|
+
Requires-Dist: textual>=0.40; extra == 'all'
|
|
20
|
+
Requires-Dist: uvicorn>=0.27; extra == 'all'
|
|
21
|
+
Provides-Extra: analytics
|
|
22
|
+
Requires-Dist: duckdb>=0.10; extra == 'analytics'
|
|
23
|
+
Requires-Dist: pyarrow>=14.0; extra == 'analytics'
|
|
24
|
+
Provides-Extra: embeddings
|
|
25
|
+
Requires-Dist: numpy>=1.24; extra == 'embeddings'
|
|
26
|
+
Requires-Dist: sentence-transformers>=2.2; extra == 'embeddings'
|
|
27
|
+
Provides-Extra: langdetect
|
|
28
|
+
Requires-Dist: fasttext-wheel>=0.9; extra == 'langdetect'
|
|
29
|
+
Provides-Extra: mcp
|
|
30
|
+
Requires-Dist: mcp>=1.0; extra == 'mcp'
|
|
31
|
+
Provides-Extra: serve
|
|
32
|
+
Requires-Dist: fastapi>=0.110; extra == 'serve'
|
|
33
|
+
Requires-Dist: uvicorn>=0.27; extra == 'serve'
|
|
34
|
+
Provides-Extra: topics
|
|
35
|
+
Requires-Dist: bertopic>=0.16; extra == 'topics'
|
|
36
|
+
Requires-Dist: numpy>=1.24; extra == 'topics'
|
|
37
|
+
Provides-Extra: tui
|
|
38
|
+
Requires-Dist: textual>=0.40; extra == 'tui'
|
|
39
|
+
Description-Content-Type: text/markdown
|
|
40
|
+
|
|
41
|
+
# ricoeur
|
|
42
|
+
|
|
43
|
+
**A local-first archive, search, and intelligence engine for your LLM conversation history.**
|
|
44
|
+
|
|
45
|
+
*Named after Paul Ricoeur, whose work on narrative identity argued that we understand ourselves through the stories we construct from our lived experience. ricoeur reconstructs the narrative of your intellectual life from thousands of AI conversations.*
|
|
46
|
+
|
|
47
|
+
## Quickstart
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# Install with uv
|
|
51
|
+
uv sync
|
|
52
|
+
|
|
53
|
+
# Initialize the database
|
|
54
|
+
uv run ricoeur init
|
|
55
|
+
|
|
56
|
+
# Import your ChatGPT export
|
|
57
|
+
uv run ricoeur import chatgpt ~/Downloads/chatgpt-export/conversations.json
|
|
58
|
+
|
|
59
|
+
# Import your Claude export
|
|
60
|
+
uv run ricoeur import claude ~/Downloads/claude-export/conversations.json
|
|
61
|
+
|
|
62
|
+
# See what you've got
|
|
63
|
+
uv run ricoeur stats
|
|
64
|
+
|
|
65
|
+
# Search your history
|
|
66
|
+
uv run ricoeur search "thermal simulation"
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Commands
|
|
70
|
+
|
|
71
|
+
| Command | Description |
|
|
72
|
+
|---------|-------------|
|
|
73
|
+
| `ricoeur init` | Initialize database and config at `~/.ricoeur/` |
|
|
74
|
+
| `ricoeur import chatgpt <path>` | Import from ChatGPT export (.json or .zip) |
|
|
75
|
+
| `ricoeur import claude <path>` | Import from Claude export (.json or .zip) |
|
|
76
|
+
| `ricoeur search <query>` | Full-text search across all conversations |
|
|
77
|
+
| `ricoeur show <id>` | Display a conversation with formatting |
|
|
78
|
+
| `ricoeur stats` | Analytics dashboard |
|
|
79
|
+
| `ricoeur config show` | Print current configuration |
|
|
80
|
+
| `ricoeur config set <key> <value>` | Update a config value |
|
|
81
|
+
|
|
82
|
+
## Search
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# Basic full-text search
|
|
86
|
+
ricoeur search "streamlit dashboard"
|
|
87
|
+
|
|
88
|
+
# Filter by platform, language, date
|
|
89
|
+
ricoeur search "error fix" --platform chatgpt --lang en
|
|
90
|
+
ricoeur search "strategie marketing" --lang fr --since 2025-01-01
|
|
91
|
+
|
|
92
|
+
# Search only in code blocks
|
|
93
|
+
ricoeur search "import pandas" --code
|
|
94
|
+
|
|
95
|
+
# Output formats: table (default), json, full, ids
|
|
96
|
+
ricoeur search "MCP" --format json
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Import options
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
# Re-import safely (updates existing, adds new, never deletes)
|
|
103
|
+
ricoeur import chatgpt conversations.json --update
|
|
104
|
+
|
|
105
|
+
# Dry run — parse and validate without writing
|
|
106
|
+
ricoeur import chatgpt conversations.json --dry-run
|
|
107
|
+
|
|
108
|
+
# Only import recent conversations
|
|
109
|
+
ricoeur import claude conversations.json --since 2025-01-01
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Optional extras
|
|
113
|
+
|
|
114
|
+
Install additional capabilities as needed:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
# Semantic search with sentence-transformers
|
|
118
|
+
uv sync --extra embeddings
|
|
119
|
+
|
|
120
|
+
# Topic modeling with BERTopic
|
|
121
|
+
uv sync --extra topics
|
|
122
|
+
|
|
123
|
+
# Analytics with DuckDB + Parquet
|
|
124
|
+
uv sync --extra analytics
|
|
125
|
+
|
|
126
|
+
# Terminal UI
|
|
127
|
+
uv sync --extra tui
|
|
128
|
+
|
|
129
|
+
# MCP server for Claude Desktop
|
|
130
|
+
uv sync --extra mcp
|
|
131
|
+
|
|
132
|
+
# Web API server
|
|
133
|
+
uv sync --extra serve
|
|
134
|
+
|
|
135
|
+
# Everything
|
|
136
|
+
uv sync --extra all
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Configuration
|
|
140
|
+
|
|
141
|
+
Config lives at `~/.ricoeur/config.toml`:
|
|
142
|
+
|
|
143
|
+
```toml
|
|
144
|
+
[general]
|
|
145
|
+
home = "~/.ricoeur"
|
|
146
|
+
default_language = "en"
|
|
147
|
+
|
|
148
|
+
[embeddings]
|
|
149
|
+
model = "st:paraphrase-multilingual-mpnet-base-v2"
|
|
150
|
+
batch_size = 64
|
|
151
|
+
device = "auto"
|
|
152
|
+
|
|
153
|
+
[topics]
|
|
154
|
+
min_cluster_size = 15
|
|
155
|
+
n_topics = "auto"
|
|
156
|
+
|
|
157
|
+
[summarize]
|
|
158
|
+
enabled = false
|
|
159
|
+
model = "ollama:llama3.2"
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Override the data directory with the `RICOEUR_HOME` environment variable.
|
|
163
|
+
|
|
164
|
+
## Architecture
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
~/.ricoeur/
|
|
168
|
+
├── config.toml # Configuration
|
|
169
|
+
├── ricoeur.db # SQLite database (FTS5 search)
|
|
170
|
+
├── analytics/ # Parquet files for DuckDB
|
|
171
|
+
├── embeddings/ # Sentence-transformer vectors
|
|
172
|
+
├── models/ # Saved BERTopic models
|
|
173
|
+
└── attachments/ # Extracted files
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## License
|
|
177
|
+
|
|
178
|
+
MIT
|
ricoeur-0.1.1/README.md
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# ricoeur
|
|
2
|
+
|
|
3
|
+
**A local-first archive, search, and intelligence engine for your LLM conversation history.**
|
|
4
|
+
|
|
5
|
+
*Named after Paul Ricoeur, whose work on narrative identity argued that we understand ourselves through the stories we construct from our lived experience. ricoeur reconstructs the narrative of your intellectual life from thousands of AI conversations.*
|
|
6
|
+
|
|
7
|
+
## Quickstart
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Install with uv
|
|
11
|
+
uv sync
|
|
12
|
+
|
|
13
|
+
# Initialize the database
|
|
14
|
+
uv run ricoeur init
|
|
15
|
+
|
|
16
|
+
# Import your ChatGPT export
|
|
17
|
+
uv run ricoeur import chatgpt ~/Downloads/chatgpt-export/conversations.json
|
|
18
|
+
|
|
19
|
+
# Import your Claude export
|
|
20
|
+
uv run ricoeur import claude ~/Downloads/claude-export/conversations.json
|
|
21
|
+
|
|
22
|
+
# See what you've got
|
|
23
|
+
uv run ricoeur stats
|
|
24
|
+
|
|
25
|
+
# Search your history
|
|
26
|
+
uv run ricoeur search "thermal simulation"
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Commands
|
|
30
|
+
|
|
31
|
+
| Command | Description |
|
|
32
|
+
|---------|-------------|
|
|
33
|
+
| `ricoeur init` | Initialize database and config at `~/.ricoeur/` |
|
|
34
|
+
| `ricoeur import chatgpt <path>` | Import from ChatGPT export (.json or .zip) |
|
|
35
|
+
| `ricoeur import claude <path>` | Import from Claude export (.json or .zip) |
|
|
36
|
+
| `ricoeur search <query>` | Full-text search across all conversations |
|
|
37
|
+
| `ricoeur show <id>` | Display a conversation with formatting |
|
|
38
|
+
| `ricoeur stats` | Analytics dashboard |
|
|
39
|
+
| `ricoeur config show` | Print current configuration |
|
|
40
|
+
| `ricoeur config set <key> <value>` | Update a config value |
|
|
41
|
+
|
|
42
|
+
## Search
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# Basic full-text search
|
|
46
|
+
ricoeur search "streamlit dashboard"
|
|
47
|
+
|
|
48
|
+
# Filter by platform, language, date
|
|
49
|
+
ricoeur search "error fix" --platform chatgpt --lang en
|
|
50
|
+
ricoeur search "strategie marketing" --lang fr --since 2025-01-01
|
|
51
|
+
|
|
52
|
+
# Search only in code blocks
|
|
53
|
+
ricoeur search "import pandas" --code
|
|
54
|
+
|
|
55
|
+
# Output formats: table (default), json, full, ids
|
|
56
|
+
ricoeur search "MCP" --format json
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Import options
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# Re-import safely (updates existing, adds new, never deletes)
|
|
63
|
+
ricoeur import chatgpt conversations.json --update
|
|
64
|
+
|
|
65
|
+
# Dry run — parse and validate without writing
|
|
66
|
+
ricoeur import chatgpt conversations.json --dry-run
|
|
67
|
+
|
|
68
|
+
# Only import recent conversations
|
|
69
|
+
ricoeur import claude conversations.json --since 2025-01-01
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Optional extras
|
|
73
|
+
|
|
74
|
+
Install additional capabilities as needed:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# Semantic search with sentence-transformers
|
|
78
|
+
uv sync --extra embeddings
|
|
79
|
+
|
|
80
|
+
# Topic modeling with BERTopic
|
|
81
|
+
uv sync --extra topics
|
|
82
|
+
|
|
83
|
+
# Analytics with DuckDB + Parquet
|
|
84
|
+
uv sync --extra analytics
|
|
85
|
+
|
|
86
|
+
# Terminal UI
|
|
87
|
+
uv sync --extra tui
|
|
88
|
+
|
|
89
|
+
# MCP server for Claude Desktop
|
|
90
|
+
uv sync --extra mcp
|
|
91
|
+
|
|
92
|
+
# Web API server
|
|
93
|
+
uv sync --extra serve
|
|
94
|
+
|
|
95
|
+
# Everything
|
|
96
|
+
uv sync --extra all
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Configuration
|
|
100
|
+
|
|
101
|
+
Config lives at `~/.ricoeur/config.toml`:
|
|
102
|
+
|
|
103
|
+
```toml
|
|
104
|
+
[general]
|
|
105
|
+
home = "~/.ricoeur"
|
|
106
|
+
default_language = "en"
|
|
107
|
+
|
|
108
|
+
[embeddings]
|
|
109
|
+
model = "st:paraphrase-multilingual-mpnet-base-v2"
|
|
110
|
+
batch_size = 64
|
|
111
|
+
device = "auto"
|
|
112
|
+
|
|
113
|
+
[topics]
|
|
114
|
+
min_cluster_size = 15
|
|
115
|
+
n_topics = "auto"
|
|
116
|
+
|
|
117
|
+
[summarize]
|
|
118
|
+
enabled = false
|
|
119
|
+
model = "ollama:llama3.2"
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Override the data directory with the `RICOEUR_HOME` environment variable.
|
|
123
|
+
|
|
124
|
+
## Architecture
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
~/.ricoeur/
|
|
128
|
+
├── config.toml # Configuration
|
|
129
|
+
├── ricoeur.db # SQLite database (FTS5 search)
|
|
130
|
+
├── analytics/ # Parquet files for DuckDB
|
|
131
|
+
├── embeddings/ # Sentence-transformer vectors
|
|
132
|
+
├── models/ # Saved BERTopic models
|
|
133
|
+
└── attachments/ # Extracted files
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## License
|
|
137
|
+
|
|
138
|
+
MIT
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "ricoeur"
|
|
3
|
+
version = "0.1.1"
|
|
4
|
+
description = "A local-first archive, search, and intelligence engine for your LLM conversation history."
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
requires-python = ">=3.10"
|
|
7
|
+
dependencies = [
|
|
8
|
+
"click>=8.1",
|
|
9
|
+
"rich>=13.0",
|
|
10
|
+
"tomli>=2.0; python_version < '3.11'",
|
|
11
|
+
"tomli-w>=1.0",
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
[project.optional-dependencies]
|
|
15
|
+
embeddings = [
|
|
16
|
+
"sentence-transformers>=2.2",
|
|
17
|
+
"numpy>=1.24",
|
|
18
|
+
]
|
|
19
|
+
topics = [
|
|
20
|
+
"bertopic>=0.16",
|
|
21
|
+
"numpy>=1.24",
|
|
22
|
+
]
|
|
23
|
+
analytics = [
|
|
24
|
+
"duckdb>=0.10",
|
|
25
|
+
"pyarrow>=14.0",
|
|
26
|
+
]
|
|
27
|
+
tui = [
|
|
28
|
+
"textual>=0.40",
|
|
29
|
+
]
|
|
30
|
+
mcp = [
|
|
31
|
+
"mcp>=1.0",
|
|
32
|
+
]
|
|
33
|
+
serve = [
|
|
34
|
+
"fastapi>=0.110",
|
|
35
|
+
"uvicorn>=0.27",
|
|
36
|
+
]
|
|
37
|
+
langdetect = [
|
|
38
|
+
"fasttext-wheel>=0.9",
|
|
39
|
+
]
|
|
40
|
+
all = [
|
|
41
|
+
"ricoeur[embeddings,topics,analytics,tui,mcp,serve,langdetect]",
|
|
42
|
+
]
|
|
43
|
+
|
|
44
|
+
[project.scripts]
|
|
45
|
+
ricoeur = "ricoeur.cli:cli"
|
|
46
|
+
|
|
47
|
+
[build-system]
|
|
48
|
+
requires = ["hatchling"]
|
|
49
|
+
build-backend = "hatchling.build"
|
|
50
|
+
|
|
51
|
+
[tool.hatch.build.targets.wheel]
|
|
52
|
+
packages = ["src/ricoeur"]
|