remdb 0.3.141__py3-none-any.whl → 0.3.163__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.
Potentially problematic release.
This version of remdb might be problematic. Click here for more details.
- rem/agentic/agents/__init__.py +16 -0
- rem/agentic/agents/agent_manager.py +310 -0
- rem/agentic/context.py +81 -3
- rem/agentic/context_builder.py +18 -3
- rem/api/deps.py +3 -5
- rem/api/main.py +22 -3
- rem/api/mcp_router/server.py +2 -0
- rem/api/mcp_router/tools.py +90 -0
- rem/api/middleware/tracking.py +5 -5
- rem/api/routers/auth.py +346 -5
- rem/api/routers/chat/completions.py +4 -2
- rem/api/routers/chat/streaming.py +77 -22
- rem/api/routers/messages.py +24 -15
- rem/auth/__init__.py +13 -3
- rem/auth/jwt.py +352 -0
- rem/auth/middleware.py +108 -6
- rem/auth/providers/__init__.py +4 -1
- rem/auth/providers/email.py +215 -0
- rem/cli/commands/experiments.py +32 -46
- rem/models/core/experiment.py +4 -14
- rem/models/entities/__init__.py +4 -0
- rem/models/entities/subscriber.py +175 -0
- rem/models/entities/user.py +1 -0
- rem/schemas/agents/core/agent-builder.yaml +134 -0
- rem/services/__init__.py +3 -1
- rem/services/content/service.py +4 -3
- rem/services/email/__init__.py +10 -0
- rem/services/email/service.py +511 -0
- rem/services/email/templates.py +360 -0
- rem/services/postgres/README.md +38 -0
- rem/services/postgres/diff_service.py +19 -3
- rem/services/postgres/pydantic_to_sqlalchemy.py +45 -13
- rem/services/postgres/repository.py +5 -4
- rem/services/session/compression.py +113 -50
- rem/services/session/reload.py +14 -7
- rem/services/user_service.py +29 -0
- rem/settings.py +199 -4
- rem/sql/migrations/005_schema_update.sql +145 -0
- rem/utils/README.md +45 -0
- rem/utils/files.py +157 -1
- {remdb-0.3.141.dist-info → remdb-0.3.163.dist-info}/METADATA +7 -5
- {remdb-0.3.141.dist-info → remdb-0.3.163.dist-info}/RECORD +44 -35
- {remdb-0.3.141.dist-info → remdb-0.3.163.dist-info}/WHEEL +0 -0
- {remdb-0.3.141.dist-info → remdb-0.3.163.dist-info}/entry_points.txt +0 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
-- Migration: schema_update
|
|
2
|
+
-- Generated by: rem db diff --generate
|
|
3
|
+
-- Changes detected: 139
|
|
4
|
+
--
|
|
5
|
+
-- Review this file before applying!
|
|
6
|
+
-- Apply with: rem db migrate
|
|
7
|
+
--
|
|
8
|
+
|
|
9
|
+
CREATE TABLE IF NOT EXISTS patient_profiles (
|
|
10
|
+
id UUID NOT NULL,
|
|
11
|
+
tenant_id VARCHAR(100) NOT NULL,
|
|
12
|
+
user_id VARCHAR(256),
|
|
13
|
+
patient_ref VARCHAR(256) NOT NULL,
|
|
14
|
+
clinician_ref VARCHAR(256),
|
|
15
|
+
evaluation_type TEXT,
|
|
16
|
+
evaluation_date DATE,
|
|
17
|
+
session_ref VARCHAR(256),
|
|
18
|
+
risk_level TEXT,
|
|
19
|
+
suicidality TEXT,
|
|
20
|
+
suicidality_details VARCHAR(256),
|
|
21
|
+
homicidal_ideation BOOLEAN,
|
|
22
|
+
homicidal_details VARCHAR(256),
|
|
23
|
+
self_harm_current BOOLEAN,
|
|
24
|
+
self_harm_history BOOLEAN,
|
|
25
|
+
suicide_attempts_lifetime INTEGER,
|
|
26
|
+
suicide_attempt_most_recent VARCHAR(256),
|
|
27
|
+
safety_plan_in_place BOOLEAN,
|
|
28
|
+
safety_plan_date DATE,
|
|
29
|
+
appearance VARCHAR(256),
|
|
30
|
+
behavior VARCHAR(256),
|
|
31
|
+
speech VARCHAR(256),
|
|
32
|
+
mood_states JSONB,
|
|
33
|
+
mood_description TEXT,
|
|
34
|
+
affect_quality TEXT,
|
|
35
|
+
affect_congruent BOOLEAN,
|
|
36
|
+
thought_process TEXT,
|
|
37
|
+
delusions_present BOOLEAN,
|
|
38
|
+
delusion_types TEXT[],
|
|
39
|
+
hallucinations_present BOOLEAN,
|
|
40
|
+
hallucination_types TEXT[],
|
|
41
|
+
command_hallucinations BOOLEAN,
|
|
42
|
+
oriented BOOLEAN,
|
|
43
|
+
orientation_deficits TEXT[],
|
|
44
|
+
memory_intact BOOLEAN,
|
|
45
|
+
attention_intact BOOLEAN,
|
|
46
|
+
insight TEXT,
|
|
47
|
+
judgment TEXT,
|
|
48
|
+
symptoms JSONB,
|
|
49
|
+
chief_complaint VARCHAR(256),
|
|
50
|
+
symptom_duration VARCHAR(256),
|
|
51
|
+
symptom_trajectory VARCHAR(256),
|
|
52
|
+
precipitating_factors TEXT[],
|
|
53
|
+
substance_use_profiles JSONB,
|
|
54
|
+
substance_use_summary TEXT,
|
|
55
|
+
in_recovery BOOLEAN,
|
|
56
|
+
recovery_duration VARCHAR(256),
|
|
57
|
+
mat_current BOOLEAN,
|
|
58
|
+
diagnoses_current TEXT[],
|
|
59
|
+
diagnoses_historical TEXT[],
|
|
60
|
+
first_psychiatric_contact_age INTEGER,
|
|
61
|
+
hospitalizations_psychiatric INTEGER,
|
|
62
|
+
last_hospitalization VARCHAR(256),
|
|
63
|
+
ect_history BOOLEAN,
|
|
64
|
+
therapy_history VARCHAR(256),
|
|
65
|
+
family_psychiatric_history VARCHAR(256),
|
|
66
|
+
current_medications JSONB,
|
|
67
|
+
other_medications TEXT[],
|
|
68
|
+
allergies TEXT[],
|
|
69
|
+
current_therapist BOOLEAN,
|
|
70
|
+
therapy_type VARCHAR(256),
|
|
71
|
+
therapy_frequency VARCHAR(256),
|
|
72
|
+
other_providers TEXT[],
|
|
73
|
+
functioning JSONB,
|
|
74
|
+
social_determinants JSONB,
|
|
75
|
+
cgi_severity TEXT,
|
|
76
|
+
cgi_improvement TEXT,
|
|
77
|
+
gaf_equivalent INTEGER,
|
|
78
|
+
clinical_impression VARCHAR(256),
|
|
79
|
+
differential_diagnoses TEXT[],
|
|
80
|
+
treatment_plan VARCHAR(256),
|
|
81
|
+
treatment_goals TEXT[],
|
|
82
|
+
barriers_to_treatment TEXT[],
|
|
83
|
+
strengths TEXT[],
|
|
84
|
+
follow_up_recommended BOOLEAN,
|
|
85
|
+
follow_up_urgency VARCHAR(256),
|
|
86
|
+
follow_up_interval VARCHAR(256),
|
|
87
|
+
referrals TEXT[],
|
|
88
|
+
labs_ordered TEXT[],
|
|
89
|
+
data_source VARCHAR(256),
|
|
90
|
+
confidence_score FLOAT,
|
|
91
|
+
reviewed_by_clinician BOOLEAN,
|
|
92
|
+
notes VARCHAR(256),
|
|
93
|
+
created_at TIMESTAMP WITHOUT TIME ZONE,
|
|
94
|
+
updated_at TIMESTAMP WITHOUT TIME ZONE,
|
|
95
|
+
deleted_at TIMESTAMP WITHOUT TIME ZONE,
|
|
96
|
+
graph_edges JSONB,
|
|
97
|
+
metadata JSONB,
|
|
98
|
+
tags TEXT[]
|
|
99
|
+
);
|
|
100
|
+
-- Changes to table: patient_profiles
|
|
101
|
+
CREATE INDEX IF NOT EXISTS idx_patient_profiles_graph_edges ON patient_profiles (graph_edges);
|
|
102
|
+
CREATE INDEX IF NOT EXISTS idx_patient_profiles_metadata ON patient_profiles (metadata);
|
|
103
|
+
CREATE INDEX IF NOT EXISTS idx_patient_profiles_tags ON patient_profiles (tags);
|
|
104
|
+
CREATE INDEX IF NOT EXISTS idx_patient_profiles_tenant ON patient_profiles (tenant_id);
|
|
105
|
+
CREATE INDEX IF NOT EXISTS idx_patient_profiles_user ON patient_profiles (user_id);
|
|
106
|
+
CREATE TABLE IF NOT EXISTS subscribers (
|
|
107
|
+
id UUID NOT NULL,
|
|
108
|
+
tenant_id VARCHAR(100) NOT NULL,
|
|
109
|
+
user_id VARCHAR(256),
|
|
110
|
+
email TEXT NOT NULL,
|
|
111
|
+
name VARCHAR(256),
|
|
112
|
+
comment TEXT,
|
|
113
|
+
status TEXT,
|
|
114
|
+
origin TEXT,
|
|
115
|
+
origin_detail VARCHAR(256),
|
|
116
|
+
subscribed_at TIMESTAMP WITHOUT TIME ZONE,
|
|
117
|
+
unsubscribed_at TIMESTAMP WITHOUT TIME ZONE,
|
|
118
|
+
ip_address VARCHAR(256),
|
|
119
|
+
user_agent VARCHAR(256),
|
|
120
|
+
created_at TIMESTAMP WITHOUT TIME ZONE,
|
|
121
|
+
updated_at TIMESTAMP WITHOUT TIME ZONE,
|
|
122
|
+
deleted_at TIMESTAMP WITHOUT TIME ZONE,
|
|
123
|
+
graph_edges JSONB,
|
|
124
|
+
metadata JSONB,
|
|
125
|
+
tags TEXT[]
|
|
126
|
+
);
|
|
127
|
+
-- Changes to table: subscribers
|
|
128
|
+
CREATE INDEX IF NOT EXISTS idx_subscribers_graph_edges ON subscribers (graph_edges);
|
|
129
|
+
CREATE INDEX IF NOT EXISTS idx_subscribers_metadata ON subscribers (metadata);
|
|
130
|
+
CREATE INDEX IF NOT EXISTS idx_subscribers_tags ON subscribers (tags);
|
|
131
|
+
CREATE INDEX IF NOT EXISTS idx_subscribers_tenant ON subscribers (tenant_id);
|
|
132
|
+
CREATE INDEX IF NOT EXISTS idx_subscribers_user ON subscribers (user_id);
|
|
133
|
+
CREATE TABLE IF NOT EXISTS embeddings_patient_profiles (
|
|
134
|
+
id UUID NOT NULL,
|
|
135
|
+
entity_id UUID NOT NULL,
|
|
136
|
+
field_name VARCHAR(100) NOT NULL,
|
|
137
|
+
provider VARCHAR(50) NOT NULL,
|
|
138
|
+
model VARCHAR(100) NOT NULL,
|
|
139
|
+
embedding FLOAT[] NOT NULL,
|
|
140
|
+
created_at TIMESTAMP WITHOUT TIME ZONE,
|
|
141
|
+
updated_at TIMESTAMP WITHOUT TIME ZONE
|
|
142
|
+
);
|
|
143
|
+
-- Changes to table: embeddings_patient_profiles
|
|
144
|
+
CREATE INDEX IF NOT EXISTS idx_embeddings_patient_profiles_entity ON embeddings_patient_profiles (entity_id);
|
|
145
|
+
CREATE INDEX IF NOT EXISTS idx_embeddings_patient_profiles_field_provider ON embeddings_patient_profiles (field_name, provider);
|
rem/utils/README.md
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
1. [SQL Types](#sql-types-sql_typespy) - Pydantic to PostgreSQL type mapping
|
|
6
6
|
2. [Embeddings](#embeddings-embeddingspy) - Vector embeddings generation
|
|
7
|
+
3. [Files](#files-filespy) - File utilities and DataFrame I/O
|
|
7
8
|
|
|
8
9
|
## SQL Types (`sql_types.py`)
|
|
9
10
|
|
|
@@ -581,3 +582,47 @@ This will demonstrate:
|
|
|
581
582
|
- `sql_types.py` - Use `embedding_provider` in json_schema_extra for TEXT fields
|
|
582
583
|
- OpenAI Embeddings API: https://platform.openai.com/docs/api-reference/embeddings
|
|
583
584
|
- pgvector Documentation: https://github.com/pgvector/pgvector
|
|
585
|
+
|
|
586
|
+
---
|
|
587
|
+
|
|
588
|
+
## Files (`files.py`)
|
|
589
|
+
|
|
590
|
+
File utilities including temporary file handling and DataFrame I/O with automatic format detection.
|
|
591
|
+
|
|
592
|
+
### DataFrame I/O
|
|
593
|
+
|
|
594
|
+
Read and write DataFrames with format auto-detected from file extension:
|
|
595
|
+
|
|
596
|
+
```python
|
|
597
|
+
from rem.utils.files import read_dataframe, write_dataframe
|
|
598
|
+
|
|
599
|
+
# Read - format inferred from extension
|
|
600
|
+
df = read_dataframe("data.csv")
|
|
601
|
+
df = read_dataframe("data.parquet")
|
|
602
|
+
df = read_dataframe("data.xlsx")
|
|
603
|
+
|
|
604
|
+
# Read from bytes (e.g., from S3)
|
|
605
|
+
df = read_dataframe(content_bytes, filename="data.csv")
|
|
606
|
+
|
|
607
|
+
# Write - format inferred from extension
|
|
608
|
+
write_dataframe(df, "output.parquet")
|
|
609
|
+
```
|
|
610
|
+
|
|
611
|
+
**Supported formats**: `.csv`, `.tsv`, `.parquet`, `.json`, `.jsonl`, `.avro`, `.xlsx`, `.xls`, `.ods`, `.ipc`, `.arrow`, `.feather`
|
|
612
|
+
|
|
613
|
+
Note: Some formats require optional dependencies (e.g., `fastexcel` for Excel).
|
|
614
|
+
|
|
615
|
+
### Temporary File Utilities
|
|
616
|
+
|
|
617
|
+
```python
|
|
618
|
+
from rem.utils.files import temp_file_from_bytes, temp_directory
|
|
619
|
+
|
|
620
|
+
# Create temp file from bytes, auto-cleanup
|
|
621
|
+
with temp_file_from_bytes(pdf_bytes, suffix=".pdf") as tmp_path:
|
|
622
|
+
result = process_pdf(tmp_path)
|
|
623
|
+
|
|
624
|
+
# Create temp directory, auto-cleanup
|
|
625
|
+
with temp_directory() as tmp_dir:
|
|
626
|
+
# Work with files in tmp_dir
|
|
627
|
+
pass
|
|
628
|
+
```
|
rem/utils/files.py
CHANGED
|
@@ -3,13 +3,18 @@ File utilities for consistent file handling throughout REM.
|
|
|
3
3
|
|
|
4
4
|
Provides context managers and helpers for temporary file operations,
|
|
5
5
|
ensuring proper cleanup and consistent patterns.
|
|
6
|
+
|
|
7
|
+
Also provides DataFrame I/O utilities using Polars with automatic
|
|
8
|
+
format detection based on file extension.
|
|
6
9
|
"""
|
|
7
10
|
|
|
8
11
|
import tempfile
|
|
9
12
|
from contextlib import contextmanager
|
|
13
|
+
from io import BytesIO
|
|
10
14
|
from pathlib import Path
|
|
11
|
-
from typing import Generator, Optional
|
|
15
|
+
from typing import Generator, Optional, Union
|
|
12
16
|
|
|
17
|
+
import polars as pl
|
|
13
18
|
from loguru import logger
|
|
14
19
|
|
|
15
20
|
|
|
@@ -165,3 +170,154 @@ def safe_delete(path: Path) -> bool:
|
|
|
165
170
|
except Exception as e:
|
|
166
171
|
logger.warning(f"Failed to delete {path}: {e}")
|
|
167
172
|
return False
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
# Extension to Polars reader mapping
|
|
176
|
+
_EXTENSION_READERS = {
|
|
177
|
+
".csv": pl.read_csv,
|
|
178
|
+
".tsv": lambda p, **kw: pl.read_csv(p, separator="\t", **kw),
|
|
179
|
+
".parquet": pl.read_parquet,
|
|
180
|
+
".pq": pl.read_parquet,
|
|
181
|
+
".json": pl.read_json,
|
|
182
|
+
".jsonl": pl.read_ndjson,
|
|
183
|
+
".ndjson": pl.read_ndjson,
|
|
184
|
+
".avro": pl.read_avro,
|
|
185
|
+
".xlsx": pl.read_excel,
|
|
186
|
+
".xls": pl.read_excel,
|
|
187
|
+
".ods": pl.read_ods,
|
|
188
|
+
".ipc": pl.read_ipc,
|
|
189
|
+
".arrow": pl.read_ipc,
|
|
190
|
+
".feather": pl.read_ipc,
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
# Extension to Polars writer mapping
|
|
194
|
+
_EXTENSION_WRITERS = {
|
|
195
|
+
".csv": "write_csv",
|
|
196
|
+
".tsv": "write_csv", # with separator="\t"
|
|
197
|
+
".parquet": "write_parquet",
|
|
198
|
+
".pq": "write_parquet",
|
|
199
|
+
".json": "write_json",
|
|
200
|
+
".jsonl": "write_ndjson",
|
|
201
|
+
".ndjson": "write_ndjson",
|
|
202
|
+
".avro": "write_avro",
|
|
203
|
+
".xlsx": "write_excel",
|
|
204
|
+
".ipc": "write_ipc",
|
|
205
|
+
".arrow": "write_ipc",
|
|
206
|
+
".feather": "write_ipc",
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
def read_dataframe(
|
|
211
|
+
source: Union[str, Path, bytes],
|
|
212
|
+
filename: Optional[str] = None,
|
|
213
|
+
**kwargs,
|
|
214
|
+
) -> pl.DataFrame:
|
|
215
|
+
"""
|
|
216
|
+
Read a DataFrame from a file, inferring format from extension.
|
|
217
|
+
|
|
218
|
+
Supports all Polars-compatible formats:
|
|
219
|
+
- CSV (.csv), TSV (.tsv)
|
|
220
|
+
- Parquet (.parquet, .pq)
|
|
221
|
+
- JSON (.json), JSONL/NDJSON (.jsonl, .ndjson)
|
|
222
|
+
- Avro (.avro)
|
|
223
|
+
- Excel (.xlsx, .xls)
|
|
224
|
+
- OpenDocument (.ods)
|
|
225
|
+
- Arrow IPC (.ipc, .arrow, .feather)
|
|
226
|
+
|
|
227
|
+
Args:
|
|
228
|
+
source: File path (str/Path) or bytes content
|
|
229
|
+
filename: Required when source is bytes, to determine format
|
|
230
|
+
**kwargs: Additional arguments passed to the Polars reader
|
|
231
|
+
|
|
232
|
+
Returns:
|
|
233
|
+
Polars DataFrame
|
|
234
|
+
|
|
235
|
+
Raises:
|
|
236
|
+
ValueError: If format cannot be determined or is unsupported
|
|
237
|
+
|
|
238
|
+
Examples:
|
|
239
|
+
>>> df = read_dataframe("data.csv")
|
|
240
|
+
>>> df = read_dataframe("data.parquet")
|
|
241
|
+
>>> df = read_dataframe(csv_bytes, filename="data.csv")
|
|
242
|
+
"""
|
|
243
|
+
# Determine the file extension
|
|
244
|
+
if isinstance(source, bytes):
|
|
245
|
+
if not filename:
|
|
246
|
+
raise ValueError("filename is required when source is bytes")
|
|
247
|
+
ext = Path(filename).suffix.lower()
|
|
248
|
+
# For bytes, we need to wrap in BytesIO
|
|
249
|
+
file_like = BytesIO(source)
|
|
250
|
+
else:
|
|
251
|
+
path = Path(source)
|
|
252
|
+
ext = path.suffix.lower()
|
|
253
|
+
file_like = path
|
|
254
|
+
|
|
255
|
+
# Get the appropriate reader
|
|
256
|
+
reader = _EXTENSION_READERS.get(ext)
|
|
257
|
+
if reader is None:
|
|
258
|
+
supported = ", ".join(sorted(_EXTENSION_READERS.keys()))
|
|
259
|
+
raise ValueError(
|
|
260
|
+
f"Unsupported file format: {ext}. "
|
|
261
|
+
f"Supported formats: {supported}"
|
|
262
|
+
)
|
|
263
|
+
|
|
264
|
+
try:
|
|
265
|
+
return reader(file_like, **kwargs)
|
|
266
|
+
except Exception as e:
|
|
267
|
+
logger.error(f"Failed to read DataFrame from {ext} format: {e}")
|
|
268
|
+
raise
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
def write_dataframe(
|
|
272
|
+
df: pl.DataFrame,
|
|
273
|
+
dest: Union[str, Path],
|
|
274
|
+
**kwargs,
|
|
275
|
+
) -> None:
|
|
276
|
+
"""
|
|
277
|
+
Write a DataFrame to a file, inferring format from extension.
|
|
278
|
+
|
|
279
|
+
Supports most Polars-writable formats:
|
|
280
|
+
- CSV (.csv), TSV (.tsv)
|
|
281
|
+
- Parquet (.parquet, .pq)
|
|
282
|
+
- JSON (.json), JSONL/NDJSON (.jsonl, .ndjson)
|
|
283
|
+
- Avro (.avro)
|
|
284
|
+
- Excel (.xlsx)
|
|
285
|
+
- Arrow IPC (.ipc, .arrow, .feather)
|
|
286
|
+
|
|
287
|
+
Args:
|
|
288
|
+
df: Polars DataFrame to write
|
|
289
|
+
dest: Destination file path
|
|
290
|
+
**kwargs: Additional arguments passed to the Polars writer
|
|
291
|
+
|
|
292
|
+
Raises:
|
|
293
|
+
ValueError: If format cannot be determined or is unsupported
|
|
294
|
+
|
|
295
|
+
Examples:
|
|
296
|
+
>>> write_dataframe(df, "output.csv")
|
|
297
|
+
>>> write_dataframe(df, "output.parquet")
|
|
298
|
+
>>> write_dataframe(df, "output.jsonl")
|
|
299
|
+
"""
|
|
300
|
+
path = Path(dest)
|
|
301
|
+
ext = path.suffix.lower()
|
|
302
|
+
|
|
303
|
+
writer_method = _EXTENSION_WRITERS.get(ext)
|
|
304
|
+
if writer_method is None:
|
|
305
|
+
supported = ", ".join(sorted(_EXTENSION_WRITERS.keys()))
|
|
306
|
+
raise ValueError(
|
|
307
|
+
f"Unsupported file format for writing: {ext}. "
|
|
308
|
+
f"Supported formats: {supported}"
|
|
309
|
+
)
|
|
310
|
+
|
|
311
|
+
# Ensure parent directory exists
|
|
312
|
+
ensure_parent_exists(path)
|
|
313
|
+
|
|
314
|
+
# Handle TSV special case
|
|
315
|
+
if ext == ".tsv":
|
|
316
|
+
kwargs.setdefault("separator", "\t")
|
|
317
|
+
|
|
318
|
+
try:
|
|
319
|
+
writer = getattr(df, writer_method)
|
|
320
|
+
writer(path, **kwargs)
|
|
321
|
+
except Exception as e:
|
|
322
|
+
logger.error(f"Failed to write DataFrame to {ext} format: {e}")
|
|
323
|
+
raise
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: remdb
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.163
|
|
4
4
|
Summary: Resources Entities Moments - Bio-inspired memory system for agentic AI workloads
|
|
5
5
|
Project-URL: Homepage, https://github.com/Percolation-Labs/reminiscent
|
|
6
6
|
Project-URL: Documentation, https://github.com/Percolation-Labs/reminiscent/blob/main/README.md
|
|
@@ -12,9 +12,11 @@ Keywords: agents,ai,mcp,memory,postgresql,vector-search
|
|
|
12
12
|
Classifier: Development Status :: 3 - Alpha
|
|
13
13
|
Classifier: Intended Audience :: Developers
|
|
14
14
|
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
16
|
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
16
18
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
17
|
-
Requires-Python: <3.
|
|
19
|
+
Requires-Python: <3.14,>=3.11
|
|
18
20
|
Requires-Dist: aioboto3>=13.0.0
|
|
19
21
|
Requires-Dist: arize-phoenix>=5.0.0
|
|
20
22
|
Requires-Dist: asyncpg>=0.30.0
|
|
@@ -143,9 +145,9 @@ pip install "remdb[all]"
|
|
|
143
145
|
git clone https://github.com/Percolation-Labs/remstack-lab.git
|
|
144
146
|
cd remstack-lab
|
|
145
147
|
|
|
146
|
-
# Start PostgreSQL
|
|
148
|
+
# Start services (PostgreSQL, Phoenix observability)
|
|
147
149
|
curl -O https://gist.githubusercontent.com/percolating-sirsh/d117b673bc0edfdef1a5068ccd3cf3e5/raw/docker-compose.prebuilt.yml
|
|
148
|
-
docker compose -f docker-compose.prebuilt.yml up -d
|
|
150
|
+
docker compose -f docker-compose.prebuilt.yml up -d
|
|
149
151
|
|
|
150
152
|
# Configure REM (creates ~/.rem/config.yaml and installs database schema)
|
|
151
153
|
# Add --claude-desktop to register with Claude Desktop app
|
|
@@ -177,7 +179,7 @@ rem ask "What is the Bitcoin whitepaper about?"
|
|
|
177
179
|
Once configured, you can also use the OpenAI-compatible chat completions API:
|
|
178
180
|
|
|
179
181
|
```bash
|
|
180
|
-
# Start
|
|
182
|
+
# Start all services (PostgreSQL, Phoenix, API)
|
|
181
183
|
docker compose -f docker-compose.prebuilt.yml up -d
|
|
182
184
|
|
|
183
185
|
# Test the API
|
|
@@ -3,18 +3,19 @@ rem/config.py,sha256=cyXFpqgTvHeYeIriiQHGC1jSokp55BkJtMS1cVu-C1M,6769
|
|
|
3
3
|
rem/mcp_server.py,sha256=OK0XaO2k_7BnVRozOfH_xRL51SkRN9kLoNNp_zrrGeA,1383
|
|
4
4
|
rem/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
5
|
rem/registry.py,sha256=AAGcr7oRHiHsX2mu7TL4EgKw39IFea8F-YIgbX58CUM,10545
|
|
6
|
-
rem/settings.py,sha256=
|
|
6
|
+
rem/settings.py,sha256=9K96yevvHHFeC6JfaSjTdXTWg4SBcAb5_eIJD_swc5I,59863
|
|
7
7
|
rem/agentic/README.md,sha256=brF1Z1V6s8z5TLoyNPQ3BC5mqDy648QRPOQmGu6Jkzw,21815
|
|
8
8
|
rem/agentic/__init__.py,sha256=-UZiEYpodfD5xDns6L0nYSqK9owr3NxiWsq6vmK1tGk,1268
|
|
9
|
-
rem/agentic/context.py,sha256=
|
|
10
|
-
rem/agentic/context_builder.py,sha256=
|
|
9
|
+
rem/agentic/context.py,sha256=JGwgCQ5S_jd8MXO6xJNe_ddHX46M6m9qjfRKhZxkS_o,9402
|
|
10
|
+
rem/agentic/context_builder.py,sha256=caIFpT4OaBAdGAfbvQ-uXpg8OkMCItfiq-gleUkBG-g,13394
|
|
11
11
|
rem/agentic/llm_provider_models.py,sha256=bkBs_6aQ0maerlnQNH5hWv21Os3mX5Q14zXTW_8bGgI,10508
|
|
12
12
|
rem/agentic/query.py,sha256=yBtVT9bCUT9DPKRw9UltzN4o9wgB-Ry-FfW814Eg1WE,3612
|
|
13
13
|
rem/agentic/query_helper.py,sha256=DAr-he5XsJfwrcEzfJCNujWYU6MFvK0JFXee2ulRMQU,2458
|
|
14
14
|
rem/agentic/schema.py,sha256=PKcVvotbEmAyfqW7qkmO9cdZkUduwl89lSI7IUaVyJY,22914
|
|
15
15
|
rem/agentic/serialization.py,sha256=zwjyvcGjTHuChG9goRHEVlA3etAekVJGzv9o6Fo7raM,7999
|
|
16
16
|
rem/agentic/agents/README.md,sha256=npq2ENb5dNGYxqGQYTb9E0JquyKcXrMt8kM2q6LRxRk,4972
|
|
17
|
-
rem/agentic/agents/__init__.py,sha256=
|
|
17
|
+
rem/agentic/agents/__init__.py,sha256=OV-9J0EpxLv_zjhv9v2o-42tFcSkLabrwgumood27ZI,893
|
|
18
|
+
rem/agentic/agents/agent_manager.py,sha256=8VSkCLqnl0FFlGoxQRmfMNSUz32G7bno_fkZH7ZTs8Q,8151
|
|
18
19
|
rem/agentic/agents/sse_simulator.py,sha256=NTJuunUlEY5KFUKbxgkrt5iihdVIEAqPsufUVisziaQ,16392
|
|
19
20
|
rem/agentic/mcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
20
21
|
rem/agentic/mcp/tool_wrapper.py,sha256=ZHKWIeHwnvIegbRwUG1xovmTOLYcY9i28liBHNB6UH8,10012
|
|
@@ -25,33 +26,35 @@ rem/agentic/providers/pydantic_ai.py,sha256=GHFBmN8KaMYe6eLSysA1g_fY30fUI6B5EDVo
|
|
|
25
26
|
rem/agentic/tools/__init__.py,sha256=tb_9ml0i2LtEALAJ6h7D91xVEA_8ktDzD4s3nM0MsUE,147
|
|
26
27
|
rem/agentic/tools/rem_tools.py,sha256=xhLohuAsv0AUjXLMXa-n9KchhkHxEi7jq1BsjPBuogw,7344
|
|
27
28
|
rem/api/README.md,sha256=68KtBi1nkXm_J0skGVBhchXP-cLNaBBka6ZhLqAncoA,19998
|
|
28
|
-
rem/api/deps.py,sha256=
|
|
29
|
-
rem/api/main.py,sha256=
|
|
29
|
+
rem/api/deps.py,sha256=3_M8YOdyzEkr4kIhjJvxuDvnSaq7U8TLx1sZkEG63eU,6611
|
|
30
|
+
rem/api/main.py,sha256=TqNO7C-O483qvmM5odHTbqTgq4Lq4CibsF3Steq4ApE,16743
|
|
30
31
|
rem/api/mcp_router/prompts.py,sha256=bVNsJMur6i0oyd38WIr-r0kUNUAlcGG595WVhBDwxik,4077
|
|
31
32
|
rem/api/mcp_router/resources.py,sha256=2Ph0psMbCpH6MUJhV-uFSZJQwGbGELE2zoXBt9yOmL4,16194
|
|
32
|
-
rem/api/mcp_router/server.py,sha256=
|
|
33
|
-
rem/api/mcp_router/tools.py,sha256=
|
|
34
|
-
rem/api/middleware/tracking.py,sha256=
|
|
33
|
+
rem/api/mcp_router/server.py,sha256=DaBAVXthSVyGYu-XrZh_ENatfS1KpF11ekyoOQ3MWrU,11228
|
|
34
|
+
rem/api/mcp_router/tools.py,sha256=gMf-lY5BZvCmis9Fy3jxN22i-JVD3ArhakKcUeCSrS0,39275
|
|
35
|
+
rem/api/middleware/tracking.py,sha256=ZlFkCVsmIfGuiRX1PPWN0vEIPZoOFIKqMZ3P-CjwfHc,6453
|
|
35
36
|
rem/api/routers/admin.py,sha256=AEvfi5QyfTG_3a8LZ5FPgbOXPajKeIu_5P6oqmLYa1E,14696
|
|
36
|
-
rem/api/routers/auth.py,sha256=
|
|
37
|
+
rem/api/routers/auth.py,sha256=KdDs50vkkjfB4nzkPmN1sagBKo1HJEbfVXkShEU_-jk,22781
|
|
37
38
|
rem/api/routers/dev.py,sha256=rLySeGas9USZxMxJiHU4ziaA8EK9aoc8dg7TpJagV-I,2229
|
|
38
39
|
rem/api/routers/feedback.py,sha256=UfDQlqeRwB1b4Q0agJOBahiAHL_aAHMb_l7TEjwZuGs,11378
|
|
39
|
-
rem/api/routers/messages.py,sha256=
|
|
40
|
+
rem/api/routers/messages.py,sha256=LLJSAZd6sD6IzaGhfMM1dGm-Uz4D6BdYBk1OsMmpUDM,16215
|
|
40
41
|
rem/api/routers/models.py,sha256=GMhDJzLrWe-gp842F1Vua2XOjZNAcIG-p-tCquJ5FQM,1946
|
|
41
42
|
rem/api/routers/query.py,sha256=cYV2HoSqMHr7kgeEFhx2GqUt_9Geg756JgJoYrX6OrU,13972
|
|
42
43
|
rem/api/routers/shared_sessions.py,sha256=9vQoQOsQhqWzcoJZ7_dhvi6zJlR5B72LP5THLfm--Ts,12259
|
|
43
44
|
rem/api/routers/chat/__init__.py,sha256=fck9klAzF7HJHNPAhl0B63uSavXvs6h26QhUsByf4JM,113
|
|
44
|
-
rem/api/routers/chat/completions.py,sha256=
|
|
45
|
+
rem/api/routers/chat/completions.py,sha256=ctPV_z_6oAMoLGSyxjBYyEMb_TFVmHduG8RWRu8Fgys,27248
|
|
45
46
|
rem/api/routers/chat/json_utils.py,sha256=BVRu-7PWIHTbC9Ubq4MfifZ8qYQZpcGhEgFgPVcXXKE,2191
|
|
46
47
|
rem/api/routers/chat/models.py,sha256=kzBxRvm5Ie2IchJrnFOom8cx6_ieEbuF2RqfiRJNNh8,7339
|
|
47
48
|
rem/api/routers/chat/otel_utils.py,sha256=al_4v044T3sOtIZtT9kHiNT6Twlc7wqz26edCcUSHSY,930
|
|
48
49
|
rem/api/routers/chat/sse_events.py,sha256=CS1yuor09Qq48bpJBODu7INS94S4GjS8YsPZkIc3Ii8,16508
|
|
49
|
-
rem/api/routers/chat/streaming.py,sha256=
|
|
50
|
+
rem/api/routers/chat/streaming.py,sha256=q34KqozuC_XRbX3QXJXs6bvMvhaIfGOhRB_r0UDPAwg,40061
|
|
50
51
|
rem/auth/README.md,sha256=BpZUqEVYMUpQG4guykyuvmtzlH3_LsGzspuRZS20i8k,8631
|
|
51
|
-
rem/auth/__init__.py,sha256=
|
|
52
|
-
rem/auth/
|
|
53
|
-
rem/auth/
|
|
52
|
+
rem/auth/__init__.py,sha256=ebS-_x21TZsgq7QVgziUpXagSVQU5y0kIxqc_ZywzCE,1027
|
|
53
|
+
rem/auth/jwt.py,sha256=hKO8DeNZohqBiS8F7ZVOnlg-IF0SrGZ7cWMdC0a9jTE,10997
|
|
54
|
+
rem/auth/middleware.py,sha256=bY-c4mddNnSe4K_EdaPvHhR8_-tKrJuqayKSr-xQMnM,11122
|
|
55
|
+
rem/auth/providers/__init__.py,sha256=yWurO-3o0fT_XIVcIyDX-ECx37jVn5g0pvOxcsU4Q3k,429
|
|
54
56
|
rem/auth/providers/base.py,sha256=wa7lrgM0AetZnITc45QFyiNHXgVVoWmZgW9tBpInDLw,11831
|
|
57
|
+
rem/auth/providers/email.py,sha256=LOrVIUiWDTTXMDLeiaTlrA1IQgELQS-nEtXzmzV2BaE,7000
|
|
55
58
|
rem/auth/providers/google.py,sha256=p3JAYOtyWwiN6T05rZI6sQJqrXhHaunaNOucHTBzWWc,5346
|
|
56
59
|
rem/auth/providers/microsoft.py,sha256=sv6emYa5B7XTk6gi18n_UCLPDqUmrrsuDnAnWGvJAYA,8444
|
|
57
60
|
rem/cli/README.md,sha256=UxmsXjxmee39xUrE7TRJ093Pfhazi58LhRqLfQsYA8g,11857
|
|
@@ -65,7 +68,7 @@ rem/cli/commands/cluster.py,sha256=MQThC3Da73ixVQ75UYxleQlB8AqPQLzEK73eaB8pNFI,6
|
|
|
65
68
|
rem/cli/commands/configure.py,sha256=GQzlER8PkUCTaeYuLbXUYoeqlmEDafcjAcPJrDchC1I,16595
|
|
66
69
|
rem/cli/commands/db.py,sha256=5Enkq7CG7fOpIwMGQ_yF4mTEP3wmoZK3ic3jxERi7Fk,24953
|
|
67
70
|
rem/cli/commands/dreaming.py,sha256=2P8nyX9gnRgyCJZrDuyJt5_YAsFmjUGa6dg7OvoLA8k,13292
|
|
68
|
-
rem/cli/commands/experiments.py,sha256=
|
|
71
|
+
rem/cli/commands/experiments.py,sha256=dRJKtvrGQu0a9bQZaLnVfdWhaur2bKYviixqOnYQC-k,62472
|
|
69
72
|
rem/cli/commands/mcp.py,sha256=PiP_zXflZ2lPVgmH3N8EGOWXDSfvNTQJD-MMW3ym3xo,1666
|
|
70
73
|
rem/cli/commands/process.py,sha256=DCV7KuS3idRkJ7hsl4uxFqdt67RbxuCP3DL9VeqQuFQ,8630
|
|
71
74
|
rem/cli/commands/scaffold.py,sha256=hv2-ozD1bbD8FEky7OdIDzcgu-KISs5ek6APqykdZ6I,1618
|
|
@@ -75,10 +78,10 @@ rem/cli/commands/session.py,sha256=rUDeLnBNwc6A1zSOOs-uHyfixDmBYlVtLToJpbPxo7I,9
|
|
|
75
78
|
rem/models/core/__init__.py,sha256=BBbARx5_7uVz5FuuoPdFm3tbiWZWubs97i3smU0UxXg,1449
|
|
76
79
|
rem/models/core/core_model.py,sha256=aYVx2905n0b6TGLnIiV5YMWO2O8pxHVtLEWljWvURxU,2617
|
|
77
80
|
rem/models/core/engram.py,sha256=CuoilA74hmlgMT2mZCoEEh0jFsMrKUw9wdyFOygBa8E,10135
|
|
78
|
-
rem/models/core/experiment.py,sha256=
|
|
81
|
+
rem/models/core/experiment.py,sha256=Zc5kVtUa05mxEzvJHuXGvGMffa0Uk9Lo16XNsbIDfHw,20777
|
|
79
82
|
rem/models/core/inline_edge.py,sha256=BVOYchWzb5vYRPTBJEKh06YDwzL_NKdvCRg4BtXRn7g,5059
|
|
80
83
|
rem/models/core/rem_query.py,sha256=EpD1NdhxgptW81ID1_q2pnYhioM8J4Efx-JFJsNW_i0,8108
|
|
81
|
-
rem/models/entities/__init__.py,sha256=
|
|
84
|
+
rem/models/entities/__init__.py,sha256=h_Bt83lk1qTliTybT0HbxcBCPzIvbtfr7kizbSua1iM,2015
|
|
82
85
|
rem/models/entities/domain_resource.py,sha256=9kfsa1ELGG1gpAWlxBGkaWk157pJ8u636aQBi-ZJ9WA,1269
|
|
83
86
|
rem/models/entities/feedback.py,sha256=m8AIm57DD4N4-8M6hI9EwF6rpA_EYE8tNR-sln9vEb8,3483
|
|
84
87
|
rem/models/entities/file.py,sha256=plUm0Caww_yNrpgnOkGp3RBv4l9I6szGOe-NuAuWCcg,1492
|
|
@@ -91,11 +94,13 @@ rem/models/entities/resource.py,sha256=FW7R_AylZilb-1iYfZA5MMQw2zA42CUVweKgO-4cw
|
|
|
91
94
|
rem/models/entities/schema.py,sha256=CEcd49kR_6YgaLLKsWaIb2J0KdbVsgYoi_srPgzr9Aw,2945
|
|
92
95
|
rem/models/entities/session.py,sha256=VKeTAZZphrKz379Av1hhUTWfQ-DbxLAt3CfU3aDHfwk,2499
|
|
93
96
|
rem/models/entities/shared_session.py,sha256=PWTH637NHmwziXCgr1BM0KXWLUzHrbfLlYKLH3qdU6A,5901
|
|
94
|
-
rem/models/entities/
|
|
97
|
+
rem/models/entities/subscriber.py,sha256=0x51UkGRkAeJfr_0u4srN8H0NrXJEv5MdESeQsjvin4,5181
|
|
98
|
+
rem/models/entities/user.py,sha256=Ps-CWn-Rkj7yYEW768_mSu3maDxysxsJWT2T7XisuN4,2879
|
|
95
99
|
rem/schemas/README.md,sha256=_WH2A78jyLb11xu8q1tu4pDMlgZfE9WjYqrAUbn2BIM,13588
|
|
96
100
|
rem/schemas/__init__.py,sha256=cY7Hqc056Mb3t12nfpkAK6WZDvOP1gk4rv0CK4VbhTk,213
|
|
97
101
|
rem/schemas/agents/README.md,sha256=FZI5B8Miqod7KY3KxidW4q8u9W7FbtigV2VU7ropPS0,2815
|
|
98
102
|
rem/schemas/agents/rem.yaml,sha256=w8hIZvAnoWmYJrob1gEZ-yi6BXLQoafwlysYeGU168g,8390
|
|
103
|
+
rem/schemas/agents/core/agent-builder.yaml,sha256=b7qXNrWtH86FUVJz4Pg0cnszRL2YUM3wtM7ndtm6xCI,3884
|
|
99
104
|
rem/schemas/agents/core/moment-builder.yaml,sha256=-nieKbEiYKiIwBtTCBtIVDKV-cfXpGn0AJ66BUUm48U,8368
|
|
100
105
|
rem/schemas/agents/core/rem-query-agent.yaml,sha256=dQyShquyn-2nGooy8tyZ588etfx4kzfAE1xDIBCJCVI,10265
|
|
101
106
|
rem/schemas/agents/core/resource-affinity-assessor.yaml,sha256=AXS_gvDdjUyFGZO-VJsGx30qKDIQJjdWU81ben-Jrk0,5361
|
|
@@ -114,9 +119,9 @@ rem/schemas/evaluators/rem/lookup-correctness.yaml,sha256=i0HLGlVzNlf7chVbXMpmyZ
|
|
|
114
119
|
rem/schemas/evaluators/rem/retrieval-precision.yaml,sha256=3CekIxTjJ0RFFKVNo-JFIpZ1KFea1WOWuMnRu8i-m1Q,7181
|
|
115
120
|
rem/schemas/evaluators/rem/retrieval-recall.yaml,sha256=2IuO8uu9hr-Nrn23nDo4rebE5t0eFtxcUYihHh5JwVc,7894
|
|
116
121
|
rem/schemas/evaluators/rem/search-correctness.yaml,sha256=pODDOMCqnTfAViQnn_KvSO132JYXoZiMeXW-8g7v-JE,6247
|
|
117
|
-
rem/services/__init__.py,sha256=
|
|
122
|
+
rem/services/__init__.py,sha256=NEm6aX38YW1HcICNGYbYTZb4VGWHgqRev5Rrf6xOQi0,566
|
|
118
123
|
rem/services/rate_limit.py,sha256=p7tTvGQfyM4XalEMdtGaDKvwCeuKZLQXSoM07aEru98,3725
|
|
119
|
-
rem/services/user_service.py,sha256=
|
|
124
|
+
rem/services/user_service.py,sha256=NR1GiR-oA0ts6esQX_ljM8c8JTXBBhaADGxB9JPywG0,3928
|
|
120
125
|
rem/services/audio/INTEGRATION.md,sha256=j1GhA1Az_x8Q6soxQ2blQ-0Av7he3lkeEw8P4SffI88,9526
|
|
121
126
|
rem/services/audio/README.md,sha256=VQmqhRNvNqXU549rhf589WBs1iacbvzayhRER1lyXV4,10355
|
|
122
127
|
rem/services/audio/__init__.py,sha256=jTAbL0324bJESsY9FBum6ybaXaxy7HTlREm9FiuCcSI,438
|
|
@@ -125,7 +130,7 @@ rem/services/audio/transcriber.py,sha256=CbUkNr_AyFZ4NImr6giwgDTT_xPmOe3iSr_YPdB
|
|
|
125
130
|
rem/services/content/README.md,sha256=nKOYqYbMljCVRZ55dlGU6Afipo0FVV7YXqT_dV-VXsw,35806
|
|
126
131
|
rem/services/content/__init__.py,sha256=JtfEPROctu3_R5oGdo04PxpgYqXxAz-TbpS8Ejkjdfs,120
|
|
127
132
|
rem/services/content/providers.py,sha256=xKW6Bn_fJpQGtnESufZcLRh7BAjWqSOLVdYiEg6rYDc,27909
|
|
128
|
-
rem/services/content/service.py,sha256=
|
|
133
|
+
rem/services/content/service.py,sha256=DjGNmkrRu18ODknD-cxSc2VAI_OtFbkGpbX5EOVXb-g,29765
|
|
129
134
|
rem/services/dreaming/README.md,sha256=JhzndF6yRP2Eut_AlvukZHV9MSv83V--V2pA0GXXf2g,9100
|
|
130
135
|
rem/services/dreaming/__init__.py,sha256=3j2TBC1_0z8AlCA9jiqsecyzPFaptCUUHsO_RlXrINc,1719
|
|
131
136
|
rem/services/dreaming/affinity_service.py,sha256=ScWKwRIPLywqqL2RFd_TsTg_KKmPb0ngBCpOpmIG7w4,12205
|
|
@@ -133,6 +138,9 @@ rem/services/dreaming/moment_service.py,sha256=cqUQpqGZx__Gx0m0I-_WmJJgNPrwVwHRQ
|
|
|
133
138
|
rem/services/dreaming/ontology_service.py,sha256=hpP3aCYqsP26taq3__Q2w_jmA9-J1wZ7gNrKvBf-HQM,1704
|
|
134
139
|
rem/services/dreaming/user_model_service.py,sha256=oTuqFdNxegWwVGzOOnwdf5YS2IKQYRNW10bV5efG57E,9929
|
|
135
140
|
rem/services/dreaming/utils.py,sha256=ntCXGygJERdH7CW59kudjodBVP6oD4mH42_vH_2powk,1116
|
|
141
|
+
rem/services/email/__init__.py,sha256=SwPCjm-8EuSFcap-LYLQ3NQnofd0v27ks0qLAKkg_tM,271
|
|
142
|
+
rem/services/email/service.py,sha256=dgxUaQEVLBj1t277Op5RLPylqvB-ioRE1Z0ReQLPAak,17536
|
|
143
|
+
rem/services/email/templates.py,sha256=bXgNweo6xwGJxxDvnjmhI320eyHTRtnyjstYk-Fs_5k,12775
|
|
136
144
|
rem/services/embeddings/__init__.py,sha256=Jr22tszCfpmishCnnQrS0MBHxiUK_E7rJmNqTeR_xpI,293
|
|
137
145
|
rem/services/embeddings/api.py,sha256=mDkx_-wWOfjI4uuPIaQDLkfdznEdXQFOvx4VK-Ll4oc,4340
|
|
138
146
|
rem/services/embeddings/worker.py,sha256=BdPIsR4hv_epbjpLMg7-n_uje6crvhdfZcVha9EzaxA,13993
|
|
@@ -156,13 +164,13 @@ rem/services/phoenix/__init__.py,sha256=f6h90EHVrQkyS-ZhPknXwbHp_vrZrQ7HgXmCGc1J
|
|
|
156
164
|
rem/services/phoenix/client.py,sha256=0sDm26v7Wi9jTof31Cf0A_5hA_g0HKGQys4qeBqySc0,35214
|
|
157
165
|
rem/services/phoenix/config.py,sha256=rgFEJ5iENuvBa0_nhEhgz0gW4Sg0uo_fkQMgsnHiTc8,2932
|
|
158
166
|
rem/services/phoenix/prompt_labels.py,sha256=82VIsXgZ51d3YLzHxusmfzd40yl5YOVnddzv_lNFIGg,13953
|
|
159
|
-
rem/services/postgres/README.md,sha256=
|
|
167
|
+
rem/services/postgres/README.md,sha256=Uh9ZyATF2PyNWz-QEtXl7wJ9Q_3Q0SL2hVKO2ncSwB8,22796
|
|
160
168
|
rem/services/postgres/__init__.py,sha256=hPOVs7Gi42qjz9ySu1y1Fmxcyo21UrhVycw_y4YAF-0,563
|
|
161
|
-
rem/services/postgres/diff_service.py,sha256=
|
|
169
|
+
rem/services/postgres/diff_service.py,sha256=J6QFsNmgaJA5I3BtP8_1NNm-OwloG8p44PlHhwCJiYc,20087
|
|
162
170
|
rem/services/postgres/migration_service.py,sha256=2irsWfzczZ0_-wge6ReyCrFrE3HxvnlwKAEp8mWqtQo,14897
|
|
163
|
-
rem/services/postgres/pydantic_to_sqlalchemy.py,sha256=
|
|
171
|
+
rem/services/postgres/pydantic_to_sqlalchemy.py,sha256=09KUBZWe8SgjSvXLkftG9zby8crWqnmDz9KlTJ0MVoM,17248
|
|
164
172
|
rem/services/postgres/register_type.py,sha256=KwttMTvCdtLvSyW2YICmZ71BBB4oomIoX9IJT-qyEn8,11169
|
|
165
|
-
rem/services/postgres/repository.py,sha256=
|
|
173
|
+
rem/services/postgres/repository.py,sha256=mY8HAS3eQa7GHLUYtDSVnSzD4-EuggmZUPYM9AmR3s0,15875
|
|
166
174
|
rem/services/postgres/schema_generator.py,sha256=TpINJtEPcrbISbz3HUo7zEI1C-542HEAsf2m5kOuGM8,23906
|
|
167
175
|
rem/services/postgres/service.py,sha256=3CIOP7LuaK4p2rYTyscIXasGLTwjb62HnAGbOCuEm74,27122
|
|
168
176
|
rem/services/postgres/sql_builder.py,sha256=EQZCXBLuOM_trDnr0vwzqJRCKMk9wpZG2ZrY_yBfQMk,10348
|
|
@@ -176,15 +184,16 @@ rem/services/rem/query.py,sha256=z4Qcaed1mPG2p-4pazEUlnUFqOEYxrKGYLffwD2-V-c,121
|
|
|
176
184
|
rem/services/rem/service.py,sha256=cYPPCZ90S9QRWi_4JxEe9oybdDM8Is7wgYt8EpLoiVY,21093
|
|
177
185
|
rem/services/session/README.md,sha256=WDoVWMRXrSh6wRSlUQ0oIHUItOol65INl86VCNPUOYQ,10446
|
|
178
186
|
rem/services/session/__init__.py,sha256=ODLcjnOjLubJU8ncvZsB4SB2zl-mncQQLDZWILwc0Cs,254
|
|
179
|
-
rem/services/session/compression.py,sha256=
|
|
180
|
-
rem/services/session/reload.py,sha256=
|
|
187
|
+
rem/services/session/compression.py,sha256=8PTGqJ9G4AJaMHzJL5BbVMz_okFSqWbRI3TSHCRYriU,17079
|
|
188
|
+
rem/services/session/reload.py,sha256=qbs9yYYBaEH0n_XN_A4BqHcB0RIX_JMkZjHNzUR6zY4,2805
|
|
181
189
|
rem/sql/background_indexes.sql,sha256=Lra21QxTvuDOlf0yoF23VOUiHJLRnNWgu0OOR8OXTGQ,1792
|
|
182
190
|
rem/sql/migrations/001_install.sql,sha256=LPaIStaDwQ39U-mlMqY6qxMoAAdulyB80ReyiPw_TvA,30039
|
|
183
191
|
rem/sql/migrations/002_install_models.sql,sha256=SMhvFKp70ctaln63ghZq9ED34LWR0__w-ETph7pgvQ4,152648
|
|
184
192
|
rem/sql/migrations/003_optional_extensions.sql,sha256=QACy3J50ZgV_4BHNkkT3iswkE1ijc0oCAOgavv6KC5g,12443
|
|
185
193
|
rem/sql/migrations/004_cache_system.sql,sha256=KBpU3hQY08So_MkMfcOwTZDngTMqa_3kA0ujQ98K33k,19672
|
|
194
|
+
rem/sql/migrations/005_schema_update.sql,sha256=fVcuUt0I24UXMEWA25TM-kN29GC19IAqxlxFP-3Z2ys,5055
|
|
186
195
|
rem/utils/AGENTIC_CHUNKING.md,sha256=Z9IyL5yoFTlvamPE5KA7cs0Btoc_6bq8hh7Q_WARlw8,17230
|
|
187
|
-
rem/utils/README.md,sha256=
|
|
196
|
+
rem/utils/README.md,sha256=Osix2SVYAECMFTFnLhn8D8rsPrtNaCBWfkZfkn5RS60,18087
|
|
188
197
|
rem/utils/__init__.py,sha256=ZGMTgR7g-V3fhfgKo791wGBhdxy72xTJSo7Q_xwkQRI,1417
|
|
189
198
|
rem/utils/agentic_chunking.py,sha256=B7TIggqOSeHJ5clPPY7O712Wb1xz52Y_2gCPiEZlWqY,21841
|
|
190
199
|
rem/utils/batch_ops.py,sha256=LgzttGV0O_a8Y70fnsX3XwlSZWZKRTnwBBwxP09BOvw,11689
|
|
@@ -194,7 +203,7 @@ rem/utils/constants.py,sha256=aX2GwgtaZx3wztsGNa8HFyKxAWNoZlZv9k45gQ7K3Qs,3283
|
|
|
194
203
|
rem/utils/date_utils.py,sha256=LiqyiYcvfw8I-zvfDzPEs1PnwHOEXfmqn_6BDqefEBo,5542
|
|
195
204
|
rem/utils/dict_utils.py,sha256=qp5myXSgGV2Daz9X-9SKzQDu2WeQeIBBcgFnqd8VhqY,2905
|
|
196
205
|
rem/utils/embeddings.py,sha256=FnjZFHXgxf__dbubY2HknhDAngizr8j7P28-Sug4-f0,13150
|
|
197
|
-
rem/utils/files.py,sha256=
|
|
206
|
+
rem/utils/files.py,sha256=6ax-5vmk_4cI-IG55PT9sKj_DqXBl32RkTRSsxqvgGY,8759
|
|
198
207
|
rem/utils/markdown.py,sha256=zhfSiSRX36vky1b2UOGKsuSr11L2l6Kl_O7iSfwQXBY,401
|
|
199
208
|
rem/utils/mime_types.py,sha256=8KGEuPWVdQ8r1DFLsgiaAgEYqMaaQIk-6lCVOBB1z_A,5346
|
|
200
209
|
rem/utils/model_helpers.py,sha256=Cvqeof9KlhkkBmAFxRLtfsh4m_MQ0N8WukI3IDJcTtw,11743
|
|
@@ -213,7 +222,7 @@ rem/workers/dreaming.py,sha256=UqCf-iBUhzBVBRFj7_DtR6q27oRo7EUoal9qqHLzlo4,17823
|
|
|
213
222
|
rem/workers/engram_processor.py,sha256=Ws92kAILMLK_np3F1HRmhKKXiruLIvFn3o9MY3V2W8g,10779
|
|
214
223
|
rem/workers/sqs_file_processor.py,sha256=tX8S0yo2n1XGvaZ7JUqeGmtTwxybQqz3wkHT2j6Ak7Y,6597
|
|
215
224
|
rem/workers/unlogged_maintainer.py,sha256=KhebhXl3s6DwvHnXXEJ45r5tLK9PNj-0KclNIQVQ68s,15817
|
|
216
|
-
remdb-0.3.
|
|
217
|
-
remdb-0.3.
|
|
218
|
-
remdb-0.3.
|
|
219
|
-
remdb-0.3.
|
|
225
|
+
remdb-0.3.163.dist-info/METADATA,sha256=Eh8570XNBM5GhbkkPkN6gMgDyKTTv3cXdZ61MchfNkE,53341
|
|
226
|
+
remdb-0.3.163.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
227
|
+
remdb-0.3.163.dist-info/entry_points.txt,sha256=gmmrz7tRC1WGUrCMJMg6p5pEP5h5mPYRvWIxp1FYdr0,42
|
|
228
|
+
remdb-0.3.163.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|