remdb 0.3.219__tar.gz → 0.3.221__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 (776) hide show
  1. remdb-0.3.221/.kreuzberg/mime/939a167803029f56.msgpack +1 -0
  2. {remdb-0.3.219 → remdb-0.3.221}/PKG-INFO +1 -1
  3. {remdb-0.3.219 → remdb-0.3.221}/pyproject.toml +1 -1
  4. {remdb-0.3.219 → remdb-0.3.221}/src/rem/agentic/mcp/tool_wrapper.py +2 -2
  5. {remdb-0.3.219 → remdb-0.3.221}/src/rem/agentic/providers/pydantic_ai.py +1 -1
  6. {remdb-0.3.219 → remdb-0.3.221}/src/rem/agentic/schema.py +2 -2
  7. {remdb-0.3.219 → remdb-0.3.221}/src/rem/api/mcp_router/tools.py +42 -23
  8. {remdb-0.3.219 → remdb-0.3.221}/src/rem/api/routers/chat/streaming.py +4 -45
  9. {remdb-0.3.219 → remdb-0.3.221}/src/rem/schemas/agents/rem.yaml +1 -1
  10. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_agent_delegation_streaming.py +4 -1
  11. remdb-0.3.221/tests/integration/test_ask_agent_streaming.py +38 -0
  12. {remdb-0.3.219 → remdb-0.3.221}/tests/unit/test_resource_tools.py +5 -5
  13. remdb-0.3.219/tests/integration/test_ask_agent_streaming.py +0 -279
  14. {remdb-0.3.219 → remdb-0.3.221}/.claude/archive/PUBLISH.md +0 -0
  15. {remdb-0.3.219 → remdb-0.3.221}/.claude/archive/QUICKSTART.md +0 -0
  16. {remdb-0.3.219 → remdb-0.3.221}/.claude/archive/publish.sh +0 -0
  17. {remdb-0.3.219 → remdb-0.3.221}/.claude/settings.local.json +0 -0
  18. {remdb-0.3.219 → remdb-0.3.221}/.dockerignore +0 -0
  19. {remdb-0.3.219 → remdb-0.3.221}/.env.example +0 -0
  20. {remdb-0.3.219 → remdb-0.3.221}/.experiments/README.md +0 -0
  21. {remdb-0.3.219 → remdb-0.3.221}/.experiments/RUN_ON_CLUSTER.md +0 -0
  22. {remdb-0.3.219 → remdb-0.3.221}/.experiments/TESTING_GUIDE.md +0 -0
  23. {remdb-0.3.219 → remdb-0.3.221}/.experiments/test-phoenix-integration.sh +0 -0
  24. {remdb-0.3.219 → remdb-0.3.221}/.githooks/pre-commit +0 -0
  25. {remdb-0.3.219 → remdb-0.3.221}/.githooks/pre-push +0 -0
  26. {remdb-0.3.219 → remdb-0.3.221}/.gitignore +0 -0
  27. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/039976f3b4dc7549.msgpack +0 -0
  28. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/045e65492b634d11.msgpack +0 -0
  29. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/07f5cd0e3fb1d287.msgpack +0 -0
  30. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/08f4ae339838b804.msgpack +0 -0
  31. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/0a64e58ae1289686.msgpack +0 -0
  32. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/0b34bcd318001ead.msgpack +0 -0
  33. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/0da06e67dd284834.msgpack +0 -0
  34. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/0e200bfe2ea523f2.msgpack +0 -0
  35. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/10b1925cb6007390.msgpack +0 -0
  36. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/11c55125d2be1895.msgpack +0 -0
  37. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/12dd62bbe8ee9b6a.msgpack +0 -0
  38. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/18f78825b8e302a8.msgpack +0 -0
  39. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/19a7ff44501eb3f9.msgpack +0 -0
  40. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/1c9cec1b6f266e8d.msgpack +0 -0
  41. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/1db0e7d4ac2443af.msgpack +0 -0
  42. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/1f32d592b118d944.msgpack +0 -0
  43. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/20db05a60f4c6ce3.msgpack +0 -0
  44. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/220746359cef9884.msgpack +0 -0
  45. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/2279f944d9ee9966.msgpack +0 -0
  46. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/23c2221c537a5fc7.msgpack +0 -0
  47. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/24034098fd444b39.msgpack +0 -0
  48. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/245d4933e8c1b195.msgpack +0 -0
  49. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/2470f3a5e2d1953b.msgpack +0 -0
  50. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/24acc2df261ae549.msgpack +0 -0
  51. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/256e0b513c55383d.msgpack +0 -0
  52. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/26a8ed0cdfc0ccab.msgpack +0 -0
  53. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/28e3c2bf25dfc659.msgpack +0 -0
  54. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/295a37ef869b0a49.msgpack +0 -0
  55. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/2a6f58009e01ad65.msgpack +0 -0
  56. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/2ab7ae3b2e42644e.msgpack +0 -0
  57. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/2b24548c2f91f8b9.msgpack +0 -0
  58. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/2bb63e6235d19b40.msgpack +0 -0
  59. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/2c74a0f17cde1b0c.msgpack +0 -0
  60. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/2d728912eb223a33.msgpack +0 -0
  61. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/2de80149b410a676.msgpack +0 -0
  62. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/2e1001cbed04103c.msgpack +0 -0
  63. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/32d99ccf71d10a38.msgpack +0 -0
  64. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/333c03f53d37ed0e.msgpack +0 -0
  65. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/3353ae12a176a9bd.msgpack +0 -0
  66. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/34f1cfc7a58e8b0c.msgpack +0 -0
  67. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/3a11309ab5c2f4f1.msgpack +0 -0
  68. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/3c5bd974fb83b573.msgpack +0 -0
  69. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/3ca9da43dd834bca.msgpack +0 -0
  70. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/3e9db2b8a87873c7.msgpack +0 -0
  71. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/3ff1b430e0b510d5.msgpack +0 -0
  72. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/4035607526c8600d.msgpack +0 -0
  73. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/40f0415d564cb996.msgpack +0 -0
  74. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/4388f8ee095c9ed8.msgpack +0 -0
  75. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/439f422b7f8dc467.msgpack +0 -0
  76. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/452c56ffd625931f.msgpack +0 -0
  77. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/454e06d91c1f7da3.msgpack +0 -0
  78. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/45ee850e300157c8.msgpack +0 -0
  79. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/45f79b5f90a07f0e.msgpack +0 -0
  80. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/487e56b12d123968.msgpack +0 -0
  81. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/49be62bf170de12a.msgpack +0 -0
  82. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/4b3e165ec4ba87d0.msgpack +0 -0
  83. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/505ff13d9ac8f006.msgpack +0 -0
  84. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/51e81cbe7899e310.msgpack +0 -0
  85. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/537dea93b57ffce5.msgpack +0 -0
  86. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/56a9f1cd9ec05384.msgpack +0 -0
  87. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/56bf449feab17e6d.msgpack +0 -0
  88. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/57ab5fe18c74538b.msgpack +0 -0
  89. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/5a11f436d88e89cd.msgpack +0 -0
  90. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/5b10dca1c6db6714.msgpack +0 -0
  91. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/5bcfea3bfc53067c.msgpack +0 -0
  92. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/5eb63bbe412735a4.msgpack +0 -0
  93. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/5ebca8549bb3ff2b.msgpack +0 -0
  94. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/5fef074c57dd118f.msgpack +0 -0
  95. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/60f343229f836ab6.msgpack +0 -0
  96. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/6153f83bf3713b32.msgpack +0 -0
  97. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/6488134e7b6dd403.msgpack +0 -0
  98. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/68e7b00767be2e16.msgpack +0 -0
  99. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/6afac5499ef0a938.msgpack +0 -0
  100. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/6bd93d4fd4cc3893.msgpack +0 -0
  101. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/6defbba8bfc76983.msgpack +0 -0
  102. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/6e37f5165f71513b.msgpack +0 -0
  103. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/6e6c3d4ef7ca1300.msgpack +0 -0
  104. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/6f9130d5f4db8b28.msgpack +0 -0
  105. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/6fc0d79c16c59de5.msgpack +0 -0
  106. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/774b8c209528323e.msgpack +0 -0
  107. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/78c509bc3a9d93c4.msgpack +0 -0
  108. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/798017037907ab5f.msgpack +0 -0
  109. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/7a4fd9fd84ae6899.msgpack +0 -0
  110. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/7b094993adee6e1a.msgpack +0 -0
  111. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/7b3e640c001c4894.msgpack +0 -0
  112. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/7c3ad418912e7c09.msgpack +0 -0
  113. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/7f630276be2a1503.msgpack +0 -0
  114. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/80fd68e8a4ac6556.msgpack +0 -0
  115. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/819aabcfdf1334af.msgpack +0 -0
  116. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/81ea65c652232174.msgpack +0 -0
  117. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/8225fe0751545bd9.msgpack +0 -0
  118. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/84c4f70ba7616566.msgpack +0 -0
  119. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/856e8ba75c4d220e.msgpack +0 -0
  120. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/8cace0ec228b43d6.msgpack +0 -0
  121. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/8d1ecc30d7d58b41.msgpack +0 -0
  122. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/8e2e4ab7c05925fa.msgpack +0 -0
  123. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/8e89a980bc3b92d8.msgpack +0 -0
  124. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/8f6a9b01f15883f5.msgpack +0 -0
  125. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/9091b9d61e026046.msgpack +0 -0
  126. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/927a028cf723c70d.msgpack +0 -0
  127. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/94bda8f2cabc1358.msgpack +0 -0
  128. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/95313ccec52beb53.msgpack +0 -0
  129. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/954fee40bb61432b.msgpack +0 -0
  130. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/9592cc24f2bf0d77.msgpack +0 -0
  131. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/967396ed95832197.msgpack +0 -0
  132. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/9804f3b02bf98e83.msgpack +0 -0
  133. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/9936890e55f094f3.msgpack +0 -0
  134. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/99405cab6cc35283.msgpack +0 -0
  135. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/99e3da57a007bc59.msgpack +0 -0
  136. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/99f1579d6a6790ad.msgpack +0 -0
  137. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/9a6b60a4833997e2.msgpack +0 -0
  138. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/9c265a028ee05977.msgpack +0 -0
  139. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/9f02e484a5feb3af.msgpack +0 -0
  140. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/9fd81ffc0b3282f8.msgpack +0 -0
  141. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/a0d60cff1e5950a6.msgpack +0 -0
  142. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/a1da34b0466f625e.msgpack +0 -0
  143. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/a2bcfb3e4cf75d71.msgpack +0 -0
  144. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/a3fd1a45a0ef02f1.msgpack +0 -0
  145. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/a72acced3b5f0c28.msgpack +0 -0
  146. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/a78fa3051259d29c.msgpack +0 -0
  147. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/a964045be65be2d2.msgpack +0 -0
  148. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/ac4f98ccc34fc6c0.msgpack +0 -0
  149. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/ae8bc0c15954a96a.msgpack +0 -0
  150. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/af05b5754cd245b5.msgpack +0 -0
  151. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/af28c894e94dc85c.msgpack +0 -0
  152. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/b0a26c1396c336b2.msgpack +0 -0
  153. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/b2b5204d4dfab9dc.msgpack +0 -0
  154. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/b2f8df0bdc713008.msgpack +0 -0
  155. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/b361fc308a3b9ab1.msgpack +0 -0
  156. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/b374846290238cd1.msgpack +0 -0
  157. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/b4b163b746d0aa53.msgpack +0 -0
  158. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/b68845f6e8da9be3.msgpack +0 -0
  159. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/b7e677bf8412e9bd.msgpack +0 -0
  160. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/b99ba32d31caa65e.msgpack +0 -0
  161. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/bc02d7c24ec8eccc.msgpack +0 -0
  162. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/bc1a967be3c37e18.msgpack +0 -0
  163. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/bc89d1801e46fb3c.msgpack +0 -0
  164. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/bce873a224061155.msgpack +0 -0
  165. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/bdb1282b79539c3a.msgpack +0 -0
  166. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/bea4de84b22aebbc.msgpack +0 -0
  167. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/c1f16f2de51197de.msgpack +0 -0
  168. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/c5f723dcb1ff4b6f.msgpack +0 -0
  169. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/c6ca46f28d7798dd.msgpack +0 -0
  170. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/c6e2f4ede9282c2f.msgpack +0 -0
  171. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/c761de11e901384a.msgpack +0 -0
  172. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/c99399d1889fa84c.msgpack +0 -0
  173. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/c9fd297a955f2355.msgpack +0 -0
  174. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/ca9a80b78b7aa22c.msgpack +0 -0
  175. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/cb9503b8979b185d.msgpack +0 -0
  176. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/cbc6cfb0a51ab6bb.msgpack +0 -0
  177. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/cc3bda1ed2e95150.msgpack +0 -0
  178. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/ceb98745ab5dbe70.msgpack +0 -0
  179. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/d1df948b17e4d9fc.msgpack +0 -0
  180. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/d1e1e212112ab926.msgpack +0 -0
  181. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/d4b766742cf2328a.msgpack +0 -0
  182. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/d93262cc2f01da93.msgpack +0 -0
  183. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/d977ad06778acf8d.msgpack +0 -0
  184. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/da9376a352a900b8.msgpack +0 -0
  185. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/db2816895dd01979.msgpack +0 -0
  186. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/db3a782c367dbe28.msgpack +0 -0
  187. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/db825a17acae232c.msgpack +0 -0
  188. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/dc96bd8d8ad04ee4.msgpack +0 -0
  189. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/dd1562878ff3c0f5.msgpack +0 -0
  190. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/de117be85702ebbc.msgpack +0 -0
  191. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/e3aafc52b94d322c.msgpack +0 -0
  192. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/e53a6e77d7808ee8.msgpack +0 -0
  193. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/e7dc452a2aae9b10.msgpack +0 -0
  194. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/e8a4b78d213a80ec.msgpack +0 -0
  195. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/ebf2fcb04221173e.msgpack +0 -0
  196. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/ebf527595602c7cc.msgpack +0 -0
  197. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/ec70e75eec5d6198.msgpack +0 -0
  198. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/ed6a8410124b956b.msgpack +0 -0
  199. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/f0fa2893c7713bc6.msgpack +0 -0
  200. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/f1801152a72fbdf0.msgpack +0 -0
  201. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/f6624f69041cc763.msgpack +0 -0
  202. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/f6fe984552a62891.msgpack +0 -0
  203. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/f81bbef279fc5018.msgpack +0 -0
  204. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/f975369ecf8cfe1b.msgpack +0 -0
  205. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/mime/fd21c48c0c429b77.msgpack +0 -0
  206. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/0354796dc060829e.msgpack +0 -0
  207. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/039f9af1f7851836.msgpack +0 -0
  208. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/05e117af5b509bae.msgpack +0 -0
  209. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/0bc34e3949fbef01.msgpack +0 -0
  210. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/0ce495589c7221d3.msgpack +0 -0
  211. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/0dd1cda742544db1.msgpack +0 -0
  212. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/0eba31912f25f3eb.msgpack +0 -0
  213. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/0f2703145ac02172.msgpack +0 -0
  214. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/0fa09530ccf28805.msgpack +0 -0
  215. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/0fd8e540615171e8.msgpack +0 -0
  216. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/101ff2c4997376a9.msgpack +0 -0
  217. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/12c490c06def9488.msgpack +0 -0
  218. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/18257c152bba13a6.msgpack +0 -0
  219. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/1d4a6a418d2b6a64.msgpack +0 -0
  220. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/1e61d3c782893a54.msgpack +0 -0
  221. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/1fc92f87c93d4fd9.msgpack +0 -0
  222. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/2c9de54bccd13e11.msgpack +0 -0
  223. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/2f3ea5c1badef128.msgpack +0 -0
  224. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/32aa8c660cf91963.msgpack +0 -0
  225. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/35111034d5ad26a6.msgpack +0 -0
  226. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/352eb0c7f720c196.msgpack +0 -0
  227. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/3a2e224daffb8e3d.msgpack +0 -0
  228. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/3ee772a67521e170.msgpack +0 -0
  229. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/401e93fa320273da.msgpack +0 -0
  230. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/40d9b4294628036d.msgpack +0 -0
  231. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/44592db880e5ec3f.msgpack +0 -0
  232. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/45870b434cfe0c85.msgpack +0 -0
  233. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/458943c95381e6de.msgpack +0 -0
  234. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/4ca27bb3cae67ad6.msgpack +0 -0
  235. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/4e0d19bea7253cc8.msgpack +0 -0
  236. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/4f02317672f3198b.msgpack +0 -0
  237. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/56a98d6dbd85ebed.msgpack +0 -0
  238. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/5d6b31c824d8741e.msgpack +0 -0
  239. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/5f75509e9ed27170.msgpack +0 -0
  240. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/5fcfe11a675bac8b.msgpack +0 -0
  241. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/61b8b2fc9077f91a.msgpack +0 -0
  242. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/642c92672daf5c43.msgpack +0 -0
  243. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/655ff32e6cd550bc.msgpack +0 -0
  244. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/65bc24178c843052.msgpack +0 -0
  245. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/66cd62510980471d.msgpack +0 -0
  246. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/681c1dd84a2bdf26.msgpack +0 -0
  247. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/6838fe47e511b2b8.msgpack +0 -0
  248. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/6a609539ed167213.msgpack +0 -0
  249. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/74b6b71e76efb9c9.msgpack +0 -0
  250. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/75e719c76477d44f.msgpack +0 -0
  251. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/77e0e879c2c95195.msgpack +0 -0
  252. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/7a15ef0ba4aa5660.msgpack +0 -0
  253. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/7a9dd710389dde99.msgpack +0 -0
  254. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/7b783286f80ab872.msgpack +0 -0
  255. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/7d1298c12634bc16.msgpack +0 -0
  256. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/7ddf2b8e4c6cb2e3.msgpack +0 -0
  257. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/7fc2229fcb868522.msgpack +0 -0
  258. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/85abdb138905726a.msgpack +0 -0
  259. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/884e41282eb896c5.msgpack +0 -0
  260. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/8a703994c30b19ea.msgpack +0 -0
  261. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/8aca0021ebe63f8e.msgpack +0 -0
  262. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/8bc107890e1ab320.msgpack +0 -0
  263. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/8c1a66ea86c98f76.msgpack +0 -0
  264. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/8dd5ac3207b6ca3b.msgpack +0 -0
  265. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/8f898c00eea3a93b.msgpack +0 -0
  266. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/931cbc8a4cbebf70.msgpack +0 -0
  267. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/932804c1aff4d044.msgpack +0 -0
  268. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/94b151c44f8a3588.msgpack +0 -0
  269. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/94ce2189385c970f.msgpack +0 -0
  270. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/94fa736d741d63be.msgpack +0 -0
  271. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/95bd2009772c07fd.msgpack +0 -0
  272. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/95f748fee80393ef.msgpack +0 -0
  273. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/9b1e26a55ef34ee9.msgpack +0 -0
  274. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/9f3159c9912586db.msgpack +0 -0
  275. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/a17c34748d867e85.msgpack +0 -0
  276. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/a2ca0018b46feabd.msgpack +0 -0
  277. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/a60b9031cf48ebba.msgpack +0 -0
  278. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/a9be790d1f0ae7ec.msgpack +0 -0
  279. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/ac4d6823c4034fe6.msgpack +0 -0
  280. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/ad80625c2fe055e2.msgpack +0 -0
  281. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/b102691e3c3e4cae.msgpack +0 -0
  282. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/b34027c96f8daa30.msgpack +0 -0
  283. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/b639b463e04459db.msgpack +0 -0
  284. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/b7e540f21b7f0271.msgpack +0 -0
  285. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/ba460ba22b61b3ac.msgpack +0 -0
  286. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/ba7499ca4c58ff94.msgpack +0 -0
  287. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/be2d027b571e9344.msgpack +0 -0
  288. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/c1fff30850bb8b6f.msgpack +0 -0
  289. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/c3889a8993fc490d.msgpack +0 -0
  290. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/c51c4fa6e6b83f7e.msgpack +0 -0
  291. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/c57ca30ea53e2d68.msgpack +0 -0
  292. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/c64c433f4452d82a.msgpack +0 -0
  293. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/c91739ca8dcc39ea.msgpack +0 -0
  294. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/c91d5e81eba0d3c9.msgpack +0 -0
  295. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/c9fecad2b9f0357c.msgpack +0 -0
  296. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/cb7fab9ab7b8c520.msgpack +0 -0
  297. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/cbbaeea4c7d24156.msgpack +0 -0
  298. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/cc7dd2a0003c03d8.msgpack +0 -0
  299. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/ce64ddc6701623a7.msgpack +0 -0
  300. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/d19b01ce83c8c71a.msgpack +0 -0
  301. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/d5aae4af1fe94a3a.msgpack +0 -0
  302. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/d5c47dfe60be1592.msgpack +0 -0
  303. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/d7eef627315eeab2.msgpack +0 -0
  304. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/d81cb4d0b47db4ae.msgpack +0 -0
  305. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/deed4c82c27e2b5d.msgpack +0 -0
  306. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/df1c0ed33adf634d.msgpack +0 -0
  307. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/e1c2af52b798715b.msgpack +0 -0
  308. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/e249b7de89e07bbc.msgpack +0 -0
  309. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/e6b6c0b80707ee08.msgpack +0 -0
  310. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/e74d1c6e8e950e20.msgpack +0 -0
  311. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/e9d2da361090c228.msgpack +0 -0
  312. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/ec8c114b8a360379.msgpack +0 -0
  313. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/f1772556a9442724.msgpack +0 -0
  314. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/f4753f23f51fe441.msgpack +0 -0
  315. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/f52c654a914ee356.msgpack +0 -0
  316. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/f6187d9353655ff5.msgpack +0 -0
  317. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/f766aa4cfdca2770.msgpack +0 -0
  318. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/fabcc3a4db082252.msgpack +0 -0
  319. {remdb-0.3.219 → remdb-0.3.221}/.kreuzberg/tables/fec2d3d5372c2bcc.msgpack +0 -0
  320. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/Activate.ps1 +0 -0
  321. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/activate +0 -0
  322. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/activate-global-python-argcomplete +0 -0
  323. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/activate.csh +0 -0
  324. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/activate.fish +0 -0
  325. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/alembic +0 -0
  326. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/arize-phoenix +0 -0
  327. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/cyclopts +0 -0
  328. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/distro +0 -0
  329. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/docutils +0 -0
  330. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/dotenv +0 -0
  331. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/email_validator +0 -0
  332. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/f2py +0 -0
  333. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/fastapi +0 -0
  334. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/fastavro +0 -0
  335. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/fastmcp +0 -0
  336. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/genai-prices +0 -0
  337. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/get_gprof +0 -0
  338. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/get_objgraph +0 -0
  339. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/griffe +0 -0
  340. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/hf +0 -0
  341. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/httpx +0 -0
  342. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/hypercorn +0 -0
  343. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/inv +0 -0
  344. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/invoke +0 -0
  345. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/jp.py +0 -0
  346. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/jsonpath_ng +0 -0
  347. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/jsonschema +0 -0
  348. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/keyring +0 -0
  349. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/kreuzberg +0 -0
  350. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/logfire +0 -0
  351. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/mako-render +0 -0
  352. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/markdown-it +0 -0
  353. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/mcp +0 -0
  354. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/mpire-dashboard +0 -0
  355. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/normalizer +0 -0
  356. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/numpy-config +0 -0
  357. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/openai +0 -0
  358. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/opentelemetry-bootstrap +0 -0
  359. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/opentelemetry-instrument +0 -0
  360. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/pai +0 -0
  361. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/phoenix +0 -0
  362. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/pip +0 -0
  363. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/pip3 +0 -0
  364. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/pip3.12 +0 -0
  365. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/pygmentize +0 -0
  366. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/pyrsa-decrypt +0 -0
  367. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/pyrsa-encrypt +0 -0
  368. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/pyrsa-keygen +0 -0
  369. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/pyrsa-priv2pub +0 -0
  370. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/pyrsa-sign +0 -0
  371. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/pyrsa-verify +0 -0
  372. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/pystache +0 -0
  373. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/pystache-test +0 -0
  374. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/python +0 -0
  375. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/python-argcomplete-check-easy-install-script +0 -0
  376. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/python3 +0 -0
  377. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/python3.12 +0 -0
  378. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/register-python-argcomplete +0 -0
  379. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/rem +0 -0
  380. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/rst2html +0 -0
  381. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/rst2html4 +0 -0
  382. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/rst2html5 +0 -0
  383. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/rst2latex +0 -0
  384. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/rst2man +0 -0
  385. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/rst2odt +0 -0
  386. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/rst2pseudoxml +0 -0
  387. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/rst2s5 +0 -0
  388. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/rst2xetex +0 -0
  389. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/rst2xml +0 -0
  390. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/strawberry +0 -0
  391. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/tiny-agents +0 -0
  392. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/tqdm +0 -0
  393. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/undill +0 -0
  394. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/uvicorn +0 -0
  395. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/watchfiles +0 -0
  396. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/bin/websockets +0 -0
  397. {remdb-0.3.219 → remdb-0.3.221}/.venv-test/pyvenv.cfg +0 -0
  398. {remdb-0.3.219 → remdb-0.3.221}/Dockerfile +0 -0
  399. {remdb-0.3.219 → remdb-0.3.221}/README.md +0 -0
  400. {remdb-0.3.219 → remdb-0.3.221}/Tiltfile +0 -0
  401. {remdb-0.3.219 → remdb-0.3.221}/alembic/README.md +0 -0
  402. {remdb-0.3.219 → remdb-0.3.221}/alembic/env.py +0 -0
  403. {remdb-0.3.219 → remdb-0.3.221}/alembic/script.py.mako +0 -0
  404. {remdb-0.3.219 → remdb-0.3.221}/alembic.ini +0 -0
  405. {remdb-0.3.219 → remdb-0.3.221}/dev-setup.sh +0 -0
  406. {remdb-0.3.219 → remdb-0.3.221}/docker-compose.prebuilt.yml +0 -0
  407. {remdb-0.3.219 → remdb-0.3.221}/docker-compose.test.yml +0 -0
  408. {remdb-0.3.219 → remdb-0.3.221}/docker-compose.yml +0 -0
  409. {remdb-0.3.219 → remdb-0.3.221}/src/rem/__init__.py +0 -0
  410. {remdb-0.3.219 → remdb-0.3.221}/src/rem/agentic/README.md +0 -0
  411. {remdb-0.3.219 → remdb-0.3.221}/src/rem/agentic/__init__.py +0 -0
  412. {remdb-0.3.219 → remdb-0.3.221}/src/rem/agentic/agents/README.md +0 -0
  413. {remdb-0.3.219 → remdb-0.3.221}/src/rem/agentic/agents/__init__.py +0 -0
  414. {remdb-0.3.219 → remdb-0.3.221}/src/rem/agentic/agents/agent_manager.py +0 -0
  415. {remdb-0.3.219 → remdb-0.3.221}/src/rem/agentic/agents/sse_simulator.py +0 -0
  416. {remdb-0.3.219 → remdb-0.3.221}/src/rem/agentic/context.py +0 -0
  417. {remdb-0.3.219 → remdb-0.3.221}/src/rem/agentic/context_builder.py +0 -0
  418. {remdb-0.3.219 → remdb-0.3.221}/src/rem/agentic/llm_provider_models.py +0 -0
  419. {remdb-0.3.219 → remdb-0.3.221}/src/rem/agentic/mcp/__init__.py +0 -0
  420. {remdb-0.3.219 → remdb-0.3.221}/src/rem/agentic/otel/__init__.py +0 -0
  421. {remdb-0.3.219 → remdb-0.3.221}/src/rem/agentic/otel/setup.py +0 -0
  422. {remdb-0.3.219 → remdb-0.3.221}/src/rem/agentic/providers/phoenix.py +0 -0
  423. {remdb-0.3.219 → remdb-0.3.221}/src/rem/agentic/query.py +0 -0
  424. {remdb-0.3.219 → remdb-0.3.221}/src/rem/agentic/query_helper.py +0 -0
  425. {remdb-0.3.219 → remdb-0.3.221}/src/rem/agentic/serialization.py +0 -0
  426. {remdb-0.3.219 → remdb-0.3.221}/src/rem/agentic/tools/__init__.py +0 -0
  427. {remdb-0.3.219 → remdb-0.3.221}/src/rem/agentic/tools/rem_tools.py +0 -0
  428. {remdb-0.3.219 → remdb-0.3.221}/src/rem/api/README.md +0 -0
  429. {remdb-0.3.219 → remdb-0.3.221}/src/rem/api/deps.py +0 -0
  430. {remdb-0.3.219 → remdb-0.3.221}/src/rem/api/main.py +0 -0
  431. {remdb-0.3.219 → remdb-0.3.221}/src/rem/api/mcp_router/prompts.py +0 -0
  432. {remdb-0.3.219 → remdb-0.3.221}/src/rem/api/mcp_router/resources.py +0 -0
  433. {remdb-0.3.219 → remdb-0.3.221}/src/rem/api/mcp_router/server.py +0 -0
  434. {remdb-0.3.219 → remdb-0.3.221}/src/rem/api/middleware/tracking.py +0 -0
  435. {remdb-0.3.219 → remdb-0.3.221}/src/rem/api/routers/admin.py +0 -0
  436. {remdb-0.3.219 → remdb-0.3.221}/src/rem/api/routers/auth.py +0 -0
  437. {remdb-0.3.219 → remdb-0.3.221}/src/rem/api/routers/chat/__init__.py +0 -0
  438. {remdb-0.3.219 → remdb-0.3.221}/src/rem/api/routers/chat/completions.py +0 -0
  439. {remdb-0.3.219 → remdb-0.3.221}/src/rem/api/routers/chat/json_utils.py +0 -0
  440. {remdb-0.3.219 → remdb-0.3.221}/src/rem/api/routers/chat/models.py +0 -0
  441. {remdb-0.3.219 → remdb-0.3.221}/src/rem/api/routers/chat/otel_utils.py +0 -0
  442. {remdb-0.3.219 → remdb-0.3.221}/src/rem/api/routers/chat/sse_events.py +0 -0
  443. {remdb-0.3.219 → remdb-0.3.221}/src/rem/api/routers/dev.py +0 -0
  444. {remdb-0.3.219 → remdb-0.3.221}/src/rem/api/routers/feedback.py +0 -0
  445. {remdb-0.3.219 → remdb-0.3.221}/src/rem/api/routers/messages.py +0 -0
  446. {remdb-0.3.219 → remdb-0.3.221}/src/rem/api/routers/models.py +0 -0
  447. {remdb-0.3.219 → remdb-0.3.221}/src/rem/api/routers/query.py +0 -0
  448. {remdb-0.3.219 → remdb-0.3.221}/src/rem/api/routers/shared_sessions.py +0 -0
  449. {remdb-0.3.219 → remdb-0.3.221}/src/rem/auth/README.md +0 -0
  450. {remdb-0.3.219 → remdb-0.3.221}/src/rem/auth/__init__.py +0 -0
  451. {remdb-0.3.219 → remdb-0.3.221}/src/rem/auth/jwt.py +0 -0
  452. {remdb-0.3.219 → remdb-0.3.221}/src/rem/auth/middleware.py +0 -0
  453. {remdb-0.3.219 → remdb-0.3.221}/src/rem/auth/providers/__init__.py +0 -0
  454. {remdb-0.3.219 → remdb-0.3.221}/src/rem/auth/providers/base.py +0 -0
  455. {remdb-0.3.219 → remdb-0.3.221}/src/rem/auth/providers/email.py +0 -0
  456. {remdb-0.3.219 → remdb-0.3.221}/src/rem/auth/providers/google.py +0 -0
  457. {remdb-0.3.219 → remdb-0.3.221}/src/rem/auth/providers/microsoft.py +0 -0
  458. {remdb-0.3.219 → remdb-0.3.221}/src/rem/cli/README.md +0 -0
  459. {remdb-0.3.219 → remdb-0.3.221}/src/rem/cli/__init__.py +0 -0
  460. {remdb-0.3.219 → remdb-0.3.221}/src/rem/cli/commands/README.md +0 -0
  461. {remdb-0.3.219 → remdb-0.3.221}/src/rem/cli/commands/__init__.py +0 -0
  462. {remdb-0.3.219 → remdb-0.3.221}/src/rem/cli/commands/ask.py +0 -0
  463. {remdb-0.3.219 → remdb-0.3.221}/src/rem/cli/commands/cluster.py +0 -0
  464. {remdb-0.3.219 → remdb-0.3.221}/src/rem/cli/commands/configure.py +0 -0
  465. {remdb-0.3.219 → remdb-0.3.221}/src/rem/cli/commands/db.py +0 -0
  466. {remdb-0.3.219 → remdb-0.3.221}/src/rem/cli/commands/dreaming.py +0 -0
  467. {remdb-0.3.219 → remdb-0.3.221}/src/rem/cli/commands/experiments.py +0 -0
  468. {remdb-0.3.219 → remdb-0.3.221}/src/rem/cli/commands/mcp.py +0 -0
  469. {remdb-0.3.219 → remdb-0.3.221}/src/rem/cli/commands/process.py +0 -0
  470. {remdb-0.3.219 → remdb-0.3.221}/src/rem/cli/commands/scaffold.py +0 -0
  471. {remdb-0.3.219 → remdb-0.3.221}/src/rem/cli/commands/schema.py +0 -0
  472. {remdb-0.3.219 → remdb-0.3.221}/src/rem/cli/commands/serve.py +0 -0
  473. {remdb-0.3.219 → remdb-0.3.221}/src/rem/cli/commands/session.py +0 -0
  474. {remdb-0.3.219 → remdb-0.3.221}/src/rem/cli/dreaming.py +0 -0
  475. {remdb-0.3.219 → remdb-0.3.221}/src/rem/cli/main.py +0 -0
  476. {remdb-0.3.219 → remdb-0.3.221}/src/rem/config.py +0 -0
  477. {remdb-0.3.219 → remdb-0.3.221}/src/rem/mcp_server.py +0 -0
  478. {remdb-0.3.219 → remdb-0.3.221}/src/rem/models/core/__init__.py +0 -0
  479. {remdb-0.3.219 → remdb-0.3.221}/src/rem/models/core/core_model.py +0 -0
  480. {remdb-0.3.219 → remdb-0.3.221}/src/rem/models/core/engram.py +0 -0
  481. {remdb-0.3.219 → remdb-0.3.221}/src/rem/models/core/experiment.py +0 -0
  482. {remdb-0.3.219 → remdb-0.3.221}/src/rem/models/core/inline_edge.py +0 -0
  483. {remdb-0.3.219 → remdb-0.3.221}/src/rem/models/core/rem_query.py +0 -0
  484. {remdb-0.3.219 → remdb-0.3.221}/src/rem/models/entities/__init__.py +0 -0
  485. {remdb-0.3.219 → remdb-0.3.221}/src/rem/models/entities/domain_resource.py +0 -0
  486. {remdb-0.3.219 → remdb-0.3.221}/src/rem/models/entities/feedback.py +0 -0
  487. {remdb-0.3.219 → remdb-0.3.221}/src/rem/models/entities/file.py +0 -0
  488. {remdb-0.3.219 → remdb-0.3.221}/src/rem/models/entities/image_resource.py +0 -0
  489. {remdb-0.3.219 → remdb-0.3.221}/src/rem/models/entities/message.py +0 -0
  490. {remdb-0.3.219 → remdb-0.3.221}/src/rem/models/entities/moment.py +0 -0
  491. {remdb-0.3.219 → remdb-0.3.221}/src/rem/models/entities/ontology.py +0 -0
  492. {remdb-0.3.219 → remdb-0.3.221}/src/rem/models/entities/ontology_config.py +0 -0
  493. {remdb-0.3.219 → remdb-0.3.221}/src/rem/models/entities/resource.py +0 -0
  494. {remdb-0.3.219 → remdb-0.3.221}/src/rem/models/entities/schema.py +0 -0
  495. {remdb-0.3.219 → remdb-0.3.221}/src/rem/models/entities/session.py +0 -0
  496. {remdb-0.3.219 → remdb-0.3.221}/src/rem/models/entities/shared_session.py +0 -0
  497. {remdb-0.3.219 → remdb-0.3.221}/src/rem/models/entities/subscriber.py +0 -0
  498. {remdb-0.3.219 → remdb-0.3.221}/src/rem/models/entities/user.py +0 -0
  499. {remdb-0.3.219 → remdb-0.3.221}/src/rem/py.typed +0 -0
  500. {remdb-0.3.219 → remdb-0.3.221}/src/rem/registry.py +0 -0
  501. {remdb-0.3.219 → remdb-0.3.221}/src/rem/schemas/README.md +0 -0
  502. {remdb-0.3.219 → remdb-0.3.221}/src/rem/schemas/__init__.py +0 -0
  503. {remdb-0.3.219 → remdb-0.3.221}/src/rem/schemas/agents/README.md +0 -0
  504. {remdb-0.3.219 → remdb-0.3.221}/src/rem/schemas/agents/core/agent-builder.yaml +0 -0
  505. {remdb-0.3.219 → remdb-0.3.221}/src/rem/schemas/agents/core/moment-builder.yaml +0 -0
  506. {remdb-0.3.219 → remdb-0.3.221}/src/rem/schemas/agents/core/rem-query-agent.yaml +0 -0
  507. {remdb-0.3.219 → remdb-0.3.221}/src/rem/schemas/agents/core/resource-affinity-assessor.yaml +0 -0
  508. {remdb-0.3.219 → remdb-0.3.221}/src/rem/schemas/agents/core/simple-assistant.yaml +0 -0
  509. {remdb-0.3.219 → remdb-0.3.221}/src/rem/schemas/agents/core/user-profile-builder.yaml +0 -0
  510. {remdb-0.3.219 → remdb-0.3.221}/src/rem/schemas/agents/examples/contract-analyzer.yaml +0 -0
  511. {remdb-0.3.219 → remdb-0.3.221}/src/rem/schemas/agents/examples/contract-extractor.yaml +0 -0
  512. {remdb-0.3.219 → remdb-0.3.221}/src/rem/schemas/agents/examples/cv-parser.yaml +0 -0
  513. {remdb-0.3.219 → remdb-0.3.221}/src/rem/schemas/agents/examples/hello-world.yaml +0 -0
  514. {remdb-0.3.219 → remdb-0.3.221}/src/rem/schemas/agents/examples/query.yaml +0 -0
  515. {remdb-0.3.219 → remdb-0.3.221}/src/rem/schemas/agents/examples/simple.yaml +0 -0
  516. {remdb-0.3.219 → remdb-0.3.221}/src/rem/schemas/agents/examples/test.yaml +0 -0
  517. {remdb-0.3.219 → remdb-0.3.221}/src/rem/schemas/evaluators/hello-world/default.yaml +0 -0
  518. {remdb-0.3.219 → remdb-0.3.221}/src/rem/schemas/evaluators/rem/faithfulness.yaml +0 -0
  519. {remdb-0.3.219 → remdb-0.3.221}/src/rem/schemas/evaluators/rem/lookup-correctness.yaml +0 -0
  520. {remdb-0.3.219 → remdb-0.3.221}/src/rem/schemas/evaluators/rem/retrieval-precision.yaml +0 -0
  521. {remdb-0.3.219 → remdb-0.3.221}/src/rem/schemas/evaluators/rem/retrieval-recall.yaml +0 -0
  522. {remdb-0.3.219 → remdb-0.3.221}/src/rem/schemas/evaluators/rem/search-correctness.yaml +0 -0
  523. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/__init__.py +0 -0
  524. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/audio/INTEGRATION.md +0 -0
  525. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/audio/README.md +0 -0
  526. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/audio/__init__.py +0 -0
  527. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/audio/chunker.py +0 -0
  528. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/audio/transcriber.py +0 -0
  529. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/content/README.md +0 -0
  530. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/content/__init__.py +0 -0
  531. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/content/providers.py +0 -0
  532. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/content/service.py +0 -0
  533. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/dreaming/README.md +0 -0
  534. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/dreaming/__init__.py +0 -0
  535. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/dreaming/affinity_service.py +0 -0
  536. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/dreaming/moment_service.py +0 -0
  537. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/dreaming/ontology_service.py +0 -0
  538. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/dreaming/user_model_service.py +0 -0
  539. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/dreaming/utils.py +0 -0
  540. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/email/__init__.py +0 -0
  541. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/email/service.py +0 -0
  542. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/email/templates.py +0 -0
  543. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/embeddings/__init__.py +0 -0
  544. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/embeddings/api.py +0 -0
  545. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/embeddings/worker.py +0 -0
  546. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/fs/README.md +0 -0
  547. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/fs/__init__.py +0 -0
  548. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/fs/examples.py +0 -0
  549. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/fs/examples_paths.py +0 -0
  550. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/fs/git_provider.py +0 -0
  551. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/fs/local_provider.py +0 -0
  552. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/fs/parsing-hooks-examples.md +0 -0
  553. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/fs/paths.py +0 -0
  554. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/fs/provider.py +0 -0
  555. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/fs/s3_provider.py +0 -0
  556. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/fs/service.py +0 -0
  557. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/git/README.md +0 -0
  558. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/git/__init__.py +0 -0
  559. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/git/service.py +0 -0
  560. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/phoenix/EXPERIMENT_DESIGN.md +0 -0
  561. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/phoenix/README.md +0 -0
  562. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/phoenix/__init__.py +0 -0
  563. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/phoenix/client.py +0 -0
  564. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/phoenix/config.py +0 -0
  565. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/phoenix/prompt_labels.py +0 -0
  566. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/postgres/README.md +0 -0
  567. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/postgres/__init__.py +0 -0
  568. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/postgres/diff_service.py +0 -0
  569. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/postgres/migration_service.py +0 -0
  570. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/postgres/programmable_diff_service.py +0 -0
  571. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/postgres/pydantic_to_sqlalchemy.py +0 -0
  572. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/postgres/register_type.py +0 -0
  573. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/postgres/repository.py +0 -0
  574. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/postgres/schema_generator.py +0 -0
  575. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/postgres/service.py +0 -0
  576. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/postgres/sql_builder.py +0 -0
  577. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/rate_limit.py +0 -0
  578. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/rem/README.md +0 -0
  579. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/rem/__init__.py +0 -0
  580. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/rem/exceptions.py +0 -0
  581. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/rem/executor.py +0 -0
  582. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/rem/parser.py +0 -0
  583. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/rem/queries.py +0 -0
  584. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/rem/query.py +0 -0
  585. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/rem/service.py +0 -0
  586. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/session/README.md +0 -0
  587. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/session/__init__.py +0 -0
  588. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/session/compression.py +0 -0
  589. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/session/pydantic_messages.py +0 -0
  590. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/session/reload.py +0 -0
  591. {remdb-0.3.219 → remdb-0.3.221}/src/rem/services/user_service.py +0 -0
  592. {remdb-0.3.219 → remdb-0.3.221}/src/rem/settings.py +0 -0
  593. {remdb-0.3.219 → remdb-0.3.221}/src/rem/sql/background_indexes.sql +0 -0
  594. {remdb-0.3.219 → remdb-0.3.221}/src/rem/sql/migrations/001_install.sql +0 -0
  595. {remdb-0.3.219 → remdb-0.3.221}/src/rem/sql/migrations/002_install_models.sql +0 -0
  596. {remdb-0.3.219 → remdb-0.3.221}/src/rem/sql/migrations/003_optional_extensions.sql +0 -0
  597. {remdb-0.3.219 → remdb-0.3.221}/src/rem/sql/migrations/004_cache_system.sql +0 -0
  598. {remdb-0.3.219 → remdb-0.3.221}/src/rem/sql/migrations/005_schema_update.sql +0 -0
  599. {remdb-0.3.219 → remdb-0.3.221}/src/rem/sql/migrations/migrate_session_id_to_uuid.sql +0 -0
  600. {remdb-0.3.219 → remdb-0.3.221}/src/rem/utils/AGENTIC_CHUNKING.md +0 -0
  601. {remdb-0.3.219 → remdb-0.3.221}/src/rem/utils/README.md +0 -0
  602. {remdb-0.3.219 → remdb-0.3.221}/src/rem/utils/__init__.py +0 -0
  603. {remdb-0.3.219 → remdb-0.3.221}/src/rem/utils/agentic_chunking.py +0 -0
  604. {remdb-0.3.219 → remdb-0.3.221}/src/rem/utils/batch_ops.py +0 -0
  605. {remdb-0.3.219 → remdb-0.3.221}/src/rem/utils/chunking.py +0 -0
  606. {remdb-0.3.219 → remdb-0.3.221}/src/rem/utils/clip_embeddings.py +0 -0
  607. {remdb-0.3.219 → remdb-0.3.221}/src/rem/utils/constants.py +0 -0
  608. {remdb-0.3.219 → remdb-0.3.221}/src/rem/utils/date_utils.py +0 -0
  609. {remdb-0.3.219 → remdb-0.3.221}/src/rem/utils/dict_utils.py +0 -0
  610. {remdb-0.3.219 → remdb-0.3.221}/src/rem/utils/embeddings.py +0 -0
  611. {remdb-0.3.219 → remdb-0.3.221}/src/rem/utils/examples/embeddings_example.py +0 -0
  612. {remdb-0.3.219 → remdb-0.3.221}/src/rem/utils/examples/sql_types_example.py +0 -0
  613. {remdb-0.3.219 → remdb-0.3.221}/src/rem/utils/files.py +0 -0
  614. {remdb-0.3.219 → remdb-0.3.221}/src/rem/utils/markdown.py +0 -0
  615. {remdb-0.3.219 → remdb-0.3.221}/src/rem/utils/mime_types.py +0 -0
  616. {remdb-0.3.219 → remdb-0.3.221}/src/rem/utils/model_helpers.py +0 -0
  617. {remdb-0.3.219 → remdb-0.3.221}/src/rem/utils/schema_loader.py +0 -0
  618. {remdb-0.3.219 → remdb-0.3.221}/src/rem/utils/sql_paths.py +0 -0
  619. {remdb-0.3.219 → remdb-0.3.221}/src/rem/utils/sql_types.py +0 -0
  620. {remdb-0.3.219 → remdb-0.3.221}/src/rem/utils/user_id.py +0 -0
  621. {remdb-0.3.219 → remdb-0.3.221}/src/rem/utils/vision.py +0 -0
  622. {remdb-0.3.219 → remdb-0.3.221}/src/rem/workers/README.md +0 -0
  623. {remdb-0.3.219 → remdb-0.3.221}/src/rem/workers/__init__.py +0 -0
  624. {remdb-0.3.219 → remdb-0.3.221}/src/rem/workers/db_listener.py +0 -0
  625. {remdb-0.3.219 → remdb-0.3.221}/src/rem/workers/db_maintainer.py +0 -0
  626. {remdb-0.3.219 → remdb-0.3.221}/src/rem/workers/dreaming.py +0 -0
  627. {remdb-0.3.219 → remdb-0.3.221}/src/rem/workers/engram_processor.py +0 -0
  628. {remdb-0.3.219 → remdb-0.3.221}/src/rem/workers/sqs_file_processor.py +0 -0
  629. {remdb-0.3.219 → remdb-0.3.221}/src/rem/workers/unlogged_maintainer.py +0 -0
  630. {remdb-0.3.219 → remdb-0.3.221}/test_resources.py +0 -0
  631. {remdb-0.3.219 → remdb-0.3.221}/tests/README.md +0 -0
  632. {remdb-0.3.219 → remdb-0.3.221}/tests/__init__.py +0 -0
  633. {remdb-0.3.219 → remdb-0.3.221}/tests/conftest.py +0 -0
  634. {remdb-0.3.219 → remdb-0.3.221}/tests/data/README.md +0 -0
  635. {remdb-0.3.219 → remdb-0.3.221}/tests/data/audio/README.md +0 -0
  636. {remdb-0.3.219 → remdb-0.3.221}/tests/data/audio/SUMMARY.md +0 -0
  637. {remdb-0.3.219 → remdb-0.3.221}/tests/data/audio/generate_test_audio.py +0 -0
  638. {remdb-0.3.219 → remdb-0.3.221}/tests/data/audio/test_hq_30s.wav +0 -0
  639. {remdb-0.3.219 → remdb-0.3.221}/tests/data/audio/test_long_90s.wav +0 -0
  640. {remdb-0.3.219 → remdb-0.3.221}/tests/data/audio/test_medium_10s.wav +0 -0
  641. {remdb-0.3.219 → remdb-0.3.221}/tests/data/audio/test_short_3s.wav +0 -0
  642. {remdb-0.3.219 → remdb-0.3.221}/tests/data/audio/test_standard_30s.wav +0 -0
  643. {remdb-0.3.219 → remdb-0.3.221}/tests/data/content-examples/pdf/README.md +0 -0
  644. {remdb-0.3.219 → remdb-0.3.221}/tests/data/content-examples/pdf/annual_financial_report.pdf +0 -0
  645. {remdb-0.3.219 → remdb-0.3.221}/tests/data/content-examples/pdf/consulting_agreement.pdf +0 -0
  646. {remdb-0.3.219 → remdb-0.3.221}/tests/data/content-examples/pdf/nda_agreement.pdf +0 -0
  647. {remdb-0.3.219 → remdb-0.3.221}/tests/data/content-examples/pdf/sample_business_plan.pdf +0 -0
  648. {remdb-0.3.219 → remdb-0.3.221}/tests/data/content-examples/pdf/sample_invoice.pdf +0 -0
  649. {remdb-0.3.219 → remdb-0.3.221}/tests/data/content-examples/pdf/sample_research_paper.pdf +0 -0
  650. {remdb-0.3.219 → remdb-0.3.221}/tests/data/content-examples/pdf/sample_resume.pdf +0 -0
  651. {remdb-0.3.219 → remdb-0.3.221}/tests/data/content-examples/pdf/service_contract.pdf +0 -0
  652. {remdb-0.3.219 → remdb-0.3.221}/tests/data/content-examples/test.md +0 -0
  653. {remdb-0.3.219 → remdb-0.3.221}/tests/data/docs/CODE_REVIEW_FIXES.md +0 -0
  654. {remdb-0.3.219 → remdb-0.3.221}/tests/data/docs/TEST_RESULTS.md +0 -0
  655. {remdb-0.3.219 → remdb-0.3.221}/tests/data/docs/cli_verification.md +0 -0
  656. {remdb-0.3.219 → remdb-0.3.221}/tests/data/docs/database-design.md +0 -0
  657. {remdb-0.3.219 → remdb-0.3.221}/tests/data/docs/deep-learning-guide.md +0 -0
  658. {remdb-0.3.219 → remdb-0.3.221}/tests/data/docs/ml-overview.md +0 -0
  659. {remdb-0.3.219 → remdb-0.3.221}/tests/data/docs/python-best-practices.md +0 -0
  660. {remdb-0.3.219 → remdb-0.3.221}/tests/data/docs/test_summary.md +0 -0
  661. {remdb-0.3.219 → remdb-0.3.221}/tests/data/engrams/test-conversation.yaml +0 -0
  662. {remdb-0.3.219 → remdb-0.3.221}/tests/data/engrams/test-diary-entry.yaml +0 -0
  663. {remdb-0.3.219 → remdb-0.3.221}/tests/data/engrams/test-meeting-notes.yaml +0 -0
  664. {remdb-0.3.219 → remdb-0.3.221}/tests/data/engrams/test-observation.yaml +0 -0
  665. {remdb-0.3.219 → remdb-0.3.221}/tests/data/engrams/test-project-note.yaml +0 -0
  666. {remdb-0.3.219 → remdb-0.3.221}/tests/data/graph_seed.yaml +0 -0
  667. {remdb-0.3.219 → remdb-0.3.221}/tests/data/sample-architecture-doc.txt +0 -0
  668. {remdb-0.3.219 → remdb-0.3.221}/tests/data/sample_conversations.yaml +0 -0
  669. {remdb-0.3.219 → remdb-0.3.221}/tests/data/schemas/agents/query_agent.yaml +0 -0
  670. {remdb-0.3.219 → remdb-0.3.221}/tests/data/schemas/agents/summarization_agent.yaml +0 -0
  671. {remdb-0.3.219 → remdb-0.3.221}/tests/data/schemas/agents/test-cv-parser.yaml +0 -0
  672. {remdb-0.3.219 → remdb-0.3.221}/tests/data/schemas/agents/test_orchestrator.yaml +0 -0
  673. {remdb-0.3.219 → remdb-0.3.221}/tests/data/schemas/agents/test_responder.yaml +0 -0
  674. {remdb-0.3.219 → remdb-0.3.221}/tests/data/schemas/evaluators/accuracy_evaluator.yaml +0 -0
  675. {remdb-0.3.219 → remdb-0.3.221}/tests/data/seed/001_sample_data.yaml +0 -0
  676. {remdb-0.3.219 → remdb-0.3.221}/tests/data/seed/001_sample_data.yaml.bak +0 -0
  677. {remdb-0.3.219 → remdb-0.3.221}/tests/data/seed/README.md +0 -0
  678. {remdb-0.3.219 → remdb-0.3.221}/tests/data/seed/files/documents/api_spec.md +0 -0
  679. {remdb-0.3.219 → remdb-0.3.221}/tests/data/seed/files/documents/meeting_notes.txt +0 -0
  680. {remdb-0.3.219 → remdb-0.3.221}/tests/data/seed/files/engrams/personal_reflection.yaml +0 -0
  681. {remdb-0.3.219 → remdb-0.3.221}/tests/data/seed/files/engrams/product_idea_voice_memo.yaml +0 -0
  682. {remdb-0.3.219 → remdb-0.3.221}/tests/data/seed/files/engrams/team_standup_meeting.yaml +0 -0
  683. {remdb-0.3.219 → remdb-0.3.221}/tests/data/seed/resources.yaml +0 -0
  684. {remdb-0.3.219 → remdb-0.3.221}/tests/data/seed/shared_sessions_demo.yaml +0 -0
  685. {remdb-0.3.219 → remdb-0.3.221}/tests/data/seed/test-user-data.yaml +0 -0
  686. {remdb-0.3.219 → remdb-0.3.221}/tests/data/seed/test-user-data.yaml.bak +0 -0
  687. {remdb-0.3.219 → remdb-0.3.221}/tests/data/seed/users.yaml +0 -0
  688. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/README.md +0 -0
  689. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/conftest.py +0 -0
  690. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/helpers/README.md +0 -0
  691. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/helpers/__init__.py +0 -0
  692. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/helpers/seed_data.py +0 -0
  693. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/phoenix/run_complete_experiment.py +0 -0
  694. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/phoenix/run_hello_world_experiment.py +0 -0
  695. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/phoenix/test_connection.py +0 -0
  696. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/quick_delegation_test.py +0 -0
  697. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/rem-agent-eval-questions.yaml +0 -0
  698. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/rem-query-agent-tests.yaml +0 -0
  699. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/sample_data/dreaming/load_sample_data.py +0 -0
  700. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/sample_data/dreaming/resources/api_design_discussion.md +0 -0
  701. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/sample_data/dreaming/resources/database_migration_plan.md +0 -0
  702. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/sample_data/dreaming/resources/morning_standup_notes.md +0 -0
  703. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/sample_data/dreaming/resources/production_incident_postmortem.md +0 -0
  704. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/sample_data/dreaming/resources/quarterly_reflection.md +0 -0
  705. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/services/test_content_providers.py +0 -0
  706. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/services/test_schema_provider.py +0 -0
  707. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_actual_streaming_save.py +0 -0
  708. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_agent_end_to_end.py +0 -0
  709. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_agent_tool_invocation.py +0 -0
  710. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_agent_with_tools.py +0 -0
  711. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_api_endpoints.py +0 -0
  712. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_batch_upsert.py +0 -0
  713. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_completions_with_sessions.py +0 -0
  714. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_content_ingest_workflow.py +0 -0
  715. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_contract_extractor.py +0 -0
  716. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_dreaming_moments.py +0 -0
  717. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_dynamic_agents.py +0 -0
  718. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_early_stream_close.py +0 -0
  719. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_email_auth.py +0 -0
  720. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_embedding_worker.py +0 -0
  721. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_embeddings_e2e.py +0 -0
  722. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_git_provider.py +0 -0
  723. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_graph_traversal.py +0 -0
  724. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_mcp_server_loading.py +0 -0
  725. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_mcp_tool_loading.py +0 -0
  726. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_mcp_tools.py +0 -0
  727. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_mcp_tools_layer.py +0 -0
  728. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_messages_sessions_access.py +0 -0
  729. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_multi_agent.py +0 -0
  730. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_natural_language_to_rem.py +0 -0
  731. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_nested_agent_save.py +0 -0
  732. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_rem_query.py +0 -0
  733. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_rem_query_agent.py +0 -0
  734. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_rem_query_agent_structured.py +0 -0
  735. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_rem_query_evolution.py +0 -0
  736. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_rem_query_functions.py +0 -0
  737. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_rem_service_layer.py +0 -0
  738. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_schema_introspection.py +0 -0
  739. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_session_management.py +0 -0
  740. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_streaming_response.py +0 -0
  741. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_streaming_save.py +0 -0
  742. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_text_response_extraction.py +0 -0
  743. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_unlogged_maintainer.py +0 -0
  744. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_user_lookup_by_email.py +0 -0
  745. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_user_session_reloads.py +0 -0
  746. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_verify_setup.py +0 -0
  747. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/test_yaml_export.py +0 -0
  748. {remdb-0.3.219 → remdb-0.3.221}/tests/integration/validate_rem_agent_schema.py +0 -0
  749. {remdb-0.3.219 → remdb-0.3.221}/tests/scripts/__init__.py +0 -0
  750. {remdb-0.3.219 → remdb-0.3.221}/tests/scripts/demo_session_recovery.py +0 -0
  751. {remdb-0.3.219 → remdb-0.3.221}/tests/scripts/seed_sample_sessions.py +0 -0
  752. {remdb-0.3.219 → remdb-0.3.221}/tests/scripts/simple_session_demo.py +0 -0
  753. {remdb-0.3.219 → remdb-0.3.221}/tests/test_agent_manager.py +0 -0
  754. {remdb-0.3.219 → remdb-0.3.221}/tests/unit/__init__.py +0 -0
  755. {remdb-0.3.219 → remdb-0.3.221}/tests/unit/agentic/__init__.py +0 -0
  756. {remdb-0.3.219 → remdb-0.3.221}/tests/unit/agentic/agents/__init__.py +0 -0
  757. {remdb-0.3.219 → remdb-0.3.221}/tests/unit/agentic/agents/test_sse_simulator.py +0 -0
  758. {remdb-0.3.219 → remdb-0.3.221}/tests/unit/agentic/providers/__init__.py +0 -0
  759. {remdb-0.3.219 → remdb-0.3.221}/tests/unit/agentic/providers/test_pydantic_ai.py +0 -0
  760. {remdb-0.3.219 → remdb-0.3.221}/tests/unit/agentic/test_schema.py +0 -0
  761. {remdb-0.3.219 → remdb-0.3.221}/tests/unit/agentic/test_schema_integration.py +0 -0
  762. {remdb-0.3.219 → remdb-0.3.221}/tests/unit/agentic/test_tool_description_suffix.py +0 -0
  763. {remdb-0.3.219 → remdb-0.3.221}/tests/unit/api/__init__.py +0 -0
  764. {remdb-0.3.219 → remdb-0.3.221}/tests/unit/api/test_feedback.py +0 -0
  765. {remdb-0.3.219 → remdb-0.3.221}/tests/unit/api/test_models_endpoint.py +0 -0
  766. {remdb-0.3.219 → remdb-0.3.221}/tests/unit/api/test_sessions_messages.py +0 -0
  767. {remdb-0.3.219 → remdb-0.3.221}/tests/unit/api/test_sse_events.py +0 -0
  768. {remdb-0.3.219 → remdb-0.3.221}/tests/unit/conftest.py +0 -0
  769. {remdb-0.3.219 → remdb-0.3.221}/tests/unit/services/test_session_compression.py +0 -0
  770. {remdb-0.3.219 → remdb-0.3.221}/tests/unit/test_admin_internal.py +0 -0
  771. {remdb-0.3.219 → remdb-0.3.221}/tests/unit/test_api_key_auth.py +0 -0
  772. {remdb-0.3.219 → remdb-0.3.221}/tests/unit/test_registry.py +0 -0
  773. {remdb-0.3.219 → remdb-0.3.221}/tests/unit/test_session_cli.py +0 -0
  774. {remdb-0.3.219 → remdb-0.3.221}/tests/unit/test_sql_security.py +0 -0
  775. {remdb-0.3.219 → remdb-0.3.221}/tests/unit/utils/test_agentic_chunking.py +0 -0
  776. {remdb-0.3.219 → remdb-0.3.221}/walkthrough.md +0 -0
