remdb 0.3.221__tar.gz → 0.3.240__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 (783) hide show
  1. {remdb-0.3.221 → remdb-0.3.240}/.githooks/pre-push +1 -1
  2. remdb-0.3.240/.kreuzberg/mime/16abeec91e023b5b.msgpack +1 -0
  3. remdb-0.3.240/.kreuzberg/mime/394432a951453a5d.msgpack +1 -0
  4. remdb-0.3.240/.kreuzberg/mime/bfcef627f6134a1d.msgpack +1 -0
  5. remdb-0.3.240/.kreuzberg/mime/dccd2eed35d5d08b.msgpack +1 -0
  6. {remdb-0.3.221 → remdb-0.3.240}/PKG-INFO +2 -2
  7. {remdb-0.3.221 → remdb-0.3.240}/pyproject.toml +3 -7
  8. {remdb-0.3.221 → remdb-0.3.240}/src/rem/agentic/README.md +22 -248
  9. {remdb-0.3.221 → remdb-0.3.240}/src/rem/agentic/context_builder.py +24 -30
  10. {remdb-0.3.221 → remdb-0.3.240}/src/rem/agentic/providers/pydantic_ai.py +67 -50
  11. {remdb-0.3.221 → remdb-0.3.240}/src/rem/api/mcp_router/resources.py +223 -0
  12. {remdb-0.3.221 → remdb-0.3.240}/src/rem/api/mcp_router/tools.py +25 -9
  13. {remdb-0.3.221 → remdb-0.3.240}/src/rem/api/routers/admin.py +30 -4
  14. {remdb-0.3.221 → remdb-0.3.240}/src/rem/api/routers/auth.py +175 -18
  15. remdb-0.3.240/src/rem/api/routers/chat/child_streaming.py +395 -0
  16. {remdb-0.3.221 → remdb-0.3.240}/src/rem/api/routers/chat/completions.py +8 -19
  17. {remdb-0.3.221 → remdb-0.3.240}/src/rem/api/routers/chat/streaming.py +205 -340
  18. remdb-0.3.240/src/rem/api/routers/chat/streaming_utils.py +327 -0
  19. remdb-0.3.240/src/rem/api/routers/common.py +18 -0
  20. {remdb-0.3.221 → remdb-0.3.240}/src/rem/api/routers/dev.py +7 -1
  21. {remdb-0.3.221 → remdb-0.3.240}/src/rem/api/routers/feedback.py +9 -1
  22. {remdb-0.3.221 → remdb-0.3.240}/src/rem/api/routers/messages.py +57 -6
  23. {remdb-0.3.221 → remdb-0.3.240}/src/rem/api/routers/models.py +9 -1
  24. {remdb-0.3.221 → remdb-0.3.240}/src/rem/api/routers/query.py +12 -1
  25. {remdb-0.3.221 → remdb-0.3.240}/src/rem/api/routers/shared_sessions.py +16 -0
  26. {remdb-0.3.221 → remdb-0.3.240}/src/rem/cli/commands/ask.py +61 -81
  27. {remdb-0.3.221 → remdb-0.3.240}/src/rem/cli/commands/process.py +9 -1
  28. {remdb-0.3.221 → remdb-0.3.240}/src/rem/cli/commands/session.py +117 -0
  29. {remdb-0.3.221 → remdb-0.3.240}/src/rem/models/entities/session.py +1 -0
  30. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/postgres/repository.py +7 -17
  31. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/session/pydantic_messages.py +20 -4
  32. {remdb-0.3.221 → remdb-0.3.240}/src/rem/settings.py +43 -0
  33. {remdb-0.3.221 → remdb-0.3.240}/src/rem/sql/migrations/004_cache_system.sql +3 -1
  34. {remdb-0.3.221 → remdb-0.3.240}/src/rem/utils/schema_loader.py +139 -111
  35. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_actual_streaming_save.py +2 -2
  36. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_nested_agent_save.py +2 -1
  37. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_text_response_extraction.py +4 -2
  38. remdb-0.3.240/tests/unit/test_streaming_utils.py +151 -0
  39. {remdb-0.3.221 → remdb-0.3.240}/.claude/archive/PUBLISH.md +0 -0
  40. {remdb-0.3.221 → remdb-0.3.240}/.claude/archive/QUICKSTART.md +0 -0
  41. {remdb-0.3.221 → remdb-0.3.240}/.claude/archive/publish.sh +0 -0
  42. {remdb-0.3.221 → remdb-0.3.240}/.claude/settings.local.json +0 -0
  43. {remdb-0.3.221 → remdb-0.3.240}/.dockerignore +0 -0
  44. {remdb-0.3.221 → remdb-0.3.240}/.env.example +0 -0
  45. {remdb-0.3.221 → remdb-0.3.240}/.experiments/README.md +0 -0
  46. {remdb-0.3.221 → remdb-0.3.240}/.experiments/RUN_ON_CLUSTER.md +0 -0
  47. {remdb-0.3.221 → remdb-0.3.240}/.experiments/TESTING_GUIDE.md +0 -0
  48. {remdb-0.3.221 → remdb-0.3.240}/.experiments/test-phoenix-integration.sh +0 -0
  49. {remdb-0.3.221 → remdb-0.3.240}/.githooks/pre-commit +0 -0
  50. {remdb-0.3.221 → remdb-0.3.240}/.gitignore +0 -0
  51. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/039976f3b4dc7549.msgpack +0 -0
  52. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/045e65492b634d11.msgpack +0 -0
  53. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/07f5cd0e3fb1d287.msgpack +0 -0
  54. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/08f4ae339838b804.msgpack +0 -0
  55. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/0a64e58ae1289686.msgpack +0 -0
  56. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/0b34bcd318001ead.msgpack +0 -0
  57. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/0da06e67dd284834.msgpack +0 -0
  58. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/0e200bfe2ea523f2.msgpack +0 -0
  59. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/10b1925cb6007390.msgpack +0 -0
  60. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/11c55125d2be1895.msgpack +0 -0
  61. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/12dd62bbe8ee9b6a.msgpack +0 -0
  62. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/18f78825b8e302a8.msgpack +0 -0
  63. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/19a7ff44501eb3f9.msgpack +0 -0
  64. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/1c9cec1b6f266e8d.msgpack +0 -0
  65. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/1db0e7d4ac2443af.msgpack +0 -0
  66. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/1f32d592b118d944.msgpack +0 -0
  67. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/20db05a60f4c6ce3.msgpack +0 -0
  68. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/220746359cef9884.msgpack +0 -0
  69. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/2279f944d9ee9966.msgpack +0 -0
  70. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/23c2221c537a5fc7.msgpack +0 -0
  71. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/24034098fd444b39.msgpack +0 -0
  72. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/245d4933e8c1b195.msgpack +0 -0
  73. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/2470f3a5e2d1953b.msgpack +0 -0
  74. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/24acc2df261ae549.msgpack +0 -0
  75. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/256e0b513c55383d.msgpack +0 -0
  76. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/26a8ed0cdfc0ccab.msgpack +0 -0
  77. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/28e3c2bf25dfc659.msgpack +0 -0
  78. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/295a37ef869b0a49.msgpack +0 -0
  79. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/2a6f58009e01ad65.msgpack +0 -0
  80. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/2ab7ae3b2e42644e.msgpack +0 -0
  81. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/2b24548c2f91f8b9.msgpack +0 -0
  82. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/2bb63e6235d19b40.msgpack +0 -0
  83. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/2c74a0f17cde1b0c.msgpack +0 -0
  84. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/2d728912eb223a33.msgpack +0 -0
  85. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/2de80149b410a676.msgpack +0 -0
  86. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/2e1001cbed04103c.msgpack +0 -0
  87. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/32d99ccf71d10a38.msgpack +0 -0
  88. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/333c03f53d37ed0e.msgpack +0 -0
  89. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/3353ae12a176a9bd.msgpack +0 -0
  90. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/34f1cfc7a58e8b0c.msgpack +0 -0
  91. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/3a11309ab5c2f4f1.msgpack +0 -0
  92. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/3c5bd974fb83b573.msgpack +0 -0
  93. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/3ca9da43dd834bca.msgpack +0 -0
  94. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/3e9db2b8a87873c7.msgpack +0 -0
  95. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/3ff1b430e0b510d5.msgpack +0 -0
  96. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/4035607526c8600d.msgpack +0 -0
  97. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/40f0415d564cb996.msgpack +0 -0
  98. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/4388f8ee095c9ed8.msgpack +0 -0
  99. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/439f422b7f8dc467.msgpack +0 -0
  100. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/452c56ffd625931f.msgpack +0 -0
  101. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/454e06d91c1f7da3.msgpack +0 -0
  102. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/45ee850e300157c8.msgpack +0 -0
  103. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/45f79b5f90a07f0e.msgpack +0 -0
  104. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/487e56b12d123968.msgpack +0 -0
  105. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/49be62bf170de12a.msgpack +0 -0
  106. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/4b3e165ec4ba87d0.msgpack +0 -0
  107. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/505ff13d9ac8f006.msgpack +0 -0
  108. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/51e81cbe7899e310.msgpack +0 -0
  109. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/537dea93b57ffce5.msgpack +0 -0
  110. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/56a9f1cd9ec05384.msgpack +0 -0
  111. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/56bf449feab17e6d.msgpack +0 -0
  112. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/57ab5fe18c74538b.msgpack +0 -0
  113. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/5a11f436d88e89cd.msgpack +0 -0
  114. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/5b10dca1c6db6714.msgpack +0 -0
  115. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/5bcfea3bfc53067c.msgpack +0 -0
  116. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/5eb63bbe412735a4.msgpack +0 -0
  117. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/5ebca8549bb3ff2b.msgpack +0 -0
  118. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/5fef074c57dd118f.msgpack +0 -0
  119. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/60f343229f836ab6.msgpack +0 -0
  120. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/6153f83bf3713b32.msgpack +0 -0
  121. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/6488134e7b6dd403.msgpack +0 -0
  122. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/68e7b00767be2e16.msgpack +0 -0
  123. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/6afac5499ef0a938.msgpack +0 -0
  124. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/6bd93d4fd4cc3893.msgpack +0 -0
  125. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/6defbba8bfc76983.msgpack +0 -0
  126. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/6e37f5165f71513b.msgpack +0 -0
  127. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/6e6c3d4ef7ca1300.msgpack +0 -0
  128. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/6f9130d5f4db8b28.msgpack +0 -0
  129. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/6fc0d79c16c59de5.msgpack +0 -0
  130. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/774b8c209528323e.msgpack +0 -0
  131. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/78c509bc3a9d93c4.msgpack +0 -0
  132. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/798017037907ab5f.msgpack +0 -0
  133. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/7a4fd9fd84ae6899.msgpack +0 -0
  134. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/7b094993adee6e1a.msgpack +0 -0
  135. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/7b3e640c001c4894.msgpack +0 -0
  136. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/7c3ad418912e7c09.msgpack +0 -0
  137. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/7f630276be2a1503.msgpack +0 -0
  138. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/80fd68e8a4ac6556.msgpack +0 -0
  139. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/819aabcfdf1334af.msgpack +0 -0
  140. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/81ea65c652232174.msgpack +0 -0
  141. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/8225fe0751545bd9.msgpack +0 -0
  142. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/84c4f70ba7616566.msgpack +0 -0
  143. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/856e8ba75c4d220e.msgpack +0 -0
  144. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/8cace0ec228b43d6.msgpack +0 -0
  145. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/8d1ecc30d7d58b41.msgpack +0 -0
  146. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/8e2e4ab7c05925fa.msgpack +0 -0
  147. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/8e89a980bc3b92d8.msgpack +0 -0
  148. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/8f6a9b01f15883f5.msgpack +0 -0
  149. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/9091b9d61e026046.msgpack +0 -0
  150. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/927a028cf723c70d.msgpack +0 -0
  151. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/939a167803029f56.msgpack +0 -0
  152. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/94bda8f2cabc1358.msgpack +0 -0
  153. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/95313ccec52beb53.msgpack +0 -0
  154. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/954fee40bb61432b.msgpack +0 -0
  155. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/9592cc24f2bf0d77.msgpack +0 -0
  156. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/967396ed95832197.msgpack +0 -0
  157. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/9804f3b02bf98e83.msgpack +0 -0
  158. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/9936890e55f094f3.msgpack +0 -0
  159. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/99405cab6cc35283.msgpack +0 -0
  160. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/99e3da57a007bc59.msgpack +0 -0
  161. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/99f1579d6a6790ad.msgpack +0 -0
  162. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/9a6b60a4833997e2.msgpack +0 -0
  163. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/9c265a028ee05977.msgpack +0 -0
  164. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/9f02e484a5feb3af.msgpack +0 -0
  165. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/9fd81ffc0b3282f8.msgpack +0 -0
  166. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/a0d60cff1e5950a6.msgpack +0 -0
  167. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/a1da34b0466f625e.msgpack +0 -0
  168. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/a2bcfb3e4cf75d71.msgpack +0 -0
  169. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/a3fd1a45a0ef02f1.msgpack +0 -0
  170. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/a72acced3b5f0c28.msgpack +0 -0
  171. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/a78fa3051259d29c.msgpack +0 -0
  172. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/a964045be65be2d2.msgpack +0 -0
  173. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/ac4f98ccc34fc6c0.msgpack +0 -0
  174. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/ae8bc0c15954a96a.msgpack +0 -0
  175. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/af05b5754cd245b5.msgpack +0 -0
  176. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/af28c894e94dc85c.msgpack +0 -0
  177. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/b0a26c1396c336b2.msgpack +0 -0
  178. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/b2b5204d4dfab9dc.msgpack +0 -0
  179. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/b2f8df0bdc713008.msgpack +0 -0
  180. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/b361fc308a3b9ab1.msgpack +0 -0
  181. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/b374846290238cd1.msgpack +0 -0
  182. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/b4b163b746d0aa53.msgpack +0 -0
  183. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/b68845f6e8da9be3.msgpack +0 -0
  184. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/b7e677bf8412e9bd.msgpack +0 -0
  185. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/b99ba32d31caa65e.msgpack +0 -0
  186. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/bc02d7c24ec8eccc.msgpack +0 -0
  187. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/bc1a967be3c37e18.msgpack +0 -0
  188. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/bc89d1801e46fb3c.msgpack +0 -0
  189. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/bce873a224061155.msgpack +0 -0
  190. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/bdb1282b79539c3a.msgpack +0 -0
  191. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/bea4de84b22aebbc.msgpack +0 -0
  192. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/c1f16f2de51197de.msgpack +0 -0
  193. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/c5f723dcb1ff4b6f.msgpack +0 -0
  194. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/c6ca46f28d7798dd.msgpack +0 -0
  195. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/c6e2f4ede9282c2f.msgpack +0 -0
  196. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/c761de11e901384a.msgpack +0 -0
  197. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/c99399d1889fa84c.msgpack +0 -0
  198. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/c9fd297a955f2355.msgpack +0 -0
  199. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/ca9a80b78b7aa22c.msgpack +0 -0
  200. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/cb9503b8979b185d.msgpack +0 -0
  201. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/cbc6cfb0a51ab6bb.msgpack +0 -0
  202. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/cc3bda1ed2e95150.msgpack +0 -0
  203. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/ceb98745ab5dbe70.msgpack +0 -0
  204. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/d1df948b17e4d9fc.msgpack +0 -0
  205. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/d1e1e212112ab926.msgpack +0 -0
  206. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/d4b766742cf2328a.msgpack +0 -0
  207. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/d93262cc2f01da93.msgpack +0 -0
  208. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/d977ad06778acf8d.msgpack +0 -0
  209. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/da9376a352a900b8.msgpack +0 -0
  210. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/db2816895dd01979.msgpack +0 -0
  211. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/db3a782c367dbe28.msgpack +0 -0
  212. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/db825a17acae232c.msgpack +0 -0
  213. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/dc96bd8d8ad04ee4.msgpack +0 -0
  214. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/dd1562878ff3c0f5.msgpack +0 -0
  215. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/de117be85702ebbc.msgpack +0 -0
  216. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/e3aafc52b94d322c.msgpack +0 -0
  217. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/e53a6e77d7808ee8.msgpack +0 -0
  218. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/e7dc452a2aae9b10.msgpack +0 -0
  219. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/e8a4b78d213a80ec.msgpack +0 -0
  220. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/ebf2fcb04221173e.msgpack +0 -0
  221. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/ebf527595602c7cc.msgpack +0 -0
  222. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/ec70e75eec5d6198.msgpack +0 -0
  223. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/ed6a8410124b956b.msgpack +0 -0
  224. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/f0fa2893c7713bc6.msgpack +0 -0
  225. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/f1801152a72fbdf0.msgpack +0 -0
  226. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/f6624f69041cc763.msgpack +0 -0
  227. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/f6fe984552a62891.msgpack +0 -0
  228. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/f81bbef279fc5018.msgpack +0 -0
  229. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/f975369ecf8cfe1b.msgpack +0 -0
  230. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/mime/fd21c48c0c429b77.msgpack +0 -0
  231. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/0354796dc060829e.msgpack +0 -0
  232. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/039f9af1f7851836.msgpack +0 -0
  233. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/05e117af5b509bae.msgpack +0 -0
  234. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/0bc34e3949fbef01.msgpack +0 -0
  235. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/0ce495589c7221d3.msgpack +0 -0
  236. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/0dd1cda742544db1.msgpack +0 -0
  237. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/0eba31912f25f3eb.msgpack +0 -0
  238. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/0f2703145ac02172.msgpack +0 -0
  239. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/0fa09530ccf28805.msgpack +0 -0
  240. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/0fd8e540615171e8.msgpack +0 -0
  241. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/101ff2c4997376a9.msgpack +0 -0
  242. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/12c490c06def9488.msgpack +0 -0
  243. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/18257c152bba13a6.msgpack +0 -0
  244. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/1d4a6a418d2b6a64.msgpack +0 -0
  245. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/1e61d3c782893a54.msgpack +0 -0
  246. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/1fc92f87c93d4fd9.msgpack +0 -0
  247. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/2c9de54bccd13e11.msgpack +0 -0
  248. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/2f3ea5c1badef128.msgpack +0 -0
  249. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/32aa8c660cf91963.msgpack +0 -0
  250. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/35111034d5ad26a6.msgpack +0 -0
  251. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/352eb0c7f720c196.msgpack +0 -0
  252. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/3a2e224daffb8e3d.msgpack +0 -0
  253. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/3ee772a67521e170.msgpack +0 -0
  254. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/401e93fa320273da.msgpack +0 -0
  255. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/40d9b4294628036d.msgpack +0 -0
  256. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/44592db880e5ec3f.msgpack +0 -0
  257. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/45870b434cfe0c85.msgpack +0 -0
  258. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/458943c95381e6de.msgpack +0 -0
  259. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/4ca27bb3cae67ad6.msgpack +0 -0
  260. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/4e0d19bea7253cc8.msgpack +0 -0
  261. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/4f02317672f3198b.msgpack +0 -0
  262. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/56a98d6dbd85ebed.msgpack +0 -0
  263. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/5d6b31c824d8741e.msgpack +0 -0
  264. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/5f75509e9ed27170.msgpack +0 -0
  265. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/5fcfe11a675bac8b.msgpack +0 -0
  266. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/61b8b2fc9077f91a.msgpack +0 -0
  267. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/642c92672daf5c43.msgpack +0 -0
  268. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/655ff32e6cd550bc.msgpack +0 -0
  269. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/65bc24178c843052.msgpack +0 -0
  270. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/66cd62510980471d.msgpack +0 -0
  271. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/681c1dd84a2bdf26.msgpack +0 -0
  272. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/6838fe47e511b2b8.msgpack +0 -0
  273. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/6a609539ed167213.msgpack +0 -0
  274. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/74b6b71e76efb9c9.msgpack +0 -0
  275. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/75e719c76477d44f.msgpack +0 -0
  276. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/77e0e879c2c95195.msgpack +0 -0
  277. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/7a15ef0ba4aa5660.msgpack +0 -0
  278. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/7a9dd710389dde99.msgpack +0 -0
  279. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/7b783286f80ab872.msgpack +0 -0
  280. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/7d1298c12634bc16.msgpack +0 -0
  281. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/7ddf2b8e4c6cb2e3.msgpack +0 -0
  282. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/7fc2229fcb868522.msgpack +0 -0
  283. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/85abdb138905726a.msgpack +0 -0
  284. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/884e41282eb896c5.msgpack +0 -0
  285. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/8a703994c30b19ea.msgpack +0 -0
  286. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/8aca0021ebe63f8e.msgpack +0 -0
  287. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/8bc107890e1ab320.msgpack +0 -0
  288. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/8c1a66ea86c98f76.msgpack +0 -0
  289. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/8dd5ac3207b6ca3b.msgpack +0 -0
  290. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/8f898c00eea3a93b.msgpack +0 -0
  291. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/931cbc8a4cbebf70.msgpack +0 -0
  292. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/932804c1aff4d044.msgpack +0 -0
  293. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/94b151c44f8a3588.msgpack +0 -0
  294. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/94ce2189385c970f.msgpack +0 -0
  295. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/94fa736d741d63be.msgpack +0 -0
  296. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/95bd2009772c07fd.msgpack +0 -0
  297. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/95f748fee80393ef.msgpack +0 -0
  298. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/9b1e26a55ef34ee9.msgpack +0 -0
  299. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/9f3159c9912586db.msgpack +0 -0
  300. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/a17c34748d867e85.msgpack +0 -0
  301. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/a2ca0018b46feabd.msgpack +0 -0
  302. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/a60b9031cf48ebba.msgpack +0 -0
  303. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/a9be790d1f0ae7ec.msgpack +0 -0
  304. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/ac4d6823c4034fe6.msgpack +0 -0
  305. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/ad80625c2fe055e2.msgpack +0 -0
  306. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/b102691e3c3e4cae.msgpack +0 -0
  307. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/b34027c96f8daa30.msgpack +0 -0
  308. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/b639b463e04459db.msgpack +0 -0
  309. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/b7e540f21b7f0271.msgpack +0 -0
  310. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/ba460ba22b61b3ac.msgpack +0 -0
  311. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/ba7499ca4c58ff94.msgpack +0 -0
  312. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/be2d027b571e9344.msgpack +0 -0
  313. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/c1fff30850bb8b6f.msgpack +0 -0
  314. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/c3889a8993fc490d.msgpack +0 -0
  315. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/c51c4fa6e6b83f7e.msgpack +0 -0
  316. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/c57ca30ea53e2d68.msgpack +0 -0
  317. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/c64c433f4452d82a.msgpack +0 -0
  318. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/c91739ca8dcc39ea.msgpack +0 -0
  319. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/c91d5e81eba0d3c9.msgpack +0 -0
  320. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/c9fecad2b9f0357c.msgpack +0 -0
  321. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/cb7fab9ab7b8c520.msgpack +0 -0
  322. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/cbbaeea4c7d24156.msgpack +0 -0
  323. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/cc7dd2a0003c03d8.msgpack +0 -0
  324. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/ce64ddc6701623a7.msgpack +0 -0
  325. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/d19b01ce83c8c71a.msgpack +0 -0
  326. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/d5aae4af1fe94a3a.msgpack +0 -0
  327. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/d5c47dfe60be1592.msgpack +0 -0
  328. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/d7eef627315eeab2.msgpack +0 -0
  329. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/d81cb4d0b47db4ae.msgpack +0 -0
  330. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/deed4c82c27e2b5d.msgpack +0 -0
  331. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/df1c0ed33adf634d.msgpack +0 -0
  332. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/e1c2af52b798715b.msgpack +0 -0
  333. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/e249b7de89e07bbc.msgpack +0 -0
  334. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/e6b6c0b80707ee08.msgpack +0 -0
  335. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/e74d1c6e8e950e20.msgpack +0 -0
  336. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/e9d2da361090c228.msgpack +0 -0
  337. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/ec8c114b8a360379.msgpack +0 -0
  338. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/f1772556a9442724.msgpack +0 -0
  339. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/f4753f23f51fe441.msgpack +0 -0
  340. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/f52c654a914ee356.msgpack +0 -0
  341. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/f6187d9353655ff5.msgpack +0 -0
  342. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/f766aa4cfdca2770.msgpack +0 -0
  343. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/fabcc3a4db082252.msgpack +0 -0
  344. {remdb-0.3.221 → remdb-0.3.240}/.kreuzberg/tables/fec2d3d5372c2bcc.msgpack +0 -0
  345. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/Activate.ps1 +0 -0
  346. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/activate +0 -0
  347. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/activate-global-python-argcomplete +0 -0
  348. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/activate.csh +0 -0
  349. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/activate.fish +0 -0
  350. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/alembic +0 -0
  351. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/arize-phoenix +0 -0
  352. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/cyclopts +0 -0
  353. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/distro +0 -0
  354. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/docutils +0 -0
  355. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/dotenv +0 -0
  356. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/email_validator +0 -0
  357. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/f2py +0 -0
  358. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/fastapi +0 -0
  359. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/fastavro +0 -0
  360. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/fastmcp +0 -0
  361. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/genai-prices +0 -0
  362. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/get_gprof +0 -0
  363. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/get_objgraph +0 -0
  364. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/griffe +0 -0
  365. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/hf +0 -0
  366. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/httpx +0 -0
  367. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/hypercorn +0 -0
  368. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/inv +0 -0
  369. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/invoke +0 -0
  370. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/jp.py +0 -0
  371. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/jsonpath_ng +0 -0
  372. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/jsonschema +0 -0
  373. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/keyring +0 -0
  374. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/kreuzberg +0 -0
  375. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/logfire +0 -0
  376. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/mako-render +0 -0
  377. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/markdown-it +0 -0
  378. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/mcp +0 -0
  379. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/mpire-dashboard +0 -0
  380. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/normalizer +0 -0
  381. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/numpy-config +0 -0
  382. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/openai +0 -0
  383. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/opentelemetry-bootstrap +0 -0
  384. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/opentelemetry-instrument +0 -0
  385. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/pai +0 -0
  386. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/phoenix +0 -0
  387. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/pip +0 -0
  388. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/pip3 +0 -0
  389. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/pip3.12 +0 -0
  390. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/pygmentize +0 -0
  391. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/pyrsa-decrypt +0 -0
  392. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/pyrsa-encrypt +0 -0
  393. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/pyrsa-keygen +0 -0
  394. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/pyrsa-priv2pub +0 -0
  395. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/pyrsa-sign +0 -0
  396. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/pyrsa-verify +0 -0
  397. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/pystache +0 -0
  398. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/pystache-test +0 -0
  399. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/python +0 -0
  400. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/python-argcomplete-check-easy-install-script +0 -0
  401. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/python3 +0 -0
  402. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/python3.12 +0 -0
  403. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/register-python-argcomplete +0 -0
  404. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/rem +0 -0
  405. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/rst2html +0 -0
  406. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/rst2html4 +0 -0
  407. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/rst2html5 +0 -0
  408. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/rst2latex +0 -0
  409. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/rst2man +0 -0
  410. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/rst2odt +0 -0
  411. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/rst2pseudoxml +0 -0
  412. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/rst2s5 +0 -0
  413. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/rst2xetex +0 -0
  414. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/rst2xml +0 -0
  415. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/strawberry +0 -0
  416. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/tiny-agents +0 -0
  417. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/tqdm +0 -0
  418. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/undill +0 -0
  419. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/uvicorn +0 -0
  420. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/watchfiles +0 -0
  421. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/bin/websockets +0 -0
  422. {remdb-0.3.221 → remdb-0.3.240}/.venv-test/pyvenv.cfg +0 -0
  423. {remdb-0.3.221 → remdb-0.3.240}/Dockerfile +0 -0
  424. {remdb-0.3.221 → remdb-0.3.240}/README.md +0 -0
  425. {remdb-0.3.221 → remdb-0.3.240}/Tiltfile +0 -0
  426. {remdb-0.3.221 → remdb-0.3.240}/alembic/README.md +0 -0
  427. {remdb-0.3.221 → remdb-0.3.240}/alembic/env.py +0 -0
  428. {remdb-0.3.221 → remdb-0.3.240}/alembic/script.py.mako +0 -0
  429. {remdb-0.3.221 → remdb-0.3.240}/alembic.ini +0 -0
  430. {remdb-0.3.221 → remdb-0.3.240}/dev-setup.sh +0 -0
  431. {remdb-0.3.221 → remdb-0.3.240}/docker-compose.prebuilt.yml +0 -0
  432. {remdb-0.3.221 → remdb-0.3.240}/docker-compose.test.yml +0 -0
  433. {remdb-0.3.221 → remdb-0.3.240}/docker-compose.yml +0 -0
  434. {remdb-0.3.221 → remdb-0.3.240}/src/rem/__init__.py +0 -0
  435. {remdb-0.3.221 → remdb-0.3.240}/src/rem/agentic/__init__.py +0 -0
  436. {remdb-0.3.221 → remdb-0.3.240}/src/rem/agentic/agents/README.md +0 -0
  437. {remdb-0.3.221 → remdb-0.3.240}/src/rem/agentic/agents/__init__.py +0 -0
  438. {remdb-0.3.221 → remdb-0.3.240}/src/rem/agentic/agents/agent_manager.py +0 -0
  439. {remdb-0.3.221 → remdb-0.3.240}/src/rem/agentic/agents/sse_simulator.py +0 -0
  440. {remdb-0.3.221 → remdb-0.3.240}/src/rem/agentic/context.py +0 -0
  441. {remdb-0.3.221 → remdb-0.3.240}/src/rem/agentic/llm_provider_models.py +0 -0
  442. {remdb-0.3.221 → remdb-0.3.240}/src/rem/agentic/mcp/__init__.py +0 -0
  443. {remdb-0.3.221 → remdb-0.3.240}/src/rem/agentic/mcp/tool_wrapper.py +0 -0
  444. {remdb-0.3.221 → remdb-0.3.240}/src/rem/agentic/otel/__init__.py +0 -0
  445. {remdb-0.3.221 → remdb-0.3.240}/src/rem/agentic/otel/setup.py +0 -0
  446. {remdb-0.3.221 → remdb-0.3.240}/src/rem/agentic/providers/phoenix.py +0 -0
  447. {remdb-0.3.221 → remdb-0.3.240}/src/rem/agentic/query.py +0 -0
  448. {remdb-0.3.221 → remdb-0.3.240}/src/rem/agentic/query_helper.py +0 -0
  449. {remdb-0.3.221 → remdb-0.3.240}/src/rem/agentic/schema.py +0 -0
  450. {remdb-0.3.221 → remdb-0.3.240}/src/rem/agentic/serialization.py +0 -0
  451. {remdb-0.3.221 → remdb-0.3.240}/src/rem/agentic/tools/__init__.py +0 -0
  452. {remdb-0.3.221 → remdb-0.3.240}/src/rem/agentic/tools/rem_tools.py +0 -0
  453. {remdb-0.3.221 → remdb-0.3.240}/src/rem/api/README.md +0 -0
  454. {remdb-0.3.221 → remdb-0.3.240}/src/rem/api/deps.py +0 -0
  455. {remdb-0.3.221 → remdb-0.3.240}/src/rem/api/main.py +0 -0
  456. {remdb-0.3.221 → remdb-0.3.240}/src/rem/api/mcp_router/prompts.py +0 -0
  457. {remdb-0.3.221 → remdb-0.3.240}/src/rem/api/mcp_router/server.py +0 -0
  458. {remdb-0.3.221 → remdb-0.3.240}/src/rem/api/middleware/tracking.py +0 -0
  459. {remdb-0.3.221 → remdb-0.3.240}/src/rem/api/routers/chat/__init__.py +0 -0
  460. {remdb-0.3.221 → remdb-0.3.240}/src/rem/api/routers/chat/json_utils.py +0 -0
  461. {remdb-0.3.221 → remdb-0.3.240}/src/rem/api/routers/chat/models.py +0 -0
  462. {remdb-0.3.221 → remdb-0.3.240}/src/rem/api/routers/chat/otel_utils.py +0 -0
  463. {remdb-0.3.221 → remdb-0.3.240}/src/rem/api/routers/chat/sse_events.py +0 -0
  464. {remdb-0.3.221 → remdb-0.3.240}/src/rem/auth/README.md +0 -0
  465. {remdb-0.3.221 → remdb-0.3.240}/src/rem/auth/__init__.py +0 -0
  466. {remdb-0.3.221 → remdb-0.3.240}/src/rem/auth/jwt.py +0 -0
  467. {remdb-0.3.221 → remdb-0.3.240}/src/rem/auth/middleware.py +0 -0
  468. {remdb-0.3.221 → remdb-0.3.240}/src/rem/auth/providers/__init__.py +0 -0
  469. {remdb-0.3.221 → remdb-0.3.240}/src/rem/auth/providers/base.py +0 -0
  470. {remdb-0.3.221 → remdb-0.3.240}/src/rem/auth/providers/email.py +0 -0
  471. {remdb-0.3.221 → remdb-0.3.240}/src/rem/auth/providers/google.py +0 -0
  472. {remdb-0.3.221 → remdb-0.3.240}/src/rem/auth/providers/microsoft.py +0 -0
  473. {remdb-0.3.221 → remdb-0.3.240}/src/rem/cli/README.md +0 -0
  474. {remdb-0.3.221 → remdb-0.3.240}/src/rem/cli/__init__.py +0 -0
  475. {remdb-0.3.221 → remdb-0.3.240}/src/rem/cli/commands/README.md +0 -0
  476. {remdb-0.3.221 → remdb-0.3.240}/src/rem/cli/commands/__init__.py +0 -0
  477. {remdb-0.3.221 → remdb-0.3.240}/src/rem/cli/commands/cluster.py +0 -0
  478. {remdb-0.3.221 → remdb-0.3.240}/src/rem/cli/commands/configure.py +0 -0
  479. {remdb-0.3.221 → remdb-0.3.240}/src/rem/cli/commands/db.py +0 -0
  480. {remdb-0.3.221 → remdb-0.3.240}/src/rem/cli/commands/dreaming.py +0 -0
  481. {remdb-0.3.221 → remdb-0.3.240}/src/rem/cli/commands/experiments.py +0 -0
  482. {remdb-0.3.221 → remdb-0.3.240}/src/rem/cli/commands/mcp.py +0 -0
  483. {remdb-0.3.221 → remdb-0.3.240}/src/rem/cli/commands/scaffold.py +0 -0
  484. {remdb-0.3.221 → remdb-0.3.240}/src/rem/cli/commands/schema.py +0 -0
  485. {remdb-0.3.221 → remdb-0.3.240}/src/rem/cli/commands/serve.py +0 -0
  486. {remdb-0.3.221 → remdb-0.3.240}/src/rem/cli/dreaming.py +0 -0
  487. {remdb-0.3.221 → remdb-0.3.240}/src/rem/cli/main.py +0 -0
  488. {remdb-0.3.221 → remdb-0.3.240}/src/rem/config.py +0 -0
  489. {remdb-0.3.221 → remdb-0.3.240}/src/rem/mcp_server.py +0 -0
  490. {remdb-0.3.221 → remdb-0.3.240}/src/rem/models/core/__init__.py +0 -0
  491. {remdb-0.3.221 → remdb-0.3.240}/src/rem/models/core/core_model.py +0 -0
  492. {remdb-0.3.221 → remdb-0.3.240}/src/rem/models/core/engram.py +0 -0
  493. {remdb-0.3.221 → remdb-0.3.240}/src/rem/models/core/experiment.py +0 -0
  494. {remdb-0.3.221 → remdb-0.3.240}/src/rem/models/core/inline_edge.py +0 -0
  495. {remdb-0.3.221 → remdb-0.3.240}/src/rem/models/core/rem_query.py +0 -0
  496. {remdb-0.3.221 → remdb-0.3.240}/src/rem/models/entities/__init__.py +0 -0
  497. {remdb-0.3.221 → remdb-0.3.240}/src/rem/models/entities/domain_resource.py +0 -0
  498. {remdb-0.3.221 → remdb-0.3.240}/src/rem/models/entities/feedback.py +0 -0
  499. {remdb-0.3.221 → remdb-0.3.240}/src/rem/models/entities/file.py +0 -0
  500. {remdb-0.3.221 → remdb-0.3.240}/src/rem/models/entities/image_resource.py +0 -0
  501. {remdb-0.3.221 → remdb-0.3.240}/src/rem/models/entities/message.py +0 -0
  502. {remdb-0.3.221 → remdb-0.3.240}/src/rem/models/entities/moment.py +0 -0
  503. {remdb-0.3.221 → remdb-0.3.240}/src/rem/models/entities/ontology.py +0 -0
  504. {remdb-0.3.221 → remdb-0.3.240}/src/rem/models/entities/ontology_config.py +0 -0
  505. {remdb-0.3.221 → remdb-0.3.240}/src/rem/models/entities/resource.py +0 -0
  506. {remdb-0.3.221 → remdb-0.3.240}/src/rem/models/entities/schema.py +0 -0
  507. {remdb-0.3.221 → remdb-0.3.240}/src/rem/models/entities/shared_session.py +0 -0
  508. {remdb-0.3.221 → remdb-0.3.240}/src/rem/models/entities/subscriber.py +0 -0
  509. {remdb-0.3.221 → remdb-0.3.240}/src/rem/models/entities/user.py +0 -0
  510. {remdb-0.3.221 → remdb-0.3.240}/src/rem/py.typed +0 -0
  511. {remdb-0.3.221 → remdb-0.3.240}/src/rem/registry.py +0 -0
  512. {remdb-0.3.221 → remdb-0.3.240}/src/rem/schemas/README.md +0 -0
  513. {remdb-0.3.221 → remdb-0.3.240}/src/rem/schemas/__init__.py +0 -0
  514. {remdb-0.3.221 → remdb-0.3.240}/src/rem/schemas/agents/README.md +0 -0
  515. {remdb-0.3.221 → remdb-0.3.240}/src/rem/schemas/agents/core/agent-builder.yaml +0 -0
  516. {remdb-0.3.221 → remdb-0.3.240}/src/rem/schemas/agents/core/moment-builder.yaml +0 -0
  517. {remdb-0.3.221 → remdb-0.3.240}/src/rem/schemas/agents/core/rem-query-agent.yaml +0 -0
  518. {remdb-0.3.221 → remdb-0.3.240}/src/rem/schemas/agents/core/resource-affinity-assessor.yaml +0 -0
  519. {remdb-0.3.221 → remdb-0.3.240}/src/rem/schemas/agents/core/simple-assistant.yaml +0 -0
  520. {remdb-0.3.221 → remdb-0.3.240}/src/rem/schemas/agents/core/user-profile-builder.yaml +0 -0
  521. {remdb-0.3.221 → remdb-0.3.240}/src/rem/schemas/agents/examples/contract-analyzer.yaml +0 -0
  522. {remdb-0.3.221 → remdb-0.3.240}/src/rem/schemas/agents/examples/contract-extractor.yaml +0 -0
  523. {remdb-0.3.221 → remdb-0.3.240}/src/rem/schemas/agents/examples/cv-parser.yaml +0 -0
  524. {remdb-0.3.221 → remdb-0.3.240}/src/rem/schemas/agents/examples/hello-world.yaml +0 -0
  525. {remdb-0.3.221 → remdb-0.3.240}/src/rem/schemas/agents/examples/query.yaml +0 -0
  526. {remdb-0.3.221 → remdb-0.3.240}/src/rem/schemas/agents/examples/simple.yaml +0 -0
  527. {remdb-0.3.221 → remdb-0.3.240}/src/rem/schemas/agents/examples/test.yaml +0 -0
  528. {remdb-0.3.221 → remdb-0.3.240}/src/rem/schemas/agents/rem.yaml +0 -0
  529. {remdb-0.3.221 → remdb-0.3.240}/src/rem/schemas/evaluators/hello-world/default.yaml +0 -0
  530. {remdb-0.3.221 → remdb-0.3.240}/src/rem/schemas/evaluators/rem/faithfulness.yaml +0 -0
  531. {remdb-0.3.221 → remdb-0.3.240}/src/rem/schemas/evaluators/rem/lookup-correctness.yaml +0 -0
  532. {remdb-0.3.221 → remdb-0.3.240}/src/rem/schemas/evaluators/rem/retrieval-precision.yaml +0 -0
  533. {remdb-0.3.221 → remdb-0.3.240}/src/rem/schemas/evaluators/rem/retrieval-recall.yaml +0 -0
  534. {remdb-0.3.221 → remdb-0.3.240}/src/rem/schemas/evaluators/rem/search-correctness.yaml +0 -0
  535. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/__init__.py +0 -0
  536. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/audio/INTEGRATION.md +0 -0
  537. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/audio/README.md +0 -0
  538. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/audio/__init__.py +0 -0
  539. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/audio/chunker.py +0 -0
  540. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/audio/transcriber.py +0 -0
  541. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/content/README.md +0 -0
  542. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/content/__init__.py +0 -0
  543. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/content/providers.py +0 -0
  544. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/content/service.py +0 -0
  545. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/dreaming/README.md +0 -0
  546. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/dreaming/__init__.py +0 -0
  547. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/dreaming/affinity_service.py +0 -0
  548. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/dreaming/moment_service.py +0 -0
  549. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/dreaming/ontology_service.py +0 -0
  550. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/dreaming/user_model_service.py +0 -0
  551. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/dreaming/utils.py +0 -0
  552. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/email/__init__.py +0 -0
  553. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/email/service.py +0 -0
  554. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/email/templates.py +0 -0
  555. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/embeddings/__init__.py +0 -0
  556. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/embeddings/api.py +0 -0
  557. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/embeddings/worker.py +0 -0
  558. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/fs/README.md +0 -0
  559. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/fs/__init__.py +0 -0
  560. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/fs/examples.py +0 -0
  561. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/fs/examples_paths.py +0 -0
  562. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/fs/git_provider.py +0 -0
  563. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/fs/local_provider.py +0 -0
  564. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/fs/parsing-hooks-examples.md +0 -0
  565. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/fs/paths.py +0 -0
  566. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/fs/provider.py +0 -0
  567. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/fs/s3_provider.py +0 -0
  568. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/fs/service.py +0 -0
  569. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/git/README.md +0 -0
  570. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/git/__init__.py +0 -0
  571. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/git/service.py +0 -0
  572. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/phoenix/EXPERIMENT_DESIGN.md +0 -0
  573. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/phoenix/README.md +0 -0
  574. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/phoenix/__init__.py +0 -0
  575. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/phoenix/client.py +0 -0
  576. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/phoenix/config.py +0 -0
  577. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/phoenix/prompt_labels.py +0 -0
  578. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/postgres/README.md +0 -0
  579. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/postgres/__init__.py +0 -0
  580. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/postgres/diff_service.py +0 -0
  581. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/postgres/migration_service.py +0 -0
  582. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/postgres/programmable_diff_service.py +0 -0
  583. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/postgres/pydantic_to_sqlalchemy.py +0 -0
  584. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/postgres/register_type.py +0 -0
  585. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/postgres/schema_generator.py +0 -0
  586. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/postgres/service.py +0 -0
  587. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/postgres/sql_builder.py +0 -0
  588. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/rate_limit.py +0 -0
  589. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/rem/README.md +0 -0
  590. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/rem/__init__.py +0 -0
  591. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/rem/exceptions.py +0 -0
  592. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/rem/executor.py +0 -0
  593. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/rem/parser.py +0 -0
  594. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/rem/queries.py +0 -0
  595. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/rem/query.py +0 -0
  596. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/rem/service.py +0 -0
  597. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/session/README.md +0 -0
  598. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/session/__init__.py +0 -0
  599. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/session/compression.py +0 -0
  600. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/session/reload.py +0 -0
  601. {remdb-0.3.221 → remdb-0.3.240}/src/rem/services/user_service.py +0 -0
  602. {remdb-0.3.221 → remdb-0.3.240}/src/rem/sql/background_indexes.sql +0 -0
  603. {remdb-0.3.221 → remdb-0.3.240}/src/rem/sql/migrations/001_install.sql +0 -0
  604. {remdb-0.3.221 → remdb-0.3.240}/src/rem/sql/migrations/002_install_models.sql +0 -0
  605. {remdb-0.3.221 → remdb-0.3.240}/src/rem/sql/migrations/003_optional_extensions.sql +0 -0
  606. {remdb-0.3.221 → remdb-0.3.240}/src/rem/sql/migrations/005_schema_update.sql +0 -0
  607. {remdb-0.3.221 → remdb-0.3.240}/src/rem/sql/migrations/migrate_session_id_to_uuid.sql +0 -0
  608. {remdb-0.3.221 → remdb-0.3.240}/src/rem/utils/AGENTIC_CHUNKING.md +0 -0
  609. {remdb-0.3.221 → remdb-0.3.240}/src/rem/utils/README.md +0 -0
  610. {remdb-0.3.221 → remdb-0.3.240}/src/rem/utils/__init__.py +0 -0
  611. {remdb-0.3.221 → remdb-0.3.240}/src/rem/utils/agentic_chunking.py +0 -0
  612. {remdb-0.3.221 → remdb-0.3.240}/src/rem/utils/batch_ops.py +0 -0
  613. {remdb-0.3.221 → remdb-0.3.240}/src/rem/utils/chunking.py +0 -0
  614. {remdb-0.3.221 → remdb-0.3.240}/src/rem/utils/clip_embeddings.py +0 -0
  615. {remdb-0.3.221 → remdb-0.3.240}/src/rem/utils/constants.py +0 -0
  616. {remdb-0.3.221 → remdb-0.3.240}/src/rem/utils/date_utils.py +0 -0
  617. {remdb-0.3.221 → remdb-0.3.240}/src/rem/utils/dict_utils.py +0 -0
  618. {remdb-0.3.221 → remdb-0.3.240}/src/rem/utils/embeddings.py +0 -0
  619. {remdb-0.3.221 → remdb-0.3.240}/src/rem/utils/examples/embeddings_example.py +0 -0
  620. {remdb-0.3.221 → remdb-0.3.240}/src/rem/utils/examples/sql_types_example.py +0 -0
  621. {remdb-0.3.221 → remdb-0.3.240}/src/rem/utils/files.py +0 -0
  622. {remdb-0.3.221 → remdb-0.3.240}/src/rem/utils/markdown.py +0 -0
  623. {remdb-0.3.221 → remdb-0.3.240}/src/rem/utils/mime_types.py +0 -0
  624. {remdb-0.3.221 → remdb-0.3.240}/src/rem/utils/model_helpers.py +0 -0
  625. {remdb-0.3.221 → remdb-0.3.240}/src/rem/utils/sql_paths.py +0 -0
  626. {remdb-0.3.221 → remdb-0.3.240}/src/rem/utils/sql_types.py +0 -0
  627. {remdb-0.3.221 → remdb-0.3.240}/src/rem/utils/user_id.py +0 -0
  628. {remdb-0.3.221 → remdb-0.3.240}/src/rem/utils/vision.py +0 -0
  629. {remdb-0.3.221 → remdb-0.3.240}/src/rem/workers/README.md +0 -0
  630. {remdb-0.3.221 → remdb-0.3.240}/src/rem/workers/__init__.py +0 -0
  631. {remdb-0.3.221 → remdb-0.3.240}/src/rem/workers/db_listener.py +0 -0
  632. {remdb-0.3.221 → remdb-0.3.240}/src/rem/workers/db_maintainer.py +0 -0
  633. {remdb-0.3.221 → remdb-0.3.240}/src/rem/workers/dreaming.py +0 -0
  634. {remdb-0.3.221 → remdb-0.3.240}/src/rem/workers/engram_processor.py +0 -0
  635. {remdb-0.3.221 → remdb-0.3.240}/src/rem/workers/sqs_file_processor.py +0 -0
  636. {remdb-0.3.221 → remdb-0.3.240}/src/rem/workers/unlogged_maintainer.py +0 -0
  637. {remdb-0.3.221 → remdb-0.3.240}/test_resources.py +0 -0
  638. {remdb-0.3.221 → remdb-0.3.240}/tests/README.md +0 -0
  639. {remdb-0.3.221 → remdb-0.3.240}/tests/__init__.py +0 -0
  640. {remdb-0.3.221 → remdb-0.3.240}/tests/conftest.py +0 -0
  641. {remdb-0.3.221 → remdb-0.3.240}/tests/data/README.md +0 -0
  642. {remdb-0.3.221 → remdb-0.3.240}/tests/data/audio/README.md +0 -0
  643. {remdb-0.3.221 → remdb-0.3.240}/tests/data/audio/SUMMARY.md +0 -0
  644. {remdb-0.3.221 → remdb-0.3.240}/tests/data/audio/generate_test_audio.py +0 -0
  645. {remdb-0.3.221 → remdb-0.3.240}/tests/data/audio/test_hq_30s.wav +0 -0
  646. {remdb-0.3.221 → remdb-0.3.240}/tests/data/audio/test_long_90s.wav +0 -0
  647. {remdb-0.3.221 → remdb-0.3.240}/tests/data/audio/test_medium_10s.wav +0 -0
  648. {remdb-0.3.221 → remdb-0.3.240}/tests/data/audio/test_short_3s.wav +0 -0
  649. {remdb-0.3.221 → remdb-0.3.240}/tests/data/audio/test_standard_30s.wav +0 -0
  650. {remdb-0.3.221 → remdb-0.3.240}/tests/data/content-examples/pdf/README.md +0 -0
  651. {remdb-0.3.221 → remdb-0.3.240}/tests/data/content-examples/pdf/annual_financial_report.pdf +0 -0
  652. {remdb-0.3.221 → remdb-0.3.240}/tests/data/content-examples/pdf/consulting_agreement.pdf +0 -0
  653. {remdb-0.3.221 → remdb-0.3.240}/tests/data/content-examples/pdf/nda_agreement.pdf +0 -0
  654. {remdb-0.3.221 → remdb-0.3.240}/tests/data/content-examples/pdf/sample_business_plan.pdf +0 -0
  655. {remdb-0.3.221 → remdb-0.3.240}/tests/data/content-examples/pdf/sample_invoice.pdf +0 -0
  656. {remdb-0.3.221 → remdb-0.3.240}/tests/data/content-examples/pdf/sample_research_paper.pdf +0 -0
  657. {remdb-0.3.221 → remdb-0.3.240}/tests/data/content-examples/pdf/sample_resume.pdf +0 -0
  658. {remdb-0.3.221 → remdb-0.3.240}/tests/data/content-examples/pdf/service_contract.pdf +0 -0
  659. {remdb-0.3.221 → remdb-0.3.240}/tests/data/content-examples/test.md +0 -0
  660. {remdb-0.3.221 → remdb-0.3.240}/tests/data/docs/CODE_REVIEW_FIXES.md +0 -0
  661. {remdb-0.3.221 → remdb-0.3.240}/tests/data/docs/TEST_RESULTS.md +0 -0
  662. {remdb-0.3.221 → remdb-0.3.240}/tests/data/docs/cli_verification.md +0 -0
  663. {remdb-0.3.221 → remdb-0.3.240}/tests/data/docs/database-design.md +0 -0
  664. {remdb-0.3.221 → remdb-0.3.240}/tests/data/docs/deep-learning-guide.md +0 -0
  665. {remdb-0.3.221 → remdb-0.3.240}/tests/data/docs/ml-overview.md +0 -0
  666. {remdb-0.3.221 → remdb-0.3.240}/tests/data/docs/python-best-practices.md +0 -0
  667. {remdb-0.3.221 → remdb-0.3.240}/tests/data/docs/test_summary.md +0 -0
  668. {remdb-0.3.221 → remdb-0.3.240}/tests/data/engrams/test-conversation.yaml +0 -0
  669. {remdb-0.3.221 → remdb-0.3.240}/tests/data/engrams/test-diary-entry.yaml +0 -0
  670. {remdb-0.3.221 → remdb-0.3.240}/tests/data/engrams/test-meeting-notes.yaml +0 -0
  671. {remdb-0.3.221 → remdb-0.3.240}/tests/data/engrams/test-observation.yaml +0 -0
  672. {remdb-0.3.221 → remdb-0.3.240}/tests/data/engrams/test-project-note.yaml +0 -0
  673. {remdb-0.3.221 → remdb-0.3.240}/tests/data/graph_seed.yaml +0 -0
  674. {remdb-0.3.221 → remdb-0.3.240}/tests/data/sample-architecture-doc.txt +0 -0
  675. {remdb-0.3.221 → remdb-0.3.240}/tests/data/sample_conversations.yaml +0 -0
  676. {remdb-0.3.221 → remdb-0.3.240}/tests/data/schemas/agents/query_agent.yaml +0 -0
  677. {remdb-0.3.221 → remdb-0.3.240}/tests/data/schemas/agents/summarization_agent.yaml +0 -0
  678. {remdb-0.3.221 → remdb-0.3.240}/tests/data/schemas/agents/test-cv-parser.yaml +0 -0
  679. {remdb-0.3.221 → remdb-0.3.240}/tests/data/schemas/agents/test_orchestrator.yaml +0 -0
  680. {remdb-0.3.221 → remdb-0.3.240}/tests/data/schemas/agents/test_responder.yaml +0 -0
  681. {remdb-0.3.221 → remdb-0.3.240}/tests/data/schemas/evaluators/accuracy_evaluator.yaml +0 -0
  682. {remdb-0.3.221 → remdb-0.3.240}/tests/data/seed/001_sample_data.yaml +0 -0
  683. {remdb-0.3.221 → remdb-0.3.240}/tests/data/seed/001_sample_data.yaml.bak +0 -0
  684. {remdb-0.3.221 → remdb-0.3.240}/tests/data/seed/README.md +0 -0
  685. {remdb-0.3.221 → remdb-0.3.240}/tests/data/seed/files/documents/api_spec.md +0 -0
  686. {remdb-0.3.221 → remdb-0.3.240}/tests/data/seed/files/documents/meeting_notes.txt +0 -0
  687. {remdb-0.3.221 → remdb-0.3.240}/tests/data/seed/files/engrams/personal_reflection.yaml +0 -0
  688. {remdb-0.3.221 → remdb-0.3.240}/tests/data/seed/files/engrams/product_idea_voice_memo.yaml +0 -0
  689. {remdb-0.3.221 → remdb-0.3.240}/tests/data/seed/files/engrams/team_standup_meeting.yaml +0 -0
  690. {remdb-0.3.221 → remdb-0.3.240}/tests/data/seed/resources.yaml +0 -0
  691. {remdb-0.3.221 → remdb-0.3.240}/tests/data/seed/shared_sessions_demo.yaml +0 -0
  692. {remdb-0.3.221 → remdb-0.3.240}/tests/data/seed/test-user-data.yaml +0 -0
  693. {remdb-0.3.221 → remdb-0.3.240}/tests/data/seed/test-user-data.yaml.bak +0 -0
  694. {remdb-0.3.221 → remdb-0.3.240}/tests/data/seed/users.yaml +0 -0
  695. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/README.md +0 -0
  696. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/conftest.py +0 -0
  697. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/helpers/README.md +0 -0
  698. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/helpers/__init__.py +0 -0
  699. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/helpers/seed_data.py +0 -0
  700. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/phoenix/run_complete_experiment.py +0 -0
  701. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/phoenix/run_hello_world_experiment.py +0 -0
  702. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/phoenix/test_connection.py +0 -0
  703. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/quick_delegation_test.py +0 -0
  704. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/rem-agent-eval-questions.yaml +0 -0
  705. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/rem-query-agent-tests.yaml +0 -0
  706. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/sample_data/dreaming/load_sample_data.py +0 -0
  707. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/sample_data/dreaming/resources/api_design_discussion.md +0 -0
  708. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/sample_data/dreaming/resources/database_migration_plan.md +0 -0
  709. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/sample_data/dreaming/resources/morning_standup_notes.md +0 -0
  710. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/sample_data/dreaming/resources/production_incident_postmortem.md +0 -0
  711. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/sample_data/dreaming/resources/quarterly_reflection.md +0 -0
  712. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/services/test_content_providers.py +0 -0
  713. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/services/test_schema_provider.py +0 -0
  714. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_agent_delegation_streaming.py +0 -0
  715. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_agent_end_to_end.py +0 -0
  716. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_agent_tool_invocation.py +0 -0
  717. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_agent_with_tools.py +0 -0
  718. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_api_endpoints.py +0 -0
  719. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_ask_agent_streaming.py +0 -0
  720. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_batch_upsert.py +0 -0
  721. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_completions_with_sessions.py +0 -0
  722. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_content_ingest_workflow.py +0 -0
  723. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_contract_extractor.py +0 -0
  724. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_dreaming_moments.py +0 -0
  725. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_dynamic_agents.py +0 -0
  726. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_early_stream_close.py +0 -0
  727. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_email_auth.py +0 -0
  728. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_embedding_worker.py +0 -0
  729. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_embeddings_e2e.py +0 -0
  730. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_git_provider.py +0 -0
  731. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_graph_traversal.py +0 -0
  732. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_mcp_server_loading.py +0 -0
  733. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_mcp_tool_loading.py +0 -0
  734. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_mcp_tools.py +0 -0
  735. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_mcp_tools_layer.py +0 -0
  736. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_messages_sessions_access.py +0 -0
  737. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_multi_agent.py +0 -0
  738. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_natural_language_to_rem.py +0 -0
  739. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_rem_query.py +0 -0
  740. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_rem_query_agent.py +0 -0
  741. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_rem_query_agent_structured.py +0 -0
  742. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_rem_query_evolution.py +0 -0
  743. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_rem_query_functions.py +0 -0
  744. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_rem_service_layer.py +0 -0
  745. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_schema_introspection.py +0 -0
  746. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_session_management.py +0 -0
  747. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_streaming_response.py +0 -0
  748. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_streaming_save.py +0 -0
  749. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_unlogged_maintainer.py +0 -0
  750. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_user_lookup_by_email.py +0 -0
  751. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_user_session_reloads.py +0 -0
  752. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_verify_setup.py +0 -0
  753. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/test_yaml_export.py +0 -0
  754. {remdb-0.3.221 → remdb-0.3.240}/tests/integration/validate_rem_agent_schema.py +0 -0
  755. {remdb-0.3.221 → remdb-0.3.240}/tests/scripts/__init__.py +0 -0
  756. {remdb-0.3.221 → remdb-0.3.240}/tests/scripts/demo_session_recovery.py +0 -0
  757. {remdb-0.3.221 → remdb-0.3.240}/tests/scripts/seed_sample_sessions.py +0 -0
  758. {remdb-0.3.221 → remdb-0.3.240}/tests/scripts/simple_session_demo.py +0 -0
  759. {remdb-0.3.221 → remdb-0.3.240}/tests/test_agent_manager.py +0 -0
  760. {remdb-0.3.221 → remdb-0.3.240}/tests/unit/__init__.py +0 -0
  761. {remdb-0.3.221 → remdb-0.3.240}/tests/unit/agentic/__init__.py +0 -0
  762. {remdb-0.3.221 → remdb-0.3.240}/tests/unit/agentic/agents/__init__.py +0 -0
  763. {remdb-0.3.221 → remdb-0.3.240}/tests/unit/agentic/agents/test_sse_simulator.py +0 -0
  764. {remdb-0.3.221 → remdb-0.3.240}/tests/unit/agentic/providers/__init__.py +0 -0
  765. {remdb-0.3.221 → remdb-0.3.240}/tests/unit/agentic/providers/test_pydantic_ai.py +0 -0
  766. {remdb-0.3.221 → remdb-0.3.240}/tests/unit/agentic/test_schema.py +0 -0
  767. {remdb-0.3.221 → remdb-0.3.240}/tests/unit/agentic/test_schema_integration.py +0 -0
  768. {remdb-0.3.221 → remdb-0.3.240}/tests/unit/agentic/test_tool_description_suffix.py +0 -0
  769. {remdb-0.3.221 → remdb-0.3.240}/tests/unit/api/__init__.py +0 -0
  770. {remdb-0.3.221 → remdb-0.3.240}/tests/unit/api/test_feedback.py +0 -0
  771. {remdb-0.3.221 → remdb-0.3.240}/tests/unit/api/test_models_endpoint.py +0 -0
  772. {remdb-0.3.221 → remdb-0.3.240}/tests/unit/api/test_sessions_messages.py +0 -0
  773. {remdb-0.3.221 → remdb-0.3.240}/tests/unit/api/test_sse_events.py +0 -0
  774. {remdb-0.3.221 → remdb-0.3.240}/tests/unit/conftest.py +0 -0
  775. {remdb-0.3.221 → remdb-0.3.240}/tests/unit/services/test_session_compression.py +0 -0
  776. {remdb-0.3.221 → remdb-0.3.240}/tests/unit/test_admin_internal.py +0 -0
  777. {remdb-0.3.221 → remdb-0.3.240}/tests/unit/test_api_key_auth.py +0 -0
  778. {remdb-0.3.221 → remdb-0.3.240}/tests/unit/test_registry.py +0 -0
  779. {remdb-0.3.221 → remdb-0.3.240}/tests/unit/test_resource_tools.py +0 -0
  780. {remdb-0.3.221 → remdb-0.3.240}/tests/unit/test_session_cli.py +0 -0
  781. {remdb-0.3.221 → remdb-0.3.240}/tests/unit/test_sql_security.py +0 -0
  782. {remdb-0.3.221 → remdb-0.3.240}/tests/unit/utils/test_agentic_chunking.py +0 -0
  783. {remdb-0.3.221 → remdb-0.3.240}/walkthrough.md +0 -0
