remdb 0.3.103__py3-none-any.whl → 0.3.118__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 (55) hide show
  1. rem/agentic/context.py +28 -24
  2. rem/agentic/mcp/tool_wrapper.py +29 -3
  3. rem/agentic/otel/setup.py +92 -4
  4. rem/agentic/providers/pydantic_ai.py +88 -18
  5. rem/agentic/schema.py +358 -21
  6. rem/agentic/tools/rem_tools.py +3 -3
  7. rem/api/main.py +85 -16
  8. rem/api/mcp_router/resources.py +1 -1
  9. rem/api/mcp_router/server.py +18 -4
  10. rem/api/mcp_router/tools.py +383 -16
  11. rem/api/routers/admin.py +218 -1
  12. rem/api/routers/chat/completions.py +30 -3
  13. rem/api/routers/chat/streaming.py +143 -3
  14. rem/api/routers/feedback.py +12 -319
  15. rem/api/routers/query.py +360 -0
  16. rem/api/routers/shared_sessions.py +13 -13
  17. rem/cli/commands/README.md +237 -64
  18. rem/cli/commands/cluster.py +1300 -0
  19. rem/cli/commands/configure.py +1 -3
  20. rem/cli/commands/db.py +354 -143
  21. rem/cli/commands/process.py +14 -8
  22. rem/cli/commands/schema.py +92 -45
  23. rem/cli/main.py +27 -6
  24. rem/models/core/rem_query.py +5 -2
  25. rem/models/entities/shared_session.py +2 -28
  26. rem/registry.py +10 -4
  27. rem/services/content/service.py +30 -8
  28. rem/services/embeddings/api.py +4 -4
  29. rem/services/embeddings/worker.py +16 -16
  30. rem/services/postgres/README.md +151 -26
  31. rem/services/postgres/__init__.py +2 -1
  32. rem/services/postgres/diff_service.py +531 -0
  33. rem/services/postgres/pydantic_to_sqlalchemy.py +427 -129
  34. rem/services/postgres/schema_generator.py +205 -4
  35. rem/services/postgres/service.py +6 -6
  36. rem/services/rem/parser.py +44 -9
  37. rem/services/rem/service.py +36 -2
  38. rem/services/session/reload.py +1 -1
  39. rem/settings.py +56 -7
  40. rem/sql/background_indexes.sql +19 -24
  41. rem/sql/migrations/001_install.sql +252 -69
  42. rem/sql/migrations/002_install_models.sql +2171 -593
  43. rem/sql/migrations/003_optional_extensions.sql +326 -0
  44. rem/sql/migrations/004_cache_system.sql +548 -0
  45. rem/utils/__init__.py +18 -0
  46. rem/utils/date_utils.py +2 -2
  47. rem/utils/schema_loader.py +17 -13
  48. rem/utils/sql_paths.py +146 -0
  49. rem/workers/__init__.py +2 -1
  50. rem/workers/unlogged_maintainer.py +463 -0
  51. {remdb-0.3.103.dist-info → remdb-0.3.118.dist-info}/METADATA +149 -76
  52. {remdb-0.3.103.dist-info → remdb-0.3.118.dist-info}/RECORD +54 -48
  53. rem/sql/migrations/003_seed_default_user.sql +0 -48
  54. {remdb-0.3.103.dist-info → remdb-0.3.118.dist-info}/WHEEL +0 -0
  55. {remdb-0.3.103.dist-info → remdb-0.3.118.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.103
3
+ Version: 0.3.118
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
@@ -156,7 +156,7 @@ docker compose -f docker-compose.prebuilt.yml up -d postgres
156
156
  # Add --claude-desktop to register with Claude Desktop app
157
157
  rem configure --install --claude-desktop
158
158
 
159
- # Load quickstart dataset (uses default user)
159
+ # Load quickstart dataset
160
160
  rem db load datasets/quickstart/sample_data.yaml
161
161
 
162
162
  # Ask questions
@@ -168,10 +168,6 @@ rem process ingest datasets/formats/files/bitcoin_whitepaper.pdf --category rese
168
168
 
169
169
  # Query ingested content
170
170
  rem ask "What is the Bitcoin whitepaper about?"
171
-
172
- # Try other datasets (use --user-id for multi-tenant scenarios)
173
- rem db load datasets/domains/recruitment/scenarios/candidate_pipeline/data.yaml --user-id acme-corp
174
- rem ask --user-id acme-corp "Show me candidates with Python experience"
175
171
  ```
176
172
 
177
173
  **What you get:**
@@ -258,23 +254,19 @@ Configuration saved to `~/.rem/config.yaml` (can edit with `rem configure --edit
258
254
  # Clone datasets repository
259
255
  git clone https://github.com/Percolation-Labs/remstack-lab.git
260
256
 
261
- # Load quickstart dataset (uses default user)
257
+ # Load quickstart dataset
262
258
  rem db load --file remstack-lab/datasets/quickstart/sample_data.yaml
263
259
 
264
260
  # Test with sample queries
265
261
  rem ask "What documents exist in the system?"
266
262
  rem ask "Show me meetings about API design"
267
263
  rem ask "Who is Sarah Chen?"
268
-
269
- # Try domain-specific datasets (use --user-id for multi-tenant scenarios)
270
- rem db load --file remstack-lab/datasets/domains/recruitment/scenarios/candidate_pipeline/data.yaml --user-id acme-corp
271
- rem ask --user-id acme-corp "Show me candidates with Python experience"
272
264
  ```
273
265
 
274
266
  **Option B: Bring your own data**
275
267
 
276
268
  ```bash
277
- # Ingest your own files (uses default user)
269
+ # Ingest your own files
278
270
  echo "REM is a bio-inspired memory system for agentic AI workloads." > test-doc.txt
279
271
  rem process ingest test-doc.txt --category documentation --tags rem,ai
280
272
 
@@ -288,7 +280,6 @@ rem ask "What do you know about REM from my knowledge base?"
288
280
  # Test the OpenAI-compatible chat completions API
289
281
  curl -X POST http://localhost:8000/api/v1/chat/completions \
290
282
  -H "Content-Type: application/json" \
291
- -H "X-User-Id: demo-user" \
292
283
  -d '{
293
284
  "model": "anthropic:claude-sonnet-4-5-20250929",
294
285
  "messages": [{"role": "user", "content": "What documents did Sarah Chen author?"}],
@@ -316,14 +307,11 @@ curl -X POST http://localhost:8000/api/v1/chat/completions \
316
307
  ```bash
317
308
  cd remstack-lab
318
309
 
319
- # Load any dataset (uses default user)
310
+ # Load any dataset
320
311
  rem db load --file datasets/quickstart/sample_data.yaml
321
312
 
322
313
  # Explore formats
323
314
  rem db load --file datasets/formats/engrams/scenarios/team_meeting/team_standup_meeting.yaml
324
-
325
- # Try domain-specific examples (use --user-id for multi-tenant scenarios)
326
- rem db load --file datasets/domains/recruitment/scenarios/candidate_pipeline/data.yaml --user-id acme-corp
327
315
  ```
328
316
 
329
317
  ## See Also
@@ -477,19 +465,14 @@ REM provides **4 built-in MCP tools** your agents can use:
477
465
 
478
466
  ### Multi-User Isolation
479
467
 
480
- Custom agents are **scoped by `user_id`**, ensuring complete data isolation:
468
+ For multi-tenant deployments, custom agents are **scoped by `user_id`**, ensuring complete data isolation. Use `--user-id` flag when you need tenant separation:
481
469
 
482
470
  ```bash
483
- # User A creates a custom agent
484
- rem process ingest my-agent.yaml --user-id user-a --category agents
485
-
486
- # User B cannot see User A's agent
487
- rem ask my-agent "test" --user-id user-b
488
- # ❌ Error: Schema not found (LOOKUP returns no results for user-b)
471
+ # Create agent for specific tenant
472
+ rem process ingest my-agent.yaml --user-id tenant-a --category agents
489
473
 
490
- # User A can use their agent
491
- rem ask my-agent "test" --user-id user-a
492
- # ✅ Works - LOOKUP finds schema for user-a
474
+ # Query with tenant context
475
+ rem ask my-agent "test" --user-id tenant-a
493
476
  ```
494
477
 
495
478
  ### Advanced: Ontology Extractors
@@ -717,8 +700,8 @@ POST /api/v1/chat/completions
717
700
  ```
718
701
 
719
702
  **Headers**:
720
- - `X-Tenant-Id`: Tenant identifier (required for REM)
721
- - `X-User-Id`: User identifier
703
+ - `X-Tenant-Id`: Tenant identifier (optional, for multi-tenant deployments)
704
+ - `X-User-Id`: User identifier (optional, uses default if not provided)
722
705
  - `X-Session-Id`: Session/conversation identifier
723
706
  - `X-Agent-Schema`: Agent schema URI to use
724
707
 
@@ -857,82 +840,144 @@ rem serve --log-level debug
857
840
 
858
841
  ### Database Management
859
842
 
860
- #### `rem db migrate` - Run Migrations
843
+ REM uses a **code-as-source-of-truth** approach for database schema management. Pydantic models define the schema, and the database is kept in sync via diff-based migrations.
861
844
 
862
- Apply database migrations (install.sql and install_models.sql).
845
+ #### Schema Management Philosophy
863
846
 
864
- ```bash
865
- # Apply all migrations
866
- rem db migrate
847
+ **Two migration files only:**
848
+ - `001_install.sql` - Core infrastructure (extensions, functions, KV store)
849
+ - `002_install_models.sql` - Entity tables (auto-generated from Pydantic models)
867
850
 
868
- # Core infrastructure only (extensions, functions)
869
- rem db migrate --install
851
+ **No incremental migrations** (003, 004, etc.) - the models file is always regenerated to match code.
870
852
 
871
- # Entity tables only (Resource, Message, etc.)
872
- rem db migrate --models
853
+ #### `rem db schema generate` - Regenerate Schema SQL
873
854
 
874
- # Background indexes (HNSW for vectors)
875
- rem db migrate --background-indexes
855
+ Generate `002_install_models.sql` from registered Pydantic models.
876
856
 
877
- # Custom connection string
878
- rem db migrate --connection "postgresql://user:pass@host:5432/db"
857
+ ```bash
858
+ # Regenerate from model registry
859
+ rem db schema generate
879
860
 
880
- # Custom SQL directory
881
- rem db migrate --sql-dir /path/to/sql
861
+ # Output: src/rem/sql/migrations/002_install_models.sql
882
862
  ```
883
863
 
884
- #### `rem db status` - Migration Status
864
+ This generates:
865
+ - CREATE TABLE statements for each registered entity
866
+ - Embeddings tables (`embeddings_<table>`)
867
+ - KV_STORE triggers for cache maintenance
868
+ - Foreground indexes (GIN for JSONB, B-tree for lookups)
869
+
870
+ #### `rem db diff` - Detect Schema Drift
885
871
 
886
- Show applied migrations and execution times.
872
+ Compare Pydantic models against the live database using Alembic autogenerate.
887
873
 
888
874
  ```bash
889
- rem db status
875
+ # Show additive changes only (default, safe for production)
876
+ rem db diff
877
+
878
+ # Show all changes including drops
879
+ rem db diff --strategy full
880
+
881
+ # Show additive + safe type widenings
882
+ rem db diff --strategy safe
883
+
884
+ # CI mode: exit 1 if drift detected
885
+ rem db diff --check
886
+
887
+ # Generate migration SQL for changes
888
+ rem db diff --generate
890
889
  ```
891
890
 
892
- #### `rem db rebuild-cache` - Rebuild KV Cache
891
+ **Migration Strategies:**
892
+ | Strategy | Description |
893
+ |----------|-------------|
894
+ | `additive` | Only ADD columns/tables/indexes (safe, no data loss) - **default** |
895
+ | `full` | All changes including DROPs (use with caution) |
896
+ | `safe` | Additive + safe column type widenings (e.g., VARCHAR(50) → VARCHAR(256)) |
893
897
 
894
- Rebuild KV_STORE cache from entity tables (after database restart or bulk imports).
898
+ **Output shows:**
899
+ - `+ ADD COLUMN` - Column in model but not in DB
900
+ - `- DROP COLUMN` - Column in DB but not in model (only with `--strategy full`)
901
+ - `~ ALTER COLUMN` - Column type or constraints differ
902
+ - `+ CREATE TABLE` / `- DROP TABLE` - Table additions/removals
903
+
904
+ #### `rem db apply` - Apply SQL Directly
905
+
906
+ Apply a SQL file directly to the database (bypasses migration tracking).
895
907
 
896
908
  ```bash
897
- rem db rebuild-cache
909
+ # Apply with audit logging (default)
910
+ rem db apply src/rem/sql/migrations/002_install_models.sql
911
+
912
+ # Preview without executing
913
+ rem db apply --dry-run src/rem/sql/migrations/002_install_models.sql
914
+
915
+ # Apply without audit logging
916
+ rem db apply --no-log src/rem/sql/migrations/002_install_models.sql
898
917
  ```
899
918
 
900
- ### Schema Management
919
+ #### `rem db migrate` - Initial Setup
920
+
921
+ Apply standard migrations (001 + 002). Use for initial setup only.
901
922
 
902
- #### `rem db schema generate` - Generate SQL Schema
923
+ ```bash
924
+ # Apply infrastructure + entity tables
925
+ rem db migrate
903
926
 
904
- Generate database schema from Pydantic models. Output goes directly to the migrations folder.
927
+ # Include background indexes (HNSW for vectors)
928
+ rem db migrate --background-indexes
929
+ ```
905
930
 
931
+ #### Database Workflows
932
+
933
+ **Initial Setup (Local):**
906
934
  ```bash
907
- # Generate 002_install_models.sql from entity models (default)
908
- rem db schema generate --models src/rem/models/entities
935
+ rem db schema generate # Generate from models
936
+ rem db migrate # Apply 001 + 002
937
+ rem db diff # Verify no drift
938
+ ```
909
939
 
910
- # This writes to: src/rem/sql/migrations/002_install_models.sql
911
- # Then apply with: rem db migrate
940
+ **Adding/Modifying Models:**
941
+ ```bash
942
+ # 1. Edit models in src/rem/models/entities/
943
+ # 2. Register new models in src/rem/registry.py
944
+ rem db schema generate # Regenerate schema
945
+ rem db diff # See what changed
946
+ rem db apply src/rem/sql/migrations/002_install_models.sql
912
947
  ```
913
948
 
914
- **Workflow for adding new models:**
915
- 1. Add/modify models in `src/rem/models/entities/`
916
- 2. Run `rem db schema generate -m src/rem/models/entities`
917
- 3. Run `rem db migrate` to apply changes
949
+ **CI/CD Pipeline:**
950
+ ```bash
951
+ rem db diff --check # Fail build if drift detected
952
+ ```
953
+
954
+ **Remote Database (Production/Staging):**
955
+ ```bash
956
+ # Port-forward to cluster database
957
+ kubectl port-forward -n <namespace> svc/rem-postgres-rw 5433:5432 &
958
+
959
+ # Override connection for diff check
960
+ POSTGRES__CONNECTION_STRING="postgresql://rem:rem@localhost:5433/rem" rem db diff
961
+
962
+ # Apply changes if needed
963
+ POSTGRES__CONNECTION_STRING="postgresql://rem:rem@localhost:5433/rem" \
964
+ rem db apply src/rem/sql/migrations/002_install_models.sql
965
+ ```
918
966
 
919
- #### `rem db schema indexes` - Generate Background Indexes
967
+ #### `rem db rebuild-cache` - Rebuild KV Cache
920
968
 
921
- Generate SQL for background index creation (HNSW for vectors).
969
+ Rebuild KV_STORE cache from entity tables (after database restart or bulk imports).
922
970
 
923
971
  ```bash
924
- # Generate background_indexes.sql
925
- rem db schema indexes \
926
- --models src/rem/models/entities \
927
- --output rem/src/rem/sql/background_indexes.sql
972
+ rem db rebuild-cache
928
973
  ```
929
974
 
930
975
  #### `rem db schema validate` - Validate Models
931
976
 
932
- Validate Pydantic models for schema generation.
977
+ Validate registered Pydantic models for schema generation.
933
978
 
934
979
  ```bash
935
- rem db schema validate --models src/rem/models/entities
980
+ rem db schema validate
936
981
  ```
937
982
 
938
983
  ### File Processing
@@ -1138,14 +1183,11 @@ Test Pydantic AI agent with natural language queries.
1138
1183
  # Ask a question
1139
1184
  rem ask "What documents did Sarah Chen author?"
1140
1185
 
1141
- # With context headers
1142
- rem ask "Find all resources about API design" \
1143
- --user-id user-123 \
1144
- --tenant-id acme-corp
1145
-
1146
1186
  # Use specific agent schema
1147
- rem ask "Analyze this contract" \
1148
- --agent-schema contract-analyzer-v1
1187
+ rem ask contract-analyzer "Analyze this contract"
1188
+
1189
+ # Stream response
1190
+ rem ask "Find all resources about API design" --stream
1149
1191
  ```
1150
1192
 
1151
1193
  ### Global Options
@@ -1539,6 +1581,37 @@ Generate this structure with: `rem scaffold my-app`
1539
1581
  | **MCP Prompts** | `@app.mcp_server.prompt()` or `app.mcp_server.add_prompt(fn)` |
1540
1582
  | **Models** | `rem.register_models(Model)` then `rem db schema generate` |
1541
1583
  | **Agent Schemas** | `rem.register_schema_path("./schemas")` or `SCHEMA__PATHS` env var |
1584
+ | **SQL Migrations** | Place in `sql/migrations/` (auto-detected) |
1585
+
1586
+ ### Custom Migrations
1587
+
1588
+ REM automatically discovers migrations from two sources:
1589
+
1590
+ 1. **Package migrations** (001-099): Built-in migrations from the `remdb` package
1591
+ 2. **User migrations** (100+): Your custom migrations in `./sql/migrations/`
1592
+
1593
+ **Convention**: Place custom SQL files in `sql/migrations/` relative to your project root:
1594
+
1595
+ ```
1596
+ my-rem-app/
1597
+ ├── sql/
1598
+ │ └── migrations/
1599
+ │ ├── 100_custom_table.sql # Runs after package migrations
1600
+ │ ├── 101_add_indexes.sql
1601
+ │ └── 102_custom_functions.sql
1602
+ └── ...
1603
+ ```
1604
+
1605
+ **Numbering**: Use 100+ for user migrations to ensure they run after package migrations (001-099). All migrations are sorted by filename, so proper numbering ensures correct execution order.
1606
+
1607
+ **Running migrations**:
1608
+ ```bash
1609
+ # Apply all migrations (package + user)
1610
+ rem db migrate
1611
+
1612
+ # Apply with background indexes (for production)
1613
+ rem db migrate --background-indexes
1614
+ ```
1542
1615
 
1543
1616
  ## License
1544
1617
 
@@ -2,49 +2,50 @@ rem/__init__.py,sha256=bghAeI1VxL6qbYB8kvC39zfc00BlztykdmKiubDYE7w,3079
2
2
  rem/config.py,sha256=y0-llMfPwICNwRdek6sgxuuKxdfS6k1n-bd4shvyqjU,6442
3
3
  rem/mcp_server.py,sha256=OK0XaO2k_7BnVRozOfH_xRL51SkRN9kLoNNp_zrrGeA,1383
4
4
  rem/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- rem/registry.py,sha256=NjhY3wsEi9opiHy1tvGRXBfevsx7PKv-HiMWJzEvzBA,10405
6
- rem/settings.py,sha256=21BrHkv7TkXOQfyCVG439hy41L3qmh8NFoQ_Z7Tp_-U,43621
5
+ rem/registry.py,sha256=AAGcr7oRHiHsX2mu7TL4EgKw39IFea8F-YIgbX58CUM,10545
6
+ rem/settings.py,sha256=yl-J8One1bo9TqWmhO4_XS-HtPl4LLOqgBV_BSuRmVw,45296
7
7
  rem/agentic/README.md,sha256=brF1Z1V6s8z5TLoyNPQ3BC5mqDy648QRPOQmGu6Jkzw,21815
8
8
  rem/agentic/__init__.py,sha256=-UZiEYpodfD5xDns6L0nYSqK9owr3NxiWsq6vmK1tGk,1268
9
- rem/agentic/context.py,sha256=mibRkV4SNLxq8XFM7RyWne-nur7vyzAV_QlnFThCWQo,4958
9
+ rem/agentic/context.py,sha256=vHNQdvbvV0JqpM1zfcEESiAs7pwI5lSvS6B5e32C-ec,5441
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=sMihhzoEd2ateXz_brlh08RcZc0t9yrwqiJ-K9ABoXM,13174
14
+ rem/agentic/schema.py,sha256=0BXD42G1d1hjlK0XKcCCPREA4Hzg5TDUSfmBwmxNf2I,22742
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
18
  rem/agentic/agents/sse_simulator.py,sha256=SEWflmJqHTwDzpXzCWTc7enk7bgYgMDk4sW2HolzwBM,16320
19
19
  rem/agentic/mcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
- rem/agentic/mcp/tool_wrapper.py,sha256=U5kprPN_8rzyIXZT_dLyGCZlqt3cOnLPPCaS9k-M1vE,3733
20
+ rem/agentic/mcp/tool_wrapper.py,sha256=QeJxGcfqZ1ScrYfPSmHk2gIjZB9vQGCLKMguhbIXUm4,4828
21
21
  rem/agentic/otel/__init__.py,sha256=IC0lLMmuxXRZrhO9p8-GQ6raZDP9YE3gcuCwl6vBv4c,195
22
- rem/agentic/otel/setup.py,sha256=jQvammMYP1lR5-4b9RFlGXX8cOdwknuIF-p2717fv3E,5642
22
+ rem/agentic/otel/setup.py,sha256=l3oczCbcbdAbF2AyeFb1OlMgKdXz8qiE7pYmI6I470g,9580
23
23
  rem/agentic/providers/phoenix.py,sha256=eWasZ8Vcf_K8q4xDyVuYhogihvyDQVpObeu0PLVMfCE,24194
24
- rem/agentic/providers/pydantic_ai.py,sha256=yi9cGlLURmYswhpdl_3tXsbrNCpjYB8ZnVWugA9FdnE,25089
24
+ rem/agentic/providers/pydantic_ai.py,sha256=7g4kEsX4OaORy0bDfMLeglG6Ycf7EYkLcGROac0llI8,28408
25
25
  rem/agentic/tools/__init__.py,sha256=tb_9ml0i2LtEALAJ6h7D91xVEA_8ktDzD4s3nM0MsUE,147
26
- rem/agentic/tools/rem_tools.py,sha256=6_MUPZEUXjlQWaiNwNhQyc2wdnoyBmOnYsLCvtjKovw,7341
26
+ rem/agentic/tools/rem_tools.py,sha256=xhLohuAsv0AUjXLMXa-n9KchhkHxEi7jq1BsjPBuogw,7344
27
27
  rem/api/README.md,sha256=68KtBi1nkXm_J0skGVBhchXP-cLNaBBka6ZhLqAncoA,19998
28
28
  rem/api/deps.py,sha256=75c_PZ1XWPanHBds4Ap3JZtLSLtDF_qNMploSgHvdmo,6736
29
- rem/api/main.py,sha256=WPDGHxYORjUILQpF3BDF9uyjy_pbsdgd6KkjYhfPS1w,13006
29
+ rem/api/main.py,sha256=_vfKH_DBWuempKs-YOS0gQOUbsHe3l1kEoVSvD-sOkQ,15917
30
30
  rem/api/mcp_router/prompts.py,sha256=bVNsJMur6i0oyd38WIr-r0kUNUAlcGG595WVhBDwxik,4077
31
- rem/api/mcp_router/resources.py,sha256=xce0ZfX54ar9q-ztvTTq1thd8ZzAjOWwuFbxnHB5YvQ,16194
32
- rem/api/mcp_router/server.py,sha256=qMwtlMmjbVnenFNQXB9J44DzNmVAsClpmW2AXDTGzks,10708
33
- rem/api/mcp_router/tools.py,sha256=AmpjE_o3h64YSKtGOYJ3764BpEXvlU3la9IrsQZ9OfU,22317
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=ctxN95VbE2dbmFoyia15oLyWnhR9KnZRhVXdxpNgIgk,35314
34
34
  rem/api/middleware/tracking.py,sha256=cA9ChbBQ8-QipLlyGrTUsd7eMtHGzZ9Cp4iEHBgOQiM,6326
35
- rem/api/routers/admin.py,sha256=liTPpmaQ5atiYnTE4SZiw1Tdwba0cm1Ui_4bFDCIuN8,7866
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=a8VF5wPKL3NnOEKKvkHydibBJ0hUXblSDWwN8QTge5A,15434
38
+ rem/api/routers/feedback.py,sha256=vrZxw3sqo1hsqgj5vjxiW71MS_2EHk9tSOP4YIo8UD4,4841
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
- rem/api/routers/shared_sessions.py,sha256=czxqAOV-mtXKxLIdOXtfLAkCz4msItEKMiq7rOkxROc,12223
41
+ rem/api/routers/query.py,sha256=cYV2HoSqMHr7kgeEFhx2GqUt_9Geg756JgJoYrX6OrU,13972
42
+ rem/api/routers/shared_sessions.py,sha256=9vQoQOsQhqWzcoJZ7_dhvi6zJlR5B72LP5THLfm--Ts,12259
42
43
  rem/api/routers/chat/__init__.py,sha256=fck9klAzF7HJHNPAhl0B63uSavXvs6h26QhUsByf4JM,113
43
- rem/api/routers/chat/completions.py,sha256=Oh_9LAzGvWxEfMXZCKgfmkNEIWhSx5_qxkipV-eSHPE,16414
44
+ rem/api/routers/chat/completions.py,sha256=4UAWZqRj59SFuY31LMlmTG52lqnGhZTHOqP9dc7TpFk,17631
44
45
  rem/api/routers/chat/json_utils.py,sha256=BVRu-7PWIHTbC9Ubq4MfifZ8qYQZpcGhEgFgPVcXXKE,2191
45
46
  rem/api/routers/chat/models.py,sha256=lNEs5NnNROSuaMn7KUr4PwHFXmgz9l_1An6G-iWT8mY,3905
46
47
  rem/api/routers/chat/sse_events.py,sha256=WGC_x9-4yRm8zyyI42KPwwn0tmm3JP6xZGOq2QJaZcU,15919
47
- rem/api/routers/chat/streaming.py,sha256=IHlFN01QpZYPdG0b9uOmnPndqGSlKr19yazRk67f5Go,27739
48
+ rem/api/routers/chat/streaming.py,sha256=zw0XAjV5jv9DWZNvGRM5tyxrvpT7O6UEAnu_cxiZWGk,35270
48
49
  rem/auth/README.md,sha256=BpZUqEVYMUpQG4guykyuvmtzlH3_LsGzspuRZS20i8k,8631
49
50
  rem/auth/__init__.py,sha256=NuOzrlipfiRUM7lwuEJTzc-b8lYWCxDl_7V82FxElJA,700
50
51
  rem/auth/middleware.py,sha256=_55Va07HElp_fhB9ROyI8bhRXCSCVZ7bROw2vXCer1Y,7381
@@ -55,25 +56,26 @@ rem/auth/providers/microsoft.py,sha256=sv6emYa5B7XTk6gi18n_UCLPDqUmrrsuDnAnWGvJA
55
56
  rem/cli/README.md,sha256=UxmsXjxmee39xUrE7TRJ093Pfhazi58LhRqLfQsYA8g,11857
56
57
  rem/cli/__init__.py,sha256=NazCCnBFZwMkvJgzeGkfYveP_MUpvbqHcOLZihew0-Q,188
57
58
  rem/cli/dreaming.py,sha256=yMTRaSwllB5anQ2aWUAYFqej_6jjeZ8eoqh8liDhqfU,11535
58
- rem/cli/main.py,sha256=exfvTRcM8SjBl27WRitmc6W3O6wArjEQDbv-gWgSmEs,2364
59
- rem/cli/commands/README.md,sha256=ounXb3bp48-QCLg07gD_DAgItfau_oOMzfaPQ8aXEqs,2993
59
+ rem/cli/main.py,sha256=w4NtuVqc0axV-TVI3rlv0gnXZ0Tou4Qdjbfu76CJ73A,3022
60
+ rem/cli/commands/README.md,sha256=CxTm4pAKVzE780sWn_sAILu2_nH_0oh9whppZvW4bew,9295
60
61
  rem/cli/commands/__init__.py,sha256=wKff1WrBXwf-vDXjSvUuk-61Npm5716okVnOQ22FcEk,30
61
62
  rem/cli/commands/ask.py,sha256=VTKL-E3_XZ8OWX16RCDAeAPrp28PLyXMgh63CNF-29Q,19389
62
- rem/cli/commands/configure.py,sha256=SU-EFX-k01UzVc9C99UvrXxQZvl842gCrwh_H8WIMNk,16785
63
- rem/cli/commands/db.py,sha256=ZzxEsPetIQX-aWI3EkaJYm7FsPhVcHdyP1bV2vqjs0Q,18123
63
+ rem/cli/commands/cluster.py,sha256=aE4b8c6qYzZk21HI2lusNGgk4CwPCEZhm0lvDPbc3uo,43490
64
+ rem/cli/commands/configure.py,sha256=nNr_r4TTYw9xncDpaa6T71n2N8I-ffn1UOUSbyLFrn8,16652
65
+ rem/cli/commands/db.py,sha256=5Enkq7CG7fOpIwMGQ_yF4mTEP3wmoZK3ic3jxERi7Fk,24953
64
66
  rem/cli/commands/dreaming.py,sha256=2P8nyX9gnRgyCJZrDuyJt5_YAsFmjUGa6dg7OvoLA8k,13292
65
67
  rem/cli/commands/experiments.py,sha256=ye8vgxiWokfisTSPDpnGif5MVTx_s-hK6BeQeb5yIh8,47730
66
68
  rem/cli/commands/mcp.py,sha256=PiP_zXflZ2lPVgmH3N8EGOWXDSfvNTQJD-MMW3ym3xo,1666
67
- rem/cli/commands/process.py,sha256=DxmojQ43q-usuwkT1f17ra6dnnqOvK8Y-wXgmhQawMU,8236
69
+ rem/cli/commands/process.py,sha256=DCV7KuS3idRkJ7hsl4uxFqdt67RbxuCP3DL9VeqQuFQ,8630
68
70
  rem/cli/commands/scaffold.py,sha256=hv2-ozD1bbD8FEky7OdIDzcgu-KISs5ek6APqykdZ6I,1618
69
- rem/cli/commands/schema.py,sha256=zaEfPn9paJEZurDGtoXWSQgDRCQydIYwvGxXHJKM4NA,5660
71
+ rem/cli/commands/schema.py,sha256=oCsRUoih2MC_mpxmj14hsQy0xWLCddSUYcfGnDMlbuw,7325
70
72
  rem/cli/commands/serve.py,sha256=ku6z5gxRwmY-vNdNELGPA8aiYyO4QGRgJ_H4wpusd8Y,2926
71
73
  rem/models/core/__init__.py,sha256=BBbARx5_7uVz5FuuoPdFm3tbiWZWubs97i3smU0UxXg,1449
72
74
  rem/models/core/core_model.py,sha256=aYVx2905n0b6TGLnIiV5YMWO2O8pxHVtLEWljWvURxU,2617
73
75
  rem/models/core/engram.py,sha256=CuoilA74hmlgMT2mZCoEEh0jFsMrKUw9wdyFOygBa8E,10135
74
76
  rem/models/core/experiment.py,sha256=QboyXIE-I9zLyOw2UZCvN9Sne3uky3Bk_LKTthoR5AI,18977
75
77
  rem/models/core/inline_edge.py,sha256=BVOYchWzb5vYRPTBJEKh06YDwzL_NKdvCRg4BtXRn7g,5059
76
- rem/models/core/rem_query.py,sha256=rgb028UyLYJddIzJKZPfvGsWI0Xkd8N66SdTnKHEPYQ,7977
78
+ rem/models/core/rem_query.py,sha256=EpD1NdhxgptW81ID1_q2pnYhioM8J4Efx-JFJsNW_i0,8108
77
79
  rem/models/entities/__init__.py,sha256=p3eOFNZdlQ_dF0ZdXR9sHPHu_btMd5mZmw0v5iL8uik,1878
78
80
  rem/models/entities/domain_resource.py,sha256=9kfsa1ELGG1gpAWlxBGkaWk157pJ8u636aQBi-ZJ9WA,1269
79
81
  rem/models/entities/feedback.py,sha256=m8AIm57DD4N4-8M6hI9EwF6rpA_EYE8tNR-sln9vEb8,3483
@@ -86,7 +88,7 @@ rem/models/entities/ontology_config.py,sha256=TXLARSYEtkBL1o7VDmdEFpRd5rSoLkqZrg
86
88
  rem/models/entities/resource.py,sha256=FW7R_AylZilb-1iYfZA5MMQw2zA42CUVweKgO-4cwqM,3407
87
89
  rem/models/entities/schema.py,sha256=CEcd49kR_6YgaLLKsWaIb2J0KdbVsgYoi_srPgzr9Aw,2945
88
90
  rem/models/entities/session.py,sha256=VKeTAZZphrKz379Av1hhUTWfQ-DbxLAt3CfU3aDHfwk,2499
89
- rem/models/entities/shared_session.py,sha256=7hRvlHP2ROioYYvkygbaiVXTpsjdKLWU6pqQjEkxNmY,6728
91
+ rem/models/entities/shared_session.py,sha256=PWTH637NHmwziXCgr1BM0KXWLUzHrbfLlYKLH3qdU6A,5901
90
92
  rem/models/entities/user.py,sha256=Svew38nvZhhXUeDdE8Np37Ljq41JfwwZIEkgxOB2eY8,2820
91
93
  rem/schemas/README.md,sha256=_WH2A78jyLb11xu8q1tu4pDMlgZfE9WjYqrAUbn2BIM,13588
92
94
  rem/schemas/__init__.py,sha256=cY7Hqc056Mb3t12nfpkAK6WZDvOP1gk4rv0CK4VbhTk,213
@@ -121,7 +123,7 @@ rem/services/audio/transcriber.py,sha256=CbUkNr_AyFZ4NImr6giwgDTT_xPmOe3iSr_YPdB
121
123
  rem/services/content/README.md,sha256=nKOYqYbMljCVRZ55dlGU6Afipo0FVV7YXqT_dV-VXsw,35806
122
124
  rem/services/content/__init__.py,sha256=JtfEPROctu3_R5oGdo04PxpgYqXxAz-TbpS8Ejkjdfs,120
123
125
  rem/services/content/providers.py,sha256=xKW6Bn_fJpQGtnESufZcLRh7BAjWqSOLVdYiEg6rYDc,27909
124
- rem/services/content/service.py,sha256=_uTc7-1B08hZEuSEI6EFFWFu22Pk0la_rW6ZByEdavA,28351
126
+ rem/services/content/service.py,sha256=PDdLPuN3mlfCPh-PttbPVjOQ63iIWWm4ApTH0TWEM40,29678
125
127
  rem/services/dreaming/README.md,sha256=JhzndF6yRP2Eut_AlvukZHV9MSv83V--V2pA0GXXf2g,9100
126
128
  rem/services/dreaming/__init__.py,sha256=3j2TBC1_0z8AlCA9jiqsecyzPFaptCUUHsO_RlXrINc,1719
127
129
  rem/services/dreaming/affinity_service.py,sha256=ScWKwRIPLywqqL2RFd_TsTg_KKmPb0ngBCpOpmIG7w4,12205
@@ -130,8 +132,8 @@ rem/services/dreaming/ontology_service.py,sha256=hpP3aCYqsP26taq3__Q2w_jmA9-J1wZ
130
132
  rem/services/dreaming/user_model_service.py,sha256=oTuqFdNxegWwVGzOOnwdf5YS2IKQYRNW10bV5efG57E,9929
131
133
  rem/services/dreaming/utils.py,sha256=ntCXGygJERdH7CW59kudjodBVP6oD4mH42_vH_2powk,1116
132
134
  rem/services/embeddings/__init__.py,sha256=Jr22tszCfpmishCnnQrS0MBHxiUK_E7rJmNqTeR_xpI,293
133
- rem/services/embeddings/api.py,sha256=Im6VIuJnoOFvJ2GR7h1md01VQNi5aqszmCktjE52kS4,4336
134
- rem/services/embeddings/worker.py,sha256=GOTz5JaZAkiRUxRbfz1xgALRXjk0CVsCejpK2Y06q2c,13980
135
+ rem/services/embeddings/api.py,sha256=mDkx_-wWOfjI4uuPIaQDLkfdznEdXQFOvx4VK-Ll4oc,4340
136
+ rem/services/embeddings/worker.py,sha256=BdPIsR4hv_epbjpLMg7-n_uje6crvhdfZcVha9EzaxA,13993
135
137
  rem/services/fs/README.md,sha256=Rocb3a0uz27q1QXlhT8DQNUzHM6o_ryt4pRREgcvf0Q,18322
136
138
  rem/services/fs/__init__.py,sha256=VvFB1SMQLzd0rRatWvhpnFkoOGDBHYdTC63tZkzOy10,1606
137
139
  rem/services/fs/examples.py,sha256=ERHJP7RzZ8stetxesILaTvT4gOa9vlkW-e8EP-ZWAM8,5572
@@ -152,59 +154,63 @@ rem/services/phoenix/__init__.py,sha256=f6h90EHVrQkyS-ZhPknXwbHp_vrZrQ7HgXmCGc1J
152
154
  rem/services/phoenix/client.py,sha256=2s89La3JKodriJNM1DXax92mR3sRY8ZLM6MiXeQAcK4,33535
153
155
  rem/services/phoenix/config.py,sha256=rgFEJ5iENuvBa0_nhEhgz0gW4Sg0uo_fkQMgsnHiTc8,2932
154
156
  rem/services/phoenix/prompt_labels.py,sha256=82VIsXgZ51d3YLzHxusmfzd40yl5YOVnddzv_lNFIGg,13953
155
- rem/services/postgres/README.md,sha256=-DwWIrPH1ejO0Kysez6XxFKCYqIcUu-xuV_FnqOlDTM,17775
156
- rem/services/postgres/__init__.py,sha256=KD3ryqkP2hSrg9b-m0FcRQcyE4gmrhuk0gPhBxKArNc,484
157
+ rem/services/postgres/README.md,sha256=qPimP6367CvfcuF1DjC0VSL0uoc_ThOVeZ0ioJy_z5Q,21518
158
+ rem/services/postgres/__init__.py,sha256=hPOVs7Gi42qjz9ySu1y1Fmxcyo21UrhVycw_y4YAF-0,563
159
+ rem/services/postgres/diff_service.py,sha256=vffYq6e5Ce_b8yuS01u9r27SYCUnmODa5mH8eeZpInM,19402
157
160
  rem/services/postgres/migration_service.py,sha256=2irsWfzczZ0_-wge6ReyCrFrE3HxvnlwKAEp8mWqtQo,14897
158
- rem/services/postgres/pydantic_to_sqlalchemy.py,sha256=8d6na9ahBIFe55EPoP2LOd1owXAA9HYxlQZe9C-rDrk,6958
161
+ rem/services/postgres/pydantic_to_sqlalchemy.py,sha256=Ao1Qh5epVetw8BfEiBmd-xSfUiBOzcROgrfq5BM_hTM,15950
159
162
  rem/services/postgres/register_type.py,sha256=KwttMTvCdtLvSyW2YICmZ71BBB4oomIoX9IJT-qyEn8,11169
160
163
  rem/services/postgres/repository.py,sha256=CYbAozL7iAjVnpV8HbQ1HNu8UUlgHzvyBds1qTICfQE,15788
161
- rem/services/postgres/schema_generator.py,sha256=1sjl4XeChCo3CXvao-k7bvb5mder0fabLYzG7-TbJVA,16439
162
- rem/services/postgres/service.py,sha256=FIWRVRtBlptdn-LDRWyeM7QfMih5x3yd0gncnRMOWYg,27117
164
+ rem/services/postgres/schema_generator.py,sha256=TpINJtEPcrbISbz3HUo7zEI1C-542HEAsf2m5kOuGM8,23906
165
+ rem/services/postgres/service.py,sha256=3CIOP7LuaK4p2rYTyscIXasGLTwjb62HnAGbOCuEm74,27122
163
166
  rem/services/postgres/sql_builder.py,sha256=EQZCXBLuOM_trDnr0vwzqJRCKMk9wpZG2ZrY_yBfQMk,10348
164
167
  rem/services/rem/README.md,sha256=uNFYDzlxFuYOAE3Qxuiy7OYRPoTIDWT_e3d7FZmVHQ8,15441
165
168
  rem/services/rem/__init__.py,sha256=c0Mzd9K2hzeDTldU4IffQPhiuGshfLqdIFp1KQ9ykU4,482
166
169
  rem/services/rem/exceptions.py,sha256=9pse9_1XKm7VuiRxZVgHZeD2nm8yabYfw24Fga_mdGc,2440
167
170
  rem/services/rem/executor.py,sha256=o30fYs7Y91arcCZ70PurPn-Q_7gXjxZXerk70A-MM4A,10033
168
- rem/services/rem/parser.py,sha256=cJaa31krQigEWZFgcVIj19s_g-zV0HKNsf19FFkT0Ek,5286
171
+ rem/services/rem/parser.py,sha256=w7jFSzWuNSTrhPDw3s5IH4O0kVT4zwBp0i52RyNEPNs,6896
169
172
  rem/services/rem/queries.py,sha256=k-fniVSMBcq4TPUw-g4kp6D9Fbs5DphqUwzAk2wXv5M,5146
170
173
  rem/services/rem/query.py,sha256=z4Qcaed1mPG2p-4pazEUlnUFqOEYxrKGYLffwD2-V-c,12178
171
- rem/services/rem/service.py,sha256=HnySLEC65AOXkkHf-UCwL2nTyUf4NVUIPTpXJJwz-uc,19294
174
+ rem/services/rem/service.py,sha256=cYPPCZ90S9QRWi_4JxEe9oybdDM8Is7wgYt8EpLoiVY,21093
172
175
  rem/services/session/README.md,sha256=WDoVWMRXrSh6wRSlUQ0oIHUItOol65INl86VCNPUOYQ,10446
173
176
  rem/services/session/__init__.py,sha256=ODLcjnOjLubJU8ncvZsB4SB2zl-mncQQLDZWILwc0Cs,254
174
177
  rem/services/session/compression.py,sha256=XYO7n90COJtLmlqFKNyTBUMHLw68z6J7q40CO_qxVzE,13806
175
- rem/services/session/reload.py,sha256=R5tjF4IC2i_h5sMeyEhPBtABSaa_FRVwPTgvufLiMAk,2427
176
- rem/sql/background_indexes.sql,sha256=gkR-AXUrzIker1unsZ6yuxn_5R2S0rtcvMQB9I6Cms0,2003
177
- rem/sql/migrations/001_install.sql,sha256=Oi6YEuKJ9rOngpXaKOunaIbk9yZj1e7PHA8c28-U0Xw,24018
178
- rem/sql/migrations/002_install_models.sql,sha256=8-nxEWaec6YsGjNhN9kp7ocwz1O607rsWDG2i1QWSXM,54559
179
- rem/sql/migrations/003_seed_default_user.sql,sha256=WvJ9XiTd_vHKMDyYcvVqnTVpHs2BNDlWFcCN78J13Aw,1491
178
+ rem/services/session/reload.py,sha256=MhCielWyhNAP6yqi61q9sc_8CRWAvG2sHBRTvamIcF8,2428
179
+ rem/sql/background_indexes.sql,sha256=Lra21QxTvuDOlf0yoF23VOUiHJLRnNWgu0OOR8OXTGQ,1792
180
+ rem/sql/migrations/001_install.sql,sha256=LPaIStaDwQ39U-mlMqY6qxMoAAdulyB80ReyiPw_TvA,30039
181
+ rem/sql/migrations/002_install_models.sql,sha256=Mzuc8oafgKjAvnvT2Ayan_HuaLISIU5fef5EJF_NoQk,151426
182
+ rem/sql/migrations/003_optional_extensions.sql,sha256=QACy3J50ZgV_4BHNkkT3iswkE1ijc0oCAOgavv6KC5g,12443
183
+ rem/sql/migrations/004_cache_system.sql,sha256=OVmI2yABxuxRwJyde4WN-mxy9SLdwcApXY2ml96eq1U,19674
180
184
  rem/utils/AGENTIC_CHUNKING.md,sha256=Z9IyL5yoFTlvamPE5KA7cs0Btoc_6bq8hh7Q_WARlw8,17230
181
185
  rem/utils/README.md,sha256=KMgT5nZT023nFWLZz_f3nHSZZkHmmoS7iTLIVRStk3Y,16830
182
- rem/utils/__init__.py,sha256=SQDnawNJaluq6MAkB4iLmB5x_tnP_wbZOBs912kui5w,913
186
+ rem/utils/__init__.py,sha256=ZGMTgR7g-V3fhfgKo791wGBhdxy72xTJSo7Q_xwkQRI,1417
183
187
  rem/utils/agentic_chunking.py,sha256=B7TIggqOSeHJ5clPPY7O712Wb1xz52Y_2gCPiEZlWqY,21841
184
188
  rem/utils/batch_ops.py,sha256=LgzttGV0O_a8Y70fnsX3XwlSZWZKRTnwBBwxP09BOvw,11689
185
189
  rem/utils/chunking.py,sha256=lVHqbO6MKwBf57OzDOIcC9qpT6x4h417E-FQbaibGb4,3809
186
190
  rem/utils/clip_embeddings.py,sha256=lEU0H4Yvp2mKtJthMDjdG1t_AKQEYrE_NTyOP9Jae6w,8638
187
191
  rem/utils/constants.py,sha256=aX2GwgtaZx3wztsGNa8HFyKxAWNoZlZv9k45gQ7K3Qs,3283
188
- rem/utils/date_utils.py,sha256=I-q4BiL4RpXE6NvvyDOaPA3O1nRfEjCl60-sRoAuVYw,5516
192
+ rem/utils/date_utils.py,sha256=LiqyiYcvfw8I-zvfDzPEs1PnwHOEXfmqn_6BDqefEBo,5542
189
193
  rem/utils/dict_utils.py,sha256=qp5myXSgGV2Daz9X-9SKzQDu2WeQeIBBcgFnqd8VhqY,2905
190
194
  rem/utils/embeddings.py,sha256=FnjZFHXgxf__dbubY2HknhDAngizr8j7P28-Sug4-f0,13150
191
195
  rem/utils/files.py,sha256=8vMiVljs7kDLfGMvcRtJFUH7_F_z4XYGd9cP0h1G78c,4353
192
196
  rem/utils/markdown.py,sha256=zhfSiSRX36vky1b2UOGKsuSr11L2l6Kl_O7iSfwQXBY,401
193
197
  rem/utils/mime_types.py,sha256=8KGEuPWVdQ8r1DFLsgiaAgEYqMaaQIk-6lCVOBB1z_A,5346
194
198
  rem/utils/model_helpers.py,sha256=Cvqeof9KlhkkBmAFxRLtfsh4m_MQ0N8WukI3IDJcTtw,11743
195
- rem/utils/schema_loader.py,sha256=WTMqKhPSpwArbe8KU1_WZcdclthH7qY35N7WOfOBWNc,18779
199
+ rem/utils/schema_loader.py,sha256=QN-4ycwANnXlZkmMXIzu5rJdWOp4RSkCS99CTqLkVag,19238
200
+ rem/utils/sql_paths.py,sha256=4bEHU3J3liZdhWYu0WSpCQSo-wfO0sHC_BrJlStRAks,4257
196
201
  rem/utils/sql_types.py,sha256=VKGmDhxPP91EnjJ6h78Q2sUvjBulowR1brtgAdACbtE,10622
197
202
  rem/utils/user_id.py,sha256=AhrUniMZYDybHT6mcv9RalUS3klobqkoMmPh9ZxiZcU,2107
198
203
  rem/utils/vision.py,sha256=8wopXBML-dD-Q-sCatVfCjMq36Fdz9Ism-P1ZQo6rXM,10371
199
204
  rem/utils/examples/embeddings_example.py,sha256=_saDR9G8H03FCdJryVv7HAWFhyatVTRYAJJJRcAI9wo,9010
200
205
  rem/utils/examples/sql_types_example.py,sha256=HuVFBA_HjF9yPhxUr3fyDE5L9_SsOjDoibdw05M_oIM,6465
201
206
  rem/workers/README.md,sha256=k32MnZiNGds5HGyYDUbjDz1Aa4MsOGTX_T_eKKKJTi4,18061
202
- rem/workers/__init__.py,sha256=nqOYxIOTFtuig7bNFnozWBuihegg5T-brZFeZ3USydM,129
207
+ rem/workers/__init__.py,sha256=cm621Y1-cy_b3xy6fgnXe1pk2WTKWZecBP83CDS_cbI,203
203
208
  rem/workers/db_maintainer.py,sha256=y-bLIkJuVu4J8o4BAlkTt9zXXCgh0i5nGWjh0Ne48Tg,2066
204
209
  rem/workers/dreaming.py,sha256=UqCf-iBUhzBVBRFj7_DtR6q27oRo7EUoal9qqHLzlo4,17823
205
210
  rem/workers/engram_processor.py,sha256=Ws92kAILMLK_np3F1HRmhKKXiruLIvFn3o9MY3V2W8g,10779
206
211
  rem/workers/sqs_file_processor.py,sha256=tX8S0yo2n1XGvaZ7JUqeGmtTwxybQqz3wkHT2j6Ak7Y,6597
207
- remdb-0.3.103.dist-info/METADATA,sha256=CfGojSbqd7jngCZCgezS9t_sQx_Z3D4mDZlajHXpfc4,52481
208
- remdb-0.3.103.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
209
- remdb-0.3.103.dist-info/entry_points.txt,sha256=gmmrz7tRC1WGUrCMJMg6p5pEP5h5mPYRvWIxp1FYdr0,42
210
- remdb-0.3.103.dist-info/RECORD,,
212
+ 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,,
@@ -1,48 +0,0 @@
1
- -- ============================================================================
2
- -- Migration: 003_seed_default_user.sql
3
- -- Description: Seed the default system user for CLI and API operations
4
- --
5
- -- The default user is derived from settings.test.user_email (test@rem.ai)
6
- -- using deterministic UUID v5 generation. This ensures consistent user ID
7
- -- across all environments and test runs.
8
- --
9
- -- Default user:
10
- -- email: test@rem.ai
11
- -- user_id: 9e7dc22b-13bb-5cea-8aee-f6b8e6dc962f (UUID v5 from DNS namespace)
12
- --
13
- -- This user is used when:
14
- -- - CLI commands run without --user-id flag
15
- -- - API requests come without X-User-Id header
16
- -- - Tests run without explicit user context
17
- -- ============================================================================
18
-
19
- -- Insert default user (idempotent - skip if exists)
20
- INSERT INTO users (
21
- id,
22
- user_id,
23
- tenant_id,
24
- name,
25
- email,
26
- role,
27
- tags,
28
- metadata,
29
- created_at,
30
- updated_at
31
- ) VALUES (
32
- '9e7dc22b-13bb-5cea-8aee-f6b8e6dc962f'::uuid,
33
- '9e7dc22b-13bb-5cea-8aee-f6b8e6dc962f',
34
- '9e7dc22b-13bb-5cea-8aee-f6b8e6dc962f',
35
- 'Default User',
36
- 'test@rem.ai',
37
- 'system',
38
- ARRAY['system', 'default'],
39
- '{"description": "Default system user for CLI and API operations without explicit user context"}'::jsonb,
40
- NOW(),
41
- NOW()
42
- ) ON CONFLICT (id) DO NOTHING;
43
-
44
- -- Log migration
45
- DO $$
46
- BEGIN
47
- RAISE NOTICE 'Seeded default user: test@rem.ai (id: 9e7dc22b-13bb-5cea-8aee-f6b8e6dc962f)';
48
- END $$;