remdb 0.3.127__py3-none-any.whl → 0.3.172__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.

Files changed (62) hide show
  1. rem/agentic/agents/__init__.py +16 -0
  2. rem/agentic/agents/agent_manager.py +311 -0
  3. rem/agentic/context.py +81 -3
  4. rem/agentic/context_builder.py +36 -9
  5. rem/agentic/mcp/tool_wrapper.py +132 -15
  6. rem/agentic/providers/phoenix.py +371 -108
  7. rem/agentic/providers/pydantic_ai.py +163 -45
  8. rem/agentic/schema.py +8 -4
  9. rem/api/deps.py +3 -5
  10. rem/api/main.py +22 -3
  11. rem/api/mcp_router/resources.py +15 -10
  12. rem/api/mcp_router/server.py +2 -0
  13. rem/api/mcp_router/tools.py +94 -2
  14. rem/api/middleware/tracking.py +5 -5
  15. rem/api/routers/auth.py +349 -6
  16. rem/api/routers/chat/completions.py +5 -3
  17. rem/api/routers/chat/streaming.py +95 -22
  18. rem/api/routers/messages.py +24 -15
  19. rem/auth/__init__.py +13 -3
  20. rem/auth/jwt.py +352 -0
  21. rem/auth/middleware.py +115 -10
  22. rem/auth/providers/__init__.py +4 -1
  23. rem/auth/providers/email.py +215 -0
  24. rem/cli/commands/configure.py +3 -4
  25. rem/cli/commands/experiments.py +226 -50
  26. rem/cli/commands/session.py +336 -0
  27. rem/cli/dreaming.py +2 -2
  28. rem/cli/main.py +2 -0
  29. rem/models/core/experiment.py +58 -14
  30. rem/models/entities/__init__.py +4 -0
  31. rem/models/entities/ontology.py +1 -1
  32. rem/models/entities/ontology_config.py +1 -1
  33. rem/models/entities/subscriber.py +175 -0
  34. rem/models/entities/user.py +1 -0
  35. rem/schemas/agents/core/agent-builder.yaml +235 -0
  36. rem/schemas/agents/examples/contract-analyzer.yaml +1 -1
  37. rem/schemas/agents/examples/contract-extractor.yaml +1 -1
  38. rem/schemas/agents/examples/cv-parser.yaml +1 -1
  39. rem/services/__init__.py +3 -1
  40. rem/services/content/service.py +4 -3
  41. rem/services/email/__init__.py +10 -0
  42. rem/services/email/service.py +513 -0
  43. rem/services/email/templates.py +360 -0
  44. rem/services/postgres/README.md +38 -0
  45. rem/services/postgres/diff_service.py +19 -3
  46. rem/services/postgres/pydantic_to_sqlalchemy.py +45 -13
  47. rem/services/postgres/repository.py +5 -4
  48. rem/services/session/compression.py +113 -50
  49. rem/services/session/reload.py +14 -7
  50. rem/services/user_service.py +41 -9
  51. rem/settings.py +292 -5
  52. rem/sql/migrations/001_install.sql +1 -1
  53. rem/sql/migrations/002_install_models.sql +91 -91
  54. rem/sql/migrations/005_schema_update.sql +145 -0
  55. rem/utils/README.md +45 -0
  56. rem/utils/files.py +157 -1
  57. rem/utils/schema_loader.py +45 -7
  58. rem/utils/vision.py +1 -1
  59. {remdb-0.3.127.dist-info → remdb-0.3.172.dist-info}/METADATA +7 -5
  60. {remdb-0.3.127.dist-info → remdb-0.3.172.dist-info}/RECORD +62 -52
  61. {remdb-0.3.127.dist-info → remdb-0.3.172.dist-info}/WHEEL +0 -0
  62. {remdb-0.3.127.dist-info → remdb-0.3.172.dist-info}/entry_points.txt +0 -0
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
@@ -132,13 +132,51 @@ def _load_schema_from_database(schema_name: str, user_id: str) -> dict[str, Any]
132
132
  # Check if we're already in an async context
133
133
  try:
134
134
  loop = asyncio.get_running_loop()