@@ -0,0 +1 @@
1
+ ��type�str�data�application/pdf�cached_at�A�Ua���H
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: remdb
3
- Version: 0.3.219
3
+ Version: 0.3.221
4
4
  Summary: Resources Entities Moments - Bio-inspired memory system for agentic AI workloads
5
5
  Project-URL: Homepage, https://github.com/Percolation-Labs/reminiscent
6
6
  Project-URL: Documentation, https://github.com/Percolation-Labs/reminiscent/blob/main/README.md
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "remdb"
3
- version = "0.3.219"
3
+ version = "0.3.221"
4
4
  description = "Resources Entities Moments - Bio-inspired memory system for agentic AI workloads"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -116,7 +116,7 @@ def create_resource_tool(uri: str, usage: str = "", mcp_server: Any = None) -> T
116
116
  the artificial MCP distinction between tools and resources.
117
117
 
118
118
  Supports both:
119
- - Concrete URIs: "rem://schemas" -> tool with no parameters
119
+ - Concrete URIs: "rem://agents" -> tool with no parameters
120
120
  - Template URIs: "patient-profile://field/{field_key}" -> tool with field_key parameter
121
121
 
122
122
  Args:
@@ -131,7 +131,7 @@ def create_resource_tool(uri: str, usage: str = "", mcp_server: Any = None) -> T
131
131
 
