sovara 0.3.2__tar.gz → 0.3.4__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.
Files changed (355) hide show
  1. sovara-0.3.4/PKG-INFO +53 -0
  2. sovara-0.3.4/README.md +31 -0
  3. sovara-0.3.4/pyproject.toml +44 -0
  4. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/__init__.py +2 -0
  5. sovara-0.3.4/src/sovara/assets/sovara/SKILL.md +68 -0
  6. sovara-0.3.4/src/sovara/assets/sovara/enterprise-azure.md +496 -0
  7. sovara-0.3.4/src/sovara/assets/sovara/enterprise-palantir.md +82 -0
  8. sovara-0.3.4/src/sovara/assets/sovara/evals/evals.json +55 -0
  9. sovara-0.3.4/src/sovara/assets/sovara/evals/trigger_queries.json +126 -0
  10. sovara-0.3.4/src/sovara/assets/sovara/install-desktop-app.md +82 -0
  11. sovara-0.3.4/src/sovara/assets/sovara/install-python-sdk.md +83 -0
  12. sovara-0.3.4/src/sovara/assets/sovara/install-ts-sdk.md +103 -0
  13. sovara-0.3.4/src/sovara/assets/sovara/optimizing-agents.md +217 -0
  14. sovara-0.3.4/src/sovara/assets/sovara/references/cli-reference.md +191 -0
  15. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/cli/so_tool.py +467 -361
  16. sovara-0.3.4/src/sovara/cli/sovara.py +9 -0
  17. sovara-0.3.4/src/sovara/common/agent_credentials.py +90 -0
  18. sovara-0.3.4/src/sovara/common/code_version.py +147 -0
  19. sovara-0.3.4/src/sovara/common/code_version_remote_cases.json +27 -0
  20. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/common/config.py +117 -13
  21. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/common/constants.py +29 -13
  22. sovara-0.3.4/src/sovara/common/db_credentials.py +85 -0
  23. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/common/edit_io_exclude_patterns.json +3 -0
  24. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/common/node_naming.py +13 -2
  25. sovara-0.3.4/src/sovara/common/payload_display.py +191 -0
  26. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/common/project.py +1 -77
  27. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/common/utils.py +39 -4
  28. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/agent_runner.py +100 -178
  29. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/context_manager.py +4 -4
  30. sovara-0.3.4/src/sovara/runner/monkey_patching/api_parser.py +135 -0
  31. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/monkey_patching/api_parsers/aiohttp_api_parser.py +1 -1
  32. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/monkey_patching/api_parsers/claude_code_messages_api_parser.py +3 -2
  33. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/monkey_patching/api_parsers/httpx_api_parser.py +32 -1
  34. sovara-0.3.4/src/sovara/runner/monkey_patching/api_parsers/sse_utils.py +19 -0
  35. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/monkey_patching/patches/claude_sdk_patch.py +13 -65
  36. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/monkey_patching/patching_utils.py +2 -2
  37. sovara-0.3.4/src/sovara/runner/monkey_patching/to_show_filters.py +3 -0
  38. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/monkey_patching/tool_trace_utils.py +14 -16
  39. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/priors.py +1 -4
  40. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/public.py +33 -53
  41. sovara-0.3.4/src/sovara/runner/record_entrypoint.py +49 -0
  42. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/runtime_client.py +18 -49
  43. sovara-0.3.4/src/sovara/runner/trace.py +192 -0
  44. sovara-0.3.4/src/sovara.egg-info/PKG-INFO +53 -0
  45. sovara-0.3.4/src/sovara.egg-info/SOURCES.txt +81 -0
  46. sovara-0.3.4/src/sovara.egg-info/requires.txt +15 -0
  47. sovara-0.3.2/LICENSE +0 -202
  48. sovara-0.3.2/PKG-INFO +0 -57
  49. sovara-0.3.2/README.md +0 -159
  50. sovara-0.3.2/docs/release/PYPI_DESC.md +0 -1
  51. sovara-0.3.2/pyproject.toml +0 -98
  52. sovara-0.3.2/src/sovara/assets/SKILL.md +0 -820
  53. sovara-0.3.2/src/sovara/assets/default_runs.sqlite +0 -0
  54. sovara-0.3.2/src/sovara/assets/web_app/assets/AnnotationRoute-CE3twxG9.js +0 -2
  55. sovara-0.3.2/src/sovara/assets/web_app/assets/AnnotationRoute-voBIuZUX.css +0 -1
  56. sovara-0.3.2/src/sovara/assets/web_app/assets/AttachmentPreview-CFrNMdfC.css +0 -1
  57. sovara-0.3.2/src/sovara/assets/web_app/assets/AttachmentPreview-plYzPaRE.js +0 -1
  58. sovara-0.3.2/src/sovara/assets/web_app/assets/DocumentPreviewModal-BFdSPROi.js +0 -12
  59. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  60. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  61. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  62. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  63. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  64. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  65. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  66. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  67. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  68. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  69. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  70. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  71. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  72. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  73. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  74. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  75. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  76. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  77. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  78. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  79. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  80. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  81. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  82. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  83. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  84. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  85. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  86. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  87. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  88. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  89. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  90. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  91. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  92. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  93. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  94. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  95. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  96. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  97. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  98. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  99. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  100. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  101. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  102. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  103. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  104. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  105. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  106. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  107. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  108. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  109. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  110. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  111. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  112. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  113. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  114. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  115. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  116. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  117. sovara-0.3.2/src/sovara/assets/web_app/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  118. sovara-0.3.2/src/sovara/assets/web_app/assets/LayoutBreadcrumb-DQfjpJp6.js +0 -1
  119. sovara-0.3.2/src/sovara/assets/web_app/assets/LayoutBreadcrumb-Di8BFf6J.css +0 -1
  120. sovara-0.3.2/src/sovara/assets/web_app/assets/OrgRoute-C6PvXMBj.js +0 -1
  121. sovara-0.3.2/src/sovara/assets/web_app/assets/OrgRoute-Syy1k3se.css +0 -1
  122. sovara-0.3.2/src/sovara/assets/web_app/assets/PriorsRoute-BFKg8GE_.css +0 -1
  123. sovara-0.3.2/src/sovara/assets/web_app/assets/PriorsRoute-CvQs_UGM.js +0 -3
  124. sovara-0.3.2/src/sovara/assets/web_app/assets/ProjectRoute-C3Jzk4jL.css +0 -1
  125. sovara-0.3.2/src/sovara/assets/web_app/assets/ProjectRoute-CrWY3I2q.js +0 -33
  126. sovara-0.3.2/src/sovara/assets/web_app/assets/ProjectRunsRoute-BWJaCbdU.js +0 -1
  127. sovara-0.3.2/src/sovara/assets/web_app/assets/RunRoute-Bf1i1Jzu.js +0 -1
  128. sovara-0.3.2/src/sovara/assets/web_app/assets/RunTabsHeader-BFdSaCHq.js +0 -1
  129. sovara-0.3.2/src/sovara/assets/web_app/assets/RunTabsHeader-CCiRiliL.css +0 -1
  130. sovara-0.3.2/src/sovara/assets/web_app/assets/SettingsRoute-CaCQ4pWX.js +0 -1
  131. sovara-0.3.2/src/sovara/assets/web_app/assets/api-BHNyGAe0.js +0 -1
  132. sovara-0.3.2/src/sovara/assets/web_app/assets/arrow_lr-ByI2ndPB.png +0 -0
  133. sovara-0.3.2/src/sovara/assets/web_app/assets/arrow_spiral_tr_bl-XHIpf338.png +0 -0
  134. sovara-0.3.2/src/sovara/assets/web_app/assets/codicon-BYm2YbZ6.ttf +0 -0
  135. sovara-0.3.2/src/sovara/assets/web_app/assets/eye-BRRCRKsr.js +0 -1
  136. sovara-0.3.2/src/sovara/assets/web_app/assets/index-CaNmZMjl.css +0 -1
  137. sovara-0.3.2/src/sovara/assets/web_app/assets/index-FFvomyuN.js +0 -12
  138. sovara-0.3.2/src/sovara/assets/web_app/assets/pdf.worker.min-qwK7q_zL.mjs +0 -28
  139. sovara-0.3.2/src/sovara/assets/web_app/assets/plus-StJOlCLf.js +0 -1
  140. sovara-0.3.2/src/sovara/assets/web_app/assets/prismTheme-DRzlLkhr.js +0 -37
  141. sovara-0.3.2/src/sovara/assets/web_app/assets/projectRuns-B4uZ9L5w.js +0 -1
  142. sovara-0.3.2/src/sovara/assets/web_app/assets/projectRuns-D7mGuqzb.css +0 -1
  143. sovara-0.3.2/src/sovara/assets/web_app/assets/settings-Br0my5v3.js +0 -1
  144. sovara-0.3.2/src/sovara/assets/web_app/assets/settings-CZdC8p_Y.css +0 -1
  145. sovara-0.3.2/src/sovara/assets/web_app/assets/sovara_favicon_colour-BrB8E1K-.png +0 -0
  146. sovara-0.3.2/src/sovara/assets/web_app/assets/sovara_full_logo_dark_green-DUVlz28Y.svg +0 -18
  147. sovara-0.3.2/src/sovara/assets/web_app/assets/sovara_full_logo_light_green-CZc0oGc4.svg +0 -26
  148. sovara-0.3.2/src/sovara/assets/web_app/assets/tierState-DObTMUxC.js +0 -1
  149. sovara-0.3.2/src/sovara/assets/web_app/assets/tiny-invariant-BCXflckp.js +0 -1
  150. sovara-0.3.2/src/sovara/assets/web_app/assets/trash-2-BiGQZCMf.js +0 -1
  151. sovara-0.3.2/src/sovara/assets/web_app/assets/useRunViewLayout-D1NwHTvJ.css +0 -1
  152. sovara-0.3.2/src/sovara/assets/web_app/assets/useRunViewLayout-Db3uX16H.js +0 -284
  153. sovara-0.3.2/src/sovara/assets/web_app/assets/value-BlJoDf9S.js +0 -1
  154. sovara-0.3.2/src/sovara/assets/web_app/favicon-colour.png +0 -0
  155. sovara-0.3.2/src/sovara/assets/web_app/favicon.png +0 -0
  156. sovara-0.3.2/src/sovara/assets/web_app/index.html +0 -27
  157. sovara-0.3.2/src/sovara/assets/web_app/marketplace_icon.png +0 -0
  158. sovara-0.3.2/src/sovara/cli/so_claude.py +0 -77
  159. sovara-0.3.2/src/sovara/cli/so_config.py +0 -92
  160. sovara-0.3.2/src/sovara/cli/so_record.py +0 -80
  161. sovara-0.3.2/src/sovara/cli/so_server.py +0 -409
  162. sovara-0.3.2/src/sovara/common/runtime.py +0 -15
  163. sovara-0.3.2/src/sovara/common/user.py +0 -127
  164. sovara-0.3.2/src/sovara/runner/claude_code_runner.py +0 -473
  165. sovara-0.3.2/src/sovara/runner/monkey_patching/api_parser.py +0 -238
  166. sovara-0.3.2/src/sovara/server/__init__.py +0 -0
  167. sovara-0.3.2/src/sovara/server/annotation_backend/__init__.py +0 -1
  168. sovara-0.3.2/src/sovara/server/annotation_backend/annotation.py +0 -323
  169. sovara-0.3.2/src/sovara/server/annotation_backend/annotation_agent/__init__.py +0 -1
  170. sovara-0.3.2/src/sovara/server/annotation_backend/annotation_agent/agent.py +0 -534
  171. sovara-0.3.2/src/sovara/server/annotation_backend/annotation_agent/models.py +0 -120
  172. sovara-0.3.2/src/sovara/server/annotation_backend/annotation_agent/prompts.py +0 -221
  173. sovara-0.3.2/src/sovara/server/annotation_backend/annotation_agent/tools.py +0 -330
  174. sovara-0.3.2/src/sovara/server/annotation_backend/annotation_agent/trace_store.py +0 -95
  175. sovara-0.3.2/src/sovara/server/annotation_backend/annotation_focus.py +0 -59
  176. sovara-0.3.2/src/sovara/server/annotation_backend/chunk_index.py +0 -115
  177. sovara-0.3.2/src/sovara/server/annotation_backend/classifier.py +0 -209
  178. sovara-0.3.2/src/sovara/server/annotation_backend/close_traces.py +0 -200
  179. sovara-0.3.2/src/sovara/server/annotation_backend/distance_index.py +0 -335
  180. sovara-0.3.2/src/sovara/server/annotation_backend/screening_summary.py +0 -450
  181. sovara-0.3.2/src/sovara/server/annotation_backend/utils.py +0 -785
  182. sovara-0.3.2/src/sovara/server/app.py +0 -284
  183. sovara-0.3.2/src/sovara/server/base_agent/__init__.py +0 -1
  184. sovara-0.3.2/src/sovara/server/base_agent/agent.py +0 -298
  185. sovara-0.3.2/src/sovara/server/base_agent/cancel.py +0 -14
  186. sovara-0.3.2/src/sovara/server/base_agent/compaction.py +0 -74
  187. sovara-0.3.2/src/sovara/server/base_agent/content_blocks.py +0 -229
  188. sovara-0.3.2/src/sovara/server/base_agent/content_utils.py +0 -68
  189. sovara-0.3.2/src/sovara/server/base_agent/llm_settings.py +0 -86
  190. sovara-0.3.2/src/sovara/server/base_agent/prompts.py +0 -16
  191. sovara-0.3.2/src/sovara/server/base_agent/step_content_view.py +0 -145
  192. sovara-0.3.2/src/sovara/server/base_agent/step_ids.py +0 -39
  193. sovara-0.3.2/src/sovara/server/base_agent/tools/__init__.py +0 -1
  194. sovara-0.3.2/src/sovara/server/base_agent/tools/annotation.py +0 -181
  195. sovara-0.3.2/src/sovara/server/base_agent/tools/applied_priors.py +0 -357
  196. sovara-0.3.2/src/sovara/server/base_agent/tools/ask_step.py +0 -61
  197. sovara-0.3.2/src/sovara/server/base_agent/tools/content_unit.py +0 -81
  198. sovara-0.3.2/src/sovara/server/base_agent/tools/graph.py +0 -850
  199. sovara-0.3.2/src/sovara/server/base_agent/tools/ids.py +0 -74
  200. sovara-0.3.2/src/sovara/server/base_agent/tools/priors.py +0 -655
  201. sovara-0.3.2/src/sovara/server/base_agent/tools/registry.py +0 -72
  202. sovara-0.3.2/src/sovara/server/base_agent/tools/run_logs.py +0 -94
  203. sovara-0.3.2/src/sovara/server/base_agent/tools/step_overview.py +0 -483
  204. sovara-0.3.2/src/sovara/server/base_agent/tools/step_snapshot.py +0 -212
  205. sovara-0.3.2/src/sovara/server/base_agent/tools/trace.py +0 -167
  206. sovara-0.3.2/src/sovara/server/base_agent/tools/trace_search.py +0 -116
  207. sovara-0.3.2/src/sovara/server/base_agent/tools/trace_summary.py +0 -349
  208. sovara-0.3.2/src/sovara/server/base_agent/trace.py +0 -389
  209. sovara-0.3.2/src/sovara/server/claude_proxy_utils.py +0 -213
  210. sovara-0.3.2/src/sovara/server/database/__init__.py +0 -21
  211. sovara-0.3.2/src/sovara/server/database/_shared.py +0 -6
  212. sovara-0.3.2/src/sovara/server/database/annotations.py +0 -329
  213. sovara-0.3.2/src/sovara/server/database/backend_protocol.py +0 -681
  214. sovara-0.3.2/src/sovara/server/database/blob_storage.py +0 -122
  215. sovara-0.3.2/src/sovara/server/database/llm_calls.py +0 -184
  216. sovara-0.3.2/src/sovara/server/database/manager.py +0 -105
  217. sovara-0.3.2/src/sovara/server/database/mongodb/__init__.py +0 -3
  218. sovara-0.3.2/src/sovara/server/database/mongodb/backend.py +0 -2647
  219. sovara-0.3.2/src/sovara/server/database/mongodb/connection.py +0 -281
  220. sovara-0.3.2/src/sovara/server/database/mongodb/prior_embeddings.py +0 -228
  221. sovara-0.3.2/src/sovara/server/database/postgresql/__init__.py +0 -0
  222. sovara-0.3.2/src/sovara/server/database/postgresql/backend.py +0 -762
  223. sovara-0.3.2/src/sovara/server/database/postgresql/connection.py +0 -64
  224. sovara-0.3.2/src/sovara/server/database/postgresql/schema.py +0 -195
  225. sovara-0.3.2/src/sovara/server/database/prior_models.py +0 -66
  226. sovara-0.3.2/src/sovara/server/database/prior_record.py +0 -40
  227. sovara-0.3.2/src/sovara/server/database/priors.py +0 -287
  228. sovara-0.3.2/src/sovara/server/database/projects.py +0 -203
  229. sovara-0.3.2/src/sovara/server/database/runs.py +0 -536
  230. sovara-0.3.2/src/sovara/server/database/sqlite/__init__.py +0 -28
  231. sovara-0.3.2/src/sovara/server/database/sqlite/annotations.py +0 -775
  232. sovara-0.3.2/src/sovara/server/database/sqlite/backend.py +0 -1028
  233. sovara-0.3.2/src/sovara/server/database/sqlite/bootstrap.py +0 -125
  234. sovara-0.3.2/src/sovara/server/database/sqlite/connection.py +0 -347
  235. sovara-0.3.2/src/sovara/server/database/sqlite/demo_quota.py +0 -108
  236. sovara-0.3.2/src/sovara/server/database/sqlite/llm_calls.py +0 -396
  237. sovara-0.3.2/src/sovara/server/database/sqlite/prior_embeddings.py +0 -118
  238. sovara-0.3.2/src/sovara/server/database/sqlite/prior_records.py +0 -323
  239. sovara-0.3.2/src/sovara/server/database/sqlite/priors.py +0 -181
  240. sovara-0.3.2/src/sovara/server/database/sqlite/projects.py +0 -388
  241. sovara-0.3.2/src/sovara/server/database/sqlite/runs.py +0 -889
  242. sovara-0.3.2/src/sovara/server/database/sqlite/schema.py +0 -458
  243. sovara-0.3.2/src/sovara/server/database/sqlite/users.py +0 -123
  244. sovara-0.3.2/src/sovara/server/database/users.py +0 -20
  245. sovara-0.3.2/src/sovara/server/graph_analysis/inference_server.py +0 -686
  246. sovara-0.3.2/src/sovara/server/graph_analysis/trace_chat/__init__.py +0 -0
  247. sovara-0.3.2/src/sovara/server/graph_analysis/trace_chat/main.py +0 -244
  248. sovara-0.3.2/src/sovara/server/graph_analysis/trace_chat/prompts.py +0 -108
  249. sovara-0.3.2/src/sovara/server/graph_models.py +0 -248
  250. sovara-0.3.2/src/sovara/server/handlers/__init__.py +0 -33
  251. sovara-0.3.2/src/sovara/server/handlers/cli_handlers.py +0 -36
  252. sovara-0.3.2/src/sovara/server/handlers/handler_utils.py +0 -6
  253. sovara-0.3.2/src/sovara/server/handlers/runner_handlers.py +0 -136
  254. sovara-0.3.2/src/sovara/server/handlers/ui_handlers.py +0 -117
  255. sovara-0.3.2/src/sovara/server/llm_backend.py +0 -1037
  256. sovara-0.3.2/src/sovara/server/llm_provider_catalog.py +0 -255
  257. sovara-0.3.2/src/sovara/server/llm_settings.py +0 -482
  258. sovara-0.3.2/src/sovara/server/llm_settings_verification.py +0 -609
  259. sovara-0.3.2/src/sovara/server/package_version.py +0 -81
  260. sovara-0.3.2/src/sovara/server/prior_display.py +0 -203
  261. sovara-0.3.2/src/sovara/server/priors_backend/__init__.py +0 -1
  262. sovara-0.3.2/src/sovara/server/priors_backend/constants.py +0 -24
  263. sovara-0.3.2/src/sovara/server/priors_backend/embeddings.py +0 -57
  264. sovara-0.3.2/src/sovara/server/priors_backend/llm/__init__.py +0 -1
  265. sovara-0.3.2/src/sovara/server/priors_backend/llm/folder_rebalancer.py +0 -276
  266. sovara-0.3.2/src/sovara/server/priors_backend/llm/lesson_restructurer.py +0 -275
  267. sovara-0.3.2/src/sovara/server/priors_backend/llm/lesson_retriever.py +0 -422
  268. sovara-0.3.2/src/sovara/server/priors_backend/llm/lesson_summarizer.py +0 -187
  269. sovara-0.3.2/src/sovara/server/priors_backend/llm/lesson_validator.py +0 -196
  270. sovara-0.3.2/src/sovara/server/priors_backend/llm/prior_content_polisher.py +0 -95
  271. sovara-0.3.2/src/sovara/server/priors_backend/llm/prior_metadata_suggester.py +0 -102
  272. sovara-0.3.2/src/sovara/server/priors_backend/llm/prior_quality.py +0 -32
  273. sovara-0.3.2/src/sovara/server/priors_backend/llm_client.py +0 -158
  274. sovara-0.3.2/src/sovara/server/priors_backend/logger.py +0 -10
  275. sovara-0.3.2/src/sovara/server/priors_backend/path_utils.py +0 -72
  276. sovara-0.3.2/src/sovara/server/priors_backend/retrieval_service.py +0 -372
  277. sovara-0.3.2/src/sovara/server/priors_backend/routes.py +0 -1517
  278. sovara-0.3.2/src/sovara/server/priors_backend/storage.py +0 -1127
  279. sovara-0.3.2/src/sovara/server/priors_backend/tools/adjudication.py +0 -349
  280. sovara-0.3.2/src/sovara/server/priors_backend/tools/bm25_search.py +0 -38
  281. sovara-0.3.2/src/sovara/server/priors_backend/tools/dense_search.py +0 -45
  282. sovara-0.3.2/src/sovara/server/priors_backend/tools/folder_groups.py +0 -57
  283. sovara-0.3.2/src/sovara/server/priors_backend/tools/keyword_search.py +0 -31
  284. sovara-0.3.2/src/sovara/server/priors_backend/tools/parallel_search.py +0 -135
  285. sovara-0.3.2/src/sovara/server/priors_backend/tools/preprocess_context.py +0 -174
  286. sovara-0.3.2/src/sovara/server/priors_backend/tools/rerank.py +0 -55
  287. sovara-0.3.2/src/sovara/server/priors_backend/tools/utils.py +0 -72
  288. sovara-0.3.2/src/sovara/server/priors_pipeline.py +0 -304
  289. sovara-0.3.2/src/sovara/server/priors_scope.py +0 -50
  290. sovara-0.3.2/src/sovara/server/recording.py +0 -629
  291. sovara-0.3.2/src/sovara/server/routes/__init__.py +0 -0
  292. sovara-0.3.2/src/sovara/server/routes/claude_proxy.py +0 -686
  293. sovara-0.3.2/src/sovara/server/routes/events.py +0 -108
  294. sovara-0.3.2/src/sovara/server/routes/internal.py +0 -456
  295. sovara-0.3.2/src/sovara/server/routes/runner.py +0 -248
  296. sovara-0.3.2/src/sovara/server/routes/ui.py +0 -693
  297. sovara-0.3.2/src/sovara/server/routes/ui_common.py +0 -10
  298. sovara-0.3.2/src/sovara/server/routes/ui_projects.py +0 -507
  299. sovara-0.3.2/src/sovara/server/routes/ui_runs.py +0 -1048
  300. sovara-0.3.2/src/sovara/server/routes/ui_trace_chat.py +0 -87
  301. sovara-0.3.2/src/sovara/server/runtime_preparation.py +0 -734
  302. sovara-0.3.2/src/sovara/server/services/__init__.py +0 -1
  303. sovara-0.3.2/src/sovara/server/services/annotation_evaluation_service.py +0 -761
  304. sovara-0.3.2/src/sovara/server/services/annotation_focus_service.py +0 -30
  305. sovara-0.3.2/src/sovara/server/services/annotation_service.py +0 -228
  306. sovara-0.3.2/src/sovara/server/services/demo_run_limit.py +0 -58
  307. sovara-0.3.2/src/sovara/server/services/embedding_sources.py +0 -297
  308. sovara-0.3.2/src/sovara/server/services/llm_call_embeddings.py +0 -81
  309. sovara-0.3.2/src/sovara/server/services/session_io_summary.py +0 -128
  310. sovara-0.3.2/src/sovara/server/services/trace_chat_service.py +0 -320
  311. sovara-0.3.2/src/sovara/server/state.py +0 -1615
  312. sovara-0.3.2/src/sovara/server/third_party_model_catalog.py +0 -180
  313. sovara-0.3.2/src/sovara/server/web_app_assets.py +0 -79
  314. sovara-0.3.2/src/sovara.egg-info/PKG-INFO +0 -57
  315. sovara-0.3.2/src/sovara.egg-info/SOURCES.txt +0 -326
  316. sovara-0.3.2/src/sovara.egg-info/entry_points.txt +0 -6
  317. sovara-0.3.2/src/sovara.egg-info/requires.txt +0 -51
  318. sovara-0.3.2/tests/test_graph_payloads.py +0 -47
  319. {sovara-0.3.2 → sovara-0.3.4}/setup.cfg +0 -0
  320. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/assets/__init__.py +0 -0
  321. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/cli/__init__.py +0 -0
  322. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/common/__init__.py +0 -0
  323. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/common/annotations.py +0 -0
  324. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/common/custom_metrics.py +0 -0
  325. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/common/endpoint_patterns.json +0 -0
  326. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/common/lifecycle.py +0 -0
  327. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/common/log_redaction.py +0 -0
  328. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/common/logger.py +0 -0
  329. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/common/priors_block.py +0 -0
  330. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/common/priors_block_guidance.json +0 -0
  331. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/common/run_logs.py +0 -0
  332. {sovara-0.3.2/src/sovara/runner/monkey_patching/api_parsers → sovara-0.3.4/src/sovara/common}/sse_utils.py +0 -0
  333. {sovara-0.3.2/src/sovara/runner/monkey_patching → sovara-0.3.4/src/sovara/common}/to_show_filters.py +0 -0
  334. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/__init__.py +0 -0
  335. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/monkey_patching/__init__.py +0 -0
  336. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/monkey_patching/api_parsers/__init__.py +0 -0
  337. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/monkey_patching/api_parsers/mcp_api_parser.py +0 -0
  338. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/monkey_patching/api_parsers/requests_api_parser.py +0 -0
  339. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/monkey_patching/api_parsers/urllib3_api_parser.py +0 -0
  340. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/monkey_patching/apply_monkey_patches.py +0 -0
  341. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/monkey_patching/async_streaming.py +0 -0
  342. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/monkey_patching/endpoint_whitelist.py +0 -0
  343. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/monkey_patching/patches/__init__.py +0 -0
  344. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/monkey_patching/patches/adk_patch.py +0 -0
  345. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/monkey_patching/patches/aiohttp_patch.py +0 -0
  346. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/monkey_patching/patches/httpx_patch.py +0 -0
  347. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/monkey_patching/patches/langchain_patch.py +0 -0
  348. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/monkey_patching/patches/mcp_patches.py +0 -0
  349. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/monkey_patching/patches/openai_agents_patch.py +0 -0
  350. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/monkey_patching/patches/requests_patch.py +0 -0
  351. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/monkey_patching/patches/urllib3_patch.py +0 -0
  352. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/request_mutation.py +0 -0
  353. {sovara-0.3.2 → sovara-0.3.4}/src/sovara/runner/run_log_capture.py +0 -0
  354. {sovara-0.3.2 → sovara-0.3.4}/src/sovara.egg-info/dependency_links.txt +0 -0
  355. {sovara-0.3.2 → sovara-0.3.4}/src/sovara.egg-info/top_level.txt +0 -0