135
- # We're in an async context - can't use asyncio.run()
136
- # This shouldn't happen in normal usage since load_agent_schema is called from sync contexts
137
- logger.warning(
138
- "Database schema lookup called from async context. "
139
- "This may cause issues. Consider using async version of load_agent_schema."
140
- )
141
- return None
135
+ # We're in an async context - use thread executor to run async code
136
+ import concurrent.futures
137
+
138
+ async def _async_lookup():
139
+ """Async helper to query database."""
140
+ from rem.services.postgres import get_postgres_service
141
+
142
+ db = get_postgres_service()
143
+ if not db:
144
+ logger.debug("PostgreSQL service not available for schema lookup")
145
+ return None
146
+
147
+ try:
148
+ await db.connect()
149
+
150
+ query = """
151
+ SELECT spec FROM schemas
152
+ WHERE LOWER(name) = LOWER($1)
153
+ AND (user_id = $2 OR user_id = 'system' OR user_id IS NULL)
154
+ LIMIT 1
155
+ """
156
+ logger.debug(f"Executing schema lookup: name={schema_name}, user_id={user_id}")
157
+
158
+ row = await db.fetchrow(query, schema_name, user_id)
159
+
160
+ if row:
161
+ spec = row.get("spec")
162
+ if spec and isinstance(spec, dict):
163
+ logger.debug(f"Found schema in database: {schema_name}")
164
+ return spec
165
+
166
+ logger.debug(f"Schema not found in database: {schema_name}")
167
+ return None
168
+
169
+ except Exception as e:
170
+ logger.debug(f"Database schema lookup error: {e}")
171
+ return None
172
+ finally:
173
+ await db.disconnect()
174
+
175
+ # Run in thread pool to avoid blocking the event loop
176
+ with concurrent.futures.ThreadPoolExecutor() as pool:
177
+ future = pool.submit(asyncio.run, _async_lookup())
178
+ return future.result(timeout=10)
179
+
142
180
  except RuntimeError:
143
181
  # Not in async context - safe to use asyncio.run()
144
182
  pass
rem/utils/vision.py CHANGED
@@ -106,7 +106,7 @@ class ImageAnalyzer:
106
106
  elif provider == VisionProvider.GEMINI:
107
107
  model = "gemini-2.0-flash-exp"
108
108
  elif provider == VisionProvider.OPENAI:
109
- model = "gpt-4o"
109
+ model = "gpt-4.1"
110
110
 
111
111
  self.model = model
112
112
  self.base_url = base_url
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: remdb
3
- Version: 0.3.127
3
+ Version: 0.3.172
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.13,>=3.12
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 with docker-compose
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 postgres
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 the API server (if not using docker-compose for API)
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,106 +3,112 @@ 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=OhAuixlMRT12SOHBM8qmtltNTMs60YWI3nAVDwW_4z4,50139
6
+ rem/settings.py,sha256=Ecs3P6sxDnu1Ens5NsqNR998XnKRx5DOItxbM0au1tY,60155
7
7
  rem/agentic/README.md,sha256=brF1Z1V6s8z5TLoyNPQ3BC5mqDy648QRPOQmGu6Jkzw,21815
8
8
  rem/agentic/__init__.py,sha256=-UZiEYpodfD5xDns6L0nYSqK9owr3NxiWsq6vmK1tGk,1268
9
- rem/agentic/context.py,sha256=EBw2rQ85mygJZHaHfO2A59cu3rgI2vfy1A0Qhri99DE,6282
10
- rem/agentic/context_builder.py,sha256=AkZPYMFhTWde6DiQ4yGgNmV32qDQQj-13SZnj3ppnFE,12686
9
+ rem/agentic/context.py,sha256=JGwgCQ5S_jd8MXO6xJNe_ddHX46M6m9qjfRKhZxkS_o,9402
10
+ rem/agentic/context_builder.py,sha256=POz8Rje4xn01K7i7yq3ty5RX3CZUhI2AlVPbrzgQWDo,14068
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
- rem/agentic/schema.py,sha256=0BXD42G1d1hjlK0XKcCCPREA4Hzg5TDUSfmBwmxNf2I,22742
14
+ rem/agentic/schema.py,sha256=lc819ZJNiGC3tEQO6sfN-H93PU9-wqXTNA7h1Cn9myY,22993
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=N4I_-yGieWMl5vEJ94yQ1v5WhQy2Z2-vOdyX3LcTzuk,581
17
+ rem/agentic/agents/__init__.py,sha256=OV-9J0EpxLv_zjhv9v2o-42tFcSkLabrwgumood27ZI,893
18
+ rem/agentic/agents/agent_manager.py,sha256=idT4brDCSzjDKkm897acKHgbJb25FISvDKqeWyU7hak,8228
18
19
  rem/agentic/agents/sse_simulator.py,sha256=NTJuunUlEY5KFUKbxgkrt5iihdVIEAqPsufUVisziaQ,16392
19
20
  rem/agentic/mcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
- rem/agentic/mcp/tool_wrapper.py,sha256=QeJxGcfqZ1ScrYfPSmHk2gIjZB9vQGCLKMguhbIXUm4,4828
21
+ rem/agentic/mcp/tool_wrapper.py,sha256=MWDntUXNdbB0V2pIspba6C3xP6_DJoYUPPkw8TEqMo0,10305
21
22
  rem/agentic/otel/__init__.py,sha256=IC0lLMmuxXRZrhO9p8-GQ6raZDP9YE3gcuCwl6vBv4c,195
22
23
  rem/agentic/otel/setup.py,sha256=-NL5jDXuDdQMKEhZfOtjZ2kJtpayQ7dhM0p1OrU185c,9629