132
132
  Example:
133
133
  # Concrete URI -> no-param tool
134
- tool = create_resource_tool("rem://schemas", "List all agent schemas")
134
+ tool = create_resource_tool("rem://agents", "List all agent schemas")
135
135
 
136
136
  # Template URI -> parameterized tool
137
137
  tool = create_resource_tool("patient-profile://field/{field_key}", "Get field definition", mcp_server=mcp)
@@ -732,7 +732,7 @@ async def create_agent(
732
732
  # the artificial MCP distinction between tools and resources
733
733
  #
734
734
  # Supports both concrete and template URIs:
735
- # - Concrete: "rem://schemas" -> no-param tool
735
+ # - Concrete: "rem://agents" -> no-param tool
736
736
  # - Template: "patient-profile://field/{field_key}" -> tool with field_key param
737
737
  from ..mcp.tool_wrapper import create_resource_tool
738
738
 
@@ -79,7 +79,7 @@ class MCPResourceReference(BaseModel):
79
79
 
80
80
  Example (exact URI):
81
81
  {
82
- "uri": "rem://schemas",
82
+ "uri": "rem://agents",
83
83
  "name": "Agent Schemas",
84
84
  "description": "List all available agent schemas"
85
85
  }
@@ -96,7 +96,7 @@ class MCPResourceReference(BaseModel):
96
96
  default=None,
97
97
  description=(
98
98
  "Exact resource URI or URI with query parameters. "
99
- "Examples: 'rem://schemas', 'rem://resources?category=drug.*'"
99
+ "Examples: 'rem://agents', 'rem://resources?category=drug.*'"
100
100
  )
101
101
  )
