aria-code 0.114.0__tar.gz → 0.116.0__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 (815) hide show
  1. {aria_code-0.114.0/src/aria_code.egg-info → aria_code-0.116.0}/PKG-INFO +3 -2
  2. {aria_code-0.114.0 → aria_code-0.116.0}/README.md +1 -1
  3. {aria_code-0.114.0 → aria_code-0.116.0}/pyproject.toml +3 -1
  4. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/_version.py +1 -1
  5. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/prompts/system_prompts.py +11 -4
  6. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/providers/llm/ollama_stream.py +2 -1
  7. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/providers/llm/sse_stream.py +15 -2
  8. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/tools/system_tools.py +3 -1
  9. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/doctor.py +15 -0
  10. aria_code-0.116.0/src/aria_code/evals/gap.py +93 -0
  11. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/evals/runner.py +12 -5
  12. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/evals/summary.py +56 -14
  13. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/runtime/processes.py +102 -14
  14. aria_code-0.116.0/src/aria_code/runtime/windows_job.py +115 -0
  15. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/safety/sandbox.py +34 -7
  16. aria_code-0.116.0/src/aria_code/ui/assets/aria-robot.png +0 -0
  17. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/ui/banner.py +61 -9
  18. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/ui/image_render.py +20 -24
  19. aria_code-0.116.0/src/aria_code/ui/robot_pixels.py +6 -0
  20. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/workspace/verify.py +36 -2
  21. {aria_code-0.114.0 → aria_code-0.116.0/src/aria_code.egg-info}/PKG-INFO +3 -2
  22. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code.egg-info/SOURCES.txt +11 -0
  23. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code.egg-info/requires.txt +1 -0
  24. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_background_processes.py +69 -4
  25. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_binary_bundles_runtime_imports.py +2 -1
  26. aria_code-0.116.0/tests/test_doctor_sandbox.py +21 -0
  27. aria_code-0.116.0/tests/test_eval_holdout.py +102 -0
  28. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_eval_trajectories.py +17 -0
  29. aria_code-0.116.0/tests/test_linux_sandbox_integration.py +38 -0
  30. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_os_sandbox.py +30 -2
  31. aria_code-0.116.0/tests/test_prompt_dates.py +24 -0
  32. aria_code-0.116.0/tests/test_robot_artwork.py +101 -0
  33. aria_code-0.116.0/tests/test_sse_http_roundtrip.py +69 -0
  34. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_sse_stream_contract.py +26 -0
  35. aria_code-0.116.0/tests/test_verification_runner_selection.py +31 -0
  36. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_wheel_is_installable.py +2 -1
  37. {aria_code-0.114.0 → aria_code-0.116.0}/LICENSE +0 -0
  38. {aria_code-0.114.0 → aria_code-0.116.0}/NOTICE +0 -0
  39. {aria_code-0.114.0 → aria_code-0.116.0}/setup.cfg +0 -0
  40. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/__init__.py +0 -0
  41. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/adk_apps/__init__.py +0 -0
  42. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/adk_apps/aria_code_review/__init__.py +0 -0
  43. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/adk_apps/aria_code_review/agent.py +0 -0
  44. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/adk_apps/aria_research/__init__.py +0 -0
  45. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/adk_apps/aria_research/agent.py +0 -0
  46. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/__init__.py +0 -0
  47. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/base.py +0 -0
  48. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/code_review.py +0 -0
  49. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/deep/__init__.py +0 -0
  50. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/deep/calibration_loop.py +0 -0
  51. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/deep/critic.py +0 -0
  52. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/deep/deepen.py +0 -0
  53. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/deep/models.py +0 -0
  54. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/deep/pipeline.py +0 -0
  55. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/deep/quant_fusion.py +0 -0
  56. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/deep/themes.py +0 -0
  57. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/deep/tiers.py +0 -0
  58. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/engineering/__init__.py +0 -0
  59. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/engineering/coder.py +0 -0
  60. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/engineering/tester.py +0 -0
  61. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/financial/__init__.py +0 -0
  62. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/financial/cashflow_burn.py +0 -0
  63. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/financial/catalyst.py +0 -0
  64. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/financial/corporate_finance.py +0 -0
  65. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/financial/debate.py +0 -0
  66. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/financial/earnings.py +0 -0
  67. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/financial/fundamental.py +0 -0
  68. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/financial/macro.py +0 -0
  69. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/financial/news.py +0 -0
  70. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/financial/risk.py +0 -0
  71. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/financial/sector.py +0 -0
  72. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/financial/strategist.py +0 -0
  73. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/financial/stripe_revenue.py +0 -0
  74. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/financial/synthesis.py +0 -0
  75. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/financial/technical.py +0 -0
  76. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/orchestrator.py +0 -0
  77. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/portfolio_agent.py +0 -0
  78. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/realty/__init__.py +0 -0
  79. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/realty/asset_diagnosis.py +0 -0
  80. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/realty/business_match.py +0 -0
  81. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/realty/cashflow_verify.py +0 -0
  82. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/realty/contract_rules.py +0 -0
  83. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/realty/energy_anomaly.py +0 -0
  84. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/realty/exit_settlement.py +0 -0
  85. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/realty/fulfillment_risk.py +0 -0
  86. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/realty/ops_optimize.py +0 -0
  87. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/realty/revenue_share.py +0 -0
  88. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/registry.py +0 -0
  89. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/signal_scheme.py +0 -0
  90. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/sports/__init__.py +0 -0
  91. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/sports/football_agent.py +0 -0
  92. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/supervisor.py +0 -0
  93. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/team.py +0 -0
  94. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/warehouse/__init__.py +0 -0
  95. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/warehouse/contracts.py +0 -0
  96. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/warehouse/dashboard.py +0 -0
  97. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/warehouse/fulfillment_leadtime.py +0 -0
  98. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/warehouse/inbound_exceptions.py +0 -0
  99. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/warehouse/inventory_health.py +0 -0
  100. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/warehouse/local_run.py +0 -0
  101. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/warehouse/local_snapshot.py +0 -0
  102. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/warehouse/logistics_cost.py +0 -0
  103. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/warehouse/logistics_sync.py +0 -0
  104. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/agents/warehouse/workflow.py +0 -0
  105. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/aliyun_data_client.py +0 -0
  106. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/README.md +0 -0
  107. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/__init__.py +0 -0
  108. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/channels/README.md +0 -0
  109. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/channels/__init__.py +0 -0
  110. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/channels/approvals.py +0 -0
  111. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/channels/conversation.py +0 -0
  112. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/channels/digest.py +0 -0
  113. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/channels/intake.py +0 -0
  114. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/channels/registry.py +0 -0
  115. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/channels/tradingview.py +0 -0
  116. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/README.md +0 -0
  117. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/__init__.py +0 -0
  118. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/_optional.py +0 -0
  119. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/bootstrap.py +0 -0
  120. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/broker_render.py +0 -0
  121. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/chat_turn.py +0 -0
  122. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/codegen_paths.py +0 -0
  123. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/__init__.py +0 -0
  124. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/_business_render.py +0 -0
  125. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/_ui.py +0 -0
  126. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/analysis_cmds.py +0 -0
  127. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/ashare_prediction_cmds.py +0 -0
  128. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/auth_cmds.py +0 -0
  129. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/backtest_cmds.py +0 -0
  130. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/broker_cmds.py +0 -0
  131. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/business_workflow_cmds.py +0 -0
  132. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/canvas_cmds.py +0 -0
  133. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/catalog.py +0 -0
  134. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/core_cmds.py +0 -0
  135. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/data_cmds.py +0 -0
  136. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/diagnostic_cmds.py +0 -0
  137. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/diagnostic_ops_cmds.py +0 -0
  138. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/file_cmds.py +0 -0
  139. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/finance_service_cmds.py +0 -0
  140. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/fx_commodity_cmds.py +0 -0
  141. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/market.py +0 -0
  142. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/market_cmds.py +0 -0
  143. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/market_context.py +0 -0
  144. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/market_render.py +0 -0
  145. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/model_cmds.py +0 -0
  146. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/ops_cmds.py +0 -0
  147. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/orchestrator_cmds.py +0 -0
  148. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/pdf_export_cmds.py +0 -0
  149. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/portfolio_cmds.py +0 -0
  150. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/report.py +0 -0
  151. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/scaffold_templates.py +0 -0
  152. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/session_cmds.py +0 -0
  153. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/session_ux_cmds.py +0 -0
  154. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/team.py +0 -0
  155. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/team_render.py +0 -0
  156. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/ui_cmds.py +0 -0
  157. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/warehouse_cmds.py +0 -0
  158. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/workflow_cmds.py +0 -0
  159. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/commands/workspace_cmds.py +0 -0
  160. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/config_paths.py +0 -0
  161. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/config_store.py +0 -0
  162. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/constants.py +0 -0
  163. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/context.py +0 -0
  164. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/deterministic.py +0 -0
  165. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/direct.py +0 -0
  166. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/earnings_view.py +0 -0
  167. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/exec_events.py +0 -0
  168. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/finance_service_catalog.py +0 -0
  169. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/football_reports.py +0 -0
  170. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/github_app_auth.py +0 -0
  171. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/google_login.py +0 -0
  172. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/handlers/__init__.py +0 -0
  173. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/handlers/broker_handlers.py +0 -0
  174. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/handlers/chart_handlers.py +0 -0
  175. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/handlers/market_handlers.py +0 -0
  176. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/handlers/realty_handlers.py +0 -0
  177. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/handlers/sports_handlers.py +0 -0
  178. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/handlers/strategy_advice.py +0 -0
  179. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/headless.py +0 -0
  180. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/helpers.py +0 -0
  181. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/hooks.py +0 -0
  182. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/i18n.py +0 -0
  183. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/intent.py +0 -0
  184. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/intent_router.py +0 -0
  185. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/intent_signals.py +0 -0
  186. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/lifecycle_hooks.py +0 -0
  187. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/local_tool_schemas.py +0 -0
  188. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/main.py +0 -0
  189. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/market_hours.py +0 -0
  190. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/market_metadata.py +0 -0
  191. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/market_universe.py +0 -0
  192. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/message_processing.py +0 -0
  193. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/mixin_binding.py +0 -0
  194. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/model_catalog.py +0 -0
  195. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/model_probe.py +0 -0
  196. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/model_retirement.py +0 -0
  197. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/pdf_report.py +0 -0
  198. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/plan_mode.py +0 -0
  199. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/plotly_html.py +0 -0
  200. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/prediction_feedback.py +0 -0
  201. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/preflight.py +0 -0
  202. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/project_aria.py +0 -0
  203. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/prompt_assembly.py +0 -0
  204. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/prompts/__init__.py +0 -0
  205. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/prompts/coding.py +0 -0
  206. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/prompts/select.py +0 -0
  207. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/prompts/ui.py +0 -0
  208. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/provider_endpoints.py +0 -0
  209. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/provider_keys.py +0 -0
  210. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/providers/__init__.py +0 -0
  211. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/providers/base.py +0 -0
  212. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/providers/chat_routing.py +0 -0
  213. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/providers/collaboration.py +0 -0
  214. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/providers/llm/__init__.py +0 -0
  215. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/providers/llm/offline_responses.py +0 -0
  216. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/providers/llm/response_cache.py +0 -0
  217. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/providers/runtime_bridge.py +0 -0
  218. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/providers/vertexai_stream.py +0 -0
  219. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/release_download.py +0 -0
  220. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/review_runner.py +0 -0
  221. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/runtime_consumer.py +0 -0
  222. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/sandbox.py +0 -0
  223. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/session_export.py +0 -0
  224. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/session_jsonl.py +0 -0
  225. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/session_store.py +0 -0
  226. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/skills_catalog.py +0 -0
  227. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/terminal_chrome.py +0 -0
  228. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/todo_tracker.py +0 -0
  229. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/tool_executor.py +0 -0
  230. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/tool_registry.py +0 -0
  231. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/tool_scope.py +0 -0
  232. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/tools/__init__.py +0 -0
  233. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/tools/context.py +0 -0
  234. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/tools/file_tools.py +0 -0
  235. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/tools/market_tools.py +0 -0
  236. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/tools/notebook_tools.py +0 -0
  237. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/tools/write_tools.py +0 -0
  238. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/tradingview_bridge.py +0 -0
  239. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/turn_planning.py +0 -0
  240. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/update_check.py +0 -0
  241. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/updater.py +0 -0
  242. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/utils/__init__.py +0 -0
  243. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/utils/market_detect.py +0 -0
  244. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/cli/workspace_route.py +0 -0
  245. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/daemon/README.md +0 -0
  246. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/vscode/README.md +0 -0
  247. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/apps/vscode/package.json +0 -0
  248. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/aria_cli.py +0 -0
  249. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/aria_daemon.py +0 -0
  250. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/aria_feishu_bot.py +0 -0
  251. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/aria_mcp_server.py +0 -0
  252. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/aria_relay_client.py +0 -0
  253. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/aria_relay_server.py +0 -0
  254. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/aria_telegram_bot.py +0 -0
  255. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/ariarc.py +0 -0
  256. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/artifacts.py +0 -0
  257. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/backtest_engine.py +0 -0
  258. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/backtest_report.py +0 -0
  259. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/brokers/__init__.py +0 -0
  260. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/brokers/automation.py +0 -0
  261. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/brokers/base.py +0 -0
  262. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/brokers/capabilities.py +0 -0
  263. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/brokers/cn/__init__.py +0 -0
  264. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/brokers/cn/easytrader_broker.py +0 -0
  265. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/brokers/cn/futu_broker.py +0 -0
  266. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/brokers/cn/longbridge_broker.py +0 -0
  267. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/brokers/cn/tiger_broker.py +0 -0
  268. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/brokers/cn/xtquant_broker.py +0 -0
  269. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/brokers/config.py +0 -0
  270. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/brokers/intl/__init__.py +0 -0
  271. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/brokers/intl/alpaca_broker.py +0 -0
  272. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/brokers/intl/ibkr_broker.py +0 -0
  273. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/brokers/intl/trading212_broker.py +0 -0
  274. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/brokers/intl/webull_broker.py +0 -0
  275. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/brokers/paper_broker.py +0 -0
  276. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/brokers/planning.py +0 -0
  277. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/brokers/registry.py +0 -0
  278. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/brokers/trading.py +0 -0
  279. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/canva_client.py +0 -0
  280. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/change_store.py +0 -0
  281. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/clients/__init__.py +0 -0
  282. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/clients/aliyun_data_client.py +0 -0
  283. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/clients/aria_relay_client.py +0 -0
  284. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/clients/canva_client.py +0 -0
  285. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/clients/figma_client.py +0 -0
  286. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/clients/football_data_client.py +0 -0
  287. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/clients/kling_video_client.py +0 -0
  288. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/clients/market_data_client.py +0 -0
  289. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/clients/openai_image_client.py +0 -0
  290. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/clients/runway_video_client.py +0 -0
  291. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/clients/warehouse_erp_client.py +0 -0
  292. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/cloud_memory.py +0 -0
  293. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/command_safety.py +0 -0
  294. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/computer_use_tools.py +0 -0
  295. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/dashboard_generator.py +0 -0
  296. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/data_analysis_tools.py +0 -0
  297. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/data_cleaner.py +0 -0
  298. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/data_service.py +0 -0
  299. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/datasources/__init__.py +0 -0
  300. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/datasources/base.py +0 -0
  301. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/datasources/router.py +0 -0
  302. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/datasources/sources/__init__.py +0 -0
  303. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/datasources/sources/akshare_source.py +0 -0
  304. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/datasources/sources/alpha_vantage_source.py +0 -0
  305. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/datasources/sources/edgar_source.py +0 -0
  306. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/datasources/sources/finnhub_source.py +0 -0
  307. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/datasources/sources/fred_source.py +0 -0
  308. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/datasources/sources/tushare_source.py +0 -0
  309. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/datasources/sources/web_scraper_source.py +0 -0
  310. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/datasources/sources/world_bank_source.py +0 -0
  311. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/datasources/sources/yfinance_source.py +0 -0
  312. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/demo_player.py +0 -0
  313. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/domain/__init__.py +0 -0
  314. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/domain/backtest_engine.py +0 -0
  315. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/domain/backtest_report.py +0 -0
  316. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/domain/finance_formulas.py +0 -0
  317. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/domain/portfolio_ledger.py +0 -0
  318. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/domain/strategy_vault.py +0 -0
  319. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/evals/__init__.py +0 -0
  320. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/evals/harness.py +0 -0
  321. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/external_agent_runner.py +0 -0
  322. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/figma_client.py +0 -0
  323. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/file_analysis_tools.py +0 -0
  324. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/finance_formulas.py +0 -0
  325. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/football_data_client.py +0 -0
  326. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/image_gen_tools.py +0 -0
  327. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/intent_classifier.py +0 -0
  328. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/kling_video_client.py +0 -0
  329. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/licensing.py +0 -0
  330. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/local_finance_tools.py +0 -0
  331. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/local_image_provider.py +0 -0
  332. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/local_llm_provider.py +0 -0
  333. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/macro_tools.py +0 -0
  334. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/markdown_pdf.py +0 -0
  335. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/market_data_client.py +0 -0
  336. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/mcp_client.py +0 -0
  337. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/memory_manager.py +0 -0
  338. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/model_capability.py +0 -0
  339. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/notification_tools.py +0 -0
  340. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/openai_image_client.py +0 -0
  341. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/__init__.py +0 -0
  342. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/adk_bridge/__init__.py +0 -0
  343. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/adk_bridge/code_review_tools.py +0 -0
  344. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/adk_bridge/market_tools.py +0 -0
  345. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_agents/__init__.py +0 -0
  346. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_agents/manifest.py +0 -0
  347. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_core/__init__.py +0 -0
  348. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_core/architecture.py +0 -0
  349. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_core/export.py +0 -0
  350. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_core/manifest.py +0 -0
  351. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_core/paths.py +0 -0
  352. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_core/secure_file.py +0 -0
  353. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_infra/__init__.py +0 -0
  354. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_infra/arthera.py +0 -0
  355. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_infra/doctor.py +0 -0
  356. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_infra/product.py +0 -0
  357. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_mcp/__init__.py +0 -0
  358. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_mcp/bridge.py +0 -0
  359. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_mcp/circuit.py +0 -0
  360. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_mcp/config.py +0 -0
  361. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_mcp/installer.py +0 -0
  362. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_mcp/server.py +0 -0
  363. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_mcp/tools.py +0 -0
  364. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_sdk/__init__.py +0 -0
  365. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_sdk/client.py +0 -0
  366. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_sdk/providers.py +0 -0
  367. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_sdk/streaming.py +0 -0
  368. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_sdk/types.py +0 -0
  369. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_services/__init__.py +0 -0
  370. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_services/cache.py +0 -0
  371. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_services/context.py +0 -0
  372. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_services/context_checkpoints.py +0 -0
  373. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_services/data.py +0 -0
  374. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_services/provider_health.py +0 -0
  375. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_services/references.py +0 -0
  376. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_services/registry.py +0 -0
  377. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_services/research_protocol.py +0 -0
  378. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_services/research_quality.py +0 -0
  379. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_services/settings.py +0 -0
  380. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_services/usage.py +0 -0
  381. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_skills/__init__.py +0 -0
  382. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_skills/catalog.py +0 -0
  383. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_skills/loader.py +0 -0
  384. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_skills/registry.py +0 -0
  385. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_tools/__init__.py +0 -0
  386. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_tools/financial/__init__.py +0 -0
  387. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_tools/financial/_paths.py +0 -0
  388. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_tools/financial/compliance.py +0 -0
  389. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_tools/financial/factors.py +0 -0
  390. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_tools/financial/risk_tools.py +0 -0
  391. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_tools/financial/strategy.py +0 -0
  392. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/aria_tools/registry.py +0 -0
  393. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/quant_engine/__init__.py +0 -0
  394. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/quant_engine/_namespace.py +0 -0
  395. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/quant_engine/backtest/__init__.py +0 -0
  396. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/quant_engine/backtest/core.py +0 -0
  397. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/quant_engine/backtest/engine.py +0 -0
  398. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/quant_engine/portfolio/__init__.py +0 -0
  399. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/quant_engine/portfolio/optimizer.py +0 -0
  400. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/quant_engine/sports/__init__.py +0 -0
  401. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/quant_engine/sports/calibrator.py +0 -0
  402. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/quant_engine/sports/dixon_coles.py +0 -0
  403. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/quant_engine/sports/elo.py +0 -0
  404. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/quant_engine/sports/form.py +0 -0
  405. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/quant_engine/sports/h2h.py +0 -0
  406. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/quant_engine/sports/ml_model.py +0 -0
  407. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/quant_engine/sports/predictor.py +0 -0
  408. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/quant_engine/sports/tracker.py +0 -0
  409. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/quant_engine/stochastic/__init__.py +0 -0
  410. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/quant_engine/stochastic/gbm_enhanced.py +0 -0
  411. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/quant_engine/stochastic/ito_calculus.py +0 -0
  412. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/quant_engine/stochastic/kelly_criterion.py +0 -0
  413. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/quant_engine/stochastic/monte_carlo_advanced.py +0 -0
  414. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/quant_engine/stochastic/options_pricing.py +0 -0
  415. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packages/quant_engine/stochastic/stochastic_processes.py +0 -0
  416. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packs/__init__.py +0 -0
  417. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packs/base.py +0 -0
  418. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packs/finance/__init__.py +0 -0
  419. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packs/logistics/__init__.py +0 -0
  420. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packs/payments/__init__.py +0 -0
  421. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packs/realty/__init__.py +0 -0
  422. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packs/registry.py +0 -0
  423. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/packs/rules.py +0 -0
  424. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/plan_utils.py +0 -0
  425. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/plugin_loader.py +0 -0
  426. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/portfolio_ledger.py +0 -0
  427. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/preview_server.py +0 -0
  428. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/privacy/__init__.py +0 -0
  429. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/privacy/feedback.py +0 -0
  430. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/project_review.py +0 -0
  431. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/project_review_api.py +0 -0
  432. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/project_review_server.py +0 -0
  433. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/project_tools.py +0 -0
  434. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/providers/__init__.py +0 -0
  435. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/providers/llm/__init__.py +0 -0
  436. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/providers/llm/anthropic.py +0 -0
  437. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/providers/llm/autoconfig.py +0 -0
  438. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/providers/llm/base.py +0 -0
  439. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/providers/llm/custom.py +0 -0
  440. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/providers/llm/ollama.py +0 -0
  441. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/providers/llm/openai_compat.py +0 -0
  442. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/providers/llm/registry.py +0 -0
  443. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/providers/local_image_provider.py +0 -0
  444. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/providers/local_llm_provider.py +0 -0
  445. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/providers/tool_messages.py +0 -0
  446. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/realty_data_tools.py +0 -0
  447. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/relay_store.py +0 -0
  448. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/report_exporters.py +0 -0
  449. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/report_generator.py +0 -0
  450. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/review_service.py +0 -0
  451. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/runtime/__init__.py +0 -0
  452. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/runtime/acceptance.py +0 -0
  453. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/runtime/agent_loop.py +0 -0
  454. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/runtime/approval.py +0 -0
  455. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/runtime/budget.py +0 -0
  456. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/runtime/checkpoints.py +0 -0
  457. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/runtime/crash_report.py +0 -0
  458. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/runtime/events.py +0 -0
  459. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/runtime/gateway.py +0 -0
  460. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/runtime/lsp.py +0 -0
  461. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/runtime/orchestrator.py +0 -0
  462. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/runtime/repo_map.py +0 -0
  463. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/runtime/run_state.py +0 -0
  464. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/runtime/run_store.py +0 -0
  465. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/runtime/self_healing.py +0 -0
  466. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/runtime/subagent.py +0 -0
  467. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/runtime/task_ledger.py +0 -0
  468. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/runtime/task_orchestrator.py +0 -0
  469. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/runtime/tool_executor.py +0 -0
  470. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/runtime/tool_policy.py +0 -0
  471. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/runtime/worktrees.py +0 -0
  472. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/runway_video_client.py +0 -0
  473. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/safety/__init__.py +0 -0
  474. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/safety/client_isolation.py +0 -0
  475. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/safety/permissions.py +0 -0
  476. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/safety/service.py +0 -0
  477. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/setup_wizard.py +0 -0
  478. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/spreadsheet_tools.py +0 -0
  479. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/strategy_vault.py +0 -0
  480. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/tools/__init__.py +0 -0
  481. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/tools/artifact_tools.py +0 -0
  482. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/tools/broker_tools.py +0 -0
  483. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/tools/build_quant_engine.py +0 -0
  484. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/tools/code_audit_tools.py +0 -0
  485. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/tools/computer_use_tools.py +0 -0
  486. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/tools/data_analysis_tools.py +0 -0
  487. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/tools/enterprise_finance_tools.py +0 -0
  488. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/tools/extended_tools.py +0 -0
  489. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/tools/file_analysis_tools.py +0 -0
  490. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/tools/image_gen_tools.py +0 -0
  491. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/tools/local_finance_tools.py +0 -0
  492. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/tools/logistics_carriers.py +0 -0
  493. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/tools/logistics_inventory.py +0 -0
  494. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/tools/logistics_io.py +0 -0
  495. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/tools/logistics_tenancy.py +0 -0
  496. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/tools/logistics_tools.py +0 -0
  497. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/tools/macro_tools.py +0 -0
  498. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/tools/notification_tools.py +0 -0
  499. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/tools/project_tools.py +0 -0
  500. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/tools/realty_data_tools.py +0 -0
  501. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/tools/spreadsheet_tools.py +0 -0
  502. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/tools/stripe_tools.py +0 -0
  503. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/training/__init__.py +0 -0
  504. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/training/compare.py +0 -0
  505. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/training/sft_dataset.py +0 -0
  506. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/ui/__init__.py +0 -0
  507. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/ui/completer.py +0 -0
  508. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/ui/console.py +0 -0
  509. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/ui/input_box.py +0 -0
  510. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/ui/mentions.py +0 -0
  511. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/ui/picker.py +0 -0
  512. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/ui/render/__init__.py +0 -0
  513. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/ui/render/finance.py +0 -0
  514. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/ui/render/market.py +0 -0
  515. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/ui/render/output.py +0 -0
  516. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/ui/render/responsive.py +0 -0
  517. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/ui/render/team.py +0 -0
  518. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/ui/robot.py +0 -0
  519. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/ui/startup_dashboard.py +0 -0
  520. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/utils/vscode_uri.py +0 -0
  521. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/video_analysis.py +0 -0
  522. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/video_editor.py +0 -0
  523. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/workspace/__init__.py +0 -0
  524. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/workspace/files.py +0 -0
  525. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/workspace_changes.py +0 -0
  526. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/workspace_context.py +0 -0
  527. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/workspace_service.py +0 -0
  528. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code/workspace_tools.py +0 -0
  529. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code.egg-info/dependency_links.txt +0 -0
  530. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code.egg-info/entry_points.txt +0 -0
  531. {aria_code-0.114.0 → aria_code-0.116.0}/src/aria_code.egg-info/top_level.txt +0 -0
  532. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_adk_market_tools.py +0 -0
  533. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_agent_key_points_language.py +0 -0
  534. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_agent_team_fallback.py +0 -0
  535. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_analyze_file_tool.py +0 -0
  536. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_architecture_ledger_is_true.py +0 -0
  537. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_architecture_report.py +0 -0
  538. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_aria_cli_core.py +0 -0
  539. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_aria_mcp_server.py +0 -0
  540. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_aria_sdk.py +0 -0
  541. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_artifact_publishing.py +0 -0
  542. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_artifacts_and_reports.py +0 -0
  543. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_ashare_prediction_cmds.py +0 -0
  544. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_backtest_cmds.py +0 -0
  545. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_backtest_engine.py +0 -0
  546. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_backtest_report.py +0 -0
  547. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_backtest_runs_what_it_names.py +0 -0
  548. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_broken_akshare_is_optional.py +0 -0
  549. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_broker_automation.py +0 -0
  550. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_broker_chat_confirm_gate.py +0 -0
  551. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_broker_planning.py +0 -0
  552. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_broker_safety.py +0 -0
  553. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_broker_tools.py +0 -0
  554. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_budget.py +0 -0
  555. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_business_workflow_cmds.py +0 -0
  556. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_callback_provider_cleanup.py +0 -0
  557. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_canva_client.py +0 -0
  558. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_canvas_cmds.py +0 -0
  559. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_card_approvals.py +0 -0
  560. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_channel_intake.py +0 -0
  561. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_channels.py +0 -0
  562. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_chart_handlers.py +0 -0
  563. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_chat_bots_fail_closed.py +0 -0
  564. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_chat_routing.py +0 -0
  565. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_ci_security_workflow.py +0 -0
  566. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_cli_app_split.py +0 -0
  567. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_cli_bootstrap.py +0 -0
  568. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_cli_config_store.py +0 -0
  569. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_cli_lifecycle_hooks.py +0 -0
  570. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_cli_runtime_consumer.py +0 -0
  571. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_cli_tool_executor_module.py +0 -0
  572. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_cli_updater.py +0 -0
  573. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_client_isolation_guard.py +0 -0
  574. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_cloud_memory.py +0 -0
  575. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_code_audit_tools.py +0 -0
  576. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_code_review_agent.py +0 -0
  577. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_codegen_output.py +0 -0
  578. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_coder_tester_self_healing.py +0 -0
  579. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_coder_tool_safety.py +0 -0
  580. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_collaboration.py +0 -0
  581. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_command_loggers.py +0 -0
  582. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_command_safety.py +0 -0
  583. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_compare_strategies.py +0 -0
  584. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_completions_builder.py +0 -0
  585. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_config_paths.py +0 -0
  586. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_configured_provider.py +0 -0
  587. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_container_entrypoint.py +0 -0
  588. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_container_entrypoints.py +0 -0
  589. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_context_checkpoints.py +0 -0
  590. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_context_references.py +0 -0
  591. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_context_service.py +0 -0
  592. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_conversation_core.py +0 -0
  593. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_crash_report.py +0 -0
  594. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_credential_file_permissions.py +0 -0
  595. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_custom_providers.py +0 -0
  596. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_daemon_gateway_config.py +0 -0
  597. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_dashboard_generator.py +0 -0
  598. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_data_service.py +0 -0
  599. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_data_service_imports.py +0 -0
  600. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_data_without_model.py +0 -0
  601. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_datasource_routing.py +0 -0
  602. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_deep_analysis.py +0 -0
  603. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_degrades_without_quant_engine.py +0 -0
  604. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_dispatcher_pins_match_the_release.py +0 -0
  605. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_doctor.py +0 -0
  606. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_doctor_describes_the_current_install.py +0 -0
  607. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_doctor_npm_scope.py +0 -0
  608. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_edit_and_command_safety.py +0 -0
  609. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_engine_boundary.py +0 -0
  610. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_english_output_group.py +0 -0
  611. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_enterprise_tool_honesty.py +0 -0
  612. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_env_switch_docs.py +0 -0
  613. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_eval_hard_suite.py +0 -0
  614. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_eval_summary.py +0 -0
  615. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_eval_task_bank.py +0 -0
  616. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_evals_harness.py +0 -0
  617. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_event_import_roots.py +0 -0
  618. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_exec_events.py +0 -0
  619. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_extended_tools.py +0 -0
  620. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_feishu_swarm_config.py +0 -0
  621. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_file_links.py +0 -0
  622. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_finalize_release.py +0 -0
  623. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_finance_renderers.py +0 -0
  624. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_finance_service_catalog.py +0 -0
  625. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_first_run_output.py +0 -0
  626. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_first_run_works.py +0 -0
  627. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_football_agent.py +0 -0
  628. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_football_prediction_output.py +0 -0
  629. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_gemini_retirement.py +0 -0
  630. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_google_cloud_models.py +0 -0
  631. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_google_cloud_routing.py +0 -0
  632. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_google_login.py +0 -0
  633. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_google_search_provider.py +0 -0
  634. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_headless_command_approval.py +0 -0
  635. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_headless_is_agentic.py +0 -0
  636. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_honest_surfaces.py +0 -0
  637. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_image_gen_tools.py +0 -0
  638. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_image_inputs.py +0 -0
  639. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_import_graph_budget.py +0 -0
  640. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_intent_router.py +0 -0
  641. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_intent_signals.py +0 -0
  642. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_kling_video_client.py +0 -0
  643. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_lazy_rebind.py +0 -0
  644. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_legacy_module_imports.py +0 -0
  645. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_license_consistency.py +0 -0
  646. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_licensing.py +0 -0
  647. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_local_image_provider.py +0 -0
  648. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_local_workspace_execution.py +0 -0
  649. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_logistics_3pl.py +0 -0
  650. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_logistics_and_finance_agents.py +0 -0
  651. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_lsp.py +0 -0
  652. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_markdown_pdf.py +0 -0
  653. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_market_answers_in_english.py +0 -0
  654. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_market_data_client.py +0 -0
  655. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_market_history_inheritance.py +0 -0
  656. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_market_history_tool.py +0 -0
  657. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_market_hours.py +0 -0
  658. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_market_questions_on_backend.py +0 -0
  659. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_market_symbol_extraction.py +0 -0
  660. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_market_universe.py +0 -0
  661. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_mcp_circuit.py +0 -0
  662. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_mcp_client.py +0 -0
  663. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_mentions.py +0 -0
  664. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_model_capability_registry.py +0 -0
  665. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_model_choice_is_the_users.py +0 -0
  666. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_model_probe.py +0 -0
  667. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_model_selection_state.py +0 -0
  668. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_narrow_chinese_output.py +0 -0
  669. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_native_binary_entrypoints.py +0 -0
  670. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_native_installer.py +0 -0
  671. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_natural_language_routing.py +0 -0
  672. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_new_modules.py +0 -0
  673. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_no_hardcoded_developer_paths.py +0 -0
  674. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_no_tools_route.py +0 -0
  675. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_no_uncommitted_imports.py +0 -0
  676. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_numeric_listings.py +0 -0
  677. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_ollama_stream_imports.py +0 -0
  678. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_ollama_stream_tools.py +0 -0
  679. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_openai_image_client.py +0 -0
  680. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_operations_suite.py +0 -0
  681. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_output_discipline_prompt.py +0 -0
  682. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_output_rendering.py +0 -0
  683. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_packages_facade.py +0 -0
  684. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_packaging_constraints.py +0 -0
  685. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_packaging_manifest.py +0 -0
  686. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_packs_domains.py +0 -0
  687. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_pdf_report.py +0 -0
  688. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_pick_best_installed_model.py +0 -0
  689. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_plan_mode.py +0 -0
  690. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_platform_package_assembly.py +0 -0
  691. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_platform_packages.py +0 -0
  692. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_platform_publish.py +0 -0
  693. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_plotly_html_output.py +0 -0
  694. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_portfolio_language.py +0 -0
  695. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_portfolio_ledger.py +0 -0
  696. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_post_turn_context_decision.py +0 -0
  697. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_preflight.py +0 -0
  698. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_preview_server.py +0 -0
  699. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_privacy_feedback.py +0 -0
  700. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_project_aria.py +0 -0
  701. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_project_context_files.py +0 -0
  702. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_project_review.py +0 -0
  703. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_project_review_api.py +0 -0
  704. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_prompt_assembly.py +0 -0
  705. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_prompt_selection.py +0 -0
  706. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_provider_autoconfig.py +0 -0
  707. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_provider_error_classification.py +0 -0
  708. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_provider_error_messages.py +0 -0
  709. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_provider_integration.py +0 -0
  710. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_provider_registry.py +0 -0
  711. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_public_service_status.py +0 -0
  712. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_quant_engine_namespace.py +0 -0
  713. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_rebind_contract.py +0 -0
  714. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_rebind_namespace_contract.py +0 -0
  715. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_relay_client_credentials.py +0 -0
  716. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_relay_event_verification.py +0 -0
  717. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_relay_sends_for_clients.py +0 -0
  718. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_relay_store.py +0 -0
  719. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_relay_url.py +0 -0
  720. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_release_badges.py +0 -0
  721. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_release_chain.py +0 -0
  722. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_release_commit_identity.py +0 -0
  723. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_release_download.py +0 -0
  724. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_release_push_is_atomic.py +0 -0
  725. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_release_reaches_the_registries.py +0 -0
  726. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_release_verification_waits.py +0 -0
  727. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_release_workflow_permissions.py +0 -0
  728. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_report_charts.py +0 -0
  729. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_report_generator.py +0 -0
  730. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_report_prompt_language.py +0 -0
  731. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_research_protocol.py +0 -0
  732. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_research_quality.py +0 -0
  733. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_responsive_rendering.py +0 -0
  734. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_review_service.py +0 -0
  735. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_risk_earnings_ops.py +0 -0
  736. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_root_module_budget.py +0 -0
  737. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_rsi_without_pandas_ta.py +0 -0
  738. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_runtime_acceptance.py +0 -0
  739. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_runtime_agent_loop.py +0 -0
  740. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_runtime_approval.py +0 -0
  741. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_runtime_bridge.py +0 -0
  742. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_runtime_bridge_fallback.py +0 -0
  743. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_runtime_checkpoints.py +0 -0
  744. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_runtime_event_identity.py +0 -0
  745. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_runtime_gateway.py +0 -0
  746. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_runtime_repo_map.py +0 -0
  747. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_runtime_run_store.py +0 -0
  748. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_runtime_tool_executor.py +0 -0
  749. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_runtime_worktrees.py +0 -0
  750. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_runway_video_client.py +0 -0
  751. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_safety_permissions.py +0 -0
  752. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_safety_service.py +0 -0
  753. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_safety_service_adoption.py +0 -0
  754. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_service_diagnostics_security.py +0 -0
  755. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_session_search.py +0 -0
  756. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_settings_service.py +0 -0
  757. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_shell_commands_as_written.py +0 -0
  758. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_shipper_digest.py +0 -0
  759. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_single_import_root.py +0 -0
  760. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_skill_agent_binding.py +0 -0
  761. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_skill_catalog.py +0 -0
  762. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_skill_loader.py +0 -0
  763. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_slash_popup.py +0 -0
  764. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_spreadsheet_tools.py +0 -0
  765. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_startup_dashboard.py +0 -0
  766. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_startup_keeps_cloud_model.py +0 -0
  767. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_startup_latency.py +0 -0
  768. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_status_language.py +0 -0
  769. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_streaming_pipeline.py +0 -0
  770. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_stripe_agent.py +0 -0
  771. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_subagent.py +0 -0
  772. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_supervisor_routing.py +0 -0
  773. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_system_prompts.py +0 -0
  774. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_system_tools_output.py +0 -0
  775. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_task_orchestrator.py +0 -0
  776. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_team_analysts.py +0 -0
  777. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_team_synthesis.py +0 -0
  778. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_terminal_mixins.py +0 -0
  779. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_terminal_snapshots.py +0 -0
  780. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_tls_trust_store.py +0 -0
  781. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_tool_policy.py +0 -0
  782. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_tool_rounds_on_openai_apis.py +0 -0
  783. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_tool_scope.py +0 -0
  784. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_tool_step_output.py +0 -0
  785. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_trading_service.py +0 -0
  786. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_tradingview_bridge.py +0 -0
  787. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_training_pipeline.py +0 -0
  788. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_turn_planning.py +0 -0
  789. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_ui_completer_references.py +0 -0
  790. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_ui_console_theme.py +0 -0
  791. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_ui_input_box.py +0 -0
  792. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_ui_language_and_model.py +0 -0
  793. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_ui_robot_banner.py +0 -0
  794. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_update_health_routes.py +0 -0
  795. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_verification_hint.py +0 -0
  796. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_verification_policy.py +0 -0
  797. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_version_consistency.py +0 -0
  798. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_version_counter.py +0 -0
  799. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_vertex_busy_retry.py +0 -0
  800. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_vertex_empty_rounds.py +0 -0
  801. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_vertex_models.py +0 -0
  802. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_video_analysis.py +0 -0
  803. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_video_editor.py +0 -0
  804. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_vscode_mcp.py +0 -0
  805. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_warehouse_agents.py +0 -0
  806. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_warehouse_cli_registration.py +0 -0
  807. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_warehouse_erp_client.py +0 -0
  808. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_warehouse_workflow.py +0 -0
  809. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_workspace_changes.py +0 -0
  810. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_workspace_context.py +0 -0
  811. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_workspace_files.py +0 -0
  812. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_workspace_scope.py +0 -0
  813. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_workspace_service.py +0 -0
  814. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_workspace_verify.py +0 -0
  815. {aria_code-0.114.0 → aria_code-0.116.0}/tests/test_wrapped_indent.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aria-code