23
- rem/agentic/providers/phoenix.py,sha256=eWasZ8Vcf_K8q4xDyVuYhogihvyDQVpObeu0PLVMfCE,24194
24
- rem/agentic/providers/pydantic_ai.py,sha256=7g4kEsX4OaORy0bDfMLeglG6Ycf7EYkLcGROac0llI8,28408
24
+ rem/agentic/providers/phoenix.py,sha256=_e8-S8aSfpX2EulH0nXAermoDZ1c9Kh3QALGTCvCmC4,35422
25
+ rem/agentic/providers/pydantic_ai.py,sha256=mZvM8EPCsoAg8fiA91Ctyvjf2xxxpS7PcG9H74zo4L8,34070
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=75c_PZ1XWPanHBds4Ap3JZtLSLtDF_qNMploSgHvdmo,6736
29
- rem/api/main.py,sha256=_vfKH_DBWuempKs-YOS0gQOUbsHe3l1kEoVSvD-sOkQ,15917
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
- rem/api/mcp_router/resources.py,sha256=2Ph0psMbCpH6MUJhV-uFSZJQwGbGELE2zoXBt9yOmL4,16194
32
- rem/api/mcp_router/server.py,sha256=boaxrFqywbiv0-hZ6nOvWrNXYlrG7thtmqa9dSv9sKE,11181
33
- rem/api/mcp_router/tools.py,sha256=H2YaJvT2HSDr68j3EOrHPWU3M742e4T1Me9oUdsnIYs,35719
34
- rem/api/middleware/tracking.py,sha256=cA9ChbBQ8-QipLlyGrTUsd7eMtHGzZ9Cp4iEHBgOQiM,6326
32
+ rem/api/mcp_router/resources.py,sha256=WyCIlF4m3xWuBiZGKP4CNPzS9cUFrroLmWRKdX3dHbI,16242
33
+ rem/api/mcp_router/server.py,sha256=DaBAVXthSVyGYu-XrZh_ENatfS1KpF11ekyoOQ3MWrU,11228
34
+ rem/api/mcp_router/tools.py,sha256=EfuqPBS92lTB6vx12EMcnIJEebGbDq0w1uW2R9Oy9Kk,39438
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=cDvPvqmMxr5FRign98K87Rp8GtVD2V9oZWoSPeqnP1o,11918
37
+ rem/api/routers/auth.py,sha256=qK3PPGDL2fbPPbOyBy6PKIxlvWClRr_vUYLvwAHIZLI,22923
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=Av-fFeRLn_xMWDv0cdggfy4bw05WIHK0phWtPoffhOw,16292
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=6kNlys_Vw2eMe8JJ7PhSLluq22cFboiMdJL49eSasnU,27092
45
+ rem/api/routers/chat/completions.py,sha256=ZjwKULboM0oKhSc0DP3tj4gamMNKphkvgJ01bUQ-O2Q,27239
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=bHSDfTjpMS7wMjF1ovKWoH7mPngh7O5EHMzadOLBxKg,37287
50
+ rem/api/routers/chat/streaming.py,sha256=WCxtJ32V-9NpvkCvum1C8ay5IQ5tADpkKXgcurewcv8,41154
50
51
  rem/auth/README.md,sha256=BpZUqEVYMUpQG4guykyuvmtzlH3_LsGzspuRZS20i8k,8631
51
- rem/auth/__init__.py,sha256=NuOzrlipfiRUM7lwuEJTzc-b8lYWCxDl_7V82FxElJA,700
52
- rem/auth/middleware.py,sha256=_55Va07HElp_fhB9ROyI8bhRXCSCVZ7bROw2vXCer1Y,7381
53
- rem/auth/providers/__init__.py,sha256=NMdH84_UC2_9zX7yv-u26FxdGuDipz42S-YO1vc8w1M,318
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=VUfbeUTeT7yGI-ZxlqeJAru_EH-qtiBaIHdFuRZozWA,11309
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
58
61
  rem/cli/__init__.py,sha256=NazCCnBFZwMkvJgzeGkfYveP_MUpvbqHcOLZihew0-Q,188
59
- rem/cli/dreaming.py,sha256=yMTRaSwllB5anQ2aWUAYFqej_6jjeZ8eoqh8liDhqfU,11535
60
- rem/cli/main.py,sha256=w4NtuVqc0axV-TVI3rlv0gnXZ0Tou4Qdjbfu76CJ73A,3022
62
+ rem/cli/dreaming.py,sha256=UUxx9zXFDIvI5QhCLB303TPH0OiYMnr3l2YhF2GvF_8,11537
63
+ rem/cli/main.py,sha256=gP-lnD6kkCGeeMHh9aWPRb26CT1zpsDUwuQ30Zqkobw,3127
61
64
  rem/cli/commands/README.md,sha256=CxTm4pAKVzE780sWn_sAILu2_nH_0oh9whppZvW4bew,9295
62
65
  rem/cli/commands/__init__.py,sha256=wKff1WrBXwf-vDXjSvUuk-61Npm5716okVnOQ22FcEk,30
63
66
  rem/cli/commands/ask.py,sha256=VTKL-E3_XZ8OWX16RCDAeAPrp28PLyXMgh63CNF-29Q,19389
64
67
  rem/cli/commands/cluster.py,sha256=MQThC3Da73ixVQ75UYxleQlB8AqPQLzEK73eaB8pNFI,64247