102
102
 
@@ -594,15 +594,18 @@ async def read_resource(uri: str) -> dict[str, Any]:
594
594
  **Available Resources:**
595
595
 
596
596
  Agent Schemas:
597
- • rem://schemas - List all agent schemas
598
- • rem://schema/{name} - Get specific schema definition
599
- • rem://schema/{name}/{version} - Get specific version
597
+ • rem://agents - List all available agent schemas
598
+ • rem://agents/{agent_name} - Get specific agent schema
599
+
600
+ Documentation:
601
+ • rem://schema/entities - Entity schemas (Resource, Message, User, File, Moment)
602
+ • rem://schema/query-types - REM query type documentation
600
603
 
601
604
  System Status:
602
605
  • rem://status - System health and statistics
603
606
 
604
607
  Args:
605
- uri: Resource URI (e.g., "rem://schemas", "rem://schema/ask_rem")
608
+ uri: Resource URI (e.g., "rem://agents", "rem://agents/ask_rem")
606
609
 
607
610
  Returns:
608
611
  Dict with:
@@ -611,14 +614,11 @@ async def read_resource(uri: str) -> dict[str, Any]:
611
614
  - data: Resource data (format depends on resource type)
612
615
 
613
616
  Examples:
614
- # List all schemas
615
- read_resource(uri="rem://schemas")
616
-
617
- # Get specific schema
618
- read_resource(uri="rem://schema/ask_rem")
617
+ # List all agents
618
+ read_resource(uri="rem://agents")
619
619
 
