Skip to content

fix(storage): persist semantic summary cache by filename#1422

Open
yeyitech wants to merge 2 commits intovolcengine:mainfrom
yeyitech:fix/summary-cache-key-mismatch
Open

fix(storage): persist semantic summary cache by filename#1422
yeyitech wants to merge 2 commits intovolcengine:mainfrom
yeyitech:fix/summary-cache-key-mismatch

Conversation

@yeyitech
Copy link
Copy Markdown
Contributor

Summary

  • add a directory-level sidecar that stores file summaries by exact filename
  • prefer the sidecar cache during incremental semantic refresh, with parsing kept as a fallback for existing data
  • write and sync the cache alongside / , and cover both DAG incremental and memory-directory flows with regression tests

Verification

  • Listing 'openviking/storage/queuefs'...
  • manual async verification of the two new regression tests via direct invocation
  • ============================= test session starts ==============================
    platform darwin -- Python 3.10.12, pytest-8.4.2, pluggy-1.6.0
    rootdir: /Users/bytedance/contextgo/OpenViking
    configfile: pyproject.toml
    plugins: asyncio-0.23.3, cov-4.1.0, anyio-4.10.0
    asyncio: mode=auto
    collected 0 items / 1 error

==================================== ERRORS ====================================
________________________ ERROR collecting test session _________________________
../../.pyenv/versions/3.10.12/lib/python3.10/site-packages/pluggy/_hooks.py:512: in call
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
../../.pyenv/versions/3.10.12/lib/python3.10/site-packages/pluggy/_manager.py:120: in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
../../.pyenv/versions/3.10.12/lib/python3.10/site-packages/pytest_asyncio/plugin.py:626: in pytest_collectstart
pyobject = collector.obj
E AttributeError: 'Package' object has no attribute 'obj'
=============================== warnings summary ===============================
openviking/resource/watch_manager.py:28
/Users/bytedance/contextgo/OpenViking/openviking/resource/watch_manager.py:28: PydanticDeprecatedSince20: Support for class-based config is deprecated, use ConfigDict instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.12/migration/
class WatchTask(BaseModel):