65
- rem/cli/commands/configure.py,sha256=nNr_r4TTYw9xncDpaa6T71n2N8I-ffn1UOUSbyLFrn8,16652
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=7MxHA6gCt5w9Q0cMv344N5LUOR78Fu-lfOh65m_7QdE,55930
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
72
75
  rem/cli/commands/schema.py,sha256=oCsRUoih2MC_mpxmj14hsQy0xWLCddSUYcfGnDMlbuw,7325
73
76
  rem/cli/commands/serve.py,sha256=ku6z5gxRwmY-vNdNELGPA8aiYyO4QGRgJ_H4wpusd8Y,2926
77
+ rem/cli/commands/session.py,sha256=rUDeLnBNwc6A1zSOOs-uHyfixDmBYlVtLToJpbPxo7I,9851
74
78
  rem/models/core/__init__.py,sha256=BBbARx5_7uVz5FuuoPdFm3tbiWZWubs97i3smU0UxXg,1449
75
79
  rem/models/core/core_model.py,sha256=aYVx2905n0b6TGLnIiV5YMWO2O8pxHVtLEWljWvURxU,2617
76
80
  rem/models/core/engram.py,sha256=CuoilA74hmlgMT2mZCoEEh0jFsMrKUw9wdyFOygBa8E,10135
77
- rem/models/core/experiment.py,sha256=QboyXIE-I9zLyOw2UZCvN9Sne3uky3Bk_LKTthoR5AI,18977
81
+ rem/models/core/experiment.py,sha256=Zc5kVtUa05mxEzvJHuXGvGMffa0Uk9Lo16XNsbIDfHw,20777
78
82
  rem/models/core/inline_edge.py,sha256=BVOYchWzb5vYRPTBJEKh06YDwzL_NKdvCRg4BtXRn7g,5059
79
83
  rem/models/core/rem_query.py,sha256=EpD1NdhxgptW81ID1_q2pnYhioM8J4Efx-JFJsNW_i0,8108
80
- rem/models/entities/__init__.py,sha256=p3eOFNZdlQ_dF0ZdXR9sHPHu_btMd5mZmw0v5iL8uik,1878
84
+ rem/models/entities/__init__.py,sha256=h_Bt83lk1qTliTybT0HbxcBCPzIvbtfr7kizbSua1iM,2015
81
85
  rem/models/entities/domain_resource.py,sha256=9kfsa1ELGG1gpAWlxBGkaWk157pJ8u636aQBi-ZJ9WA,1269
82
86
  rem/models/entities/feedback.py,sha256=m8AIm57DD4N4-8M6hI9EwF6rpA_EYE8tNR-sln9vEb8,3483
83
87
  rem/models/entities/file.py,sha256=plUm0Caww_yNrpgnOkGp3RBv4l9I6szGOe-NuAuWCcg,1492
84
88
  rem/models/entities/image_resource.py,sha256=FIZbGVgsroHY47ESbFIjy0sOtgM8w6vHPUk9lJSVJz4,3254
85
89
  rem/models/entities/message.py,sha256=KHHDBKs_UsWQ-0LURRQlDTV_iiUozmERMBWLPlHPbgg,1966
86
90
  rem/models/entities/moment.py,sha256=sTRFShQwgJMez9OcU7-Vs6k-Whof2TuZCVjdUSyVjVY,4434
87
- rem/models/entities/ontology.py,sha256=ueQ4bKV_-G4DEMNDHEOWxGq9gFbUSvkaJgtOVLWAjzQ,7817
88
- rem/models/entities/ontology_config.py,sha256=TXLARSYEtkBL1o7VDmdEFpRd5rSoLkqZrgYZrk_Xhms,5054
91
+ rem/models/entities/ontology.py,sha256=uJI-GhtvikafiJe2pYECFqGQlIZAHstSwIs9Lu4J6c0,7818
92
+ rem/models/entities/ontology_config.py,sha256=fe-LLM-AaKznVoQ02ou2GvPSAp_Bwez0rk3H0RIUYTw,5055
89
93
  rem/models/entities/resource.py,sha256=FW7R_AylZilb-1iYfZA5MMQw2zA42CUVweKgO-4cwqM,3407
90
94
  rem/models/entities/schema.py,sha256=CEcd49kR_6YgaLLKsWaIb2J0KdbVsgYoi_srPgzr9Aw,2945
91
95
  rem/models/entities/session.py,sha256=VKeTAZZphrKz379Av1hhUTWfQ-DbxLAt3CfU3aDHfwk,2499
92
96
  rem/models/entities/shared_session.py,sha256=PWTH637NHmwziXCgr1BM0KXWLUzHrbfLlYKLH3qdU6A,5901