3
- Version: 0.114.0
3
+ Version: 0.116.0
4
4
  Summary: Open-source AI agent for coding, financial analysis and logistics operations: numbers you can check, client data kept apart, actions a person approves
5
5
  License: Apache-2.0
6
6
  Project-URL: Homepage, https://github.com/artheras/aria-code
@@ -27,6 +27,7 @@ Requires-Dist: google-genai>=1.0.0
27
27
  Requires-Dist: aiohttp>=3.9.0
28
28
  Requires-Dist: rich>=13.7.0
29
29
  Requires-Dist: prompt_toolkit>=3.0.43
30
+ Requires-Dist: Pillow>=10.4.0
30
31
  Requires-Dist: PyYAML>=6.0.2
31
32
  Requires-Dist: requests>=2.32.0
32
33
  Requires-Dist: httpx[http2]>=0.27.0
@@ -171,7 +172,7 @@ Numbers you can check, client data kept apart, actions a person approves.</p>
171
172
  <p align="center">
172
173
  <a href="https://www.npmjs.com/package/@artheras/aria-code"><img src="https://img.shields.io/npm/v/@artheras/aria-code/latest?style=flat-square&logo=npm&label=npm" alt="npm version"></a>
173
174
  <!-- Release automation pins PyPI: the default endpoint still selects legacy 4.x. -->
