sovara 0.2.0__tar.gz → 0.2.3__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.0 → sovara-0.2.3}/PKG-INFO +4 -1
- {sovara-0.2.0 → sovara-0.2.3}/README.md +52 -10
- {sovara-0.2.0 → sovara-0.2.3}/pyproject.toml +13 -3
- sovara-0.2.3/src/sovara/assets/SKILL.md +660 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/cli/so_config.py +10 -37
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/cli/so_record.py +11 -2
- sovara-0.2.3/src/sovara/cli/so_server.py +319 -0
- sovara-0.2.3/src/sovara/cli/so_tool.py +1536 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/common/config.py +0 -2
- sovara-0.2.3/src/sovara/common/constants.py +238 -0
- sovara-0.2.3/src/sovara/common/custom_metrics.py +82 -0
- sovara-0.2.3/src/sovara/common/logger.py +76 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/common/project.py +1 -1
- sovara-0.2.3/src/sovara/common/runtime.py +15 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/common/user.py +37 -2
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/common/utils.py +3 -3
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/runner/agent_runner.py +81 -29
- sovara-0.2.3/src/sovara/runner/context_manager.py +161 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/runner/monkey_patching/api_parser.py +77 -18
- sovara-0.2.3/src/sovara/runner/monkey_patching/api_parsers/aiohttp_api_parser.py +322 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/runner/monkey_patching/api_parsers/claude_sdk_api_parser.py +12 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/runner/monkey_patching/api_parsers/httpx_api_parser.py +23 -7
- sovara-0.2.3/src/sovara/runner/monkey_patching/api_parsers/sse_utils.py +119 -0
- sovara-0.2.3/src/sovara/runner/monkey_patching/api_parsers/urllib3_api_parser.py +143 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/runner/monkey_patching/apply_monkey_patches.py +2 -1
- sovara-0.2.3/src/sovara/runner/monkey_patching/async_streaming.py +325 -0
- sovara-0.2.3/src/sovara/runner/monkey_patching/edit_io_filters.py +82 -0
- sovara-0.2.3/src/sovara/runner/monkey_patching/endpoint_whitelist.py +29 -0
- sovara-0.2.3/src/sovara/runner/monkey_patching/node_naming.py +321 -0
- sovara-0.2.3/src/sovara/runner/monkey_patching/patches/aiohttp_patch.py +190 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/runner/monkey_patching/patches/claude_sdk_patch.py +69 -60
- sovara-0.2.3/src/sovara/runner/monkey_patching/patches/httpx_patch.py +166 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/runner/monkey_patching/patches/mcp_patches.py +6 -6
- sovara-0.2.3/src/sovara/runner/monkey_patching/patches/requests_patch.py +80 -0
- sovara-0.2.3/src/sovara/runner/monkey_patching/patches/urllib3_patch.py +309 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/runner/monkey_patching/patching_utils.py +112 -89
- sovara-0.2.3/src/sovara/runner/priors.py +669 -0
- sovara-0.2.3/src/sovara/runner/priors_pipeline.py +196 -0
- sovara-0.2.3/src/sovara/runner/run_log_capture.py +205 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/runner/string_matching.py +45 -38
- sovara-0.2.3/src/sovara/server/app.py +189 -0
- sovara-0.2.3/src/sovara/server/database/__init__.py +11 -0
- sovara-0.2.3/src/sovara/server/database/_shared.py +26 -0
- sovara-0.2.3/src/sovara/server/database/llm_calls.py +342 -0
- sovara-0.2.3/src/sovara/server/database/manager.py +38 -0
- sovara-0.2.3/src/sovara/server/database/priors.py +285 -0
- sovara-0.2.3/src/sovara/server/database/projects.py +107 -0
- sovara-0.2.3/src/sovara/server/database/runs.py +520 -0
- sovara-0.2.3/src/sovara/server/database/sqlite/__init__.py +18 -0
- sovara-0.2.3/src/sovara/server/database/sqlite/connection.py +74 -0
- sovara-0.2.3/src/sovara/server/database/sqlite/llm_calls.py +186 -0
- sovara-0.2.3/src/sovara/server/database/sqlite/priors.py +363 -0
- sovara-0.2.3/src/sovara/server/database/sqlite/projects.py +249 -0
- sovara-0.2.3/src/sovara/server/database/sqlite/runs.py +572 -0
- sovara-0.2.3/src/sovara/server/database/sqlite/schema.py +465 -0
- sovara-0.2.3/src/sovara/server/database/sqlite/users.py +97 -0
- sovara-0.2.3/src/sovara/server/database/users.py +17 -0
- sovara-0.2.3/src/sovara/server/graph_analysis/inference_server.py +502 -0
- sovara-0.2.3/src/sovara/server/graph_analysis/trace_chat/cancel.py +14 -0
- sovara-0.2.3/src/sovara/server/graph_analysis/trace_chat/main.py +514 -0
- sovara-0.2.3/src/sovara/server/graph_analysis/trace_chat/tools/__init__.py +297 -0
- sovara-0.2.3/src/sovara/server/graph_analysis/trace_chat/tools/ask_step.py +35 -0
- sovara-0.2.3/src/sovara/server/graph_analysis/trace_chat/tools/edit_content.py +291 -0
- sovara-0.2.3/src/sovara/server/graph_analysis/trace_chat/tools/get_step_overview.py +404 -0
- sovara-0.2.3/src/sovara/server/graph_analysis/trace_chat/tools/get_step_snapshot.py +203 -0
- sovara-0.2.3/src/sovara/server/graph_analysis/trace_chat/tools/get_trace_overview.py +48 -0
- sovara-0.2.3/src/sovara/server/graph_analysis/trace_chat/tools/search.py +49 -0
- sovara-0.2.3/src/sovara/server/graph_analysis/trace_chat/tools/summarize_trace.py +220 -0
- sovara-0.2.3/src/sovara/server/graph_analysis/trace_chat/tools/verify.py +254 -0
- sovara-0.2.3/src/sovara/server/graph_analysis/trace_chat/utils/content_utils.py +68 -0
- sovara-0.2.3/src/sovara/server/graph_analysis/trace_chat/utils/context.py +77 -0
- sovara-0.2.3/src/sovara/server/graph_analysis/trace_chat/utils/edit_persist.py +160 -0
- sovara-0.2.3/src/sovara/server/graph_analysis/trace_chat/utils/step_content_view.py +204 -0
- sovara-0.2.3/src/sovara/server/graph_analysis/trace_chat/utils/step_ids.py +29 -0
- sovara-0.2.3/src/sovara/server/graph_analysis/trace_chat/utils/trace.py +702 -0
- sovara-0.2.3/src/sovara/server/graph_models.py +189 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/server/handlers/__init__.py +4 -2
- sovara-0.2.3/src/sovara/server/handlers/cli_handlers.py +439 -0
- sovara-0.2.3/src/sovara/server/handlers/runner_handlers.py +124 -0
- sovara-0.2.3/src/sovara/server/handlers/ui_handlers.py +127 -0
- sovara-0.2.3/src/sovara/server/llm_backend.py +828 -0
- sovara-0.2.3/src/sovara/server/llm_provider_catalog.py +163 -0
- sovara-0.2.3/src/sovara/server/llm_settings.py +263 -0
- sovara-0.2.3/src/sovara/server/package_version.py +81 -0
- sovara-0.2.3/src/sovara/server/prior_display.py +177 -0
- sovara-0.2.3/src/sovara/server/priors_backend/__init__.py +1 -0
- sovara-0.2.3/src/sovara/server/priors_backend/constants.py +11 -0
- sovara-0.2.3/src/sovara/server/priors_backend/events.py +42 -0
- sovara-0.2.3/src/sovara/server/priors_backend/llm/__init__.py +1 -0
- sovara-0.2.3/src/sovara/server/priors_backend/llm/lesson_restructurer.py +182 -0
- sovara-0.2.3/src/sovara/server/priors_backend/llm/lesson_retriever.py +390 -0
- sovara-0.2.3/src/sovara/server/priors_backend/llm/lesson_summarizer.py +82 -0
- sovara-0.2.3/src/sovara/server/priors_backend/llm/lesson_validator.py +190 -0
- sovara-0.2.3/src/sovara/server/priors_backend/llm_client.py +42 -0
- sovara-0.2.3/src/sovara/server/priors_backend/logger.py +10 -0
- sovara-0.2.3/src/sovara/server/priors_backend/routes.py +1101 -0
- sovara-0.2.3/src/sovara/server/priors_backend/storage.py +476 -0
- sovara-0.2.3/src/sovara/server/priors_scope.py +50 -0
- sovara-0.2.3/src/sovara/server/routes/__init__.py +0 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/server/routes/events.py +22 -22
- sovara-0.2.3/src/sovara/server/routes/internal.py +126 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/server/routes/runner.py +96 -68
- sovara-0.2.3/src/sovara/server/routes/ui.py +286 -0
- sovara-0.2.3/src/sovara/server/routes/ui_common.py +10 -0
- sovara-0.2.3/src/sovara/server/routes/ui_projects.py +388 -0
- sovara-0.2.3/src/sovara/server/routes/ui_runs.py +639 -0
- sovara-0.2.3/src/sovara/server/routes/ui_trace_chat.py +85 -0
- sovara-0.2.3/src/sovara/server/services/__init__.py +1 -0
- sovara-0.2.3/src/sovara/server/services/trace_chat_service.py +158 -0
- sovara-0.2.3/src/sovara/server/state.py +561 -0
- sovara-0.2.3/src/sovara/server/web_app_assets.py +68 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara.egg-info/PKG-INFO +4 -1
- sovara-0.2.3/src/sovara.egg-info/SOURCES.txt +134 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara.egg-info/entry_points.txt +1 -1
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara.egg-info/requires.txt +4 -0
- sovara-0.2.3/tests/test_graph_payloads.py +48 -0
- sovara-0.2.0/src/sovara/assets/SKILL.md +0 -738
- sovara-0.2.0/src/sovara/cli/so_server.py +0 -179
- sovara-0.2.0/src/sovara/cli/so_tool.py +0 -1459
- sovara-0.2.0/src/sovara/common/constants.py +0 -431
- sovara-0.2.0/src/sovara/common/logger.py +0 -55
- sovara-0.2.0/src/sovara/runner/context_manager.py +0 -102
- sovara-0.2.0/src/sovara/runner/lessons.py +0 -115
- sovara-0.2.0/src/sovara/runner/monkey_patching/api_parsers/genai_api_parser.py +0 -70
- sovara-0.2.0/src/sovara/runner/monkey_patching/patches/genai_patch.py +0 -73
- sovara-0.2.0/src/sovara/runner/monkey_patching/patches/httpx_patch.py +0 -128
- sovara-0.2.0/src/sovara/runner/monkey_patching/patches/requests_patch.py +0 -72
- sovara-0.2.0/src/sovara/server/app.py +0 -73
- sovara-0.2.0/src/sovara/server/database_backends/sqlite.py +0 -969
- sovara-0.2.0/src/sovara/server/database_manager.py +0 -583
- sovara-0.2.0/src/sovara/server/handlers/runner_handlers.py +0 -109
- sovara-0.2.0/src/sovara/server/handlers/ui_handlers.py +0 -92
- sovara-0.2.0/src/sovara/server/routes/ui.py +0 -610
- sovara-0.2.0/src/sovara/server/state.py +0 -400
- sovara-0.2.0/src/sovara.egg-info/SOURCES.txt +0 -61
- {sovara-0.2.0 → sovara-0.2.3}/LICENSE +0 -0
- {sovara-0.2.0 → sovara-0.2.3}/docs/release/PYPI_DESC.md +0 -0
- {sovara-0.2.0 → sovara-0.2.3}/setup.cfg +0 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/__init__.py +0 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/assets/__init__.py +0 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/cli/__init__.py +0 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/common/__init__.py +0 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/runner/__init__.py +0 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/runner/monkey_patching/__init__.py +0 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/runner/monkey_patching/api_parsers/__init__.py +0 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/runner/monkey_patching/api_parsers/mcp_api_parser.py +0 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/runner/monkey_patching/api_parsers/requests_api_parser.py +0 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/runner/monkey_patching/patches/__init__.py +0 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/runner/monkey_patching/patches/randomness_patch.py +0 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/server/__init__.py +0 -0
- {sovara-0.2.0/src/sovara/server/database_backends → sovara-0.2.3/src/sovara/server/graph_analysis/trace_chat}/__init__.py +0 -0
- {sovara-0.2.0/src/sovara/server/routes → sovara-0.2.3/src/sovara/server/graph_analysis/trace_chat/utils}/__init__.py +0 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara/server/handlers/handler_utils.py +0 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara.egg-info/dependency_links.txt +0 -0
- {sovara-0.2.0 → sovara-0.2.3}/src/sovara.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sovara
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.3
|
|
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
|
|
@@ -14,6 +14,7 @@ Requires-Dist: python-dotenv
|
|
|
14
14
|
Requires-Dist: fastapi
|
|
15
15
|
Requires-Dist: uvicorn[standard]
|
|
16
16
|
Requires-Dist: httpx
|
|
17
|
+
Requires-Dist: litellm
|
|
17
18
|
Requires-Dist: flatten_dict
|
|
18
19
|
Requires-Dist: flatten_json
|
|
19
20
|
Provides-Extra: dev
|
|
@@ -32,6 +33,8 @@ Requires-Dist: langchain; extra == "dev"
|
|
|
32
33
|
Requires-Dist: langchain-anthropic; extra == "dev"
|
|
33
34
|
Requires-Dist: langchain-openai; extra == "dev"
|
|
34
35
|
Requires-Dist: websocket-client; extra == "dev"
|
|
36
|
+
Provides-Extra: desktop
|
|
37
|
+
Requires-Dist: pyinstaller>=6.11; extra == "desktop"
|
|
35
38
|
Provides-Extra: examples
|
|
36
39
|
Requires-Dist: openai; extra == "examples"
|
|
37
40
|
Requires-Dist: anthropic; extra == "examples"
|
|
@@ -76,25 +76,67 @@ This should show you the agent's trajectory graph like in the video above. You c
|
|
|
76
76
|
## Integration with Coding Agents
|
|
77
77
|
Coding Agents already accelerate generic coding quite successfully. By augmenting them with `sovara`, you can supercharge your agent development while making sure you adhere to state-of-the-art coding practices for enterprise-grade agents.
|
|
78
78
|
|
|
79
|
+
### Why use these integrations?
|
|
80
|
+
|
|
81
|
+
- **Keep context clean**: Agent runs produce verbose logs that quickly pollute a coding agent's context window. With `so-cli`, it queries only the specific nodes it needs.
|
|
82
|
+
- **Structured access**: Your agent gets structured JSON data (inputs, outputs, graph topology) rather than parsing raw logs.
|
|
83
|
+
- **Edit and rerun**: Your agent can programmatically edit an LLM's input or output and trigger a rerun to test hypotheses.
|
|
84
|
+
|
|
85
|
+
<h3><img src="docs/media/codex.png" alt="Codex" height="24" align="absmiddle"> Codex</h3>
|
|
86
|
+
|
|
87
|
+
Install globally:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
so-cli install-skill --target codex
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
This copies the shared Sovara skill to `$HOME/.agents/skills/sovara/`, so you can use it from any repository. The installer only copies skill files and does not modify Codex settings.
|
|
94
|
+
|
|
95
|
+
To install it for a specific project instead:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
so-cli install-skill --target codex --level project
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
That copies the skill to `.agents/skills/sovara/` under the selected project. Codex also scans `.agents/skills` from your current working directory up to the repository root, so project-level skills can be scoped to a repo or subdirectory.
|
|
102
|
+
|
|
103
|
+
Use Sovara in Codex by asking for `$sovara` explicitly, or let Codex invoke it automatically when the task matches the skill description.
|
|
104
|
+
|
|
105
|
+
Example prompts:
|
|
106
|
+
|
|
107
|
+
```text
|
|
108
|
+
$sovara inspect the latest run and find the first failing node
|
|
109
|
+
$sovara compare these two runs and explain why the outputs diverged
|
|
110
|
+
$sovara propose a prior based on the failure pattern in this run
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Codex detects skill changes automatically. If an update does not appear, restart Codex.
|
|
114
|
+
|
|
79
115
|
<h3><img src="docs/media/cc.png" alt="Claude Code" height="24" align="absmiddle"> Claude Code</h3>
|
|
80
116
|
|
|
81
|
-
|
|
117
|
+
Install globally:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
so-cli install-skill --target claude
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
This copies the shared Sovara skill to `~/.claude/skills/sovara/`, so it is available across all your projects. The installer only copies skill files and does not modify Claude settings.
|
|
124
|
+
|
|
125
|
+
To install it for one project instead:
|
|
82
126
|
|
|
83
127
|
```bash
|
|
84
|
-
so-
|
|
128
|
+
so-cli install-skill --target claude --level project
|
|
85
129
|
```
|
|
86
130
|
|
|
87
|
-
|
|
88
|
-
1. Copy the Sovara skill file to your project's `.claude/skills/sovara/` directory
|
|
89
|
-
2. Add Bash permissions so Claude Code can run `so-tool` commands without prompts
|
|
131
|
+
That copies the skill to `.claude/skills/sovara/` under the selected project. Re-open Claude Code after installation if the skill does not appear immediately.
|
|
90
132
|
|
|
91
|
-
|
|
133
|
+
Use Sovara in Claude Code by letting Claude invoke the skill automatically when relevant, or select it directly from the skill menu if needed.
|
|
92
134
|
|
|
93
|
-
|
|
135
|
+
If you want both integrations installed globally in one step, run:
|
|
94
136
|
|
|
95
|
-
|
|
96
|
-
-
|
|
97
|
-
|
|
137
|
+
```bash
|
|
138
|
+
so-cli install-skill
|
|
139
|
+
```
|
|
98
140
|
|
|
99
141
|
## Documentation
|
|
100
142
|
|
|
@@ -5,7 +5,7 @@ requires = ["setuptools"]
|
|
|
5
5
|
build-backend = "setuptools.build_meta"
|
|
6
6
|
|
|
7
7
|
[tool.setuptools.package-data]
|
|
8
|
-
"sovara.assets" = ["SKILL.md"]
|
|
8
|
+
"sovara.assets" = ["SKILL.md", "web_app/**/*"]
|
|
9
9
|
|
|
10
10
|
[tool.setuptools]
|
|
11
11
|
package-dir = {"" = "src"}
|
|
@@ -19,14 +19,14 @@ include = ["sovara*"]
|
|
|
19
19
|
so-record = "sovara.cli.so_record:main"
|
|
20
20
|
so-config = "sovara.cli.so_config:main"
|
|
21
21
|
so-server = "sovara.cli.so_server:main"
|
|
22
|
-
so-
|
|
22
|
+
so-cli = "sovara.cli.so_tool:main"
|
|
23
23
|
|
|
24
24
|
[tool.black]
|
|
25
25
|
line-length = 100
|
|
26
26
|
|
|
27
27
|
[project]
|
|
28
28
|
name = "sovara"
|
|
29
|
-
version = "0.2.
|
|
29
|
+
version = "0.2.3"
|
|
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"
|
|
@@ -41,6 +41,7 @@ dependencies = [
|
|
|
41
41
|
"fastapi",
|
|
42
42
|
"uvicorn[standard]",
|
|
43
43
|
"httpx",
|
|
44
|
+
"litellm",
|
|
44
45
|
"flatten_dict",
|
|
45
46
|
"flatten_json"
|
|
46
47
|
]
|
|
@@ -64,6 +65,10 @@ dev = [
|
|
|
64
65
|
"websocket-client"
|
|
65
66
|
]
|
|
66
67
|
|
|
68
|
+
desktop = [
|
|
69
|
+
"pyinstaller>=6.11",
|
|
70
|
+
]
|
|
71
|
+
|
|
67
72
|
examples = [
|
|
68
73
|
"openai",
|
|
69
74
|
"anthropic",
|
|
@@ -76,3 +81,8 @@ docs = [
|
|
|
76
81
|
"mkdocs-minify-plugin",
|
|
77
82
|
"mkdocstrings[python]>=0.24",
|
|
78
83
|
]
|
|
84
|
+
|
|
85
|
+
[tool.pytest.ini_options]
|
|
86
|
+
filterwarnings = [
|
|
87
|
+
"ignore:'_UnionGenericAlias' is deprecated and slated for removal in Python 3\\.17:DeprecationWarning:google\\.genai\\.types",
|
|
88
|
+
]
|