93
- rem/models/entities/user.py,sha256=Svew38nvZhhXUeDdE8Np37Ljq41JfwwZIEkgxOB2eY8,2820
97
+ rem/models/entities/subscriber.py,sha256=0x51UkGRkAeJfr_0u4srN8H0NrXJEv5MdESeQsjvin4,5181
98
+ rem/models/entities/user.py,sha256=Ps-CWn-Rkj7yYEW768_mSu3maDxysxsJWT2T7XisuN4,2879
94
99
  rem/schemas/README.md,sha256=_WH2A78jyLb11xu8q1tu4pDMlgZfE9WjYqrAUbn2BIM,13588
95
100
  rem/schemas/__init__.py,sha256=cY7Hqc056Mb3t12nfpkAK6WZDvOP1gk4rv0CK4VbhTk,213
96
101
  rem/schemas/agents/README.md,sha256=FZI5B8Miqod7KY3KxidW4q8u9W7FbtigV2VU7ropPS0,2815
97
102
  rem/schemas/agents/rem.yaml,sha256=w8hIZvAnoWmYJrob1gEZ-yi6BXLQoafwlysYeGU168g,8390
103
+ rem/schemas/agents/core/agent-builder.yaml,sha256=-Yy-X1nreK1hEjGad1Pr0ROtG1LiRtidq8-63CMEqL4,7399
98
104
  rem/schemas/agents/core/moment-builder.yaml,sha256=-nieKbEiYKiIwBtTCBtIVDKV-cfXpGn0AJ66BUUm48U,8368
99
105
  rem/schemas/agents/core/rem-query-agent.yaml,sha256=dQyShquyn-2nGooy8tyZ588etfx4kzfAE1xDIBCJCVI,10265
100
106
  rem/schemas/agents/core/resource-affinity-assessor.yaml,sha256=AXS_gvDdjUyFGZO-VJsGx30qKDIQJjdWU81ben-Jrk0,5361
101
107
  rem/schemas/agents/core/simple-assistant.yaml,sha256=H2rf_dL7etoM-hw5LPSVnDJbqh7VAnWJKyQ1_FF3vM4,434
102
108
  rem/schemas/agents/core/user-profile-builder.yaml,sha256=geyNQzkRMzAza1n_c5f44eYCWeoBQir7VxpGFtLitqw,7846
103
- rem/schemas/agents/examples/contract-analyzer.yaml,sha256=DTwdEavRkIwEuQtoBv1vr9SbfAFClpLMHsr7_Ht5O1I,8086
104
- rem/schemas/agents/examples/contract-extractor.yaml,sha256=GKydQXADd6I211flsUOsknZstgXibJPBB_v5f_ud50E,3316
105
- rem/schemas/agents/examples/cv-parser.yaml,sha256=WGDA-xuG85Ajgvt2sE66uLr-RUt_vrWv_mXyzbfcNLU,6353
109
+ rem/schemas/agents/examples/contract-analyzer.yaml,sha256=gGaDBFYhSIKd3Ur8Hjy9TV9vgQtcg-JPt24_K6oauj4,8087
110
+ rem/schemas/agents/examples/contract-extractor.yaml,sha256=mEq7faeSPkgX_OPKRa7l3VFYyyJ5B7-JaSsv0Bf7yAM,3317
111
+ rem/schemas/agents/examples/cv-parser.yaml,sha256=7la4WK9y4J2QRJ8xXc4fwiGlx3L1bEcObbMLpwAzRRg,6354
106
112
  rem/schemas/agents/examples/hello-world.yaml,sha256=CCKxxB_VH8UpDrWeGXbenH4IRgxQM-lixMi1tX6213Y,683
107
113
  rem/schemas/agents/examples/query.yaml,sha256=JAh8KlLJdOe5zV37yBVOMI2scZm_tZNEQWHSVQv1CuI,1251
108
114
  rem/schemas/agents/examples/simple.yaml,sha256=kk0aQdpNptSTHID5hrfO1rbMEbwqKpP9SeZrOuDh1YM,453
@@ -113,9 +119,9 @@ rem/schemas/evaluators/rem/lookup-correctness.yaml,sha256=i0HLGlVzNlf7chVbXMpmyZ
113
119
  rem/schemas/evaluators/rem/retrieval-precision.yaml,sha256=3CekIxTjJ0RFFKVNo-JFIpZ1KFea1WOWuMnRu8i-m1Q,7181
114
120
  rem/schemas/evaluators/rem/retrieval-recall.yaml,sha256=2IuO8uu9hr-Nrn23nDo4rebE5t0eFtxcUYihHh5JwVc,7894
115
121
  rem/schemas/evaluators/rem/search-correctness.yaml,sha256=pODDOMCqnTfAViQnn_KvSO132JYXoZiMeXW-8g7v-JE,6247
116
- rem/services/__init__.py,sha256=oPjNQ-JrsrAEz1Ox7E7v_G416lAslbV5vmNzjAM6IuI,458
122
+ rem/services/__init__.py,sha256=NEm6aX38YW1HcICNGYbYTZb4VGWHgqRev5Rrf6xOQi0,566
117
123
  rem/services/rate_limit.py,sha256=p7tTvGQfyM4XalEMdtGaDKvwCeuKZLQXSoM07aEru98,3725
