sovara 0.2.4__tar.gz → 0.2.6__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.4 → sovara-0.2.6}/PKG-INFO +6 -2
- {sovara-0.2.4 → sovara-0.2.6}/pyproject.toml +8 -4
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/assets/SKILL.md +104 -39
- sovara-0.2.6/src/sovara/assets/web_app/assets/AttachmentPreview-Di2_OG_9.js +1 -0
- sovara-0.2.4/src/sovara/assets/web_app/assets/DocumentPreviewModal-B9FumoYT.js → sovara-0.2.6/src/sovara/assets/web_app/assets/DocumentPreviewModal-CvQFa4di.js +5 -5
- sovara-0.2.6/src/sovara/assets/web_app/assets/LayoutBreadcrumb-CJhx8VyY.js +1 -0
- sovara-0.2.6/src/sovara/assets/web_app/assets/LayoutBreadcrumb-CPgbqAJg.css +1 -0
- sovara-0.2.6/src/sovara/assets/web_app/assets/OrgRoute-CKAmaA4W.js +1 -0
- sovara-0.2.6/src/sovara/assets/web_app/assets/OrgRoute-Syy1k3se.css +1 -0
- sovara-0.2.6/src/sovara/assets/web_app/assets/PriorsRoute-BveozA7x.css +1 -0
- sovara-0.2.6/src/sovara/assets/web_app/assets/PriorsRoute-K5s0QhMy.js +3 -0
- sovara-0.2.6/src/sovara/assets/web_app/assets/ProjectRoute-C3Jzk4jL.css +1 -0
- sovara-0.2.6/src/sovara/assets/web_app/assets/ProjectRoute-djLnqcoS.js +33 -0
- sovara-0.2.6/src/sovara/assets/web_app/assets/ProjectRunsRoute-ChqTPgDi.css +1 -0
- sovara-0.2.6/src/sovara/assets/web_app/assets/ProjectRunsRoute-Df4n91j5.js +1 -0
- sovara-0.2.6/src/sovara/assets/web_app/assets/RunRoute-BXKXUvYa.js +33 -0
- sovara-0.2.6/src/sovara/assets/web_app/assets/RunRoute-CRAJ9hM9.css +1 -0
- sovara-0.2.6/src/sovara/assets/web_app/assets/SettingsRoute-CJYubNN5.js +1 -0
- sovara-0.2.4/src/sovara/assets/web_app/assets/eye-DljehhmM.js → sovara-0.2.6/src/sovara/assets/web_app/assets/eye-BwLFOixq.js +1 -1
- sovara-0.2.6/src/sovara/assets/web_app/assets/index-Cu0VGrcx.js +12 -0
- sovara-0.2.4/src/sovara/assets/web_app/assets/index-veNT10PX.css → sovara-0.2.6/src/sovara/assets/web_app/assets/index-NbFqPLEC.css +1 -1
- sovara-0.2.6/src/sovara/assets/web_app/assets/navigation-BBqqpNGD.js +1 -0
- sovara-0.2.4/src/sovara/assets/web_app/assets/plus-CkqVCne8.js → sovara-0.2.6/src/sovara/assets/web_app/assets/plus-LepfYku6.js +1 -1
- sovara-0.2.4/src/sovara/assets/web_app/assets/prismTheme-Bx8cYzkm.js → sovara-0.2.6/src/sovara/assets/web_app/assets/prismTheme-BK3YfG66.js +23 -23
- sovara-0.2.6/src/sovara/assets/web_app/assets/runtime-CCiRiliL.css +1 -0
- sovara-0.2.6/src/sovara/assets/web_app/assets/runtime-rMDdBrlz.js +1 -0
- sovara-0.2.6/src/sovara/assets/web_app/assets/settings-BS_NcxJU.css +1 -0
- sovara-0.2.6/src/sovara/assets/web_app/assets/settings-CP5l-jN0.js +1 -0
- sovara-0.2.6/src/sovara/assets/web_app/assets/tierState-CVxZC5KD.js +1 -0
- sovara-0.2.6/src/sovara/assets/web_app/assets/tiny-invariant-BCXflckp.js +1 -0
- sovara-0.2.4/src/sovara/assets/web_app/assets/trash-2-DYeReTGL.js → sovara-0.2.6/src/sovara/assets/web_app/assets/trash-2-QBj_Tw9w.js +1 -1
- sovara-0.2.6/src/sovara/assets/web_app/assets/useTheme-BfCfHZeA.js +1 -0
- sovara-0.2.6/src/sovara/assets/web_app/assets/value-BlxarHmt.js +1 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/assets/web_app/index.html +13 -3
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/cli/so_server.py +70 -40
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/cli/so_tool.py +462 -56
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/common/config.py +91 -2
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/common/constants.py +27 -0
- sovara-0.2.6/src/sovara/common/priors_block.py +43 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/common/project.py +59 -9
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/common/user.py +21 -12
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/agent_runner.py +8 -1
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/context_manager.py +10 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/monkey_patching/api_parser.py +38 -51
- sovara-0.2.6/src/sovara/runner/monkey_patching/api_parsers/claude_code_messages_api_parser.py +47 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/monkey_patching/apply_monkey_patches.py +6 -1
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/monkey_patching/edit_io_filters.py +24 -0
- sovara-0.2.6/src/sovara/runner/monkey_patching/patches/adk_patch.py +153 -0
- sovara-0.2.6/src/sovara/runner/monkey_patching/patches/claude_sdk_patch.py +181 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/monkey_patching/patches/langchain_patch.py +39 -55
- sovara-0.2.6/src/sovara/runner/monkey_patching/patches/openai_agents_patch.py +292 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/monkey_patching/patching_utils.py +68 -14
- sovara-0.2.6/src/sovara/runner/monkey_patching/tool_trace_utils.py +178 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/node_execution.py +50 -9
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/priors.py +271 -181
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/priors_pipeline.py +104 -25
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/runtime_client.py +80 -4
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/app.py +11 -1
- sovara-0.2.6/src/sovara/server/claude_proxy_utils.py +277 -0
- sovara-0.2.6/src/sovara/server/database/__init__.py +21 -0
- sovara-0.2.6/src/sovara/server/database/backend_protocol.py +626 -0
- sovara-0.2.6/src/sovara/server/database/blob_storage.py +123 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/database/llm_calls.py +88 -23
- sovara-0.2.6/src/sovara/server/database/manager.py +107 -0
- sovara-0.2.6/src/sovara/server/database/mongodb/__init__.py +3 -0
- sovara-0.2.6/src/sovara/server/database/mongodb/backend.py +2143 -0
- sovara-0.2.6/src/sovara/server/database/mongodb/connection.py +163 -0
- sovara-0.2.6/src/sovara/server/database/postgresql/backend.py +768 -0
- sovara-0.2.6/src/sovara/server/database/postgresql/connection.py +64 -0
- sovara-0.2.6/src/sovara/server/database/postgresql/schema.py +161 -0
- sovara-0.2.6/src/sovara/server/database/priors.py +678 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/database/projects.py +101 -5
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/database/runs.py +20 -1
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/database/sqlite/__init__.py +14 -1
- sovara-0.2.6/src/sovara/server/database/sqlite/backend.py +1002 -0
- sovara-0.2.6/src/sovara/server/database/sqlite/connection.py +278 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/database/sqlite/llm_calls.py +148 -0
- sovara-0.2.6/src/sovara/server/database/sqlite/priors.py +739 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/database/sqlite/projects.py +84 -14
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/database/sqlite/runs.py +99 -6
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/database/sqlite/schema.py +284 -108
- sovara-0.2.6/src/sovara/server/database/sqlite/users.py +78 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/graph_models.py +2 -1
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/handlers/runner_handlers.py +2 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/llm_backend.py +179 -37
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/llm_settings.py +77 -19
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/llm_settings_verification.py +134 -12
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/prior_display.py +24 -6
- sovara-0.2.6/src/sovara/server/priors_backend/constants.py +32 -0
- sovara-0.2.6/src/sovara/server/priors_backend/llm/folder_rebalancer.py +305 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/priors_backend/llm/lesson_restructurer.py +107 -33
- sovara-0.2.6/src/sovara/server/priors_backend/llm/lesson_retriever.py +1026 -0
- sovara-0.2.6/src/sovara/server/priors_backend/llm/lesson_summarizer.py +187 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/priors_backend/llm/lesson_validator.py +10 -14
- sovara-0.2.6/src/sovara/server/priors_backend/llm/prior_metadata_suggester.py +145 -0
- sovara-0.2.6/src/sovara/server/priors_backend/llm_client.py +158 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/priors_backend/logger.py +1 -1
- sovara-0.2.6/src/sovara/server/priors_backend/path_utils.py +61 -0
- sovara-0.2.6/src/sovara/server/priors_backend/retrieval_service.py +504 -0
- sovara-0.2.6/src/sovara/server/priors_backend/routes.py +1721 -0
- sovara-0.2.6/src/sovara/server/priors_backend/storage.py +1631 -0
- sovara-0.2.6/src/sovara/server/priors_backend/tools/adjudication.py +419 -0
- sovara-0.2.6/src/sovara/server/priors_backend/tools/bm25_search.py +51 -0
- sovara-0.2.6/src/sovara/server/priors_backend/tools/dense_search.py +96 -0
- sovara-0.2.6/src/sovara/server/priors_backend/tools/folder_groups.py +57 -0
- sovara-0.2.6/src/sovara/server/priors_backend/tools/keyword_search.py +72 -0
- sovara-0.2.6/src/sovara/server/priors_backend/tools/parallel_search.py +150 -0
- sovara-0.2.6/src/sovara/server/priors_backend/tools/preprocess_context.py +195 -0
- sovara-0.2.6/src/sovara/server/priors_backend/tools/prior_adherence.py +421 -0
- sovara-0.2.6/src/sovara/server/priors_backend/tools/prior_coverage.py +506 -0
- sovara-0.2.6/src/sovara/server/priors_backend/tools/rerank.py +76 -0
- sovara-0.2.6/src/sovara/server/priors_backend/tools/utils.py +138 -0
- sovara-0.2.6/src/sovara/server/routes/__init__.py +0 -0
- sovara-0.2.6/src/sovara/server/routes/claude_proxy.py +435 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/routes/internal.py +253 -18
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/routes/ui.py +125 -7
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/routes/ui_projects.py +58 -45
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/routes/ui_runs.py +87 -1
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/services/trace_chat_service.py +3 -7
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/state.py +60 -1
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/third_party_model_catalog.py +23 -10
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara.egg-info/PKG-INFO +6 -2
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara.egg-info/SOURCES.txt +62 -25
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara.egg-info/requires.txt +5 -1
- sovara-0.2.4/src/sovara/assets/web_app/assets/AttachmentPreview-h01XSt_Q.js +0 -1
- sovara-0.2.4/src/sovara/assets/web_app/assets/LayoutBreadcrumb-D8Jj9PNg.js +0 -1
- sovara-0.2.4/src/sovara/assets/web_app/assets/LayoutBreadcrumb-DopPRSia.css +0 -1
- sovara-0.2.4/src/sovara/assets/web_app/assets/OrgRoute-BcO5LcH1.js +0 -1
- sovara-0.2.4/src/sovara/assets/web_app/assets/OrgRoute-DIln18S1.css +0 -1
- sovara-0.2.4/src/sovara/assets/web_app/assets/PriorsRoute-BSsFm0pQ.css +0 -1
- sovara-0.2.4/src/sovara/assets/web_app/assets/PriorsRoute-CaMBZzP_.js +0 -5
- sovara-0.2.4/src/sovara/assets/web_app/assets/ProjectRoute-BCA5W9t8.js +0 -1
- sovara-0.2.4/src/sovara/assets/web_app/assets/ProjectRoute-DtQqJb1n.css +0 -1
- sovara-0.2.4/src/sovara/assets/web_app/assets/RunRoute-BWs7EUiD.css +0 -1
- sovara-0.2.4/src/sovara/assets/web_app/assets/RunRoute-rUSpBhsI.js +0 -21
- sovara-0.2.4/src/sovara/assets/web_app/assets/SettingsRoute-BtETGx6c.js +0 -1
- sovara-0.2.4/src/sovara/assets/web_app/assets/SettingsRoute-C4VU70zq.css +0 -1
- sovara-0.2.4/src/sovara/assets/web_app/assets/api-1mbBSn7v.css +0 -1
- sovara-0.2.4/src/sovara/assets/web_app/assets/api-tVJBLHUH.js +0 -1
- sovara-0.2.4/src/sovara/assets/web_app/assets/index-BygN1cJK.js +0 -12
- sovara-0.2.4/src/sovara/assets/web_app/assets/tierState-Bq39H0kz.js +0 -1
- sovara-0.2.4/src/sovara/runner/monkey_patching/api_parsers/claude_sdk_api_parser.py +0 -83
- sovara-0.2.4/src/sovara/runner/monkey_patching/api_parsers/langchain_tool_api_parser.py +0 -33
- sovara-0.2.4/src/sovara/runner/monkey_patching/patches/claude_sdk_patch.py +0 -335
- sovara-0.2.4/src/sovara/server/database/__init__.py +0 -11
- sovara-0.2.4/src/sovara/server/database/manager.py +0 -34
- sovara-0.2.4/src/sovara/server/database/priors.py +0 -285
- sovara-0.2.4/src/sovara/server/database/sqlite/connection.py +0 -74
- sovara-0.2.4/src/sovara/server/database/sqlite/priors.py +0 -363
- sovara-0.2.4/src/sovara/server/database/sqlite/users.py +0 -133
- sovara-0.2.4/src/sovara/server/priors_backend/constants.py +0 -11
- sovara-0.2.4/src/sovara/server/priors_backend/llm/lesson_retriever.py +0 -390
- sovara-0.2.4/src/sovara/server/priors_backend/llm/lesson_summarizer.py +0 -82
- sovara-0.2.4/src/sovara/server/priors_backend/llm_client.py +0 -42
- sovara-0.2.4/src/sovara/server/priors_backend/routes.py +0 -1105
- sovara-0.2.4/src/sovara/server/priors_backend/storage.py +0 -478
- {sovara-0.2.4 → sovara-0.2.6}/LICENSE +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/README.md +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/docs/release/PYPI_DESC.md +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/setup.cfg +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/__init__.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/assets/__init__.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/assets/web_app/assets/AttachmentPreview-CFrNMdfC.css +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/assets/web_app/assets/arrow_lr-ByI2ndPB.png +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/assets/web_app/assets/arrow_spiral_tr_bl-XHIpf338.png +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/assets/web_app/assets/codicon-BYm2YbZ6.ttf +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/assets/web_app/assets/pdf.worker.min-qwK7q_zL.mjs +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/assets/web_app/assets/sovara_wordmark-CjkpVR0a.png +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/assets/web_app/favicon.png +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/assets/web_app/marketplace_icon.png +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/cli/__init__.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/cli/so_config.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/cli/so_record.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/common/__init__.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/common/custom_metrics.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/common/lifecycle.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/common/log_redaction.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/common/logger.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/common/runtime.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/common/utils.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/__init__.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/monkey_patching/__init__.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/monkey_patching/api_parsers/__init__.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/monkey_patching/api_parsers/aiohttp_api_parser.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/monkey_patching/api_parsers/httpx_api_parser.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/monkey_patching/api_parsers/mcp_api_parser.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/monkey_patching/api_parsers/requests_api_parser.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/monkey_patching/api_parsers/sse_utils.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/monkey_patching/api_parsers/urllib3_api_parser.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/monkey_patching/async_streaming.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/monkey_patching/endpoint_whitelist.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/monkey_patching/node_naming.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/monkey_patching/patches/__init__.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/monkey_patching/patches/aiohttp_patch.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/monkey_patching/patches/httpx_patch.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/monkey_patching/patches/mcp_patches.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/monkey_patching/patches/randomness_patch.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/monkey_patching/patches/requests_patch.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/monkey_patching/patches/urllib3_patch.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/run_log_capture.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/runner/string_matching.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/__init__.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/database/_shared.py +0 -0
- {sovara-0.2.4/src/sovara/server/graph_analysis/trace_chat → sovara-0.2.6/src/sovara/server/database/postgresql}/__init__.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/database/users.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/graph_analysis/inference_server.py +0 -0
- {sovara-0.2.4/src/sovara/server/graph_analysis/trace_chat/utils → sovara-0.2.6/src/sovara/server/graph_analysis/trace_chat}/__init__.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/graph_analysis/trace_chat/cancel.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/graph_analysis/trace_chat/main.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/graph_analysis/trace_chat/tools/__init__.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/graph_analysis/trace_chat/tools/ask_step.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/graph_analysis/trace_chat/tools/edit_content.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/graph_analysis/trace_chat/tools/get_step_overview.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/graph_analysis/trace_chat/tools/get_step_snapshot.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/graph_analysis/trace_chat/tools/get_trace_overview.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/graph_analysis/trace_chat/tools/search.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/graph_analysis/trace_chat/tools/summarize_trace.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/graph_analysis/trace_chat/tools/verify.py +0 -0
- {sovara-0.2.4/src/sovara/server/routes → sovara-0.2.6/src/sovara/server/graph_analysis/trace_chat/utils}/__init__.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/graph_analysis/trace_chat/utils/content_utils.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/graph_analysis/trace_chat/utils/context.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/graph_analysis/trace_chat/utils/edit_persist.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/graph_analysis/trace_chat/utils/step_content_view.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/graph_analysis/trace_chat/utils/step_ids.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/graph_analysis/trace_chat/utils/trace.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/graph_analysis/trace_chat/utils/verdict_persist.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/handlers/__init__.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/handlers/cli_handlers.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/handlers/handler_utils.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/handlers/ui_handlers.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/llm_provider_catalog.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/package_version.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/priors_backend/__init__.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/priors_backend/events.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/priors_backend/llm/__init__.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/priors_scope.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/routes/events.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/routes/runner.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/routes/ui_common.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/routes/ui_trace_chat.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/services/__init__.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara/server/web_app_assets.py +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara.egg-info/dependency_links.txt +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara.egg-info/entry_points.txt +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/src/sovara.egg-info/top_level.txt +0 -0
- {sovara-0.2.4 → sovara-0.2.6}/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.6
|
|
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
|
|
@@ -8,6 +8,8 @@ License-File: LICENSE
|
|
|
8
8
|
Requires-Dist: pyyaml
|
|
9
9
|
Requires-Dist: dill
|
|
10
10
|
Requires-Dist: boto3
|
|
11
|
+
Requires-Dist: bm25s
|
|
12
|
+
Requires-Dist: cohere
|
|
11
13
|
Requires-Dist: debugpy
|
|
12
14
|
Requires-Dist: psutil
|
|
13
15
|
Requires-Dist: psycopg2-binary
|
|
@@ -20,14 +22,15 @@ Requires-Dist: google-auth
|
|
|
20
22
|
Requires-Dist: google-cloud-aiplatform
|
|
21
23
|
Requires-Dist: flatten_dict
|
|
22
24
|
Requires-Dist: flatten_json
|
|
25
|
+
Requires-Dist: pymongo
|
|
23
26
|
Provides-Extra: dev
|
|
24
27
|
Requires-Dist: black==25.1.0; extra == "dev"
|
|
25
28
|
Requires-Dist: pytest; extra == "dev"
|
|
26
29
|
Requires-Dist: pre-commit; extra == "dev"
|
|
27
30
|
Requires-Dist: responses; extra == "dev"
|
|
31
|
+
Requires-Dist: mongomock; extra == "dev"
|
|
28
32
|
Requires-Dist: openai; extra == "dev"
|
|
29
33
|
Requires-Dist: anthropic; extra == "dev"
|
|
30
|
-
Requires-Dist: openai-agents; extra == "dev"
|
|
31
34
|
Requires-Dist: google-genai; extra == "dev"
|
|
32
35
|
Requires-Dist: hydra-core; extra == "dev"
|
|
33
36
|
Requires-Dist: e2b_code_interpreter; extra == "dev"
|
|
@@ -43,6 +46,7 @@ Requires-Dist: openai; extra == "examples"
|
|
|
43
46
|
Requires-Dist: anthropic; extra == "examples"
|
|
44
47
|
Requires-Dist: openai-agents; extra == "examples"
|
|
45
48
|
Requires-Dist: google-genai; extra == "examples"
|
|
49
|
+
Requires-Dist: claude-agent-sdk; extra == "examples"
|
|
46
50
|
Provides-Extra: docs
|
|
47
51
|
Requires-Dist: mkdocs-material>=9.5; extra == "docs"
|
|
48
52
|
Requires-Dist: mkdocs-minify-plugin; extra == "docs"
|
|
@@ -26,7 +26,7 @@ line-length = 100
|
|
|
26
26
|
|
|
27
27
|
[project]
|
|
28
28
|
name = "sovara"
|
|
29
|
-
version = "0.2.
|
|
29
|
+
version = "0.2.6"
|
|
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"
|
|
@@ -35,6 +35,8 @@ dependencies = [
|
|
|
35
35
|
"pyyaml",
|
|
36
36
|
"dill",
|
|
37
37
|
"boto3",
|
|
38
|
+
"bm25s",
|
|
39
|
+
"cohere",
|
|
38
40
|
"debugpy",
|
|
39
41
|
"psutil",
|
|
40
42
|
"psycopg2-binary",
|
|
@@ -46,7 +48,8 @@ dependencies = [
|
|
|
46
48
|
"google-auth",
|
|
47
49
|
"google-cloud-aiplatform",
|
|
48
50
|
"flatten_dict",
|
|
49
|
-
"flatten_json"
|
|
51
|
+
"flatten_json",
|
|
52
|
+
"pymongo"
|
|
50
53
|
]
|
|
51
54
|
|
|
52
55
|
[project.optional-dependencies]
|
|
@@ -55,9 +58,9 @@ dev = [
|
|
|
55
58
|
"pytest",
|
|
56
59
|
"pre-commit",
|
|
57
60
|
"responses",
|
|
61
|
+
"mongomock",
|
|
58
62
|
"openai",
|
|
59
63
|
"anthropic",
|
|
60
|
-
"openai-agents",
|
|
61
64
|
"google-genai",
|
|
62
65
|
"hydra-core",
|
|
63
66
|
"e2b_code_interpreter",
|
|
@@ -76,7 +79,8 @@ examples = [
|
|
|
76
79
|
"openai",
|
|
77
80
|
"anthropic",
|
|
78
81
|
"openai-agents",
|
|
79
|
-
"google-genai"
|
|
82
|
+
"google-genai",
|
|
83
|
+
"claude-agent-sdk"
|
|
80
84
|
]
|
|
81
85
|
|
|
82
86
|
docs = [
|
|
@@ -19,6 +19,7 @@ description: sovara helps you develop and maintain adaptable agentic systems. It
|
|
|
19
19
|
2. **Check setup state before the first run**: Start with `uv run so-cli status --path <script-or-project-dir>`. This reports whether the local Sovara user is configured and whether the target directory already belongs to a Sovara project.
|
|
20
20
|
3. **Initialize explicitly when setup is missing**: If the user or project is missing, run `uv run so-cli init --user-name "<full name>" --user-email "<email>" [--project-root <dir> --project-name "<name>"]`. Do not reason about `~/.sovara/.user_id` or `.sovara/.project_id` directly if the CLI can tell you the setup state.
|
|
21
21
|
4. **For non-interactive runs, pass setup through the CLI**: When running through Codex or another non-interactive shell, do not rely on prompts. Use `so-cli init` first or pass `--user-name`, `--user-email`, `--project-root`, `--project-name`, and `--project-description` directly to `so-cli record`.
|
|
22
|
+
5. **Use explicit project selection when needed**: Run `uv run so-cli projects` to list visible projects and their `project_id`s. Project-scoped CLI commands such as `so-cli runs ...` and `so-cli priors ...` accept `--project-id` / `--proj-id`, and these flags accept any unambiguous project-id prefix. If you do not pass a project ID, priors commands resolve scope from the client workspace. Do not assume the server process's cwd will select the right project.
|
|
22
23
|
|
|
23
24
|
## Integrated Observability
|
|
24
25
|
|
|
@@ -417,7 +418,9 @@ Then compare results across the three runs using `so-cli probe` and `so-cli runs
|
|
|
417
418
|
|
|
418
419
|
## Priors
|
|
419
420
|
|
|
420
|
-
Priors are small snippets that augment a context at runtime to inform the agent of specifics like company policies, specific domain knowledge, or conventions. Priors are organized in folders (e.g. `
|
|
421
|
+
Priors are small snippets that augment a context at runtime to inform the agent of specifics like company policies, specific domain knowledge, or conventions. Priors are organized in folders (e.g. `path/to/subfolder/`) so different parts of an agent system can have their own priors. `so-cli` provides capability to create and manage priors.
|
|
422
|
+
|
|
423
|
+
**Default retrieval scope:** Automatic runtime prior injection is the default and is project-wide. It retrieves from root scope (`""`), so it can consider priors anywhere in the project, including subfolders. Use folders for organization, or to narrow scope explicitly with `inject_priors(path="path/to/subfolder/", ...)`. If you manually call `inject_priors(...)`, that inserts a managed `<sovara-priors>` block and automatic retrieval for that same call is skipped.
|
|
421
424
|
|
|
422
425
|
### When to use
|
|
423
426
|
If injecting additional information that resolves ambiguity, introduces domain knowledge, or specifies company policy, can resolve the issue – construct a prior.
|
|
@@ -429,6 +432,23 @@ The ideal prior has three properties:
|
|
|
429
432
|
|
|
430
433
|
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.
|
|
431
434
|
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
|
+
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
|
+
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
|
+
|
|
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.
|
|
432
452
|
|
|
433
453
|
### How to use
|
|
434
454
|
|
|
@@ -438,7 +458,7 @@ First, inject priors into the context by modifying the user code.
|
|
|
438
458
|
from sovara.runner.priors import inject_priors
|
|
439
459
|
|
|
440
460
|
# Inject all priors from a specific folder into a <sovara-priors> block
|
|
441
|
-
priors_context = inject_priors(path="
|
|
461
|
+
priors_context = inject_priors(path="path/to/subfolder/")
|
|
442
462
|
|
|
443
463
|
# Prepend to your prompt
|
|
444
464
|
prompt = f"{priors_context}\n\n{user_query}" if priors_context else user_query
|
|
@@ -453,7 +473,7 @@ If you want LLM-filtered retrieval instead of loading all priors in a path:
|
|
|
453
473
|
|
|
454
474
|
```python
|
|
455
475
|
priors_context = inject_priors(
|
|
456
|
-
path="
|
|
476
|
+
path="path/to/subfolder/",
|
|
457
477
|
context=user_query,
|
|
458
478
|
method="retrieve",
|
|
459
479
|
)
|
|
@@ -469,12 +489,29 @@ priors_context = inject_priors(
|
|
|
469
489
|
usage: so-cli priors [-h] {start-server,list,get,create,update,delete,query,retrieve,migrate,restructure,ls,mkdir,mv,cp,rm} ...
|
|
470
490
|
```
|
|
471
491
|
|
|
492
|
+
When you need to target a project explicitly, list projects first:
|
|
493
|
+
|
|
494
|
+
```bash
|
|
495
|
+
uv run so-cli projects
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
Then pass `--project-id` or `--proj-id` with a full project ID or any unambiguous prefix:
|
|
499
|
+
|
|
500
|
+
```bash
|
|
501
|
+
uv run so-cli runs --project-id a6cbns64
|
|
502
|
+
uv run so-cli priors ls --proj-id a6cbns64
|
|
503
|
+
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/" --consequence-if-not-followed "<failure mode>" --non-adherence-severity <severity_1_to_10> --project-id a6cbns64
|
|
505
|
+
```
|
|
506
|
+
|
|
507
|
+
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`.
|
|
508
|
+
|
|
472
509
|
The main commands are:
|
|
473
510
|
|
|
474
511
|
- `list`: list priors, optionally filtered by `--path`
|
|
475
512
|
- `get <prior_id>`: fetch one prior
|
|
476
|
-
- `create`: create a prior
|
|
477
|
-
- `update <prior_id>`: update `--
|
|
513
|
+
- `create`: create a prior with `--title`, `--content`, and optional `--summary`, `--path`, `--run-id`, `--when-to-use`, `--consequence-if-not-followed`, `--non-adherence-severity`, `--alias`, `--keyword`, and `--related-prior`. 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.
|
|
514
|
+
- `update <prior_id>`: update `--title`, `--content`, `--path`, `--run-id`, `--when-to-use`, `--consequence-if-not-followed`, `--non-adherence-severity`, `--alias`, `--keyword`, and/or `--related-prior`. Preserve or add `--run-id <full_run_uuid>` when the prior is tied to a run; do not drop provenance during follow-up edits.
|
|
478
515
|
- `delete <prior_id>`: delete one prior
|
|
479
516
|
- `query`: return all priors in a path plus an injected `<sovara-priors>` block
|
|
480
517
|
- `retrieve "<context>"`: use the LLM retriever to select relevant priors
|
|
@@ -485,21 +522,21 @@ The main commands are:
|
|
|
485
522
|
Examples:
|
|
486
523
|
|
|
487
524
|
```bash
|
|
488
|
-
so-cli priors list --path "
|
|
525
|
+
so-cli priors list --path "path/to/subfolder/"
|
|
489
526
|
so-cli priors get <prior_id>
|
|
490
|
-
so-cli priors create --
|
|
491
|
-
so-cli priors update <prior_id> --content "<new_content>" --path "
|
|
527
|
+
so-cli priors create --title "<title>" --content "<content>" --summary "<summary>" --path "path/to/subfolder/" --run-id "<full_run_uuid>" --consequence-if-not-followed "<failure mode>" --non-adherence-severity <severity_1_to_10> --alias "<alias>" --keyword "<keyword>" --related-prior "<prior_id>"
|
|
528
|
+
so-cli priors update <prior_id> --content "<new_content>" --path "path/to/another-subfolder/" --consequence-if-not-followed "<failure mode>" --non-adherence-severity <severity_1_to_10> --alias "<alias>" --keyword "<keyword>"
|
|
492
529
|
so-cli priors delete <prior_id>
|
|
493
|
-
so-cli priors query --path "
|
|
494
|
-
so-cli priors retrieve "Find
|
|
530
|
+
so-cli priors query --path "path/to/subfolder/"
|
|
531
|
+
so-cli priors retrieve "Find validation guidance"
|
|
495
532
|
so-cli priors migrate
|
|
496
|
-
so-cli priors restructure propose --path "
|
|
533
|
+
so-cli priors restructure propose --path "path/to/root/" --comments "Group priors by subsystem" > proposal.json
|
|
497
534
|
so-cli priors restructure execute --proposal-file proposal.json
|
|
498
535
|
so-cli priors restructure abort <task_id>
|
|
499
|
-
so-cli priors ls
|
|
500
|
-
so-cli priors mv -i abc123,def456
|
|
501
|
-
so-cli priors cp
|
|
502
|
-
so-cli priors rm -r
|
|
536
|
+
so-cli priors ls
|
|
537
|
+
so-cli priors mv -i abc123,def456 path/to/destination/
|
|
538
|
+
so-cli priors cp path/to/subfolder/ path/to/subfolder-backup/
|
|
539
|
+
so-cli priors rm -r path/to/old-folder/
|
|
503
540
|
```
|
|
504
541
|
|
|
505
542
|
Restructure workflow:
|
|
@@ -511,30 +548,58 @@ Restructure workflow:
|
|
|
511
548
|
|
|
512
549
|
Representative outputs:
|
|
513
550
|
|
|
514
|
-
`so-cli priors list` returns a JSON
|
|
551
|
+
`so-cli priors list` returns a JSON object:
|
|
515
552
|
|
|
516
553
|
```json
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
554
|
+
{
|
|
555
|
+
"priors": [
|
|
556
|
+
{
|
|
557
|
+
"id": "24d90294",
|
|
558
|
+
"title": "Rate Limiting Best Practices",
|
|
559
|
+
"summary": "Use exponential backoff with jitter when upstream APIs rate-limit requests.",
|
|
560
|
+
"content": "When dealing with rate limits, implement exponential backoff...",
|
|
561
|
+
"path": "path/to/subfolder/",
|
|
562
|
+
"prior_status": "active",
|
|
563
|
+
"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
|
+
"aliases": ["rate limit retries", "429 retry policy"],
|
|
567
|
+
"keywords": ["rate-limit", "backoff", "jitter", "429"],
|
|
568
|
+
"related_priors": []
|
|
569
|
+
}
|
|
570
|
+
]
|
|
571
|
+
}
|
|
526
572
|
```
|
|
527
573
|
|
|
574
|
+
Active priors now store:
|
|
575
|
+
|
|
576
|
+
- `title`: mandatory, separate from the markdown body
|
|
577
|
+
- `summary`: mandatory persisted summary; generated by the cheap model with a fallback unless you pass `--summary` on create
|
|
578
|
+
- `content`: mandatory raw markdown without a title heading
|
|
579
|
+
- `status`: active or draft
|
|
580
|
+
- `run_id`: optional source trace/run UUID; pass it whenever the prior was derived from a specific run
|
|
581
|
+
- `consequence_if_not_followed`: optional expected failure mode when a relevant prior is violated
|
|
582
|
+
- `non_adherence_severity`: optional integer `1-10` fixed severity penalty for a violated relevant prior
|
|
583
|
+
- `aliases`, `keywords`, `related_priors`: optional string lists
|
|
584
|
+
- `created_at`, `updated_at`: UTC timestamps
|
|
585
|
+
- `validation_metadata`: latest validation payload
|
|
586
|
+
|
|
528
587
|
`so-cli priors create` returns the server's creation response:
|
|
529
588
|
|
|
530
589
|
```json
|
|
531
590
|
{
|
|
532
591
|
"status": "created",
|
|
533
592
|
"id": "<prior_id>",
|
|
534
|
-
"
|
|
535
|
-
"summary": "<
|
|
593
|
+
"title": "<title>",
|
|
594
|
+
"summary": "<manual_or_generated_summary>",
|
|
536
595
|
"content": "<content>",
|
|
537
|
-
"path": "
|
|
596
|
+
"path": "path/to/subfolder/",
|
|
597
|
+
"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
|
+
"aliases": ["<manual_or_generated_alias>"],
|
|
601
|
+
"keywords": ["<manual_or_generated_keyword>"],
|
|
602
|
+
"related_priors": ["<prior_id>"]
|
|
538
603
|
}
|
|
539
604
|
```
|
|
540
605
|
|
|
@@ -542,14 +607,14 @@ Representative outputs:
|
|
|
542
607
|
|
|
543
608
|
```json
|
|
544
609
|
{
|
|
545
|
-
"path": "
|
|
610
|
+
"path": "path/to/subfolder/",
|
|
546
611
|
"priors": [
|
|
547
612
|
{
|
|
548
613
|
"id": "<prior_id>",
|
|
549
614
|
"name": "<name>",
|
|
550
615
|
"summary": "<summary>",
|
|
551
616
|
"content": "<content>",
|
|
552
|
-
"path": "
|
|
617
|
+
"path": "path/to/subfolder/"
|
|
553
618
|
}
|
|
554
619
|
],
|
|
555
620
|
"injected_context": "<sovara-priors>\n<!-- {\"priors\":[{\"id\":\"<prior_id>\"}]} -->\n## <name>\n<content>\n</sovara-priors>"
|
|
@@ -561,14 +626,14 @@ Representative outputs:
|
|
|
561
626
|
```json
|
|
562
627
|
{
|
|
563
628
|
"context": "Find SQL validation guidance",
|
|
564
|
-
"base_path": "
|
|
629
|
+
"base_path": "path/to/root/",
|
|
565
630
|
"priors": [
|
|
566
631
|
{
|
|
567
632
|
"id": "<prior_id>",
|
|
568
633
|
"name": "<name>",
|
|
569
634
|
"summary": "<summary>",
|
|
570
635
|
"content": "<content>",
|
|
571
|
-
"path": "
|
|
636
|
+
"path": "path/to/another-subfolder/"
|
|
572
637
|
}
|
|
573
638
|
],
|
|
574
639
|
"prior_count": 1
|
|
@@ -581,13 +646,13 @@ Representative outputs:
|
|
|
581
646
|
{
|
|
582
647
|
"task_id": "<task_id>",
|
|
583
648
|
"summary": "<summary>",
|
|
584
|
-
"new_folders": ["
|
|
649
|
+
"new_folders": ["path/to/another-subfolder/"],
|
|
585
650
|
"removed_folders": [],
|
|
586
651
|
"moves": [
|
|
587
652
|
{
|
|
588
653
|
"prior_id": "<prior_id>",
|
|
589
|
-
"current_path": "
|
|
590
|
-
"new_path": "
|
|
654
|
+
"current_path": "path/to/root/",
|
|
655
|
+
"new_path": "path/to/another-subfolder/",
|
|
591
656
|
"reason": "<reason>"
|
|
592
657
|
}
|
|
593
658
|
],
|
|
@@ -601,10 +666,10 @@ Representative outputs:
|
|
|
601
666
|
|
|
602
667
|
```json
|
|
603
668
|
{
|
|
604
|
-
"path": "
|
|
669
|
+
"path": "path/to/root/",
|
|
605
670
|
"folders": [
|
|
606
671
|
{
|
|
607
|
-
"path": "
|
|
672
|
+
"path": "path/to/subfolder/",
|
|
608
673
|
"prior_count": 3
|
|
609
674
|
}
|
|
610
675
|
],
|
|
@@ -614,7 +679,7 @@ Representative outputs:
|
|
|
614
679
|
"name": "Some Prior",
|
|
615
680
|
"summary": "...",
|
|
616
681
|
"content": "...",
|
|
617
|
-
"path": "
|
|
682
|
+
"path": "path/to/root/"
|
|
618
683
|
}
|
|
619
684
|
],
|
|
620
685
|
"prior_count": 4
|
|
@@ -626,7 +691,7 @@ Representative outputs:
|
|
|
626
691
|
```json
|
|
627
692
|
{
|
|
628
693
|
"status": "moved",
|
|
629
|
-
"dst": "
|
|
694
|
+
"dst": "path/to/destination/",
|
|
630
695
|
"moved_count": 2
|
|
631
696
|
}
|
|
632
697
|
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r,j as e}from"./index-Cu0VGrcx.js";import{D as n,a as l,P as o,G as p}from"./DocumentPreviewModal-CvQFa4di.js";import{M as c,i as d,a as h,h as u,s as x,d as j}from"./RunRoute-BXKXUvYa.js";import"./tiny-invariant-BCXflckp.js";import"./LayoutBreadcrumb-CJhx8VyY.js";import"./tierState-CVxZC5KD.js";import"./navigation-BBqqpNGD.js";import"./runtime-rMDdBrlz.js";import"./plus-LepfYku6.js";import"./value-BlxarHmt.js";import"./prismTheme-BK3YfG66.js";import"./useTheme-BfCfHZeA.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};
|