@@ -28,7 +28,7 @@ echo ""
28
28
  echo ">>> Running integration tests (skipping LLM tests and files with event loop conflicts)..."
29
29
  # Skip LLM-marked tests which require real API calls
30
30
  # Ignore files that have TestClient + asyncpg event loop conflicts
31
- POSTGRES__CONNECTION_STRING="postgresql://rem:rem@localhost:5433/rem" \
31
+ POSTGRES__CONNECTION_STRING="postgresql://rem:rem@localhost:5051/rem" \
32
32
  uv run pytest tests/integration/ -v -m "not llm" \
33
33
  --ignore=tests/integration/test_session_management.py \
34
34
  --ignore=tests/integration/test_api_endpoints.py \
@@ -0,0 +1 @@
1
+ ��type�str�data�application/pdf�cached_at�A�U�� �5
@@ -0,0 +1 @@
1
+ ��type�str�data�application/pdf�cached_at�A�Uo�:�
@@ -0,0 +1 @@
1
+ ��type�str�data�application/pdf�cached_at�A�Uo/sHc
@@ -0,0 +1 @@
1
+ ��type�str�data�application/pdf�cached_at�A�Uf���
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: remdb
3
- Version: 0.3.221
3
+ Version: 0.3.240
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
@@ -39,7 +39,7 @@ Requires-Dist: opentelemetry-instrumentation-fastapi>=0.49b0
39
39
  Requires-Dist: opentelemetry-instrumentation>=0.49b0