118
- rem/services/user_service.py,sha256=TYlxUaUUUjAho3F2l8_hqAhe-MSLHd5VoewNe5SdqWw,3132
124
+ rem/services/user_service.py,sha256=TJJDnWgrFviY7yb0bz5jfmYGnuQ2WaGvGvD5OgEOa0Q,4110
119
125
  rem/services/audio/INTEGRATION.md,sha256=j1GhA1Az_x8Q6soxQ2blQ-0Av7he3lkeEw8P4SffI88,9526
120
126
  rem/services/audio/README.md,sha256=VQmqhRNvNqXU549rhf589WBs1iacbvzayhRER1lyXV4,10355
121
127
  rem/services/audio/__init__.py,sha256=jTAbL0324bJESsY9FBum6ybaXaxy7HTlREm9FiuCcSI,438
@@ -124,7 +130,7 @@ rem/services/audio/transcriber.py,sha256=CbUkNr_AyFZ4NImr6giwgDTT_xPmOe3iSr_YPdB
124
130
  rem/services/content/README.md,sha256=nKOYqYbMljCVRZ55dlGU6Afipo0FVV7YXqT_dV-VXsw,35806
125
131
  rem/services/content/__init__.py,sha256=JtfEPROctu3_R5oGdo04PxpgYqXxAz-TbpS8Ejkjdfs,120
126
132
  rem/services/content/providers.py,sha256=xKW6Bn_fJpQGtnESufZcLRh7BAjWqSOLVdYiEg6rYDc,27909
127
- rem/services/content/service.py,sha256=PDdLPuN3mlfCPh-PttbPVjOQ63iIWWm4ApTH0TWEM40,29678
133
+ rem/services/content/service.py,sha256=DjGNmkrRu18ODknD-cxSc2VAI_OtFbkGpbX5EOVXb-g,29765
128
134
  rem/services/dreaming/README.md,sha256=JhzndF6yRP2Eut_AlvukZHV9MSv83V--V2pA0GXXf2g,9100
129
135
  rem/services/dreaming/__init__.py,sha256=3j2TBC1_0z8AlCA9jiqsecyzPFaptCUUHsO_RlXrINc,1719
130
136
  rem/services/dreaming/affinity_service.py,sha256=ScWKwRIPLywqqL2RFd_TsTg_KKmPb0ngBCpOpmIG7w4,12205
@@ -132,6 +138,9 @@ rem/services/dreaming/moment_service.py,sha256=cqUQpqGZx__Gx0m0I-_WmJJgNPrwVwHRQ
132
138
  rem/services/dreaming/ontology_service.py,sha256=hpP3aCYqsP26taq3__Q2w_jmA9-J1wZ7gNrKvBf-HQM,1704
133
139
  rem/services/dreaming/user_model_service.py,sha256=oTuqFdNxegWwVGzOOnwdf5YS2IKQYRNW10bV5efG57E,9929
134
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=p_BnAX789CIaJFTz1zX5m-VLHTp4abYiloz9QXzse1c,17643
143
+ rem/services/email/templates.py,sha256=bXgNweo6xwGJxxDvnjmhI320eyHTRtnyjstYk-Fs_5k,12775
135
144
  rem/services/embeddings/__init__.py,sha256=Jr22tszCfpmishCnnQrS0MBHxiUK_E7rJmNqTeR_xpI,293
136
145
  rem/services/embeddings/api.py,sha256=mDkx_-wWOfjI4uuPIaQDLkfdznEdXQFOvx4VK-Ll4oc,4340
137
146
  rem/services/embeddings/worker.py,sha256=BdPIsR4hv_epbjpLMg7-n_uje6crvhdfZcVha9EzaxA,13993
@@ -155,13 +164,13 @@ rem/services/phoenix/__init__.py,sha256=f6h90EHVrQkyS-ZhPknXwbHp_vrZrQ7HgXmCGc1J
155
164
  rem/services/phoenix/client.py,sha256=0sDm26v7Wi9jTof31Cf0A_5hA_g0HKGQys4qeBqySc0,35214
156
165
  rem/services/phoenix/config.py,sha256=rgFEJ5iENuvBa0_nhEhgz0gW4Sg0uo_fkQMgsnHiTc8,2932
157
166
  rem/services/phoenix/prompt_labels.py,sha256=82VIsXgZ51d3YLzHxusmfzd40yl5YOVnddzv_lNFIGg,13953
158
- rem/services/postgres/README.md,sha256=qPimP6367CvfcuF1DjC0VSL0uoc_ThOVeZ0ioJy_z5Q,21518
167
+ rem/services/postgres/README.md,sha256=Uh9ZyATF2PyNWz-QEtXl7wJ9Q_3Q0SL2hVKO2ncSwB8,22796
159
168
  rem/services/postgres/__init__.py,sha256=hPOVs7Gi42qjz9ySu1y1Fmxcyo21UrhVycw_y4YAF-0,563