../../.pyenv/versions/3.10.12/lib/python3.10/site-packages/pydantic/_internal/_generate_schema.py:319
../../.pyenv/versions/3.10.12/lib/python3.10/site-packages/pydantic/_internal/_generate_schema.py:319
../../.pyenv/versions/3.10.12/lib/python3.10/site-packages/pydantic/_internal/_generate_schema.py:319
/Users/bytedance/.pyenv/versions/3.10.12/lib/python3.10/site-packages/pydantic/_internal/_generate_schema.py:319: PydanticDeprecatedSince20: json_encoders is deprecated. See https://docs.pydantic.dev/2.12/concepts/serialization/#custom-serializers for alternatives. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.12/migration/
warnings.warn(

openviking/storage/vectordb/utils/validation.py:137
/Users/bytedance/contextgo/OpenViking/openviking/storage/vectordb/utils/validation.py:137: PydanticDeprecatedSince212: Using @model_validator with mode='after' on a classmethod is deprecated. Instead, use an instance method. See the documentation at https://docs.pydantic.dev/2.12/concepts/validators/#model-after-validator. Deprecated in Pydantic V2.12 to be removed in V3.0.
def validate_field_logic(cls, m):

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html

--------- coverage: platform darwin, python 3.10.12-final-0 ----------
Name Stmts Miss Cover Missing

openviking/init.py 36 14 61% 21-22, 34-36, 38-40, 42-44, 46-48, 50-52, 54-56
openviking/async_client.py 173 112 35% 40-44, 59-70, 76-77, 81-82, 86-90, 95-103, 117, 128-129, 138-139, 143-144, 148-149, 155-156, 160-161, 165-166, 187-188, 196-197, 201-202, 235-240, 257, 261-262, 271-272, 281-282, 297-298, 332-334, 354-355, 368-369, 373-374, 378-379, 391-392, 410-416, 427-428, 439-440, 450-451, 455-456, 460-465, 475-476, 480-481, 487-488, 499-500, 510-511, 526-527, 544-545, 555, 563, 568
openviking/client.py 5 5 0% 8-13
openviking/client/init.py 6 0 100%
openviking/client/local.py 154 99 36% 24-31, 49-54, 59, 65, 69, 89-110, 123-133, 140, 144-146, 150-152, 166, 185, 196, 200, 204, 208, 220, 224, 228, 240-252, 269-281, 298-318, 333, 345, 351, 355, 359, 370-373, 380, 384-387, 393-396, 400-403, 407, 413-418, 425, 446-463, 472, 482, 490, 507-513, 524-525, 533, 541, 546
openviking/client/session.py 29 14 52% 34-36, 58-63, 73, 82, 86, 94, 98, 102, 105
openviking/console/init.py 2 2 0% 9-10
openviking/console/app.py 286 286 0% 5-476
openviking/console/bootstrap.py 27 27 0% 5-75
openviking/console/config.py 25 25 0% 5-69
openviking/core/init.py 5 0 100%
openviking/core/building_tree.py 54 39 28% 26-31, 35-36, 41-43, 48, 52, 56-59, 63, 67-75, 80-98, 101, 104
openviking/core/context.py 114 76 33% 48, 80-102, 106-112, 116-121, 125-137, 141, 144, 149, 153-154, 158-191, 196-200, 205-242
openviking/core/directories.py 105 80 24% 129-137, 147, 151-169, 173-188, 192-208, 219-243, 254-280, 284-288, 292-299, 309-327, 333-335
openviking/core/mcp_converter.py 26 23 12% 10-51, 61
openviking/core/skill_loader.py 37 23 38% 20-25, 30-44, 56-59, 64-71
openviking/crypto/init.py 5 0 100%
openviking/crypto/config.py 120 106 12% 31-56, 61-90, 95-105, 110-126, 139-158, 171-211
openviking/crypto/encryptor.py 90 71 21% 50-51, 55-68, 82-92, 114-143, 169-185, 195-232, 236-244, 248-258
openviking/crypto/exceptions.py 16 0 100%
openviking/crypto/providers.py 300 245 18% 44, 49, 54, 59, 76-88, 96-102, 106-114, 127-130, 144-145, 158-159, 163-165, 169-188, 192-193, 228-236, 245-266, 270-281, 285-300, 312-323, 335-345, 354-418, 427, 439-440, 475-485, 494-576, 588-589, 601-602, 611-645, 654, 666-667, 684-732
openviking/eval/init.py 2 2 0% 7-25
openviking/eval/ragas/init.py 126 126 0% 7-341
openviking/eval/ragas/analyze_records.py 36 36 0% 16-127
openviking/eval/ragas/base.py 23 23 0% 7-59
openviking/eval/ragas/generator.py 33 33 0% 7-134
openviking/eval/ragas/pipeline.py 76 76 0% 7-202
openviking/eval/ragas/play_recorder.py 99 99 0% 16-255
openviking/eval/ragas/playback.py 347 347 0% 9-635
openviking/eval/ragas/rag_eval.py 226 226 0% 12-488
openviking/eval/ragas/record_analysis.py 191 191 0% 9-439
openviking/eval/ragas/types.py 23 23 0% 7-47
openviking/eval/recorder/init.py 4 4 0% 9-25
openviking/eval/recorder/async_writer.py 95 95 0% 9-172
openviking/eval/recorder/playback.py 6 6 0% 10-27
openviking/eval/recorder/recorder.py 125 125 0% 7-367
openviking/eval/recorder/recording_client.py 116 116 0% 9-271
openviking/eval/recorder/types.py 86 86 0% 7-141
openviking/eval/recorder/wrapper.py 236 236 0% 9-473
openviking/message/init.py 3 0 100%
openviking/message/message.py 99 72 27% 28-31, 50-62, 66-73, 81-110, 115-150, 160-162, 178-205, 214, 218, 222-225, 229
openviking/message/part.py 35 8 77% 65-88
openviking/models/init.py 0 0 100%
openviking/models/embedder/init.py 17 2 88% 39-40
openviking/models/embedder/base.py 200 123 38% 24-32, 38-42, 47-50, 57-60, 73-82, 100, 105, 110, 126-133, 146, 158, 167, 173-176, 180, 183, 197-223, 233, 238, 243, 260, 273, 277, 288-294, 316, 325, 349, 354, 378, 387, 392, 397, 412-414, 418-421, 427-430, 436-440, 447-451, 457, 460-461, 491-526
openviking/models/embedder/cohere_embedders.py 126 105 17% 35-37, 55-94, 97-105, 108-111, 114-128, 132-134, 137-155, 158-183, 186-209, 214-246, 250-259, 262
openviking/models/embedder/gemini_embedders.py 183 180 2% 9-450
openviking/models/embedder/jina_embedders.py 130 107 18% 34-36, 101-133, 137-148, 151-158, 161-166, 170-171, 192-217, 220-244, 259-286, 291-320, 328
openviking/models/embedder/litellm_embedders.py 116 99 15% 70-87, 98-100, 104-137, 141-162, 183-200, 203-218, 233-254, 259-276, 284
openviking/models/embedder/minimax_embedders.py 146 121 17% 58-91, 95-105, 109-110, 114-143, 146-154, 157-160, 163-168, 175-200, 204-214, 217-233, 237-252, 257-276, 280, 283-292
openviking/models/embedder/openai_embedders.py 171 142 17% 113-149, 153-160, 171-173, 176-197, 213-226, 239-257, 260-267, 272-274, 277-282, 298-317, 320-336, 351-373, 378-402, 410, 420, 426, 436, 442, 445
openviking/models/embedder/vikingdb_embedders.py 291 258 11% 33-42, 51-74, 82-110, 116-125, 129-144, 162-168, 171-196, 199-226, 229-252, 257-283, 286, 302-306, 312-337, 340-365, 368-393, 398-424, 442-449, 455-486, 489-520, 523-555, 560-596, 599, 602-610
openviking/models/embedder/volcengine_embedders.py 291 258 11% 22-52, 83-107, 111-115, 118-139, 160-184, 187-189, 192-215, 230-261, 266-299, 302, 329-343, 346-367, 388-407, 410-412, 415-435, 450-452, 457-484, 516-532, 535-556, 577-601, 604-606, 609-633, 648-650, 655-683, 686
openviking/models/embedder/voyage_embedders.py 98 81 17% 42-44, 62-87, 90-93, 96-101, 106-129, 132-155, 159-184, 189-215, 219
openviking/models/rerank/init.py 6 0 100%
openviking/models/rerank/base.py 34 24 29% 17-21, 33, 37, 54, 74-96, 109, 113
openviking/models/rerank/cohere_rerank.py 40 29 28% 30-35, 56-91, 94, 107-109
openviking/models/rerank/litellm_rerank.py 43 34 21% 30-34, 48-98, 111-113
openviking/models/rerank/openai_rerank.py 49 39 20% 44-49, 63-122, 135-137
openviking/models/rerank/volcengine_rerank.py 72 57 21% 50-56, 66-85, 99-151, 164-184
openviking/models/vlm/init.py 6 0 100%
openviking/models/vlm/backends/litellm_vlm.py 192 159 17% 89-93, 104-115, 119-130, 134-146, 153-167, 171-197, 208-237, 241-251, 255-274, 284-286, 297-307, 318-330, 347-361, 377-388, 404-415, 428-431
openviking/models/vlm/backends/openai_vlm.py 252 213 15% 18-19, 44-58, 65-68, 72-86, 90-104, 108-122, 126-127, 134-145, 149-159, 163-182, 190-201, 205-226, 230-251, 261-274, 285-307, 310-315, 318-323, 334-346, 363-378, 390-404, 408-434, 445-457, 473-485
openviking/models/vlm/backends/volcengine_vlm.py 203 179 12% 24-32, 36-46, 50-69, 73-84, 88-99, 110-131, 143-180, 191-246, 250-294, 305-335, 346-376
openviking/models/vlm/base.py 95 50 47% 44, 48, 55-67, 90, 113, 138, 163, 167, 171, 191-214, 222, 230-231, 240, 243-245, 265-280, 285-287
openviking/models/vlm/llm.py 117 117 0% 9-276
openviking/models/vlm/registry.py 7 2 71% 18, 23
openviking/models/vlm/token_usage.py 76 43 43% 29-33, 37-41, 49, 58, 83-89, 100, 108-117, 120-126, 133, 146-149, 160, 168, 176-183, 187, 195-203, 206-213
openviking/parse/init.py 14 0 100%
openviking/parse/base.py 178 113 37% 35-40, 54-76, 93-99, 188, 195-200, 204-212, 216-220, 224-226, 230-232, 236-238, 250-255, 267-278, 290-318, 322, 334-344, 370, 374-382, 395-399, 428
openviking/parse/converter.py 49 38 22% 19, 23-33, 37-63, 67-83
openviking/parse/custom.py 40 17 58% 100-107, 112, 116, 132-137, 159, 201-203, 208, 212, 225, 241
openviking/parse/directory_scan.py 153 119 22% 51, 60-69, 85-117, 122-124, 129, 134-136, 145-155, 168-172, 214-298
openviking/parse/parsers/init.py 12 0 100%
openviking/parse/parsers/base_parser.py 33 17 48% 33, 51, 57, 69-70, 82-92, 101-103, 115
openviking/parse/parsers/code/init.py 2 0 100%
openviking/parse/parsers/code/ast/init.py 5 5 0% 5-29
openviking/parse/parsers/code/ast/extractor.py 47 47 0% 5-130
openviking/parse/parsers/code/ast/languages/init.py 0 0 100%
openviking/parse/parsers/code/ast/languages/base.py 5 5 0% 5-12
openviking/parse/parsers/code/ast/languages/cpp.py 151 151 0% 5-228
openviking/parse/parsers/code/ast/languages/csharp.py 135 135 0% 5-182
openviking/parse/parsers/code/ast/languages/go.py 84 84 0% 5-110
openviking/parse/parsers/code/ast/languages/java.py 90 90 0% 5-127
openviking/parse/parsers/code/ast/languages/js_ts.py 166 166 0% 5-222
openviking/parse/parsers/code/ast/languages/lua.py 103 103 0% 5-148
openviking/parse/parsers/code/ast/languages/php.py 248 248 0% 5-327
openviking/parse/parsers/code/ast/languages/python.py 140 140 0% 5-180
openviking/parse/parsers/code/ast/languages/rust.py 85 85 0% 5-118
openviking/parse/parsers/code/ast/skeleton.py 60 60 0% 5-99
openviking/parse/parsers/code/code.py 291 249 14% 66, 78-86, 100-199, 205, 208-217, 225-233, 236-251, 256, 259-275, 284-300, 303-324, 327-331, 336, 351-421, 438-487, 491-549, 553-554
openviking/parse/parsers/constants.py 11 0 100%
openviking/parse/parsers/directory.py 171 142 17% 56, 60, 84-248, 268, 293-305, 322, 351-383, 405-418, 427, 439-453, 462-473
openviking/parse/parsers/epub.py 95 74 22% 36-39, 43, 47-60, 66-69, 74-83, 87-105, 109-115, 119-133, 142-173
openviking/parse/parsers/excel.py 126 107 15% 39-43, 47, 51-70, 76-79, 83-91, 95-133, 138-171, 175-186, 190-227
openviking/parse/parsers/feishu.py 447 447 0% 15-888
openviking/parse/parsers/html.py 307 257 16% 98-153, 165-194, 222-224, 228-238, 242-252, 257, 271-278, 292-325, 341-371, 392-396, 413-474, 482-496, 507-528, 550-565, 569-585, 605-636, 651-683, 689-706, 710-725, 743-755, 759-771
openviking/parse/parsers/legacy_doc.py 193 166 14% 38-41, 45, 49-62, 68-73, 83-97, 102-106, 116-157, 167-187, 203-301, 306, 311-314, 323-360
openviking/parse/parsers/markdown.py 293 258 12% 68-84, 89, 103-117, 145-233, 247-262, 275-307, 323-357, 360-372, 400-463, 478-512, 516, 522-527, 531-533, 545-564, 577-591, 599-602, 614-640, 651-664, 683-720, 734-736
openviking/parse/parsers/media/init.py 5 0 100%
openviking/parse/parsers/media/audio.py 188 166 12% 58, 63, 80-161, 183-225, 246-319, 338-385, 404-430
openviking/parse/parsers/media/constants.py 4 0 100%
openviking/parse/parsers/media/image.py 101 77 24% 70, 75, 93-147, 167-192, 205-220, 236-277, 300
openviking/parse/parsers/media/utils.py 61 45 26% 25, 66-79, 93-97, 118-170, 191-194, 215-218
openviking/parse/parsers/media/video.py 79 65 18% 49, 54, 71-154, 177, 192-237, 256
openviking/parse/parsers/pdf.py 293 269 8% 71-75, 79-83, 88, 105-146, 168-191, 216-336, 343-393, 400-510, 523-541, 557-613, 633-660, 679
openviking/parse/parsers/powerpoint.py 82 65 21% 39-43, 47, 51-66, 72-75, 79-102, 106-113, 117-135, 139-149
openviking/parse/parsers/text.py 19 8 58% 22-24, 28, 32, 38-41
openviking/parse/parsers/upload_utils.py 162 143 12% 49-58, 63-108, 117-140, 148-149, 162-174, 183-199, 218-307
openviking/parse/parsers/word.py 84 67 20% 33-36, 40, 44-59, 65-68, 76-108, 112-120, 124-136, 140-150
openviking/parse/parsers/zip_parser.py 121 100 17% 37-40, 44, 48-65, 71-74, 86-92, 96-161, 165-173, 177-181, 185-189, 194-226
openviking/parse/registry.py 113 80 29% 55-86, 96-100, 132-143, 173-182, 186-191, 195, 207-214, 230-268, 272, 276, 286-288, 302
openviking/parse/resource_detector/init.py 0 0 100%
openviking/parse/resource_detector/detect_info.py 20 20 0% 10-47
openviking/parse/resource_detector/recursive.py 0 0 100%
openviking/parse/resource_detector/size.py 0 0 100%
openviking/parse/resource_detector/visit.py 0 0 100%
openviking/parse/tree_builder.py 84 69 18% 60, 67-76, 84-101, 125-200
openviking/parse/vlm.py 234 196 16% 27-28, 50-51, 55-57, 66-91, 103-107, 115-145, 158-184, 197-227, 241-264, 273-311, 326-336, 353-426, 445-509, 525-576, 590-601, 609-666, 677-707
openviking/prompts/init.py 2 0 100%
openviking/prompts/manager.py 123 78 37% 76-79, 84-100, 105, 122-137, 147-160, 182-205, 210-229, 236-237, 249-259, 263-264, 274-276, 291, 304
openviking/pyagfs/init.py 53 12 77% 38, 43-45, 58-61, 66, 79-80, 90
openviking/pyagfs/client.py 436 361 17% 25-31, 35-86, 90-92, 101-115, 119-128, 131, 146-173, 190-269, 273-280, 284-293, 303-319, 323-330, 334-344, 348-358, 362-369, 373-379, 392-401, 405-412, 423-432, 443-452, 460-480, 493-499, 536-561, 565-573, 594-603, 629-639, 647-653, 664-671, 682-689, 702-712, 725-739, 752-762, 773-780, 791-798, 810-819, 849-853, 858, 863, 868, 873, 884-886, 898-900, 911-913, 925-927, 939-941, 949, 953-955, 963-965, 973-975, 986-988, 992-994, 997, 1000, 1003-1004
openviking/pyagfs/exceptions.py 12 2 83% 26-27
openviking/pyagfs/helpers.py 118 105 11% 37-45, 73-83, 111-119, 128-143, 149-168, 174-192, 200-215, 221-233, 241-256, 261-264, 269-291
openviking/resource/init.py 2 0 100%
openviking/resource/watch_manager.py 343 285 17% 60, 88-96, 100-101, 128-132, 136-145, 149-221, 225-271, 298-308, 322-332, 370-409, 453-522, 547-564, 586-594, 616-624, 646-658, 666-680, 691-705, 708-718, 726-734
openviking/resource/watch_scheduler.py 173 147 15% 46-60, 65, 73-84, 92-111, 122-140, 147-169, 176-201, 213-307, 313-317, 320-321, 332-341, 346, 351
openviking/resource/watch_storage.py 10 4 60% 23-26
openviking/retrieve/init.py 4 0 100%
openviking/retrieve/hierarchical_retriever.py 263 222 16% 68-84, 108-219, 236-248, 257-280, 293-323, 332-349, 377-497, 511-572, 577-586, 596-617
openviking/retrieve/intent_analyzer.py 48 32 33% 36, 56-96, 112-124, 138-140, 148-153
openviking/retrieve/memory_lifecycle.py 18 13 28% 44-64
openviking/retrieve/retrieval_stats.py 84 51 39% 37-39, 43-45, 49-51, 55-57, 61, 100-101, 113-148, 152-155, 159-160, 171-175
openviking/server/init.py 9 7 22% 7-15
openviking/server/api_keys.py 292 292 0% 5-559
openviking/server/app.py 103 103 0% 5-227
openviking/server/auth.py 74 74 0% 5-174
openviking/server/bootstrap.py 168 168 0% 5-323
openviking/server/config.py 65 65 0% 5-170
openviking/server/dependencies.py 9 9 0% 5-33
openviking/server/identity.py 35 4 89% 37, 50, 54, 58
openviking/server/local_input_guard.py 42 30 29% 19, 24-26, 36-42, 47-48, 56-93
openviking/server/models.py 12 12 0% 5-28
openviking/server/routers/init.py 16 16 0% 5-21
openviking/server/routers/admin.py 109 109 0% 5-258
openviking/server/routers/bot.py 91 91 0% 7-206
openviking/server/routers/content.py 107 107 0% 5-263
openviking/server/routers/debug.py 48 48 0% 11-102
openviking/server/routers/filesystem.py 53 53 0% 5-135
openviking/server/routers/metrics.py 9 9 0% 5-18
openviking/server/routers/observer.py 41 41 0% 13-102
openviking/server/routers/pack.py 47 47 0% 5-106
openviking/server/routers/relations.py 30 30 0% 5-63
openviking/server/routers/resources.py 107 107 0% 5-253
openviking/server/routers/search.py 87 87 0% 5-181
openviking/server/routers/sessions.py 129 129 0% 5-284
openviking/server/routers/stats.py 32 32 0% 5-74
openviking/server/routers/system.py 72 72 0% 5-144
openviking/server/routers/tasks.py 19 19 0% 10-59
openviking/server/telemetry.py 8 8 0% 5-29
openviking/service/init.py 9 0 100%
openviking/service/core.py 207 142 31% 60-102, 113-144, 153, 158, 163, 168, 173, 178, 183, 188, 193, 198, 203, 208, 213, 218, 222-338, 342-370, 374-375, 379-382, 386-389, 393-396
openviking/service/debug_service.py 99 56 43% 34-35, 47-55, 66-67, 75-76, 81, 86-96, 105-113, 123-150, 160-170, 180-181, 190-198, 206-208, 219, 227, 232, 236
openviking/service/fs_service.py 64 40 38% 24, 28, 32-34, 59-101, 105-106, 110-111, 115-116, 129-130, 142-143, 147-148, 152-153, 157-158, 171-172, 190-191, 195-196, 208-210
openviking/service/pack_service.py 23 9 61% 25, 29, 33-35, 47-48, 69-70
openviking/service/relation_service.py 24 11 54% 23, 27, 31-33, 37-38, 54-55, 64-65
openviking/service/resource_service.py 173 142 18% 59-63, 74-78, 81-83, 86-93, 97-102, 158-284, 313-367, 376-396, 418-456, 470-471, 485-486, 497-502
openviking/service/search_service.py 26 14 46% 26, 30, 34-36, 61-76, 99-108
openviking/service/session_service.py 80 57 29% 32-34, 43-45, 49-50, 61-62, 82-88, 101-107, 115-134, 145-154, 167, 182-184, 188-193, 204-210
openviking/service/task_tracker.py 173 112 35% 58-62, 74-78, 84, 99-102, 120-123, 133-136, 140-142, 145-152, 156-175, 184-188, 193-194, 207-223, 238-265, 269-273, 277-283, 287-293, 302-306, 318-331, 341-342, 353, 357-358
openviking/session/init.py 29 17 41% 50-70
openviking/session/compressor.py 359 320 11% 68-71, 83-102, 110-146, 161-195, 200-219, 229-265, 271-284, 296-555, 559-566, 580-596, 603-618, 622-633, 642-688, 692-696
openviking/session/compressor_v2.py 132 132 0% 10-295
openviking/session/memory/init.py 9 0 100%
openviking/session/memory/core.py 17 17 0% 11-74
openviking/session/memory/dataclass.py 131 69 47% 80, 84, 104-110, 115-122, 127-136, 141-149, 161-194, 245, 254
openviking/session/memory/extract_loop.py 240 215 10% 68-90, 99-260, 272-315, 328-346, 363-440, 448-467, 474, 481-518, 527-550, 559-560
openviking/session/memory/memory_type_registry.py 122 101 17% 29-32, 36-59, 65-66, 70, 81-83, 94-96, 108-117, 126-130, 142-163, 167-180, 201-274, 284
openviking/session/memory/memory_updater.py 276 234 15% 36, 40-43, 47-50, 54-58, 62-66, 70-74, 85-127, 134, 138-144, 148-156, 160-179, 186-189, 192, 195, 198, 201, 204, 207, 226-229, 233, 237-239, 261-336, 351-412, 416-423, 428-464, 477-530
openviking/session/memory/merge_op/init.py 7 0 100%
openviking/session/memory/merge_op/base.py 37 7 81% 45, 84-86, 112, 124, 137
openviking/session/memory/merge_op/factory.py 18 8 56% 32-40, 52
openviking/session/memory/merge_op/immutable.py 12 5 58% 23, 26, 29-32
openviking/session/memory/merge_op/patch.py 54 45 17% 28-29, 32-34, 37-39, 56-93, 108-128
openviking/session/memory/merge_op/patch_handler.py 458 417 9% 48-64, 69-84, 89-101, 112-141, 155-157, 168-173, 178-182, 192, 215-360, 397-398, 420-695, 709-764, 789, 818-834, 838-844, 857-1137
openviking/session/memory/merge_op/sum.py 19 12 37% 23, 26, 30-39
openviking/session/memory/schema_model_generator.py 161 134 17% 27-30, 45-50, 54, 69-107, 119-122, 139-160, 172-208, 219, 232-343, 352-353, 362-363, 375, 384-415, 427-435, 444
openviking/session/memory/session_extract_context_provider.py 154 154 0% 9-372
openviking/session/memory/tools.py 149 83 44% 28-40, 45-53, 57-63, 74, 95-96, 111, 117, 123, 143, 147, 166, 170, 187-201, 213, 217, 239-256, 261-266, 278, 282, 299-325, 339, 344, 353
openviking/session/memory/utils/init.py 7 0 100%
openviking/session/memory/utils/content.py 74 60 19% 24-26, 31-39, 62-101, 114-124, 137-154, 167-169, 187-196
openviking/session/memory/utils/json_parser.py 231 207 10% 55-62, 70-72, 76-80, 96-144, 159, 174-182, 197-206, 221-229, 251-285, 305-382, 407-477
openviking/session/memory/utils/language.py 31 26 16% 16-46, 55-74
openviking/session/memory/utils/messages.py 68 58 15% 30-77, 93-123
openviking/session/memory/utils/model.py 12 9 25% 20-30
openviking/session/memory/utils/uri.py 183 152 17% 22-27, 50-59, 95-118, 131-148, 169-176, 198-213, 232-249, 269-276, 299-303, 321-329, 358-379, 404-424, 432-437, 440, 467-515, 540-568
openviking/session/memory_archiver.py 136 96 29% 78-81, 85-89, 112-191, 212-241, 260-273, 283-284, 298-303, 314-320, 325-336
openviking/session/memory_deduplicator.py 219 166 24% 79-83, 90-92, 96, 107-125, 146-236, 244-309, 318-414, 419-434, 439-449
openviking/session/memory_extractor.py 713 616 14% 133-134, 143-145, 154-195, 199-223, 238-430, 439, 449-517, 526-558, 572-623, 629-748, 752-760, 764-840, 844-858, 862-875, 878-888, 891-918, 921-924, 927-933, 936-945, 948-958, 963-985, 990-1025, 1028-1037, 1040, 1056, 1075-1118, 1144-1145, 1159-1176, 1182-1318, 1322-1326, 1330-1379, 1383-1391, 1396-1448, 1472-1473, 1487-1504
openviking/session/session.py 662 543 18% 93, 107-111, 166-183, 187-228, 232-236, 240-244, 248-251, 259-261, 266, 271, 281-298, 307-324, 334-346, 350, 363-468, 488-650, 659-668, 682-691, 699-711, 715-727, 731-761, 780-789, 798, 802-822, 828-860, 870-896, 903-915, 919-933, 937-941, 945-955, 959-967, 971-985, 992-1007, 1014-1015, 1019-1034, 1039-1042, 1046-1066, 1075-1102, 1106-1115, 1119-1127, 1135-1157, 1165-1187, 1197-1220, 1224-1252, 1262-1284, 1292-1294, 1304-1309, 1325-1344, 1354-1359, 1363-1382, 1386-1395, 1399-1408, 1415, 1420, 1425, 1430, 1435, 1438
openviking/session/tool_skill_utils.py 72 72 0% 4-127
openviking/storage/init.py 7 0 100%
openviking/storage/collection_schemas.py 292 243 17% 63-119, 137-146, 172-188, 192, 196-207, 217-231, 235-238, 243-252, 256-487, 491-495, 499-503
openviking/storage/content_write.py 246 208 15% 34, 46-129, 132-133, 136-144, 147-152, 162-180, 191-201, 204-222, 225-231, 243-261, 271-288, 291-296, 304-311, 320-326, 341-354, 369-411, 414-457, 460-464
openviking/storage/errors.py 10 0 100%
openviking/storage/expr.py 43 0 100%
openviking/storage/local_fs.py 195 169 13% 29-46, 51-53, 58-60, 65-72, 78-91, 95-133, 162-253, 272-331
openviking/storage/observers/init.py 8 0 100%
openviking/storage/observers/base_observer.py 11 3 73% 28, 38, 48
openviking/storage/observers/lock_observer.py 26 13 50% 19, 23-24, 38, 43-68, 71, 74
openviking/storage/observers/models_observer.py 90 76 16% 38-40, 49, 58-99, 103-126, 130-158, 162-190, 193, 204, 219
openviking/storage/observers/prometheus_observer.py 100 71 29% 16-19, 22-26, 30, 40-51, 55, 58, 61, 64-66, 69-71, 74-76, 79-82, 85-88, 91-148, 157-160, 169-177, 189-190, 195
openviking/storage/observers/queue_observer.py 52 36 31% 28, 31-33, 36, 39, 53-110, 113-119, 122, 125
openviking/storage/observers/retrieval_observer.py 35 23 34% 30-32, 36, 40-82, 85, 89-92, 96-99
openviking/storage/observers/vikingdb_observer.py 61 45 26% 28, 31-40, 43, 46, 51-74, 77-112, 121, 130-137
openviking/storage/queuefs/init.py 10 0 100%
openviking/storage/queuefs/embedding_msg.py 33 15 55% 24-28, 32, 36, 41-48, 53-57
openviking/storage/queuefs/embedding_msg_converter.py 46 38 17% 26-77
openviking/storage/queuefs/embedding_queue.py 52 43 17% 21-25, 29-52, 56-75
openviking/storage/queuefs/embedding_tracker.py 90 63 30% 43-45, 48-52, 57-58, 62, 70-111, 119-121, 138-169, 184-202
openviking/storage/queuefs/named_queue.py 202 144 29% 40, 44, 57, 74-76, 80-81, 85-86, 90-91, 96-98, 114-131, 139-140, 144-146, 150-151, 155-166, 170-172, 183-188, 192, 196-202, 206-217, 226-232, 239-250, 263-280, 284-289, 297-299, 303-318, 322-337, 341-349
openviking/storage/queuefs/queue_manager.py 186 151 19% 44-51, 56-59, 81-93, 99-108, 122-144, 148-166, 176-200, 209-266, 271-291, 295, 305-337, 343, 347, 351, 355, 359, 365-369, 373-377, 381-382, 391-397
openviking/storage/queuefs/semantic_cache.py 37 30 19% 20-27, 32, 40-64
openviking/storage/queuefs/semantic_dag.py 435 370 15% 89-114, 119-154, 158-230, 234-284, 288-308, 311-322, 325-339, 350-393, 398-419, 424-432, 437-481, 486-499, 502-516, 519-527, 530-537, 540-547, 550-627, 631-636, 640-658, 662-676, 679
openviking/storage/queuefs/semantic_msg.py 70 40 43% 64-77, 81, 85, 90-125, 130-134
openviking/storage/queuefs/semantic_processor.py 738 662 10% 94-98, 102-111, 119-127, 137-148, 152-155, 165-170, 174-175, 190-203, 209-221, 227-237, 245-260, 264-412, 415-417, 425-436, 449-609, 613-620, 630-836, 842-849, 859-942, 958-968, 972-991, 995-1000, 1011-1053, 1078-1158, 1169-1200, 1216-1316, 1329-1336, 1356-1359
openviking/storage/queuefs/semantic_queue.py 60 45 25% 24-26, 30, 34-54, 58-73, 77-90
openviking/storage/stats_aggregator.py 81 81 0% 9-198
openviking/storage/transaction/init.py 6 0 100%
openviking/storage/transaction/lock_context.py 46 38 17% 28-36, 39-76, 79-84
openviking/storage/transaction/lock_handle.py 22 5 77% 33, 36-37, 40-41
openviking/storage/transaction/lock_manager.py 228 189 17% 30-37, 41, 44, 47-52, 56-58, 62-80, 83-85, 90-95, 100-105, 132-161, 171-180, 183-189, 192-203, 206-207, 210, 214-224, 228-232, 235-242, 249-258, 266-324, 334-356, 372-373, 377-379, 384, 389-392
openviking/storage/transaction/path_lock.py 378 336 11% 31, 35-57, 62-63, 66-67, 71-87, 90-94, 97-105, 108-112, 115-116, 119-123, 126-130, 135-136, 139-148, 151-156, 159-165, 168-175, 178-187, 190-214, 219-305, 310-413, 436-459, 463-476, 479-487, 490-495
openviking/storage/transaction/redo_log.py 47 33 30% 24, 27, 30-37, 41-44, 48-51, 55-65, 69-76
openviking/storage/vectordb/init.py 0 0 100%
openviking/storage/vectordb/collection/init.py 5 0 100%
openviking/storage/vectordb/collection/collection.py 181 103 43% 13-18, 23, 27, 31, 35, 39, 43, 47, 51, 64, 77, 89, 103, 114, 127, 136, 140, 144, 148, 152, 156, 160, 164, 187, 207-210, 217-219, 230-232, 239-241, 251-253, 262-264, 278-280, 292-294, 306-308, 336-338, 371-373, 404-406, 439-441, 469-471, 503-505, 524-526, 538-540, 549-551, 561-563, 578-580, 593-595, 604-606, 613-615, 637-639, 646-648
openviking/storage/vectordb/collection/http_collection.py 225 190 16% 40-51, 67-80, 89-94, 97-116, 119-133, 136, 139-153, 156-171, 174-175, 178, 183-197, 205-225, 228-243, 246-261, 264-280, 283-316, 319-334, 337-352, 364-396, 407-438, 451-484, 494-524, 536-568, 580-612, 622-642, 647-653
openviking/storage/vectordb/collection/local_collection.py 522 445 15% 92-123, 134-162, 165-173, 178, 181-198, 201, 205-213, 216, 219, 222-224, 227, 235-238, 241-244, 247, 259-327, 338-364, 394-404, 416-417, 445-463, 477-511, 515-586, 589-619, 622-636, 650-695, 698-704, 707-714, 717-725, 728-742, 748-763, 776-785, 794-814, 837-875, 879, 888, 899-900, 909-915, 918, 930-936, 939-980, 987, 991-992, 1002-1015, 1024-1035, 1038-1039
openviking/storage/vectordb/collection/result.py 26 0 100%
openviking/storage/vectordb/collection/vikingdb_clients.py 25 15 40% 53-57, 78-100
openviking/storage/vectordb/collection/vikingdb_collection.py 168 131 22% 32-36, 39-50, 53-66, 69-77, 80-88, 91-100, 103-107, 110, 113, 116, 119-120, 123, 126-130, 138, 141-146, 149, 152-159, 162-169, 172-178, 181-187, 190-203, 206-217, 229-243, 254-266, 279-293, 303-314, 326-339, 351-364, 374-386, 391-397
openviking/storage/vectordb/collection/volcengine_clients.py 71 54 24% 25-32, 35-66, 69-70, 88-95, 98-129, 132-135
openviking/storage/vectordb/collection/volcengine_collection.py 310 252 19% 36-70, 91-107, 111-120, 126-134, 137-148, 151-164, 169-179, 185-191, 197-218, 223-233, 238-242, 247-258, 263-268, 272-281, 284-292, 295-304, 307-311, 314, 317-321, 324-338, 341-342, 345, 348-352, 360-370, 373-378, 381-386, 389-396, 399-407, 410-416, 419-425, 428-441, 444-455, 467-481, 492-504, 517-531, 541-552, 564-577, 589-602, 607-613, 623-635
openviking/storage/vectordb/engine/init.py 139 84 40% 48-62, 73-91, 100-104, 109-119, 123-144, 148-163, 167-180, 189, 192, 195, 198, 207-210, 216
openviking/storage/vectordb/engine/_python_api.py 328 253 23% 45, 59, 74-119, 122-124, 127, 130, 134-136, 141-142, 145-221, 224, 227-270, 273, 283, 297-302, 309-310, 317-321, 335-338, 342, 354-355, 359, 363-364, 374-376, 380, 384-411, 415-484
openviking/storage/vectordb/index/init.py 0 0 100%
openviking/storage/vectordb/index/index.py 85 50 41% 42, 67, 88, 128, 167, 190, 210, 227, 243, 256, 274, 293, 307-309, 323-325, 357-368, 386-388, 401-403, 414-417, 425-428, 441-443, 456-458, 480-482
openviking/storage/vectordb/index/local_index.py 323 271 16% 28-39, 67-68, 78-100, 103-118, 121-137, 140-147, 150-152, 160-163, 171-174, 182, 210-216, 223-230, 233, 236-237, 240-241, 251-265, 271-306, 309, 312-314, 317, 327, 331-333, 336-356, 361-377, 416-433, 447, 455-457, 524-541, 552-576, 590-605, 634-651, 668-678, 696-720, 732-733, 748
openviking/storage/vectordb/meta/init.py 0 0 100%
openviking/storage/vectordb/meta/collection_meta.py 101 66 35% 27-34, 49-51, 63-108, 120-134, 145-154, 162, 170, 174, 179, 184, 189, 194, 199, 204, 209, 214, 218
openviking/storage/vectordb/meta/dict.py 38 14 63% 20-21, 33, 37, 45, 53, 61, 68, 77, 86, 99, 104, 113, 122
openviking/storage/vectordb/meta/index_meta.py 81 63 22% 31-42, 58-61, 76-113, 127-137, 148-163, 171-172, 180, 188
openviking/storage/vectordb/meta/local_dict.py 48 27 44% 20-21, 29-30, 38, 50, 54, 62, 70, 82, 95-104, 112-113, 121-122, 132-133, 137-138
openviking/storage/vectordb/project/init.py 0 0 100%
openviking/storage/vectordb/project/http_project.py 70 70 0% 3-233
openviking/storage/vectordb/project/local_project.py 89 89 0% 3-231
openviking/storage/vectordb/project/project.py 39 39 0% 3-166
openviking/storage/vectordb/project/project_group.py 95 95 0% 3-260
openviking/storage/vectordb/project/vikingdb_project.py 92 92 0% 3-208
openviking/storage/vectordb/project/volcengine_project.py 64 64 0% 3-211
openviking/storage/vectordb/service/init.py 0 0 100%
openviking/storage/vectordb/service/api_fastapi.py 335 335 0% 3-658
openviking/storage/vectordb/service/app_models.py 124 124 0% 3-184
openviking/storage/vectordb/service/code.py 10 10 0% 3-14
openviking/storage/vectordb/service/server_fastapi.py 53 53 0% 10-142
openviking/storage/vectordb/store/init.py 0 0 100%
openviking/storage/vectordb/store/bytes_row.py 210 147 30% 77, 83, 101-103, 116-208, 211, 214-261, 264-271, 281-283
openviking/storage/vectordb/store/data.py 40 6 85% 21-29, 32, 51-60, 63
openviking/storage/vectordb/store/file_store.py 92 81 12% 19-20, 35-50, 62-81, 94-141, 153-171
openviking/storage/vectordb/store/local_store.py 71 54 24% 23-28, 47-48, 60-64, 74-75, 84-85, 89, 100-104, 120-123, 139-142, 155-167, 176-197
openviking/storage/vectordb/store/serializable.py 70 28 60% 21, 25, 31, 37, 40-45, 74, 83-89, 101, 112, 116-120, 125-129, 135-137
openviking/storage/vectordb/store/store.py 59 21 64% 16, 31, 44, 56, 80-82, 106-109, 120, 136, 150, 163, 175, 190, 206, 222, 235, 247
openviking/storage/vectordb/store/store_manager.py 104 84 19% 25-29, 52, 67-128, 142-180, 191-199, 207-209, 213, 224-229, 240-247, 255-325
openviking/storage/vectordb/utils/init.py 0 0 100%
openviking/storage/vectordb/utils/api_utils.py 9 9 0% 3-15
openviking/storage/vectordb/utils/config_utils.py 19 16 16% 23-43
openviking/storage/vectordb/utils/constants.py 18 0 100%
openviking/storage/vectordb/utils/data_processor.py 303 269 11% 24-40, 45-47, 77-80, 84-149, 160-163, 167-169, 173-174, 178, 181-200, 203-217, 220-243, 246-263, 266-287, 290-332, 335-339, 342-349, 352-375, 378-394, 397-407, 410-428, 431-438
openviking/storage/vectordb/utils/data_utils.py 26 26 0% 3-43
openviking/storage/vectordb/utils/dict_utils.py 73 51 30% 27-28, 32-33, 37-38, 42-43, 47-48, 52-53, 57-58, 62-63, 67-68, 72-73, 81-87, 97, 104-105, 108-109, 112-113, 127-139, 156-172
openviking/storage/vectordb/utils/file_utils.py 7 7 0% 3-11
openviking/storage/vectordb/utils/id_generator.py 53 22 58% 53, 55, 65, 71-105, 118
openviking/storage/vectordb/utils/logging_init.py 34 28 18% 22-41, 48-82
openviking/storage/vectordb/utils/stale_lock.py 63 51 19% 45, 50, 59-83, 100-137
openviking/storage/vectordb/utils/str_to_uint64.py 3 1 67% 10
openviking/storage/vectordb/utils/validation.py 332 182 45% 15-16, 23-34, 80, 84-93, 126, 131-134, 138-144, 162-164, 169-179, 199-205, 210-212, 217-219, 224-226, 242-244, 260-262, 277-279, 284-296, 306-314, 318-321, 325-329, 333-336, 340-344, 348-358, 362-366, 370-379, 383-387, 391-415, 447-473, 477-482, 486-508
openviking/storage/vectordb/vectorize/init.py 0 0 100%
openviking/storage/vectordb/vectorize/base.py 23 11 52% 21-24, 27, 43-45, 58, 78, 82
openviking/storage/vectordb/vectorize/vectorizer.py 52 33 37% 40-60, 68, 83-94, 111-119
openviking/storage/vectordb/vectorize/vectorizer_factory.py 21 5 76% 43-52
openviking/storage/vectordb/vectorize/volcengine_vectorizer.py 111 89 20% 18-21, 24-43, 46-49, 78-98, 110-122, 128-146, 156-177, 198-246, 252-260, 264, 268
openviking/storage/vectordb_adapters/init.py 7 0 100%
openviking/storage/vectordb_adapters/base.py 308 250 19% 35-41, 45-53, 67-69, 73, 77, 93-94, 97-100, 111-135, 138-161, 164-166, 169-171, 178, 189-202, 205-209, 212-216, 220-226, 230-238, 241-265, 268-343, 351, 365, 374, 377, 380-391, 394-412, 426-468, 477-487, 491-501, 504-515, 518-519
openviking/storage/vectordb_adapters/factory.py 23 15 35% 23-45
openviking/storage/vectordb_adapters/http_adapter.py 33 20 39% 30-34, 38-41, 50, 56-61, 64-68, 77-79
openviking/storage/vectordb_adapters/local_adapter.py 35 20 43% 23-25, 29-32, 39-41, 44-51, 54-57
openviking/storage/vectordb_adapters/vikingdb_private_adapter.py 53 36 32% 28-32, 36-38, 47, 50-60, 63-68, 77-80, 87-90, 101-114, 117
openviking/storage/vectordb_adapters/volcengine_adapter.py 55 36 35% 33-40, 44-51, 62, 68, 76, 87-92, 95-97, 107-110, 121-134, 137-144, 147
openviking/storage/viking_fs.py 1011 899 11% 57, 66, 96-107, 120-130, 141-143, 148-150, 175-180, 186, 189-192, 196-199, 203-206, 219-221, 234-236, 241-245, 250-252, 257-272, 275-278, 290-321, 330-336, 346-358, 376-416, 430-500, 509-532, 557-627, 640-642, 654-658, 668-678, 692-709, 738-746, 757-785, 797-833, 843-859, 867-883, 894-901, 924-988, 1012-1131, 1143-1159, 1168-1196, 1202-1204, 1214-1222, 1233-1240, 1251-1255, 1263-1279, 1288-1302, 1306-1328, 1332-1343, 1347-1359, 1363-1374, 1378-1386, 1394-1413, 1422-1432, 1446-1465, 1474-1526, 1530, 1534, 1541-1552, 1560-1583, 1590-1598, 1606-1617, 1628-1636, 1655-1684, 1692-1699, 1708-1713, 1722-1744, 1771-1777, 1788-1825, 1835-1857, 1866-1872, 1878, 1882-1895, 1899-1905, 1915-1935, 1948-1973
openviking/storage/viking_vector_index_backend.py 497 398 20% 103-113, 120, 123-125, 128, 131-137, 141-143, 150-178, 181-189, 192, 195-198, 210-235, 238-245, 248-259, 263-267, 270-273, 276-287, 300-328, 339, 357, 367-386, 389-404, 413-421, 424-437, 440-446, 449-450, 453-459, 462-466, 469-481, 490, 499-517, 523, 527, 535, 539-548, 552, 556-564, 568-569, 576, 579, 582, 585, 588, 595-604, 607-608, 611-612, 615-616, 619-620, 635-636, 658, 679, 690-691, 702-703, 716-720, 723-727, 730, 733-742, 745, 748, 752, 756, 759, 776-782, 802-814, 834-843, 861-872, 888-895, 903-905, 908-922, 931-989, 992-1010, 1019-1043, 1049-1061, 1080-1094
openviking/storage/vikingdb_manager.py 167 90 46% 48-54, 63, 67-76, 81, 90, 95-99, 104, 120-136, 145-153, 162-169, 203-204, 209, 214, 218, 222, 230, 234, 238, 241, 245, 252, 255, 258, 265, 268, 271, 274, 277, 284, 287, 290, 293, 296, 309, 330, 349, 360, 369, 381, 384, 387, 390, 393, 396, 412, 432, 452, 470, 485, 494, 497, 504, 511
openviking/sync_client.py 98 98 0% 7-340
openviking/telemetry/init.py 8 0 100%
openviking/telemetry/backends/init.py 2 2 0% 5-7
openviking/telemetry/backends/memory.py 3 3 0% 5-12
openviking/telemetry/context.py 19 9 53% 21-25, 31-35
openviking/telemetry/execution.py 55 34 38% 32-35, 43-45, 49-51, 63-75, 86-107
openviking/telemetry/operation.py 193 147 24% 24, 34-37, 68-73, 77-82, 86-98, 102-117, 123-124, 141-273, 284-293, 296-299, 302, 305-308, 311, 314-327, 331-339, 342, 345, 350-362, 365-370, 373, 376-391
openviking/telemetry/registry.py 21 12 43% 16-19, 23-26, 30-33
openviking/telemetry/request.py 28 15 46% 24, 31-46
openviking/telemetry/request_wait_tracker.py 160 117 27% 35-37, 40-43, 47, 50-53, 56, 59-65, 68-74, 77-83, 86-92, 95-103, 111-118, 121-127, 130-139, 147-154, 157-166, 169-175, 183-191, 194-196, 212-215, 219
openviking/telemetry/resource_summary.py 62 48 23% 15-20, 24-29, 33-38, 43-48, 53, 58, 74-88, 103-133
openviking/telemetry/runtime.py 39 15 62% 27-28, 31-33, 38-40, 43-45, 51, 59, 66, 71
openviking/telemetry/snapshot.py 2 2 0% 5-7
openviking/telemetry/tracer.py 291 216 26% 23-34, 47-48, 55-76, 81-105, 110-118, 144-198, 203, 208, 217-227, 236-241, 253-262, 278, 283, 288, 293, 351-373, 378-404, 409-424, 429-439, 444, 449-460, 465-478, 483-488, 493-509, 516, 519, 522, 525, 528, 531, 534, 537, 552
openviking/utils/init.py 7 0 100%
openviking/utils/agfs_utils.py 58 58 0% 7-157
openviking/utils/circuit_breaker.py 66 49 26% 42-50, 54-65, 75-79, 83-88, 92-117
openviking/utils/code_hosting_utils.py 74 65 12% 27-76, 88-89, 101-102, 114-130, 142-146, 162-190
openviking/utils/embedding_utils.py 162 144 11% 26-35, 43-47, 55-128, 144-208, 227-318, 335-387
openviking/utils/media_processor.py 92 92 0% 5-189
openviking/utils/model_retry.py 54 41 24% 38-52, 57, 67-70, 85-110, 125-150
openviking/utils/network_guard.py 59 44 25% 25-34, 38, 42-55, 59-62, 67-86, 96-102
openviking/utils/process_lock.py 65 65 0% 9-127
openviking/utils/resource_processor.py 149 125 16% 52-58, 62-64, 68-72, 76-83, 89-91, 97, 121-297, 302-307
openviking/utils/skill_processor.py 111 84 24% 46, 67-138, 151-197, 201-211, 222, 241-258, 262-272
openviking/utils/summarizer.py 55 43 22% 31, 45-118
openviking/utils/time_utils.py 21 14 33% 15-18, 28-33, 42-47, 56-57
openviking/utils/zip_safe.py 39 31 21% 13, 23, 31-56, 65-72

TOTAL 34685 28648 17%

=========================== short test summary info ============================
ERROR - AttributeError: 'Package' object has no attribute 'obj'
!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!
========================= 5 warnings, 1 error in 2.33s ========================= still hits the repo's known collection bug (), so I verified the covered scenarios with a direct Python harness instead

Closes #1261

@github-actions
Copy link
Copy Markdown

PR Reviewer Guide 🔍

Here are some key observations to aid the review process:

🎫 Ticket compliance analysis 🔶

1261 - Partially compliant

Compliant requirements:

  • Fix cache key mismatch by using .summary_cache.json sidecar file with filename keys
  • Add fallback to existing .overview.md parsing
  • Write cache alongside .abstract.md and .overview.md in both DAG and memory-directory flows
  • Add regression tests for both DAG incremental and memory-directory flows

Non-compliant requirements:

Requires further human verification:

⏱️ Estimated effort to review: 3 🔵🔵🔵⚪⚪
🏅 Score: 92
🧪 PR contains tests
🔒 No security concerns identified
✅ No TODO sections
🔀 No multiple PR themes
⚡ No major issues detected

@github-actions
Copy link
Copy Markdown

PR Code Suggestions ✨

No code suggestions found for the PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

bug: memory overview cache key mismatch causes full LLM reprocessing on every semantic refresh

1 participant