remdb 0.3.118__py3-none-any.whl → 0.3.141__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 (40) hide show
  1. rem/agentic/agents/sse_simulator.py +2 -0
  2. rem/agentic/context.py +23 -3
  3. rem/agentic/mcp/tool_wrapper.py +126 -15
  4. rem/agentic/otel/setup.py +1 -0
  5. rem/agentic/providers/phoenix.py +371 -108
  6. rem/agentic/providers/pydantic_ai.py +122 -43
  7. rem/agentic/schema.py +4 -1
  8. rem/api/mcp_router/tools.py +13 -2
  9. rem/api/routers/chat/completions.py +250 -4
  10. rem/api/routers/chat/models.py +81 -7
  11. rem/api/routers/chat/otel_utils.py +33 -0
  12. rem/api/routers/chat/sse_events.py +17 -1
  13. rem/api/routers/chat/streaming.py +35 -1
  14. rem/api/routers/feedback.py +134 -14
  15. rem/cli/commands/cluster.py +590 -82
  16. rem/cli/commands/configure.py +3 -4
  17. rem/cli/commands/experiments.py +436 -30
  18. rem/cli/commands/session.py +336 -0
  19. rem/cli/dreaming.py +2 -2
  20. rem/cli/main.py +2 -0
  21. rem/config.py +8 -1
  22. rem/models/core/experiment.py +54 -0
  23. rem/models/entities/ontology.py +1 -1
  24. rem/models/entities/ontology_config.py +1 -1
  25. rem/schemas/agents/examples/contract-analyzer.yaml +1 -1
  26. rem/schemas/agents/examples/contract-extractor.yaml +1 -1
  27. rem/schemas/agents/examples/cv-parser.yaml +1 -1
  28. rem/services/phoenix/client.py +59 -18
  29. rem/services/session/compression.py +7 -0
  30. rem/settings.py +236 -13
  31. rem/sql/migrations/002_install_models.sql +91 -91
  32. rem/sql/migrations/004_cache_system.sql +1 -1
  33. rem/utils/schema_loader.py +94 -3
  34. rem/utils/vision.py +1 -1
  35. rem/workers/__init__.py +2 -1
  36. rem/workers/db_listener.py +579 -0
  37. {remdb-0.3.118.dist-info → remdb-0.3.141.dist-info}/METADATA +156 -144
  38. {remdb-0.3.118.dist-info → remdb-0.3.141.dist-info}/RECORD +40 -37
  39. {remdb-0.3.118.dist-info → remdb-0.3.141.dist-info}/WHEEL +0 -0
  40. {remdb-0.3.118.dist-info → remdb-0.3.141.dist-info}/entry_points.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: remdb
3
- Version: 0.3.118
3
+ Version: 0.3.141
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
@@ -123,9 +123,8 @@ Cloud-native unified memory infrastructure for agentic AI systems built with Pyd
123
123
 
124
124
  Choose your path:
125
125
 
126
- - **Option 1: Package Users with Example Data** (Recommended for first-time users) - PyPI + example datasets
127
- - **Option 2: Package Users** (Recommended for non-developers) - PyPI package + dockerized database
128
- - **Option 3: Developers** - Clone repo, local development with uv
126
+ - **Option 1: Package Users with Example Data** (Recommended) - PyPI + example datasets
127
+ - **Option 2: Developers** - Clone repo, local development with uv
129
128
 
130
129
  ---
131
130
 
@@ -144,10 +143,6 @@ pip install "remdb[all]"
144
143
  git clone https://github.com/Percolation-Labs/remstack-lab.git
145
144
  cd remstack-lab
146
145
 
147
- # Optional: Set default LLM provider via environment variable
148
- # export LLM__DEFAULT_MODEL="openai:gpt-4.1-nano" # Fast and cheap
149
- # export LLM__DEFAULT_MODEL="anthropic:claude-sonnet-4-5-20250929" # High quality (default)
150
-
151
146
  # Start PostgreSQL with docker-compose
152
147
  curl -O https://gist.githubusercontent.com/percolating-sirsh/d117b673bc0edfdef1a5068ccd3cf3e5/raw/docker-compose.prebuilt.yml
153
148
  docker compose -f docker-compose.prebuilt.yml up -d postgres
@@ -163,7 +158,7 @@ rem db load datasets/quickstart/sample_data.yaml
163
158
  rem ask "What documents exist in the system?"
164
159
  rem ask "Show me meetings about API design"
165
160
 
166
- # Ingest files (PDF, DOCX, images, etc.) - note: requires remstack-lab
161
+ # Ingest files (PDF, DOCX, images, etc.)
167
162
  rem process ingest datasets/formats/files/bitcoin_whitepaper.pdf --category research --tags bitcoin,whitepaper
168
163
 
169
164
  # Query ingested content
@@ -177,125 +172,39 @@ rem ask "What is the Bitcoin whitepaper about?"
177
172
 
