remdb 0.3.226__py3-none-any.whl → 0.3.245__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of remdb might be problematic. Click here for more details.
- rem/agentic/README.md +22 -248
- rem/agentic/context.py +13 -2
- rem/agentic/context_builder.py +39 -33
- rem/agentic/providers/pydantic_ai.py +67 -50
- rem/api/mcp_router/resources.py +223 -0
- rem/api/mcp_router/tools.py +25 -9
- rem/api/routers/auth.py +112 -9
- rem/api/routers/chat/child_streaming.py +394 -0
- rem/api/routers/chat/streaming.py +166 -357
- rem/api/routers/chat/streaming_utils.py +327 -0
- rem/api/routers/query.py +5 -14
- rem/cli/commands/ask.py +144 -33
- rem/cli/commands/process.py +9 -1
- rem/cli/commands/query.py +109 -0
- rem/cli/commands/session.py +117 -0
- rem/cli/main.py +2 -0
- rem/models/entities/session.py +1 -0
- rem/services/postgres/repository.py +7 -17
- rem/services/rem/service.py +47 -0
- rem/services/session/compression.py +7 -3
- rem/services/session/pydantic_messages.py +45 -11
- rem/services/session/reload.py +2 -1
- rem/settings.py +43 -0
- rem/sql/migrations/004_cache_system.sql +3 -1
- rem/utils/schema_loader.py +99 -99
- {remdb-0.3.226.dist-info → remdb-0.3.245.dist-info}/METADATA +2 -2
- {remdb-0.3.226.dist-info → remdb-0.3.245.dist-info}/RECORD +29 -26
- {remdb-0.3.226.dist-info → remdb-0.3.245.dist-info}/WHEEL +0 -0
- {remdb-0.3.226.dist-info → remdb-0.3.245.dist-info}/entry_points.txt +0 -0
rem/utils/schema_loader.py
CHANGED
|
@@ -249,73 +249,65 @@ def load_agent_schema(
|
|
|
249
249
|
enable_db_fallback: bool = True,
|
|
250
250
|
) -> dict[str, Any]:
|
|
251
251
|
"""
|
|
252
|
-
Load agent schema
|
|
252
|
+
Load agent schema with database-first priority for hot-reloading support.
|
|
253
253
|
|
|
254
254
|
Schema names are case-invariant - "Rem", "rem", "REM" all resolve to the same schema.
|
|
255
255
|
|
|
256
|
-
|
|
257
|
-
|
|
256
|
+
**IMPORTANT**: Database is checked FIRST (before filesystem) to enable hot-reloading
|
|
257
|
+
of schema updates without redeploying the application. This allows operators to
|
|
258
|
+
update schemas via `rem process ingest` and have changes take effect immediately.
|
|
258
259
|
|
|
259
260
|
Handles path resolution automatically:
|
|
260
|
-
- "rem" → searches schemas/agents/rem.yaml
|
|
261
|
-
- "moment-builder" → searches schemas/agents/core/moment-builder.yaml
|
|
262
|
-
- "
|
|
263
|
-
- "
|
|
264
|
-
- "/absolute/path.yaml" → loads directly
|
|
265
|
-
- "relative/path.yaml" → loads relative to cwd
|
|
261
|
+
- "rem" → searches database, then schemas/agents/rem.yaml
|
|
262
|
+
- "moment-builder" → searches database, then schemas/agents/core/moment-builder.yaml
|
|
263
|
+
- "/absolute/path.yaml" → loads directly from filesystem (exact paths skip database)
|
|
264
|
+
- "relative/path.yaml" → loads relative to cwd (exact paths skip database)
|
|
266
265
|
|
|
267
266
|
Search Order:
|
|
268
|
-
1.
|
|
269
|
-
2.
|
|
270
|
-
3.
|
|
271
|
-
4.
|
|
272
|
-
5. Package resources: schemas/agents/
|
|
273
|
-
6. Package resources: schemas/agents/
|
|
274
|
-
7. Package resources: schemas/
|
|
275
|
-
8. Package resources: schemas/{name}.yaml
|
|
276
|
-
9.
|
|
267
|
+
1. Exact path if it exists (absolute or relative) - skips database
|
|
268
|
+
2. Database LOOKUP: schemas table (if enable_db_fallback=True) - PREFERRED for hot-reload
|
|
269
|
+
3. Check cache (if use_cache=True and schema found in FS cache)
|
|
270
|
+
4. Custom paths from rem.register_schema_path() and SCHEMA__PATHS env var
|
|
271
|
+
5. Package resources: schemas/agents/{name}.yaml (top-level)
|
|
272
|
+
6. Package resources: schemas/agents/core/{name}.yaml
|
|
273
|
+
7. Package resources: schemas/agents/examples/{name}.yaml
|
|
274
|
+
8. Package resources: schemas/evaluators/{name}.yaml
|
|
275
|
+
9. Package resources: schemas/{name}.yaml
|
|
277
276
|
|
|
278
277
|
Args:
|
|
279
278
|
schema_name_or_path: Schema name or file path (case-invariant for names)
|
|
280
279
|
Examples: "rem-query-agent", "Contract-Analyzer", "./my-schema.yaml"
|
|
281
280
|
use_cache: If True, uses in-memory cache for filesystem schemas
|
|
282
|
-
user_id: User ID for database schema lookup
|
|
283
|
-
enable_db_fallback: If True,
|
|
281
|
+
user_id: User ID for database schema lookup
|
|
282
|
+
enable_db_fallback: If True, checks database FIRST for schema (default: True)
|
|
284
283
|
|
|
285
284
|
Returns:
|
|
286
285
|
Agent schema as dictionary
|
|
287
286
|
|
|
288
287
|
Raises:
|
|
289
|
-
FileNotFoundError: If schema not found in any search location (
|
|
288
|
+
FileNotFoundError: If schema not found in any search location (database + filesystem)
|
|
290
289
|
yaml.YAMLError: If schema file is invalid YAML
|
|
291
290
|
|
|
292
291
|
Examples:
|
|
293
|
-
>>> # Load by short name
|
|
294
|
-
>>> schema = load_agent_schema("Contract-Analyzer") #
|
|
292
|
+
>>> # Load by short name - checks database first for hot-reload support
|
|
293
|
+
>>> schema = load_agent_schema("Contract-Analyzer") # case invariant
|
|
295
294
|
>>>
|
|
296
|
-
>>> # Load from custom path (
|
|
295
|
+
>>> # Load from custom path (skips database - exact paths always use filesystem)
|
|
297
296
|
>>> schema = load_agent_schema("./my-agent.yaml")
|
|
298
297
|
>>>
|
|
299
|
-
>>> # Load evaluator schema
|
|
298
|
+
>>> # Load evaluator schema
|
|
300
299
|
>>> schema = load_agent_schema("rem-lookup-correctness")
|
|
301
|
-
>>>
|
|
302
|
-
>>> # Load custom user schema from database (case invariant)
|
|
303
|
-
>>> schema = load_agent_schema("My-Agent", user_id="user-123") # same as "my-agent"
|
|
304
300
|
"""
|
|
305
301
|
# Normalize the name for cache key (lowercase for case-invariant lookups)
|
|
306
302
|
cache_key = str(schema_name_or_path).replace('agents/', '').replace('schemas/', '').replace('evaluators/', '').replace('core/', '').replace('examples/', '').lower()
|
|
307
303
|
if cache_key.endswith('.yaml') or cache_key.endswith('.yml'):
|
|
308
304
|
cache_key = cache_key.rsplit('.', 1)[0]
|
|
309
305
|
|
|
310
|
-
# Check cache first (only for package resources, not custom paths)
|
|
311
306
|
path = Path(schema_name_or_path)
|
|
312
307
|
is_custom_path = (path.exists() and path.is_file()) or '/' in str(schema_name_or_path) or '\\' in str(schema_name_or_path)
|
|
313
308
|
|
|
314
|
-
if use_cache and not is_custom_path and cache_key in _fs_schema_cache:
|
|
315
|
-
logger.debug(f"Loading schema from cache: {cache_key}")
|
|
316
|
-
return _fs_schema_cache[cache_key]
|
|
317
|
-
|
|
318
309
|
# 1. Try exact path first (absolute or relative to cwd) - must be a file, not directory
|
|
310
|
+
# Exact paths skip database lookup (explicit file reference)
|
|
319
311
|
if path.exists() and path.is_file():
|
|
320
312
|
logger.debug(f"Loading schema from exact path: {path}")
|
|
321
313
|
with open(path, "r") as f:
|
|
@@ -324,10 +316,28 @@ def load_agent_schema(
|
|
|
324
316
|
# Don't cache custom paths (they may change)
|
|
325
317
|
return cast(dict[str, Any], schema)
|
|
326
318
|
|
|
327
|
-
# 2. Normalize name for
|
|
319
|
+
# 2. Normalize name for lookups (lowercase)
|
|
328
320
|
base_name = cache_key
|
|
329
321
|
|
|
330
|
-
# 3. Try
|
|
322
|
+
# 3. Try database FIRST (if enabled) - enables hot-reload without redeploy
|
|
323
|
+
# Database schemas are NOT cached to ensure hot-reload works immediately
|
|
324
|
+
if enable_db_fallback and not is_custom_path:
|
|
325
|
+
try:
|
|
326
|
+
logger.debug(f"Checking database for schema: {base_name} (user_id={user_id or 'public'})")
|
|
327
|
+
db_schema = _load_schema_from_database(base_name, user_id)
|
|
328
|
+
if db_schema:
|
|
329
|
+
logger.info(f"✅ Loaded schema from database: {base_name}")
|
|
330
|
+
return db_schema
|
|
331
|
+
except Exception as e:
|
|
332
|
+
logger.debug(f"Database schema lookup failed: {e}")
|
|
333
|
+
# Fall through to filesystem search
|
|
334
|
+
|
|
335
|
+
# 4. Check filesystem cache (only for package resources, not custom paths)
|
|
336
|
+
if use_cache and not is_custom_path and cache_key in _fs_schema_cache:
|
|
337
|
+
logger.debug(f"Loading schema from cache: {cache_key}")
|
|
338
|
+
return _fs_schema_cache[cache_key]
|
|
339
|
+
|
|
340
|
+
# 5. Try custom schema paths (from registry + SCHEMA__PATHS env var + auto-detected)
|
|
331
341
|
from ..registry import get_schema_paths
|
|
332
342
|
|
|
333
343
|
custom_paths = get_schema_paths()
|
|
@@ -358,7 +368,7 @@ def load_agent_schema(
|
|
|
358
368
|
# Don't cache custom paths (they may change during development)
|
|
359
369
|
return cast(dict[str, Any], schema)
|
|
360
370
|
|
|
361
|
-
#
|
|
371
|
+
# 6. Try package resources with standard search paths
|
|
362
372
|
for search_pattern in SCHEMA_SEARCH_PATHS:
|
|
363
373
|
search_path = search_pattern.format(name=base_name)
|
|
364
374
|
|
|
@@ -383,20 +393,7 @@ def load_agent_schema(
|
|
|
383
393
|
logger.debug(f"Could not load from {search_path}: {e}")
|
|
384
394
|
continue
|
|
385
395
|
|
|
386
|
-
#
|
|
387
|
-
# Always search for public schemas (user_id IS NULL), plus user-specific if user_id provided
|
|
388
|
-
if enable_db_fallback:
|
|
389
|
-
try:
|
|
390
|
-
logger.debug(f"Attempting database LOOKUP for schema: {base_name} (user_id={user_id or 'public'})")
|
|
391
|
-
db_schema = _load_schema_from_database(base_name, user_id)
|
|
392
|
-
if db_schema:
|
|
393
|
-
logger.info(f"✅ Loaded schema from database: {base_name}")
|
|
394
|
-
return db_schema
|
|
395
|
-
except Exception as e:
|
|
396
|
-
logger.debug(f"Database schema lookup failed: {e}")
|
|
397
|
-
# Fall through to error below
|
|
398
|
-
|
|
399
|
-
# 6. Schema not found in any location
|
|
396
|
+
# 7. Schema not found in any location
|
|
400
397
|
searched_paths = [pattern.format(name=base_name) for pattern in SCHEMA_SEARCH_PATHS]
|
|
401
398
|
|
|
402
399
|
custom_paths_note = ""
|
|
@@ -424,18 +421,21 @@ async def load_agent_schema_async(
|
|
|
424
421
|
schema_name_or_path: str,
|
|
425
422
|
user_id: str | None = None,
|
|
426
423
|
db=None,
|
|
424
|
+
enable_db_fallback: bool = True,
|
|
427
425
|
) -> dict[str, Any]:
|
|
428
426
|
"""
|
|
429
|
-
Async version of load_agent_schema
|
|
427
|
+
Async version of load_agent_schema with database-first priority.
|
|
430
428
|
|
|
431
429
|
Schema names are case-invariant - "MyAgent", "myagent", "MYAGENT" all resolve to the same schema.
|
|
432
430
|
|
|
433
|
-
|
|
431
|
+
**IMPORTANT**: Database is checked FIRST (before filesystem) to enable hot-reloading
|
|
432
|
+
of schema updates without redeploying the application.
|
|
434
433
|
|
|
435
434
|
Args:
|
|
436
435
|
schema_name_or_path: Schema name or file path (case-invariant for names)
|
|
437
436
|
user_id: User ID for database schema lookup
|
|
438
437
|
db: Optional existing PostgresService connection (if None, will create one)
|
|
438
|
+
enable_db_fallback: If True, checks database FIRST for schema (default: True)
|
|
439
439
|
|
|
440
440
|
Returns:
|
|
441
441
|
Agent schema as dictionary
|
|
@@ -443,7 +443,6 @@ async def load_agent_schema_async(
|
|
|
443
443
|
Raises:
|
|
444
444
|
FileNotFoundError: If schema not found
|
|
445
445
|
"""
|
|
446
|
-
# First try filesystem search (sync operations are fine)
|
|
447
446
|
path = Path(schema_name_or_path)
|
|
448
447
|
|
|
449
448
|
# Normalize the name for cache key (lowercase for case-invariant lookups)
|
|
@@ -453,12 +452,7 @@ async def load_agent_schema_async(
|
|
|
453
452
|
|
|
454
453
|
is_custom_path = (path.exists() and path.is_file()) or '/' in str(schema_name_or_path) or '\\' in str(schema_name_or_path)
|
|
455
454
|
|
|
456
|
-
#
|
|
457
|
-
if not is_custom_path and cache_key in _fs_schema_cache:
|
|
458
|
-
logger.debug(f"Loading schema from cache: {cache_key}")
|
|
459
|
-
return _fs_schema_cache[cache_key]
|
|
460
|
-
|
|
461
|
-
# Try exact path (must be a file, not directory)
|
|
455
|
+
# 1. Try exact path first (skips database - explicit file reference)
|
|
462
456
|
if path.exists() and path.is_file():
|
|
463
457
|
logger.debug(f"Loading schema from exact path: {path}")
|
|
464
458
|
with open(path, "r") as f:
|
|
@@ -467,7 +461,51 @@ async def load_agent_schema_async(
|
|
|
467
461
|
|
|
468
462
|
base_name = cache_key
|
|
469
463
|
|
|
470
|
-
# Try
|
|
464
|
+
# 2. Try database FIRST (if enabled) - enables hot-reload without redeploy
|
|
465
|
+
if enable_db_fallback and not is_custom_path:
|
|
466
|
+
from rem.services.postgres import get_postgres_service
|
|
467
|
+
|
|
468
|
+
should_disconnect = False
|
|
469
|
+
if db is None:
|
|
470
|
+
db = get_postgres_service()
|
|
471
|
+
if db:
|
|
472
|
+
await db.connect()
|
|
473
|
+
should_disconnect = True
|
|
474
|
+
|
|
475
|
+
if db:
|
|
476
|
+
try:
|
|
477
|
+
if user_id:
|
|
478
|
+
query = """
|
|
479
|
+
SELECT spec FROM schemas
|
|
480
|
+
WHERE LOWER(name) = LOWER($1)
|
|
481
|
+
AND (user_id = $2 OR user_id = 'system' OR user_id IS NULL)
|
|
482
|
+
LIMIT 1
|
|
483
|
+
"""
|
|
484
|
+
row = await db.fetchrow(query, base_name, user_id)
|
|
485
|
+
else:
|
|
486
|
+
# No user_id - only search public schemas
|
|
487
|
+
query = """
|
|
488
|
+
SELECT spec FROM schemas
|
|
489
|
+
WHERE LOWER(name) = LOWER($1)
|
|
490
|
+
AND (user_id = 'system' OR user_id IS NULL)
|
|
491
|
+
LIMIT 1
|
|
492
|
+
"""
|
|
493
|
+
row = await db.fetchrow(query, base_name)
|
|
494
|
+
if row:
|
|
495
|
+
spec = row.get("spec")
|
|
496
|
+
if spec and isinstance(spec, dict):
|
|
497
|
+
logger.info(f"✅ Loaded schema from database: {base_name}")
|
|
498
|
+
return spec
|
|
499
|
+
finally:
|
|
500
|
+
if should_disconnect:
|
|
501
|
+
await db.disconnect()
|
|
502
|
+
|
|
503
|
+
# 3. Check filesystem cache
|
|
504
|
+
if not is_custom_path and cache_key in _fs_schema_cache:
|
|
505
|
+
logger.debug(f"Loading schema from cache: {cache_key}")
|
|
506
|
+
return _fs_schema_cache[cache_key]
|
|
507
|
+
|
|
508
|
+
# 4. Try custom schema paths (from registry + SCHEMA__PATHS env var + auto-detected)
|
|
471
509
|
from ..registry import get_schema_paths
|
|
472
510
|
custom_paths = get_schema_paths()
|
|
473
511
|
|
|
@@ -489,7 +527,7 @@ async def load_agent_schema_async(
|
|
|
489
527
|
schema = yaml.safe_load(f)
|
|
490
528
|
return cast(dict[str, Any], schema)
|
|
491
529
|
|
|
492
|
-
# Try package resources
|
|
530
|
+
# 5. Try package resources
|
|
493
531
|
for search_pattern in SCHEMA_SEARCH_PATHS:
|
|
494
532
|
search_path = search_pattern.format(name=base_name)
|
|
495
533
|
try:
|
|
@@ -503,44 +541,6 @@ async def load_agent_schema_async(
|
|
|
503
541
|
except Exception:
|
|
504
542
|
continue
|
|
505
543
|
|
|
506
|
-
# Try database lookup - always search public schemas, plus user-specific if user_id provided
|
|
507
|
-
from rem.services.postgres import get_postgres_service
|
|
508
|
-
|
|
509
|
-
should_disconnect = False
|
|
510
|
-
if db is None:
|
|
511
|
-
db = get_postgres_service()
|
|
512
|
-
if db:
|
|
513
|
-
await db.connect()
|
|
514
|
-
should_disconnect = True
|
|
515
|
-
|
|
516
|
-
if db:
|
|
517
|
-
try:
|
|
518
|
-
if user_id:
|
|
519
|
-
query = """
|
|
520
|
-
SELECT spec FROM schemas
|
|
521
|
-
WHERE LOWER(name) = LOWER($1)
|
|
522
|
-
AND (user_id = $2 OR user_id = 'system' OR user_id IS NULL)
|
|
523
|
-
LIMIT 1
|
|
524
|
-
"""
|
|
525
|
-
row = await db.fetchrow(query, base_name, user_id)
|
|
526
|
-
else:
|
|
527
|
-
# No user_id - only search public schemas
|
|
528
|
-
query = """
|
|
529
|
-
SELECT spec FROM schemas
|
|
530
|
-
WHERE LOWER(name) = LOWER($1)
|
|
531
|
-
AND (user_id = 'system' OR user_id IS NULL)
|
|
532
|
-
LIMIT 1
|
|
533
|
-
"""
|
|
534
|
-
row = await db.fetchrow(query, base_name)
|
|
535
|
-
if row:
|
|
536
|
-
spec = row.get("spec")
|
|
537
|
-
if spec and isinstance(spec, dict):
|
|
538
|
-
logger.info(f"✅ Loaded schema from database: {base_name}")
|
|
539
|
-
return spec
|
|
540
|
-
finally:
|
|
541
|
-
if should_disconnect:
|
|
542
|
-
await db.disconnect()
|
|
543
|
-
|
|
544
544
|
# Not found
|
|
545
545
|
raise FileNotFoundError(f"Schema not found: {schema_name_or_path}")
|
|
546
546
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: remdb
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.245
|
|
4
4
|
Summary: Resources Entities Moments - Bio-inspired memory system for agentic AI workloads
|
|
5
5
|
Project-URL: Homepage, https://github.com/Percolation-Labs/reminiscent
|
|
6
6
|
Project-URL: Documentation, https://github.com/Percolation-Labs/reminiscent/blob/main/README.md
|
|
@@ -39,7 +39,7 @@ Requires-Dist: opentelemetry-instrumentation-fastapi>=0.49b0
|
|
|
39
39
|
Requires-Dist: opentelemetry-instrumentation>=0.49b0
|
|
40
40
|
Requires-Dist: opentelemetry-sdk>=1.28.0
|
|
41
41
|
Requires-Dist: psycopg[binary]>=3.2.0
|
|
42
|
-
Requires-Dist: pydantic-ai>=0.0
|
|
42
|
+
Requires-Dist: pydantic-ai>=1.0.0
|
|
43
43
|
Requires-Dist: pydantic-settings>=2.6.0
|
|
44
44
|
Requires-Dist: pydantic>=2.10.0
|
|
45
45
|
Requires-Dist: pydub>=0.25.0
|
|
@@ -3,11 +3,11 @@ rem/config.py,sha256=cyXFpqgTvHeYeIriiQHGC1jSokp55BkJtMS1cVu-C1M,6769
|
|
|
3
3
|
rem/mcp_server.py,sha256=OK0XaO2k_7BnVRozOfH_xRL51SkRN9kLoNNp_zrrGeA,1383
|
|
4
4
|
rem/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
5
|
rem/registry.py,sha256=AAGcr7oRHiHsX2mu7TL4EgKw39IFea8F-YIgbX58CUM,10545
|
|
6
|
-
rem/settings.py,sha256=
|
|
7
|
-
rem/agentic/README.md,sha256=
|
|
6
|
+
rem/settings.py,sha256=W1ktvJvcna5i-zXHWa55t0uMN0uG0NoVJrvWmDhvTuE,62430
|
|
7
|
+
rem/agentic/README.md,sha256=DHt53giAbyEpp_8NV_WFkJJlfvVJX7lLyqNZRAz-OOo,23203
|
|
8
8
|
rem/agentic/__init__.py,sha256=-UZiEYpodfD5xDns6L0nYSqK9owr3NxiWsq6vmK1tGk,1268
|
|
9
|
-
rem/agentic/context.py,sha256=
|
|
10
|
-
rem/agentic/context_builder.py,sha256=
|
|
9
|
+
rem/agentic/context.py,sha256=_UlvHlTHdFQnOULVXrdr0SUmO8LmBbcsXzwIxGVSvzM,15635
|
|
10
|
+
rem/agentic/context_builder.py,sha256=7MuqcGNMqCI2XNTnLiL7j7Peb87am0gbfQ_qqd029-A,14229
|
|
11
11
|
rem/agentic/llm_provider_models.py,sha256=bkBs_6aQ0maerlnQNH5hWv21Os3mX5Q14zXTW_8bGgI,10508
|
|
12
12
|
rem/agentic/query.py,sha256=yBtVT9bCUT9DPKRw9UltzN4o9wgB-Ry-FfW814Eg1WE,3612
|
|
13
13
|
rem/agentic/query_helper.py,sha256=DAr-he5XsJfwrcEzfJCNujWYU6MFvK0JFXee2ulRMQU,2458
|
|
@@ -22,33 +22,35 @@ rem/agentic/mcp/tool_wrapper.py,sha256=7xpF1UuGZQy0rfuzQgkNxHGbwWFbNWnnIjtKupxRM
|
|
|
22
22
|
rem/agentic/otel/__init__.py,sha256=IC0lLMmuxXRZrhO9p8-GQ6raZDP9YE3gcuCwl6vBv4c,195
|
|
23
23
|
rem/agentic/otel/setup.py,sha256=-NL5jDXuDdQMKEhZfOtjZ2kJtpayQ7dhM0p1OrU185c,9629
|
|
24
24
|
rem/agentic/providers/phoenix.py,sha256=_e8-S8aSfpX2EulH0nXAermoDZ1c9Kh3QALGTCvCmC4,35422
|
|
25
|
-
rem/agentic/providers/pydantic_ai.py,sha256=
|
|
25
|
+
rem/agentic/providers/pydantic_ai.py,sha256=rMkfJSy_XcrgP5W8uhWGasdYJUxfU2wpdT8BHVn4mqM,35075
|
|
26
26
|
rem/agentic/tools/__init__.py,sha256=tb_9ml0i2LtEALAJ6h7D91xVEA_8ktDzD4s3nM0MsUE,147
|
|
27
27
|
rem/agentic/tools/rem_tools.py,sha256=0Aps2TcA3z6WLJQ1M98iYX-1uoIEwTozmwodl2_AUCI,7833
|
|
28
28
|
rem/api/README.md,sha256=68KtBi1nkXm_J0skGVBhchXP-cLNaBBka6ZhLqAncoA,19998
|
|
29
29
|
rem/api/deps.py,sha256=3_M8YOdyzEkr4kIhjJvxuDvnSaq7U8TLx1sZkEG63eU,6611
|
|
30
30
|
rem/api/main.py,sha256=6BcUdr0F74-RnVytToh8s9H7OmmO11Xgl_p03FjeDks,16757
|
|
31
31
|
rem/api/mcp_router/prompts.py,sha256=bVNsJMur6i0oyd38WIr-r0kUNUAlcGG595WVhBDwxik,4077
|
|
32
|
-
rem/api/mcp_router/resources.py,sha256=
|
|
32
|
+
rem/api/mcp_router/resources.py,sha256=plGhg8bp5hOstoIgPIpniVsBaWjSxz_dHsiabqWWh7g,26814
|
|
33
33
|
rem/api/mcp_router/server.py,sha256=06yqR7CBAcmMqHJyUpndQXXYCnu42M5Uen3Oh4mnMVI,11550
|
|
34
|
-
rem/api/mcp_router/tools.py,sha256=
|
|
34
|
+
rem/api/mcp_router/tools.py,sha256=jD9kStAnLtgdX33EaWrYds_yUT151sPh84WjYkR9izc,60943
|
|
35
35
|
rem/api/middleware/tracking.py,sha256=ZlFkCVsmIfGuiRX1PPWN0vEIPZoOFIKqMZ3P-CjwfHc,6453
|
|
36
36
|
rem/api/routers/admin.py,sha256=t5WRsi_niGvdqibk6Qel6T7uF0lO2AdDCG1sQC4HVB4,15179
|
|
37
|
-
rem/api/routers/auth.py,sha256=
|
|
37
|
+
rem/api/routers/auth.py,sha256=gF85VMen9BaHxWGWi5xXXYH5MfxZDmtaE2pGMxEfeZ8,31260
|
|
38
38
|
rem/api/routers/common.py,sha256=Sw39bkCOrqoJl0hB9ZuJhXd0223Aj0rJ9Uej-4DPAAU,517
|
|
39
39
|
rem/api/routers/dev.py,sha256=UpwEYZYuxsWSSHZosirdUp1uoyYbD_Mg47z4beqFx-4,2389
|
|
40
40
|
rem/api/routers/feedback.py,sha256=sr-NNawuAYEi-EwyCHYNwI0zGdS-Cwjs6NfGc6GZrnI,11525
|
|
41
41
|
rem/api/routers/messages.py,sha256=YMx3Z_dqDrltt1ZUleiLaBamrrOBD-hvLIhRKlBVn4M,20386
|
|
42
42
|
rem/api/routers/models.py,sha256=VvHA1JmpiyVCHhH68s8PNwpVxSvAyGlXQJ3T8dFMwRs,2088
|
|
43
|
-
rem/api/routers/query.py,sha256=
|
|
43
|
+
rem/api/routers/query.py,sha256=7g9e-LdrlIMr-VpW8MZFVT0oEVuoF8O5fIaUovp2u0M,14104
|
|
44
44
|
rem/api/routers/shared_sessions.py,sha256=2CRAZUR8OLq39KC1r4IBQycE5PYO5Jg9lSJG8mnPa7M,12866
|
|
45
45
|
rem/api/routers/chat/__init__.py,sha256=fck9klAzF7HJHNPAhl0B63uSavXvs6h26QhUsByf4JM,113
|
|
46
|
+
rem/api/routers/chat/child_streaming.py,sha256=B-XAvAK0UlJOCN_RNwNESgVkdpKg3emiPo2s3MdTuYs,13457
|
|
46
47
|
rem/api/routers/chat/completions.py,sha256=I6EKMVfEe4QmfsEfW6mTK7riJWZUzkWZCgNRnmJG7ik,29637
|
|
47
48
|
rem/api/routers/chat/json_utils.py,sha256=BVRu-7PWIHTbC9Ubq4MfifZ8qYQZpcGhEgFgPVcXXKE,2191
|
|
48
49
|
rem/api/routers/chat/models.py,sha256=kzBxRvm5Ie2IchJrnFOom8cx6_ieEbuF2RqfiRJNNh8,7339
|
|
49
50
|
rem/api/routers/chat/otel_utils.py,sha256=al_4v044T3sOtIZtT9kHiNT6Twlc7wqz26edCcUSHSY,930
|
|
50
51
|
rem/api/routers/chat/sse_events.py,sha256=m1-2HodSKx9NI6OCcgX17kHcV5GBYmp1iOm1lG8FdrE,16724
|
|
51
|
-
rem/api/routers/chat/streaming.py,sha256=
|
|
52
|
+
rem/api/routers/chat/streaming.py,sha256=6D98GxNSF-EIfcgzxumUaFm0gNee4D4-bhkWwF6hrgc,43594
|
|
53
|
+
rem/api/routers/chat/streaming_utils.py,sha256=ipVHWATbCjrg6Rrad9SMz0gIe6aS56lDn9fwwuFUJvA,9735
|
|
52
54
|
rem/auth/README.md,sha256=BpZUqEVYMUpQG4guykyuvmtzlH3_LsGzspuRZS20i8k,8631
|
|
53
55
|
rem/auth/__init__.py,sha256=ebS-_x21TZsgq7QVgziUpXagSVQU5y0kIxqc_ZywzCE,1027
|
|
54
56
|
rem/auth/jwt.py,sha256=VT77nTYqCt4tkbd_ZmXQy9wU3LcjQ8WLqm9sEcYLYLs,11600
|
|
@@ -61,21 +63,22 @@ rem/auth/providers/microsoft.py,sha256=sv6emYa5B7XTk6gi18n_UCLPDqUmrrsuDnAnWGvJA
|
|
|
61
63
|
rem/cli/README.md,sha256=Cn41x7YoNlnNg3t9WBMGfNXqZBfhjmU6hgPNGL1mlpo,13677
|
|
62
64
|
rem/cli/__init__.py,sha256=NazCCnBFZwMkvJgzeGkfYveP_MUpvbqHcOLZihew0-Q,188
|
|
63
65
|
rem/cli/dreaming.py,sha256=UUxx9zXFDIvI5QhCLB303TPH0OiYMnr3l2YhF2GvF_8,11537
|
|
64
|
-
rem/cli/main.py,sha256=
|
|
66
|
+
rem/cli/main.py,sha256=JvpdGixaBFMdKsAxBGza71Fy0_yejDh7uObFiHNq5Hc,3226
|
|
65
67
|
rem/cli/commands/README.md,sha256=CxTm4pAKVzE780sWn_sAILu2_nH_0oh9whppZvW4bew,9295
|
|
66
68
|
rem/cli/commands/__init__.py,sha256=wKff1WrBXwf-vDXjSvUuk-61Npm5716okVnOQ22FcEk,30
|
|
67
|
-
rem/cli/commands/ask.py,sha256=
|
|
69
|
+
rem/cli/commands/ask.py,sha256=3A8oCyUt1IlYWLYX390s1Yk--OgxdMdXuz8VqdqJiOk,23863
|
|
68
70
|
rem/cli/commands/cluster.py,sha256=MQThC3Da73ixVQ75UYxleQlB8AqPQLzEK73eaB8pNFI,64247
|
|
69
71
|
rem/cli/commands/configure.py,sha256=GQzlER8PkUCTaeYuLbXUYoeqlmEDafcjAcPJrDchC1I,16595
|
|
70
72
|
rem/cli/commands/db.py,sha256=9uAJT4xkMstVuqXjj02y-4A3y5G8DUsEaLf44Q3ayXA,28141
|
|
71
73
|
rem/cli/commands/dreaming.py,sha256=2P8nyX9gnRgyCJZrDuyJt5_YAsFmjUGa6dg7OvoLA8k,13292
|
|
72
74
|
rem/cli/commands/experiments.py,sha256=dRJKtvrGQu0a9bQZaLnVfdWhaur2bKYviixqOnYQC-k,62472
|
|
73
75
|
rem/cli/commands/mcp.py,sha256=PiP_zXflZ2lPVgmH3N8EGOWXDSfvNTQJD-MMW3ym3xo,1666
|
|
74
|
-
rem/cli/commands/process.py,sha256=
|
|
76
|
+
rem/cli/commands/process.py,sha256=JH5xcf11pDlw2eD5Cp2taFPRC0DbiHyiZcQfKSDk8rY,14681
|
|
77
|
+
rem/cli/commands/query.py,sha256=ttJObJD6YCqlfT0noCuSc-27PopEP7c293FbCw7s5nE,3712
|
|
75
78
|
rem/cli/commands/scaffold.py,sha256=hv2-ozD1bbD8FEky7OdIDzcgu-KISs5ek6APqykdZ6I,1618
|
|
76
79
|
rem/cli/commands/schema.py,sha256=oCsRUoih2MC_mpxmj14hsQy0xWLCddSUYcfGnDMlbuw,7325
|
|
77
80
|
rem/cli/commands/serve.py,sha256=ku6z5gxRwmY-vNdNELGPA8aiYyO4QGRgJ_H4wpusd8Y,2926
|
|
78
|
-
rem/cli/commands/session.py,sha256=
|
|
81
|
+
rem/cli/commands/session.py,sha256=2vPdaSXSWfs3YozxAzHoOY1ph9l9V4PAitzv2wjOcyI,13933
|
|
79
82
|
rem/models/core/__init__.py,sha256=BBbARx5_7uVz5FuuoPdFm3tbiWZWubs97i3smU0UxXg,1449
|
|
80
83
|
rem/models/core/core_model.py,sha256=aYVx2905n0b6TGLnIiV5YMWO2O8pxHVtLEWljWvURxU,2617
|
|
81
84
|
rem/models/core/engram.py,sha256=CuoilA74hmlgMT2mZCoEEh0jFsMrKUw9wdyFOygBa8E,10135
|
|
@@ -93,7 +96,7 @@ rem/models/entities/ontology.py,sha256=1K9rNZ32BjS24tmjYN89zW81kFVw2vAfcY24ldJqY
|
|
|
93
96
|
rem/models/entities/ontology_config.py,sha256=fe-LLM-AaKznVoQ02ou2GvPSAp_Bwez0rk3H0RIUYTw,5055
|
|
94
97
|
rem/models/entities/resource.py,sha256=FW7R_AylZilb-1iYfZA5MMQw2zA42CUVweKgO-4cwqM,3407
|
|
95
98
|
rem/models/entities/schema.py,sha256=CEcd49kR_6YgaLLKsWaIb2J0KdbVsgYoi_srPgzr9Aw,2945
|
|
96
|
-
rem/models/entities/session.py,sha256=
|
|
99
|
+
rem/models/entities/session.py,sha256=CODIf3979RZ-bj6gwVZFNmnlKmd6QnxhsmGPTSjn4IA,2519
|
|
97
100
|
rem/models/entities/shared_session.py,sha256=PWTH637NHmwziXCgr1BM0KXWLUzHrbfLlYKLH3qdU6A,5901
|
|
98
101
|
rem/models/entities/subscriber.py,sha256=0x51UkGRkAeJfr_0u4srN8H0NrXJEv5MdESeQsjvin4,5181
|
|
99
102
|
rem/models/entities/user.py,sha256=Ps-CWn-Rkj7yYEW768_mSu3maDxysxsJWT2T7XisuN4,2879
|
|
@@ -172,7 +175,7 @@ rem/services/postgres/migration_service.py,sha256=2irsWfzczZ0_-wge6ReyCrFrE3Hxvn
|
|
|
172
175
|
rem/services/postgres/programmable_diff_service.py,sha256=Ip6gRm7LRdYww_5nWkhnXPdqjHSW4sbFOWjBatLHiQs,25075
|
|
173
176
|
rem/services/postgres/pydantic_to_sqlalchemy.py,sha256=523lJuq_xeRWVo8D3ocFd7else5ZUw2XAketmhDN1wA,17295
|
|
174
177
|
rem/services/postgres/register_type.py,sha256=AF88kjn0Gdi8xEaAj5JimH1BrzZ7ONaSOQ4qKKXLhTw,11387
|
|
175
|
-
rem/services/postgres/repository.py,sha256=
|
|
178
|
+
rem/services/postgres/repository.py,sha256=U_I43BSGjK8qVBCCjyJjp6kCa2-U4A19Q-WdBMK_lfg,16630
|
|
176
179
|
rem/services/postgres/schema_generator.py,sha256=R0qJI_wFp4JgkGsh42kVtxdCAWjd129qlGV2_3YdgoM,23943
|
|
177
180
|
rem/services/postgres/service.py,sha256=3CIOP7LuaK4p2rYTyscIXasGLTwjb62HnAGbOCuEm74,27122
|
|
178
181
|
rem/services/postgres/sql_builder.py,sha256=dgezomG1s-cLcu8Q3u8AjOWO3Rtyg4r_m91UAE4vc9o,10418
|
|
@@ -183,17 +186,17 @@ rem/services/rem/executor.py,sha256=o30fYs7Y91arcCZ70PurPn-Q_7gXjxZXerk70A-MM4A,
|
|
|
183
186
|
rem/services/rem/parser.py,sha256=w7jFSzWuNSTrhPDw3s5IH4O0kVT4zwBp0i52RyNEPNs,6896
|
|
184
187
|
rem/services/rem/queries.py,sha256=k-fniVSMBcq4TPUw-g4kp6D9Fbs5DphqUwzAk2wXv5M,5146
|
|
185
188
|
rem/services/rem/query.py,sha256=z4Qcaed1mPG2p-4pazEUlnUFqOEYxrKGYLffwD2-V-c,12178
|
|
186
|
-
rem/services/rem/service.py,sha256
|
|
189
|
+
rem/services/rem/service.py,sha256=--yHq3ODXxX2mgc2AmUS_pNm46g2S8aEyJ0vEZYrjU0,22773
|
|
187
190
|
rem/services/session/README.md,sha256=WDoVWMRXrSh6wRSlUQ0oIHUItOol65INl86VCNPUOYQ,10446
|
|
188
191
|
rem/services/session/__init__.py,sha256=y9tvBcto0qUcduZwAQn1EwrAo-bZ0ZErodz_1SeN5kU,417
|
|
189
|
-
rem/services/session/compression.py,sha256=
|
|
190
|
-
rem/services/session/pydantic_messages.py,sha256=
|
|
191
|
-
rem/services/session/reload.py,sha256=
|
|
192
|
+
rem/services/session/compression.py,sha256=WHh0IZP-pM3_QNeYcYLyq-9Zz_p2HT4iFezor5RQcks,18936
|
|
193
|
+
rem/services/session/pydantic_messages.py,sha256=1mLq-AJfa8Gf0kfwmPGW_cghFPKEB5dkHHFmdeP9-lY,12338
|
|
194
|
+
rem/services/session/reload.py,sha256=Abr9QOq_PPTsQelMGzWvgh8fKRbW2WH_ZT8ATSsvsgQ,2896
|
|
192
195
|
rem/sql/background_indexes.sql,sha256=wbQMtgap247K29w24aPPHhhF0tdcFuZ2nCWyALh51DM,1985
|
|
193
196
|
rem/sql/migrations/001_install.sql,sha256=95-f4L8KUo5te9r_G0fNPdsr8KXK34HaF-dH_vbdr9k,35485
|
|
194
197
|
rem/sql/migrations/002_install_models.sql,sha256=bxb35SX4KZ9qLAlQrKf35R82F3jWiqmVyeuvDRlXUeA,153766
|
|
195
198
|
rem/sql/migrations/003_optional_extensions.sql,sha256=QACy3J50ZgV_4BHNkkT3iswkE1ijc0oCAOgavv6KC5g,12443
|
|
196
|
-
rem/sql/migrations/004_cache_system.sql,sha256=
|
|
199
|
+
rem/sql/migrations/004_cache_system.sql,sha256=dbjKNTFsB2pHAOqThkpsK_pMWN0GKZoFvQopHauqzjY,10728
|
|
197
200
|
rem/sql/migrations/005_schema_update.sql,sha256=fVcuUt0I24UXMEWA25TM-kN29GC19IAqxlxFP-3Z2ys,5055
|
|
198
201
|
rem/sql/migrations/migrate_session_id_to_uuid.sql,sha256=-H4ROtu4SPHTVbzW60Am1YdpJ_OHagWCAwgqd3wbDIM,1248
|
|
199
202
|
rem/utils/AGENTIC_CHUNKING.md,sha256=Z9IyL5yoFTlvamPE5KA7cs0Btoc_6bq8hh7Q_WARlw8,17230
|
|
@@ -211,7 +214,7 @@ rem/utils/files.py,sha256=6ax-5vmk_4cI-IG55PT9sKj_DqXBl32RkTRSsxqvgGY,8759
|
|
|
211
214
|
rem/utils/markdown.py,sha256=zhfSiSRX36vky1b2UOGKsuSr11L2l6Kl_O7iSfwQXBY,401
|
|
212
215
|
rem/utils/mime_types.py,sha256=8KGEuPWVdQ8r1DFLsgiaAgEYqMaaQIk-6lCVOBB1z_A,5346
|
|
213
216
|
rem/utils/model_helpers.py,sha256=c60hxrS6wmYCIJjjl7uMq4cE-GCe27A7YAizRjKqtJE,15160
|
|
214
|
-
rem/utils/schema_loader.py,sha256=
|
|
217
|
+
rem/utils/schema_loader.py,sha256=FEooLXUxzzpoUeNsgwYGM5AkM6flsm4cp1Pm6L3mDSA,25933
|
|
215
218
|
rem/utils/sql_paths.py,sha256=4bEHU3J3liZdhWYu0WSpCQSo-wfO0sHC_BrJlStRAks,4257
|
|
216
219
|
rem/utils/sql_types.py,sha256=VKGmDhxPP91EnjJ6h78Q2sUvjBulowR1brtgAdACbtE,10622
|
|
217
220
|
rem/utils/user_id.py,sha256=AhrUniMZYDybHT6mcv9RalUS3klobqkoMmPh9ZxiZcU,2107
|
|
@@ -226,7 +229,7 @@ rem/workers/dreaming.py,sha256=UqCf-iBUhzBVBRFj7_DtR6q27oRo7EUoal9qqHLzlo4,17823
|
|
|
226
229
|
rem/workers/engram_processor.py,sha256=Ws92kAILMLK_np3F1HRmhKKXiruLIvFn3o9MY3V2W8g,10779
|
|
227
230
|
rem/workers/sqs_file_processor.py,sha256=tX8S0yo2n1XGvaZ7JUqeGmtTwxybQqz3wkHT2j6Ak7Y,6597
|
|
228
231
|
rem/workers/unlogged_maintainer.py,sha256=KhebhXl3s6DwvHnXXEJ45r5tLK9PNj-0KclNIQVQ68s,15817
|
|
229
|
-
remdb-0.3.
|
|
230
|
-
remdb-0.3.
|
|
231
|
-
remdb-0.3.
|
|
232
|
-
remdb-0.3.
|
|
232
|
+
remdb-0.3.245.dist-info/METADATA,sha256=aqFWcRJ1shoMwHMtXAAkX4hkEq-9HPNdHZBwxrE0C8w,53340
|
|
233
|
+
remdb-0.3.245.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
234
|
+
remdb-0.3.245.dist-info/entry_points.txt,sha256=gmmrz7tRC1WGUrCMJMg6p5pEP5h5mPYRvWIxp1FYdr0,42
|
|
235
|
+
remdb-0.3.245.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|