174
- <a href="https://pypi.org/project/aria-code/0.114.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.114.0%2Fjson&amp;query=%24.info.version&amp;prefix=v&amp;style=flat-square&amp;logo=pypi&amp;label=PyPI&amp;color=blue&amp;cacheSeconds=300" alt="PyPI version"></a>
175
+ <a href="https://pypi.org/project/aria-code/0.116.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.116.0%2Fjson&amp;query=%24.info.version&amp;prefix=v&amp;style=flat-square&amp;logo=pypi&amp;label=PyPI&amp;color=blue&amp;cacheSeconds=300" alt="PyPI version"></a>
175
176
  <a href="https://github.com/artheras/aria-code/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/artheras/aria-code/ci.yml?branch=main&style=flat-square&logo=githubactions&label=CI" alt="CI status"></a>
176
177
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-64748b?style=flat-square" alt="Apache License 2.0"></a>
177
178
  </p>
@@ -15,7 +15,7 @@ Numbers you can check, client data kept apart, actions a person approves.</p>
15
15
  <p align="center">
16
16
  <a href="https://www.npmjs.com/package/@artheras/aria-code"><img src="https://img.shields.io/npm/v/@artheras/aria-code/latest?style=flat-square&logo=npm&label=npm" alt="npm version"></a>