178
173
  **Learn more**: [remstack-lab repository](https://github.com/Percolation-Labs/remstack-lab)
179
174
 
180
- ---
181
-
182
- ## Option 2: Package Users (No Example Data)
183
-
184
- **Best for**: Using REM as a service (API + CLI) without modifying code, bringing your own data.
175
+ ### Using the API
185
176
 
186
- ### Step 1: Start Database and API with Docker Compose
177
+ Once configured, you can also use the OpenAI-compatible chat completions API:
187
178
 
188
179
  ```bash
189
- # Create a project directory
190
- mkdir my-rem-project && cd my-rem-project
191
-
192
- # Download docker-compose file from public gist
193
- curl -O https://gist.githubusercontent.com/percolating-sirsh/d117b673bc0edfdef1a5068ccd3cf3e5/raw/docker-compose.prebuilt.yml
194
-
195
- # IMPORTANT: Export API keys BEFORE running docker compose
196
- # Docker Compose reads env vars at startup - exporting them after won't work!
197
-
198
- # Required: OpenAI for embeddings (text-embedding-3-small)
199
- export OPENAI_API_KEY="sk-..."
200
-
201
- # Recommended: At least one chat completion provider
202
- export ANTHROPIC_API_KEY="sk-ant-..." # Claude Sonnet 4.5 (high quality)
203
- export CEREBRAS_API_KEY="csk-..." # Cerebras (fast, cheap inference)
204
-
205
- # Start PostgreSQL + API
180
+ # Start the API server (if not using docker-compose for API)
206
181
  docker compose -f docker-compose.prebuilt.yml up -d
207
182
 
208
- # Verify services are running
209
- curl http://localhost:8000/health
210
- ```
211
-
212
- This starts:
213
- - **PostgreSQL** with pgvector on port **5051** (connection: `postgresql://rem:rem@localhost:5051/rem`)
214
- - **REM API** on port **8000** with OpenAI-compatible chat completions + MCP server
215
- - Uses pre-built Docker image from Docker Hub (no local build required)
216
-
217
- ### Step 2: Install and Configure CLI (REQUIRED)
218
-
219
- **This step is required** before you can use REM - it installs the database schema and configures your LLM API keys.
220
-
221
- ```bash
222
- # Install remdb package from PyPI
223
- pip install remdb[all]
224
-
225
- # Configure REM (defaults to port 5051 for package users)
226
- rem configure --install --claude-desktop
183
+ # Test the API
184
+ curl -X POST http://localhost:8000/api/v1/chat/completions \
185
+ -H "Content-Type: application/json" \
186
+ -H "X-Session-Id: a1b2c3d4-e5f6-7890-abcd-ef1234567890" \
187
+ -d '{
188
+ "model": "anthropic:claude-sonnet-4-5-20250929",
189
+ "messages": [{"role": "user", "content": "What documents did Sarah Chen author?"}],
190
+ "stream": false
191
+ }'
227
192
  ```
228
193
 
229
- The interactive wizard will:
230
- 1. **Configure PostgreSQL**: Defaults to `postgresql://rem:rem@localhost:5051/rem` (prebuilt docker-compose)
231
- - Just press Enter to accept defaults
232
- - Custom database: Enter your own host/port/credentials
233
- 2. **Configure LLM providers**: Enter your OpenAI/Anthropic API keys
234
- 3. **Install database tables**: Creates schema, functions, indexes (**required for CLI/API to work**)
235
- 4. **Register with Claude Desktop**: Adds REM MCP server to Claude
236
-
237
- Configuration saved to `~/.rem/config.yaml` (can edit with `rem configure --edit`)
238
-
239
194
  **Port Guide:**
240
195
  - **5051**: Package users with `docker-compose.prebuilt.yml` (pre-built image)
241
196
  - **5050**: Developers with `docker-compose.yml` (local build)
242
- - **Custom**: Your own PostgreSQL database
243
197
 
244
198
  **Next Steps:**
245
199
  - See [CLI Reference](#cli-reference) for all available commands
246
200
  - See [REM Query Dialect](#rem-query-dialect) for query examples
247
201
  - See [API Endpoints](#api-endpoints) for OpenAI-compatible API usage
248
202
 
249
- ### Step 3: Load Sample Data (Optional but Recommended)
250
-
251
- **Option A: Clone example datasets** (Recommended - works with all README examples)
252
-
253
- ```bash
254
- # Clone datasets repository
255
- git clone https://github.com/Percolation-Labs/remstack-lab.git
256
-
257
- # Load quickstart dataset
258
- rem db load --file remstack-lab/datasets/quickstart/sample_data.yaml
259
-
260
- # Test with sample queries
261
- rem ask "What documents exist in the system?"
262
- rem ask "Show me meetings about API design"
263
- rem ask "Who is Sarah Chen?"
264
- ```
265
-
266
- **Option B: Bring your own data**
267
-
268
- ```bash
269
- # Ingest your own files
270
- echo "REM is a bio-inspired memory system for agentic AI workloads." > test-doc.txt
271
- rem process ingest test-doc.txt --category documentation --tags rem,ai
272
-
273
- # Query your ingested data
274
- rem ask "What do you know about REM from my knowledge base?"
275
- ```
276
-
277
- ### Step 4: Test the API
278
-
279
- ```bash
280
- # Test the OpenAI-compatible chat completions API
281
- curl -X POST http://localhost:8000/api/v1/chat/completions \
282
- -H "Content-Type: application/json" \
283
- -d '{
284
- "model": "anthropic:claude-sonnet-4-5-20250929",
285
- "messages": [{"role": "user", "content": "What documents did Sarah Chen author?"}],
286
- "stream": false
287
- }'
288
- ```
289
-
290
- **Available Commands:**
291
- - `rem ask` - Natural language queries to REM
292
- - `rem process ingest <file>` - Full ingestion pipeline (storage + parsing + embedding + database)
293
- - `rem process uri <file>` - READ-ONLY parsing (no database storage, useful for testing parsers)
294
- - `rem db load --file <yaml>` - Load structured datasets directly
203
+ ---
295
204
 
296
205
  ## Example Datasets
297
206
 
298
- 🎯 **Recommended**: Clone [remstack-lab](https://github.com/Percolation-Labs/remstack-lab) for curated datasets organized by domain and format.
207
+ Clone [remstack-lab](https://github.com/Percolation-Labs/remstack-lab) for curated datasets organized by domain and format.
299
208
 
300
209
  **What's included:**
301
210
  - **Quickstart**: Minimal dataset (3 users, 3 resources, 3 moments) - perfect for first-time users
@@ -422,7 +331,7 @@ rem ask research-assistant "Find documents about machine learning architecture"
422
331
  rem ask research-assistant "Summarize recent API design documents" --stream
423
332
 
424
333
  # With session continuity
425
- rem ask research-assistant "What did we discuss about ML?" --session-id abc-123
334
+ rem ask research-assistant "What did we discuss about ML?" --session-id c3d4e5f6-a7b8-9012-cdef-345678901234
426
335
  ```
427
336
 
428
337
  ### Agent Schema Structure
@@ -475,14 +384,6 @@ rem process ingest my-agent.yaml --user-id tenant-a --category agents
475
384
  rem ask my-agent "test" --user-id tenant-a
476
385
  ```
477
386
 
478
- ### Advanced: Ontology Extractors
479
-
480
- Custom agents can also be used as **ontology extractors** to extract structured knowledge from files. See [CLAUDE.md](../CLAUDE.md#ontology-extraction-pattern) for details on:
481
- - Multi-provider testing (`provider_configs`)
482
- - Semantic search configuration (`embedding_fields`)
483
- - File matching rules (`OntologyConfig`)
484
- - Dreaming workflow integration
485
-
486
387
  ### Troubleshooting
487
388
 
488
389
  **Schema not found error:**
@@ -700,8 +601,8 @@ POST /api/v1/chat/completions
700
601
  ```
701
602
 
702
603
  **Headers**:
703
- - `X-Tenant-Id`: Tenant identifier (optional, for multi-tenant deployments)
704
- - `X-User-Id`: User identifier (optional, uses default if not provided)
604
+ - `X-User-Id`: User identifier (required for data isolation, uses default if not provided)
605
+ - `X-Tenant-Id`: Deprecated - use `X-User-Id` instead (kept for backwards compatibility)
705
606
  - `X-Session-Id`: Session/conversation identifier
706
607
  - `X-Agent-Schema`: Agent schema URI to use
707
608
 
@@ -1235,7 +1136,7 @@ export API__RELOAD=true
1235
1136
  rem serve
1236
1137
  ```
1237
1138
 
1238
- ## Development (For Contributors)
1139
+ ## Option 2: Development (For Contributors)
1239
1140
 
1240
1141
  **Best for**: Contributing to REM or customizing the codebase.
1241
1142
 
@@ -1531,45 +1432,156 @@ Successfully installed ... kreuzberg-4.0.0rc1 ... remdb-0.3.10
1531
1432
 
1532
1433
  REM wraps FastAPI - extend it exactly as you would any FastAPI app.
1533
1434
 
1435
+ ### Recommended Project Structure
1436
+
1437
+ REM auto-detects `./agents/` and `./models/` folders - no configuration needed:
1438
+
1439
+ ```
1440
+ my-rem-app/
1441
+ ├── agents/ # Auto-detected for agent schemas
1442
+ │ ├── my-agent.yaml # Custom agent (rem ask my-agent "query")
1443
+ │ └── another-agent.yaml
1444
+ ├── models/ # Auto-detected if __init__.py exists
1445
+ │ └── __init__.py # Register models with @rem.register_model
1446
+ ├── routers/ # Custom FastAPI routers
1447
+ │ └── custom.py
1448
+ ├── main.py # Entry point
1449
+ └── pyproject.toml
1450
+ ```
1451
+
1452
+ ### Quick Start
1453
+
1534
1454
  ```python
1535
- import rem
1455
+ # main.py
1536
1456
  from rem import create_app
1537
- from rem.models.core import CoreModel
1457
+ from fastapi import APIRouter
1538
1458
 
1539
- # 1. Register models (for schema generation)
1540
- rem.register_models(MyModel, AnotherModel)
1459
+ # Create REM app (auto-detects ./agents/ and ./models/)
1460
+ app = create_app()
1541
1461
 
1542
- # 2. Register schema paths (for custom agents/evaluators)
1543
- rem.register_schema_path("./schemas")
1462
+ # Add custom router
1463
+ router = APIRouter(prefix="/custom", tags=["custom"])
1544
1464
 
1545
- # 3. Create app
1546
- app = create_app()
1465
+ @router.get("/hello")
1466
+ async def hello():
1467
+ return {"message": "Hello from custom router!"}
1547
1468
 
1548
- # 4. Extend like normal FastAPI
1549
- app.include_router(my_router)
1469
+ app.include_router(router)
1550
1470
 
1471
+ # Add custom MCP tool
1551
1472
  @app.mcp_server.tool()
1552
1473
  async def my_tool(query: str) -> dict:
1553
- """Custom MCP tool."""
1474
+ """Custom MCP tool available to agents."""
1554
1475
  return {"result": query}
1555
1476
  ```
1556
1477
 
1557
- ### Project Structure
1478
+ ### Custom Models (Auto-Detected)
1558
1479
 
1480
+ ```python
1481
+ # models/__init__.py
1482
+ import rem
1483
+ from rem.models.core import CoreModel
1484
+ from pydantic import Field
1485
+
1486
+ @rem.register_model
1487
+ class MyEntity(CoreModel):
1488
+ """Custom entity - auto-registered for schema generation."""
1489
+ name: str = Field(description="Entity name")
1490
+ status: str = Field(default="active")
1559
1491
  ```
1560
- my-rem-app/
1561
- ├── my_app/
1562
- │ ├── main.py # Entry point (create_app + extensions)
1563
- │ ├── models.py # Custom models (inherit CoreModel)
1564
- │ └── routers/ # Custom FastAPI routers
1565
- ├── schemas/
1566
- │ ├── agents/ # Custom agent YAML schemas
1567
- │ └── evaluators/ # Custom evaluator schemas
1568
- ├── sql/migrations/ # Custom SQL migrations
1569
- └── pyproject.toml
1492
+
1493
+ Run `rem db schema generate` to include your models in the database schema.
1494
+
1495
+ ### Custom Agents (Auto-Detected)
1496
+
1497
+ ```yaml
1498
+ # agents/my-agent.yaml
1499
+ type: object
1500
+ description: |
1501
+ You are a helpful assistant that...
1502
+
1503
+ properties:
1504
+ answer:
1505
+ type: string
1506
+ description: Your response
1507
+
1508
+ required:
1509
+ - answer
1510
+
1511
+ json_schema_extra:
1512
+ kind: agent
1513
+ name: my-agent
1514
+ version: "1.0.0"
1515
+ tools:
1516
+ - search_rem
1570
1517
  ```
1571
1518
 
1572
- Generate this structure with: `rem scaffold my-app`
1519
+ Test with: `rem ask my-agent "Hello!"`
1520
+
1521
+ ### Example Custom Router
1522
+
1523
+ ```python
1524
+ # routers/analytics.py
1525
+ from fastapi import APIRouter, Depends
1526
+ from rem.services.postgres import get_postgres_service
1527
+
1528
+ router = APIRouter(prefix="/analytics", tags=["analytics"])
1529
+
1530
+ @router.get("/stats")
1531
+ async def get_stats():
1532
+ """Get database statistics."""
1533
+ db = get_postgres_service()
1534
+ if not db:
1535
+ return {"error": "Database not available"}
1536
+
1537
+ await db.connect()
1538
+ try:
1539
+ result = await db.execute(
1540
+ "SELECT COUNT(*) as count FROM resources"
1541
+ )
1542
+ return {"resource_count": result[0]["count"]}
1543
+ finally:
1544
+ await db.disconnect()
1545
+
1546
+ @router.get("/recent")
1547
+ async def get_recent(limit: int = 10):
1548
+ """Get recent resources."""
1549
+ db = get_postgres_service()
1550
+ if not db:
1551
+ return {"error": "Database not available"}
1552
+
1553
+ await db.connect()
1554
+ try:
1555
+ result = await db.execute(
1556
+ f"SELECT label, category, created_at FROM resources ORDER BY created_at DESC LIMIT {limit}"
1557
+ )
1558
+ return {"resources": result}
1559
+ finally:
1560
+ await db.disconnect()
1561
+ ```
1562
+
1563
+ Include in main.py:
1564
+
1565
+ ```python
1566
+ from routers.analytics import router as analytics_router
1567
+ app.include_router(analytics_router)
1568
+ ```
1569
+
1570
+ ### Running the App
1571
+
1572
+ ```bash
1573
+ # Development (auto-reload)
1574
+ uv run uvicorn main:app --reload --port 8000
1575
+
1576
+ # Or use rem serve
1577
+ uv run rem serve --reload
1578
+
1579
+ # Test agent
1580
+ uv run rem ask my-agent "What can you help me with?"
1581
+
1582
+ # Test custom endpoint
1583
+ curl http://localhost:8000/analytics/stats
1584
+ ```
1573
1585
 
1574
1586
  ### Extension Points
1575
1587
 
@@ -1,27 +1,27 @@
1
1
  rem/__init__.py,sha256=bghAeI1VxL6qbYB8kvC39zfc00BlztykdmKiubDYE7w,3079
2
- rem/config.py,sha256=y0-llMfPwICNwRdek6sgxuuKxdfS6k1n-bd4shvyqjU,6442
2
+ 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=yl-J8One1bo9TqWmhO4_XS-HtPl4LLOqgBV_BSuRmVw,45296
6
+ rem/settings.py,sha256=BSV06mmQZxefSG2J8Uxwhe6VJsl7FsFhOODXdiVyj6k,53591
7
7
  rem/agentic/README.md,sha256=brF1Z1V6s8z5TLoyNPQ3BC5mqDy648QRPOQmGu6Jkzw,21815
8
8
  rem/agentic/__init__.py,sha256=-UZiEYpodfD5xDns6L0nYSqK9owr3NxiWsq6vmK1tGk,1268
9
- rem/agentic/context.py,sha256=vHNQdvbvV0JqpM1zfcEESiAs7pwI5lSvS6B5e32C-ec,5441
9
+ rem/agentic/context.py,sha256=EBw2rQ85mygJZHaHfO2A59cu3rgI2vfy1A0Qhri99DE,6282
10
10
  rem/agentic/context_builder.py,sha256=AkZPYMFhTWde6DiQ4yGgNmV32qDQQj-13SZnj3ppnFE,12686
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=PKcVvotbEmAyfqW7qkmO9cdZkUduwl89lSI7IUaVyJY,22914
15
15
  rem/agentic/serialization.py,sha256=zwjyvcGjTHuChG9goRHEVlA3etAekVJGzv9o6Fo7raM,7999
16
16
  rem/agentic/agents/README.md,sha256=npq2ENb5dNGYxqGQYTb9E0JquyKcXrMt8kM2q6LRxRk,4972
17
17
  rem/agentic/agents/__init__.py,sha256=N4I_-yGieWMl5vEJ94yQ1v5WhQy2Z2-vOdyX3LcTzuk,581
18
- rem/agentic/agents/sse_simulator.py,sha256=SEWflmJqHTwDzpXzCWTc7enk7bgYgMDk4sW2HolzwBM,16320
18
+ rem/agentic/agents/sse_simulator.py,sha256=NTJuunUlEY5KFUKbxgkrt5iihdVIEAqPsufUVisziaQ,16392
19
19
  rem/agentic/mcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
- rem/agentic/mcp/tool_wrapper.py,sha256=QeJxGcfqZ1ScrYfPSmHk2gIjZB9vQGCLKMguhbIXUm4,4828
20
+ rem/agentic/mcp/tool_wrapper.py,sha256=ZHKWIeHwnvIegbRwUG1xovmTOLYcY9i28liBHNB6UH8,10012
21
21
  rem/agentic/otel/__init__.py,sha256=IC0lLMmuxXRZrhO9p8-GQ6raZDP9YE3gcuCwl6vBv4c,195
22
- rem/agentic/otel/setup.py,sha256=l3oczCbcbdAbF2AyeFb1OlMgKdXz8qiE7pYmI6I470g,9580
23
- rem/agentic/providers/phoenix.py,sha256=eWasZ8Vcf_K8q4xDyVuYhogihvyDQVpObeu0PLVMfCE,24194
24
- rem/agentic/providers/pydantic_ai.py,sha256=7g4kEsX4OaORy0bDfMLeglG6Ycf7EYkLcGROac0llI8,28408
22
+ rem/agentic/otel/setup.py,sha256=-NL5jDXuDdQMKEhZfOtjZ2kJtpayQ7dhM0p1OrU185c,9629
23
+ rem/agentic/providers/phoenix.py,sha256=_e8-S8aSfpX2EulH0nXAermoDZ1c9Kh3QALGTCvCmC4,35422
24
+ rem/agentic/providers/pydantic_ai.py,sha256=GHFBmN8KaMYe6eLSysA1g_fY30fUI6B5EDVoproM6F0,31746
25
25
  rem/agentic/tools/__init__.py,sha256=tb_9ml0i2LtEALAJ6h7D91xVEA_8ktDzD4s3nM0MsUE,147
26
26
  rem/agentic/tools/rem_tools.py,sha256=xhLohuAsv0AUjXLMXa-n9KchhkHxEi7jq1BsjPBuogw,7344
27
27
  rem/api/README.md,sha256=68KtBi1nkXm_J0skGVBhchXP-cLNaBBka6ZhLqAncoA,19998
@@ -30,22 +30,23 @@ rem/api/main.py,sha256=_vfKH_DBWuempKs-YOS0gQOUbsHe3l1kEoVSvD-sOkQ,15917
30
30
  rem/api/mcp_router/prompts.py,sha256=bVNsJMur6i0oyd38WIr-r0kUNUAlcGG595WVhBDwxik,4077
31
31
  rem/api/mcp_router/resources.py,sha256=2Ph0psMbCpH6MUJhV-uFSZJQwGbGELE2zoXBt9yOmL4,16194
32
32
  rem/api/mcp_router/server.py,sha256=boaxrFqywbiv0-hZ6nOvWrNXYlrG7thtmqa9dSv9sKE,11181
33
- rem/api/mcp_router/tools.py,sha256=ctxN95VbE2dbmFoyia15oLyWnhR9KnZRhVXdxpNgIgk,35314
33
+ rem/api/mcp_router/tools.py,sha256=H2YaJvT2HSDr68j3EOrHPWU3M742e4T1Me9oUdsnIYs,35719
34
34
  rem/api/middleware/tracking.py,sha256=cA9ChbBQ8-QipLlyGrTUsd7eMtHGzZ9Cp4iEHBgOQiM,6326
35
35
  rem/api/routers/admin.py,sha256=AEvfi5QyfTG_3a8LZ5FPgbOXPajKeIu_5P6oqmLYa1E,14696
36
36
  rem/api/routers/auth.py,sha256=cDvPvqmMxr5FRign98K87Rp8GtVD2V9oZWoSPeqnP1o,11918
37
37
  rem/api/routers/dev.py,sha256=rLySeGas9USZxMxJiHU4ziaA8EK9aoc8dg7TpJagV-I,2229
38
- rem/api/routers/feedback.py,sha256=vrZxw3sqo1hsqgj5vjxiW71MS_2EHk9tSOP4YIo8UD4,4841
38
+ rem/api/routers/feedback.py,sha256=UfDQlqeRwB1b4Q0agJOBahiAHL_aAHMb_l7TEjwZuGs,11378
39
39
  rem/api/routers/messages.py,sha256=Av-fFeRLn_xMWDv0cdggfy4bw05WIHK0phWtPoffhOw,16292
40
40
  rem/api/routers/models.py,sha256=GMhDJzLrWe-gp842F1Vua2XOjZNAcIG-p-tCquJ5FQM,1946
41
41
  rem/api/routers/query.py,sha256=cYV2HoSqMHr7kgeEFhx2GqUt_9Geg756JgJoYrX6OrU,13972
42
42
  rem/api/routers/shared_sessions.py,sha256=9vQoQOsQhqWzcoJZ7_dhvi6zJlR5B72LP5THLfm--Ts,12259
43
43
  rem/api/routers/chat/__init__.py,sha256=fck9klAzF7HJHNPAhl0B63uSavXvs6h26QhUsByf4JM,113
44
- rem/api/routers/chat/completions.py,sha256=4UAWZqRj59SFuY31LMlmTG52lqnGhZTHOqP9dc7TpFk,17631
44
+ rem/api/routers/chat/completions.py,sha256=6kNlys_Vw2eMe8JJ7PhSLluq22cFboiMdJL49eSasnU,27092
45
45
  rem/api/routers/chat/json_utils.py,sha256=BVRu-7PWIHTbC9Ubq4MfifZ8qYQZpcGhEgFgPVcXXKE,2191
46
- rem/api/routers/chat/models.py,sha256=lNEs5NnNROSuaMn7KUr4PwHFXmgz9l_1An6G-iWT8mY,3905
47
- rem/api/routers/chat/sse_events.py,sha256=WGC_x9-4yRm8zyyI42KPwwn0tmm3JP6xZGOq2QJaZcU,15919
48
- rem/api/routers/chat/streaming.py,sha256=zw0XAjV5jv9DWZNvGRM5tyxrvpT7O6UEAnu_cxiZWGk,35270
46
+ rem/api/routers/chat/models.py,sha256=kzBxRvm5Ie2IchJrnFOom8cx6_ieEbuF2RqfiRJNNh8,7339
47
+ rem/api/routers/chat/otel_utils.py,sha256=al_4v044T3sOtIZtT9kHiNT6Twlc7wqz26edCcUSHSY,930
48
+ rem/api/routers/chat/sse_events.py,sha256=CS1yuor09Qq48bpJBODu7INS94S4GjS8YsPZkIc3Ii8,16508
49
+ rem/api/routers/chat/streaming.py,sha256=bHSDfTjpMS7wMjF1ovKWoH7mPngh7O5EHMzadOLBxKg,37287
49
50
  rem/auth/README.md,sha256=BpZUqEVYMUpQG4guykyuvmtzlH3_LsGzspuRZS20i8k,8631
50
51
  rem/auth/__init__.py,sha256=NuOzrlipfiRUM7lwuEJTzc-b8lYWCxDl_7V82FxElJA,700
51
52
  rem/auth/middleware.py,sha256=_55Va07HElp_fhB9ROyI8bhRXCSCVZ7bROw2vXCer1Y,7381
@@ -55,25 +56,26 @@ rem/auth/providers/google.py,sha256=p3JAYOtyWwiN6T05rZI6sQJqrXhHaunaNOucHTBzWWc,
55
56
  rem/auth/providers/microsoft.py,sha256=sv6emYa5B7XTk6gi18n_UCLPDqUmrrsuDnAnWGvJAYA,8444
56
57
  rem/cli/README.md,sha256=UxmsXjxmee39xUrE7TRJ093Pfhazi58LhRqLfQsYA8g,11857
57
58
  rem/cli/__init__.py,sha256=NazCCnBFZwMkvJgzeGkfYveP_MUpvbqHcOLZihew0-Q,188
58
- rem/cli/dreaming.py,sha256=yMTRaSwllB5anQ2aWUAYFqej_6jjeZ8eoqh8liDhqfU,11535
59
- rem/cli/main.py,sha256=w4NtuVqc0axV-TVI3rlv0gnXZ0Tou4Qdjbfu76CJ73A,3022
59
+ rem/cli/dreaming.py,sha256=UUxx9zXFDIvI5QhCLB303TPH0OiYMnr3l2YhF2GvF_8,11537
60
+ rem/cli/main.py,sha256=gP-lnD6kkCGeeMHh9aWPRb26CT1zpsDUwuQ30Zqkobw,3127
60
61
  rem/cli/commands/README.md,sha256=CxTm4pAKVzE780sWn_sAILu2_nH_0oh9whppZvW4bew,9295
61
62
  rem/cli/commands/__init__.py,sha256=wKff1WrBXwf-vDXjSvUuk-61Npm5716okVnOQ22FcEk,30
62
63
  rem/cli/commands/ask.py,sha256=VTKL-E3_XZ8OWX16RCDAeAPrp28PLyXMgh63CNF-29Q,19389
63
- rem/cli/commands/cluster.py,sha256=aE4b8c6qYzZk21HI2lusNGgk4CwPCEZhm0lvDPbc3uo,43490
64
- rem/cli/commands/configure.py,sha256=nNr_r4TTYw9xncDpaa6T71n2N8I-ffn1UOUSbyLFrn8,16652
64
+ rem/cli/commands/cluster.py,sha256=MQThC3Da73ixVQ75UYxleQlB8AqPQLzEK73eaB8pNFI,64247
65
+ rem/cli/commands/configure.py,sha256=GQzlER8PkUCTaeYuLbXUYoeqlmEDafcjAcPJrDchC1I,16595
65
66
  rem/cli/commands/db.py,sha256=5Enkq7CG7fOpIwMGQ_yF4mTEP3wmoZK3ic3jxERi7Fk,24953
66
67
  rem/cli/commands/dreaming.py,sha256=2P8nyX9gnRgyCJZrDuyJt5_YAsFmjUGa6dg7OvoLA8k,13292
67
- rem/cli/commands/experiments.py,sha256=ye8vgxiWokfisTSPDpnGif5MVTx_s-hK6BeQeb5yIh8,47730
68
+ rem/cli/commands/experiments.py,sha256=wAYyh3ti8QJkSS79mXkQ8zOAQQh3vNOwOc3g9xFlE4I,63319
68
69
  rem/cli/commands/mcp.py,sha256=PiP_zXflZ2lPVgmH3N8EGOWXDSfvNTQJD-MMW3ym3xo,1666
69
70
  rem/cli/commands/process.py,sha256=DCV7KuS3idRkJ7hsl4uxFqdt67RbxuCP3DL9VeqQuFQ,8630
70
71
  rem/cli/commands/scaffold.py,sha256=hv2-ozD1bbD8FEky7OdIDzcgu-KISs5ek6APqykdZ6I,1618
71
72
  rem/cli/commands/schema.py,sha256=oCsRUoih2MC_mpxmj14hsQy0xWLCddSUYcfGnDMlbuw,7325
72
73
  rem/cli/commands/serve.py,sha256=ku6z5gxRwmY-vNdNELGPA8aiYyO4QGRgJ_H4wpusd8Y,2926
74
+ rem/cli/commands/session.py,sha256=rUDeLnBNwc6A1zSOOs-uHyfixDmBYlVtLToJpbPxo7I,9851
73
75
  rem/models/core/__init__.py,sha256=BBbARx5_7uVz5FuuoPdFm3tbiWZWubs97i3smU0UxXg,1449
74
76
  rem/models/core/core_model.py,sha256=aYVx2905n0b6TGLnIiV5YMWO2O8pxHVtLEWljWvURxU,2617
75
77
  rem/models/core/engram.py,sha256=CuoilA74hmlgMT2mZCoEEh0jFsMrKUw9wdyFOygBa8E,10135
76
- rem/models/core/experiment.py,sha256=QboyXIE-I9zLyOw2UZCvN9Sne3uky3Bk_LKTthoR5AI,18977
78
+ rem/models/core/experiment.py,sha256=F3MEJSFnkZYSUDTIg2W1SYFP1D2cCnWED99CJZN_i7g,20909
77
79
  rem/models/core/inline_edge.py,sha256=BVOYchWzb5vYRPTBJEKh06YDwzL_NKdvCRg4BtXRn7g,5059
78
80
  rem/models/core/rem_query.py,sha256=EpD1NdhxgptW81ID1_q2pnYhioM8J4Efx-JFJsNW_i0,8108
79
81
  rem/models/entities/__init__.py,sha256=p3eOFNZdlQ_dF0ZdXR9sHPHu_btMd5mZmw0v5iL8uik,1878
@@ -83,8 +85,8 @@ rem/models/entities/file.py,sha256=plUm0Caww_yNrpgnOkGp3RBv4l9I6szGOe-NuAuWCcg,1
83
85
  rem/models/entities/image_resource.py,sha256=FIZbGVgsroHY47ESbFIjy0sOtgM8w6vHPUk9lJSVJz4,3254
84
86
  rem/models/entities/message.py,sha256=KHHDBKs_UsWQ-0LURRQlDTV_iiUozmERMBWLPlHPbgg,1966
85
87
  rem/models/entities/moment.py,sha256=sTRFShQwgJMez9OcU7-Vs6k-Whof2TuZCVjdUSyVjVY,4434
86
- rem/models/entities/ontology.py,sha256=ueQ4bKV_-G4DEMNDHEOWxGq9gFbUSvkaJgtOVLWAjzQ,7817
87
- rem/models/entities/ontology_config.py,sha256=TXLARSYEtkBL1o7VDmdEFpRd5rSoLkqZrgYZrk_Xhms,5054
88
+ rem/models/entities/ontology.py,sha256=uJI-GhtvikafiJe2pYECFqGQlIZAHstSwIs9Lu4J6c0,7818
89
+ rem/models/entities/ontology_config.py,sha256=fe-LLM-AaKznVoQ02ou2GvPSAp_Bwez0rk3H0RIUYTw,5055
88
90
  rem/models/entities/resource.py,sha256=FW7R_AylZilb-1iYfZA5MMQw2zA42CUVweKgO-4cwqM,3407
89
91
  rem/models/entities/schema.py,sha256=CEcd49kR_6YgaLLKsWaIb2J0KdbVsgYoi_srPgzr9Aw,2945
90
92
  rem/models/entities/session.py,sha256=VKeTAZZphrKz379Av1hhUTWfQ-DbxLAt3CfU3aDHfwk,2499
@@ -99,9 +101,9 @@ rem/schemas/agents/core/rem-query-agent.yaml,sha256=dQyShquyn-2nGooy8tyZ588etfx4
99
101
  rem/schemas/agents/core/resource-affinity-assessor.yaml,sha256=AXS_gvDdjUyFGZO-VJsGx30qKDIQJjdWU81ben-Jrk0,5361
100
102
  rem/schemas/agents/core/simple-assistant.yaml,sha256=H2rf_dL7etoM-hw5LPSVnDJbqh7VAnWJKyQ1_FF3vM4,434
101
103
  rem/schemas/agents/core/user-profile-builder.yaml,sha256=geyNQzkRMzAza1n_c5f44eYCWeoBQir7VxpGFtLitqw,7846
102
- rem/schemas/agents/examples/contract-analyzer.yaml,sha256=DTwdEavRkIwEuQtoBv1vr9SbfAFClpLMHsr7_Ht5O1I,8086
103
- rem/schemas/agents/examples/contract-extractor.yaml,sha256=GKydQXADd6I211flsUOsknZstgXibJPBB_v5f_ud50E,3316
104
- rem/schemas/agents/examples/cv-parser.yaml,sha256=WGDA-xuG85Ajgvt2sE66uLr-RUt_vrWv_mXyzbfcNLU,6353
104
+ rem/schemas/agents/examples/contract-analyzer.yaml,sha256=gGaDBFYhSIKd3Ur8Hjy9TV9vgQtcg-JPt24_K6oauj4,8087
105
+ rem/schemas/agents/examples/contract-extractor.yaml,sha256=mEq7faeSPkgX_OPKRa7l3VFYyyJ5B7-JaSsv0Bf7yAM,3317
106
+ rem/schemas/agents/examples/cv-parser.yaml,sha256=7la4WK9y4J2QRJ8xXc4fwiGlx3L1bEcObbMLpwAzRRg,6354
105
107
  rem/schemas/agents/examples/hello-world.yaml,sha256=CCKxxB_VH8UpDrWeGXbenH4IRgxQM-lixMi1tX6213Y,683
106
108
  rem/schemas/agents/examples/query.yaml,sha256=JAh8KlLJdOe5zV37yBVOMI2scZm_tZNEQWHSVQv1CuI,1251
107
109
  rem/schemas/agents/examples/simple.yaml,sha256=kk0aQdpNptSTHID5hrfO1rbMEbwqKpP9SeZrOuDh1YM,453
@@ -151,7 +153,7 @@ rem/services/git/service.py,sha256=CRzJ0MQaDdrS3eMaFjUD0vvffUwW0aqHnTbsZUsBZGI,1
151
153
  rem/services/phoenix/EXPERIMENT_DESIGN.md,sha256=rmx8hAVKP1SqM0VDBptG1OjhfGtAh7y_Y_1oyxcP1j8,31209
152
154
  rem/services/phoenix/README.md,sha256=XH-NHZ3nMkQJMAi_8gSzlmWX0NcirUqv_7lC82pjenU,10798
153
155
  rem/services/phoenix/__init__.py,sha256=f6h90EHVrQkyS-ZhPknXwbHp_vrZrQ7HgXmCGc1JFQ0,1471
154
- rem/services/phoenix/client.py,sha256=2s89La3JKodriJNM1DXax92mR3sRY8ZLM6MiXeQAcK4,33535
156
+ rem/services/phoenix/client.py,sha256=0sDm26v7Wi9jTof31Cf0A_5hA_g0HKGQys4qeBqySc0,35214
155
157
  rem/services/phoenix/config.py,sha256=rgFEJ5iENuvBa0_nhEhgz0gW4Sg0uo_fkQMgsnHiTc8,2932
156
158
  rem/services/phoenix/prompt_labels.py,sha256=82VIsXgZ51d3YLzHxusmfzd40yl5YOVnddzv_lNFIGg,13953
157
159
  rem/services/postgres/README.md,sha256=qPimP6367CvfcuF1DjC0VSL0uoc_ThOVeZ0ioJy_z5Q,21518
@@ -174,13 +176,13 @@ rem/services/rem/query.py,sha256=z4Qcaed1mPG2p-4pazEUlnUFqOEYxrKGYLffwD2-V-c,121
174
176
  rem/services/rem/service.py,sha256=cYPPCZ90S9QRWi_4JxEe9oybdDM8Is7wgYt8EpLoiVY,21093
175
177
  rem/services/session/README.md,sha256=WDoVWMRXrSh6wRSlUQ0oIHUItOol65INl86VCNPUOYQ,10446
176
178
  rem/services/session/__init__.py,sha256=ODLcjnOjLubJU8ncvZsB4SB2zl-mncQQLDZWILwc0Cs,254
177
- rem/services/session/compression.py,sha256=XYO7n90COJtLmlqFKNyTBUMHLw68z6J7q40CO_qxVzE,13806
179
+ rem/services/session/compression.py,sha256=D1kOljLD5bUxukGQKpGmVSjn3Z9Ugx-T3IF--GXMSCw,14236
178
180
  rem/services/session/reload.py,sha256=MhCielWyhNAP6yqi61q9sc_8CRWAvG2sHBRTvamIcF8,2428
179
181
  rem/sql/background_indexes.sql,sha256=Lra21QxTvuDOlf0yoF23VOUiHJLRnNWgu0OOR8OXTGQ,1792
180
182
  rem/sql/migrations/001_install.sql,sha256=LPaIStaDwQ39U-mlMqY6qxMoAAdulyB80ReyiPw_TvA,30039
181
- rem/sql/migrations/002_install_models.sql,sha256=Mzuc8oafgKjAvnvT2Ayan_HuaLISIU5fef5EJF_NoQk,151426
183
+ rem/sql/migrations/002_install_models.sql,sha256=SMhvFKp70ctaln63ghZq9ED34LWR0__w-ETph7pgvQ4,152648
182
184
  rem/sql/migrations/003_optional_extensions.sql,sha256=QACy3J50ZgV_4BHNkkT3iswkE1ijc0oCAOgavv6KC5g,12443
183
- rem/sql/migrations/004_cache_system.sql,sha256=OVmI2yABxuxRwJyde4WN-mxy9SLdwcApXY2ml96eq1U,19674
185
+ rem/sql/migrations/004_cache_system.sql,sha256=KBpU3hQY08So_MkMfcOwTZDngTMqa_3kA0ujQ98K33k,19672
184
186
  rem/utils/AGENTIC_CHUNKING.md,sha256=Z9IyL5yoFTlvamPE5KA7cs0Btoc_6bq8hh7Q_WARlw8,17230
185
187
  rem/utils/README.md,sha256=KMgT5nZT023nFWLZz_f3nHSZZkHmmoS7iTLIVRStk3Y,16830
186
188
  rem/utils/__init__.py,sha256=ZGMTgR7g-V3fhfgKo791wGBhdxy72xTJSo7Q_xwkQRI,1417
@@ -196,21 +198,22 @@ rem/utils/files.py,sha256=8vMiVljs7kDLfGMvcRtJFUH7_F_z4XYGd9cP0h1G78c,4353
196
198
  rem/utils/markdown.py,sha256=zhfSiSRX36vky1b2UOGKsuSr11L2l6Kl_O7iSfwQXBY,401
197
199
  rem/utils/mime_types.py,sha256=8KGEuPWVdQ8r1DFLsgiaAgEYqMaaQIk-6lCVOBB1z_A,5346
198
200
  rem/utils/model_helpers.py,sha256=Cvqeof9KlhkkBmAFxRLtfsh4m_MQ0N8WukI3IDJcTtw,11743
199
- rem/utils/schema_loader.py,sha256=QN-4ycwANnXlZkmMXIzu5rJdWOp4RSkCS99CTqLkVag,19238
201
+ rem/utils/schema_loader.py,sha256=HMFr9SLOqj9N9fdqBBJJUEY86ruPWg75ay-k8B9SdsY,22740
200
202
  rem/utils/sql_paths.py,sha256=4bEHU3J3liZdhWYu0WSpCQSo-wfO0sHC_BrJlStRAks,4257
201
203
  rem/utils/sql_types.py,sha256=VKGmDhxPP91EnjJ6h78Q2sUvjBulowR1brtgAdACbtE,10622
202
204
  rem/utils/user_id.py,sha256=AhrUniMZYDybHT6mcv9RalUS3klobqkoMmPh9ZxiZcU,2107
203
- rem/utils/vision.py,sha256=8wopXBML-dD-Q-sCatVfCjMq36Fdz9Ism-P1ZQo6rXM,10371
205
+ rem/utils/vision.py,sha256=8LWRlgt8iM9PL9NFyPSu_CD7Ml7eQ9x88LctRb9xvEI,10372
204
206
  rem/utils/examples/embeddings_example.py,sha256=_saDR9G8H03FCdJryVv7HAWFhyatVTRYAJJJRcAI9wo,9010
205
207
  rem/utils/examples/sql_types_example.py,sha256=HuVFBA_HjF9yPhxUr3fyDE5L9_SsOjDoibdw05M_oIM,6465
206
208
  rem/workers/README.md,sha256=k32MnZiNGds5HGyYDUbjDz1Aa4MsOGTX_T_eKKKJTi4,18061
207
- rem/workers/__init__.py,sha256=cm621Y1-cy_b3xy6fgnXe1pk2WTKWZecBP83CDS_cbI,203
209
+ rem/workers/__init__.py,sha256=-B3pDYptiOSQ3KRMwTYDQOJ7GoWZ9suuMDLgvVNweIg,253
210
+ rem/workers/db_listener.py,sha256=6WGPxaagrQ9e5rfczTSoBslqOsRFszqWgF-DYH9by0E,19954
208
211
  rem/workers/db_maintainer.py,sha256=y-bLIkJuVu4J8o4BAlkTt9zXXCgh0i5nGWjh0Ne48Tg,2066
209
212
  rem/workers/dreaming.py,sha256=UqCf-iBUhzBVBRFj7_DtR6q27oRo7EUoal9qqHLzlo4,17823
210
213
  rem/workers/engram_processor.py,sha256=Ws92kAILMLK_np3F1HRmhKKXiruLIvFn3o9MY3V2W8g,10779
211
214
  rem/workers/sqs_file_processor.py,sha256=tX8S0yo2n1XGvaZ7JUqeGmtTwxybQqz3wkHT2j6Ak7Y,6597
212
215
  rem/workers/unlogged_maintainer.py,sha256=KhebhXl3s6DwvHnXXEJ45r5tLK9PNj-0KclNIQVQ68s,15817
213
- remdb-0.3.118.dist-info/METADATA,sha256=K8OY1Eiv1B-h9yUGakHHPrtCYcxJ6tE9BZQCae5pTaE,54733
214
- remdb-0.3.118.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
215
- remdb-0.3.118.dist-info/entry_points.txt,sha256=gmmrz7tRC1WGUrCMJMg6p5pEP5h5mPYRvWIxp1FYdr0,42
216
- remdb-0.3.118.dist-info/RECORD,,
216
+ remdb-0.3.141.dist-info/METADATA,sha256=DSHGsUASGuvaGKIViTYvA2fqPs9LmiIXYJa1ZDMd2NU,53247
217
+ remdb-0.3.141.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
218
+ remdb-0.3.141.dist-info/entry_points.txt,sha256=gmmrz7tRC1WGUrCMJMg6p5pEP5h5mPYRvWIxp1FYdr0,42
219
+ remdb-0.3.141.dist-info/RECORD,,