160
- rem/services/postgres/diff_service.py,sha256=vffYq6e5Ce_b8yuS01u9r27SYCUnmODa5mH8eeZpInM,19402
169
+ rem/services/postgres/diff_service.py,sha256=J6QFsNmgaJA5I3BtP8_1NNm-OwloG8p44PlHhwCJiYc,20087
161
170
  rem/services/postgres/migration_service.py,sha256=2irsWfzczZ0_-wge6ReyCrFrE3HxvnlwKAEp8mWqtQo,14897
162
- rem/services/postgres/pydantic_to_sqlalchemy.py,sha256=Ao1Qh5epVetw8BfEiBmd-xSfUiBOzcROgrfq5BM_hTM,15950
171
+ rem/services/postgres/pydantic_to_sqlalchemy.py,sha256=09KUBZWe8SgjSvXLkftG9zby8crWqnmDz9KlTJ0MVoM,17248
163
172
  rem/services/postgres/register_type.py,sha256=KwttMTvCdtLvSyW2YICmZ71BBB4oomIoX9IJT-qyEn8,11169
164
- rem/services/postgres/repository.py,sha256=CYbAozL7iAjVnpV8HbQ1HNu8UUlgHzvyBds1qTICfQE,15788
173
+ rem/services/postgres/repository.py,sha256=mY8HAS3eQa7GHLUYtDSVnSzD4-EuggmZUPYM9AmR3s0,15875
165
174
  rem/services/postgres/schema_generator.py,sha256=TpINJtEPcrbISbz3HUo7zEI1C-542HEAsf2m5kOuGM8,23906
166
175
  rem/services/postgres/service.py,sha256=3CIOP7LuaK4p2rYTyscIXasGLTwjb62HnAGbOCuEm74,27122
167
176
  rem/services/postgres/sql_builder.py,sha256=EQZCXBLuOM_trDnr0vwzqJRCKMk9wpZG2ZrY_yBfQMk,10348
@@ -175,15 +184,16 @@ rem/services/rem/query.py,sha256=z4Qcaed1mPG2p-4pazEUlnUFqOEYxrKGYLffwD2-V-c,121
175
184
  rem/services/rem/service.py,sha256=cYPPCZ90S9QRWi_4JxEe9oybdDM8Is7wgYt8EpLoiVY,21093
176
185
  rem/services/session/README.md,sha256=WDoVWMRXrSh6wRSlUQ0oIHUItOol65INl86VCNPUOYQ,10446
177
186
  rem/services/session/__init__.py,sha256=ODLcjnOjLubJU8ncvZsB4SB2zl-mncQQLDZWILwc0Cs,254
178
- rem/services/session/compression.py,sha256=D1kOljLD5bUxukGQKpGmVSjn3Z9Ugx-T3IF--GXMSCw,14236
179
- rem/services/session/reload.py,sha256=MhCielWyhNAP6yqi61q9sc_8CRWAvG2sHBRTvamIcF8,2428
187
+ rem/services/session/compression.py,sha256=8PTGqJ9G4AJaMHzJL5BbVMz_okFSqWbRI3TSHCRYriU,17079
188
+ rem/services/session/reload.py,sha256=qbs9yYYBaEH0n_XN_A4BqHcB0RIX_JMkZjHNzUR6zY4,2805
180
189
  rem/sql/background_indexes.sql,sha256=Lra21QxTvuDOlf0yoF23VOUiHJLRnNWgu0OOR8OXTGQ,1792
181
- rem/sql/migrations/001_install.sql,sha256=LPaIStaDwQ39U-mlMqY6qxMoAAdulyB80ReyiPw_TvA,30039
182
- rem/sql/migrations/002_install_models.sql,sha256=Mzuc8oafgKjAvnvT2Ayan_HuaLISIU5fef5EJF_NoQk,151426
190
+ rem/sql/migrations/001_install.sql,sha256=ZxecG5DT1moSHildSjyeVwzbBATHGySCiJOa_JPpXEI,30040
191
+ rem/sql/migrations/002_install_models.sql,sha256=SMhvFKp70ctaln63ghZq9ED34LWR0__w-ETph7pgvQ4,152648
183
192
  rem/sql/migrations/003_optional_extensions.sql,sha256=QACy3J50ZgV_4BHNkkT3iswkE1ijc0oCAOgavv6KC5g,12443
184
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
185
195
  rem/utils/AGENTIC_CHUNKING.md,sha256=Z9IyL5yoFTlvamPE5KA7cs0Btoc_6bq8hh7Q_WARlw8,17230
186
- rem/utils/README.md,sha256=KMgT5nZT023nFWLZz_f3nHSZZkHmmoS7iTLIVRStk3Y,16830
196
+ rem/utils/README.md,sha256=Osix2SVYAECMFTFnLhn8D8rsPrtNaCBWfkZfkn5RS60,18087
187
197
  rem/utils/__init__.py,sha256=ZGMTgR7g-V3fhfgKo791wGBhdxy72xTJSo7Q_xwkQRI,1417
188
198
  rem/utils/agentic_chunking.py,sha256=B7TIggqOSeHJ5clPPY7O712Wb1xz52Y_2gCPiEZlWqY,21841