17
17
  <!-- Release automation pins PyPI: the default endpoint still selects legacy 4.x. -->
18
- <a href="https://pypi.org/project/aria-code/0.114.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.114.0%2Fjson&amp;query=%24.info.version&amp;prefix=v&amp;style=flat-square&amp;logo=pypi&amp;label=PyPI&amp;color=blue&amp;cacheSeconds=300" alt="PyPI version"></a>
18
+ <a href="https://pypi.org/project/aria-code/0.116.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.116.0%2Fjson&amp;query=%24.info.version&amp;prefix=v&amp;style=flat-square&amp;logo=pypi&amp;label=PyPI&amp;color=blue&amp;cacheSeconds=300" alt="PyPI version"></a>
19
19
  <a href="https://github.com/artheras/aria-code/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/artheras/aria-code/ci.yml?branch=main&style=flat-square&logo=githubactions&label=CI" alt="CI status"></a>
20
20
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-64748b?style=flat-square" alt="Apache License 2.0"></a>
21
21
  </p>
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "aria-code"
7
- version = "0.114.0"
7
+ version = "0.116.0"
8
8
  description = "Open-source AI agent for coding, financial analysis and logistics operations: numbers you can check, client data kept apart, actions a person approves"
9
9
  readme = "README.md"
10
10
  license = { text = "Apache-2.0" }
