sovara 0.2.7__tar.gz → 0.2.9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sovara-0.2.7 → sovara-0.2.9}/PKG-INFO +2 -1
- {sovara-0.2.7 → sovara-0.2.9}/pyproject.toml +3 -2
- sovara-0.2.9/src/sovara/__init__.py +3 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/assets/SKILL.md +21 -40
- sovara-0.2.9/src/sovara/assets/web_app/assets/AttachmentPreview-C-SDQn_c.js +1 -0
- sovara-0.2.7/src/sovara/assets/web_app/assets/DocumentPreviewModal-CvQFa4di.js → sovara-0.2.9/src/sovara/assets/web_app/assets/DocumentPreviewModal-DLcTPg47.js +1 -1
- sovara-0.2.9/src/sovara/assets/web_app/assets/LayoutBreadcrumb-DrZRF2Sb.js +1 -0
- sovara-0.2.9/src/sovara/assets/web_app/assets/OrgRoute-Da3YLHXR.js +1 -0
- sovara-0.2.9/src/sovara/assets/web_app/assets/PriorsRoute-B1nxA9L9.js +3 -0
- sovara-0.2.7/src/sovara/assets/web_app/assets/PriorsRoute-BveozA7x.css → sovara-0.2.9/src/sovara/assets/web_app/assets/PriorsRoute-C-kIcXqp.css +1 -1
- sovara-0.2.9/src/sovara/assets/web_app/assets/ProjectRoute-BTYfMx0l.js +33 -0
- sovara-0.2.9/src/sovara/assets/web_app/assets/ProjectRunsRoute-DnTtW5z2.js +1 -0
- sovara-0.2.7/src/sovara/assets/web_app/assets/RunRoute-CRAJ9hM9.css → sovara-0.2.9/src/sovara/assets/web_app/assets/RunRoute-BokXQNmB.css +1 -1
- sovara-0.2.7/src/sovara/assets/web_app/assets/RunRoute-BXKXUvYa.js → sovara-0.2.9/src/sovara/assets/web_app/assets/RunRoute-CjnawiLF.js +25 -25
- sovara-0.2.9/src/sovara/assets/web_app/assets/SettingsRoute-BsJ1s1Xa.js +1 -0
- sovara-0.2.9/src/sovara/assets/web_app/assets/api-VlLy9MpQ.js +1 -0
- sovara-0.2.7/src/sovara/assets/web_app/assets/eye-BwLFOixq.js → sovara-0.2.9/src/sovara/assets/web_app/assets/eye-U4_eeOX-.js +1 -1
- sovara-0.2.9/src/sovara/assets/web_app/assets/index-TU6o79pU.js +12 -0
- sovara-0.2.7/src/sovara/assets/web_app/assets/plus-LepfYku6.js → sovara-0.2.9/src/sovara/assets/web_app/assets/plus-B1NOTICQ.js +1 -1
- sovara-0.2.7/src/sovara/assets/web_app/assets/prismTheme-BK3YfG66.js → sovara-0.2.9/src/sovara/assets/web_app/assets/prismTheme-nMW1SONA.js +3 -3
- sovara-0.2.9/src/sovara/assets/web_app/assets/runtime-B1TGbSkq.js +1 -0
- sovara-0.2.7/src/sovara/assets/web_app/assets/settings-CP5l-jN0.js → sovara-0.2.9/src/sovara/assets/web_app/assets/settings-BrSnAN-D.js +1 -1
- sovara-0.2.9/src/sovara/assets/web_app/assets/tierState-BVmlAt4E.js +1 -0
- sovara-0.2.7/src/sovara/assets/web_app/assets/trash-2-QBj_Tw9w.js → sovara-0.2.9/src/sovara/assets/web_app/assets/trash-2-DhTFZ-Hl.js +1 -1
- sovara-0.2.7/src/sovara/assets/web_app/assets/useTheme-BfCfHZeA.js → sovara-0.2.9/src/sovara/assets/web_app/assets/useTheme-BMbBHOjM.js +1 -1
- sovara-0.2.7/src/sovara/assets/web_app/assets/value-BlxarHmt.js → sovara-0.2.9/src/sovara/assets/web_app/assets/value-Bqe5DuYT.js +1 -1
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/assets/web_app/index.html +1 -1
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/cli/so_server.py +2 -3
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/cli/so_tool.py +100 -156
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/common/logger.py +1 -2
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/common/priors_block.py +9 -6
- sovara-0.2.9/src/sovara/common/run_logs.py +74 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/common/utils.py +6 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/context_manager.py +16 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/node_execution.py +0 -9
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/priors.py +32 -85
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/priors_pipeline.py +18 -1
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/runtime_client.py +3 -18
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/app.py +1 -5
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/database/backend_protocol.py +75 -176
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/database/blob_storage.py +16 -14
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/database/llm_calls.py +3 -24
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/database/mongodb/backend.py +413 -672
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/database/mongodb/connection.py +49 -24
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/database/postgresql/backend.py +53 -253
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/database/postgresql/schema.py +19 -32
- sovara-0.2.9/src/sovara/server/database/prior_models.py +66 -0
- sovara-0.2.9/src/sovara/server/database/priors.py +287 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/database/projects.py +8 -32
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/database/runs.py +24 -1
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/database/sqlite/__init__.py +1 -4
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/database/sqlite/backend.py +121 -359
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/database/sqlite/connection.py +88 -25
- sovara-0.2.9/src/sovara/server/database/sqlite/prior_embeddings.py +118 -0
- sovara-0.2.9/src/sovara/server/database/sqlite/prior_records.py +323 -0
- sovara-0.2.9/src/sovara/server/database/sqlite/priors.py +181 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/database/sqlite/projects.py +52 -37
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/database/sqlite/runs.py +88 -38
- sovara-0.2.9/src/sovara/server/database/sqlite/schema.py +355 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/database/sqlite/users.py +13 -6
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/graph_analysis/trace_chat/main.py +57 -11
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/graph_analysis/trace_chat/tools/__init__.py +6 -0
- sovara-0.2.9/src/sovara/server/graph_analysis/trace_chat/tools/logs.py +84 -0
- sovara-0.2.9/src/sovara/server/graph_analysis/trace_chat/tools/priors.py +636 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/llm_backend.py +20 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/prior_display.py +25 -17
- sovara-0.2.9/src/sovara/server/priors_backend/constants.py +21 -0
- sovara-0.2.9/src/sovara/server/priors_backend/embeddings.py +48 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/priors_backend/llm/folder_rebalancer.py +42 -71
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/priors_backend/llm/lesson_restructurer.py +33 -14
- sovara-0.2.9/src/sovara/server/priors_backend/llm/lesson_retriever.py +420 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/priors_backend/llm/lesson_validator.py +17 -6
- sovara-0.2.9/src/sovara/server/priors_backend/llm/prior_content_polisher.py +97 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/priors_backend/llm/prior_metadata_suggester.py +7 -50
- sovara-0.2.9/src/sovara/server/priors_backend/llm/prior_quality.py +28 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/priors_backend/path_utils.py +11 -0
- sovara-0.2.9/src/sovara/server/priors_backend/retrieval_service.py +274 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/priors_backend/routes.py +296 -520
- sovara-0.2.9/src/sovara/server/priors_backend/storage.py +1127 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/priors_backend/tools/adjudication.py +42 -112
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/priors_backend/tools/bm25_search.py +3 -16
- sovara-0.2.9/src/sovara/server/priors_backend/tools/dense_search.py +45 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/priors_backend/tools/folder_groups.py +20 -20
- sovara-0.2.9/src/sovara/server/priors_backend/tools/keyword_search.py +31 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/priors_backend/tools/parallel_search.py +19 -34
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/priors_backend/tools/preprocess_context.py +11 -32
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/priors_backend/tools/rerank.py +2 -23
- sovara-0.2.9/src/sovara/server/priors_backend/tools/utils.py +72 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/routes/claude_proxy.py +1 -85
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/routes/events.py +1 -2
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/routes/internal.py +9 -117
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/routes/runner.py +12 -1
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/routes/ui_projects.py +64 -29
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/routes/ui_runs.py +14 -4
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/state.py +11 -7
- sovara-0.2.9/src/sovara/server/web_app_assets.py +79 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara.egg-info/PKG-INFO +2 -1
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara.egg-info/SOURCES.txt +31 -25
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara.egg-info/requires.txt +1 -0
- sovara-0.2.7/src/sovara/__init__.py +0 -3
- sovara-0.2.7/src/sovara/assets/web_app/assets/AttachmentPreview-Di2_OG_9.js +0 -1
- sovara-0.2.7/src/sovara/assets/web_app/assets/LayoutBreadcrumb-CJhx8VyY.js +0 -1
- sovara-0.2.7/src/sovara/assets/web_app/assets/OrgRoute-CKAmaA4W.js +0 -1
- sovara-0.2.7/src/sovara/assets/web_app/assets/PriorsRoute-K5s0QhMy.js +0 -3
- sovara-0.2.7/src/sovara/assets/web_app/assets/ProjectRoute-djLnqcoS.js +0 -33
- sovara-0.2.7/src/sovara/assets/web_app/assets/ProjectRunsRoute-Df4n91j5.js +0 -1
- sovara-0.2.7/src/sovara/assets/web_app/assets/SettingsRoute-CJYubNN5.js +0 -1
- sovara-0.2.7/src/sovara/assets/web_app/assets/index-Cu0VGrcx.js +0 -12
- sovara-0.2.7/src/sovara/assets/web_app/assets/navigation-BBqqpNGD.js +0 -1
- sovara-0.2.7/src/sovara/assets/web_app/assets/runtime-rMDdBrlz.js +0 -1
- sovara-0.2.7/src/sovara/assets/web_app/assets/tierState-CVxZC5KD.js +0 -1
- sovara-0.2.7/src/sovara/server/database/priors.py +0 -678
- sovara-0.2.7/src/sovara/server/database/sqlite/priors.py +0 -739
- sovara-0.2.7/src/sovara/server/database/sqlite/schema.py +0 -975
- sovara-0.2.7/src/sovara/server/priors_backend/constants.py +0 -32
- sovara-0.2.7/src/sovara/server/priors_backend/events.py +0 -42
- sovara-0.2.7/src/sovara/server/priors_backend/llm/lesson_retriever.py +0 -1026
- sovara-0.2.7/src/sovara/server/priors_backend/retrieval_service.py +0 -504
- sovara-0.2.7/src/sovara/server/priors_backend/storage.py +0 -1631
- sovara-0.2.7/src/sovara/server/priors_backend/tools/dense_search.py +0 -96
- sovara-0.2.7/src/sovara/server/priors_backend/tools/keyword_search.py +0 -72
- sovara-0.2.7/src/sovara/server/priors_backend/tools/prior_adherence.py +0 -421
- sovara-0.2.7/src/sovara/server/priors_backend/tools/prior_coverage.py +0 -506
- sovara-0.2.7/src/sovara/server/priors_backend/tools/utils.py +0 -138
- sovara-0.2.7/src/sovara/server/web_app_assets.py +0 -68
- {sovara-0.2.7 → sovara-0.2.9}/LICENSE +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/README.md +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/docs/release/PYPI_DESC.md +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/setup.cfg +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/assets/__init__.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/assets/web_app/assets/AttachmentPreview-CFrNMdfC.css +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/assets/web_app/assets/LayoutBreadcrumb-CPgbqAJg.css +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/assets/web_app/assets/OrgRoute-Syy1k3se.css +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/assets/web_app/assets/ProjectRoute-C3Jzk4jL.css +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/assets/web_app/assets/ProjectRunsRoute-ChqTPgDi.css +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/assets/web_app/assets/arrow_lr-ByI2ndPB.png +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/assets/web_app/assets/arrow_spiral_tr_bl-XHIpf338.png +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/assets/web_app/assets/codicon-BYm2YbZ6.ttf +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/assets/web_app/assets/index-NbFqPLEC.css +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/assets/web_app/assets/pdf.worker.min-qwK7q_zL.mjs +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/assets/web_app/assets/runtime-CCiRiliL.css +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/assets/web_app/assets/settings-BS_NcxJU.css +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/assets/web_app/assets/sovara_wordmark-CjkpVR0a.png +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/assets/web_app/assets/tiny-invariant-BCXflckp.js +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/assets/web_app/favicon.png +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/assets/web_app/marketplace_icon.png +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/cli/__init__.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/cli/so_config.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/cli/so_record.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/common/__init__.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/common/config.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/common/constants.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/common/custom_metrics.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/common/lifecycle.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/common/log_redaction.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/common/project.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/common/runtime.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/common/user.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/__init__.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/agent_runner.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/monkey_patching/__init__.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/monkey_patching/api_parser.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/monkey_patching/api_parsers/__init__.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/monkey_patching/api_parsers/aiohttp_api_parser.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/monkey_patching/api_parsers/claude_code_messages_api_parser.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/monkey_patching/api_parsers/httpx_api_parser.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/monkey_patching/api_parsers/mcp_api_parser.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/monkey_patching/api_parsers/requests_api_parser.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/monkey_patching/api_parsers/sse_utils.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/monkey_patching/api_parsers/urllib3_api_parser.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/monkey_patching/apply_monkey_patches.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/monkey_patching/async_streaming.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/monkey_patching/edit_io_filters.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/monkey_patching/endpoint_whitelist.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/monkey_patching/node_naming.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/monkey_patching/patches/__init__.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/monkey_patching/patches/adk_patch.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/monkey_patching/patches/aiohttp_patch.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/monkey_patching/patches/claude_sdk_patch.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/monkey_patching/patches/httpx_patch.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/monkey_patching/patches/langchain_patch.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/monkey_patching/patches/mcp_patches.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/monkey_patching/patches/openai_agents_patch.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/monkey_patching/patches/randomness_patch.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/monkey_patching/patches/requests_patch.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/monkey_patching/patches/urllib3_patch.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/monkey_patching/patching_utils.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/monkey_patching/tool_trace_utils.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/run_log_capture.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/runner/string_matching.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/__init__.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/claude_proxy_utils.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/database/__init__.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/database/_shared.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/database/manager.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/database/mongodb/__init__.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/database/postgresql/__init__.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/database/postgresql/connection.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/database/sqlite/llm_calls.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/database/users.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/graph_analysis/inference_server.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/graph_analysis/trace_chat/__init__.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/graph_analysis/trace_chat/cancel.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/graph_analysis/trace_chat/tools/ask_step.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/graph_analysis/trace_chat/tools/edit_content.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/graph_analysis/trace_chat/tools/get_step_overview.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/graph_analysis/trace_chat/tools/get_step_snapshot.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/graph_analysis/trace_chat/tools/get_trace_overview.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/graph_analysis/trace_chat/tools/search.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/graph_analysis/trace_chat/tools/summarize_trace.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/graph_analysis/trace_chat/tools/verify.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/graph_analysis/trace_chat/utils/__init__.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/graph_analysis/trace_chat/utils/content_utils.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/graph_analysis/trace_chat/utils/context.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/graph_analysis/trace_chat/utils/edit_persist.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/graph_analysis/trace_chat/utils/step_content_view.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/graph_analysis/trace_chat/utils/step_ids.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/graph_analysis/trace_chat/utils/trace.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/graph_analysis/trace_chat/utils/verdict_persist.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/graph_models.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/handlers/__init__.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/handlers/cli_handlers.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/handlers/handler_utils.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/handlers/runner_handlers.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/handlers/ui_handlers.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/llm_provider_catalog.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/llm_settings.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/llm_settings_verification.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/package_version.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/priors_backend/__init__.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/priors_backend/llm/__init__.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/priors_backend/llm/lesson_summarizer.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/priors_backend/llm_client.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/priors_backend/logger.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/priors_scope.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/routes/__init__.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/routes/ui.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/routes/ui_common.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/routes/ui_trace_chat.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/services/__init__.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/services/trace_chat_service.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara/server/third_party_model_catalog.py +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara.egg-info/dependency_links.txt +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara.egg-info/entry_points.txt +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/src/sovara.egg-info/top_level.txt +0 -0
- {sovara-0.2.7 → sovara-0.2.9}/tests/test_graph_payloads.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sovara
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.9
|
|
4
4
|
Summary: A development tool for LLM call visualization and debugging
|
|
5
5
|
Requires-Python: >=3.10
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
@@ -23,6 +23,7 @@ Requires-Dist: google-cloud-aiplatform
|
|
|
23
23
|
Requires-Dist: flatten_dict
|
|
24
24
|
Requires-Dist: flatten_json
|
|
25
25
|
Requires-Dist: pymongo
|
|
26
|
+
Requires-Dist: sqlite-vec==0.1.9
|
|
26
27
|
Provides-Extra: dev
|
|
27
28
|
Requires-Dist: black==25.1.0; extra == "dev"
|
|
28
29
|
Requires-Dist: pytest; extra == "dev"
|
|
@@ -26,7 +26,7 @@ line-length = 100
|
|
|
26
26
|
|
|
27
27
|
[project]
|
|
28
28
|
name = "sovara"
|
|
29
|
-
version = "0.2.
|
|
29
|
+
version = "0.2.9"
|
|
30
30
|
description = "A development tool for LLM call visualization and debugging"
|
|
31
31
|
readme = "docs/release/PYPI_DESC.md"
|
|
32
32
|
requires-python = ">=3.10"
|
|
@@ -49,7 +49,8 @@ dependencies = [
|
|
|
49
49
|
"google-cloud-aiplatform",
|
|
50
50
|
"flatten_dict",
|
|
51
51
|
"flatten_json",
|
|
52
|
-
"pymongo"
|
|
52
|
+
"pymongo",
|
|
53
|
+
"sqlite-vec==0.1.9",
|
|
53
54
|
]
|
|
54
55
|
|
|
55
56
|
[project.optional-dependencies]
|
|
@@ -430,26 +430,13 @@ The ideal prior has three properties:
|
|
|
430
430
|
2. generalizes well to other scenarios where the same problem could occur in a slightly different way
|
|
431
431
|
3. and it does not conflict with other existing priors.
|
|
432
432
|
|
|
433
|
+
Good priors are actionable, concise, self-contained, specific, generalizable, faithful to the lesson, retrieval-friendly, and non-conflicting. If a prior captures the right lesson but is verbose, vague, overly run-specific, or hard to scan, polish it before saving or updating it. In the UI, use the **Polish** action in the content editor. From the CLI, use `so-cli priors polish <prior_id>` to get a non-mutating polished content proposal.
|
|
434
|
+
|
|
433
435
|
Once you have constructed a prior, check if the problem is solved by doing A/B testing. You should inject the prior at any point you see fit, and use the `edit-and-rerun` functionality. If you want to try different versions of the prior, run `edit-and-rerun` in parallel.
|
|
434
436
|
Once you verified that the prior addresses the problem, retrieve the available priors, and check if you introduced a conflict with another prior. If so, resolve the conflict by iteratively tuning and running the agent with the adapted priors, until you are satisfied.
|
|
435
437
|
If the prior came from debugging or improving a specific Sovara run, attach that provenance when you save it: pass `--run-id <full_run_uuid>` to `so-cli priors create` or `so-cli priors update`. Use the full UUID from `so-cli record` or `so-cli runs`; unlike `probe` and `logs`, this field should not use a short prefix.
|
|
436
438
|
When you learned the prior from a concrete run and omit `--run-id`, treat that as a mistake and fix it before you move on. The only normal case for a missing `run_id` is when the prior came from broad repository inspection or synthesis across multiple runs rather than one specific trace.
|
|
437
439
|
|
|
438
|
-
When a prior constrains correctness, also attach prior-adherence metadata:
|
|
439
|
-
|
|
440
|
-
- `--consequence-if-not-followed`: the concrete failure mode expected when the prior is relevant but the model violates it.
|
|
441
|
-
- `--non-adherence-severity`: an integer from 1 to 10 used as the fixed penalty when the adherence judge finds the prior relevant and not followed.
|
|
442
|
-
|
|
443
|
-
Use this severity scale:
|
|
444
|
-
|
|
445
|
-
- `1-2`: cosmetic or negligible; unlikely to affect outcome
|
|
446
|
-
- `3-4`: minor quality, consistency, or preference issue
|
|
447
|
-
- `5-6`: material correctness or interpretation risk
|
|
448
|
-
- `7-8`: serious issue likely to cause wrong output, wrong action, output-contract violation, or major degradation
|
|
449
|
-
- `9-10`: direct correctness break, safety-critical violation, hard contract violation, or likely primary reason the step failed
|
|
450
|
-
|
|
451
|
-
The adherence judge decides whether the prior was relevant and followed, but it does not reinterpret the severity. If the prior is violated, the stored `non_adherence_severity` is used as-is.
|
|
452
|
-
|
|
453
440
|
### How to use
|
|
454
441
|
|
|
455
442
|
First, inject priors into the context by modifying the user code.
|
|
@@ -486,7 +473,7 @@ priors_context = inject_priors(
|
|
|
486
473
|
`so-cli priors` mirrors the public priors API exposed by the main `so-server`.
|
|
487
474
|
|
|
488
475
|
```
|
|
489
|
-
usage: so-cli priors [-h] {start-server,list,get,create,update,delete,query,retrieve,migrate,restructure,ls,mkdir,mv,cp,rm} ...
|
|
476
|
+
usage: so-cli priors [-h] {start-server,list,get,create,update,polish,delete,query,retrieve,migrate,restructure,ls,mkdir,mv,cp,rm} ...
|
|
490
477
|
```
|
|
491
478
|
|
|
492
479
|
When you need to target a project explicitly, list projects first:
|
|
@@ -501,7 +488,7 @@ Then pass `--project-id` or `--proj-id` with a full project ID or any unambiguou
|
|
|
501
488
|
uv run so-cli runs --project-id a6cbns64
|
|
502
489
|
uv run so-cli priors ls --proj-id a6cbns64
|
|
503
490
|
uv run so-cli priors ls path/to/subfolder/ --proj-id a6cbns64
|
|
504
|
-
uv run so-cli priors create --title "<title>" --content "<content>" --summary "<summary>" --path "path/to/subfolder/" --
|
|
491
|
+
uv run so-cli priors create --title "<title>" --content "<content>" --summary "<summary>" --path "path/to/subfolder/" --project-id a6cbns64
|
|
505
492
|
```
|
|
506
493
|
|
|
507
494
|
For root scope, omit the path entirely. Examples: `uv run so-cli priors ls --project-id a6cbns64`, `uv run so-cli priors list --project-id a6cbns64`, or `uv run so-cli priors retrieve "<context>" --project-id a6cbns64`.
|
|
@@ -510,8 +497,9 @@ The main commands are:
|
|
|
510
497
|
|
|
511
498
|
- `list`: list priors, optionally filtered by `--path`
|
|
512
499
|
- `get <prior_id>`: fetch one prior
|
|
513
|
-
- `create`: create a prior with `--title`, `--content`, and optional `--summary`, `--path`, `--run-id`, `--when-to-use`, `--
|
|
514
|
-
- `update <prior_id>`: update `--title`, `--content`, `--path`, `--run-id`, `--when-to-use`, `--
|
|
500
|
+
- `create`: create a prior with `--title`, `--content`, and optional `--summary`, `--path`, `--run-id`, `--when-to-use`, `--alias`, and `--keyword`. If you omit `--summary`, the server generates one with a cheap model and a fallback. Pass `--run-id <full_run_uuid>` whenever the prior came from a specific run; if you just verified a fix with `so-cli record`, this should usually be present.
|
|
501
|
+
- `update <prior_id>`: update `--title`, `--content`, `--path`, `--run-id`, `--when-to-use`, `--alias`, and/or `--keyword`. Preserve or add `--run-id <full_run_uuid>` when the prior is tied to a run; do not drop provenance during follow-up edits.
|
|
502
|
+
- `polish <prior_id>`: return a non-mutating polished content proposal for a prior
|
|
515
503
|
- `delete <prior_id>`: delete one prior
|
|
516
504
|
- `query`: return all priors in a path plus an injected `<sovara-priors>` block
|
|
517
505
|
- `retrieve "<context>"`: use the LLM retriever to select relevant priors
|
|
@@ -524,8 +512,9 @@ Examples:
|
|
|
524
512
|
```bash
|
|
525
513
|
so-cli priors list --path "path/to/subfolder/"
|
|
526
514
|
so-cli priors get <prior_id>
|
|
527
|
-
so-cli priors create --title "<title>" --content "<content>" --summary "<summary>" --path "path/to/subfolder/" --run-id "<full_run_uuid>" --
|
|
528
|
-
so-cli priors
|
|
515
|
+
so-cli priors create --title "<title>" --content "<content>" --summary "<summary>" --path "path/to/subfolder/" --run-id "<full_run_uuid>" --alias "<alias>" --keyword "<keyword>"
|
|
516
|
+
so-cli priors polish <prior_id>
|
|
517
|
+
so-cli priors update <prior_id> --content "<new_content>" --path "path/to/another-subfolder/" --alias "<alias>" --keyword "<keyword>"
|
|
529
518
|
so-cli priors delete <prior_id>
|
|
530
519
|
so-cli priors query --path "path/to/subfolder/"
|
|
531
520
|
so-cli priors retrieve "Find validation guidance"
|
|
@@ -541,7 +530,7 @@ so-cli priors rm -r path/to/old-folder/
|
|
|
541
530
|
|
|
542
531
|
Restructure workflow:
|
|
543
532
|
|
|
544
|
-
1. Run `so-cli priors restructure propose` to get a proposal with `task_id`, `moves`, `new_folders`, and `
|
|
533
|
+
1. Run `so-cli priors restructure propose` to get a proposal with `task_id`, `moves`, `new_folders`, and `prior_tree_hash`.
|
|
545
534
|
2. Optionally inspect or edit the JSON proposal file.
|
|
546
535
|
3. Run `so-cli priors restructure execute --proposal-file proposal.json` to execute it.
|
|
547
536
|
4. If you do not want to apply it, run `so-cli priors restructure abort <task_id>` to release the lock.
|
|
@@ -554,18 +543,15 @@ Representative outputs:
|
|
|
554
543
|
{
|
|
555
544
|
"priors": [
|
|
556
545
|
{
|
|
557
|
-
"
|
|
546
|
+
"prior_id": "24d90294",
|
|
558
547
|
"title": "Rate Limiting Best Practices",
|
|
559
548
|
"summary": "Use exponential backoff with jitter when upstream APIs rate-limit requests.",
|
|
560
549
|
"content": "When dealing with rate limits, implement exponential backoff...",
|
|
561
550
|
"path": "path/to/subfolder/",
|
|
562
551
|
"prior_status": "active",
|
|
563
552
|
"run_id": "<run_uuid_or_null>",
|
|
564
|
-
"consequence_if_not_followed": "Violating this prior can cause retries to duplicate side-effecting calls.",
|
|
565
|
-
"non_adherence_severity": "<integer_1_to_10>",
|
|
566
553
|
"aliases": ["rate limit retries", "429 retry policy"],
|
|
567
|
-
"keywords": ["rate-limit", "backoff", "jitter", "429"]
|
|
568
|
-
"related_priors": []
|
|
554
|
+
"keywords": ["rate-limit", "backoff", "jitter", "429"]
|
|
569
555
|
}
|
|
570
556
|
]
|
|
571
557
|
}
|
|
@@ -578,9 +564,7 @@ Active priors now store:
|
|
|
578
564
|
- `content`: mandatory raw markdown without a title heading
|
|
579
565
|
- `status`: active or draft
|
|
580
566
|
- `run_id`: optional source trace/run UUID; pass it whenever the prior was derived from a specific run
|
|
581
|
-
- `
|
|
582
|
-
- `non_adherence_severity`: optional integer `1-10` fixed severity penalty for a violated relevant prior
|
|
583
|
-
- `aliases`, `keywords`, `related_priors`: optional string lists
|
|
567
|
+
- `aliases`, `keywords`: optional string lists
|
|
584
568
|
- `created_at`, `updated_at`: UTC timestamps
|
|
585
569
|
- `validation_metadata`: latest validation payload
|
|
586
570
|
|
|
@@ -589,17 +573,14 @@ Active priors now store:
|
|
|
589
573
|
```json
|
|
590
574
|
{
|
|
591
575
|
"status": "created",
|
|
592
|
-
"
|
|
576
|
+
"prior_id": "<prior_id>",
|
|
593
577
|
"title": "<title>",
|
|
594
578
|
"summary": "<manual_or_generated_summary>",
|
|
595
579
|
"content": "<content>",
|
|
596
580
|
"path": "path/to/subfolder/",
|
|
597
581
|
"run_id": "<run_uuid_or_null>",
|
|
598
|
-
"consequence_if_not_followed": "<failure_mode_or_empty_string>",
|
|
599
|
-
"non_adherence_severity": "<integer_1_to_10>",
|
|
600
582
|
"aliases": ["<manual_or_generated_alias>"],
|
|
601
|
-
"keywords": ["<manual_or_generated_keyword>"]
|
|
602
|
-
"related_priors": ["<prior_id>"]
|
|
583
|
+
"keywords": ["<manual_or_generated_keyword>"]
|
|
603
584
|
}
|
|
604
585
|
```
|
|
605
586
|
|
|
@@ -610,14 +591,14 @@ Active priors now store:
|
|
|
610
591
|
"path": "path/to/subfolder/",
|
|
611
592
|
"priors": [
|
|
612
593
|
{
|
|
613
|
-
"
|
|
594
|
+
"prior_id": "<prior_id>",
|
|
614
595
|
"name": "<name>",
|
|
615
596
|
"summary": "<summary>",
|
|
616
597
|
"content": "<content>",
|
|
617
598
|
"path": "path/to/subfolder/"
|
|
618
599
|
}
|
|
619
600
|
],
|
|
620
|
-
"injected_context": "<sovara-priors>\n<!-- {\"priors\":[{\"
|
|
601
|
+
"injected_context": "<sovara-priors>\n<!-- {\"priors\":[{\"prior_id\":\"<prior_id>\"}]} -->\n## <name>\n<content>\n</sovara-priors>"
|
|
621
602
|
}
|
|
622
603
|
```
|
|
623
604
|
|
|
@@ -629,7 +610,7 @@ Active priors now store:
|
|
|
629
610
|
"base_path": "path/to/root/",
|
|
630
611
|
"priors": [
|
|
631
612
|
{
|
|
632
|
-
"
|
|
613
|
+
"prior_id": "<prior_id>",
|
|
633
614
|
"name": "<name>",
|
|
634
615
|
"summary": "<summary>",
|
|
635
616
|
"content": "<content>",
|
|
@@ -658,7 +639,7 @@ Active priors now store:
|
|
|
658
639
|
],
|
|
659
640
|
"redundant_prior_ids": [],
|
|
660
641
|
"total_priors": 4,
|
|
661
|
-
"
|
|
642
|
+
"prior_tree_hash": "<prior_tree_hash>"
|
|
662
643
|
}
|
|
663
644
|
```
|
|
664
645
|
|
|
@@ -675,7 +656,7 @@ Active priors now store:
|
|
|
675
656
|
],
|
|
676
657
|
"priors": [
|
|
677
658
|
{
|
|
678
|
-
"
|
|
659
|
+
"prior_id": "abc123",
|
|
679
660
|
"name": "Some Prior",
|
|
680
661
|
"summary": "...",
|
|
681
662
|
"content": "...",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r,j as e}from"./index-TU6o79pU.js";import{D as n,a as l,P as o,G as p}from"./DocumentPreviewModal-DLcTPg47.js";import{M as c,i as d,a as h,h as u,s as x,d as j}from"./RunRoute-CjnawiLF.js";import"./tiny-invariant-BCXflckp.js";import"./LayoutBreadcrumb-DrZRF2Sb.js";import"./tierState-BVmlAt4E.js";import"./api-VlLy9MpQ.js";import"./runtime-B1TGbSkq.js";import"./plus-B1NOTICQ.js";import"./value-Bqe5DuYT.js";import"./prismTheme-nMW1SONA.js";import"./useTheme-BMbBHOjM.js";p.workerSrc=new URL("/assets/pdf.worker.min-qwK7q_zL.mjs",import.meta.url).toString();function b({attachment:m,onClick:i}){const s=`data:${m.mimeType};base64,${m.data}`,t=c[m.mimeType]??m.mimeType.split("/")[1]?.toUpperCase()??"FILE";return e.jsxs("button",{className:"attachment-thumb",onClick:i,title:m.name,children:[e.jsx("div",{className:"attachment-thumb-preview",children:d(m.mimeType)?e.jsx("img",{src:s,alt:m.name,className:"attachment-thumb-img"}):h(m.mimeType)?e.jsx(l,{file:s,loading:e.jsx("div",{className:"attachment-thumb-placeholder",children:"PDF"}),children:e.jsx(o,{pageNumber:1,width:120,renderTextLayer:!1,renderAnnotationLayer:!1})}):e.jsx("div",{className:"attachment-thumb-placeholder",children:t})}),e.jsxs("div",{className:"attachment-thumb-label",children:[e.jsx("span",{className:"attachment-thumb-ext",children:t}),e.jsx("span",{className:"attachment-thumb-name",children:m.name})]})]})}function E({attachments:m}){const[i,s]=r.useState(null);if(m.length===0)return null;function t(a){u(a.mimeType)?s(a):x(j(a.data,{mime_type:a.mimeType,filename:a.name})||{data:a.data,mimeType:a.mimeType,type:"unknown",name:a.name})}return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"attachment-strip",children:m.map(a=>e.jsx(b,{attachment:a,onClick:()=>t(a)},a.id))}),i&&e.jsx(n,{attachment:i,onClose:()=>s(null)})]})}export{E as AttachmentStrip};
|