620
- # Get schema version
621
- read_resource(uri="rem://schema/ask_rem/v1.0.0")
620
+ # Get specific agent
621
+ read_resource(uri="rem://agents/ask_rem")
622
622
 
623
623
  # Check system status
624
624
  read_resource(uri="rem://status")
@@ -1385,8 +1385,10 @@ async def ask_agent(
1385
1385
  logger.info(f"Invoking agent '{agent_name}' with prompt: {prompt[:100]}...")
1386
1386
 
1387
1387
  # Check if we have an event sink for streaming
1388
- event_sink = get_event_sink()
1389
- use_streaming = event_sink is not None
1388
+ push_event = get_event_sink()
1389
+ use_streaming = push_event is not None
1390
+
1391
+ streamed_content = "" # Track if content was streamed
1390
1392
 
1391
1393
  try:
1392
1394
  # Set child context for nested tool calls
@@ -1412,12 +1414,12 @@ async def ask_agent(
1412
1414
  if Agent.is_model_request_node(node):
1413
1415
  async with node.stream(agent_run.ctx) as request_stream:
1414
1416
  async for event in request_stream:
1415
- # Proxy tool call starts
1417
+ # Proxy part starts
1416
1418
  if isinstance(event, PartStartEvent):
1417
1419
  from pydantic_ai.messages import ToolCallPart, TextPart
1418
1420
  if isinstance(event.part, ToolCallPart):
1419
1421
  # Push tool start event to parent
1420
- await push_event({
1422
+ await push_event.put({
1421
1423
  "type": "child_tool_start",
1422
1424
  "agent_name": agent_name,
1423
1425
  "tool_name": event.part.tool_name,
@@ -1427,16 +1429,27 @@ async def ask_agent(
1427
1429
  "tool_name": event.part.tool_name,
1428
1430
  "index": event.index,
1429
1431
  })
1430
- # Accumulate text content (don't push events - let parent relay text_response)
1432
+ elif isinstance(event.part, TextPart):
1433
+ # TextPart may have initial content
1434
+ if event.part.content:
1435
+ accumulated_content.append(event.part.content)
1436
+ await push_event.put({
1437
+ "type": "child_content",
1438
+ "agent_name": agent_name,
1439
+ "content": event.part.content,
1440
+ })
1441
+ # Proxy text content deltas to parent for real-time streaming
1431
1442
  elif isinstance(event, PartDeltaEvent):
1432
1443
  if hasattr(event, 'delta') and hasattr(event.delta, 'content_delta'):
1433
1444
  content = event.delta.content_delta
1434
1445
  if content:
1435
1446
  accumulated_content.append(content)
1436
- # NOTE: We no longer push child_content events here.
1437
- # Instead, the complete response is returned as text_response
1438
- # and the parent agent relays it. This avoids duplicate
1439
- # emissions and keeps the parent in control of streaming.
1447
+ # Push content chunk to parent for streaming
1448
+ await push_event.put({
1449
+ "type": "child_content",
1450
+ "agent_name": agent_name,
1451
+ "content": content,
1452
+ })
1440
1453
 
1441
1454
  elif Agent.is_call_tools_node(node):
1442
1455
  async with node.stream(agent_run.ctx) as tools_stream:
@@ -1444,7 +1457,7 @@ async def ask_agent(
1444
1457
  if isinstance(tool_event, FunctionToolResultEvent):
1445
1458
  result_content = tool_event.result.content if hasattr(tool_event.result, 'content') else tool_event.result
1446
1459
  # Push tool result to parent
1447
- await push_event({
1460
+ await push_event.put({
1448
1461
  "type": "child_tool_result",
1449
1462
  "agent_name": agent_name,
1450
1463
  "result": result_content,
@@ -1482,14 +1495,20 @@ async def ask_agent(
1482
1495
 
1483
1496
  logger.info(f"Agent '{agent_name}' completed successfully")
1484
1497
 
1485
- return {
1498
+ response = {
1486
1499
  "status": "success",
1487
1500
  "output": output,
1488
- "text_response": str(result.output),
1489
1501
  "agent_schema": agent_name,
1490
1502
  "input_text": input_text,
1491
1503
  }
1492
1504
 
1505
+ # Only include text_response if content was NOT streamed
1506
+ # When streaming, child_content events already delivered the content
1507
+ if not use_streaming or not streamed_content:
1508
+ response["text_response"] = str(result.output)
1509
+
1510
+ return response
1511
+
1493
1512
 
1494
1513
  # =============================================================================
1495
1514
  # Test/Debug Tools (for development only)
@@ -169,8 +169,6 @@ async def stream_openai_response(
169
169
  responding_agent: str | None = None
170
170
  # Track pending tool calls with full data for persistence
171
171
  # Maps tool_id -> {"tool_name": str, "tool_id": str, "arguments": dict}
172
- # Track accumulated content for child event streaming
173
- accumulated_content: list[str] = []
174
172
  pending_tool_data: dict[str, dict] = {}
175
173
 
176
174
  # Import context functions for multi-agent support
@@ -468,7 +466,6 @@ async def stream_openai_response(
468
466
  ],
469
467
  )
470
468
  is_first_chunk = False
471
- accumulated_content.append(content)
472
469
  yield f"data: {content_chunk.model_dump_json()}\n\n"
473
470
  elif event_type == "child_tool_result":
474
471
  # Emit child tool completion
@@ -579,48 +576,10 @@ async def stream_openai_response(
579
576
  del pending_tool_data[tool_id]
580
577
 
581
578
  if not is_metadata_event:
582
- # Check for text_response in tool result (multi-agent delegation)
583
- # When an orchestrator delegates via ask_agent, the child agent's
584
- # text_response should be streamed as the parent's assistant content
585
- #
586
- # IMPORTANT: Only emit if we haven't already streamed via event sink!
587
- # Child agents push child_content events during execution, which are
588
- # already emitted above. Don't duplicate by emitting text_response again.
589
- if isinstance(result_content, dict) and result_content.get("text_response"):
590
- text_response = result_content["text_response"]
591
- if text_response and str(text_response).strip():
592
- # Skip if already streamed via child_content events
593
- if accumulated_content:
594
- logger.debug(
595
- f"Skipping text_response from {tool_name} - already streamed "
596
- f"{len(accumulated_content)} chunks via event sink"
597
- )
598
- else:
599
- # No event sink streaming happened - emit the full text_response
600
- text_content = str(text_response)
601
- token_count += len(text_content.split())
602
-
603
- # Emit as streamed content (OpenAI-compatible format)
604
- content_chunk = ChatCompletionStreamResponse(
605
- id=request_id,
606
- created=created_at,
607
- model=model,
608
- choices=[
609
- ChatCompletionStreamChoice(
610
- index=0,
611
- delta=ChatCompletionMessageDelta(
612
- role="assistant" if is_first_chunk else None,
613
- content=text_content,
614
- ),
615
- finish_reason=None,
616
- )
617
- ],
618
- )
619
- is_first_chunk = False
620
- yield f"data: {content_chunk.model_dump_json()}\n\n"
621
- logger.debug(
622
- f"Streamed text_response from {tool_name} ({len(text_content)} chars)"
623
- )
579
+ # NOTE: text_response fallback is DISABLED
580
+ # Child agents now stream content via child_content events (above)
581
+ # which provides real-time streaming. The text_response in tool
582
+ # result would duplicate that content, so we skip it entirely.
624
583
 
625
584
  # Normal tool completion - emit ToolCallEvent
626
585
  # For finalize_intake, send full result dict for frontend
@@ -124,7 +124,7 @@ json_schema_extra:
124
124
 
125
125
  # Explicit resource declarations for reference data
126
126
  resources:
127
- - uri: rem://schemas
127
+ - uri: rem://agents
128
128
  name: Agent Schemas List
129
129
  description: List all available agent schemas in the system
130
130
  - uri: rem://status
@@ -185,7 +185,10 @@ async def test_child_agent_response_is_streamed(session_id):
185
185
  if delta.get("content"):
186
186
  print(f" [{i}] Content: {delta.get('content')[:50]}...")
187
187
  elif "type" in event:
188
- print(f" [{i}] Event type: {event.get('type')}")
188
+ event_type = event.get('type')
189
+ print(f" [{i}] Event type: {event_type}")
190
+ if event_type == "error":
191
+ print(f" ERROR: {event.get('message', event)}")
189
192
 
190
193
  # Verify we got content from the child agent
191
194
  assert content, "No content was streamed"
@@ -0,0 +1,38 @@
1
+ """Minimal test for ask_agent streaming."""
2
+ import asyncio
3
+ import pytest
4
+ from rem.agentic.context import AgentContext, agent_context_scope, set_event_sink
5
+ from rem.api.mcp_router.tools import ask_agent
6
+
7
+
8
+ @pytest.mark.asyncio
9
+ @pytest.mark.llm
10
+ async def test_ask_agent_streams_child_content():
11
+ """ask_agent should push child_content events to the queue."""
12
+ queue: asyncio.Queue = asyncio.Queue()
13
+ ctx = AgentContext(user_id="test", tenant_id="test", session_id="test", default_model="openai:gpt-4o-mini")
14
+
15
+ set_event_sink(queue)
16
+ try:
17
+ with agent_context_scope(ctx):
18
+ result = await ask_agent(agent_name="rem", input_text="Say: hello")
19
+ finally:
20
+ set_event_sink(None)
21
+
22
+ # Collect events
23
+ events = []
24
+ while not queue.empty():
25
+ events.append(await queue.get())
26
+
27
+ print(f"\nEvents: {len(events)}")
28
+ for e in events:
29
+ print(f" {e.get('type')}: {str(e)[:80]}")
30
+ print(f"\nResult: {result}")
31
+
32
+ # Must have child_content events
33
+ content_events = [e for e in events if e.get("type") == "child_content"]
34
+ assert len(content_events) > 0, f"No child_content events! Got: {events}"
35
+
36
+ # text_response should NOT be in result if content was streamed
37
+ if "text_response" in result:
38
+ print(f"\n⚠ text_response present (duplication source): {result['text_response'][:50]}...")
@@ -14,10 +14,10 @@ class TestCreateResourceTool:
14
14
 
15
15
  def test_concrete_uri_creates_no_param_tool(self):
16
16
  """Concrete URIs become tools with no parameters."""
17
- tool = create_resource_tool("rem://schemas", "List all schemas")
17
+ tool = create_resource_tool("rem://agents", "List all agents")
18
18
 
19
- assert tool.name == "get_rem_schemas"
20
- assert "List all schemas" in (tool.description or "")
19
+ assert tool.name == "get_rem_agents"
20
+ assert "List all agents" in (tool.description or "")
21
21
 
22
22
  def test_template_uri_creates_parameterized_tool(self):
23
23
  """Template URIs become tools with extracted parameters."""
@@ -95,12 +95,12 @@ class TestResourceToolExecution:
95
95
  return_value={"schemas": ["agent1", "agent2"]}
96
96
  )
97
97
 
98
- tool = create_resource_tool("rem://schemas", "List schemas")
98
+ tool = create_resource_tool("rem://agents", "List agents")
99
99
 
100
100
  # Get the wrapper function and call it
101
101
  result = await tool.function()
102
102
 
103
- mock_load.assert_called_once_with("rem://schemas")
103
+ mock_load.assert_called_once_with("rem://agents")
104
104
  assert "agent1" in result
105
105
 
106
106
  async def test_template_tool_substitutes_params(self, mocker):
@@ -1,279 +0,0 @@
1
- """
2
- Real end-to-end test for ask_agent streaming at the controller level.
3
-
4
- Tests that when an orchestrator agent delegates to a child via ask_agent:
5
- 1. Child agent events are streamed/bubbled up to the parent
6
- 2. All tool calls are saved to database
7
- 3. Assistant message is saved to database
8
-
9
- NO MOCKING - uses real agents and real database.
10
-
11
- Run with:
12
- POSTGRES__CONNECTION_STRING="postgresql://rem:rem@localhost:5050/rem" \
13
- uv run pytest tests/integration/test_ask_agent_streaming.py -v -s
14
- """
15
-
16
- import asyncio
17
- import json
18
- import uuid
19
- import pytest
20
- from pathlib import Path
21
-
22
- # Mark these tests as requiring LLM calls - they can be skipped in pre-push hooks
23
- # Also mark them as needing isolation due to nested async resource management
24
- pytestmark = [
25
- pytest.mark.llm, # Requires real LLM API calls
26
- pytest.mark.asyncio, # Uses async/await
27
- ]
28
-
29
- from rem.agentic.context import AgentContext
30
- from rem.agentic.providers.pydantic_ai import create_agent
31
- from rem.utils.schema_loader import load_agent_schema
32
- from rem.api.routers.chat.streaming import stream_openai_response_with_save
33
- from rem.services.session import SessionMessageStore
34
- from rem.settings import settings
35
-
36
-
37
- # Path to test agent schemas
38
- TEST_SCHEMAS_DIR = Path(__file__).parent.parent / "data" / "schemas" / "agents"
39
-
40
-
41
- class TestAskAgentStreaming:
42
- """
43
- Real end-to-end tests for ask_agent streaming.
44
-
45
- Uses test_orchestrator (always calls ask_agent) and test_responder (simple responder).
46
- """
47
-
48
- @pytest.fixture
49
- def session_id(self):
50
- return str(uuid.uuid4())
51
-
52
- @pytest.fixture
53
- def user_id(self):
54
- return str(uuid.uuid4())
55
-
56
- @pytest.mark.asyncio
57
- async def test_ask_agent_streams_and_saves(self, session_id, user_id):
58
- """
59
- Test that ask_agent properly streams child content and saves all messages.
60
-
61
- Expected flow:
62
- 1. Orchestrator calls ask_agent(agent_name="rem", input_text=...)
63
- 2. Child agent (rem) responds with text
64
- 3. Child's text is streamed as content chunks
65
- 4. Tool call (ask_agent) is saved to database
66
- 5. Assistant message (child's response) is saved to database
67
- """
68
- if not settings.postgres.enabled:
69
- pytest.skip("Postgres not enabled - set POSTGRES__CONNECTION_STRING")
70
-
71
- # Load the test_orchestrator schema
72
- schema_path = TEST_SCHEMAS_DIR / "test_orchestrator.yaml"
73
- schema = load_agent_schema(str(schema_path))
74
- assert schema is not None, "test_orchestrator schema not found"
75
-
76
- # Use OpenAI model for testing
77
- test_model = "openai:gpt-4.1"
78
-
79
- # Create context
80
- context = AgentContext(
81
- user_id=user_id,
82
- session_id=session_id,
83
- tenant_id=user_id,
84
- default_model=test_model,
85
- )
86
-
87
- # Create agent with OpenAI model
88
- agent = await create_agent(context=context, agent_schema_override=schema, model_override=test_model)
89
-
90
- # Collect streaming output
91
- chunks = []
92
- content_chunks = []
93
- tool_events = []
94
-
95
- # Use OpenAI model for testing (Anthropic has credit issues)
96
- test_model = "openai:gpt-4.1"
97
-
98
- async for chunk in stream_openai_response_with_save(
99
- agent=agent,
100
- prompt="Hello, please delegate this message",
101
- model=test_model,
102
- session_id=session_id,
103
- user_id=user_id,
104
- agent_context=context,
105
- ):
106
- chunks.append(chunk)
107
-
108
- # Parse chunk to categorize
109
- if chunk.startswith("data: ") and not chunk.startswith("data: [DONE]"):
110
- try:
111
- data = json.loads(chunk[6:].strip())
112
- if "choices" in data:
113
- delta = data["choices"][0].get("delta", {})
114
- content = delta.get("content")
115
- if content:
116
- content_chunks.append(content)
117
- except json.JSONDecodeError:
118
- pass
119
- elif chunk.startswith("event: tool_call"):
120
- tool_events.append(chunk)
121
-
122
- # Print results for debugging
123
- print(f"\n=== STREAMING RESULTS ===")
124
- print(f"Total chunks: {len(chunks)}")
125
- print(f"Content chunks: {len(content_chunks)}")
126
- print(f"Tool events: {len(tool_events)}")
127
- print(f"Streamed content: {''.join(content_chunks)[:200]}...")
128
-
129
- # Load saved messages from database
130
- store = SessionMessageStore(user_id=user_id)
131
- messages = await store.load_session_messages(session_id=session_id, user_id=user_id)
132
-
133
- print(f"\n=== SAVED MESSAGES ===")
134
- for msg in messages:
135
- role = msg.get("role", "?")
136
- content = str(msg.get("content", ""))[:80]
137
- tool_name = msg.get("tool_name", "")
138
- print(f" {role}: {content}{'...' if len(str(msg.get('content', ''))) > 80 else ''} {f'[{tool_name}]' if tool_name else ''}")
139
-
140
- # Categorize saved messages
141
- tool_msgs = [m for m in messages if m.get("role") == "tool"]
142
- assistant_msgs = [m for m in messages if m.get("role") == "assistant"]
143
- ask_agent_tools = [m for m in tool_msgs if m.get("tool_name") == "ask_agent"]
144
-
145
- print(f"\n=== SUMMARY ===")
146
- print(f"Tool messages: {len(tool_msgs)}")
147
- print(f"ask_agent tools: {len(ask_agent_tools)}")
148
- print(f"Assistant messages: {len(assistant_msgs)}")
149
-
150
- # ASSERTIONS
151
- # 1. Content should have been streamed
152
- assert len(content_chunks) > 0, "No content was streamed"
153
- streamed_content = "".join(content_chunks)
154
- assert len(streamed_content) > 0, "Streamed content is empty"
155
-
156
- # 2. ask_agent tool call should be saved
157
- assert len(ask_agent_tools) >= 1, f"Expected at least 1 ask_agent tool message, got {len(ask_agent_tools)}"
158
-
159
- # 3. Assistant message should be saved
160
- assert len(assistant_msgs) == 1, f"Expected 1 assistant message, got {len(assistant_msgs)}"
161
-
162
- # 4. Assistant message should contain the streamed content
163
- # Note: Saved content may be compressed/formatted differently
164
- saved_content = assistant_msgs[0].get("content", "")
165
- print(f"\n=== CONTENT COMPARISON ===")
166
- print(f"Streamed length: {len(streamed_content)}")
167
- print(f"Saved length: {len(saved_content)}")
168
- print(f"Streamed first 100: {streamed_content[:100]}...")
169
- print(f"Saved first 100: {saved_content[:100]}...")
170
- # Check that they share common content (may differ due to formatting)
171
- assert len(saved_content) > 0, "Saved content is empty"
172
- # Relaxed check - just verify content is substantial
173
- assert len(saved_content) > 50, f"Saved content too short: {len(saved_content)}"
174
-
175
- print("\n✅ All assertions passed!")
176
-
177
-
178
- @pytest.mark.asyncio
179
- async def test_multi_turn_saves_all_assistant_messages(self, session_id, user_id):
180
- """
181
- Test that multiple turns in the same session each save their own assistant message.
182
-
183
- This catches bugs like accumulated_content not being properly scoped per-turn.
184
- The bug would manifest as: turn 1 works, turn 2+ fails with NameError.
185
-
186
- Expected: N turns -> N assistant messages saved to database.
187
- """
188
- if not settings.postgres.enabled:
189
- pytest.skip("Postgres not enabled - set POSTGRES__CONNECTION_STRING")
190
-
191
- # Use a simple responder agent (no delegation) to isolate multi-turn streaming
192
- schema_path = TEST_SCHEMAS_DIR / "test_responder.yaml"
193
- schema = load_agent_schema(str(schema_path))
194
- assert schema is not None, "test_responder schema not found"
195
-
196
- test_model = "openai:gpt-4.1"
197
-
198
- # Create context
199
- context = AgentContext(
200
- user_id=user_id,
201
- session_id=session_id,
202
- tenant_id=user_id,
203
- default_model=test_model,
204
- )
205
-
206
- # Create agent
207
- agent = await create_agent(context=context, agent_schema_override=schema, model_override=test_model)
208
-
209
- # Run 3 turns - simple conversation
210
- turn_prompts = [
211
- "Hello, how are you?",
212
- "Tell me something interesting",
213
- "Thanks for chatting!",
214
- ]
215
-
216
- for turn_num, prompt in enumerate(turn_prompts, 1):
217
- print(f"\n=== TURN {turn_num}: {prompt[:50]}... ===")
218
-
219
- chunks = []
220
- async for chunk in stream_openai_response_with_save(
221
- agent=agent,
222
- prompt=prompt,
223
- model=test_model,
224
- session_id=session_id,
225
- user_id=user_id,
226
- agent_context=context,
227
- ):
228
- chunks.append(chunk)
229
-
230
- print(f"Turn {turn_num} completed: {len(chunks)} chunks")
231
-
232
- # Verify no errors occurred (would manifest as fewer chunks or exception)
233
- assert len(chunks) > 0, f"Turn {turn_num} produced no chunks"
234
-
235
- # Load saved messages from database
236
- store = SessionMessageStore(user_id=user_id)
237
- messages = await store.load_session_messages(session_id=session_id, user_id=user_id)
238
-
239
- # Categorize saved messages
240
- assistant_msgs = [m for m in messages if m.get("role") == "assistant"]
241
-
242
- print(f"\n=== MULTI-TURN RESULTS ===")
243
- print(f"Total messages: {len(messages)}")
244
- print(f"Assistant messages: {len(assistant_msgs)}")
245
-
246
- for i, msg in enumerate(assistant_msgs):
247
- content = str(msg.get("content", ""))[:60]
248
- print(f" Assistant {i+1}: {content}...")
249
-
250
- # CRITICAL ASSERTION: Each turn should save an assistant message
251
- assert len(assistant_msgs) == len(turn_prompts), (
252
- f"Expected {len(turn_prompts)} assistant messages for {len(turn_prompts)} turns, "
253
- f"got {len(assistant_msgs)}. This indicates a per-turn scoping bug."
254
- )
255
-
256
- # Verify each assistant message has content
257
- for i, msg in enumerate(assistant_msgs):
258
- content = msg.get("content", "")
259
- assert len(content) > 0, f"Assistant message {i+1} has no content"
260
-
261
- print("\n✅ Multi-turn test passed!")
262
-
263
-
264
- if __name__ == "__main__":
265
- # Run directly for quick testing
266
- async def main():
267
- test = TestAskAgentStreaming()
268
- session_id = str(uuid.uuid4())
269
- user_id = str(uuid.uuid4())
270
-
271
- print("Running test_ask_agent_streams_and_saves...")
272
- await test.test_ask_agent_streams_and_saves(session_id, user_id)
273
-
274
- print("\n" + "="*60)
275
- print("Running test_multi_turn_saves_all_assistant_messages...")
276
- session_id = str(uuid.uuid4()) # Fresh session
277
- await test.test_multi_turn_saves_all_assistant_messages(session_id, user_id)
278
-
279
- asyncio.run(main())
File without changes
File without changes