@@ -57,6 +57,7 @@ dependencies = [
57
57
  "aiohttp>=3.9.0",
58
58
  "rich>=13.7.0",
59
59
  "prompt_toolkit>=3.0.43",
60
+ "Pillow>=10.4.0", # original mascot image; loaded only when drawing it
60
61
  "PyYAML>=6.0.2",
61
62
  "requests>=2.32.0",
62
63
  "httpx[http2]>=0.27.0",
@@ -275,6 +276,7 @@ include = ["aria_code*"]
275
276
 
276
277
  [tool.setuptools.package-data]
277
278
  "*" = ["*.yaml", "*.json", "*.md", "*.txt", "*.sh"]
279
+ "aria_code.ui" = ["assets/*.png"]
278
280
 
279
281
  # ── Ruff linting ───────────────────────────────────────────────────────────────
280
282
  [tool.ruff]
@@ -17,4 +17,4 @@ from __future__ import annotations
17
17
 
18
18
  __all__ = ["__version__"]
19
19
 
20
- __version__ = "0.114.0"
20
+ __version__ = "0.116.0"
@@ -9,6 +9,13 @@ from __future__ import annotations
9
9
  from datetime import datetime as _dt
10
10
 
11
11
 
12
+ def _chinese_date() -> str:
13
+ # Windows strftime passes format strings through the locale's code page;
14
+ # a Chinese literal in the format can crash import under an English locale.
15
+ now = _dt.now()
16
+ return f"{now.year:04d}年{now.month:02d}月{now.day:02d}日"
17
+
18
+
12
19
  # ── Language utilities ────────────────────────────────────────────────────────
13
20
 
14
21
  def detect_lang(text: str) -> str:
@@ -70,7 +77,7 @@ def build_response_style_rule(lang: str) -> str:
70
77
 
71
78
  def build_coding_prompt_lite(user_message: str) -> str:
72
79
  """Condensed coding system prompt for small models (<=3B parameters)."""
73
- today = _dt.now().strftime("%Y年%m月%d日")
80
+ today = _chinese_date()
74
81
  low = user_message.lower()
75
82
  is_financial = any(k in low for k in (
76
83
  "股票", "行情", "投资", "量化", "交易", "回测", "策略", "持仓", "组合",
@@ -200,7 +207,7 @@ def build_coding_prompt_lite(user_message: str) -> str:
200
207
 
201
208
  def build_analysis_prompt_lite(user_message: str) -> str:
202
209
  """Condensed analysis prompt for small models (<=3B)."""
203
- today = _dt.now().strftime("%Y年%m月%d日")
210
+ today = _chinese_date()
204
211
  lang = detect_lang(user_message)
205
212
  lr = LANG_RULE[lang]
206
213
  if lang == "en":
@@ -249,7 +256,7 @@ def build_finance_prompt(user_message: str = "") -> str:
249
256
  except Exception:
250
257
  _fpb = ""
251
258
 
252
- today = _dt.now().strftime("%Y年%m月%d日")
259
+ today = _chinese_date()
253
260
  weekday = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"][_dt.now().weekday()]
254
261
  lang = detect_lang(user_message)
255
262
  lr = LANG_RULE[lang]
@@ -486,7 +493,7 @@ def build_prefetched_analysis_prompt(nano: bool = False, user_message: str = "")
486
493
  nano=True: ultra-minimal prompt for 1-3B models.
487
494
  nano=False: structured prompt for 7B+ models.
488
495
  """
489
- today = _dt.now().strftime("%Y年%m月%d日")
496
+ today = _chinese_date()
490
497
  lang = detect_lang(user_message)
491
498
 
492
499
  if nano:
@@ -547,7 +547,8 @@ async def stream_ollama(ollama_url: str, message: str, history: list,
547
547
  elif _intent == "general":
548
548
  # 纯知识/概念问题:注入日期,但不注入工具 schema
549
549
  from datetime import datetime as _dt2
550
- _today_str = _dt2.now().strftime("%Y年%m月%d日")
550
+ _today = _dt2.now()
551
+ _today_str = f"{_today.year:04d}年{_today.month:02d}月{_today.day:02d}日"
551
552
  _base_prompt = (
552
553
  f"你是 Aria,Arthera 的 AI 助手。今天是 {_today_str}。\n"
553
554
  "你的能力覆盖:金融量化分析、足球/体育赛事分析与预测(含泊松算法)、编程、通用知识问答。\n\n"
@@ -10,6 +10,18 @@ import json
10
10
  from typing import Callable, Optional
11
11
 
12
12
 
13
+ def _client_tool_history(history: list) -> list:
14
+ """Keep matching call/result IDs and never cut into a tool-result batch."""
15
+ from aria_code.providers.tool_messages import to_openai_tool_protocol
16
+ normalized = to_openai_tool_protocol(history)
17
+ start = max(0, len(normalized) - 20)
18
+ # A parallel batch may have more than 20 results. Include its assistant
19
+ # call message as well, rather than orphaning the results or dropping them.
20
+ while start > 0 and normalized[start].get("role") == "tool":
21
+ start -= 1
22
+ return normalized[start:]
23
+
24
+
13
25
  def build_chat_payload(
14
26
  message: str,
15
27
  history: list,
@@ -27,6 +39,7 @@ def build_chat_payload(
27
39
  This is deliberately pure: it gives CLI, desktop, and iOS an auditable
28
40
  parity point without forcing the local-first CLI to use cloud services.
29
41
  """
42
+ history = _client_tool_history(history) if local_tool_execution else history[-20:]
30
43
  payload: dict
31
44
  if use_react_gateway:
32
45
  context = dict(user_context or {})
@@ -40,7 +53,7 @@ def build_chat_payload(
40
53
  },
41
54
  "mode": mode,
42
55
  "surface": "aria_code",
43
- "history": history[-20:],
56
+ "history": history,
44
57
  "model": {"id": model or "auto", "effort": thinking_mode or "auto"},
45
58
  "context": context,
46
59
  }
@@ -50,7 +63,7 @@ def build_chat_payload(
50
63
 
51
64
  payload = {
52
65
  "message": message,
53
- "conversation_history": history[-20:],
66
+ "conversation_history": history,
54
67
  "model": model,
55
68
  "thinking_mode": thinking_mode,
56
69
  "stream": True,
@@ -186,7 +186,9 @@ def tool_run_command(
186
186
  timeout = min(params.get("timeout", 120), 300)
187
187
  use_shell = True
188
188
  argv = None
189
- if decision.risk == "low":
189
+ # POSIX shlex strips Windows path backslashes. Keep CMD's own parsing
190
+ # on Windows, after the same policy and permission checks above.
191
+ if decision.risk == "low" and os.name != "nt":
190
192
  has_shell_meta = any(ch in command for ch in ["|", "&", ";", "<", ">", "$", "`", "\n"])
191
193
  if not has_shell_meta:
192
194
  try:
@@ -696,6 +696,19 @@ def _iter_optional_modules() -> Iterable[tuple[str, str, str]]:
696
696
  yield "akshare", "China A-share market data", "cn"
697
697
 
698
698
 
699
+ def sandbox_check(config: Dict[str, Any]) -> DoctorCheck:
700
+ """Report the actual command confinement available on this machine."""
701
+ from aria_code.safety.sandbox import capability
702
+ mode = str(config.get("permission_mode", "workspace-write"))
703
+ kind = "disabled" if mode == "full-access" else capability(config.get("os_sandbox"))
704
+ if kind == "policy-only":
705
+ return _check("command_sandbox", "warn", f"{mode}: command policy only; no OS filesystem/network confinement",
706
+ "Install bubblewrap on Linux; Windows currently uses command policy only.")
707
+ if kind == "disabled":
708
+ return _check("command_sandbox", "skip", "OS command sandbox disabled by your settings")
709
+ return _check("command_sandbox", "ok", f"{mode}: {kind}; violations fail the command without an unconfined retry")
710
+
711
+
699
712
  def run_doctor(
700
713
  config: Optional[Dict[str, Any]] = None,
701
714
  *,
@@ -719,6 +732,8 @@ def run_doctor(
719
732
  if drift is not None:
720
733
  checks.append(drift)
721
734
 
735
+ checks.append(sandbox_check(config))
736
+
722
737
  if context_stats:
723
738
  _fill = float(context_stats.get("fill_ratio") or 0.0)
724
739
  _thr = float(context_stats.get("threshold") or 0.78)
@@ -0,0 +1,93 @@
1
+ """In-sample minus out-of-sample: public tasks against their private twins.
2
+
3
+ A public task can end up in a model's training data, and a tuned model can
4
+ learn the public bank instead of the skill. Either way it scores well on the
5
+ public task and worse on a twin it has never seen: the same skill, with
6
+ different data, numbers and wording, kept in a private repository. SWE-bench
7
+ Pro reads leakage the same way, from the gap between its public and held-out
8
+ splits; a quant reads overfitting from the gap between in-sample and
9
+ out-of-sample returns.
10
+
11
+ A holdout suite names each twin's public task with ``twin_of``. This pairs
12
+ them, takes each side's pass rate over its repeats, and reports the mean gap
13
+ (public minus twin) with a bootstrap 95% interval. An interval above zero is
14
+ a warning that the public score overstates the skill.
15
+
16
+ python -m aria_code.evals.gap --public evals-*.json --holdout holdout.json --suites holdout/suites/*.yaml
17
+
18
+ ``--markdown`` prints counts and rates only, never a private task id, so the
19
+ section can go into a public job summary.
20
+ """
21
+
22
+ from __future__ import annotations
23
+
24
+ import argparse
25
+ import json
26
+ from pathlib import Path
27
+ from typing import Iterable
28
+
29
+ from aria_code.training.compare import bootstrap_ci, rates
30
+
31
+
32
+ def twins(suite_files: Iterable[Path]) -> dict[str, str]:
33
+ """Holdout task id -> the public task it is a twin of."""
34
+ import yaml
35
+
36
+ pairs = {}
37
+ for suite_file in suite_files:
38
+ doc = yaml.safe_load(Path(suite_file).read_text(encoding="utf-8")) or {}
39
+ pairs.update({str(t["id"]): str(t["twin_of"]) for t in doc.get("tasks") or [] if t.get("twin_of")})
40
+ return pairs
41
+
42
+
43
+ def gap(public_reports: Iterable[Path], holdout_reports: Iterable[Path], pairs: dict[str, str]) -> dict:
44
+ public, _, _ = rates(public_reports)
45
+ holdout, _, _ = rates(holdout_reports)
46
+ rows = {h: (public[p], holdout[h]) for h, p in pairs.items() if p in public and h in holdout}
47
+ diffs = [pub - twin for pub, twin in rows.values()]
48
+ lo, hi = bootstrap_ci(diffs)
49
+ mean = sum(diffs) / len(diffs) if diffs else 0.0
50
+ return {
51
+ "pairs": len(rows),
52
+ "public_pass_rate": round(sum(p for p, _ in rows.values()) / len(rows), 4) if rows else None,
53
+ "twin_pass_rate": round(sum(t for _, t in rows.values()) / len(rows), 4) if rows else None,
54
+ "mean_gap": round(mean, 4),
55
+ "ci95": [round(lo, 4), round(hi, 4)],
56
+ "public_overstates": lo > 0,
57
+ "unpaired": sorted(h for h in pairs if h not in rows),
58
+ }
59
+
60
+
61
+ def markdown(result: dict) -> str:
62
+ """The gap for a public summary: rates and the interval, no task ids."""
63
+ if not result["pairs"]:
64
+ return "### Public vs holdout\nNo twin pairs were scored on both sides.\n"
65
+ lo, hi = result["ci95"]
66
+ verdict = ("The public score overstates the skill: the interval is above 0." if result["public_overstates"]
67
+ else "No significant gap: the interval includes 0 or is below it.")
68
+ return "\n".join([
69
+ "### Public vs holdout",
70
+ f"{result['pairs']} twin pairs. Public {result['public_pass_rate']:.0%}, "
71
+ f"holdout {result['twin_pass_rate']:.0%}; gap {result['mean_gap']:+.0%} "
72
+ f"(95% CI {lo:+.0%} to {hi:+.0%}).",
73
+ verdict,
74
+ *([f"{len(result['unpaired'])} twins had no scored pair."] if result["unpaired"] else []),
75
+ "",
76
+ ])
77
+
78
+
79
+ def main(argv: list[str] | None = None) -> int:
80
+ ap = argparse.ArgumentParser(description="Gap between public tasks and their private twins.")
81
+ ap.add_argument("--public", nargs="+", type=Path, required=True)
82
+ ap.add_argument("--holdout", nargs="+", type=Path, required=True)
83
+ ap.add_argument("--suites", nargs="+", type=Path, required=True,
84
+ help="the holdout suite YAML files (their tasks carry twin_of)")
85
+ ap.add_argument("--markdown", action="store_true", help="counts and rates only, safe for a public summary")
86
+ args = ap.parse_args(argv)
87
+ result = gap(args.public, args.holdout, twins(args.suites))
88
+ print(markdown(result) if args.markdown else json.dumps(result, ensure_ascii=False, indent=2))
89
+ return 0
90
+
91
+
92
+ if __name__ == "__main__":
93
+ raise SystemExit(main())
@@ -43,9 +43,9 @@ class _TimedOut:
43
43
 
44
44
  returncode = 124
45
45
 
46
- def __init__(self, seconds: int) -> None:
47
- self.stderr = f"the agent was still working when the {seconds}s budget ran out"
48
- self.stdout = ""
46
+ def __init__(self, seconds: int, stdout: str = "", stderr: str = "") -> None:
47
+ self.stderr = f"{stderr}\nthe agent was still working when the {seconds}s budget ran out".strip()
48
+ self.stdout = stdout
49
49
 
50
50
 
51
51
  class Trajectories:
@@ -148,7 +148,7 @@ def build_agent_solver(*, model: str = "", timeout: int = 900, local: bool = Fal
148
148
  if trajectories is not None:
149
149
  trajectories.record(workspace.name, prompt, done.stdout)
150
150
  return done
151
- except subprocess.TimeoutExpired:
151
+ except subprocess.TimeoutExpired as exc:
152
152
  # A truncated run is not a measured failure.
153
153
  #
154
154
  # I first scored this as FAIL, reasoning "it had its time and
@@ -158,7 +158,14 @@ def build_agent_solver(*, model: str = "", timeout: int = 900, local: bool = Fal
158
158
  # where back-to-back turns contend and get throttled. Scoring that
159
159
  # as FAIL blamed the model for the harness cutting it off — which
160
160
  # is precisely the confusion PASS/FAIL vs ERROR exists to prevent.
161
- return _TimedOut(timeout)
161
+ # TimeoutExpired may carry bytes even with text=True. Keep partial
162
+ # tool events and diagnostics so a stalled run can be investigated.
163
+ def _text(value):
164
+ return value.decode("utf-8", errors="replace") if isinstance(value, bytes) else (value or "")
165
+ stdout, stderr = _text(exc.stdout), _text(exc.stderr)
166
+ if trajectories is not None:
167
+ trajectories.record(workspace.name, prompt, stdout)
168
+ return _TimedOut(timeout, stdout, stderr)
162
169
 
163
170
  return _solve
164
171
 
@@ -1,6 +1,11 @@
1
1
  """Turn eval reports into a Markdown scoreboard, and decide whether the run is healthy.
2
2
 
3
- python3 -m aria_code.evals.summary evals-core.json evals-operations.json
3
+ python3 -m aria_code.evals.summary evals-core.json evals-operations.json [--private evals-holdout.json]
4
+
5
+ Each suite's score comes with the mean per-task pass rate and its standard
6
+ error, so two runs can be told apart from noise. A report passed after
7
+ ``--private`` (the holdout suites, kept in a private repository) is shown as
8
+ counts only: no task ids, details or logs, because the summary is public.
4
9
 
5
10
  The suites ran in CI only with ``--check``: every fixture still starts red,
6
11
  but no model ever attempted them, so nothing measured whether Aria can fix
@@ -15,22 +20,50 @@ A task the model gets wrong is a result, not a broken build: the exit code is
15
20
  from __future__ import annotations
16
21
 
17
22
  import json
23
+ import math
18
24
  import sys
25
+ from collections import defaultdict
19
26
  from pathlib import Path
20
27
 
21
28
 
22
- def summarise(reports: list[dict], model: str = "") -> tuple[str, int]:
29
+ def mean_sem(report: dict) -> tuple[float, float, int] | None:
30
+ """Mean per-task pass rate over scored attempts, its standard error, and the task count."""
31
+ passed: dict[str, int] = defaultdict(int)
32
+ scored: dict[str, int] = defaultdict(int)
33
+ for r in report.get("results") or []:
34
+ if str(r.get("outcome", "")).lower() in ("pass", "fail"):
35
+ scored[str(r.get("task_id"))] += 1
36
+ passed[str(r.get("task_id"))] += str(r.get("outcome")).lower() == "pass"
37
+ rates = [passed[t] / scored[t] for t in scored]
38
+ if not rates:
39
+ return None
40
+ mean = sum(rates) / len(rates)
41
+ if len(rates) < 2:
42
+ return mean, 0.0, 1
43
+ var = sum((x - mean) ** 2 for x in rates) / (len(rates) - 1)
44
+ return mean, math.sqrt(var / len(rates)), len(rates)
45
+
46
+
47
+ def summarise(reports: list[dict], model: str = "", private: list[dict] | None = None) -> tuple[str, int]:
23
48
  """Markdown for the reports, and the exit code the run should have."""
24
49
  lines = [f"## Aria eval scoreboard{f' · {model}' if model else ''}", ""]
25
50
  unhealthy = 0
26
- for report in reports:
51
+ for report in [*reports, *(private or [])]:
52
+ is_private = any(report is p for p in private or [])
27
53
  suite = report.get("suite", "?")
28
- lines.append(f"### {suite}: {report.get('passed', 0)}/{report.get('scored', 0)} "
29
- f"({report.get('pass_rate', 0):.0%})")
54
+ lines.append(f"### {suite}{' (holdout)' if is_private else ''}: "
55
+ f"{report.get('passed', 0)}/{report.get('scored', 0)} ({report.get('pass_rate', 0):.0%})")
56
+ stats = mean_sem(report)
57
+ if stats:
58
+ mean, sem, n = stats
59
+ lines.append(f"Mean task pass rate {mean:.0%} ± {sem:.0%} (SEM over {n} task{'s' if n != 1 else ''}).")
30
60
  extras = [f"{report[k]} {k}" for k in ("errored", "invalid") if report.get(k)]
31
61
  if extras:
32
62
  lines.append(f"Not scored: {', '.join(extras)}.")
33
63
  unhealthy += int(report.get("errored", 0)) + int(report.get("invalid", 0))
64
+ if is_private:
65
+ lines += ["Task ids, details and logs are not published for holdout suites.", ""]
66
+ continue
34
67
  lines += ["", "| Task | Outcome | Seconds | Detail |", "|---|---|---:|---|"]
35
68
  for result in report.get("results", []):
36
69
  detail = str(result.get("detail") or "").replace("|", "\\|")[:120]
@@ -56,17 +89,26 @@ def main(argv: list[str] | None = None) -> int:
56
89
  model = ""
57
90
  if args[:1] == ["--model"] and len(args) > 1:
58
91
  model, args = args[1], args[2:]
59
- reports = []
60
- for name in args:
61
- path = Path(name)
62
- if path.exists():
63
- reports.append(json.loads(path.read_text(encoding="utf-8")))
64
- else:
65
- print(f"(no report at {name})", file=sys.stderr)
66
- if not reports:
92
+ public_names, private_names = args, []
93
+ if "--private" in args:
94
+ i = args.index("--private")
95
+ public_names, private_names = args[:i], args[i + 1:]
96
+
97
+ def load(names: list[str]) -> list[dict]:
98
+ out = []
99
+ for name in names:
100
+ path = Path(name)
101
+ if path.exists():
102
+ out.append(json.loads(path.read_text(encoding="utf-8")))
103
+ else:
104
+ print(f"(no report at {name})", file=sys.stderr)
105
+ return out
106
+
107
+ reports, private = load(public_names), load(private_names)
108
+ if not reports and not private:
67
109
  print("no eval reports to summarise", file=sys.stderr)
68
110
  return 1
69
- text, code = summarise(reports, model)
111
+ text, code = summarise(reports, model, private)
70
112
  print(text)
71
113
  return code
72
114
 
@@ -23,6 +23,7 @@ import subprocess
23
23
  import threading
24
24
  import time
25
25
  from dataclasses import dataclass, field
26
+ from pathlib import Path
26
27
  from typing import Sequence
27
28
 
28
29
  MAX_RUNNING = 8
@@ -46,10 +47,13 @@ class _Process:
46
47
  read_upto: int = 0 # absolute position the caller has read to
47
48
  done: bool = False # exited, and everything it printed has been read in
48
49
  changed: threading.Condition = field(default_factory=threading.Condition)
50
+ stop_lock: threading.Lock = field(default_factory=threading.Lock)
51
+ group_cleaned: bool = False
52
+ windows_job: object | None = None
49
53
 
50
54
  @property
51
55
  def running(self) -> bool:
52
- return self.popen.poll() is None
56
+ return _group_running(self)
53
57
 
54
58
  def end(self) -> int:
55
59
  return self.dropped + len(self.text)
@@ -58,6 +62,60 @@ class _Process:
58
62
  _processes: dict[str, _Process] = {}
59
63
 
60
64
 
65
+ def _group_running(proc: _Process) -> bool:
66
+ """The group may outlive its leader. Zombies have already stopped.
67
+
68
+ Linux CI's PID 1 may not reap orphan zombies promptly; killpg(..., 0)
69
+ alone therefore cannot tell whether a command is still executing.
70
+ """
71
+ if proc.group_cleaned:
72
+ return False
73
+ proc.popen.poll() # reap our own child even while its children hold stdout
74
+ if os.name == "nt":
75
+ if proc.windows_job is not None:
76
+ active = proc.windows_job.running()
77
+ if not active:
78
+ proc.windows_job.close()
79
+ proc.group_cleaned = True
80
+ return active
81
+ return proc.popen.returncode is None
82
+ try:
83
+ os.killpg(proc.popen.pid, 0)
84
+ except ProcessLookupError:
85
+ proc.group_cleaned = True
86
+ return False
87
+ except PermissionError:
88
+ return True
89
+ if Path("/proc/self/stat").exists():
90
+ seen = False
91
+ for entry in Path("/proc").iterdir():
92
+ if not entry.name.isdecimal():
93
+ continue
94
+ try:
95
+ fields = (entry / "stat").read_text().rsplit(")", 1)[1].split()
96
+ if int(fields[2]) != proc.popen.pid:
97
+ continue
98
+ seen = True
99
+ if fields[0] not in ("Z", "X"):
100
+ return True
101
+ except (OSError, ValueError, IndexError):
102
+ continue
103
+ if seen:
104
+ proc.group_cleaned = True
105
+ return False
106
+ return True
107
+
108
+
109
+ def _wait_group(proc: _Process, seconds: float) -> bool:
110
+ deadline = time.monotonic() + max(0.0, seconds)
111
+ while _group_running(proc):
112
+ remaining = deadline - time.monotonic()
113
+ if remaining <= 0:
114
+ return False
115
+ time.sleep(min(0.05, remaining))
116
+ return True
117
+
118
+
61
119
  def _pump(proc: _Process) -> None:
62
120
  stream = proc.popen.stdout
63
121
  try:
@@ -77,6 +135,7 @@ def _pump(proc: _Process) -> None:
77
135
  pass
78
136
  finally:
79
137
  proc.popen.wait()
138
+ stream.close()
80
139
  with proc.changed:
81
140
  proc.done = True
82
141
  proc.changed.notify_all()
@@ -93,8 +152,21 @@ def start(argv: str | Sequence[str], *, shell: bool, cwd: str | None, label: str
93
152
  popen = subprocess.Popen(
94
153
  argv, shell=shell, cwd=cwd, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
95
154
  stderr=subprocess.STDOUT, start_new_session=True,
155
+ # The command must not spawn children before the Job owns it.
156
+ creationflags=0x4 if os.name == "nt" else 0, # CREATE_SUSPENDED
96
157
  )
97
158
  proc = _Process(id=f"p{next(_ids)}", command=label, cwd=cwd or os.getcwd(), popen=popen)
159
+ if os.name == "nt":
160
+ from .windows_job import WindowsJob
161
+ try:
162
+ proc.windows_job = WindowsJob(popen)
163
+ proc.windows_job.resume(popen.pid)
164
+ except OSError as exc:
165
+ if proc.windows_job is not None:
166
+ proc.windows_job.close()
167
+ popen.kill()
168
+ popen.communicate(timeout=5)
169
+ return {"success": False, "error": f"Cannot manage the background process tree: {exc}"}
98
170
  _processes[proc.id] = proc
99
171
  threading.Thread(target=_pump, args=(proc,), daemon=True, name=f"aria-{proc.id}").start()
100
172
  return {"success": True, "data": read(proc.id, wait=wait, until=until)["data"] | {"background": True}}
@@ -147,8 +219,8 @@ def read(process_id: str, *, wait: float = 0.0, until: str | None = None) -> dic
147
219
  data = {
148
220
  "process_id": proc.id,
149
221
  "command": proc.command,
150
- "running": not proc.done,
151
- "exit_code": proc.popen.returncode if proc.done else None,
222
+ "running": proc.running,
223
+ "exit_code": proc.popen.returncode,
152
224
  "output": new[-MAX_READ:],
153
225
  }
154
226
  if clipped or missed:
@@ -176,19 +248,35 @@ def stop(process_id: str, *, grace: float = 3.0) -> dict:
176
248
  proc = _get(process_id)
177
249
  if proc is None:
178
250
  return _unknown(process_id)
179
- if proc.running:
180
- for sig, pause in ((signal.SIGTERM, grace), (signal.SIGKILL, 2.0)):
251
+ error = ""
252
+ with proc.stop_lock:
253
+ if os.name == "nt" and proc.running:
181
254
  try:
182
- os.killpg(proc.popen.pid, sig)
183
- except (ProcessLookupError, PermissionError):
184
- break
185
- try:
186
- proc.popen.wait(timeout=pause)
187
- break
188
- except subprocess.TimeoutExpired:
189
- continue
255
+ proc.windows_job.terminate()
256
+ _wait_group(proc, 2.0)
257
+ except OSError as exc:
258
+ error = str(exc)
259
+ elif os.name != "nt":
260
+ for sig, pause in ((signal.SIGTERM, min(max(float(grace), 0), 30)),
261
+ (signal.SIGKILL, 2.0)):
262
+ if not proc.running:
263
+ break
264
+ try:
265
+ os.killpg(proc.popen.pid, sig)
266
+ except ProcessLookupError:
267
+ proc.group_cleaned = True
268
+ break
269
+ except PermissionError as exc:
270
+ error = str(exc)
271
+ break
272
+ if _wait_group(proc, pause):
273
+ break
274
+ if proc.popen.poll() is not None and proc.popen.stdin:
275
+ proc.popen.stdin.close()
190
276
  result = read(proc.id, wait=0.5)
191
- result["data"]["stopped"] = True
277
+ result["data"]["stopped"] = not proc.running
278
+ if error or proc.running:
279
+ result.update(success=False, error=error or "The process group did not stop within the deadline.")
192
280
  return result
193
281
 
194
282