sovara-0.3.4/PKG-INFO ADDED
@@ -0,0 +1,53 @@
1
+ Metadata-Version: 2.4
2
+ Name: sovara
3
+ Version: 0.3.4
4
+ Summary: Python SDK for Sovara agent observability and runtime instrumentation
5
+ Project-URL: Documentation, https://docs.sovara-labs.com
6
+ Requires-Python: >=3.10
7
+ Description-Content-Type: text/markdown
8
+ Requires-Dist: dill
9
+ Requires-Dist: flatten_dict
10
+ Requires-Dist: flatten_json
11
+ Requires-Dist: httpx
12
+ Requires-Dist: jsonpickle>=4.1.1
13
+ Requires-Dist: keyring>=25.0.0
14
+ Requires-Dist: pydantic
15
+ Requires-Dist: pyyaml
16
+ Provides-Extra: examples
17
+ Requires-Dist: openai; extra == "examples"
18
+ Requires-Dist: anthropic; extra == "examples"
19
+ Requires-Dist: openai-agents; extra == "examples"
20
+ Requires-Dist: google-genai; extra == "examples"
21
+ Requires-Dist: claude-agent-sdk; extra == "examples"
22
+
23
+ # Sovara Python SDK
24
+
25
+ The `sovara` package instruments Python agents so Sovara can record LLM calls,
26
+ tool calls, logs, and custom trace spans.
27
+
28
+ Install it in the Python environment where your agent runs:
29
+
30
+ ```bash
31
+ python -m pip install sovara
32
+ ```
33
+
34
+ Or with `uv`:
35
+
36
+ ```bash
37
+ uv add sovara
38
+ ```
39
+
40
+ Use `sovara.run(...)` for library-mode recording:
41
+
42
+ ```python
43
+ import sovara
44
+
45
+ with sovara.run("support-agent"):
46
+ run_agent()
47
+ ```
48
+
49
+ The terminal command is distributed separately as the native Sovara CLI. Install
50
+ that CLI for commands such as `sovara record`, `sovara status`, and
51
+ `sovara probe`.
52
+
53
+ Documentation: https://docs.sovara-labs.com
sovara-0.3.4/README.md ADDED
@@ -0,0 +1,31 @@
1
+ # Sovara Python SDK
2
+
3
+ The `sovara` package instruments Python agents so Sovara can record LLM calls,
4
+ tool calls, logs, and custom trace spans.
5
+
6
+ Install it in the Python environment where your agent runs:
7
+
8
+ ```bash
9
+ python -m pip install sovara
10
+ ```
11
+
12
+ Or with `uv`:
13
+
14
+ ```bash
15
+ uv add sovara
16
+ ```
17
+
18
+ Use `sovara.run(...)` for library-mode recording:
19
+
20
+ ```python
21
+ import sovara
22
+
23
+ with sovara.run("support-agent"):
24
+ run_agent()
25
+ ```
26
+
27
+ The terminal command is distributed separately as the native Sovara CLI. Install
28
+ that CLI for commands such as `sovara record`, `sovara status`, and
29
+ `sovara probe`.
30
+
31
+ Documentation: https://docs.sovara-labs.com
@@ -0,0 +1,44 @@
1
+ [build-system]
2
+ requires = ["setuptools"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [tool.setuptools.package-data]
6
+ "sovara.assets" = ["sovara/*.md", "sovara/references/*.md", "sovara/evals/*.json"]
7
+ "sovara.common" = ["*.json"]
8
+
9
+ [tool.setuptools]
10
+ package-dir = {"" = "src"}
11
+
12
+ [tool.setuptools.packages.find]
13
+ where = ["src"]
14
+ include = ["sovara*"]
15
+
16
+ [project]
17
+ name = "sovara"
18
+ version = "0.3.4"
19
+ description = "Python SDK for Sovara agent observability and runtime instrumentation"
20
+ readme = "README.md"
21
+ requires-python = ">=3.10"
22
+
23
+ dependencies = [
24
+ "dill",
25
+ "flatten_dict",
26
+ "flatten_json",
27
+ "httpx",
28
+ "jsonpickle>=4.1.1",
29
+ "keyring>=25.0.0",
30
+ "pydantic",
31
+ "pyyaml",
32
+ ]
33
+
34
+ [project.optional-dependencies]
35
+ examples = [
36
+ "openai",
37
+ "anthropic",
38
+ "openai-agents",
39
+ "google-genai",
40
+ "claude-agent-sdk",
41
+ ]
42
+
43
+ [project.urls]
44
+ Documentation = "https://docs.sovara-labs.com"
@@ -13,11 +13,13 @@ from sovara.runner.public import (
13
13
  queue_for_annotation_async,
14
14
  run,
15
15
  )
16
+ from sovara.runner.trace import trace
16
17
 
17
18
  apply_all_monkey_patches()
18
19
 
19
20
  __all__ = [
20
21
  "run",
22
+ "trace",
21
23
  "annotate",
22
24
  "queue_for_annotation",
23
25
  "queue_for_annotation_async",
@@ -0,0 +1,68 @@
1
+ ---
2
+ name: sovara
3
+ description: >
4
+ Use when a user wants to debug, observe, optimize, or capture lessons
5
+ from a Python or TypeScript LLM agent — recording runs as dataflow
6
+ graphs of LLM and tool calls, inspecting which step produced a wrong
7
+ answer, comparing runs to find regressions, annotating failures, or
8
+ turning recurring lessons into priors that are injected back into
9
+ context at runtime. Also covers installing the Sovara desktop app,
10
+ SDK, or CLI, deploying `sovara-server` on Azure with Microsoft
11
+ Entra auth, or configuring Sovara for Palantir Foundry. Trigger even when the user does not say "Sovara" —
12
+ phrases like "my agent keeps giving wrong answers", "trace this LLM
13
+ call", "the agent regressed after my last change", "remember this
14
+ rule for next time", "inject domain knowledge into my agent at
15
+ runtime", or "set up observability for my agent" all apply. Do not
16
+ use for generic prompt engineering with no run inspection, generic
17
+ HTTP/SQL tracing unrelated to LLM agents, or Azure deployment
18
+ unrelated to `sovara-server`.
19
+ ---
20
+
21
+ # sovara
22
+
23
+ ## Overview
24
+
25
+ Sovara helps develop and maintain adaptable agentic systems by recording traces as dataflow graphs and injecting learned priors at runtime.
26
+
27
+ Core capabilities:
28
+
29
+ - **Integrated observability**: Record agent traces as dataflow graphs with zero code changes for supported Python workflows.
30
+ - **Priors**: Create, retrieve, validate, and inject reusable lessons into agent context.
31
+ - **SDK install guidance**: Install the desktop app, SDK/runner, CLI, and assistant skill.
32
+ - **Enterprise deploy guidance**: Stand up `sovara-server` on Azure with Microsoft Entra auth.
33
+ - **Palantir setup guidance**: Configure Sovara to use Palantir Foundry as the storage backend and embedding provider.
34
+
35
+ ## Setup Gate
36
+
37
+ Run project setup checks only for workflows that execute Sovara against a project: recording, probing, logs, annotations, priors, or connecting an agent to a server. Skip this gate when the user only needs SDK/CLI installation guidance or enterprise deployment planning.
38
+
39
+ For project-scoped workflows:
40
+
41
+ 1. Run `sovara status --path <script-or-project-dir>` before the first project command.
42
+ 2. If setup is missing, run `sovara init --project-root <dir> --project-name "<name>"`.
43
+ 3. In non-interactive shells, do not rely on prompts. Initialize first, or pass `--project-root`, `--project-name`, and `--project-description` directly to `sovara record`.
44
+ 4. Use `sovara projects` when scope is ambiguous. Commands such as `sovara runs ...`, `sovara annotations ...`, and `sovara priors ...` accept `--project-id` / `--proj-id` with a full ID or unambiguous prefix.
45
+ 5. Install or refresh this shared skill only when asked: `sovara install-skill [--level global|project] [--project-dir <dir>] [--target codex|claude|both]`.
46
+
47
+ ## Task Routing
48
+
49
+ Read only the file that matches the user's task:
50
+
51
+ - **[optimizing-agents.md](optimizing-agents.md)**: Record, probe, annotate, and improve agent runs; create and manage priors. Use for day-to-day Sovara workflows.
52
+ - **[install-desktop-app.md](install-desktop-app.md)**: Shared OS-level install steps (desktop app, CLI, assistant skill). Load alongside the language-specific install file below.
53
+ - **[install-python-sdk.md](install-python-sdk.md)**: Install the Python SDK (`sovara`) and instrument a Python agent. Pair with `install-desktop-app.md`.
54
+ - **[install-ts-sdk.md](install-ts-sdk.md)**: Install the TypeScript runner (`@sovara/runner`) and instrument a Node.js agent. Pair with `install-desktop-app.md`.
55
+ - **[enterprise-azure.md](enterprise-azure.md)**: Deploy `sovara-server` on Azure Container Apps with Microsoft Entra app registrations.
56
+ - **[enterprise-palantir.md](enterprise-palantir.md)**: Configure Sovara Server to use Palantir Foundry for ontology-backed storage and AIP embeddings.
57
+
58
+ If the task spans multiple files, read them in this order: install first, optimize second, enterprise/provider setup last. Apply only the sections that match the request.
59
+
60
+ ## On-Demand References
61
+
62
+ - **[references/cli-reference.md](references/cli-reference.md)**: Load only when exact flags, command shapes, output schemas, or troubleshooting details are needed.
63
+ - **[evals/evals.json](evals/evals.json)**: Output evals — schema-compliant test cases for whether the loaded skill produces good agent behavior.
64
+ - **[evals/trigger_queries.json](evals/trigger_queries.json)**: Trigger evals — realistic prompts (with and without the word "Sovara") used to test whether the description fires correctly. Do not load when answering user requests; this file is for skill maintainers.
65
+
66
+ ## Feedback
67
+
68
+ When a Sovara command should work but does not, propose posting in the Sovara Discord at [discord.gg/P6a93bWJ](https://discord.gg/P6a93bWJ) or emailing `support@sovara-labs.com`. Include the exact command, sanitized output, OS, Sovara CLI version, and whether the desktop app or enterprise server was running.