remdb 0.3.148__tar.gz → 0.3.183__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of remdb might be problematic. Click here for more details.

Files changed (753) hide show
  1. remdb-0.3.183/.kreuzberg/mime/0b34bcd318001ead.msgpack +1 -0
  2. remdb-0.3.183/.kreuzberg/mime/2279f944d9ee9966.msgpack +1 -0
  3. remdb-0.3.183/.kreuzberg/mime/245d4933e8c1b195.msgpack +1 -0
  4. remdb-0.3.183/.kreuzberg/mime/256e0b513c55383d.msgpack +1 -0
  5. remdb-0.3.183/.kreuzberg/mime/333c03f53d37ed0e.msgpack +1 -0
  6. remdb-0.3.183/.kreuzberg/mime/3a11309ab5c2f4f1.msgpack +1 -0
  7. remdb-0.3.183/.kreuzberg/mime/5bcfea3bfc53067c.msgpack +1 -0
  8. remdb-0.3.183/.kreuzberg/mime/7b3e640c001c4894.msgpack +1 -0
  9. remdb-0.3.183/.kreuzberg/mime/8225fe0751545bd9.msgpack +1 -0
  10. remdb-0.3.183/.kreuzberg/mime/a1da34b0466f625e.msgpack +1 -0
  11. remdb-0.3.183/.kreuzberg/mime/ac4f98ccc34fc6c0.msgpack +1 -0
  12. remdb-0.3.183/.kreuzberg/mime/c1f16f2de51197de.msgpack +1 -0
  13. {remdb-0.3.148 → remdb-0.3.183}/PKG-INFO +1 -1
  14. {remdb-0.3.148 → remdb-0.3.183}/pyproject.toml +1 -1
  15. {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/agents/__init__.py +16 -0
  16. remdb-0.3.183/src/rem/agentic/agents/agent_manager.py +311 -0
  17. {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/context.py +81 -3
  18. {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/context_builder.py +36 -9
  19. {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/mcp/tool_wrapper.py +43 -14
  20. {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/providers/pydantic_ai.py +76 -34
  21. {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/schema.py +4 -3
  22. {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/tools/rem_tools.py +11 -0
  23. {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/deps.py +3 -5
  24. {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/main.py +22 -3
  25. {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/mcp_router/resources.py +75 -14
  26. {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/mcp_router/server.py +28 -23
  27. {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/mcp_router/tools.py +177 -2
  28. {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/middleware/tracking.py +5 -5
  29. {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/auth.py +195 -8
  30. {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/chat/completions.py +5 -3
  31. {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/chat/streaming.py +95 -22
  32. {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/messages.py +24 -15
  33. remdb-0.3.183/src/rem/auth/jwt.py +352 -0
  34. {remdb-0.3.148 → remdb-0.3.183}/src/rem/auth/middleware.py +70 -30
  35. {remdb-0.3.148 → remdb-0.3.183}/src/rem/auth/providers/email.py +16 -7
  36. {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/commands/ask.py +1 -1
  37. {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/commands/db.py +147 -66
  38. {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/commands/process.py +143 -43
  39. {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/entities/__init__.py +4 -0
  40. remdb-0.3.183/src/rem/models/entities/ontology.py +183 -0
  41. remdb-0.3.183/src/rem/models/entities/subscriber.py +175 -0
  42. {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/entities/user.py +1 -0
  43. remdb-0.3.183/src/rem/schemas/agents/core/agent-builder.yaml +235 -0
  44. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/content/service.py +4 -3
  45. remdb-0.3.183/src/rem/services/email/service.py +522 -0
  46. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/embeddings/worker.py +26 -12
  47. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/postgres/__init__.py +17 -1
  48. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/postgres/diff_service.py +57 -5
  49. remdb-0.3.183/src/rem/services/postgres/programmable_diff_service.py +635 -0
  50. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/postgres/register_type.py +8 -8
  51. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/postgres/repository.py +37 -25
  52. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/postgres/schema_generator.py +5 -5
  53. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/postgres/sql_builder.py +6 -5
  54. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/session/compression.py +113 -50
  55. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/session/reload.py +14 -7
  56. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/user_service.py +41 -9
  57. {remdb-0.3.148 → remdb-0.3.183}/src/rem/settings.py +108 -1
  58. {remdb-0.3.148 → remdb-0.3.183}/src/rem/sql/background_indexes.sql +5 -0
  59. {remdb-0.3.148 → remdb-0.3.183}/src/rem/sql/migrations/001_install.sql +61 -5
  60. {remdb-0.3.148 → remdb-0.3.183}/src/rem/sql/migrations/002_install_models.sql +126 -108
  61. {remdb-0.3.148 → remdb-0.3.183}/src/rem/sql/migrations/004_cache_system.sql +7 -275
  62. {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/model_helpers.py +101 -0
  63. {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/schema_loader.py +45 -7
  64. remdb-0.3.183/test_ontologies.jsonl +3 -0
  65. remdb-0.3.183/test_resources.py +29 -0
  66. remdb-0.3.183/tests/integration/test_email_auth.py +191 -0
  67. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_embedding_worker.py +19 -5
  68. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_embeddings_e2e.py +6 -3
  69. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_graph_traversal.py +10 -9
  70. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_schema_introspection.py +1 -1
  71. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_session_management.py +3 -3
  72. remdb-0.3.183/tests/integration/test_user_lookup_by_email.py +269 -0
  73. remdb-0.3.183/tests/test_agent_manager.py +175 -0
  74. {remdb-0.3.148 → remdb-0.3.183}/tests/unit/agentic/test_schema.py +1 -1
  75. remdb-0.3.183/tests/unit/services/test_session_compression.py +273 -0
  76. {remdb-0.3.148 → remdb-0.3.183}/tests/unit/test_resource_tools.py +3 -3
  77. remdb-0.3.148/src/rem/models/entities/ontology.py +0 -191
  78. remdb-0.3.148/src/rem/services/email/service.py +0 -399
  79. remdb-0.3.148/tests/integration/run_rem_agent_eval.py +0 -375
  80. remdb-0.3.148/tests/integration/test_merge_strategies_demo.py +0 -232
  81. remdb-0.3.148/tests/integration/test_shared_sessions.py +0 -734
  82. {remdb-0.3.148 → remdb-0.3.183}/.claude/archive/PUBLISH.md +0 -0
  83. {remdb-0.3.148 → remdb-0.3.183}/.claude/archive/QUICKSTART.md +0 -0
  84. {remdb-0.3.148 → remdb-0.3.183}/.claude/archive/publish.sh +0 -0
  85. {remdb-0.3.148 → remdb-0.3.183}/.claude/settings.local.json +0 -0
  86. {remdb-0.3.148 → remdb-0.3.183}/.dockerignore +0 -0
  87. {remdb-0.3.148 → remdb-0.3.183}/.env.example +0 -0
  88. {remdb-0.3.148 → remdb-0.3.183}/.experiments/README.md +0 -0
  89. {remdb-0.3.148 → remdb-0.3.183}/.experiments/RUN_ON_CLUSTER.md +0 -0
  90. {remdb-0.3.148 → remdb-0.3.183}/.experiments/TESTING_GUIDE.md +0 -0
  91. {remdb-0.3.148 → remdb-0.3.183}/.experiments/test-phoenix-integration.sh +0 -0
  92. {remdb-0.3.148 → remdb-0.3.183}/.gitignore +0 -0
  93. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/039976f3b4dc7549.msgpack +0 -0
  94. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/045e65492b634d11.msgpack +0 -0
  95. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/07f5cd0e3fb1d287.msgpack +0 -0
  96. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/08f4ae339838b804.msgpack +0 -0
  97. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/0a64e58ae1289686.msgpack +0 -0
  98. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/0da06e67dd284834.msgpack +0 -0
  99. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/0e200bfe2ea523f2.msgpack +0 -0
  100. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/10b1925cb6007390.msgpack +0 -0
  101. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/11c55125d2be1895.msgpack +0 -0
  102. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/12dd62bbe8ee9b6a.msgpack +0 -0
  103. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/18f78825b8e302a8.msgpack +0 -0
  104. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/19a7ff44501eb3f9.msgpack +0 -0
  105. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/1c9cec1b6f266e8d.msgpack +0 -0
  106. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/1db0e7d4ac2443af.msgpack +0 -0
  107. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/1f32d592b118d944.msgpack +0 -0
  108. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/20db05a60f4c6ce3.msgpack +0 -0
  109. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/220746359cef9884.msgpack +0 -0
  110. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/24034098fd444b39.msgpack +0 -0
  111. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/2470f3a5e2d1953b.msgpack +0 -0
  112. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/24acc2df261ae549.msgpack +0 -0
  113. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/26a8ed0cdfc0ccab.msgpack +0 -0
  114. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/28e3c2bf25dfc659.msgpack +0 -0
  115. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/295a37ef869b0a49.msgpack +0 -0
  116. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/2a6f58009e01ad65.msgpack +0 -0
  117. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/2ab7ae3b2e42644e.msgpack +0 -0
  118. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/2b24548c2f91f8b9.msgpack +0 -0
  119. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/2bb63e6235d19b40.msgpack +0 -0
  120. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/2c74a0f17cde1b0c.msgpack +0 -0
  121. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/2d728912eb223a33.msgpack +0 -0
  122. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/2de80149b410a676.msgpack +0 -0
  123. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/2e1001cbed04103c.msgpack +0 -0
  124. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/32d99ccf71d10a38.msgpack +0 -0
  125. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/3353ae12a176a9bd.msgpack +0 -0
  126. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/34f1cfc7a58e8b0c.msgpack +0 -0
  127. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/3c5bd974fb83b573.msgpack +0 -0
  128. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/3ca9da43dd834bca.msgpack +0 -0
  129. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/3e9db2b8a87873c7.msgpack +0 -0
  130. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/3ff1b430e0b510d5.msgpack +0 -0
  131. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/4035607526c8600d.msgpack +0 -0
  132. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/40f0415d564cb996.msgpack +0 -0
  133. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/4388f8ee095c9ed8.msgpack +0 -0
  134. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/439f422b7f8dc467.msgpack +0 -0
  135. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/452c56ffd625931f.msgpack +0 -0
  136. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/45ee850e300157c8.msgpack +0 -0
  137. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/45f79b5f90a07f0e.msgpack +0 -0
  138. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/487e56b12d123968.msgpack +0 -0
  139. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/49be62bf170de12a.msgpack +0 -0
  140. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/4b3e165ec4ba87d0.msgpack +0 -0
  141. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/505ff13d9ac8f006.msgpack +0 -0
  142. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/51e81cbe7899e310.msgpack +0 -0
  143. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/537dea93b57ffce5.msgpack +0 -0
  144. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/56a9f1cd9ec05384.msgpack +0 -0
  145. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/56bf449feab17e6d.msgpack +0 -0
  146. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/57ab5fe18c74538b.msgpack +0 -0
  147. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/5a11f436d88e89cd.msgpack +0 -0
  148. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/5b10dca1c6db6714.msgpack +0 -0
  149. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/5eb63bbe412735a4.msgpack +0 -0
  150. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/5ebca8549bb3ff2b.msgpack +0 -0
  151. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/5fef074c57dd118f.msgpack +0 -0
  152. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/60f343229f836ab6.msgpack +0 -0
  153. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/6153f83bf3713b32.msgpack +0 -0
  154. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/6488134e7b6dd403.msgpack +0 -0
  155. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/68e7b00767be2e16.msgpack +0 -0
  156. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/6afac5499ef0a938.msgpack +0 -0
  157. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/6bd93d4fd4cc3893.msgpack +0 -0
  158. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/6defbba8bfc76983.msgpack +0 -0
  159. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/6e37f5165f71513b.msgpack +0 -0
  160. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/6f9130d5f4db8b28.msgpack +0 -0
  161. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/6fc0d79c16c59de5.msgpack +0 -0
  162. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/774b8c209528323e.msgpack +0 -0
  163. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/78c509bc3a9d93c4.msgpack +0 -0
  164. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/798017037907ab5f.msgpack +0 -0
  165. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/7a4fd9fd84ae6899.msgpack +0 -0
  166. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/7b094993adee6e1a.msgpack +0 -0
  167. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/7c3ad418912e7c09.msgpack +0 -0
  168. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/7f630276be2a1503.msgpack +0 -0
  169. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/80fd68e8a4ac6556.msgpack +0 -0
  170. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/819aabcfdf1334af.msgpack +0 -0
  171. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/81ea65c652232174.msgpack +0 -0
  172. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/84c4f70ba7616566.msgpack +0 -0
  173. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/856e8ba75c4d220e.msgpack +0 -0
  174. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/8cace0ec228b43d6.msgpack +0 -0
  175. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/8d1ecc30d7d58b41.msgpack +0 -0
  176. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/8e2e4ab7c05925fa.msgpack +0 -0
  177. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/8e89a980bc3b92d8.msgpack +0 -0
  178. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/8f6a9b01f15883f5.msgpack +0 -0
  179. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/9091b9d61e026046.msgpack +0 -0
  180. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/927a028cf723c70d.msgpack +0 -0
  181. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/94bda8f2cabc1358.msgpack +0 -0
  182. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/95313ccec52beb53.msgpack +0 -0
  183. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/954fee40bb61432b.msgpack +0 -0
  184. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/9592cc24f2bf0d77.msgpack +0 -0
  185. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/967396ed95832197.msgpack +0 -0
  186. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/9804f3b02bf98e83.msgpack +0 -0
  187. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/9936890e55f094f3.msgpack +0 -0
  188. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/99405cab6cc35283.msgpack +0 -0
  189. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/99e3da57a007bc59.msgpack +0 -0
  190. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/99f1579d6a6790ad.msgpack +0 -0
  191. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/9c265a028ee05977.msgpack +0 -0
  192. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/9f02e484a5feb3af.msgpack +0 -0
  193. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/9fd81ffc0b3282f8.msgpack +0 -0
  194. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/a0d60cff1e5950a6.msgpack +0 -0
  195. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/a2bcfb3e4cf75d71.msgpack +0 -0
  196. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/a3fd1a45a0ef02f1.msgpack +0 -0
  197. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/a72acced3b5f0c28.msgpack +0 -0
  198. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/a78fa3051259d29c.msgpack +0 -0
  199. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/a964045be65be2d2.msgpack +0 -0
  200. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/ae8bc0c15954a96a.msgpack +0 -0
  201. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/af05b5754cd245b5.msgpack +0 -0
  202. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/af28c894e94dc85c.msgpack +0 -0
  203. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/b0a26c1396c336b2.msgpack +0 -0
  204. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/b2b5204d4dfab9dc.msgpack +0 -0
  205. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/b2f8df0bdc713008.msgpack +0 -0
  206. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/b361fc308a3b9ab1.msgpack +0 -0
  207. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/b374846290238cd1.msgpack +0 -0
  208. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/b4b163b746d0aa53.msgpack +0 -0
  209. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/b68845f6e8da9be3.msgpack +0 -0
  210. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/b7e677bf8412e9bd.msgpack +0 -0
  211. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/b99ba32d31caa65e.msgpack +0 -0
  212. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/bc02d7c24ec8eccc.msgpack +0 -0
  213. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/bc1a967be3c37e18.msgpack +0 -0
  214. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/bc89d1801e46fb3c.msgpack +0 -0
  215. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/bce873a224061155.msgpack +0 -0
  216. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/bea4de84b22aebbc.msgpack +0 -0
  217. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/c5f723dcb1ff4b6f.msgpack +0 -0
  218. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/c6ca46f28d7798dd.msgpack +0 -0
  219. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/c6e2f4ede9282c2f.msgpack +0 -0
  220. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/c761de11e901384a.msgpack +0 -0
  221. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/c99399d1889fa84c.msgpack +0 -0
  222. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/c9fd297a955f2355.msgpack +0 -0
  223. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/ca9a80b78b7aa22c.msgpack +0 -0
  224. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/cb9503b8979b185d.msgpack +0 -0
  225. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/cbc6cfb0a51ab6bb.msgpack +0 -0
  226. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/cc3bda1ed2e95150.msgpack +0 -0
  227. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/ceb98745ab5dbe70.msgpack +0 -0
  228. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/d1df948b17e4d9fc.msgpack +0 -0
  229. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/d1e1e212112ab926.msgpack +0 -0
  230. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/d4b766742cf2328a.msgpack +0 -0
  231. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/d93262cc2f01da93.msgpack +0 -0
  232. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/d977ad06778acf8d.msgpack +0 -0
  233. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/da9376a352a900b8.msgpack +0 -0
  234. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/db2816895dd01979.msgpack +0 -0
  235. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/db3a782c367dbe28.msgpack +0 -0
  236. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/db825a17acae232c.msgpack +0 -0
  237. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/dc96bd8d8ad04ee4.msgpack +0 -0
  238. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/dd1562878ff3c0f5.msgpack +0 -0
  239. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/de117be85702ebbc.msgpack +0 -0
  240. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/e3aafc52b94d322c.msgpack +0 -0
  241. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/e53a6e77d7808ee8.msgpack +0 -0
  242. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/e7dc452a2aae9b10.msgpack +0 -0
  243. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/ebf2fcb04221173e.msgpack +0 -0
  244. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/ebf527595602c7cc.msgpack +0 -0
  245. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/ed6a8410124b956b.msgpack +0 -0
  246. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/f1801152a72fbdf0.msgpack +0 -0
  247. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/f6fe984552a62891.msgpack +0 -0
  248. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/f81bbef279fc5018.msgpack +0 -0
  249. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/f975369ecf8cfe1b.msgpack +0 -0
  250. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/fd21c48c0c429b77.msgpack +0 -0
  251. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/0354796dc060829e.msgpack +0 -0
  252. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/039f9af1f7851836.msgpack +0 -0
  253. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/05e117af5b509bae.msgpack +0 -0
  254. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/0bc34e3949fbef01.msgpack +0 -0
  255. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/0ce495589c7221d3.msgpack +0 -0
  256. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/0dd1cda742544db1.msgpack +0 -0
  257. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/0eba31912f25f3eb.msgpack +0 -0
  258. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/0f2703145ac02172.msgpack +0 -0
  259. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/0fa09530ccf28805.msgpack +0 -0
  260. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/0fd8e540615171e8.msgpack +0 -0
  261. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/101ff2c4997376a9.msgpack +0 -0
  262. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/12c490c06def9488.msgpack +0 -0
  263. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/18257c152bba13a6.msgpack +0 -0
  264. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/1d4a6a418d2b6a64.msgpack +0 -0
  265. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/1e61d3c782893a54.msgpack +0 -0
  266. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/1fc92f87c93d4fd9.msgpack +0 -0
  267. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/2c9de54bccd13e11.msgpack +0 -0
  268. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/2f3ea5c1badef128.msgpack +0 -0
  269. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/32aa8c660cf91963.msgpack +0 -0
  270. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/35111034d5ad26a6.msgpack +0 -0
  271. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/352eb0c7f720c196.msgpack +0 -0
  272. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/3a2e224daffb8e3d.msgpack +0 -0
  273. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/3ee772a67521e170.msgpack +0 -0
  274. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/401e93fa320273da.msgpack +0 -0
  275. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/40d9b4294628036d.msgpack +0 -0
  276. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/44592db880e5ec3f.msgpack +0 -0
  277. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/45870b434cfe0c85.msgpack +0 -0
  278. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/458943c95381e6de.msgpack +0 -0
  279. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/4ca27bb3cae67ad6.msgpack +0 -0
  280. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/4e0d19bea7253cc8.msgpack +0 -0
  281. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/4f02317672f3198b.msgpack +0 -0
  282. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/56a98d6dbd85ebed.msgpack +0 -0
  283. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/5d6b31c824d8741e.msgpack +0 -0
  284. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/5f75509e9ed27170.msgpack +0 -0
  285. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/5fcfe11a675bac8b.msgpack +0 -0
  286. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/61b8b2fc9077f91a.msgpack +0 -0
  287. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/642c92672daf5c43.msgpack +0 -0
  288. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/655ff32e6cd550bc.msgpack +0 -0
  289. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/65bc24178c843052.msgpack +0 -0
  290. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/66cd62510980471d.msgpack +0 -0
  291. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/681c1dd84a2bdf26.msgpack +0 -0
  292. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/6838fe47e511b2b8.msgpack +0 -0
  293. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/6a609539ed167213.msgpack +0 -0
  294. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/74b6b71e76efb9c9.msgpack +0 -0
  295. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/75e719c76477d44f.msgpack +0 -0
  296. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/77e0e879c2c95195.msgpack +0 -0
  297. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/7a15ef0ba4aa5660.msgpack +0 -0
  298. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/7a9dd710389dde99.msgpack +0 -0
  299. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/7b783286f80ab872.msgpack +0 -0
  300. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/7d1298c12634bc16.msgpack +0 -0
  301. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/7ddf2b8e4c6cb2e3.msgpack +0 -0
  302. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/7fc2229fcb868522.msgpack +0 -0
  303. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/85abdb138905726a.msgpack +0 -0
  304. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/884e41282eb896c5.msgpack +0 -0
  305. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/8a703994c30b19ea.msgpack +0 -0
  306. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/8aca0021ebe63f8e.msgpack +0 -0
  307. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/8bc107890e1ab320.msgpack +0 -0
  308. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/8c1a66ea86c98f76.msgpack +0 -0
  309. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/8dd5ac3207b6ca3b.msgpack +0 -0
  310. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/8f898c00eea3a93b.msgpack +0 -0
  311. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/931cbc8a4cbebf70.msgpack +0 -0
  312. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/932804c1aff4d044.msgpack +0 -0
  313. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/94b151c44f8a3588.msgpack +0 -0
  314. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/94ce2189385c970f.msgpack +0 -0
  315. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/94fa736d741d63be.msgpack +0 -0
  316. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/95bd2009772c07fd.msgpack +0 -0
  317. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/95f748fee80393ef.msgpack +0 -0
  318. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/9b1e26a55ef34ee9.msgpack +0 -0
  319. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/9f3159c9912586db.msgpack +0 -0
  320. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/a17c34748d867e85.msgpack +0 -0
  321. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/a2ca0018b46feabd.msgpack +0 -0
  322. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/a60b9031cf48ebba.msgpack +0 -0
  323. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/a9be790d1f0ae7ec.msgpack +0 -0
  324. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/ac4d6823c4034fe6.msgpack +0 -0
  325. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/ad80625c2fe055e2.msgpack +0 -0
  326. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/b102691e3c3e4cae.msgpack +0 -0
  327. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/b34027c96f8daa30.msgpack +0 -0
  328. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/b639b463e04459db.msgpack +0 -0
  329. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/b7e540f21b7f0271.msgpack +0 -0
  330. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/ba460ba22b61b3ac.msgpack +0 -0
  331. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/ba7499ca4c58ff94.msgpack +0 -0
  332. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/be2d027b571e9344.msgpack +0 -0
  333. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/c1fff30850bb8b6f.msgpack +0 -0
  334. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/c3889a8993fc490d.msgpack +0 -0
  335. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/c51c4fa6e6b83f7e.msgpack +0 -0
  336. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/c57ca30ea53e2d68.msgpack +0 -0
  337. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/c64c433f4452d82a.msgpack +0 -0
  338. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/c91739ca8dcc39ea.msgpack +0 -0
  339. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/c91d5e81eba0d3c9.msgpack +0 -0
  340. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/c9fecad2b9f0357c.msgpack +0 -0
  341. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/cb7fab9ab7b8c520.msgpack +0 -0
  342. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/cbbaeea4c7d24156.msgpack +0 -0
  343. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/cc7dd2a0003c03d8.msgpack +0 -0
  344. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/ce64ddc6701623a7.msgpack +0 -0
  345. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/d19b01ce83c8c71a.msgpack +0 -0
  346. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/d5aae4af1fe94a3a.msgpack +0 -0
  347. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/d5c47dfe60be1592.msgpack +0 -0
  348. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/d7eef627315eeab2.msgpack +0 -0
  349. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/d81cb4d0b47db4ae.msgpack +0 -0
  350. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/deed4c82c27e2b5d.msgpack +0 -0
  351. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/df1c0ed33adf634d.msgpack +0 -0
  352. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/e1c2af52b798715b.msgpack +0 -0
  353. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/e249b7de89e07bbc.msgpack +0 -0
  354. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/e6b6c0b80707ee08.msgpack +0 -0
  355. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/e74d1c6e8e950e20.msgpack +0 -0
  356. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/e9d2da361090c228.msgpack +0 -0
  357. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/ec8c114b8a360379.msgpack +0 -0
  358. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/f1772556a9442724.msgpack +0 -0
  359. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/f4753f23f51fe441.msgpack +0 -0
  360. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/f52c654a914ee356.msgpack +0 -0
  361. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/f6187d9353655ff5.msgpack +0 -0
  362. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/f766aa4cfdca2770.msgpack +0 -0
  363. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/fabcc3a4db082252.msgpack +0 -0
  364. {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/fec2d3d5372c2bcc.msgpack +0 -0
  365. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/Activate.ps1 +0 -0
  366. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/activate +0 -0
  367. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/activate-global-python-argcomplete +0 -0
  368. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/activate.csh +0 -0
  369. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/activate.fish +0 -0
  370. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/alembic +0 -0
  371. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/arize-phoenix +0 -0
  372. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/cyclopts +0 -0
  373. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/distro +0 -0
  374. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/docutils +0 -0
  375. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/dotenv +0 -0
  376. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/email_validator +0 -0
  377. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/f2py +0 -0
  378. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/fastapi +0 -0
  379. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/fastavro +0 -0
  380. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/fastmcp +0 -0
  381. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/genai-prices +0 -0
  382. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/get_gprof +0 -0
  383. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/get_objgraph +0 -0
  384. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/griffe +0 -0
  385. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/hf +0 -0
  386. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/httpx +0 -0
  387. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/hypercorn +0 -0
  388. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/inv +0 -0
  389. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/invoke +0 -0
  390. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/jp.py +0 -0
  391. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/jsonpath_ng +0 -0
  392. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/jsonschema +0 -0
  393. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/keyring +0 -0
  394. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/kreuzberg +0 -0
  395. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/logfire +0 -0
  396. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/mako-render +0 -0
  397. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/markdown-it +0 -0
  398. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/mcp +0 -0
  399. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/mpire-dashboard +0 -0
  400. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/normalizer +0 -0
  401. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/numpy-config +0 -0
  402. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/openai +0 -0
  403. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/opentelemetry-bootstrap +0 -0
  404. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/opentelemetry-instrument +0 -0
  405. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/pai +0 -0
  406. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/phoenix +0 -0
  407. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/pip +0 -0
  408. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/pip3 +0 -0
  409. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/pip3.12 +0 -0
  410. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/pygmentize +0 -0
  411. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/pyrsa-decrypt +0 -0
  412. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/pyrsa-encrypt +0 -0
  413. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/pyrsa-keygen +0 -0
  414. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/pyrsa-priv2pub +0 -0
  415. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/pyrsa-sign +0 -0
  416. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/pyrsa-verify +0 -0
  417. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/pystache +0 -0
  418. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/pystache-test +0 -0
  419. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/python +0 -0
  420. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/python-argcomplete-check-easy-install-script +0 -0
  421. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/python3 +0 -0
  422. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/python3.12 +0 -0
  423. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/register-python-argcomplete +0 -0
  424. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/rem +0 -0
  425. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/rst2html +0 -0
  426. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/rst2html4 +0 -0
  427. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/rst2html5 +0 -0
  428. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/rst2latex +0 -0
  429. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/rst2man +0 -0
  430. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/rst2odt +0 -0
  431. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/rst2pseudoxml +0 -0
  432. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/rst2s5 +0 -0
  433. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/rst2xetex +0 -0
  434. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/rst2xml +0 -0
  435. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/strawberry +0 -0
  436. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/tiny-agents +0 -0
  437. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/tqdm +0 -0
  438. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/undill +0 -0
  439. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/uvicorn +0 -0
  440. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/watchfiles +0 -0
  441. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/websockets +0 -0
  442. {remdb-0.3.148 → remdb-0.3.183}/.venv-test/pyvenv.cfg +0 -0
  443. {remdb-0.3.148 → remdb-0.3.183}/Dockerfile +0 -0
  444. {remdb-0.3.148 → remdb-0.3.183}/README.md +0 -0
  445. {remdb-0.3.148 → remdb-0.3.183}/Tiltfile +0 -0
  446. {remdb-0.3.148 → remdb-0.3.183}/alembic/README.md +0 -0
  447. {remdb-0.3.148 → remdb-0.3.183}/alembic/env.py +0 -0
  448. {remdb-0.3.148 → remdb-0.3.183}/alembic/script.py.mako +0 -0
  449. {remdb-0.3.148 → remdb-0.3.183}/alembic.ini +0 -0
  450. {remdb-0.3.148 → remdb-0.3.183}/dev-setup.sh +0 -0
  451. {remdb-0.3.148 → remdb-0.3.183}/docker-compose.prebuilt.yml +0 -0
  452. {remdb-0.3.148 → remdb-0.3.183}/docker-compose.test.yml +0 -0
  453. {remdb-0.3.148 → remdb-0.3.183}/docker-compose.yml +0 -0
  454. {remdb-0.3.148 → remdb-0.3.183}/src/rem/__init__.py +0 -0
  455. {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/README.md +0 -0
  456. {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/__init__.py +0 -0
  457. {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/agents/README.md +0 -0
  458. {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/agents/sse_simulator.py +0 -0
  459. {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/llm_provider_models.py +0 -0
  460. {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/mcp/__init__.py +0 -0
  461. {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/otel/__init__.py +0 -0
  462. {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/otel/setup.py +0 -0
  463. {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/providers/phoenix.py +0 -0
  464. {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/query.py +0 -0
  465. {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/query_helper.py +0 -0
  466. {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/serialization.py +0 -0
  467. {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/tools/__init__.py +0 -0
  468. {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/README.md +0 -0
  469. {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/mcp_router/prompts.py +0 -0
  470. {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/admin.py +0 -0
  471. {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/chat/__init__.py +0 -0
  472. {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/chat/json_utils.py +0 -0
  473. {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/chat/models.py +0 -0
  474. {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/chat/otel_utils.py +0 -0
  475. {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/chat/sse_events.py +0 -0
  476. {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/dev.py +0 -0
  477. {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/feedback.py +0 -0
  478. {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/models.py +0 -0
  479. {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/query.py +0 -0
  480. {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/shared_sessions.py +0 -0
  481. {remdb-0.3.148 → remdb-0.3.183}/src/rem/auth/README.md +0 -0
  482. {remdb-0.3.148 → remdb-0.3.183}/src/rem/auth/__init__.py +0 -0
  483. {remdb-0.3.148 → remdb-0.3.183}/src/rem/auth/providers/__init__.py +0 -0
  484. {remdb-0.3.148 → remdb-0.3.183}/src/rem/auth/providers/base.py +0 -0
  485. {remdb-0.3.148 → remdb-0.3.183}/src/rem/auth/providers/google.py +0 -0
  486. {remdb-0.3.148 → remdb-0.3.183}/src/rem/auth/providers/microsoft.py +0 -0
  487. {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/README.md +0 -0
  488. {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/__init__.py +0 -0
  489. {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/commands/README.md +0 -0
  490. {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/commands/__init__.py +0 -0
  491. {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/commands/cluster.py +0 -0
  492. {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/commands/configure.py +0 -0
  493. {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/commands/dreaming.py +0 -0
  494. {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/commands/experiments.py +0 -0
  495. {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/commands/mcp.py +0 -0
  496. {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/commands/scaffold.py +0 -0
  497. {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/commands/schema.py +0 -0
  498. {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/commands/serve.py +0 -0
  499. {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/commands/session.py +0 -0
  500. {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/dreaming.py +0 -0
  501. {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/main.py +0 -0
  502. {remdb-0.3.148 → remdb-0.3.183}/src/rem/config.py +0 -0
  503. {remdb-0.3.148 → remdb-0.3.183}/src/rem/mcp_server.py +0 -0
  504. {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/core/__init__.py +0 -0
  505. {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/core/core_model.py +0 -0
  506. {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/core/engram.py +0 -0
  507. {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/core/experiment.py +0 -0
  508. {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/core/inline_edge.py +0 -0
  509. {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/core/rem_query.py +0 -0
  510. {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/entities/domain_resource.py +0 -0
  511. {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/entities/feedback.py +0 -0
  512. {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/entities/file.py +0 -0
  513. {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/entities/image_resource.py +0 -0
  514. {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/entities/message.py +0 -0
  515. {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/entities/moment.py +0 -0
  516. {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/entities/ontology_config.py +0 -0
  517. {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/entities/resource.py +0 -0
  518. {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/entities/schema.py +0 -0
  519. {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/entities/session.py +0 -0
  520. {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/entities/shared_session.py +0 -0
  521. {remdb-0.3.148 → remdb-0.3.183}/src/rem/py.typed +0 -0
  522. {remdb-0.3.148 → remdb-0.3.183}/src/rem/registry.py +0 -0
  523. {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/README.md +0 -0
  524. {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/__init__.py +0 -0
  525. {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/agents/README.md +0 -0
  526. {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/agents/core/moment-builder.yaml +0 -0
  527. {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/agents/core/rem-query-agent.yaml +0 -0
  528. {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/agents/core/resource-affinity-assessor.yaml +0 -0
  529. {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/agents/core/simple-assistant.yaml +0 -0
  530. {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/agents/core/user-profile-builder.yaml +0 -0
  531. {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/agents/examples/contract-analyzer.yaml +0 -0
  532. {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/agents/examples/contract-extractor.yaml +0 -0
  533. {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/agents/examples/cv-parser.yaml +0 -0
  534. {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/agents/examples/hello-world.yaml +0 -0
  535. {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/agents/examples/query.yaml +0 -0
  536. {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/agents/examples/simple.yaml +0 -0
  537. {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/agents/examples/test.yaml +0 -0
  538. {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/agents/rem.yaml +0 -0
  539. {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/evaluators/hello-world/default.yaml +0 -0
  540. {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/evaluators/rem/faithfulness.yaml +0 -0
  541. {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/evaluators/rem/lookup-correctness.yaml +0 -0
  542. {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/evaluators/rem/retrieval-precision.yaml +0 -0
  543. {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/evaluators/rem/retrieval-recall.yaml +0 -0
  544. {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/evaluators/rem/search-correctness.yaml +0 -0
  545. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/__init__.py +0 -0
  546. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/audio/INTEGRATION.md +0 -0
  547. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/audio/README.md +0 -0
  548. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/audio/__init__.py +0 -0
  549. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/audio/chunker.py +0 -0
  550. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/audio/transcriber.py +0 -0
  551. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/content/README.md +0 -0
  552. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/content/__init__.py +0 -0
  553. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/content/providers.py +0 -0
  554. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/dreaming/README.md +0 -0
  555. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/dreaming/__init__.py +0 -0
  556. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/dreaming/affinity_service.py +0 -0
  557. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/dreaming/moment_service.py +0 -0
  558. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/dreaming/ontology_service.py +0 -0
  559. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/dreaming/user_model_service.py +0 -0
  560. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/dreaming/utils.py +0 -0
  561. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/email/__init__.py +0 -0
  562. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/email/templates.py +0 -0
  563. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/embeddings/__init__.py +0 -0
  564. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/embeddings/api.py +0 -0
  565. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/fs/README.md +0 -0
  566. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/fs/__init__.py +0 -0
  567. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/fs/examples.py +0 -0
  568. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/fs/examples_paths.py +0 -0
  569. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/fs/git_provider.py +0 -0
  570. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/fs/local_provider.py +0 -0
  571. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/fs/parsing-hooks-examples.md +0 -0
  572. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/fs/paths.py +0 -0
  573. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/fs/provider.py +0 -0
  574. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/fs/s3_provider.py +0 -0
  575. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/fs/service.py +0 -0
  576. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/git/README.md +0 -0
  577. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/git/__init__.py +0 -0
  578. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/git/service.py +0 -0
  579. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/phoenix/EXPERIMENT_DESIGN.md +0 -0
  580. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/phoenix/README.md +0 -0
  581. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/phoenix/__init__.py +0 -0
  582. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/phoenix/client.py +0 -0
  583. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/phoenix/config.py +0 -0
  584. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/phoenix/prompt_labels.py +0 -0
  585. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/postgres/README.md +0 -0
  586. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/postgres/migration_service.py +0 -0
  587. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/postgres/pydantic_to_sqlalchemy.py +0 -0
  588. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/postgres/service.py +0 -0
  589. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/rate_limit.py +0 -0
  590. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/rem/README.md +0 -0
  591. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/rem/__init__.py +0 -0
  592. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/rem/exceptions.py +0 -0
  593. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/rem/executor.py +0 -0
  594. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/rem/parser.py +0 -0
  595. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/rem/queries.py +0 -0
  596. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/rem/query.py +0 -0
  597. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/rem/service.py +0 -0
  598. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/session/README.md +0 -0
  599. {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/session/__init__.py +0 -0
  600. {remdb-0.3.148 → remdb-0.3.183}/src/rem/sql/migrations/003_optional_extensions.sql +0 -0
  601. {remdb-0.3.148 → remdb-0.3.183}/src/rem/sql/migrations/005_schema_update.sql +0 -0
  602. {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/AGENTIC_CHUNKING.md +0 -0
  603. {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/README.md +0 -0
  604. {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/__init__.py +0 -0
  605. {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/agentic_chunking.py +0 -0
  606. {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/batch_ops.py +0 -0
  607. {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/chunking.py +0 -0
  608. {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/clip_embeddings.py +0 -0
  609. {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/constants.py +0 -0
  610. {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/date_utils.py +0 -0
  611. {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/dict_utils.py +0 -0
  612. {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/embeddings.py +0 -0
  613. {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/examples/embeddings_example.py +0 -0
  614. {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/examples/sql_types_example.py +0 -0
  615. {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/files.py +0 -0
  616. {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/markdown.py +0 -0
  617. {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/mime_types.py +0 -0
  618. {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/sql_paths.py +0 -0
  619. {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/sql_types.py +0 -0
  620. {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/user_id.py +0 -0
  621. {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/vision.py +0 -0
  622. {remdb-0.3.148 → remdb-0.3.183}/src/rem/workers/README.md +0 -0
  623. {remdb-0.3.148 → remdb-0.3.183}/src/rem/workers/__init__.py +0 -0
  624. {remdb-0.3.148 → remdb-0.3.183}/src/rem/workers/db_listener.py +0 -0
  625. {remdb-0.3.148 → remdb-0.3.183}/src/rem/workers/db_maintainer.py +0 -0
  626. {remdb-0.3.148 → remdb-0.3.183}/src/rem/workers/dreaming.py +0 -0
  627. {remdb-0.3.148 → remdb-0.3.183}/src/rem/workers/engram_processor.py +0 -0
  628. {remdb-0.3.148 → remdb-0.3.183}/src/rem/workers/sqs_file_processor.py +0 -0
  629. {remdb-0.3.148 → remdb-0.3.183}/src/rem/workers/unlogged_maintainer.py +0 -0
  630. {remdb-0.3.148 → remdb-0.3.183}/tests/README.md +0 -0
  631. {remdb-0.3.148 → remdb-0.3.183}/tests/__init__.py +0 -0
  632. {remdb-0.3.148 → remdb-0.3.183}/tests/conftest.py +0 -0
  633. {remdb-0.3.148 → remdb-0.3.183}/tests/data/README.md +0 -0
  634. {remdb-0.3.148 → remdb-0.3.183}/tests/data/audio/README.md +0 -0
  635. {remdb-0.3.148 → remdb-0.3.183}/tests/data/audio/SUMMARY.md +0 -0
  636. {remdb-0.3.148 → remdb-0.3.183}/tests/data/audio/generate_test_audio.py +0 -0
  637. {remdb-0.3.148 → remdb-0.3.183}/tests/data/audio/test_hq_30s.wav +0 -0
  638. {remdb-0.3.148 → remdb-0.3.183}/tests/data/audio/test_long_90s.wav +0 -0
  639. {remdb-0.3.148 → remdb-0.3.183}/tests/data/audio/test_medium_10s.wav +0 -0
  640. {remdb-0.3.148 → remdb-0.3.183}/tests/data/audio/test_short_3s.wav +0 -0
  641. {remdb-0.3.148 → remdb-0.3.183}/tests/data/audio/test_standard_30s.wav +0 -0
  642. {remdb-0.3.148 → remdb-0.3.183}/tests/data/content-examples/pdf/README.md +0 -0
  643. {remdb-0.3.148 → remdb-0.3.183}/tests/data/content-examples/pdf/annual_financial_report.pdf +0 -0
  644. {remdb-0.3.148 → remdb-0.3.183}/tests/data/content-examples/pdf/consulting_agreement.pdf +0 -0
  645. {remdb-0.3.148 → remdb-0.3.183}/tests/data/content-examples/pdf/nda_agreement.pdf +0 -0
  646. {remdb-0.3.148 → remdb-0.3.183}/tests/data/content-examples/pdf/sample_business_plan.pdf +0 -0
  647. {remdb-0.3.148 → remdb-0.3.183}/tests/data/content-examples/pdf/sample_invoice.pdf +0 -0
  648. {remdb-0.3.148 → remdb-0.3.183}/tests/data/content-examples/pdf/sample_research_paper.pdf +0 -0
  649. {remdb-0.3.148 → remdb-0.3.183}/tests/data/content-examples/pdf/sample_resume.pdf +0 -0
  650. {remdb-0.3.148 → remdb-0.3.183}/tests/data/content-examples/pdf/service_contract.pdf +0 -0
  651. {remdb-0.3.148 → remdb-0.3.183}/tests/data/content-examples/test.md +0 -0
  652. {remdb-0.3.148 → remdb-0.3.183}/tests/data/docs/CODE_REVIEW_FIXES.md +0 -0
  653. {remdb-0.3.148 → remdb-0.3.183}/tests/data/docs/TEST_RESULTS.md +0 -0
  654. {remdb-0.3.148 → remdb-0.3.183}/tests/data/docs/cli_verification.md +0 -0
  655. {remdb-0.3.148 → remdb-0.3.183}/tests/data/docs/database-design.md +0 -0
  656. {remdb-0.3.148 → remdb-0.3.183}/tests/data/docs/deep-learning-guide.md +0 -0
  657. {remdb-0.3.148 → remdb-0.3.183}/tests/data/docs/ml-overview.md +0 -0
  658. {remdb-0.3.148 → remdb-0.3.183}/tests/data/docs/python-best-practices.md +0 -0
  659. {remdb-0.3.148 → remdb-0.3.183}/tests/data/docs/test_summary.md +0 -0
  660. {remdb-0.3.148 → remdb-0.3.183}/tests/data/engrams/test-conversation.yaml +0 -0
  661. {remdb-0.3.148 → remdb-0.3.183}/tests/data/engrams/test-diary-entry.yaml +0 -0
  662. {remdb-0.3.148 → remdb-0.3.183}/tests/data/engrams/test-meeting-notes.yaml +0 -0
  663. {remdb-0.3.148 → remdb-0.3.183}/tests/data/engrams/test-observation.yaml +0 -0
  664. {remdb-0.3.148 → remdb-0.3.183}/tests/data/engrams/test-project-note.yaml +0 -0
  665. {remdb-0.3.148 → remdb-0.3.183}/tests/data/graph_seed.yaml +0 -0
  666. {remdb-0.3.148 → remdb-0.3.183}/tests/data/sample-architecture-doc.txt +0 -0
  667. {remdb-0.3.148 → remdb-0.3.183}/tests/data/sample_conversations.yaml +0 -0
  668. {remdb-0.3.148 → remdb-0.3.183}/tests/data/schemas/agents/query_agent.yaml +0 -0
  669. {remdb-0.3.148 → remdb-0.3.183}/tests/data/schemas/agents/summarization_agent.yaml +0 -0
  670. {remdb-0.3.148 → remdb-0.3.183}/tests/data/schemas/agents/test-cv-parser.yaml +0 -0
  671. {remdb-0.3.148 → remdb-0.3.183}/tests/data/schemas/evaluators/accuracy_evaluator.yaml +0 -0
  672. {remdb-0.3.148 → remdb-0.3.183}/tests/data/seed/001_sample_data.yaml +0 -0
  673. {remdb-0.3.148 → remdb-0.3.183}/tests/data/seed/001_sample_data.yaml.bak +0 -0
  674. {remdb-0.3.148 → remdb-0.3.183}/tests/data/seed/README.md +0 -0
  675. {remdb-0.3.148 → remdb-0.3.183}/tests/data/seed/files/documents/api_spec.md +0 -0
  676. {remdb-0.3.148 → remdb-0.3.183}/tests/data/seed/files/documents/meeting_notes.txt +0 -0
  677. {remdb-0.3.148 → remdb-0.3.183}/tests/data/seed/files/engrams/personal_reflection.yaml +0 -0
  678. {remdb-0.3.148 → remdb-0.3.183}/tests/data/seed/files/engrams/product_idea_voice_memo.yaml +0 -0
  679. {remdb-0.3.148 → remdb-0.3.183}/tests/data/seed/files/engrams/team_standup_meeting.yaml +0 -0
  680. {remdb-0.3.148 → remdb-0.3.183}/tests/data/seed/resources.yaml +0 -0
  681. {remdb-0.3.148 → remdb-0.3.183}/tests/data/seed/shared_sessions_demo.yaml +0 -0
  682. {remdb-0.3.148 → remdb-0.3.183}/tests/data/seed/test-user-data.yaml +0 -0
  683. {remdb-0.3.148 → remdb-0.3.183}/tests/data/seed/test-user-data.yaml.bak +0 -0
  684. {remdb-0.3.148 → remdb-0.3.183}/tests/data/seed/users.yaml +0 -0
  685. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/README.md +0 -0
  686. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/helpers/README.md +0 -0
  687. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/helpers/__init__.py +0 -0
  688. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/helpers/seed_data.py +0 -0
  689. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/phoenix/run_complete_experiment.py +0 -0
  690. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/phoenix/run_hello_world_experiment.py +0 -0
  691. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/phoenix/test_connection.py +0 -0
  692. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/rem-agent-eval-questions.yaml +0 -0
  693. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/rem-query-agent-tests.yaml +0 -0
  694. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/sample_data/dreaming/load_sample_data.py +0 -0
  695. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/sample_data/dreaming/resources/api_design_discussion.md +0 -0
  696. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/sample_data/dreaming/resources/database_migration_plan.md +0 -0
  697. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/sample_data/dreaming/resources/morning_standup_notes.md +0 -0
  698. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/sample_data/dreaming/resources/production_incident_postmortem.md +0 -0
  699. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/sample_data/dreaming/resources/quarterly_reflection.md +0 -0
  700. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/services/test_content_providers.py +0 -0
  701. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/services/test_schema_provider.py +0 -0
  702. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_agent_end_to_end.py +0 -0
  703. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_agent_tool_invocation.py +0 -0
  704. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_agent_with_tools.py +0 -0
  705. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_api_endpoints.py +0 -0
  706. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_batch_upsert.py +0 -0
  707. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_completions_with_sessions.py +0 -0
  708. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_content_ingest_workflow.py +0 -0
  709. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_contract_extractor.py +0 -0
  710. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_dreaming_moments.py +0 -0
  711. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_dynamic_agents.py +0 -0
  712. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_git_provider.py +0 -0
  713. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_mcp_server_loading.py +0 -0
  714. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_mcp_tool_loading.py +0 -0
  715. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_mcp_tools.py +0 -0
  716. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_mcp_tools_layer.py +0 -0
  717. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_natural_language_to_rem.py +0 -0
  718. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_rem_query.py +0 -0
  719. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_rem_query_agent.py +0 -0
  720. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_rem_query_agent_structured.py +0 -0
  721. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_rem_query_evolution.py +0 -0
  722. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_rem_query_functions.py +0 -0
  723. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_rem_service_layer.py +0 -0
  724. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_unlogged_maintainer.py +0 -0
  725. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_user_session_reloads.py +0 -0
  726. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_verify_setup.py +0 -0
  727. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_yaml_export.py +0 -0
  728. {remdb-0.3.148 → remdb-0.3.183}/tests/integration/validate_rem_agent_schema.py +0 -0
  729. {remdb-0.3.148 → remdb-0.3.183}/tests/scripts/__init__.py +0 -0
  730. {remdb-0.3.148 → remdb-0.3.183}/tests/scripts/demo_session_recovery.py +0 -0
  731. {remdb-0.3.148 → remdb-0.3.183}/tests/scripts/seed_sample_sessions.py +0 -0
  732. {remdb-0.3.148 → remdb-0.3.183}/tests/scripts/simple_session_demo.py +0 -0
  733. {remdb-0.3.148 → remdb-0.3.183}/tests/unit/__init__.py +0 -0
  734. {remdb-0.3.148 → remdb-0.3.183}/tests/unit/agentic/__init__.py +0 -0
  735. {remdb-0.3.148 → remdb-0.3.183}/tests/unit/agentic/agents/__init__.py +0 -0
  736. {remdb-0.3.148 → remdb-0.3.183}/tests/unit/agentic/agents/test_sse_simulator.py +0 -0
  737. {remdb-0.3.148 → remdb-0.3.183}/tests/unit/agentic/providers/__init__.py +0 -0
  738. {remdb-0.3.148 → remdb-0.3.183}/tests/unit/agentic/providers/test_pydantic_ai.py +0 -0
  739. {remdb-0.3.148 → remdb-0.3.183}/tests/unit/agentic/test_schema_integration.py +0 -0
  740. {remdb-0.3.148 → remdb-0.3.183}/tests/unit/agentic/test_tool_description_suffix.py +0 -0
  741. {remdb-0.3.148 → remdb-0.3.183}/tests/unit/api/__init__.py +0 -0
  742. {remdb-0.3.148 → remdb-0.3.183}/tests/unit/api/test_feedback.py +0 -0
  743. {remdb-0.3.148 → remdb-0.3.183}/tests/unit/api/test_models_endpoint.py +0 -0
  744. {remdb-0.3.148 → remdb-0.3.183}/tests/unit/api/test_sessions_messages.py +0 -0
  745. {remdb-0.3.148 → remdb-0.3.183}/tests/unit/api/test_sse_events.py +0 -0
  746. {remdb-0.3.148 → remdb-0.3.183}/tests/unit/conftest.py +0 -0
  747. {remdb-0.3.148 → remdb-0.3.183}/tests/unit/test_admin_internal.py +0 -0
  748. {remdb-0.3.148 → remdb-0.3.183}/tests/unit/test_api_key_auth.py +0 -0
  749. {remdb-0.3.148 → remdb-0.3.183}/tests/unit/test_registry.py +0 -0
  750. {remdb-0.3.148 → remdb-0.3.183}/tests/unit/test_session_cli.py +0 -0
  751. {remdb-0.3.148 → remdb-0.3.183}/tests/unit/test_sql_security.py +0 -0
  752. {remdb-0.3.148 → remdb-0.3.183}/tests/unit/utils/test_agentic_chunking.py +0 -0
  753. {remdb-0.3.148 → remdb-0.3.183}/walkthrough.md +0 -0
@@ -0,0 +1 @@
1
+ ��type�str�data�application/pdf�cached_at�A�N�m��
@@ -0,0 +1 @@
1
+ ��type�str�data�application/pdf�cached_at�A�N��^ٕ
@@ -0,0 +1 @@
1
+ ��type�str�data�application/pdf�cached_at�A�NH����
@@ -0,0 +1 @@
1
+ ��type�str�data�application/pdf�cached_at�A�N�y�v
@@ -0,0 +1 @@
1
+ ��type�str�data�application/pdf�cached_at�A�N�7|�
@@ -0,0 +1 @@
1
+ ��type�str�data�application/pdf�cached_at�A�NH�Gf�
@@ -0,0 +1 @@
1
+ ��type�str�data�application/pdf�cached_at�A�NH;�
@@ -0,0 +1 @@
1
+ ��type�str�data�application/pdf�cached_at�A�N��ft�
@@ -0,0 +1 @@
1
+ ��type�str�data�application/pdf�cached_at�A�NH;���
@@ -0,0 +1 @@
1
+ ��type�str�data�application/pdf�cached_at�A�NH�U#[
@@ -0,0 +1 @@
1
+ ��type�str�data�application/pdf�cached_at�A�N�����
@@ -0,0 +1 @@
1
+ ��type�str�data�application/pdf�cached_at�A�N��\/]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: remdb
3
- Version: 0.3.148
3
+ Version: 0.3.183
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "remdb"
3
- version = "0.3.148"
3
+ version = "0.3.183"
4
4
  description = "Resources Entities Moments - Bio-inspired memory system for agentic AI workloads"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -6,6 +6,8 @@ Use create_agent_from_schema_file() to instantiate agents.
6
6
 
7
7
  The SSE Simulator is a special programmatic "agent" that generates
8
8
  scripted SSE events for testing and demonstration - it doesn't use an LLM.
9
+
10
+ Agent Manager provides functions for saving/loading user-created agents.
9
11
  """
10
12
 
11
13
  from .sse_simulator import (
@@ -14,9 +16,23 @@ from .sse_simulator import (
14
16
  stream_error_demo,
15
17
  )
16
18
 
19
+ from .agent_manager import (
20
+ save_agent,
21
+ get_agent,
22
+ list_agents,
23
+ delete_agent,
24
+ build_agent_spec,
25
+ )
26
+
17
27
  __all__ = [
18
28
  # SSE Simulator (programmatic, no LLM)
19
29
  "stream_simulator_events",
20
30
  "stream_minimal_demo",
21
31
  "stream_error_demo",
32
+ # Agent Manager
33
+ "save_agent",
34
+ "get_agent",
35
+ "list_agents",
36
+ "delete_agent",
37
+ "build_agent_spec",
22
38
  ]
@@ -0,0 +1,311 @@
1
+ """
2
+ Agent Manager - Save, load, and manage user-created agents.
3
+
4
+ This module provides the core functionality for persisting agent schemas
5
+ to the database with user scoping.
6
+
7
+ Usage:
8
+ from rem.agentic.agents.agent_manager import save_agent, get_agent, list_agents
9
+
10
+ # Save an agent
11
+ result = await save_agent(
12
+ name="my-assistant",
13
+ description="You are a helpful assistant.",
14
+ user_id="user-123"
15
+ )
16
+
17
+ # Get an agent
18
+ agent = await get_agent("my-assistant", user_id="user-123")
19
+
20
+ # List user's agents
21
+ agents = await list_agents(user_id="user-123")
22
+ """
23
+
24
+ from typing import Any
25
+ from loguru import logger
26
+
27
+
28
+ DEFAULT_TOOLS = ["search_rem", "register_metadata"]
29
+
30
+
31
+ def build_agent_spec(
32
+ name: str,
33
+ description: str,
34
+ properties: dict[str, Any] | None = None,
35
+ required: list[str] | None = None,
36
+ tools: list[str] | None = None,
37
+ tags: list[str] | None = None,
38
+ version: str = "1.0.0",
39
+ ) -> dict[str, Any]:
40
+ """
41
+ Build a valid agent schema spec.
42
+
43
+ Args:
44
+ name: Agent name in kebab-case
45
+ description: System prompt for the agent
46
+ properties: Output schema properties
47
+ required: Required property names
48
+ tools: Tool names (defaults to search_rem, register_metadata)
49
+ tags: Categorization tags
50
+ version: Semantic version
51
+
52
+ Returns:
53
+ Valid agent schema spec dict
54
+ """
55
+ # Default properties
56
+ if properties is None:
57
+ properties = {
58
+ "answer": {
59
+ "type": "string",
60
+ "description": "Natural language response to the user"
61
+ }
62
+ }
63
+
64
+ # Default required
65
+ if required is None:
66
+ required = ["answer"]
67
+
68
+ # Default tools
69
+ if tools is None:
70
+ tools = DEFAULT_TOOLS.copy()
71
+
72
+ return {
73
+ "type": "object",
74
+ "description": description,
75
+ "properties": properties,
76
+ "required": required,
77
+ "json_schema_extra": {
78
+ "kind": "agent",
79
+ "name": name,
80
+ "version": version,
81
+ "tags": tags or [],
82
+ "tools": [{"name": t, "description": f"Tool: {t}"} for t in tools],
83
+ }
84
+ }
85
+
86
+
87
+ async def save_agent(
88
+ name: str,
89
+ description: str,
90
+ user_id: str,
91
+ properties: dict[str, Any] | None = None,
92
+ required: list[str] | None = None,
93
+ tools: list[str] | None = None,
94
+ tags: list[str] | None = None,
95
+ version: str = "1.0.0",
96
+ ) -> dict[str, Any]:
97
+ """
98
+ Save an agent schema to the database.
99
+
100
+ Args:
101
+ name: Agent name in kebab-case (e.g., "code-reviewer")
102
+ description: The agent's system prompt
103
+ user_id: User identifier for scoping
104
+ properties: Output schema properties
105
+ required: Required property names
106
+ tools: Tool names
107
+ tags: Categorization tags
108
+ version: Semantic version
109
+
110
+ Returns:
111
+ Dict with status, agent_name, version, message
112
+
113
+ Raises:
114
+ RuntimeError: If database is not available
115
+ """
116
+ from rem.models.entities import Schema
117
+ from rem.services.postgres import get_postgres_service
118
+
119
+ # Build the spec
120
+ spec = build_agent_spec(
121
+ name=name,
122
+ description=description,
123
+ properties=properties,
124
+ required=required,
125
+ tools=tools,
126
+ tags=tags,
127
+ version=version,
128
+ )
129
+
130
+ # Create Schema entity (user-scoped)
131
+ # Note: tenant_id defaults to "default" for anonymous users
132
+ schema_entity = Schema(
133
+ tenant_id=user_id or "default",
134
+ user_id=user_id,
135
+ name=name,
136
+ spec=spec,
137
+ category="agent",
138
+ metadata={
139
+ "version": version,
140
+ "tags": tags or [],
141
+ "created_via": "agent_manager",
142
+ },
143
+ )
144
+
145
+ # Save to database
146
+ postgres = get_postgres_service()
147
+ if not postgres:
148
+ raise RuntimeError("Database not available")
149
+
150
+ await postgres.connect()
151
+ try:
152
+ await postgres.batch_upsert(
153
+ records=[schema_entity],
154
+ model=Schema,
155
+ table_name="schemas",
156
+ entity_key_field="name",
157
+ generate_embeddings=False,
158
+ )
159
+ logger.info(f"✅ Agent saved: {name} (user={user_id}, version={version})")
160
+ finally:
161
+ await postgres.disconnect()
162
+
163
+ return {
164
+ "status": "success",
165
+ "agent_name": name,
166
+ "version": version,
167
+ "message": f"Agent '{name}' saved successfully.",
168
+ }
169
+
170
+
171
+ async def get_agent(
172
+ name: str,
173
+ user_id: str,
174
+ ) -> dict[str, Any] | None:
175
+ """
176
+ Get an agent schema by name.
177
+
178
+ Checks user's schemas first, then falls back to system schemas.
179
+
180
+ Args:
181
+ name: Agent name
182
+ user_id: User identifier
183
+
184
+ Returns:
185
+ Agent spec dict if found, None otherwise
186
+ """
187
+ from rem.services.postgres import get_postgres_service
188
+
189
+ postgres = get_postgres_service()
190
+ if not postgres:
191
+ return None
192
+
193
+ await postgres.connect()
194
+ try:
195
+ query = """
196
+ SELECT spec FROM schemas
197
+ WHERE LOWER(name) = LOWER($1)
198
+ AND category = 'agent'
199
+ AND (user_id = $2 OR user_id IS NULL OR tenant_id = 'system')
200
+ ORDER BY CASE WHEN user_id = $2 THEN 0 ELSE 1 END
201
+ LIMIT 1
202
+ """
203
+ row = await postgres.fetchrow(query, name, user_id)
204
+ if row:
205
+ return row["spec"]
206
+ return None
207
+ finally:
208
+ await postgres.disconnect()
209
+
210
+
211
+ async def list_agents(
212
+ user_id: str,
213
+ include_system: bool = True,
214
+ ) -> list[dict[str, Any]]:
215
+ """
216
+ List available agents for a user.
217
+
218
+ Args:
219
+ user_id: User identifier
220
+ include_system: Include system agents
221
+
222
+ Returns:
223
+ List of agent metadata dicts
224
+ """
225
+ from rem.services.postgres import get_postgres_service
226
+
227
+ postgres = get_postgres_service()
228
+ if not postgres:
229
+ return []
230
+
231
+ await postgres.connect()
232
+ try:
233
+ if include_system:
234
+ query = """
235
+ SELECT name, metadata, user_id, tenant_id
236
+ FROM schemas
237
+ WHERE category = 'agent'
238
+ AND (user_id = $1 OR user_id IS NULL OR tenant_id = 'system')
239
+ ORDER BY name
240
+ """
241
+ rows = await postgres.fetch(query, user_id)
242
+ else:
243
+ query = """
244
+ SELECT name, metadata, user_id, tenant_id
245
+ FROM schemas
246
+ WHERE category = 'agent'
247
+ AND user_id = $1
248
+ ORDER BY name
249
+ """
250
+ rows = await postgres.fetch(query, user_id)
251
+
252
+ return [
253
+ {
254
+ "name": row["name"],
255
+ "version": row["metadata"].get("version", "1.0.0") if row["metadata"] else "1.0.0",
256
+ "tags": row["metadata"].get("tags", []) if row["metadata"] else [],
257
+ "is_system": row["tenant_id"] == "system" or row["user_id"] is None,
258
+ }
259
+ for row in rows
260
+ ]
261
+ finally:
262
+ await postgres.disconnect()
263
+
264
+
265
+ async def delete_agent(
266
+ name: str,
267
+ user_id: str,
268
+ ) -> dict[str, Any]:
269
+ """
270
+ Delete a user's agent.
271
+
272
+ Only allows deleting user-owned agents, not system agents.
273
+
274
+ Args:
275
+ name: Agent name
276
+ user_id: User identifier
277
+
278
+ Returns:
279
+ Dict with status and message
280
+ """
281
+ from rem.services.postgres import get_postgres_service
282
+
283
+ postgres = get_postgres_service()
284
+ if not postgres:
285
+ raise RuntimeError("Database not available")
286
+
287
+ await postgres.connect()
288
+ try:
289
+ # Only delete user's own agents
290
+ query = """
291
+ DELETE FROM schemas
292
+ WHERE LOWER(name) = LOWER($1)
293
+ AND category = 'agent'
294
+ AND user_id = $2
295
+ RETURNING name
296
+ """
297
+ row = await postgres.fetchrow(query, name, user_id)
298
+
299
+ if row:
300
+ logger.info(f"🗑️ Agent deleted: {name} (user={user_id})")
301
+ return {
302
+ "status": "success",
303
+ "message": f"Agent '{name}' deleted.",
304
+ }
305
+ else:
306
+ return {
307
+ "status": "error",
308
+ "message": f"Agent '{name}' not found or not owned by you.",
309
+ }
310
+ finally:
311
+ await postgres.disconnect()
@@ -2,11 +2,15 @@
2
2
  Agent execution context and configuration.
3
3
 
4
4
  Design pattern for session context that can be constructed from:
5
+ - FastAPI Request object (preferred - extracts user from JWT via request.state)
5
6
  - HTTP headers (X-User-Id, X-Session-Id, X-Model-Name, X-Is-Eval, etc.)
6
7
  - Direct instantiation for testing/CLI
7
8
 
9
+ User ID Sources (in priority order):
10
+ 1. request.state.user.id - From JWT token validated by auth middleware (SECURE)
11
+ 2. X-User-Id header - Fallback for backwards compatibility (less secure)
12
+
8
13
  Headers Mapping:
9
- X-User-Id → context.user_id
10
14
  X-Tenant-Id → context.tenant_id (default: "default")
11
15
  X-Session-Id → context.session_id
12
16
  X-Agent-Schema → context.agent_schema_uri (default: "rem")
@@ -128,13 +132,87 @@ class AgentContext(BaseModel):
128
132
  logger.debug(f"No user_id from {source}, using None (anonymous/shared data)")
129
133
  return None
130
134
 
135
+ @classmethod
136
+ def from_request(cls, request: "Request") -> "AgentContext":
137
+ """
138
+ Construct AgentContext from a FastAPI Request object.
139
+
140
+ This is the PREFERRED method for API endpoints. It extracts user_id
141
+ from the authenticated user in request.state (set by auth middleware
142
+ from JWT token), which is more secure than trusting X-User-Id header.
143
+
144
+ Priority for user_id:
145
+ 1. request.state.user.id - From validated JWT token (SECURE)
146
+ 2. X-User-Id header - Fallback for backwards compatibility
147
+
148
+ Args:
149
+ request: FastAPI Request object
150
+
151
+ Returns:
152
+ AgentContext with user from JWT and other values from headers
153
+
154
+ Example:
155
+ @app.post("/api/v1/chat/completions")
156
+ async def chat(request: Request, body: ChatRequest):
157
+ context = AgentContext.from_request(request)
158
+ # context.user_id is from JWT, not header
159
+ """
160
+ from typing import TYPE_CHECKING
161
+ if TYPE_CHECKING:
162
+ from starlette.requests import Request
163
+
164
+ # Get headers dict
165
+ headers = dict(request.headers)
166
+ normalized = {k.lower(): v for k, v in headers.items()}
167
+
168
+ # Extract user_id from authenticated user (JWT) - this is the source of truth
169
+ user_id = None
170
+ tenant_id = "default"
171
+
172
+ if hasattr(request, "state"):
173
+ user = getattr(request.state, "user", None)
174
+ if user and isinstance(user, dict):
175
+ user_id = user.get("id")
176
+ # Also get tenant_id from authenticated user if available
177
+ if user.get("tenant_id"):
178
+ tenant_id = user.get("tenant_id")
179
+ if user_id:
180
+ logger.debug(f"User ID from JWT: {user_id}")
181
+
182
+ # Fallback to X-User-Id header if no authenticated user
183
+ if not user_id:
184
+ user_id = normalized.get("x-user-id")
185
+ if user_id:
186
+ logger.debug(f"User ID from X-User-Id header (fallback): {user_id}")
187
+
188
+ # Override tenant_id from header if provided
189
+ header_tenant = normalized.get("x-tenant-id")
190
+ if header_tenant:
191
+ tenant_id = header_tenant
192
+
193
+ # Parse X-Is-Eval header
194
+ is_eval_str = normalized.get("x-is-eval", "").lower()
195
+ is_eval = is_eval_str in ("true", "1", "yes")
196
+
197
+ return cls(
198
+ user_id=user_id,
199
+ tenant_id=tenant_id,
200
+ session_id=normalized.get("x-session-id"),
201
+ default_model=normalized.get("x-model-name") or settings.llm.default_model,
202
+ agent_schema_uri=normalized.get("x-agent-schema"),
203
+ is_eval=is_eval,
204
+ )
205
+
131
206
  @classmethod
132
207
  def from_headers(cls, headers: dict[str, str]) -> "AgentContext":
133
208
  """
134
- Construct AgentContext from HTTP headers.
209
+ Construct AgentContext from HTTP headers dict.
210
+
211
+ NOTE: Prefer from_request() for API endpoints as it extracts user_id
212
+ from the validated JWT token in request.state, which is more secure.
135
213
 
136
214
  Reads standard headers:
137
- - X-User-Id: User identifier
215
+ - X-User-Id: User identifier (fallback - prefer JWT)
138
216
  - X-Tenant-Id: Tenant identifier
139
217
  - X-Session-Id: Session identifier
140
218
  - X-Model-Name: Model override
@@ -12,7 +12,7 @@ User Context (on-demand by default):
12
12
  - System message includes REM LOOKUP hint for user profile
13
13
  - Agent decides whether to load profile based on query
14
14
  - More efficient for queries that don't need personalization
15
- - Example: "User ID: sarah@example.com. To load user profile: Use REM LOOKUP users/sarah@example.com"
15
+ - Example: "User: sarah@example.com. To load user profile: Use REM LOOKUP \"sarah@example.com\""
16
16
 
17
17
  User Context (auto-inject when enabled):
18
18
  - Set CHAT__AUTO_INJECT_USER_CONTEXT=true
@@ -40,7 +40,7 @@ Usage (on-demand, default):
40
40
 
41
41
  # Messages list structure (on-demand):
42
42
  # [
43
- # {"role": "system", "content": "Today's date: 2025-11-22\nUser ID: sarah@example.com\nTo load user profile: Use REM LOOKUP users/sarah@example.com\nSession ID: sess-123\nTo load session history: Use REM LOOKUP messages?session_id=sess-123"},
43
+ # {"role": "system", "content": "Today's date: 2025-11-22\nUser: sarah@example.com\nTo load user profile: Use REM LOOKUP \"sarah@example.com\"\nSession ID: sess-123\nTo load session history: Use REM LOOKUP messages?session_id=sess-123"},
44
44
  # {"role": "user", "content": "What's next for the API migration?"}
45
45
  # ]
46
46
 
@@ -103,6 +103,7 @@ class ContextBuilder:
103
103
  headers: dict[str, str],
104
104
  new_messages: list[dict[str, str]] | None = None,
105
105
  db: PostgresService | None = None,
106
+ user_id: str | None = None,
106
107
  ) -> tuple[AgentContext, list[ContextMessage]]:
107
108
  """
108
109
  Build complete context from HTTP headers.
@@ -114,7 +115,7 @@ class ContextBuilder:
114
115
  - Agent can retrieve full content on-demand using REM LOOKUP
115
116
 
116
117
  User Context (on-demand by default):
117
- - System message includes REM LOOKUP hint: "User ID: {user_id}. To load user profile: Use REM LOOKUP users/{user_id}"
118
+ - System message includes REM LOOKUP hint: "User: {email}. To load user profile: Use REM LOOKUP \"{email}\""
118
119
  - Agent decides whether to load profile based on query
119
120
 
120
121
  User Context (auto-inject when enabled):
@@ -125,6 +126,7 @@ class ContextBuilder:
125
126
  headers: HTTP request headers (case-insensitive)
126
127
  new_messages: New messages from current request
127
128
  db: Optional PostgresService (creates if None)
129
+ user_id: Override user_id from JWT token (takes precedence over X-User-Id header)
128
130
 
129
131
  Returns:
130
132
  Tuple of (AgentContext, messages list)
@@ -135,7 +137,7 @@ class ContextBuilder:
135
137
 
136
138
  # messages structure:
137
139
  # [
138
- # {"role": "system", "content": "Today's date: 2025-11-22\nUser ID: sarah@example.com\nTo load user profile: Use REM LOOKUP users/sarah@example.com"},
140
+ # {"role": "system", "content": "Today's date: 2025-11-22\nUser: sarah@example.com\nTo load user profile: Use REM LOOKUP \"sarah@example.com\""},
139
141
  # {"role": "user", "content": "Previous message"},
140
142
  # {"role": "assistant", "content": "Start of long response... [REM LOOKUP session-123-msg-1] ...end"},
141
143
  # {"role": "user", "content": "New message"}
@@ -147,6 +149,17 @@ class ContextBuilder:
147
149
  # Extract AgentContext from headers
148
150
  context = AgentContext.from_headers(headers)
149
151
 
152
+ # Override user_id if provided (from JWT token - takes precedence over header)
153
+ if user_id is not None:
154
+ context = AgentContext(
155
+ user_id=user_id,
156
+ tenant_id=context.tenant_id,
157
+ session_id=context.session_id,
158
+ default_model=context.default_model,
159
+ agent_schema_uri=context.agent_schema_uri,
160
+ is_eval=context.is_eval,
161
+ )
162
+
150
163
  # Initialize DB if not provided and needed (for user context or session history)
151
164
  close_db = False
152
165
  if db is None and (settings.chat.auto_inject_user_context or context.session_id):
@@ -178,19 +191,29 @@ class ContextBuilder:
178
191
  context_hint += "\n\nNo user context available (anonymous or new user)."
179
192
  elif context.user_id:
180
193
  # On-demand: Provide hint to use REM LOOKUP
181
- context_hint += f"\n\nUser ID: {context.user_id}"
182
- context_hint += f"\nTo load user profile: Use REM LOOKUP users/{context.user_id}"
194
+ # user_id is UUID5 hash of email - load user to get email for display and LOOKUP
195
+ user_repo = Repository(User, "users", db=db)
196
+ user = await user_repo.get_by_id(context.user_id, context.tenant_id)
197
+ if user and user.email:
198
+ # Show email (more useful than UUID) and LOOKUP hint
199
+ context_hint += f"\n\nUser: {user.email}"
200
+ context_hint += f"\nTo load user profile: Use REM LOOKUP \"{user.email}\""
201
+ else:
202
+ context_hint += f"\n\nUser ID: {context.user_id}"
203
+ context_hint += "\nUser profile not available."
183
204
 
184
205
  # Add system context hint
185
206
  messages.append(ContextMessage(role="system", content=context_hint))
186
207
 
187
- # ALWAYS load session history (if session_id provided) with compression
208
+ # ALWAYS load session history (if session_id provided)
209
+ # - Long assistant messages are compressed on load with REM LOOKUP hints
210
+ # - Tool messages are never compressed (contain structured metadata)
188
211
  if context.session_id and settings.postgres.enabled:
189
212
  store = SessionMessageStore(user_id=context.user_id or "default")
190
213
  session_history = await store.load_session_messages(
191
214
  session_id=context.session_id,
192
215
  user_id=context.user_id,
193
- decompress=False, # Use compressed versions with REM LOOKUP hints
216
+ compress_on_load=True, # Compress long assistant messages
194
217
  )
195
218
 
196
219
  # Convert to ContextMessage format
@@ -202,7 +225,7 @@ class ContextBuilder:
202
225
  )
203
226
  )
204
227
 
205
- logger.debug(f"Loaded {len(session_history)} compressed messages for session {context.session_id}")
228
+ logger.debug(f"Loaded {len(session_history)} messages for session {context.session_id}")
206
229
 
207
230
  # Add new messages from request
208
231
  if new_messages:
@@ -224,6 +247,9 @@ class ContextBuilder:
224
247
  """
225
248
  Load user profile from database and format as context.
226
249
 
250
+ user_id is always a UUID5 hash of email (bijection).
251
+ Looks up user by their id field in the database.
252
+
227
253
  Returns formatted string with:
228
254
  - User summary (generated by dreaming worker)
229
255
  - Current projects
@@ -237,6 +263,7 @@ class ContextBuilder:
237
263
 
238
264
  try:
239
265
  user_repo = Repository(User, "users", db=db)
266
+ # user_id is UUID5 hash of email - look up by database id
240
267
  user = await user_repo.get_by_id(user_id, tenant_id)
241
268
 
242
269
  if not user: