remdb 0.3.148__tar.gz → 0.3.183__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of remdb might be problematic. Click here for more details.
- remdb-0.3.183/.kreuzberg/mime/0b34bcd318001ead.msgpack +1 -0
- remdb-0.3.183/.kreuzberg/mime/2279f944d9ee9966.msgpack +1 -0
- remdb-0.3.183/.kreuzberg/mime/245d4933e8c1b195.msgpack +1 -0
- remdb-0.3.183/.kreuzberg/mime/256e0b513c55383d.msgpack +1 -0
- remdb-0.3.183/.kreuzberg/mime/333c03f53d37ed0e.msgpack +1 -0
- remdb-0.3.183/.kreuzberg/mime/3a11309ab5c2f4f1.msgpack +1 -0
- remdb-0.3.183/.kreuzberg/mime/5bcfea3bfc53067c.msgpack +1 -0
- remdb-0.3.183/.kreuzberg/mime/7b3e640c001c4894.msgpack +1 -0
- remdb-0.3.183/.kreuzberg/mime/8225fe0751545bd9.msgpack +1 -0
- remdb-0.3.183/.kreuzberg/mime/a1da34b0466f625e.msgpack +1 -0
- remdb-0.3.183/.kreuzberg/mime/ac4f98ccc34fc6c0.msgpack +1 -0
- remdb-0.3.183/.kreuzberg/mime/c1f16f2de51197de.msgpack +1 -0
- {remdb-0.3.148 → remdb-0.3.183}/PKG-INFO +1 -1
- {remdb-0.3.148 → remdb-0.3.183}/pyproject.toml +1 -1
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/agents/__init__.py +16 -0
- remdb-0.3.183/src/rem/agentic/agents/agent_manager.py +311 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/context.py +81 -3
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/context_builder.py +36 -9
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/mcp/tool_wrapper.py +43 -14
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/providers/pydantic_ai.py +76 -34
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/schema.py +4 -3
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/tools/rem_tools.py +11 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/deps.py +3 -5
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/main.py +22 -3
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/mcp_router/resources.py +75 -14
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/mcp_router/server.py +28 -23
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/mcp_router/tools.py +177 -2
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/middleware/tracking.py +5 -5
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/auth.py +195 -8
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/chat/completions.py +5 -3
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/chat/streaming.py +95 -22
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/messages.py +24 -15
- remdb-0.3.183/src/rem/auth/jwt.py +352 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/auth/middleware.py +70 -30
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/auth/providers/email.py +16 -7
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/commands/ask.py +1 -1
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/commands/db.py +147 -66
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/commands/process.py +143 -43
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/entities/__init__.py +4 -0
- remdb-0.3.183/src/rem/models/entities/ontology.py +183 -0
- remdb-0.3.183/src/rem/models/entities/subscriber.py +175 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/entities/user.py +1 -0
- remdb-0.3.183/src/rem/schemas/agents/core/agent-builder.yaml +235 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/content/service.py +4 -3
- remdb-0.3.183/src/rem/services/email/service.py +522 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/embeddings/worker.py +26 -12
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/postgres/__init__.py +17 -1
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/postgres/diff_service.py +57 -5
- remdb-0.3.183/src/rem/services/postgres/programmable_diff_service.py +635 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/postgres/register_type.py +8 -8
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/postgres/repository.py +37 -25
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/postgres/schema_generator.py +5 -5
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/postgres/sql_builder.py +6 -5
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/session/compression.py +113 -50
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/session/reload.py +14 -7
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/user_service.py +41 -9
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/settings.py +108 -1
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/sql/background_indexes.sql +5 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/sql/migrations/001_install.sql +61 -5
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/sql/migrations/002_install_models.sql +126 -108
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/sql/migrations/004_cache_system.sql +7 -275
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/model_helpers.py +101 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/schema_loader.py +45 -7
- remdb-0.3.183/test_ontologies.jsonl +3 -0
- remdb-0.3.183/test_resources.py +29 -0
- remdb-0.3.183/tests/integration/test_email_auth.py +191 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_embedding_worker.py +19 -5
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_embeddings_e2e.py +6 -3
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_graph_traversal.py +10 -9
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_schema_introspection.py +1 -1
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_session_management.py +3 -3
- remdb-0.3.183/tests/integration/test_user_lookup_by_email.py +269 -0
- remdb-0.3.183/tests/test_agent_manager.py +175 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/unit/agentic/test_schema.py +1 -1
- remdb-0.3.183/tests/unit/services/test_session_compression.py +273 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/unit/test_resource_tools.py +3 -3
- remdb-0.3.148/src/rem/models/entities/ontology.py +0 -191
- remdb-0.3.148/src/rem/services/email/service.py +0 -399
- remdb-0.3.148/tests/integration/run_rem_agent_eval.py +0 -375
- remdb-0.3.148/tests/integration/test_merge_strategies_demo.py +0 -232
- remdb-0.3.148/tests/integration/test_shared_sessions.py +0 -734
- {remdb-0.3.148 → remdb-0.3.183}/.claude/archive/PUBLISH.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.claude/archive/QUICKSTART.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.claude/archive/publish.sh +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.claude/settings.local.json +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.dockerignore +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.env.example +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.experiments/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.experiments/RUN_ON_CLUSTER.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.experiments/TESTING_GUIDE.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.experiments/test-phoenix-integration.sh +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.gitignore +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/039976f3b4dc7549.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/045e65492b634d11.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/07f5cd0e3fb1d287.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/08f4ae339838b804.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/0a64e58ae1289686.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/0da06e67dd284834.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/0e200bfe2ea523f2.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/10b1925cb6007390.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/11c55125d2be1895.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/12dd62bbe8ee9b6a.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/18f78825b8e302a8.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/19a7ff44501eb3f9.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/1c9cec1b6f266e8d.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/1db0e7d4ac2443af.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/1f32d592b118d944.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/20db05a60f4c6ce3.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/220746359cef9884.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/24034098fd444b39.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/2470f3a5e2d1953b.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/24acc2df261ae549.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/26a8ed0cdfc0ccab.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/28e3c2bf25dfc659.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/295a37ef869b0a49.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/2a6f58009e01ad65.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/2ab7ae3b2e42644e.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/2b24548c2f91f8b9.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/2bb63e6235d19b40.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/2c74a0f17cde1b0c.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/2d728912eb223a33.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/2de80149b410a676.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/2e1001cbed04103c.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/32d99ccf71d10a38.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/3353ae12a176a9bd.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/34f1cfc7a58e8b0c.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/3c5bd974fb83b573.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/3ca9da43dd834bca.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/3e9db2b8a87873c7.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/3ff1b430e0b510d5.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/4035607526c8600d.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/40f0415d564cb996.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/4388f8ee095c9ed8.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/439f422b7f8dc467.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/452c56ffd625931f.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/45ee850e300157c8.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/45f79b5f90a07f0e.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/487e56b12d123968.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/49be62bf170de12a.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/4b3e165ec4ba87d0.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/505ff13d9ac8f006.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/51e81cbe7899e310.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/537dea93b57ffce5.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/56a9f1cd9ec05384.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/56bf449feab17e6d.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/57ab5fe18c74538b.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/5a11f436d88e89cd.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/5b10dca1c6db6714.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/5eb63bbe412735a4.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/5ebca8549bb3ff2b.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/5fef074c57dd118f.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/60f343229f836ab6.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/6153f83bf3713b32.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/6488134e7b6dd403.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/68e7b00767be2e16.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/6afac5499ef0a938.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/6bd93d4fd4cc3893.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/6defbba8bfc76983.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/6e37f5165f71513b.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/6f9130d5f4db8b28.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/6fc0d79c16c59de5.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/774b8c209528323e.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/78c509bc3a9d93c4.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/798017037907ab5f.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/7a4fd9fd84ae6899.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/7b094993adee6e1a.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/7c3ad418912e7c09.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/7f630276be2a1503.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/80fd68e8a4ac6556.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/819aabcfdf1334af.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/81ea65c652232174.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/84c4f70ba7616566.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/856e8ba75c4d220e.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/8cace0ec228b43d6.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/8d1ecc30d7d58b41.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/8e2e4ab7c05925fa.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/8e89a980bc3b92d8.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/8f6a9b01f15883f5.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/9091b9d61e026046.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/927a028cf723c70d.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/94bda8f2cabc1358.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/95313ccec52beb53.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/954fee40bb61432b.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/9592cc24f2bf0d77.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/967396ed95832197.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/9804f3b02bf98e83.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/9936890e55f094f3.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/99405cab6cc35283.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/99e3da57a007bc59.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/99f1579d6a6790ad.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/9c265a028ee05977.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/9f02e484a5feb3af.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/9fd81ffc0b3282f8.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/a0d60cff1e5950a6.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/a2bcfb3e4cf75d71.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/a3fd1a45a0ef02f1.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/a72acced3b5f0c28.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/a78fa3051259d29c.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/a964045be65be2d2.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/ae8bc0c15954a96a.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/af05b5754cd245b5.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/af28c894e94dc85c.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/b0a26c1396c336b2.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/b2b5204d4dfab9dc.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/b2f8df0bdc713008.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/b361fc308a3b9ab1.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/b374846290238cd1.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/b4b163b746d0aa53.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/b68845f6e8da9be3.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/b7e677bf8412e9bd.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/b99ba32d31caa65e.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/bc02d7c24ec8eccc.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/bc1a967be3c37e18.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/bc89d1801e46fb3c.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/bce873a224061155.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/bea4de84b22aebbc.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/c5f723dcb1ff4b6f.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/c6ca46f28d7798dd.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/c6e2f4ede9282c2f.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/c761de11e901384a.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/c99399d1889fa84c.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/c9fd297a955f2355.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/ca9a80b78b7aa22c.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/cb9503b8979b185d.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/cbc6cfb0a51ab6bb.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/cc3bda1ed2e95150.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/ceb98745ab5dbe70.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/d1df948b17e4d9fc.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/d1e1e212112ab926.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/d4b766742cf2328a.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/d93262cc2f01da93.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/d977ad06778acf8d.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/da9376a352a900b8.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/db2816895dd01979.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/db3a782c367dbe28.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/db825a17acae232c.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/dc96bd8d8ad04ee4.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/dd1562878ff3c0f5.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/de117be85702ebbc.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/e3aafc52b94d322c.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/e53a6e77d7808ee8.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/e7dc452a2aae9b10.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/ebf2fcb04221173e.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/ebf527595602c7cc.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/ed6a8410124b956b.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/f1801152a72fbdf0.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/f6fe984552a62891.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/f81bbef279fc5018.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/f975369ecf8cfe1b.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/mime/fd21c48c0c429b77.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/0354796dc060829e.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/039f9af1f7851836.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/05e117af5b509bae.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/0bc34e3949fbef01.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/0ce495589c7221d3.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/0dd1cda742544db1.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/0eba31912f25f3eb.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/0f2703145ac02172.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/0fa09530ccf28805.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/0fd8e540615171e8.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/101ff2c4997376a9.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/12c490c06def9488.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/18257c152bba13a6.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/1d4a6a418d2b6a64.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/1e61d3c782893a54.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/1fc92f87c93d4fd9.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/2c9de54bccd13e11.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/2f3ea5c1badef128.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/32aa8c660cf91963.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/35111034d5ad26a6.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/352eb0c7f720c196.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/3a2e224daffb8e3d.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/3ee772a67521e170.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/401e93fa320273da.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/40d9b4294628036d.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/44592db880e5ec3f.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/45870b434cfe0c85.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/458943c95381e6de.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/4ca27bb3cae67ad6.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/4e0d19bea7253cc8.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/4f02317672f3198b.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/56a98d6dbd85ebed.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/5d6b31c824d8741e.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/5f75509e9ed27170.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/5fcfe11a675bac8b.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/61b8b2fc9077f91a.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/642c92672daf5c43.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/655ff32e6cd550bc.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/65bc24178c843052.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/66cd62510980471d.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/681c1dd84a2bdf26.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/6838fe47e511b2b8.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/6a609539ed167213.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/74b6b71e76efb9c9.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/75e719c76477d44f.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/77e0e879c2c95195.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/7a15ef0ba4aa5660.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/7a9dd710389dde99.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/7b783286f80ab872.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/7d1298c12634bc16.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/7ddf2b8e4c6cb2e3.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/7fc2229fcb868522.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/85abdb138905726a.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/884e41282eb896c5.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/8a703994c30b19ea.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/8aca0021ebe63f8e.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/8bc107890e1ab320.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/8c1a66ea86c98f76.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/8dd5ac3207b6ca3b.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/8f898c00eea3a93b.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/931cbc8a4cbebf70.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/932804c1aff4d044.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/94b151c44f8a3588.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/94ce2189385c970f.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/94fa736d741d63be.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/95bd2009772c07fd.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/95f748fee80393ef.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/9b1e26a55ef34ee9.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/9f3159c9912586db.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/a17c34748d867e85.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/a2ca0018b46feabd.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/a60b9031cf48ebba.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/a9be790d1f0ae7ec.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/ac4d6823c4034fe6.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/ad80625c2fe055e2.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/b102691e3c3e4cae.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/b34027c96f8daa30.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/b639b463e04459db.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/b7e540f21b7f0271.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/ba460ba22b61b3ac.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/ba7499ca4c58ff94.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/be2d027b571e9344.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/c1fff30850bb8b6f.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/c3889a8993fc490d.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/c51c4fa6e6b83f7e.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/c57ca30ea53e2d68.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/c64c433f4452d82a.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/c91739ca8dcc39ea.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/c91d5e81eba0d3c9.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/c9fecad2b9f0357c.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/cb7fab9ab7b8c520.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/cbbaeea4c7d24156.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/cc7dd2a0003c03d8.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/ce64ddc6701623a7.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/d19b01ce83c8c71a.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/d5aae4af1fe94a3a.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/d5c47dfe60be1592.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/d7eef627315eeab2.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/d81cb4d0b47db4ae.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/deed4c82c27e2b5d.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/df1c0ed33adf634d.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/e1c2af52b798715b.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/e249b7de89e07bbc.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/e6b6c0b80707ee08.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/e74d1c6e8e950e20.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/e9d2da361090c228.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/ec8c114b8a360379.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/f1772556a9442724.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/f4753f23f51fe441.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/f52c654a914ee356.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/f6187d9353655ff5.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/f766aa4cfdca2770.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/fabcc3a4db082252.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.kreuzberg/tables/fec2d3d5372c2bcc.msgpack +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/Activate.ps1 +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/activate +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/activate-global-python-argcomplete +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/activate.csh +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/activate.fish +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/alembic +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/arize-phoenix +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/cyclopts +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/distro +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/docutils +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/dotenv +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/email_validator +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/f2py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/fastapi +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/fastavro +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/fastmcp +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/genai-prices +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/get_gprof +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/get_objgraph +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/griffe +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/hf +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/httpx +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/hypercorn +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/inv +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/invoke +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/jp.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/jsonpath_ng +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/jsonschema +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/keyring +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/kreuzberg +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/logfire +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/mako-render +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/markdown-it +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/mcp +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/mpire-dashboard +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/normalizer +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/numpy-config +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/openai +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/opentelemetry-bootstrap +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/opentelemetry-instrument +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/pai +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/phoenix +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/pip +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/pip3 +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/pip3.12 +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/pygmentize +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/pyrsa-decrypt +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/pyrsa-encrypt +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/pyrsa-keygen +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/pyrsa-priv2pub +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/pyrsa-sign +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/pyrsa-verify +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/pystache +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/pystache-test +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/python +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/python-argcomplete-check-easy-install-script +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/python3 +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/python3.12 +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/register-python-argcomplete +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/rem +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/rst2html +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/rst2html4 +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/rst2html5 +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/rst2latex +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/rst2man +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/rst2odt +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/rst2pseudoxml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/rst2s5 +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/rst2xetex +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/rst2xml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/strawberry +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/tiny-agents +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/tqdm +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/undill +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/uvicorn +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/watchfiles +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/bin/websockets +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/.venv-test/pyvenv.cfg +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/Dockerfile +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/Tiltfile +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/alembic/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/alembic/env.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/alembic/script.py.mako +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/alembic.ini +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/dev-setup.sh +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/docker-compose.prebuilt.yml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/docker-compose.test.yml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/docker-compose.yml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/agents/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/agents/sse_simulator.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/llm_provider_models.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/mcp/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/otel/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/otel/setup.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/providers/phoenix.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/query.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/query_helper.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/serialization.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/agentic/tools/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/mcp_router/prompts.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/admin.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/chat/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/chat/json_utils.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/chat/models.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/chat/otel_utils.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/chat/sse_events.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/dev.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/feedback.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/models.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/query.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/api/routers/shared_sessions.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/auth/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/auth/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/auth/providers/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/auth/providers/base.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/auth/providers/google.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/auth/providers/microsoft.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/commands/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/commands/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/commands/cluster.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/commands/configure.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/commands/dreaming.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/commands/experiments.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/commands/mcp.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/commands/scaffold.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/commands/schema.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/commands/serve.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/commands/session.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/dreaming.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/cli/main.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/config.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/mcp_server.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/core/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/core/core_model.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/core/engram.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/core/experiment.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/core/inline_edge.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/core/rem_query.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/entities/domain_resource.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/entities/feedback.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/entities/file.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/entities/image_resource.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/entities/message.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/entities/moment.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/entities/ontology_config.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/entities/resource.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/entities/schema.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/entities/session.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/models/entities/shared_session.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/py.typed +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/registry.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/agents/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/agents/core/moment-builder.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/agents/core/rem-query-agent.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/agents/core/resource-affinity-assessor.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/agents/core/simple-assistant.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/agents/core/user-profile-builder.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/agents/examples/contract-analyzer.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/agents/examples/contract-extractor.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/agents/examples/cv-parser.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/agents/examples/hello-world.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/agents/examples/query.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/agents/examples/simple.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/agents/examples/test.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/agents/rem.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/evaluators/hello-world/default.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/evaluators/rem/faithfulness.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/evaluators/rem/lookup-correctness.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/evaluators/rem/retrieval-precision.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/evaluators/rem/retrieval-recall.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/schemas/evaluators/rem/search-correctness.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/audio/INTEGRATION.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/audio/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/audio/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/audio/chunker.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/audio/transcriber.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/content/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/content/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/content/providers.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/dreaming/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/dreaming/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/dreaming/affinity_service.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/dreaming/moment_service.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/dreaming/ontology_service.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/dreaming/user_model_service.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/dreaming/utils.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/email/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/email/templates.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/embeddings/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/embeddings/api.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/fs/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/fs/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/fs/examples.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/fs/examples_paths.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/fs/git_provider.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/fs/local_provider.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/fs/parsing-hooks-examples.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/fs/paths.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/fs/provider.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/fs/s3_provider.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/fs/service.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/git/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/git/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/git/service.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/phoenix/EXPERIMENT_DESIGN.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/phoenix/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/phoenix/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/phoenix/client.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/phoenix/config.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/phoenix/prompt_labels.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/postgres/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/postgres/migration_service.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/postgres/pydantic_to_sqlalchemy.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/postgres/service.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/rate_limit.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/rem/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/rem/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/rem/exceptions.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/rem/executor.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/rem/parser.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/rem/queries.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/rem/query.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/rem/service.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/session/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/services/session/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/sql/migrations/003_optional_extensions.sql +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/sql/migrations/005_schema_update.sql +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/AGENTIC_CHUNKING.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/agentic_chunking.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/batch_ops.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/chunking.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/clip_embeddings.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/constants.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/date_utils.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/dict_utils.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/embeddings.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/examples/embeddings_example.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/examples/sql_types_example.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/files.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/markdown.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/mime_types.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/sql_paths.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/sql_types.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/user_id.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/utils/vision.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/workers/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/workers/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/workers/db_listener.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/workers/db_maintainer.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/workers/dreaming.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/workers/engram_processor.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/workers/sqs_file_processor.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/src/rem/workers/unlogged_maintainer.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/conftest.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/audio/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/audio/SUMMARY.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/audio/generate_test_audio.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/audio/test_hq_30s.wav +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/audio/test_long_90s.wav +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/audio/test_medium_10s.wav +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/audio/test_short_3s.wav +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/audio/test_standard_30s.wav +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/content-examples/pdf/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/content-examples/pdf/annual_financial_report.pdf +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/content-examples/pdf/consulting_agreement.pdf +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/content-examples/pdf/nda_agreement.pdf +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/content-examples/pdf/sample_business_plan.pdf +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/content-examples/pdf/sample_invoice.pdf +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/content-examples/pdf/sample_research_paper.pdf +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/content-examples/pdf/sample_resume.pdf +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/content-examples/pdf/service_contract.pdf +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/content-examples/test.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/docs/CODE_REVIEW_FIXES.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/docs/TEST_RESULTS.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/docs/cli_verification.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/docs/database-design.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/docs/deep-learning-guide.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/docs/ml-overview.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/docs/python-best-practices.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/docs/test_summary.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/engrams/test-conversation.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/engrams/test-diary-entry.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/engrams/test-meeting-notes.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/engrams/test-observation.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/engrams/test-project-note.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/graph_seed.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/sample-architecture-doc.txt +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/sample_conversations.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/schemas/agents/query_agent.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/schemas/agents/summarization_agent.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/schemas/agents/test-cv-parser.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/schemas/evaluators/accuracy_evaluator.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/seed/001_sample_data.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/seed/001_sample_data.yaml.bak +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/seed/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/seed/files/documents/api_spec.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/seed/files/documents/meeting_notes.txt +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/seed/files/engrams/personal_reflection.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/seed/files/engrams/product_idea_voice_memo.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/seed/files/engrams/team_standup_meeting.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/seed/resources.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/seed/shared_sessions_demo.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/seed/test-user-data.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/seed/test-user-data.yaml.bak +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/data/seed/users.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/helpers/README.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/helpers/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/helpers/seed_data.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/phoenix/run_complete_experiment.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/phoenix/run_hello_world_experiment.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/phoenix/test_connection.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/rem-agent-eval-questions.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/rem-query-agent-tests.yaml +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/sample_data/dreaming/load_sample_data.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/sample_data/dreaming/resources/api_design_discussion.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/sample_data/dreaming/resources/database_migration_plan.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/sample_data/dreaming/resources/morning_standup_notes.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/sample_data/dreaming/resources/production_incident_postmortem.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/sample_data/dreaming/resources/quarterly_reflection.md +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/services/test_content_providers.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/services/test_schema_provider.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_agent_end_to_end.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_agent_tool_invocation.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_agent_with_tools.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_api_endpoints.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_batch_upsert.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_completions_with_sessions.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_content_ingest_workflow.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_contract_extractor.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_dreaming_moments.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_dynamic_agents.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_git_provider.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_mcp_server_loading.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_mcp_tool_loading.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_mcp_tools.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_mcp_tools_layer.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_natural_language_to_rem.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_rem_query.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_rem_query_agent.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_rem_query_agent_structured.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_rem_query_evolution.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_rem_query_functions.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_rem_service_layer.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_unlogged_maintainer.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_user_session_reloads.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_verify_setup.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/test_yaml_export.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/integration/validate_rem_agent_schema.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/scripts/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/scripts/demo_session_recovery.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/scripts/seed_sample_sessions.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/scripts/simple_session_demo.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/unit/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/unit/agentic/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/unit/agentic/agents/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/unit/agentic/agents/test_sse_simulator.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/unit/agentic/providers/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/unit/agentic/providers/test_pydantic_ai.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/unit/agentic/test_schema_integration.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/unit/agentic/test_tool_description_suffix.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/unit/api/__init__.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/unit/api/test_feedback.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/unit/api/test_models_endpoint.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/unit/api/test_sessions_messages.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/unit/api/test_sse_events.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/unit/conftest.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/unit/test_admin_internal.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/unit/test_api_key_auth.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/unit/test_registry.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/unit/test_session_cli.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/unit/test_sql_security.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/tests/unit/utils/test_agentic_chunking.py +0 -0
- {remdb-0.3.148 → remdb-0.3.183}/walkthrough.md +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
��type�str�data�application/pdf�cached_at�A�N�m��
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
��type�str�data�application/pdf�cached_at�A�N��^ٕ
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
��type�str�data�application/pdf�cached_at�A�NH����
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
��type�str�data�application/pdf�cached_at�A�N�y�v
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
��type�str�data�application/pdf�cached_at�A�N�7|�
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
��type�str�data�application/pdf�cached_at�A�NH�Gf�
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
��type�str�data�application/pdf�cached_at�A�NH;�
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
��type�str�data�application/pdf�cached_at�A�N��ft�
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
��type�str�data�application/pdf�cached_at�A�NH;���
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
��type�str�data�application/pdf�cached_at�A�NH�U#[
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
��type�str�data�application/pdf�cached_at�A�N�����
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
��type�str�data�application/pdf�cached_at�A�N��\/]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: remdb
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.183
|
|
4
4
|
Summary: Resources Entities Moments - Bio-inspired memory system for agentic AI workloads
|
|
5
5
|
Project-URL: Homepage, https://github.com/Percolation-Labs/reminiscent
|
|
6
6
|
Project-URL: Documentation, https://github.com/Percolation-Labs/reminiscent/blob/main/README.md
|
|
@@ -6,6 +6,8 @@ Use create_agent_from_schema_file() to instantiate agents.
|
|
|
6
6
|
|
|
7
7
|
The SSE Simulator is a special programmatic "agent" that generates
|
|
8
8
|
scripted SSE events for testing and demonstration - it doesn't use an LLM.
|
|
9
|
+
|
|
10
|
+
Agent Manager provides functions for saving/loading user-created agents.
|
|
9
11
|
"""
|
|
10
12
|
|
|
11
13
|
from .sse_simulator import (
|
|
@@ -14,9 +16,23 @@ from .sse_simulator import (
|
|
|
14
16
|
stream_error_demo,
|
|
15
17
|
)
|
|
16
18
|
|
|
19
|
+
from .agent_manager import (
|
|
20
|
+
save_agent,
|
|
21
|
+
get_agent,
|
|
22
|
+
list_agents,
|
|
23
|
+
delete_agent,
|
|
24
|
+
build_agent_spec,
|
|
25
|
+
)
|
|
26
|
+
|
|
17
27
|
__all__ = [
|
|
18
28
|
# SSE Simulator (programmatic, no LLM)
|
|
19
29
|
"stream_simulator_events",
|
|
20
30
|
"stream_minimal_demo",
|
|
21
31
|
"stream_error_demo",
|
|
32
|
+
# Agent Manager
|
|
33
|
+
"save_agent",
|
|
34
|
+
"get_agent",
|
|
35
|
+
"list_agents",
|
|
36
|
+
"delete_agent",
|
|
37
|
+
"build_agent_spec",
|
|
22
38
|
]
|
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Agent Manager - Save, load, and manage user-created agents.
|
|
3
|
+
|
|
4
|
+
This module provides the core functionality for persisting agent schemas
|
|
5
|
+
to the database with user scoping.
|
|
6
|
+
|
|
7
|
+
Usage:
|
|
8
|
+
from rem.agentic.agents.agent_manager import save_agent, get_agent, list_agents
|
|
9
|
+
|
|
10
|
+
# Save an agent
|
|
11
|
+
result = await save_agent(
|
|
12
|
+
name="my-assistant",
|
|
13
|
+
description="You are a helpful assistant.",
|
|
14
|
+
user_id="user-123"
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
# Get an agent
|
|
18
|
+
agent = await get_agent("my-assistant", user_id="user-123")
|
|
19
|
+
|
|
20
|
+
# List user's agents
|
|
21
|
+
agents = await list_agents(user_id="user-123")
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
from typing import Any
|
|
25
|
+
from loguru import logger
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
DEFAULT_TOOLS = ["search_rem", "register_metadata"]
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def build_agent_spec(
|
|
32
|
+
name: str,
|
|
33
|
+
description: str,
|
|
34
|
+
properties: dict[str, Any] | None = None,
|
|
35
|
+
required: list[str] | None = None,
|
|
36
|
+
tools: list[str] | None = None,
|
|
37
|
+
tags: list[str] | None = None,
|
|
38
|
+
version: str = "1.0.0",
|
|
39
|
+
) -> dict[str, Any]:
|
|
40
|
+
"""
|
|
41
|
+
Build a valid agent schema spec.
|
|
42
|
+
|
|
43
|
+
Args:
|
|
44
|
+
name: Agent name in kebab-case
|
|
45
|
+
description: System prompt for the agent
|
|
46
|
+
properties: Output schema properties
|
|
47
|
+
required: Required property names
|
|
48
|
+
tools: Tool names (defaults to search_rem, register_metadata)
|
|
49
|
+
tags: Categorization tags
|
|
50
|
+
version: Semantic version
|
|
51
|
+
|
|
52
|
+
Returns:
|
|
53
|
+
Valid agent schema spec dict
|
|
54
|
+
"""
|
|
55
|
+
# Default properties
|
|
56
|
+
if properties is None:
|
|
57
|
+
properties = {
|
|
58
|
+
"answer": {
|
|
59
|
+
"type": "string",
|
|
60
|
+
"description": "Natural language response to the user"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
# Default required
|
|
65
|
+
if required is None:
|
|
66
|
+
required = ["answer"]
|
|
67
|
+
|
|
68
|
+
# Default tools
|
|
69
|
+
if tools is None:
|
|
70
|
+
tools = DEFAULT_TOOLS.copy()
|
|
71
|
+
|
|
72
|
+
return {
|
|
73
|
+
"type": "object",
|
|
74
|
+
"description": description,
|
|
75
|
+
"properties": properties,
|
|
76
|
+
"required": required,
|
|
77
|
+
"json_schema_extra": {
|
|
78
|
+
"kind": "agent",
|
|
79
|
+
"name": name,
|
|
80
|
+
"version": version,
|
|
81
|
+
"tags": tags or [],
|
|
82
|
+
"tools": [{"name": t, "description": f"Tool: {t}"} for t in tools],
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
async def save_agent(
|
|
88
|
+
name: str,
|
|
89
|
+
description: str,
|
|
90
|
+
user_id: str,
|
|
91
|
+
properties: dict[str, Any] | None = None,
|
|
92
|
+
required: list[str] | None = None,
|
|
93
|
+
tools: list[str] | None = None,
|
|
94
|
+
tags: list[str] | None = None,
|
|
95
|
+
version: str = "1.0.0",
|
|
96
|
+
) -> dict[str, Any]:
|
|
97
|
+
"""
|
|
98
|
+
Save an agent schema to the database.
|
|
99
|
+
|
|
100
|
+
Args:
|
|
101
|
+
name: Agent name in kebab-case (e.g., "code-reviewer")
|
|
102
|
+
description: The agent's system prompt
|
|
103
|
+
user_id: User identifier for scoping
|
|
104
|
+
properties: Output schema properties
|
|
105
|
+
required: Required property names
|
|
106
|
+
tools: Tool names
|
|
107
|
+
tags: Categorization tags
|
|
108
|
+
version: Semantic version
|
|
109
|
+
|
|
110
|
+
Returns:
|
|
111
|
+
Dict with status, agent_name, version, message
|
|
112
|
+
|
|
113
|
+
Raises:
|
|
114
|
+
RuntimeError: If database is not available
|
|
115
|
+
"""
|
|
116
|
+
from rem.models.entities import Schema
|
|
117
|
+
from rem.services.postgres import get_postgres_service
|
|
118
|
+
|
|
119
|
+
# Build the spec
|
|
120
|
+
spec = build_agent_spec(
|
|
121
|
+
name=name,
|
|
122
|
+
description=description,
|
|
123
|
+
properties=properties,
|
|
124
|
+
required=required,
|
|
125
|
+
tools=tools,
|
|
126
|
+
tags=tags,
|
|
127
|
+
version=version,
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
# Create Schema entity (user-scoped)
|
|
131
|
+
# Note: tenant_id defaults to "default" for anonymous users
|
|
132
|
+
schema_entity = Schema(
|
|
133
|
+
tenant_id=user_id or "default",
|
|
134
|
+
user_id=user_id,
|
|
135
|
+
name=name,
|
|
136
|
+
spec=spec,
|
|
137
|
+
category="agent",
|
|
138
|
+
metadata={
|
|
139
|
+
"version": version,
|
|
140
|
+
"tags": tags or [],
|
|
141
|
+
"created_via": "agent_manager",
|
|
142
|
+
},
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
# Save to database
|
|
146
|
+
postgres = get_postgres_service()
|
|
147
|
+
if not postgres:
|
|
148
|
+
raise RuntimeError("Database not available")
|
|
149
|
+
|
|
150
|
+
await postgres.connect()
|
|
151
|
+
try:
|
|
152
|
+
await postgres.batch_upsert(
|
|
153
|
+
records=[schema_entity],
|
|
154
|
+
model=Schema,
|
|
155
|
+
table_name="schemas",
|
|
156
|
+
entity_key_field="name",
|
|
157
|
+
generate_embeddings=False,
|
|
158
|
+
)
|
|
159
|
+
logger.info(f"✅ Agent saved: {name} (user={user_id}, version={version})")
|
|
160
|
+
finally:
|
|
161
|
+
await postgres.disconnect()
|
|
162
|
+
|
|
163
|
+
return {
|
|
164
|
+
"status": "success",
|
|
165
|
+
"agent_name": name,
|
|
166
|
+
"version": version,
|
|
167
|
+
"message": f"Agent '{name}' saved successfully.",
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
async def get_agent(
|
|
172
|
+
name: str,
|
|
173
|
+
user_id: str,
|
|
174
|
+
) -> dict[str, Any] | None:
|
|
175
|
+
"""
|
|
176
|
+
Get an agent schema by name.
|
|
177
|
+
|
|
178
|
+
Checks user's schemas first, then falls back to system schemas.
|
|
179
|
+
|
|
180
|
+
Args:
|
|
181
|
+
name: Agent name
|
|
182
|
+
user_id: User identifier
|
|
183
|
+
|
|
184
|
+
Returns:
|
|
185
|
+
Agent spec dict if found, None otherwise
|
|
186
|
+
"""
|
|
187
|
+
from rem.services.postgres import get_postgres_service
|
|
188
|
+
|
|
189
|
+
postgres = get_postgres_service()
|
|
190
|
+
if not postgres:
|
|
191
|
+
return None
|
|
192
|
+
|
|
193
|
+
await postgres.connect()
|
|
194
|
+
try:
|
|
195
|
+
query = """
|
|
196
|
+
SELECT spec FROM schemas
|
|
197
|
+
WHERE LOWER(name) = LOWER($1)
|
|
198
|
+
AND category = 'agent'
|
|
199
|
+
AND (user_id = $2 OR user_id IS NULL OR tenant_id = 'system')
|
|
200
|
+
ORDER BY CASE WHEN user_id = $2 THEN 0 ELSE 1 END
|
|
201
|
+
LIMIT 1
|
|
202
|
+
"""
|
|
203
|
+
row = await postgres.fetchrow(query, name, user_id)
|
|
204
|
+
if row:
|
|
205
|
+
return row["spec"]
|
|
206
|
+
return None
|
|
207
|
+
finally:
|
|
208
|
+
await postgres.disconnect()
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
async def list_agents(
|
|
212
|
+
user_id: str,
|
|
213
|
+
include_system: bool = True,
|
|
214
|
+
) -> list[dict[str, Any]]:
|
|
215
|
+
"""
|
|
216
|
+
List available agents for a user.
|
|
217
|
+
|
|
218
|
+
Args:
|
|
219
|
+
user_id: User identifier
|
|
220
|
+
include_system: Include system agents
|
|
221
|
+
|
|
222
|
+
Returns:
|
|
223
|
+
List of agent metadata dicts
|
|
224
|
+
"""
|
|
225
|
+
from rem.services.postgres import get_postgres_service
|
|
226
|
+
|
|
227
|
+
postgres = get_postgres_service()
|
|
228
|
+
if not postgres:
|
|
229
|
+
return []
|
|
230
|
+
|
|
231
|
+
await postgres.connect()
|
|
232
|
+
try:
|
|
233
|
+
if include_system:
|
|
234
|
+
query = """
|
|
235
|
+
SELECT name, metadata, user_id, tenant_id
|
|
236
|
+
FROM schemas
|
|
237
|
+
WHERE category = 'agent'
|
|
238
|
+
AND (user_id = $1 OR user_id IS NULL OR tenant_id = 'system')
|
|
239
|
+
ORDER BY name
|
|
240
|
+
"""
|
|
241
|
+
rows = await postgres.fetch(query, user_id)
|
|
242
|
+
else:
|
|
243
|
+
query = """
|
|
244
|
+
SELECT name, metadata, user_id, tenant_id
|
|
245
|
+
FROM schemas
|
|
246
|
+
WHERE category = 'agent'
|
|
247
|
+
AND user_id = $1
|
|
248
|
+
ORDER BY name
|
|
249
|
+
"""
|
|
250
|
+
rows = await postgres.fetch(query, user_id)
|
|
251
|
+
|
|
252
|
+
return [
|
|
253
|
+
{
|
|
254
|
+
"name": row["name"],
|
|
255
|
+
"version": row["metadata"].get("version", "1.0.0") if row["metadata"] else "1.0.0",
|
|
256
|
+
"tags": row["metadata"].get("tags", []) if row["metadata"] else [],
|
|
257
|
+
"is_system": row["tenant_id"] == "system" or row["user_id"] is None,
|
|
258
|
+
}
|
|
259
|
+
for row in rows
|
|
260
|
+
]
|
|
261
|
+
finally:
|
|
262
|
+
await postgres.disconnect()
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
async def delete_agent(
|
|
266
|
+
name: str,
|
|
267
|
+
user_id: str,
|
|
268
|
+
) -> dict[str, Any]:
|
|
269
|
+
"""
|
|
270
|
+
Delete a user's agent.
|
|
271
|
+
|
|
272
|
+
Only allows deleting user-owned agents, not system agents.
|
|
273
|
+
|
|
274
|
+
Args:
|
|
275
|
+
name: Agent name
|
|
276
|
+
user_id: User identifier
|
|
277
|
+
|
|
278
|
+
Returns:
|
|
279
|
+
Dict with status and message
|
|
280
|
+
"""
|
|
281
|
+
from rem.services.postgres import get_postgres_service
|
|
282
|
+
|
|
283
|
+
postgres = get_postgres_service()
|
|
284
|
+
if not postgres:
|
|
285
|
+
raise RuntimeError("Database not available")
|
|
286
|
+
|
|
287
|
+
await postgres.connect()
|
|
288
|
+
try:
|
|
289
|
+
# Only delete user's own agents
|
|
290
|
+
query = """
|
|
291
|
+
DELETE FROM schemas
|
|
292
|
+
WHERE LOWER(name) = LOWER($1)
|
|
293
|
+
AND category = 'agent'
|
|
294
|
+
AND user_id = $2
|
|
295
|
+
RETURNING name
|
|
296
|
+
"""
|
|
297
|
+
row = await postgres.fetchrow(query, name, user_id)
|
|
298
|
+
|
|
299
|
+
if row:
|
|
300
|
+
logger.info(f"🗑️ Agent deleted: {name} (user={user_id})")
|
|
301
|
+
return {
|
|
302
|
+
"status": "success",
|
|
303
|
+
"message": f"Agent '{name}' deleted.",
|
|
304
|
+
}
|
|
305
|
+
else:
|
|
306
|
+
return {
|
|
307
|
+
"status": "error",
|
|
308
|
+
"message": f"Agent '{name}' not found or not owned by you.",
|
|
309
|
+
}
|
|
310
|
+
finally:
|
|
311
|
+
await postgres.disconnect()
|
|
@@ -2,11 +2,15 @@
|
|
|
2
2
|
Agent execution context and configuration.
|
|
3
3
|
|
|
4
4
|
Design pattern for session context that can be constructed from:
|
|
5
|
+
- FastAPI Request object (preferred - extracts user from JWT via request.state)
|
|
5
6
|
- HTTP headers (X-User-Id, X-Session-Id, X-Model-Name, X-Is-Eval, etc.)
|
|
6
7
|
- Direct instantiation for testing/CLI
|
|
7
8
|
|
|
9
|
+
User ID Sources (in priority order):
|
|
10
|
+
1. request.state.user.id - From JWT token validated by auth middleware (SECURE)
|
|
11
|
+
2. X-User-Id header - Fallback for backwards compatibility (less secure)
|
|
12
|
+
|
|
8
13
|
Headers Mapping:
|
|
9
|
-
X-User-Id → context.user_id
|
|
10
14
|
X-Tenant-Id → context.tenant_id (default: "default")
|
|
11
15
|
X-Session-Id → context.session_id
|
|
12
16
|
X-Agent-Schema → context.agent_schema_uri (default: "rem")
|
|
@@ -128,13 +132,87 @@ class AgentContext(BaseModel):
|
|
|
128
132
|
logger.debug(f"No user_id from {source}, using None (anonymous/shared data)")
|
|
129
133
|
return None
|
|
130
134
|
|
|
135
|
+
@classmethod
|
|
136
|
+
def from_request(cls, request: "Request") -> "AgentContext":
|
|
137
|
+
"""
|
|
138
|
+
Construct AgentContext from a FastAPI Request object.
|
|
139
|
+
|
|
140
|
+
This is the PREFERRED method for API endpoints. It extracts user_id
|
|
141
|
+
from the authenticated user in request.state (set by auth middleware
|
|
142
|
+
from JWT token), which is more secure than trusting X-User-Id header.
|
|
143
|
+
|
|
144
|
+
Priority for user_id:
|
|
145
|
+
1. request.state.user.id - From validated JWT token (SECURE)
|
|
146
|
+
2. X-User-Id header - Fallback for backwards compatibility
|
|
147
|
+
|
|
148
|
+
Args:
|
|
149
|
+
request: FastAPI Request object
|
|
150
|
+
|
|
151
|
+
Returns:
|
|
152
|
+
AgentContext with user from JWT and other values from headers
|
|
153
|
+
|
|
154
|
+
Example:
|
|
155
|
+
@app.post("/api/v1/chat/completions")
|
|
156
|
+
async def chat(request: Request, body: ChatRequest):
|
|
157
|
+
context = AgentContext.from_request(request)
|
|
158
|
+
# context.user_id is from JWT, not header
|
|
159
|
+
"""
|
|
160
|
+
from typing import TYPE_CHECKING
|
|
161
|
+
if TYPE_CHECKING:
|
|
162
|
+
from starlette.requests import Request
|
|
163
|
+
|
|
164
|
+
# Get headers dict
|
|
165
|
+
headers = dict(request.headers)
|
|
166
|
+
normalized = {k.lower(): v for k, v in headers.items()}
|
|
167
|
+
|
|
168
|
+
# Extract user_id from authenticated user (JWT) - this is the source of truth
|
|
169
|
+
user_id = None
|
|
170
|
+
tenant_id = "default"
|
|
171
|
+
|
|
172
|
+
if hasattr(request, "state"):
|
|
173
|
+
user = getattr(request.state, "user", None)
|
|
174
|
+
if user and isinstance(user, dict):
|
|
175
|
+
user_id = user.get("id")
|
|
176
|
+
# Also get tenant_id from authenticated user if available
|
|
177
|
+
if user.get("tenant_id"):
|
|
178
|
+
tenant_id = user.get("tenant_id")
|
|
179
|
+
if user_id:
|
|
180
|
+
logger.debug(f"User ID from JWT: {user_id}")
|
|
181
|
+
|
|
182
|
+
# Fallback to X-User-Id header if no authenticated user
|
|
183
|
+
if not user_id:
|
|
184
|
+
user_id = normalized.get("x-user-id")
|
|
185
|
+
if user_id:
|
|
186
|
+
logger.debug(f"User ID from X-User-Id header (fallback): {user_id}")
|
|
187
|
+
|
|
188
|
+
# Override tenant_id from header if provided
|
|
189
|
+
header_tenant = normalized.get("x-tenant-id")
|
|
190
|
+
if header_tenant:
|
|
191
|
+
tenant_id = header_tenant
|
|
192
|
+
|
|
193
|
+
# Parse X-Is-Eval header
|
|
194
|
+
is_eval_str = normalized.get("x-is-eval", "").lower()
|
|
195
|
+
is_eval = is_eval_str in ("true", "1", "yes")
|
|
196
|
+
|
|
197
|
+
return cls(
|
|
198
|
+
user_id=user_id,
|
|
199
|
+
tenant_id=tenant_id,
|
|
200
|
+
session_id=normalized.get("x-session-id"),
|
|
201
|
+
default_model=normalized.get("x-model-name") or settings.llm.default_model,
|
|
202
|
+
agent_schema_uri=normalized.get("x-agent-schema"),
|
|
203
|
+
is_eval=is_eval,
|
|
204
|
+
)
|
|
205
|
+
|
|
131
206
|
@classmethod
|
|
132
207
|
def from_headers(cls, headers: dict[str, str]) -> "AgentContext":
|
|
133
208
|
"""
|
|
134
|
-
Construct AgentContext from HTTP headers.
|
|
209
|
+
Construct AgentContext from HTTP headers dict.
|
|
210
|
+
|
|
211
|
+
NOTE: Prefer from_request() for API endpoints as it extracts user_id
|
|
212
|
+
from the validated JWT token in request.state, which is more secure.
|
|
135
213
|
|
|
136
214
|
Reads standard headers:
|
|
137
|
-
- X-User-Id: User identifier
|
|
215
|
+
- X-User-Id: User identifier (fallback - prefer JWT)
|
|
138
216
|
- X-Tenant-Id: Tenant identifier
|
|
139
217
|
- X-Session-Id: Session identifier
|
|
140
218
|
- X-Model-Name: Model override
|
|
@@ -12,7 +12,7 @@ User Context (on-demand by default):
|
|
|
12
12
|
- System message includes REM LOOKUP hint for user profile
|
|
13
13
|
- Agent decides whether to load profile based on query
|
|
14
14
|
- More efficient for queries that don't need personalization
|
|
15
|
-
- Example: "User
|
|
15
|
+
- Example: "User: sarah@example.com. To load user profile: Use REM LOOKUP \"sarah@example.com\""
|
|
16
16
|
|
|
17
17
|
User Context (auto-inject when enabled):
|
|
18
18
|
- Set CHAT__AUTO_INJECT_USER_CONTEXT=true
|
|
@@ -40,7 +40,7 @@ Usage (on-demand, default):
|
|
|
40
40
|
|
|
41
41
|
# Messages list structure (on-demand):
|
|
42
42
|
# [
|
|
43
|
-
# {"role": "system", "content": "Today's date: 2025-11-22\nUser
|
|
43
|
+
# {"role": "system", "content": "Today's date: 2025-11-22\nUser: sarah@example.com\nTo load user profile: Use REM LOOKUP \"sarah@example.com\"\nSession ID: sess-123\nTo load session history: Use REM LOOKUP messages?session_id=sess-123"},
|
|
44
44
|
# {"role": "user", "content": "What's next for the API migration?"}
|
|
45
45
|
# ]
|
|
46
46
|
|
|
@@ -103,6 +103,7 @@ class ContextBuilder:
|
|
|
103
103
|
headers: dict[str, str],
|
|
104
104
|
new_messages: list[dict[str, str]] | None = None,
|
|
105
105
|
db: PostgresService | None = None,
|
|
106
|
+
user_id: str | None = None,
|
|
106
107
|
) -> tuple[AgentContext, list[ContextMessage]]:
|
|
107
108
|
"""
|
|
108
109
|
Build complete context from HTTP headers.
|
|
@@ -114,7 +115,7 @@ class ContextBuilder:
|
|
|
114
115
|
- Agent can retrieve full content on-demand using REM LOOKUP
|
|
115
116
|
|
|
116
117
|
User Context (on-demand by default):
|
|
117
|
-
- System message includes REM LOOKUP hint: "User
|
|
118
|
+
- System message includes REM LOOKUP hint: "User: {email}. To load user profile: Use REM LOOKUP \"{email}\""
|
|
118
119
|
- Agent decides whether to load profile based on query
|
|
119
120
|
|
|
120
121
|
User Context (auto-inject when enabled):
|
|
@@ -125,6 +126,7 @@ class ContextBuilder:
|
|
|
125
126
|
headers: HTTP request headers (case-insensitive)
|
|
126
127
|
new_messages: New messages from current request
|
|
127
128
|
db: Optional PostgresService (creates if None)
|
|
129
|
+
user_id: Override user_id from JWT token (takes precedence over X-User-Id header)
|
|
128
130
|
|
|
129
131
|
Returns:
|
|
130
132
|
Tuple of (AgentContext, messages list)
|
|
@@ -135,7 +137,7 @@ class ContextBuilder:
|
|
|
135
137
|
|
|
136
138
|
# messages structure:
|
|
137
139
|
# [
|
|
138
|
-
# {"role": "system", "content": "Today's date: 2025-11-22\nUser
|
|
140
|
+
# {"role": "system", "content": "Today's date: 2025-11-22\nUser: sarah@example.com\nTo load user profile: Use REM LOOKUP \"sarah@example.com\""},
|
|
139
141
|
# {"role": "user", "content": "Previous message"},
|
|
140
142
|
# {"role": "assistant", "content": "Start of long response... [REM LOOKUP session-123-msg-1] ...end"},
|
|
141
143
|
# {"role": "user", "content": "New message"}
|
|
@@ -147,6 +149,17 @@ class ContextBuilder:
|
|
|
147
149
|
# Extract AgentContext from headers
|
|
148
150
|
context = AgentContext.from_headers(headers)
|
|
149
151
|
|
|
152
|
+
# Override user_id if provided (from JWT token - takes precedence over header)
|
|
153
|
+
if user_id is not None:
|
|
154
|
+
context = AgentContext(
|
|
155
|
+
user_id=user_id,
|
|
156
|
+
tenant_id=context.tenant_id,
|
|
157
|
+
session_id=context.session_id,
|
|
158
|
+
default_model=context.default_model,
|
|
159
|
+
agent_schema_uri=context.agent_schema_uri,
|
|
160
|
+
is_eval=context.is_eval,
|
|
161
|
+
)
|
|
162
|
+
|
|
150
163
|
# Initialize DB if not provided and needed (for user context or session history)
|
|
151
164
|
close_db = False
|
|
152
165
|
if db is None and (settings.chat.auto_inject_user_context or context.session_id):
|
|
@@ -178,19 +191,29 @@ class ContextBuilder:
|
|
|
178
191
|
context_hint += "\n\nNo user context available (anonymous or new user)."
|
|
179
192
|
elif context.user_id:
|
|
180
193
|
# On-demand: Provide hint to use REM LOOKUP
|
|
181
|
-
|
|
182
|
-
|
|
194
|
+
# user_id is UUID5 hash of email - load user to get email for display and LOOKUP
|
|
195
|
+
user_repo = Repository(User, "users", db=db)
|
|
196
|
+
user = await user_repo.get_by_id(context.user_id, context.tenant_id)
|
|
197
|
+
if user and user.email:
|
|
198
|
+
# Show email (more useful than UUID) and LOOKUP hint
|
|
199
|
+
context_hint += f"\n\nUser: {user.email}"
|
|
200
|
+
context_hint += f"\nTo load user profile: Use REM LOOKUP \"{user.email}\""
|
|
201
|
+
else:
|
|
202
|
+
context_hint += f"\n\nUser ID: {context.user_id}"
|
|
203
|
+
context_hint += "\nUser profile not available."
|
|
183
204
|
|
|
184
205
|
# Add system context hint
|
|
185
206
|
messages.append(ContextMessage(role="system", content=context_hint))
|
|
186
207
|
|
|
187
|
-
# ALWAYS load session history (if session_id provided)
|
|
208
|
+
# ALWAYS load session history (if session_id provided)
|
|
209
|
+
# - Long assistant messages are compressed on load with REM LOOKUP hints
|
|
210
|
+
# - Tool messages are never compressed (contain structured metadata)
|
|
188
211
|
if context.session_id and settings.postgres.enabled:
|
|
189
212
|
store = SessionMessageStore(user_id=context.user_id or "default")
|
|
190
213
|
session_history = await store.load_session_messages(
|
|
191
214
|
session_id=context.session_id,
|
|
192
215
|
user_id=context.user_id,
|
|
193
|
-
|
|
216
|
+
compress_on_load=True, # Compress long assistant messages
|
|
194
217
|
)
|
|
195
218
|
|
|
196
219
|
# Convert to ContextMessage format
|
|
@@ -202,7 +225,7 @@ class ContextBuilder:
|
|
|
202
225
|
)
|
|
203
226
|
)
|
|
204
227
|
|
|
205
|
-
logger.debug(f"Loaded {len(session_history)}
|
|
228
|
+
logger.debug(f"Loaded {len(session_history)} messages for session {context.session_id}")
|
|
206
229
|
|
|
207
230
|
# Add new messages from request
|
|
208
231
|
if new_messages:
|
|
@@ -224,6 +247,9 @@ class ContextBuilder:
|
|
|
224
247
|
"""
|
|
225
248
|
Load user profile from database and format as context.
|
|
226
249
|
|
|
250
|
+
user_id is always a UUID5 hash of email (bijection).
|
|
251
|
+
Looks up user by their id field in the database.
|
|
252
|
+
|
|
227
253
|
Returns formatted string with:
|
|
228
254
|
- User summary (generated by dreaming worker)
|
|
229
255
|
- Current projects
|
|
@@ -237,6 +263,7 @@ class ContextBuilder:
|
|
|
237
263
|
|
|
238
264
|
try:
|
|
239
265
|
user_repo = Repository(User, "users", db=db)
|
|
266
|
+
# user_id is UUID5 hash of email - look up by database id
|
|
240
267
|
user = await user_repo.get_by_id(user_id, tenant_id)
|
|
241
268
|
|
|
242
269
|
if not user:
|