40
40
  Requires-Dist: opentelemetry-sdk>=1.28.0
41
41
  Requires-Dist: psycopg[binary]>=3.2.0
42
- Requires-Dist: pydantic-ai>=0.0.14
42
+ Requires-Dist: pydantic-ai>=1.0.0
43
43
  Requires-Dist: pydantic-settings>=2.6.0
44
44
  Requires-Dist: pydantic>=2.10.0
45
45
  Requires-Dist: pydub>=0.25.0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "remdb"
3
- version = "0.3.221"
3
+ version = "0.3.240"
4
4
  description = "Resources Entities Moments - Bio-inspired memory system for agentic AI workloads"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -24,7 +24,7 @@ dependencies = [
24
24
  "pydantic>=2.10.0",
25
25
  "pydantic-settings>=2.6.0",
26
26
  # Agentic AI
27
- "pydantic-ai>=0.0.14",
27
+ "pydantic-ai>=1.0.0",
28
28
  # API Framework
29
29
  "fastapi>=0.115.0",
30
30
  "uvicorn[standard]>=0.32.0",
@@ -140,15 +140,11 @@ testpaths = ["tests"]
140
140
  python_files = ["test_*.py"]
141
141
  python_classes = ["Test*"]
142
142
  python_functions = ["test_*"]
143
- asyncio_mode = "auto"
144
- # Use session scope for both fixtures and tests to share one event loop
145
- # This prevents "Event loop is closed" errors with asyncpg connections
146
- asyncio_default_fixture_loop_scope = "session"
147
- asyncio_default_test_loop_scope = "session"
148
143
  addopts = [
149
144
  "-v",
150
145
  "--strict-markers",
151
146
  "--tb=short",
147
+ "--asyncio-mode=auto",
152
148
  ]
153
149
  markers = [
154
150
  "asyncio: marks tests as async",
@@ -718,263 +718,37 @@ See `rem/api/README.md` for full SSE event protocol documentation.
718
718
 
719
719
  ## Multi-Agent Orchestration
720
720
 
721
- REM supports hierarchical agent orchestration where agents can delegate work to other agents via the `ask_agent` tool. This enables complex workflows with specialized agents.
722
-
723
- ### Architecture
724
-
725
- ```mermaid
726
- sequenceDiagram
727
- participant User
728
- participant API as Chat API
729
- participant Orchestrator as Orchestrator Agent
730
- participant EventSink as Event Sink (Queue)
731
- participant Child as Child Agent
732
- participant DB as PostgreSQL
733
-
734
- User->>API: POST /chat/completions (stream=true)
735
- API->>API: Create event sink (asyncio.Queue)
736
- API->>Orchestrator: agent.iter(prompt)
737
-
738
- loop Streaming Loop
739
- Orchestrator->>API: PartDeltaEvent (text)
740
- API->>User: SSE: data: {"delta": {"content": "..."}}
741
- end
742
-
743
- Orchestrator->>Orchestrator: Decides to call ask_agent
744
- Orchestrator->>API: ToolCallPart (ask_agent)
745
- API->>User: SSE: event: tool_call
746
-
747
- API->>Child: ask_agent("child_name", input)
748
- Child->>EventSink: push_event(child_content)
749
- EventSink->>API: Consume child events
750
- API->>User: SSE: data: {"delta": {"content": "..."}}
751
-
752
- Child->>Child: Completes
753
- Child-->>Orchestrator: Return result
754
-
755
- Orchestrator->>API: Final response
756
- API->>DB: Save tool calls
757
- API->>DB: Save assistant message
758
- API->>User: SSE: data: [DONE]
759
- ```
760
-
761
- ### Event Sink Pattern
762
-
763
- When an agent delegates to a child via `ask_agent`, the child's streaming events need to bubble up to the parent's stream. This is achieved through an **event sink** pattern using Python's `ContextVar`:
764
-
765
- ```python
766
- # context.py
767
- from contextvars import ContextVar
768
-
769
- _parent_event_sink: ContextVar["asyncio.Queue | None"] = ContextVar(
770
- "parent_event_sink", default=None
771
- )
772
-
773
- async def push_event(event: Any) -> bool:
774
- """Push event to parent's event sink if available."""
775
- sink = _parent_event_sink.get()
776
- if sink is not None:
777
- await sink.put(event)
778
- return True
779
- return False
780
- ```
781
-
782
- The streaming controller sets up the event sink before agent execution:
783
-
784
- ```python
785
- # streaming.py
786
- child_event_sink: asyncio.Queue = asyncio.Queue()
787
- set_event_sink(child_event_sink)
788
-
789
- async for node in agent.iter(prompt):
790
- # Process agent events...
791
-
792
- # Consume any child events that arrived
793
- while not child_event_sink.empty():
794
- child_event = child_event_sink.get_nowait()
795
- if child_event["type"] == "child_content":
796
- yield format_sse_content_delta(child_event["content"])
797
- ```
798
-
799
- ### ask_agent Tool Implementation
800
-
801
- The `ask_agent` tool in `mcp_router/tools.py` uses Pydantic AI's streaming iteration:
802
-
803
- ```python
804
- async def ask_agent(agent_name: str, input_text: str, ...):
805
- """Delegate work to another agent."""
806
-
807
- # Load and create child agent
808
- schema = await load_agent_schema_async(agent_name, user_id)
809
- child_agent = await create_agent(context=context, agent_schema_override=schema)
810
-
811
- # Stream child agent with event proxying
812
- async with child_agent.iter(prompt) as agent_run:
813
- async for node in agent_run:
814
- if Agent.is_model_request_node(node):
815
- async with node.stream(agent_run.ctx) as request_stream:
816
- async for event in request_stream:
817
- if isinstance(event, PartDeltaEvent):
818
- # Push content to parent's event sink
819
- await push_event({
820
- "type": "child_content",
821
- "agent_name": agent_name,
822
- "content": event.delta.content_delta,
823
- })
824
-
825
- return agent_run.result
826
- ```
827
-
828
- ### Pydantic AI Features Used
721
+ Agents can delegate work to other agents via the `ask_agent` tool. This enables orchestrator patterns where a parent agent routes to specialists.
829
722
 
830
- #### 1. Streaming Iteration (`agent.iter()`)
723
+ ### How It Works
831
724
 
832
- Unlike `agent.run()` which blocks until completion, `agent.iter()` provides fine-grained control over the execution flow:
725
+ 1. **Parent agent** calls `ask_agent(agent_name, input_text)`
726
+ 2. **Child agent** executes and streams its response
727
+ 3. **Child events** bubble up to parent via an event sink (asyncio.Queue in ContextVar)
728
+ 4. **All tool calls** are saved to the database for the session
833
729
 
834
- ```python
835
- async with agent.iter(prompt) as agent_run:
836
- async for node in agent_run:
837
- if Agent.is_model_request_node(node):
838
- # Model is generating - stream the response
839
- async with node.stream(agent_run.ctx) as stream:
840
- async for event in stream:
841
- if isinstance(event, PartStartEvent):
842
- # Tool call starting
843
- elif isinstance(event, PartDeltaEvent):
844
- # Content chunk
845
- elif Agent.is_call_tools_node(node):
846
- # Tools are being executed
847
- async with node.stream(agent_run.ctx) as stream:
848
- async for event in stream:
849
- if isinstance(event, FunctionToolResultEvent):
850
- # Tool completed
851
- ```
852
-
853
- #### 2. Node Types
854
-
855
- - **`ModelRequestNode`**: The model is generating a response (text or tool calls)
856
- - **`CallToolsNode`**: Tools are being executed
857
- - **`End`**: Agent execution complete
858
-
859
- #### 3. Event Types
730
+ ### Key Components
860
731
 
861
- - **`PartStartEvent`**: A new part (text or tool call) is starting
862
- - **`PartDeltaEvent`**: Content chunk for streaming text
863
- - **`FunctionToolResultEvent`**: Tool execution completed with result
864
- - **`ToolCallPart`**: Metadata about a tool call (name, arguments)
865
- - **`TextPart`**: Text content
732
+ | Component | Location | Purpose |
733
+ |-----------|----------|---------|
734
+ | `ask_agent` tool | `mcp_router/tools.py` | Loads child agent, runs with streaming, pushes events to sink |
735
+ | Event sink | `context.py` | ContextVar holding asyncio.Queue for child→parent event flow |
736
+ | Streaming controller | `streaming.py` | Drains event sink, emits SSE events, saves to DB |
866
737
 
867
- ### Message Persistence
868
-
869
- All messages are persisted to PostgreSQL for session continuity:
870
-
871
- ```python
872
- # streaming.py - after agent completes
873
- async def save_session_messages(...):
874
- store = SessionMessageStore(user_id=user_id)
875
-
876
- # Save each tool call as a tool message
877
- for tool_call in tool_calls:
878
- await store.save_message(
879
- session_id=session_id,
880
- role="tool",
881
- content=tool_call.result,
882
- tool_name=tool_call.name,
883
- tool_call_id=tool_call.id,
884
- )
885
-
886
- # Save the final assistant response
887
- await store.save_message(
888
- session_id=session_id,
889
- role="assistant",
890
- content=accumulated_content,
891
- )
892
- ```
738
+ ### Event Types
893
739
 
894
- Messages are stored with:
895
- - **Embeddings**: For semantic search across conversation history
896
- - **Compression**: Long conversations are summarized to manage context window
897
- - **Session isolation**: Each session maintains its own message history
740
+ Child agents emit events that the parent streams to the client:
898
741
 
899
- ### Testing Multi-Agent Systems
742
+ - **`child_tool_start`**: Child is calling a tool (logged, streamed, saved to DB)
743
+ - **`child_content`**: Child's text response (streamed as SSE content delta)
744
+ - **`child_tool_result`**: Tool completed with result (metadata extraction)
900
745
 
901
- #### Integration Tests
746
+ ### Testing
902
747
 
903
- Real end-to-end tests without mocking are in `tests/integration/test_ask_agent_streaming.py`:
904
-
905
- ```python
906
- class TestAskAgentStreaming:
907
- async def test_ask_agent_streams_and_saves(self, session_id, user_id):
908
- """Test delegation via ask_agent."""
909
- # Uses test_orchestrator which always delegates to test_responder
910
- agent = await create_agent(context=context, agent_schema_override=schema)
911
-
912
- chunks = []
913
- async for chunk in stream_openai_response_with_save(
914
- agent=agent,
915
- prompt="Hello, please delegate this",
916
- ...
917
- ):
918
- chunks.append(chunk)
919
-
920
- # Verify streaming worked
921
- assert len(content_chunks) > 0
922
-
923
- # Verify persistence
924
- messages = await store.load_session_messages(session_id)
925
- assert len([m for m in messages if m["role"] == "assistant"]) == 1
926
- assert len([m for m in messages if m["tool_name"] == "ask_agent"]) >= 1
927
-
928
- async def test_multi_turn_saves_all_assistant_messages(self, session_id, user_id):
929
- """Test that each turn saves its own assistant message.
930
-
931
- This catches scoping bugs like accumulated_content not being
932
- properly scoped per-turn.
933
- """
934
- turn_prompts = [
935
- "Hello, how are you?",
936
- "Tell me something interesting",
937
- "Thanks for chatting!",
938
- ]
939
-
940
- for prompt in turn_prompts:
941
- async for chunk in stream_openai_response_with_save(...):
942
- pass
943
-
944
- # Each turn should save an assistant message
945
- messages = await store.load_session_messages(session_id)
946
- assistant_msgs = [m for m in messages if m["role"] == "assistant"]
947
- assert len(assistant_msgs) == 3
948
- ```
949
-
950
- #### Test Agent Schemas
951
-
952
- Test agents are defined in `tests/data/schemas/agents/`:
953
-
954
- - **`test_orchestrator.yaml`**: Always delegates via `ask_agent`
955
- - **`test_responder.yaml`**: Simple agent that responds directly
956
-
957
- ```yaml
958
- # test_orchestrator.yaml
959
- type: object
960
- description: |
961
- You are a TEST ORCHESTRATOR that ALWAYS delegates to another agent.
962
- Call ask_agent with agent_name="test_responder" on EVERY turn.
963
- json_schema_extra:
964
- kind: agent
965
- name: test_orchestrator
966
- tools:
967
- - name: ask_agent
968
- mcp_server: rem
969
- ```
970
-
971
- #### Running Integration Tests
972
-
973
- ```bash
974
- # Run individually (recommended due to async isolation)
975
- POSTGRES__CONNECTION_STRING="postgresql://rem:rem@localhost:5050/rem" \
976
- uv run pytest tests/integration/test_ask_agent_streaming.py::TestAskAgentStreaming::test_multi_turn_saves_all_assistant_messages -v -s
977
- ```
748
+ Integration tests in `tests/integration/test_ask_agent_streaming.py` verify:
749
+ - Child content streams correctly to client
750
+ - Tool calls are persisted to database
751
+ - Multi-turn conversations save all messages
978
752
 
979
753
  ## Future Work
980
754
 
@@ -4,15 +4,12 @@ Centralized context builder for agent execution.
4
4
  Session History (ALWAYS loaded with compression):
5
5
  - Each chat request is a single message, so session history MUST be recovered
6
6
  - Uses SessionMessageStore with compression to keep context efficient
7
- - Long assistant responses include REM LOOKUP hints: "... [REM LOOKUP session-{id}-msg-{index}] ..."
8
- - Agent can retrieve full content on-demand using REM LOOKUP
9
7
  - Prevents context window bloat while maintaining conversation continuity
10
8
 
11
9
  User Context (on-demand by default):
12
- - System message includes REM LOOKUP hint for user profile
13
- - Agent decides whether to load profile based on query
14
- - More efficient for queries that don't need personalization
15
- - Example: "User: sarah@example.com. To load user profile: Use REM LOOKUP \"sarah@example.com\""
10
+ - System message includes user email for context awareness
11
+ - Fails silently if user not found - agent proceeds without user context
12
+ - Example: "User: sarah@example.com"
16
13
 
17
14
  User Context (auto-inject when enabled):
18
15
  - Set CHAT__AUTO_INJECT_USER_CONTEXT=true
@@ -22,8 +19,8 @@ User Context (auto-inject when enabled):
22
19
  Design Pattern:
23
20
  1. Extract AgentContext from headers (user_id, tenant_id, session_id)
24
21
  2. If auto-inject enabled: Load User/Session from database
25
- 3. If auto-inject disabled: Provide REM LOOKUP hints in system message
26
- 4. Construct system message with date + context (injected or hints)
22
+ 3. If auto-inject disabled: Show user email for context (fail silently if not found)
23
+ 4. Construct system message with date + context
27
24
  5. Return complete context ready for agent execution
28
25
 
29
26
  Integration Points:
@@ -40,11 +37,10 @@ Usage (on-demand, default):
40
37
 
41
38
  # Messages list structure (on-demand):
42
39
  # [
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"},
40
+ # {"role": "system", "content": "Today's date: 2025-11-22\n\nUser: sarah@example.com"},
44
41
  # {"role": "user", "content": "What's next for the API migration?"}
45
42
  # ]
46
43
 
47
- # Agent receives hints and can decide to load context if needed
48
44
  agent = await create_agent(context=context, ...)
49
45
  prompt = "\n".join(msg.content for msg in messages)
50
46
  result = await agent.run(prompt)
@@ -52,7 +48,7 @@ Usage (on-demand, default):
52
48
  Usage (auto-inject, CHAT__AUTO_INJECT_USER_CONTEXT=true):
53
49
  # Messages list structure (auto-inject):
54
50
  # [
55
- # {"role": "system", "content": "Today's date: 2025-11-22\n\nUser Context (auto-injected):\nSummary: ...\nInterests: ...\n\nSession History (auto-injected, 5 messages):"},
51
+ # {"role": "system", "content": "Today's date: 2025-11-22\n\nUser Context (auto-injected):\nSummary: ...\nInterests: ..."},
56
52
  # {"role": "user", "content": "Previous message"},
57
53
  # {"role": "assistant", "content": "Previous response"},
58
54
  # {"role": "user", "content": "What's next for the API migration?"}
@@ -110,13 +106,11 @@ class ContextBuilder:
110
106
 
111
107
  Session History (ALWAYS loaded with compression):
112
108
  - If session_id provided, session history is ALWAYS loaded using SessionMessageStore
113
- - Compression keeps it efficient with REM LOOKUP hints for long messages
114
- - Example: "... [Message truncated - REM LOOKUP session-{id}-msg-{index}] ..."
115
- - Agent can retrieve full content on-demand using REM LOOKUP
109
+ - Compression keeps context efficient
116
110
 
117
111
  User Context (on-demand by default):
118
- - System message includes REM LOOKUP hint: "User: {email}. To load user profile: Use REM LOOKUP \"{email}\""
119
- - Agent decides whether to load profile based on query
112
+ - System message includes user email: "User: {email}"
113
+ - Fails silently if user not found - agent proceeds without user context
120
114
 
121
115
  User Context (auto-inject when enabled):
122
116
  - Set CHAT__AUTO_INJECT_USER_CONTEXT=true
@@ -137,9 +131,9 @@ class ContextBuilder:
137
131
 
138
132
  # messages structure:
139
133
  # [
140
- # {"role": "system", "content": "Today's date: 2025-11-22\nUser: sarah@example.com\nTo load user profile: Use REM LOOKUP \"sarah@example.com\""},
134
+ # {"role": "system", "content": "Today's date: 2025-11-22\n\nUser: sarah@example.com"},
141
135
  # {"role": "user", "content": "Previous message"},
142
- # {"role": "assistant", "content": "Start of long response... [REM LOOKUP session-123-msg-1] ...end"},
136
+ # {"role": "assistant", "content": "Previous response"},
143
137
  # {"role": "user", "content": "New message"}
144
138
  # ]
145
139
  """
@@ -189,18 +183,18 @@ class ContextBuilder:
189
183
  context_hint += f"\n\nUser Context (auto-injected):\n{user_context_content}"
190
184
  else:
191
185
  context_hint += "\n\nNo user context available (anonymous or new user)."
192
- elif context.user_id:
193
- # On-demand: Provide hint to use REM LOOKUP
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."
186
+ elif context.user_id and db:
187
+ # On-demand: Show user email for context (no REM LOOKUP - it requires exact user_id match)
188
+ # Fail silently if user lookup fails - just proceed without user context
189
+ try:
190
+ user_repo = Repository(User, "users", db=db)
191
+ user = await user_repo.get_by_id(context.user_id, context.tenant_id)
192
+ if user and user.email:
193
+ context_hint += f"\n\nUser: {user.email}"
194
+ # If user not found, just proceed without adding user context
195
+ except Exception as e:
196
+ # Fail silently - don't block agent execution if user lookup fails
197
+ logger.debug(f"Could not load user context: {e}")
204
198
 
205
199
  # Add system context hint
206
200
  messages.append(ContextMessage(role="system", content=context_hint))
@@ -357,6 +357,9 @@ def _convert_properties_to_prompt(properties: dict[str, Any]) -> str:
357
357
  definition into natural language guidance that informs the agent
358
358
  about the expected response structure without forcing JSON output.
359
359
 
360
+ IMPORTANT: The 'answer' field is the OUTPUT to the user. All other
361
+ fields are INTERNAL tracking that should NOT appear in the output.
362
+
360
363
  Args:
361
364
  properties: JSON Schema properties dict
362
365
 
@@ -368,45 +371,59 @@ def _convert_properties_to_prompt(properties: dict[str, Any]) -> str:
368
371
  "answer": {"type": "string", "description": "The answer"},
369
372
  "confidence": {"type": "number", "description": "Confidence 0-1"}
370
373
  }
371
- # Returns:
372
- # "## Response Structure\n\nYour response should include:\n- **answer**: The answer\n..."
374
+ # Returns guidance that only answer should be output
373
375
  """
374
376
  if not properties:
375
377
  return ""
376
378
 
377
- lines = ["## Response Guidelines", "", "Your response should address the following elements:"]
378
-
379
- for field_name, field_def in properties.items():
380
- field_type = field_def.get("type", "any")
381
- description = field_def.get("description", "")
382
-
383
- # Format based on type
384
- if field_type == "array":
385
- type_hint = "list"
386
- elif field_type == "number":
387
- type_hint = "number"
388
- # Include min/max if specified
389
- if "minimum" in field_def or "maximum" in field_def:
390
- min_val = field_def.get("minimum", "")
391
- max_val = field_def.get("maximum", "")
392
- if min_val != "" and max_val != "":
393
- type_hint = f"number ({min_val}-{max_val})"
394
- elif field_type == "boolean":
395
- type_hint = "yes/no"
396
- else:
397
- type_hint = field_type
379
+ # Separate answer (output) from other fields (internal tracking)
380
+ answer_field = properties.get("answer")
381
+ internal_fields = {k: v for k, v in properties.items() if k != "answer"}
382
+
383
+ lines = ["## Internal Thinking Structure (DO NOT output these labels)"]
384
+ lines.append("")
385
+ lines.append("Use this structure to organize your thinking, but ONLY output the answer content:")
386
+ lines.append("")
387
+
388
+ # If there's an answer field, emphasize it's the ONLY output
389
+ if answer_field:
390
+ answer_desc = answer_field.get("description", "Your response")
391
+ lines.append(f"**OUTPUT (what the user sees):** {answer_desc}")
392
+ lines.append("")
393
+
394
+ # Document internal fields for tracking/thinking
395
+ if internal_fields:
396
+ lines.append("**INTERNAL (for your tracking only - do NOT include in output):**")
397
+ for field_name, field_def in internal_fields.items():
398
+ field_type = field_def.get("type", "any")
399
+ description = field_def.get("description", "")
400
+
401
+ # Format based on type
402
+ if field_type == "array":
403
+ type_hint = "list"
404
+ elif field_type == "number":
405
+ type_hint = "number"
406
+ if "minimum" in field_def or "maximum" in field_def:
407
+ min_val = field_def.get("minimum", "")
408
+ max_val = field_def.get("maximum", "")
409
+ if min_val != "" and max_val != "":
410
+ type_hint = f"number ({min_val}-{max_val})"
411
+ elif field_type == "boolean":
412
+ type_hint = "yes/no"
413
+ else:
414
+ type_hint = field_type
398
415
 
399
- # Build field description
400
- field_line = f"- **{field_name}**"
401
- if type_hint and type_hint != "string":
402
- field_line += f" ({type_hint})"
403
- if description:
404
- field_line += f": {description}"
416
+ field_line = f"- {field_name}"
417
+ if type_hint and type_hint != "string":
418
+ field_line += f" ({type_hint})"
419
+ if description:
420
+ field_line += f": {description}"
405
421
 
406
- lines.append(field_line)
422
+ lines.append(field_line)
407
423
 
408
424
  lines.append("")
409
- lines.append("Respond naturally in prose, addressing these elements where relevant.")
425
+ lines.append("⚠️ CRITICAL: Your response must be ONLY the conversational answer text.")
426
+ lines.append("Do NOT output field names like 'answer:' or 'diverge_output:' - just the response itself.")
410
427
 
411
428
  return "\n".join(lines)
412
429
 
@@ -664,26 +681,26 @@ async def create_agent(
664
681
 
665
682
  set_agent_resource_attributes(agent_schema=agent_schema)
666
683
 
667
- # Extract schema metadata for search_rem tool description suffix
668
- # This allows entity schemas to add context-specific notes to the search_rem tool
669
- search_rem_suffix = None
670
- if metadata:
671
- # Check for default_search_table in metadata (set by entity schemas)
672
- extra = agent_schema.get("json_schema_extra", {}) if agent_schema else {}
673
- default_table = extra.get("default_search_table")
674
- has_embeddings = extra.get("has_embeddings", False)
675
-
676
- if default_table:
677
- # Build description suffix for search_rem
678
- search_rem_suffix = f"\n\nFor this schema, use `search_rem` to query `{default_table}`. "
679
- if has_embeddings:
680
- search_rem_suffix += f"SEARCH works well on {default_table} (has embeddings). "
681
- search_rem_suffix += f"Example: `SEARCH \"your query\" FROM {default_table} LIMIT 10`"
682
-
683
684
  # Add tools from MCP server (in-process, no subprocess)
684
685
  # Track loaded MCP servers for resource resolution
685
686
  loaded_mcp_server = None
686
687
 
688
+ # Build map of tool_name → schema description from agent schema tools section
689
+ # This allows agent-specific tool guidance to override/augment MCP tool descriptions
690
+ schema_tool_descriptions: dict[str, str] = {}
691
+ tool_configs = metadata.tools if metadata and hasattr(metadata, 'tools') else []
692
+ for tool_config in tool_configs:
693
+ if hasattr(tool_config, 'name'):
694
+ t_name = tool_config.name
695
+ t_desc = tool_config.description or ""
696
+ else:
697
+ t_name = tool_config.get("name", "")
698
+ t_desc = tool_config.get("description", "")
699
+ # Skip resource URIs (handled separately below)
700
+ if t_name and "://" not in t_name and t_desc:
701
+ schema_tool_descriptions[t_name] = t_desc
702
+ logger.debug(f"Schema tool description for '{t_name}': {len(t_desc)} chars")
703
+
687
704
  for server_config in mcp_server_configs:
688
705
  server_type = server_config.get("type")
689
706
  server_id = server_config.get("id", "mcp-server")
@@ -708,8 +725,8 @@ async def create_agent(
708
725
  mcp_tools_dict = await mcp_server.get_tools()
709
726
 
710
727
  for tool_name, tool_func in mcp_tools_dict.items():
711
- # Add description suffix to search_rem tool if schema specifies a default table
712
- tool_suffix = search_rem_suffix if tool_name == "search_rem" else None
728
+ # Get schema description suffix if agent schema defines one for this tool
729
+ tool_suffix = schema_tool_descriptions.get(tool_name)
713
730
 
714
731
  wrapped_tool = create_mcp_tool_wrapper(
715
732
  tool_name,
@@ -718,7 +735,7 @@ async def create_agent(
718
735
  description_suffix=tool_suffix,
719
736
  )
720
737
  tools.append(wrapped_tool)
721
- logger.debug(f"Loaded MCP tool: {tool_name}" + (" (with schema suffix)" if tool_suffix else ""))
738
+ logger.debug(f"Loaded MCP tool: {tool_name}" + (" (with schema desc)" if tool_suffix else ""))
722
739
 
723
740
  logger.info(f"Loaded {len(mcp_tools_dict)} tools from MCP server: {server_id} (in-process)")
724
741