remdb 0.3.181__py3-none-any.whl → 0.3.223__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 +262 -2
- rem/agentic/context.py +173 -0
- rem/agentic/context_builder.py +12 -2
- rem/agentic/mcp/tool_wrapper.py +2 -2
- rem/agentic/providers/pydantic_ai.py +1 -1
- rem/agentic/schema.py +2 -2
- rem/api/main.py +1 -1
- rem/api/mcp_router/server.py +4 -0
- rem/api/mcp_router/tools.py +542 -170
- rem/api/routers/admin.py +30 -4
- rem/api/routers/auth.py +106 -10
- rem/api/routers/chat/completions.py +66 -18
- rem/api/routers/chat/sse_events.py +7 -3
- rem/api/routers/chat/streaming.py +254 -22
- rem/api/routers/common.py +18 -0
- rem/api/routers/dev.py +7 -1
- rem/api/routers/feedback.py +9 -1
- rem/api/routers/messages.py +176 -38
- rem/api/routers/models.py +9 -1
- rem/api/routers/query.py +12 -1
- rem/api/routers/shared_sessions.py +16 -0
- rem/auth/jwt.py +19 -4
- rem/auth/middleware.py +42 -28
- rem/cli/README.md +62 -0
- rem/cli/commands/db.py +33 -19
- rem/cli/commands/process.py +171 -43
- rem/models/entities/ontology.py +18 -20
- rem/schemas/agents/rem.yaml +1 -1
- rem/services/content/service.py +18 -5
- rem/services/postgres/__init__.py +28 -3
- rem/services/postgres/diff_service.py +57 -5
- rem/services/postgres/programmable_diff_service.py +635 -0
- rem/services/postgres/pydantic_to_sqlalchemy.py +2 -2
- rem/services/postgres/register_type.py +11 -10
- rem/services/postgres/repository.py +14 -4
- rem/services/session/__init__.py +8 -1
- rem/services/session/compression.py +40 -2
- rem/services/session/pydantic_messages.py +276 -0
- rem/settings.py +28 -0
- rem/sql/migrations/001_install.sql +125 -7
- rem/sql/migrations/002_install_models.sql +136 -126
- rem/sql/migrations/004_cache_system.sql +7 -275
- rem/sql/migrations/migrate_session_id_to_uuid.sql +45 -0
- rem/utils/schema_loader.py +6 -6
- {remdb-0.3.181.dist-info → remdb-0.3.223.dist-info}/METADATA +1 -1
- {remdb-0.3.181.dist-info → remdb-0.3.223.dist-info}/RECORD +48 -44
- {remdb-0.3.181.dist-info → remdb-0.3.223.dist-info}/WHEEL +0 -0
- {remdb-0.3.181.dist-info → remdb-0.3.223.dist-info}/entry_points.txt +0 -0
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
-- REM Cache System
|
|
2
|
-
-- Description:
|
|
2
|
+
-- Description: Cache management helpers for UNLOGGED tables (kv_store)
|
|
3
3
|
-- Version: 1.0.0
|
|
4
4
|
-- Date: 2025-11-29
|
|
5
5
|
--
|
|
6
6
|
-- This migration adds:
|
|
7
7
|
-- 1. cache_system_state table for debouncing and API secret storage
|
|
8
8
|
-- 2. maybe_trigger_kv_rebuild() function for async rebuild triggering
|
|
9
|
-
-- 3.
|
|
9
|
+
-- 3. Helper functions for cache management
|
|
10
10
|
--
|
|
11
|
-
--
|
|
12
|
-
--
|
|
13
|
-
-- Priority: pg_net (if available) → dblink (always available)
|
|
11
|
+
-- NOTE: Core functions (rem_lookup, rem_fuzzy, rem_traverse) are defined in 001_install.sql
|
|
12
|
+
-- This file only provides cache-specific infrastructure.
|
|
14
13
|
|
|
15
14
|
-- ============================================================================
|
|
16
15
|
-- REQUIRED EXTENSION
|
|
@@ -194,271 +193,6 @@ $$ LANGUAGE plpgsql;
|
|
|
194
193
|
COMMENT ON FUNCTION maybe_trigger_kv_rebuild IS
|
|
195
194
|
'Async trigger for kv_store rebuild. Uses pg_net (API) or dblink (SQL). Includes debouncing.';
|
|
196
195
|
|
|
197
|
-
-- ============================================================================
|
|
198
|
-
-- UPDATED: rem_lookup with self-healing
|
|
199
|
-
-- ============================================================================
|
|
200
|
-
|
|
201
|
-
CREATE OR REPLACE FUNCTION rem_lookup(
|
|
202
|
-
p_entity_key VARCHAR(255),
|
|
203
|
-
p_tenant_id VARCHAR(100),
|
|
204
|
-
p_user_id VARCHAR(100)
|
|
205
|
-
)
|
|
206
|
-
RETURNS TABLE(
|
|
207
|
-
entity_type VARCHAR(100),
|
|
208
|
-
data JSONB
|
|
209
|
-
) AS $$
|
|
210
|
-
DECLARE
|
|
211
|
-
entity_table VARCHAR(100);
|
|
212
|
-
query_sql TEXT;
|
|
213
|
-
effective_user_id VARCHAR(100);
|
|
214
|
-
v_result_count INTEGER := 0;
|
|
215
|
-
BEGIN
|
|
216
|
-
effective_user_id := COALESCE(p_user_id, p_tenant_id);
|
|
217
|
-
|
|
218
|
-
-- First lookup in KV store to get entity_type (table name)
|
|
219
|
-
SELECT kv.entity_type INTO entity_table
|
|
220
|
-
FROM kv_store kv
|
|
221
|
-
WHERE (kv.user_id = effective_user_id OR kv.user_id IS NULL)
|
|
222
|
-
AND kv.entity_key = p_entity_key
|
|
223
|
-
LIMIT 1;
|
|
224
|
-
|
|
225
|
-
-- If not found, check if cache is empty and maybe trigger rebuild
|
|
226
|
-
IF entity_table IS NULL THEN
|
|
227
|
-
-- SELF-HEALING: Check if this is because cache is empty
|
|
228
|
-
IF rem_kv_store_empty(effective_user_id) THEN
|
|
229
|
-
PERFORM maybe_trigger_kv_rebuild(effective_user_id, 'rem_lookup');
|
|
230
|
-
END IF;
|
|
231
|
-
RETURN;
|
|
232
|
-
END IF;
|
|
233
|
-
|
|
234
|
-
-- Fetch raw record from underlying table as JSONB
|
|
235
|
-
query_sql := format('
|
|
236
|
-
SELECT
|
|
237
|
-
%L::VARCHAR(100) AS entity_type,
|
|
238
|
-
row_to_json(t)::jsonb AS data
|
|
239
|
-
FROM %I t
|
|
240
|
-
WHERE (t.user_id = $1 OR t.user_id IS NULL)
|
|
241
|
-
AND t.name = $2
|
|
242
|
-
AND t.deleted_at IS NULL
|
|
243
|
-
', entity_table, entity_table);
|
|
244
|
-
|
|
245
|
-
RETURN QUERY EXECUTE query_sql USING effective_user_id, p_entity_key;
|
|
246
|
-
END;
|
|
247
|
-
$$ LANGUAGE plpgsql STABLE;
|
|
248
|
-
|
|
249
|
-
-- ============================================================================
|
|
250
|
-
-- UPDATED: rem_fuzzy with self-healing
|
|
251
|
-
-- ============================================================================
|
|
252
|
-
|
|
253
|
-
CREATE OR REPLACE FUNCTION rem_fuzzy(
|
|
254
|
-
p_query TEXT,
|
|
255
|
-
p_tenant_id VARCHAR(100),
|
|
256
|
-
p_threshold REAL DEFAULT 0.3,
|
|
257
|
-
p_limit INTEGER DEFAULT 10,
|
|
258
|
-
p_user_id VARCHAR(100) DEFAULT NULL
|
|
259
|
-
)
|
|
260
|
-
RETURNS TABLE(
|
|
261
|
-
entity_type VARCHAR(100),
|
|
262
|
-
similarity_score REAL,
|
|
263
|
-
data JSONB
|
|
264
|
-
) AS $$
|
|
265
|
-
DECLARE
|
|
266
|
-
kv_matches RECORD;
|
|
267
|
-
entities_by_table JSONB := '{}'::jsonb;
|
|
268
|
-
table_keys JSONB;
|
|
269
|
-
effective_user_id VARCHAR(100);
|
|
270
|
-
v_found_any BOOLEAN := FALSE;
|
|
271
|
-
BEGIN
|
|
272
|
-
effective_user_id := COALESCE(p_user_id, p_tenant_id);
|
|
273
|
-
|
|
274
|
-
-- Find matching keys in KV store
|
|
275
|
-
FOR kv_matches IN
|
|
276
|
-
SELECT
|
|
277
|
-
kv.entity_key,
|
|
278
|
-
kv.entity_type,
|
|
279
|
-
similarity(kv.entity_key, p_query) AS sim_score
|
|
280
|
-
FROM kv_store kv
|
|
281
|
-
WHERE (kv.user_id = effective_user_id OR kv.user_id IS NULL)
|
|
282
|
-
AND kv.entity_key % p_query
|
|
283
|
-
AND similarity(kv.entity_key, p_query) >= p_threshold
|
|
284
|
-
ORDER BY sim_score DESC
|
|
285
|
-
LIMIT p_limit
|
|
286
|
-
LOOP
|
|
287
|
-
v_found_any := TRUE;
|
|
288
|
-
-- Build JSONB mapping {table: [keys]}
|
|
289
|
-
IF entities_by_table ? kv_matches.entity_type THEN
|
|
290
|
-
table_keys := entities_by_table->kv_matches.entity_type;
|
|
291
|
-
entities_by_table := jsonb_set(
|
|
292
|
-
entities_by_table,
|
|
293
|
-
ARRAY[kv_matches.entity_type],
|
|
294
|
-
table_keys || jsonb_build_array(kv_matches.entity_key)
|
|
295
|
-
);
|
|
296
|
-
ELSE
|
|
297
|
-
entities_by_table := jsonb_set(
|
|
298
|
-
entities_by_table,
|
|
299
|
-
ARRAY[kv_matches.entity_type],
|
|
300
|
-
jsonb_build_array(kv_matches.entity_key)
|
|
301
|
-
);
|
|
302
|
-
END IF;
|
|
303
|
-
END LOOP;
|
|
304
|
-
|
|
305
|
-
-- SELF-HEALING: If no matches and cache is empty, trigger rebuild
|
|
306
|
-
IF NOT v_found_any AND rem_kv_store_empty(effective_user_id) THEN
|
|
307
|
-
PERFORM maybe_trigger_kv_rebuild(effective_user_id, 'rem_fuzzy');
|
|
308
|
-
END IF;
|
|
309
|
-
|
|
310
|
-
-- Fetch full records
|
|
311
|
-
RETURN QUERY
|
|
312
|
-
SELECT
|
|
313
|
-
f.entity_type::VARCHAR(100),
|
|
314
|
-
similarity(f.entity_key, p_query) AS similarity_score,
|
|
315
|
-
f.entity_record AS data
|
|
316
|
-
FROM rem_fetch(entities_by_table, effective_user_id) f
|
|
317
|
-
ORDER BY similarity_score DESC;
|
|
318
|
-
END;
|
|
319
|
-
$$ LANGUAGE plpgsql STABLE;
|
|
320
|
-
|
|
321
|
-
-- ============================================================================
|
|
322
|
-
-- UPDATED: rem_traverse with self-healing
|
|
323
|
-
-- ============================================================================
|
|
324
|
-
|
|
325
|
-
CREATE OR REPLACE FUNCTION rem_traverse(
|
|
326
|
-
p_entity_key VARCHAR(255),
|
|
327
|
-
p_tenant_id VARCHAR(100),
|
|
328
|
-
p_user_id VARCHAR(100),
|
|
329
|
-
p_max_depth INTEGER DEFAULT 1,
|
|
330
|
-
p_rel_type VARCHAR(100) DEFAULT NULL,
|
|
331
|
-
p_keys_only BOOLEAN DEFAULT FALSE
|
|
332
|
-
)
|
|
333
|
-
RETURNS TABLE(
|
|
334
|
-
depth INTEGER,
|
|
335
|
-
entity_key VARCHAR(255),
|
|
336
|
-
entity_type VARCHAR(100),
|
|
337
|
-
entity_id UUID,
|
|
338
|
-
rel_type VARCHAR(100),
|
|
339
|
-
rel_weight REAL,
|
|
340
|
-
path TEXT[],
|
|
341
|
-
entity_record JSONB
|
|
342
|
-
) AS $$
|
|
343
|
-
DECLARE
|
|
344
|
-
graph_keys RECORD;
|
|
345
|
-
entities_by_table JSONB := '{}'::jsonb;
|
|
346
|
-
table_keys JSONB;
|
|
347
|
-
effective_user_id VARCHAR(100);
|
|
348
|
-
v_found_start BOOLEAN := FALSE;
|
|
349
|
-
BEGIN
|
|
350
|
-
effective_user_id := COALESCE(p_user_id, p_tenant_id);
|
|
351
|
-
|
|
352
|
-
-- Check if start entity exists in kv_store
|
|
353
|
-
SELECT TRUE INTO v_found_start
|
|
354
|
-
FROM kv_store kv
|
|
355
|
-
WHERE (kv.user_id = effective_user_id OR kv.user_id IS NULL)
|
|
356
|
-
AND kv.entity_key = p_entity_key
|
|
357
|
-
LIMIT 1;
|
|
358
|
-
|
|
359
|
-
-- SELF-HEALING: If start not found and cache is empty, trigger rebuild
|
|
360
|
-
IF NOT COALESCE(v_found_start, FALSE) THEN
|
|
361
|
-
IF rem_kv_store_empty(effective_user_id) THEN
|
|
362
|
-
PERFORM maybe_trigger_kv_rebuild(effective_user_id, 'rem_traverse');
|
|
363
|
-
END IF;
|
|
364
|
-
RETURN;
|
|
365
|
-
END IF;
|
|
366
|
-
|
|
367
|
-
-- Original traverse logic
|
|
368
|
-
FOR graph_keys IN
|
|
369
|
-
WITH RECURSIVE graph_traversal AS (
|
|
370
|
-
SELECT
|
|
371
|
-
0 AS depth,
|
|
372
|
-
kv.entity_key,
|
|
373
|
-
kv.entity_type,
|
|
374
|
-
kv.entity_id,
|
|
375
|
-
NULL::VARCHAR(100) AS rel_type,
|
|
376
|
-
NULL::REAL AS rel_weight,
|
|
377
|
-
ARRAY[kv.entity_key]::TEXT[] AS path
|
|
378
|
-
FROM kv_store kv
|
|
379
|
-
WHERE (kv.user_id = effective_user_id OR kv.user_id IS NULL)
|
|
380
|
-
AND kv.entity_key = p_entity_key
|
|
381
|
-
|
|
382
|
-
UNION ALL
|
|
383
|
-
|
|
384
|
-
SELECT
|
|
385
|
-
gt.depth + 1,
|
|
386
|
-
target_kv.entity_key,
|
|
387
|
-
target_kv.entity_type,
|
|
388
|
-
target_kv.entity_id,
|
|
389
|
-
(edge->>'rel_type')::VARCHAR(100) AS rel_type,
|
|
390
|
-
COALESCE((edge->>'weight')::REAL, 1.0) AS rel_weight,
|
|
391
|
-
gt.path || target_kv.entity_key AS path
|
|
392
|
-
FROM graph_traversal gt
|
|
393
|
-
JOIN kv_store source_kv ON source_kv.entity_key = gt.entity_key
|
|
394
|
-
AND (source_kv.user_id = effective_user_id OR source_kv.user_id IS NULL)
|
|
395
|
-
CROSS JOIN LATERAL jsonb_array_elements(COALESCE(source_kv.graph_edges, '[]'::jsonb)) AS edge
|
|
396
|
-
JOIN kv_store target_kv ON target_kv.entity_key = (edge->>'dst')::VARCHAR(255)
|
|
397
|
-
AND (target_kv.user_id = effective_user_id OR target_kv.user_id IS NULL)
|
|
398
|
-
WHERE gt.depth < p_max_depth
|
|
399
|
-
AND (p_rel_type IS NULL OR (edge->>'rel_type')::VARCHAR(100) = p_rel_type)
|
|
400
|
-
AND NOT (target_kv.entity_key = ANY(gt.path))
|
|
401
|
-
)
|
|
402
|
-
SELECT DISTINCT ON (gt.entity_key)
|
|
403
|
-
gt.depth,
|
|
404
|
-
gt.entity_key,
|
|
405
|
-
gt.entity_type,
|
|
406
|
-
gt.entity_id,
|
|
407
|
-
gt.rel_type,
|
|
408
|
-
gt.rel_weight,
|
|
409
|
-
gt.path
|
|
410
|
-
FROM graph_traversal gt
|
|
411
|
-
WHERE gt.depth > 0
|
|
412
|
-
ORDER BY gt.entity_key, gt.depth
|
|
413
|
-
LOOP
|
|
414
|
-
IF p_keys_only THEN
|
|
415
|
-
depth := graph_keys.depth;
|
|
416
|
-
entity_key := graph_keys.entity_key;
|
|
417
|
-
entity_type := graph_keys.entity_type;
|
|
418
|
-
entity_id := graph_keys.entity_id;
|
|
419
|
-
rel_type := graph_keys.rel_type;
|
|
420
|
-
rel_weight := graph_keys.rel_weight;
|
|
421
|
-
path := graph_keys.path;
|
|
422
|
-
entity_record := NULL;
|
|
423
|
-
RETURN NEXT;
|
|
424
|
-
ELSE
|
|
425
|
-
IF entities_by_table ? graph_keys.entity_type THEN
|
|
426
|
-
table_keys := entities_by_table->graph_keys.entity_type;
|
|
427
|
-
entities_by_table := jsonb_set(
|
|
428
|
-
entities_by_table,
|
|
429
|
-
ARRAY[graph_keys.entity_type],
|
|
430
|
-
table_keys || jsonb_build_array(graph_keys.entity_key)
|
|
431
|
-
);
|
|
432
|
-
ELSE
|
|
433
|
-
entities_by_table := jsonb_set(
|
|
434
|
-
entities_by_table,
|
|
435
|
-
ARRAY[graph_keys.entity_type],
|
|
436
|
-
jsonb_build_array(graph_keys.entity_key)
|
|
437
|
-
);
|
|
438
|
-
END IF;
|
|
439
|
-
END IF;
|
|
440
|
-
END LOOP;
|
|
441
|
-
|
|
442
|
-
IF NOT p_keys_only THEN
|
|
443
|
-
RETURN QUERY
|
|
444
|
-
SELECT
|
|
445
|
-
g.depth,
|
|
446
|
-
g.entity_key,
|
|
447
|
-
g.entity_type,
|
|
448
|
-
g.entity_id,
|
|
449
|
-
g.rel_type,
|
|
450
|
-
g.rel_weight,
|
|
451
|
-
g.path,
|
|
452
|
-
f.entity_record
|
|
453
|
-
FROM (
|
|
454
|
-
SELECT * FROM rem_traverse(p_entity_key, p_tenant_id, effective_user_id, p_max_depth, p_rel_type, TRUE)
|
|
455
|
-
) g
|
|
456
|
-
LEFT JOIN rem_fetch(entities_by_table, effective_user_id) f
|
|
457
|
-
ON g.entity_key = f.entity_key;
|
|
458
|
-
END IF;
|
|
459
|
-
END;
|
|
460
|
-
$$ LANGUAGE plpgsql STABLE;
|
|
461
|
-
|
|
462
196
|
-- ============================================================================
|
|
463
197
|
-- HELPER: Get API secret for validation
|
|
464
198
|
-- ============================================================================
|
|
@@ -527,9 +261,9 @@ BEGIN
|
|
|
527
261
|
RAISE NOTICE '';
|
|
528
262
|
RAISE NOTICE 'Functions:';
|
|
529
263
|
RAISE NOTICE ' maybe_trigger_kv_rebuild() - Async rebuild trigger';
|
|
530
|
-
RAISE NOTICE '
|
|
531
|
-
RAISE NOTICE '
|
|
532
|
-
RAISE NOTICE '
|
|
264
|
+
RAISE NOTICE ' rem_kv_store_empty() - Check if cache is empty';
|
|
265
|
+
RAISE NOTICE ' rem_get_cache_api_secret() - Get API secret';
|
|
266
|
+
RAISE NOTICE ' rem_record_cache_rebuild() - Record rebuild completion';
|
|
533
267
|
RAISE NOTICE '';
|
|
534
268
|
RAISE NOTICE 'Async Methods Available:';
|
|
535
269
|
IF v_has_pgnet THEN
|
|
@@ -542,7 +276,5 @@ BEGIN
|
|
|
542
276
|
ELSE
|
|
543
277
|
RAISE NOTICE ' [ ] dblink - Not installed';
|
|
544
278
|
END IF;
|
|
545
|
-
RAISE NOTICE '';
|
|
546
|
-
RAISE NOTICE 'Self-Healing: Queries will auto-trigger rebuild on empty cache';
|
|
547
279
|
RAISE NOTICE '============================================================';
|
|
548
280
|
END $$;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
-- Migration: Update messages.session_id from session name to session UUID
|
|
2
|
+
-- This fixes the bug where messages were stored with session.name instead of session.id
|
|
3
|
+
--
|
|
4
|
+
-- Run this migration AFTER deploying the code fixes in remdb 0.3.204+
|
|
5
|
+
-- The code now correctly stores session.id (UUID), but existing data needs migration.
|
|
6
|
+
|
|
7
|
+
BEGIN;
|
|
8
|
+
|
|
9
|
+
-- First, count how many messages need to be updated
|
|
10
|
+
DO $$
|
|
11
|
+
DECLARE
|
|
12
|
+
count_to_migrate INTEGER;
|
|
13
|
+
BEGIN
|
|
14
|
+
SELECT COUNT(*) INTO count_to_migrate
|
|
15
|
+
FROM messages m
|
|
16
|
+
JOIN sessions s ON m.session_id = s.name
|
|
17
|
+
WHERE m.session_id != s.id::text;
|
|
18
|
+
|
|
19
|
+
RAISE NOTICE 'Messages needing migration: %', count_to_migrate;
|
|
20
|
+
END $$;
|
|
21
|
+
|
|
22
|
+
-- Update messages.session_id from session name to session UUID
|
|
23
|
+
UPDATE messages m
|
|
24
|
+
SET session_id = s.id::text
|
|
25
|
+
FROM sessions s
|
|
26
|
+
WHERE m.session_id = s.name
|
|
27
|
+
AND m.session_id != s.id::text;
|
|
28
|
+
|
|
29
|
+
-- Report how many were updated
|
|
30
|
+
DO $$
|
|
31
|
+
DECLARE
|
|
32
|
+
updated_count INTEGER;
|
|
33
|
+
BEGIN
|
|
34
|
+
GET DIAGNOSTICS updated_count = ROW_COUNT;
|
|
35
|
+
RAISE NOTICE 'Messages updated: %', updated_count;
|
|
36
|
+
END $$;
|
|
37
|
+
|
|
38
|
+
COMMIT;
|
|
39
|
+
|
|
40
|
+
-- Verify the fix - all messages should now join by UUID
|
|
41
|
+
SELECT
|
|
42
|
+
'Messages matching sessions by UUID' as status,
|
|
43
|
+
COUNT(*) as count
|
|
44
|
+
FROM messages m
|
|
45
|
+
JOIN sessions s ON m.session_id = s.id::text;
|
rem/utils/schema_loader.py
CHANGED
|
@@ -291,14 +291,14 @@ def load_agent_schema(
|
|
|
291
291
|
|
|
292
292
|
# Check cache first (only for package resources, not custom paths)
|
|
293
293
|
path = Path(schema_name_or_path)
|
|
294
|
-
is_custom_path = path.exists() or '/' in str(schema_name_or_path) or '\\' in str(schema_name_or_path)
|
|
294
|
+
is_custom_path = (path.exists() and path.is_file()) or '/' in str(schema_name_or_path) or '\\' in str(schema_name_or_path)
|
|
295
295
|
|
|
296
296
|
if use_cache and not is_custom_path and cache_key in _fs_schema_cache:
|
|
297
297
|
logger.debug(f"Loading schema from cache: {cache_key}")
|
|
298
298
|
return _fs_schema_cache[cache_key]
|
|
299
299
|
|
|
300
|
-
# 1. Try exact path first (absolute or relative to cwd)
|
|
301
|
-
if path.exists():
|
|
300
|
+
# 1. Try exact path first (absolute or relative to cwd) - must be a file, not directory
|
|
301
|
+
if path.exists() and path.is_file():
|
|
302
302
|
logger.debug(f"Loading schema from exact path: {path}")
|
|
303
303
|
with open(path, "r") as f:
|
|
304
304
|
schema = yaml.safe_load(f)
|
|
@@ -432,15 +432,15 @@ async def load_agent_schema_async(
|
|
|
432
432
|
if cache_key.endswith('.yaml') or cache_key.endswith('.yml'):
|
|
433
433
|
cache_key = cache_key.rsplit('.', 1)[0]
|
|
434
434
|
|
|
435
|
-
is_custom_path = path.exists() or '/' in str(schema_name_or_path) or '\\' in str(schema_name_or_path)
|
|
435
|
+
is_custom_path = (path.exists() and path.is_file()) or '/' in str(schema_name_or_path) or '\\' in str(schema_name_or_path)
|
|
436
436
|
|
|
437
437
|
# Check cache
|
|
438
438
|
if not is_custom_path and cache_key in _fs_schema_cache:
|
|
439
439
|
logger.debug(f"Loading schema from cache: {cache_key}")
|
|
440
440
|
return _fs_schema_cache[cache_key]
|
|
441
441
|
|
|
442
|
-
# Try exact path
|
|
443
|
-
if path.exists():
|
|
442
|
+
# Try exact path (must be a file, not directory)
|
|
443
|
+
if path.exists() and path.is_file():
|
|
444
444
|
logger.debug(f"Loading schema from exact path: {path}")
|
|
445
445
|
with open(path, "r") as f:
|
|
446
446
|
schema = yaml.safe_load(f)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: remdb
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.223
|
|
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
|
|
@@ -3,61 +3,62 @@ 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=El_nPe_uq8EllybZ4u-uYC_zriwxQqJ6H-vKugMyi60,60939
|
|
7
|
+
rem/agentic/README.md,sha256=M8opfg40BAnJokRhw7C-hovyfI183qX2wP8uavlWOfs,30510
|
|
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=l7sJIJGJm_40xp-mmqibblu7Ik33MJM2E9mhbE5qHlA,15133
|
|
10
|
+
rem/agentic/context_builder.py,sha256=0V-uN5B3Q7VPVH4uaN26aHMDd_ChagfCiwfYty30LbI,14583
|
|
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
|
|
14
|
-
rem/agentic/schema.py,sha256=
|
|
14
|
+
rem/agentic/schema.py,sha256=YDmkfR6JEV9elgOEc-7e_YZzLAtKMZ2f-viBvJIPeZY,22991
|
|
15
15
|
rem/agentic/serialization.py,sha256=zwjyvcGjTHuChG9goRHEVlA3etAekVJGzv9o6Fo7raM,7999
|
|
16
16
|
rem/agentic/agents/README.md,sha256=npq2ENb5dNGYxqGQYTb9E0JquyKcXrMt8kM2q6LRxRk,4972
|
|
17
17
|
rem/agentic/agents/__init__.py,sha256=OV-9J0EpxLv_zjhv9v2o-42tFcSkLabrwgumood27ZI,893
|
|
18
18
|
rem/agentic/agents/agent_manager.py,sha256=idT4brDCSzjDKkm897acKHgbJb25FISvDKqeWyU7hak,8228
|
|
19
19
|
rem/agentic/agents/sse_simulator.py,sha256=NTJuunUlEY5KFUKbxgkrt5iihdVIEAqPsufUVisziaQ,16392
|
|
20
20
|
rem/agentic/mcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
21
|
-
rem/agentic/mcp/tool_wrapper.py,sha256=
|
|
21
|
+
rem/agentic/mcp/tool_wrapper.py,sha256=7xpF1UuGZQy0rfuzQgkNxHGbwWFbNWnnIjtKupxRMDw,12170
|
|
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=WGzH6MoMbTBeUrEEGU5s-MzDScLR0iXWHprIbOsqoXM,34187
|
|
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
|
-
rem/api/main.py,sha256=
|
|
30
|
+
rem/api/main.py,sha256=6BcUdr0F74-RnVytToh8s9H7OmmO11Xgl_p03FjeDks,16757
|
|
31
31
|
rem/api/mcp_router/prompts.py,sha256=bVNsJMur6i0oyd38WIr-r0kUNUAlcGG595WVhBDwxik,4077
|
|
32
32
|
rem/api/mcp_router/resources.py,sha256=sN9quo7HsGxlDpOS1_1kwM1RhT9oayvpz9Bsi0DwKkM,18788
|
|
33
|
-
rem/api/mcp_router/server.py,sha256=
|
|
34
|
-
rem/api/mcp_router/tools.py,sha256=
|
|
33
|
+
rem/api/mcp_router/server.py,sha256=06yqR7CBAcmMqHJyUpndQXXYCnu42M5Uen3Oh4mnMVI,11550
|
|
34
|
+
rem/api/mcp_router/tools.py,sha256=j0KSfJ9jt1e7sGNn5nvhQpE_qO0O9WP6NRVlJbfieOI,59510
|
|
35
35
|
rem/api/middleware/tracking.py,sha256=ZlFkCVsmIfGuiRX1PPWN0vEIPZoOFIKqMZ3P-CjwfHc,6453
|
|
36
|
-
rem/api/routers/admin.py,sha256=
|
|
37
|
-
rem/api/routers/auth.py,sha256=
|
|
38
|
-
rem/api/routers/
|
|
39
|
-
rem/api/routers/
|
|
40
|
-
rem/api/routers/
|
|
41
|
-
rem/api/routers/
|
|
42
|
-
rem/api/routers/
|
|
43
|
-
rem/api/routers/
|
|
36
|
+
rem/api/routers/admin.py,sha256=t5WRsi_niGvdqibk6Qel6T7uF0lO2AdDCG1sQC4HVB4,15179
|
|
37
|
+
rem/api/routers/auth.py,sha256=api1zAX_f2z4HTpEyvCgAipYrrDoLZgySQN5S5goxno,26580
|
|
38
|
+
rem/api/routers/common.py,sha256=Sw39bkCOrqoJl0hB9ZuJhXd0223Aj0rJ9Uej-4DPAAU,517
|
|
39
|
+
rem/api/routers/dev.py,sha256=UpwEYZYuxsWSSHZosirdUp1uoyYbD_Mg47z4beqFx-4,2389
|
|
40
|
+
rem/api/routers/feedback.py,sha256=sr-NNawuAYEi-EwyCHYNwI0zGdS-Cwjs6NfGc6GZrnI,11525
|
|
41
|
+
rem/api/routers/messages.py,sha256=YMx3Z_dqDrltt1ZUleiLaBamrrOBD-hvLIhRKlBVn4M,20386
|
|
42
|
+
rem/api/routers/models.py,sha256=VvHA1JmpiyVCHhH68s8PNwpVxSvAyGlXQJ3T8dFMwRs,2088
|
|
43
|
+
rem/api/routers/query.py,sha256=0BZjiLJ4MKxP1eb8_tKrK-gzvzVG6aLY9VmbIa-hwVQ,14400
|
|
44
|
+
rem/api/routers/shared_sessions.py,sha256=2CRAZUR8OLq39KC1r4IBQycE5PYO5Jg9lSJG8mnPa7M,12866
|
|
44
45
|
rem/api/routers/chat/__init__.py,sha256=fck9klAzF7HJHNPAhl0B63uSavXvs6h26QhUsByf4JM,113
|
|
45
|
-
rem/api/routers/chat/completions.py,sha256=
|
|
46
|
+
rem/api/routers/chat/completions.py,sha256=5rpbTlrGcFvyaaqUlKrdvvyEzNgBuYp7xKsamExeZ8w,30229
|
|
46
47
|
rem/api/routers/chat/json_utils.py,sha256=BVRu-7PWIHTbC9Ubq4MfifZ8qYQZpcGhEgFgPVcXXKE,2191
|
|
47
48
|
rem/api/routers/chat/models.py,sha256=kzBxRvm5Ie2IchJrnFOom8cx6_ieEbuF2RqfiRJNNh8,7339
|
|
48
49
|
rem/api/routers/chat/otel_utils.py,sha256=al_4v044T3sOtIZtT9kHiNT6Twlc7wqz26edCcUSHSY,930
|
|
49
|
-
rem/api/routers/chat/sse_events.py,sha256=
|
|
50
|
-
rem/api/routers/chat/streaming.py,sha256=
|
|
50
|
+
rem/api/routers/chat/sse_events.py,sha256=m1-2HodSKx9NI6OCcgX17kHcV5GBYmp1iOm1lG8FdrE,16724
|
|
51
|
+
rem/api/routers/chat/streaming.py,sha256=Jf89eag2cEvOD2zKklwU_hS_44KD5bzsGSV888c_5nI,55008
|
|
51
52
|
rem/auth/README.md,sha256=BpZUqEVYMUpQG4guykyuvmtzlH3_LsGzspuRZS20i8k,8631
|
|
52
53
|
rem/auth/__init__.py,sha256=ebS-_x21TZsgq7QVgziUpXagSVQU5y0kIxqc_ZywzCE,1027
|
|
53
|
-
rem/auth/jwt.py,sha256=
|
|
54
|
-
rem/auth/middleware.py,sha256=
|
|
54
|
+
rem/auth/jwt.py,sha256=VT77nTYqCt4tkbd_ZmXQy9wU3LcjQ8WLqm9sEcYLYLs,11600
|
|
55
|
+
rem/auth/middleware.py,sha256=LuEVtl2umRqeh2gp3vPrrDHtiELghkgho9hflXRaOkc,11740
|
|
55
56
|
rem/auth/providers/__init__.py,sha256=yWurO-3o0fT_XIVcIyDX-ECx37jVn5g0pvOxcsU4Q3k,429
|
|
56
57
|
rem/auth/providers/base.py,sha256=wa7lrgM0AetZnITc45QFyiNHXgVVoWmZgW9tBpInDLw,11831
|
|
57
58
|
rem/auth/providers/email.py,sha256=LOrVIUiWDTTXMDLeiaTlrA1IQgELQS-nEtXzmzV2BaE,7000
|
|
58
59
|
rem/auth/providers/google.py,sha256=p3JAYOtyWwiN6T05rZI6sQJqrXhHaunaNOucHTBzWWc,5346
|
|
59
60
|
rem/auth/providers/microsoft.py,sha256=sv6emYa5B7XTk6gi18n_UCLPDqUmrrsuDnAnWGvJAYA,8444
|
|
60
|
-
rem/cli/README.md,sha256=
|
|
61
|
+
rem/cli/README.md,sha256=Cn41x7YoNlnNg3t9WBMGfNXqZBfhjmU6hgPNGL1mlpo,13677
|
|
61
62
|
rem/cli/__init__.py,sha256=NazCCnBFZwMkvJgzeGkfYveP_MUpvbqHcOLZihew0-Q,188
|
|
62
63
|
rem/cli/dreaming.py,sha256=UUxx9zXFDIvI5QhCLB303TPH0OiYMnr3l2YhF2GvF_8,11537
|
|
63
64
|
rem/cli/main.py,sha256=gP-lnD6kkCGeeMHh9aWPRb26CT1zpsDUwuQ30Zqkobw,3127
|
|
@@ -66,11 +67,11 @@ rem/cli/commands/__init__.py,sha256=wKff1WrBXwf-vDXjSvUuk-61Npm5716okVnOQ22FcEk,
|
|
|
66
67
|
rem/cli/commands/ask.py,sha256=uxKM9z_k6iNi39UC1WQ8crZcT1u17TWo_MwgI0nZANo,19374
|
|
67
68
|
rem/cli/commands/cluster.py,sha256=MQThC3Da73ixVQ75UYxleQlB8AqPQLzEK73eaB8pNFI,64247
|
|
68
69
|
rem/cli/commands/configure.py,sha256=GQzlER8PkUCTaeYuLbXUYoeqlmEDafcjAcPJrDchC1I,16595
|
|
69
|
-
rem/cli/commands/db.py,sha256=
|
|
70
|
+
rem/cli/commands/db.py,sha256=9uAJT4xkMstVuqXjj02y-4A3y5G8DUsEaLf44Q3ayXA,28141
|
|
70
71
|
rem/cli/commands/dreaming.py,sha256=2P8nyX9gnRgyCJZrDuyJt5_YAsFmjUGa6dg7OvoLA8k,13292
|
|
71
72
|
rem/cli/commands/experiments.py,sha256=dRJKtvrGQu0a9bQZaLnVfdWhaur2bKYviixqOnYQC-k,62472
|
|
72
73
|
rem/cli/commands/mcp.py,sha256=PiP_zXflZ2lPVgmH3N8EGOWXDSfvNTQJD-MMW3ym3xo,1666
|
|
73
|
-
rem/cli/commands/process.py,sha256=
|
|
74
|
+
rem/cli/commands/process.py,sha256=acitqSuisyDwVZ2f2ndF_C5LQbPoQpVrGJLJwl8POG8,14242
|
|
74
75
|
rem/cli/commands/scaffold.py,sha256=hv2-ozD1bbD8FEky7OdIDzcgu-KISs5ek6APqykdZ6I,1618
|
|
75
76
|
rem/cli/commands/schema.py,sha256=oCsRUoih2MC_mpxmj14hsQy0xWLCddSUYcfGnDMlbuw,7325
|
|
76
77
|
rem/cli/commands/serve.py,sha256=ku6z5gxRwmY-vNdNELGPA8aiYyO4QGRgJ_H4wpusd8Y,2926
|
|
@@ -88,7 +89,7 @@ rem/models/entities/file.py,sha256=plUm0Caww_yNrpgnOkGp3RBv4l9I6szGOe-NuAuWCcg,1
|
|
|
88
89
|
rem/models/entities/image_resource.py,sha256=FIZbGVgsroHY47ESbFIjy0sOtgM8w6vHPUk9lJSVJz4,3254
|
|
89
90
|
rem/models/entities/message.py,sha256=KHHDBKs_UsWQ-0LURRQlDTV_iiUozmERMBWLPlHPbgg,1966
|
|
90
91
|
rem/models/entities/moment.py,sha256=sTRFShQwgJMez9OcU7-Vs6k-Whof2TuZCVjdUSyVjVY,4434
|
|
91
|
-
rem/models/entities/ontology.py,sha256=
|
|
92
|
+
rem/models/entities/ontology.py,sha256=1K9rNZ32BjS24tmjYN89zW81kFVw2vAfcY24ldJqY-I,7398
|
|
92
93
|
rem/models/entities/ontology_config.py,sha256=fe-LLM-AaKznVoQ02ou2GvPSAp_Bwez0rk3H0RIUYTw,5055
|
|
93
94
|
rem/models/entities/resource.py,sha256=FW7R_AylZilb-1iYfZA5MMQw2zA42CUVweKgO-4cwqM,3407
|
|
94
95
|
rem/models/entities/schema.py,sha256=CEcd49kR_6YgaLLKsWaIb2J0KdbVsgYoi_srPgzr9Aw,2945
|
|
@@ -99,7 +100,7 @@ rem/models/entities/user.py,sha256=Ps-CWn-Rkj7yYEW768_mSu3maDxysxsJWT2T7XisuN4,2
|
|
|
99
100
|
rem/schemas/README.md,sha256=_WH2A78jyLb11xu8q1tu4pDMlgZfE9WjYqrAUbn2BIM,13588
|
|
100
101
|
rem/schemas/__init__.py,sha256=cY7Hqc056Mb3t12nfpkAK6WZDvOP1gk4rv0CK4VbhTk,213
|
|
101
102
|
rem/schemas/agents/README.md,sha256=FZI5B8Miqod7KY3KxidW4q8u9W7FbtigV2VU7ropPS0,2815
|
|
102
|
-
rem/schemas/agents/rem.yaml,sha256=
|
|
103
|
+
rem/schemas/agents/rem.yaml,sha256=oYVvyfbyW0wCbF-XVrfW3FitbTF4Zdgr5hOHcJ-19Ls,8389
|
|
103
104
|
rem/schemas/agents/core/agent-builder.yaml,sha256=-Yy-X1nreK1hEjGad1Pr0ROtG1LiRtidq8-63CMEqL4,7399
|
|
104
105
|
rem/schemas/agents/core/moment-builder.yaml,sha256=-nieKbEiYKiIwBtTCBtIVDKV-cfXpGn0AJ66BUUm48U,8368
|
|
105
106
|
rem/schemas/agents/core/rem-query-agent.yaml,sha256=dQyShquyn-2nGooy8tyZ588etfx4kzfAE1xDIBCJCVI,10265
|
|
@@ -130,7 +131,7 @@ rem/services/audio/transcriber.py,sha256=CbUkNr_AyFZ4NImr6giwgDTT_xPmOe3iSr_YPdB
|
|
|
130
131
|
rem/services/content/README.md,sha256=nKOYqYbMljCVRZ55dlGU6Afipo0FVV7YXqT_dV-VXsw,35806
|
|
131
132
|
rem/services/content/__init__.py,sha256=JtfEPROctu3_R5oGdo04PxpgYqXxAz-TbpS8Ejkjdfs,120
|
|
132
133
|
rem/services/content/providers.py,sha256=xKW6Bn_fJpQGtnESufZcLRh7BAjWqSOLVdYiEg6rYDc,27909
|
|
133
|
-
rem/services/content/service.py,sha256=
|
|
134
|
+
rem/services/content/service.py,sha256=WsamRS9Zho4Hzh_IDk8D0W8VECSOVk1roW-u6z4436Q,30562
|
|
134
135
|
rem/services/dreaming/README.md,sha256=JhzndF6yRP2Eut_AlvukZHV9MSv83V--V2pA0GXXf2g,9100
|
|
135
136
|
rem/services/dreaming/__init__.py,sha256=3j2TBC1_0z8AlCA9jiqsecyzPFaptCUUHsO_RlXrINc,1719
|
|
136
137
|
rem/services/dreaming/affinity_service.py,sha256=ScWKwRIPLywqqL2RFd_TsTg_KKmPb0ngBCpOpmIG7w4,12205
|
|
@@ -165,12 +166,13 @@ rem/services/phoenix/client.py,sha256=0sDm26v7Wi9jTof31Cf0A_5hA_g0HKGQys4qeBqySc
|
|
|
165
166
|
rem/services/phoenix/config.py,sha256=rgFEJ5iENuvBa0_nhEhgz0gW4Sg0uo_fkQMgsnHiTc8,2932
|
|
166
167
|
rem/services/phoenix/prompt_labels.py,sha256=82VIsXgZ51d3YLzHxusmfzd40yl5YOVnddzv_lNFIGg,13953
|
|
167
168
|
rem/services/postgres/README.md,sha256=Uh9ZyATF2PyNWz-QEtXl7wJ9Q_3Q0SL2hVKO2ncSwB8,22796
|
|
168
|
-
rem/services/postgres/__init__.py,sha256=
|
|
169
|
-
rem/services/postgres/diff_service.py,sha256=
|
|
169
|
+
rem/services/postgres/__init__.py,sha256=KOeC6m1pPy2390nizSnKqa0M2WeFOIMOs21c0PDeKgE,1034
|
|
170
|
+
rem/services/postgres/diff_service.py,sha256=iL5ZmGxHnkyUQSJC1QhMI9Mff_WsP7wAXhXT1VC54jg,22108
|
|
170
171
|
rem/services/postgres/migration_service.py,sha256=2irsWfzczZ0_-wge6ReyCrFrE3HxvnlwKAEp8mWqtQo,14897
|
|
171
|
-
rem/services/postgres/
|
|
172
|
-
rem/services/postgres/
|
|
173
|
-
rem/services/postgres/
|
|
172
|
+
rem/services/postgres/programmable_diff_service.py,sha256=Ip6gRm7LRdYww_5nWkhnXPdqjHSW4sbFOWjBatLHiQs,25075
|
|
173
|
+
rem/services/postgres/pydantic_to_sqlalchemy.py,sha256=523lJuq_xeRWVo8D3ocFd7else5ZUw2XAketmhDN1wA,17295
|
|
174
|
+
rem/services/postgres/register_type.py,sha256=AF88kjn0Gdi8xEaAj5JimH1BrzZ7ONaSOQ4qKKXLhTw,11387
|
|
175
|
+
rem/services/postgres/repository.py,sha256=EvrsyMyu-1WDihjC-T2XnBTMYWwrRkhv1eoZDg0wjTg,16701
|
|
174
176
|
rem/services/postgres/schema_generator.py,sha256=R0qJI_wFp4JgkGsh42kVtxdCAWjd129qlGV2_3YdgoM,23943
|
|
175
177
|
rem/services/postgres/service.py,sha256=3CIOP7LuaK4p2rYTyscIXasGLTwjb62HnAGbOCuEm74,27122
|
|
176
178
|
rem/services/postgres/sql_builder.py,sha256=dgezomG1s-cLcu8Q3u8AjOWO3Rtyg4r_m91UAE4vc9o,10418
|
|
@@ -183,15 +185,17 @@ rem/services/rem/queries.py,sha256=k-fniVSMBcq4TPUw-g4kp6D9Fbs5DphqUwzAk2wXv5M,5
|
|
|
183
185
|
rem/services/rem/query.py,sha256=z4Qcaed1mPG2p-4pazEUlnUFqOEYxrKGYLffwD2-V-c,12178
|
|
184
186
|
rem/services/rem/service.py,sha256=cYPPCZ90S9QRWi_4JxEe9oybdDM8Is7wgYt8EpLoiVY,21093
|
|
185
187
|
rem/services/session/README.md,sha256=WDoVWMRXrSh6wRSlUQ0oIHUItOol65INl86VCNPUOYQ,10446
|
|
186
|
-
rem/services/session/__init__.py,sha256=
|
|
187
|
-
rem/services/session/compression.py,sha256=
|
|
188
|
+
rem/services/session/__init__.py,sha256=y9tvBcto0qUcduZwAQn1EwrAo-bZ0ZErodz_1SeN5kU,417
|
|
189
|
+
rem/services/session/compression.py,sha256=rxUlnieBmonOxRtYhg1QTkHmKdQZ5bDbW2Qcsc0zEtg,18573
|
|
190
|
+
rem/services/session/pydantic_messages.py,sha256=eWqSJW9nyZDgUT1Fxrrp1CVIwlipH4AYwzPBWhPuHXI,10816
|
|
188
191
|
rem/services/session/reload.py,sha256=qbs9yYYBaEH0n_XN_A4BqHcB0RIX_JMkZjHNzUR6zY4,2805
|
|
189
192
|
rem/sql/background_indexes.sql,sha256=wbQMtgap247K29w24aPPHhhF0tdcFuZ2nCWyALh51DM,1985
|
|
190
|
-
rem/sql/migrations/001_install.sql,sha256=
|
|
191
|
-
rem/sql/migrations/002_install_models.sql,sha256=
|
|
193
|
+
rem/sql/migrations/001_install.sql,sha256=95-f4L8KUo5te9r_G0fNPdsr8KXK34HaF-dH_vbdr9k,35485
|
|
194
|
+
rem/sql/migrations/002_install_models.sql,sha256=bxb35SX4KZ9qLAlQrKf35R82F3jWiqmVyeuvDRlXUeA,153766
|
|
192
195
|
rem/sql/migrations/003_optional_extensions.sql,sha256=QACy3J50ZgV_4BHNkkT3iswkE1ijc0oCAOgavv6KC5g,12443
|
|
193
|
-
rem/sql/migrations/004_cache_system.sql,sha256=
|
|
196
|
+
rem/sql/migrations/004_cache_system.sql,sha256=iUMRj4r45EhI2kKABp9PS9i_Bs16715HG2ovbYMOsgc,10571
|
|
194
197
|
rem/sql/migrations/005_schema_update.sql,sha256=fVcuUt0I24UXMEWA25TM-kN29GC19IAqxlxFP-3Z2ys,5055
|
|
198
|
+
rem/sql/migrations/migrate_session_id_to_uuid.sql,sha256=-H4ROtu4SPHTVbzW60Am1YdpJ_OHagWCAwgqd3wbDIM,1248
|
|
195
199
|
rem/utils/AGENTIC_CHUNKING.md,sha256=Z9IyL5yoFTlvamPE5KA7cs0Btoc_6bq8hh7Q_WARlw8,17230
|
|
196
200
|
rem/utils/README.md,sha256=Osix2SVYAECMFTFnLhn8D8rsPrtNaCBWfkZfkn5RS60,18087
|
|
197
201
|
rem/utils/__init__.py,sha256=ZGMTgR7g-V3fhfgKo791wGBhdxy72xTJSo7Q_xwkQRI,1417
|
|
@@ -207,7 +211,7 @@ rem/utils/files.py,sha256=6ax-5vmk_4cI-IG55PT9sKj_DqXBl32RkTRSsxqvgGY,8759
|
|
|
207
211
|
rem/utils/markdown.py,sha256=zhfSiSRX36vky1b2UOGKsuSr11L2l6Kl_O7iSfwQXBY,401
|
|
208
212
|
rem/utils/mime_types.py,sha256=8KGEuPWVdQ8r1DFLsgiaAgEYqMaaQIk-6lCVOBB1z_A,5346
|
|
209
213
|
rem/utils/model_helpers.py,sha256=c60hxrS6wmYCIJjjl7uMq4cE-GCe27A7YAizRjKqtJE,15160
|
|
210
|
-
rem/utils/schema_loader.py,sha256=
|
|
214
|
+
rem/utils/schema_loader.py,sha256=waiIqxAFGpJbPKLf_pqk87KUjAEKs-rJcm9Gv9H-aKA,24194
|
|
211
215
|
rem/utils/sql_paths.py,sha256=4bEHU3J3liZdhWYu0WSpCQSo-wfO0sHC_BrJlStRAks,4257
|
|
212
216
|
rem/utils/sql_types.py,sha256=VKGmDhxPP91EnjJ6h78Q2sUvjBulowR1brtgAdACbtE,10622
|
|
213
217
|
rem/utils/user_id.py,sha256=AhrUniMZYDybHT6mcv9RalUS3klobqkoMmPh9ZxiZcU,2107
|
|
@@ -222,7 +226,7 @@ rem/workers/dreaming.py,sha256=UqCf-iBUhzBVBRFj7_DtR6q27oRo7EUoal9qqHLzlo4,17823
|
|
|
222
226
|
rem/workers/engram_processor.py,sha256=Ws92kAILMLK_np3F1HRmhKKXiruLIvFn3o9MY3V2W8g,10779
|
|
223
227
|
rem/workers/sqs_file_processor.py,sha256=tX8S0yo2n1XGvaZ7JUqeGmtTwxybQqz3wkHT2j6Ak7Y,6597
|
|
224
228
|
rem/workers/unlogged_maintainer.py,sha256=KhebhXl3s6DwvHnXXEJ45r5tLK9PNj-0KclNIQVQ68s,15817
|
|
225
|
-
remdb-0.3.
|
|
226
|
-
remdb-0.3.
|
|
227
|
-
remdb-0.3.
|
|
228
|
-
remdb-0.3.
|
|
229
|
+
remdb-0.3.223.dist-info/METADATA,sha256=Ys8z6tXLftbQF3hzy73So9WSOkkJ3kI54d09QKV7Zr4,53341
|
|
230
|
+
remdb-0.3.223.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
231
|
+
remdb-0.3.223.dist-info/entry_points.txt,sha256=gmmrz7tRC1WGUrCMJMg6p5pEP5h5mPYRvWIxp1FYdr0,42
|
|
232
|
+
remdb-0.3.223.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|