189
199
  rem/utils/batch_ops.py,sha256=LgzttGV0O_a8Y70fnsX3XwlSZWZKRTnwBBwxP09BOvw,11689
@@ -193,15 +203,15 @@ rem/utils/constants.py,sha256=aX2GwgtaZx3wztsGNa8HFyKxAWNoZlZv9k45gQ7K3Qs,3283
193
203
  rem/utils/date_utils.py,sha256=LiqyiYcvfw8I-zvfDzPEs1PnwHOEXfmqn_6BDqefEBo,5542
194
204
  rem/utils/dict_utils.py,sha256=qp5myXSgGV2Daz9X-9SKzQDu2WeQeIBBcgFnqd8VhqY,2905
195
205
  rem/utils/embeddings.py,sha256=FnjZFHXgxf__dbubY2HknhDAngizr8j7P28-Sug4-f0,13150
196
- rem/utils/files.py,sha256=8vMiVljs7kDLfGMvcRtJFUH7_F_z4XYGd9cP0h1G78c,4353
206
+ rem/utils/files.py,sha256=6ax-5vmk_4cI-IG55PT9sKj_DqXBl32RkTRSsxqvgGY,8759
197
207
  rem/utils/markdown.py,sha256=zhfSiSRX36vky1b2UOGKsuSr11L2l6Kl_O7iSfwQXBY,401
198
208
  rem/utils/mime_types.py,sha256=8KGEuPWVdQ8r1DFLsgiaAgEYqMaaQIk-6lCVOBB1z_A,5346
199
209
  rem/utils/model_helpers.py,sha256=Cvqeof9KlhkkBmAFxRLtfsh4m_MQ0N8WukI3IDJcTtw,11743
200
- rem/utils/schema_loader.py,sha256=HMFr9SLOqj9N9fdqBBJJUEY86ruPWg75ay-k8B9SdsY,22740
210
+ rem/utils/schema_loader.py,sha256=4sfhbjSuFK8WN3e86IdqN8wsgbIA4dgboWMG-CuZzbY,24050
201
211
  rem/utils/sql_paths.py,sha256=4bEHU3J3liZdhWYu0WSpCQSo-wfO0sHC_BrJlStRAks,4257
202
212
  rem/utils/sql_types.py,sha256=VKGmDhxPP91EnjJ6h78Q2sUvjBulowR1brtgAdACbtE,10622
203
213
  rem/utils/user_id.py,sha256=AhrUniMZYDybHT6mcv9RalUS3klobqkoMmPh9ZxiZcU,2107
204
- rem/utils/vision.py,sha256=8wopXBML-dD-Q-sCatVfCjMq36Fdz9Ism-P1ZQo6rXM,10371
214
+ rem/utils/vision.py,sha256=8LWRlgt8iM9PL9NFyPSu_CD7Ml7eQ9x88LctRb9xvEI,10372
205
215
  rem/utils/examples/embeddings_example.py,sha256=_saDR9G8H03FCdJryVv7HAWFhyatVTRYAJJJRcAI9wo,9010
206
216
  rem/utils/examples/sql_types_example.py,sha256=HuVFBA_HjF9yPhxUr3fyDE5L9_SsOjDoibdw05M_oIM,6465
207
217
  rem/workers/README.md,sha256=k32MnZiNGds5HGyYDUbjDz1Aa4MsOGTX_T_eKKKJTi4,18061
@@ -212,7 +222,7 @@ rem/workers/dreaming.py,sha256=UqCf-iBUhzBVBRFj7_DtR6q27oRo7EUoal9qqHLzlo4,17823
212
222
  rem/workers/engram_processor.py,sha256=Ws92kAILMLK_np3F1HRmhKKXiruLIvFn3o9MY3V2W8g,10779
213
223
  rem/workers/sqs_file_processor.py,sha256=tX8S0yo2n1XGvaZ7JUqeGmtTwxybQqz3wkHT2j6Ak7Y,6597
214
224
  rem/workers/unlogged_maintainer.py,sha256=KhebhXl3s6DwvHnXXEJ45r5tLK9PNj-0KclNIQVQ68s,15817
215
- remdb-0.3.127.dist-info/METADATA,sha256=8WYdD-jOEkqN9ztNRxLmxkLiQZDsfQ5VfDqPSKNfyi8,53247
216
- remdb-0.3.127.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
217
- remdb-0.3.127.dist-info/entry_points.txt,sha256=gmmrz7tRC1WGUrCMJMg6p5pEP5h5mPYRvWIxp1FYdr0,42
218
- remdb-0.3.127.dist-info/RECORD,,
225
+ remdb-0.3.172.dist-info/METADATA,sha256=oO8NiZVpe-znrSYjzpSCMlyd27oHfnpRBPspo976j6c,53341
226
+ remdb-0.3.172.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
227
+ remdb-0.3.172.dist-info/entry_points.txt,sha256=gmmrz7tRC1WGUrCMJMg6p5pEP5h5mPYRvWIxp1FYdr0,42
228
+ remdb-0.3.172.dist-info/RECORD,,