aria-code 0.158.0__tar.gz → 0.160.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 (919) hide show
  1. {aria_code-0.158.0/src/aria_code.egg-info → aria_code-0.160.0}/PKG-INFO +2 -2
  2. {aria_code-0.158.0 → aria_code-0.160.0}/README.md +1 -1
  3. {aria_code-0.158.0 → aria_code-0.160.0}/pyproject.toml +1 -1
  4. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/_version.py +1 -1
  5. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/app_server.py +10 -1
  6. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/chat_turn.py +5 -0
  7. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/prompts/select.py +3 -2
  8. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/providers/llm/ollama_stream.py +46 -30
  9. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/domain/backtest_engine.py +26 -26
  10. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/domain/backtest_report.py +14 -27
  11. aria_code-0.160.0/src/aria_code/domain/performance_stats.py +101 -0
  12. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/quant_engine/backtest/engine.py +8 -2
  13. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/tools/data_analysis_tools.py +26 -4
  14. {aria_code-0.158.0 → aria_code-0.160.0/src/aria_code.egg-info}/PKG-INFO +2 -2
  15. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code.egg-info/SOURCES.txt +4 -0
  16. aria_code-0.160.0/tests/test_general_turn_prompt.py +68 -0
  17. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_native_app.py +29 -0
  18. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_output_discipline_prompt.py +22 -0
  19. aria_code-0.160.0/tests/test_performance_stats.py +74 -0
  20. aria_code-0.160.0/tests/test_portfolio_periods.py +19 -0
  21. {aria_code-0.158.0 → aria_code-0.160.0}/LICENSE +0 -0
  22. {aria_code-0.158.0 → aria_code-0.160.0}/NOTICE +0 -0
  23. {aria_code-0.158.0 → aria_code-0.160.0}/setup.cfg +0 -0
  24. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/__init__.py +0 -0
  25. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/adk_apps/__init__.py +0 -0
  26. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/adk_apps/aria_code_review/__init__.py +0 -0
  27. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/adk_apps/aria_code_review/agent.py +0 -0
  28. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/adk_apps/aria_research/__init__.py +0 -0
  29. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/adk_apps/aria_research/agent.py +0 -0
  30. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/__init__.py +0 -0
  31. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/base.py +0 -0
  32. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/code_review.py +0 -0
  33. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/deep/__init__.py +0 -0
  34. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/deep/calibration_loop.py +0 -0
  35. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/deep/critic.py +0 -0
  36. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/deep/deepen.py +0 -0
  37. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/deep/models.py +0 -0
  38. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/deep/pipeline.py +0 -0
  39. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/deep/quant_fusion.py +0 -0
  40. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/deep/themes.py +0 -0
  41. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/deep/tiers.py +0 -0
  42. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/engineering/__init__.py +0 -0
  43. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/engineering/coder.py +0 -0
  44. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/engineering/tester.py +0 -0
  45. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/financial/__init__.py +0 -0
  46. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/financial/cashflow_burn.py +0 -0
  47. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/financial/catalyst.py +0 -0
  48. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/financial/corporate_finance.py +0 -0
  49. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/financial/debate.py +0 -0
  50. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/financial/earnings.py +0 -0
  51. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/financial/fundamental.py +0 -0
  52. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/financial/macro.py +0 -0
  53. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/financial/news.py +0 -0
  54. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/financial/risk.py +0 -0
  55. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/financial/sector.py +0 -0
  56. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/financial/strategist.py +0 -0
  57. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/financial/stripe_revenue.py +0 -0
  58. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/financial/synthesis.py +0 -0
  59. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/financial/technical.py +0 -0
  60. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/orchestrator.py +0 -0
  61. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/portfolio_agent.py +0 -0
  62. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/realty/__init__.py +0 -0
  63. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/realty/asset_diagnosis.py +0 -0
  64. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/realty/business_match.py +0 -0
  65. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/realty/cashflow_verify.py +0 -0
  66. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/realty/contract_rules.py +0 -0
  67. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/realty/energy_anomaly.py +0 -0
  68. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/realty/exit_settlement.py +0 -0
  69. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/realty/fulfillment_risk.py +0 -0
  70. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/realty/ops_optimize.py +0 -0
  71. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/realty/revenue_share.py +0 -0
  72. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/registry.py +0 -0
  73. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/signal_scheme.py +0 -0
  74. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/sports/__init__.py +0 -0
  75. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/sports/football_agent.py +0 -0
  76. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/supervisor.py +0 -0
  77. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/team.py +0 -0
  78. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/video/__init__.py +0 -0
  79. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/video/director.py +0 -0
  80. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/video/qa_agent.py +0 -0
  81. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/video/script_doctor.py +0 -0
  82. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/warehouse/__init__.py +0 -0
  83. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/warehouse/contracts.py +0 -0
  84. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/warehouse/dashboard.py +0 -0
  85. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/warehouse/fulfillment_leadtime.py +0 -0
  86. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/warehouse/inbound_exceptions.py +0 -0
  87. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/warehouse/inventory_health.py +0 -0
  88. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/warehouse/local_run.py +0 -0
  89. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/warehouse/local_snapshot.py +0 -0
  90. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/warehouse/logistics_cost.py +0 -0
  91. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/warehouse/logistics_sync.py +0 -0
  92. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/agents/warehouse/workflow.py +0 -0
  93. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/aliyun_data_client.py +0 -0
  94. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/README.md +0 -0
  95. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/__init__.py +0 -0
  96. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/channels/README.md +0 -0
  97. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/channels/__init__.py +0 -0
  98. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/channels/approvals.py +0 -0
  99. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/channels/conversation.py +0 -0
  100. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/channels/digest.py +0 -0
  101. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/channels/intake.py +0 -0
  102. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/channels/registry.py +0 -0
  103. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/channels/tradingview.py +0 -0
  104. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/README.md +0 -0
  105. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/__init__.py +0 -0
  106. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/_optional.py +0 -0
  107. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/bootstrap.py +0 -0
  108. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/broker_render.py +0 -0
  109. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/codegen_paths.py +0 -0
  110. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/__init__.py +0 -0
  111. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/_business_render.py +0 -0
  112. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/_ui.py +0 -0
  113. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/analysis_cmds.py +0 -0
  114. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/ashare_prediction_cmds.py +0 -0
  115. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/auth_cmds.py +0 -0
  116. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/backtest_cmds.py +0 -0
  117. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/broker_cmds.py +0 -0
  118. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/business_workflow_cmds.py +0 -0
  119. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/canvas_cmds.py +0 -0
  120. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/catalog.py +0 -0
  121. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/core_cmds.py +0 -0
  122. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/data_cmds.py +0 -0
  123. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/diagnostic_cmds.py +0 -0
  124. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/diagnostic_ops_cmds.py +0 -0
  125. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/file_cmds.py +0 -0
  126. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/finance_service_cmds.py +0 -0
  127. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/fx_commodity_cmds.py +0 -0
  128. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/market.py +0 -0
  129. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/market_cmds.py +0 -0
  130. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/market_context.py +0 -0
  131. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/market_render.py +0 -0
  132. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/model_cmds.py +0 -0
  133. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/ops_cmds.py +0 -0
  134. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/orchestrator_cmds.py +0 -0
  135. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/pdf_export_cmds.py +0 -0
  136. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/portfolio_cmds.py +0 -0
  137. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/report.py +0 -0
  138. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/scaffold_templates.py +0 -0
  139. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/session_cmds.py +0 -0
  140. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/session_ux_cmds.py +0 -0
  141. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/team.py +0 -0
  142. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/team_render.py +0 -0
  143. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/ui_cmds.py +0 -0
  144. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/warehouse_cmds.py +0 -0
  145. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/workflow_cmds.py +0 -0
  146. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/commands/workspace_cmds.py +0 -0
  147. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/config_paths.py +0 -0
  148. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/config_store.py +0 -0
  149. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/constants.py +0 -0
  150. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/context.py +0 -0
  151. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/conversation_policy.py +0 -0
  152. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/deterministic.py +0 -0
  153. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/direct.py +0 -0
  154. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/earnings_view.py +0 -0
  155. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/exec_events.py +0 -0
  156. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/finance_service_catalog.py +0 -0
  157. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/football_reports.py +0 -0
  158. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/github_app_auth.py +0 -0
  159. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/google_login.py +0 -0
  160. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/handlers/__init__.py +0 -0
  161. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/handlers/broker_handlers.py +0 -0
  162. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/handlers/chart_handlers.py +0 -0
  163. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/handlers/market_handlers.py +0 -0
  164. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/handlers/realty_handlers.py +0 -0
  165. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/handlers/sports_handlers.py +0 -0
  166. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/handlers/strategy_advice.py +0 -0
  167. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/headless.py +0 -0
  168. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/helpers.py +0 -0
  169. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/hooks.py +0 -0
  170. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/i18n.py +0 -0
  171. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/intent.py +0 -0
  172. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/intent_router.py +0 -0
  173. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/intent_signals.py +0 -0
  174. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/lifecycle_hooks.py +0 -0
  175. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/local_tool_schemas.py +0 -0
  176. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/main.py +0 -0
  177. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/market_hours.py +0 -0
  178. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/market_metadata.py +0 -0
  179. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/market_universe.py +0 -0
  180. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/message_processing.py +0 -0
  181. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/mixin_binding.py +0 -0
  182. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/model_catalog.py +0 -0
  183. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/model_probe.py +0 -0
  184. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/model_retirement.py +0 -0
  185. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/native_branding.py +0 -0
  186. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/native_bridge.py +0 -0
  187. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/native_entry.py +0 -0
  188. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/pdf_report.py +0 -0
  189. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/plan_mode.py +0 -0
  190. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/plotly_html.py +0 -0
  191. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/prediction_feedback.py +0 -0
  192. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/preflight.py +0 -0
  193. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/project_aria.py +0 -0
  194. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/prompt_assembly.py +0 -0
  195. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/prompts/__init__.py +0 -0
  196. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/prompts/coding.py +0 -0
  197. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/prompts/system_prompts.py +0 -0
  198. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/prompts/ui.py +0 -0
  199. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/provider_endpoints.py +0 -0
  200. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/provider_keys.py +0 -0
  201. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/providers/__init__.py +0 -0
  202. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/providers/base.py +0 -0
  203. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/providers/chat_routing.py +0 -0
  204. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/providers/collaboration.py +0 -0
  205. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/providers/llm/__init__.py +0 -0
  206. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/providers/llm/offline_responses.py +0 -0
  207. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/providers/llm/response_cache.py +0 -0
  208. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/providers/llm/sse_stream.py +0 -0
  209. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/providers/runtime_bridge.py +0 -0
  210. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/providers/vertexai_stream.py +0 -0
  211. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/release_download.py +0 -0
  212. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/review_runner.py +0 -0
  213. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/runtime_consumer.py +0 -0
  214. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/sandbox.py +0 -0
  215. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/session_export.py +0 -0
  216. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/session_jsonl.py +0 -0
  217. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/session_store.py +0 -0
  218. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/skills_catalog.py +0 -0
  219. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/task_isolation.py +0 -0
  220. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/terminal_chrome.py +0 -0
  221. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/todo_tracker.py +0 -0
  222. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/tool_executor.py +0 -0
  223. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/tool_registry.py +0 -0
  224. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/tool_scope.py +0 -0
  225. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/tools/__init__.py +0 -0
  226. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/tools/context.py +0 -0
  227. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/tools/file_tools.py +0 -0
  228. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/tools/market_tools.py +0 -0
  229. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/tools/notebook_tools.py +0 -0
  230. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/tools/system_tools.py +0 -0
  231. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/tools/write_tools.py +0 -0
  232. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/tradingview_bridge.py +0 -0
  233. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/transactions.py +0 -0
  234. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/turn_planning.py +0 -0
  235. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/update_check.py +0 -0
  236. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/updater.py +0 -0
  237. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/utils/__init__.py +0 -0
  238. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/utils/market_detect.py +0 -0
  239. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/workflow_runner.py +0 -0
  240. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/cli/workspace_route.py +0 -0
  241. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/daemon/README.md +0 -0
  242. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/vscode/README.md +0 -0
  243. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/apps/vscode/package.json +0 -0
  244. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/aria_cli.py +0 -0
  245. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/aria_daemon.py +0 -0
  246. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/aria_feishu_bot.py +0 -0
  247. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/aria_mcp_server.py +0 -0
  248. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/aria_relay_client.py +0 -0
  249. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/aria_relay_server.py +0 -0
  250. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/aria_telegram_bot.py +0 -0
  251. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/ariarc.py +0 -0
  252. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/artifacts.py +0 -0
  253. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/backtest_engine.py +0 -0
  254. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/backtest_report.py +0 -0
  255. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/brokers/__init__.py +0 -0
  256. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/brokers/automation.py +0 -0
  257. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/brokers/base.py +0 -0
  258. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/brokers/capabilities.py +0 -0
  259. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/brokers/cn/__init__.py +0 -0
  260. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/brokers/cn/easytrader_broker.py +0 -0
  261. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/brokers/cn/futu_broker.py +0 -0
  262. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/brokers/cn/longbridge_broker.py +0 -0
  263. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/brokers/cn/tiger_broker.py +0 -0
  264. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/brokers/cn/xtquant_broker.py +0 -0
  265. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/brokers/config.py +0 -0
  266. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/brokers/intl/__init__.py +0 -0
  267. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/brokers/intl/alpaca_broker.py +0 -0
  268. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/brokers/intl/ibkr_broker.py +0 -0
  269. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/brokers/intl/trading212_broker.py +0 -0
  270. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/brokers/intl/webull_broker.py +0 -0
  271. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/brokers/paper_broker.py +0 -0
  272. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/brokers/planning.py +0 -0
  273. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/brokers/registry.py +0 -0
  274. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/brokers/trading.py +0 -0
  275. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/canva_client.py +0 -0
  276. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/change_store.py +0 -0
  277. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/clients/__init__.py +0 -0
  278. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/clients/aliyun_data_client.py +0 -0
  279. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/clients/aria_relay_client.py +0 -0
  280. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/clients/canva_client.py +0 -0
  281. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/clients/figma_client.py +0 -0
  282. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/clients/football_data_client.py +0 -0
  283. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/clients/kling_video_client.py +0 -0
  284. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/clients/market_data_client.py +0 -0
  285. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/clients/openai_image_client.py +0 -0
  286. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/clients/runway_video_client.py +0 -0
  287. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/clients/warehouse_erp_client.py +0 -0
  288. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/cloud_memory.py +0 -0
  289. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/command_safety.py +0 -0
  290. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/computer_use_tools.py +0 -0
  291. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/dashboard_generator.py +0 -0
  292. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/data_analysis_tools.py +0 -0
  293. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/data_cleaner.py +0 -0
  294. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/data_service.py +0 -0
  295. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/datasources/__init__.py +0 -0
  296. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/datasources/base.py +0 -0
  297. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/datasources/router.py +0 -0
  298. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/datasources/sources/__init__.py +0 -0
  299. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/datasources/sources/akshare_source.py +0 -0
  300. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/datasources/sources/alpha_vantage_source.py +0 -0
  301. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/datasources/sources/edgar_source.py +0 -0
  302. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/datasources/sources/finnhub_source.py +0 -0
  303. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/datasources/sources/fred_source.py +0 -0
  304. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/datasources/sources/tushare_source.py +0 -0
  305. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/datasources/sources/web_scraper_source.py +0 -0
  306. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/datasources/sources/world_bank_source.py +0 -0
  307. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/datasources/sources/yfinance_source.py +0 -0
  308. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/demo_player.py +0 -0
  309. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/doctor.py +0 -0
  310. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/domain/__init__.py +0 -0
  311. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/domain/finance_formulas.py +0 -0
  312. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/domain/portfolio_ledger.py +0 -0
  313. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/domain/strategy_vault.py +0 -0
  314. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/evals/__init__.py +0 -0
  315. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/evals/behavior.py +0 -0
  316. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/evals/gap.py +0 -0
  317. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/evals/harness.py +0 -0
  318. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/evals/review_probe.py +0 -0
  319. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/evals/runner.py +0 -0
  320. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/evals/summary.py +0 -0
  321. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/external_agent_runner.py +0 -0
  322. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/figma_client.py +0 -0
  323. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/file_analysis_tools.py +0 -0
  324. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/finance_formulas.py +0 -0
  325. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/football_data_client.py +0 -0
  326. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/image_gen_tools.py +0 -0
  327. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/intent_classifier.py +0 -0
  328. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/kling_video_client.py +0 -0
  329. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/licensing.py +0 -0
  330. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/local_finance_tools.py +0 -0
  331. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/local_image_provider.py +0 -0
  332. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/local_llm_provider.py +0 -0
  333. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/macro_tools.py +0 -0
  334. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/markdown_pdf.py +0 -0
  335. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/market_data_client.py +0 -0
  336. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/mcp_client.py +0 -0
  337. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/memory_manager.py +0 -0
  338. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/model_capability.py +0 -0
  339. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/notification_tools.py +0 -0
  340. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/openai_image_client.py +0 -0
  341. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/__init__.py +0 -0
  342. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/adk_bridge/__init__.py +0 -0
  343. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/adk_bridge/code_review_tools.py +0 -0
  344. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/adk_bridge/market_tools.py +0 -0
  345. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_agents/__init__.py +0 -0
  346. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_agents/manifest.py +0 -0
  347. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_core/__init__.py +0 -0
  348. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_core/architecture.py +0 -0
  349. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_core/export.py +0 -0
  350. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_core/manifest.py +0 -0
  351. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_core/paths.py +0 -0
  352. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_core/secure_file.py +0 -0
  353. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_infra/__init__.py +0 -0
  354. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_infra/arthera.py +0 -0
  355. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_infra/doctor.py +0 -0
  356. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_infra/product.py +0 -0
  357. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_mcp/__init__.py +0 -0
  358. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_mcp/bridge.py +0 -0
  359. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_mcp/circuit.py +0 -0
  360. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_mcp/config.py +0 -0
  361. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_mcp/installer.py +0 -0
  362. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_mcp/server.py +0 -0
  363. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_mcp/tools.py +0 -0
  364. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_sdk/__init__.py +0 -0
  365. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_sdk/client.py +0 -0
  366. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_sdk/providers.py +0 -0
  367. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_sdk/streaming.py +0 -0
  368. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_sdk/types.py +0 -0
  369. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_services/__init__.py +0 -0
  370. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_services/cache.py +0 -0
  371. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_services/context.py +0 -0
  372. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_services/context_checkpoints.py +0 -0
  373. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_services/data.py +0 -0
  374. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_services/provider_health.py +0 -0
  375. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_services/references.py +0 -0
  376. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_services/registry.py +0 -0
  377. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_services/research_protocol.py +0 -0
  378. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_services/research_quality.py +0 -0
  379. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_services/settings.py +0 -0
  380. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_services/usage.py +0 -0
  381. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_skills/__init__.py +0 -0
  382. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_skills/catalog.py +0 -0
  383. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_skills/loader.py +0 -0
  384. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_skills/registry.py +0 -0
  385. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_tools/__init__.py +0 -0
  386. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_tools/financial/__init__.py +0 -0
  387. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_tools/financial/_paths.py +0 -0
  388. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_tools/financial/compliance.py +0 -0
  389. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_tools/financial/factors.py +0 -0
  390. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_tools/financial/risk_tools.py +0 -0
  391. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_tools/financial/strategy.py +0 -0
  392. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/aria_tools/registry.py +0 -0
  393. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/quant_engine/__init__.py +0 -0
  394. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/quant_engine/_namespace.py +0 -0
  395. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/quant_engine/backtest/__init__.py +0 -0
  396. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/quant_engine/backtest/core.py +0 -0
  397. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/quant_engine/portfolio/__init__.py +0 -0
  398. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/quant_engine/portfolio/optimizer.py +0 -0
  399. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/quant_engine/sports/__init__.py +0 -0
  400. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/quant_engine/sports/calibrator.py +0 -0
  401. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/quant_engine/sports/dixon_coles.py +0 -0
  402. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/quant_engine/sports/elo.py +0 -0
  403. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/quant_engine/sports/form.py +0 -0
  404. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/quant_engine/sports/h2h.py +0 -0
  405. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/quant_engine/sports/ml_model.py +0 -0
  406. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/quant_engine/sports/predictor.py +0 -0
  407. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/quant_engine/sports/tracker.py +0 -0
  408. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/quant_engine/stochastic/__init__.py +0 -0
  409. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/quant_engine/stochastic/gbm_enhanced.py +0 -0
  410. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/quant_engine/stochastic/ito_calculus.py +0 -0
  411. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/quant_engine/stochastic/kelly_criterion.py +0 -0
  412. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/quant_engine/stochastic/monte_carlo_advanced.py +0 -0
  413. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/quant_engine/stochastic/options_pricing.py +0 -0
  414. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packages/quant_engine/stochastic/stochastic_processes.py +0 -0
  415. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packs/__init__.py +0 -0
  416. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packs/base.py +0 -0
  417. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packs/finance/__init__.py +0 -0
  418. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packs/logistics/__init__.py +0 -0
  419. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packs/payments/__init__.py +0 -0
  420. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packs/realty/__init__.py +0 -0
  421. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packs/registry.py +0 -0
  422. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/packs/rules.py +0 -0
  423. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/plan_utils.py +0 -0
  424. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/plugin_loader.py +0 -0
  425. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/portfolio_ledger.py +0 -0
  426. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/preview_server.py +0 -0
  427. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/privacy/__init__.py +0 -0
  428. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/privacy/feedback.py +0 -0
  429. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/project_review.py +0 -0
  430. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/project_review_api.py +0 -0
  431. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/project_review_server.py +0 -0
  432. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/project_tools.py +0 -0
  433. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/providers/__init__.py +0 -0
  434. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/providers/google_video_provider.py +0 -0
  435. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/providers/llm/__init__.py +0 -0
  436. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/providers/llm/anthropic.py +0 -0
  437. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/providers/llm/arthera_gateway.py +0 -0
  438. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/providers/llm/autoconfig.py +0 -0
  439. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/providers/llm/base.py +0 -0
  440. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/providers/llm/custom.py +0 -0
  441. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/providers/llm/ollama.py +0 -0
  442. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/providers/llm/openai_compat.py +0 -0
  443. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/providers/llm/registry.py +0 -0
  444. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/providers/local_image_provider.py +0 -0
  445. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/providers/local_llm_provider.py +0 -0
  446. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/providers/tool_messages.py +0 -0
  447. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/realty_data_tools.py +0 -0
  448. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/relay_store.py +0 -0
  449. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/report_exporters.py +0 -0
  450. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/report_generator.py +0 -0
  451. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/review_service.py +0 -0
  452. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/__init__.py +0 -0
  453. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/acceptance.py +0 -0
  454. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/agent_loop.py +0 -0
  455. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/approval.py +0 -0
  456. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/baseline.py +0 -0
  457. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/budget.py +0 -0
  458. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/checkpoints.py +0 -0
  459. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/contract.py +0 -0
  460. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/crash_report.py +0 -0
  461. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/delivery.py +0 -0
  462. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/events.py +0 -0
  463. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/gateway.py +0 -0
  464. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/lsp.py +0 -0
  465. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/native_index.py +0 -0
  466. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/orchestrator.py +0 -0
  467. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/processes.py +0 -0
  468. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/project_graph.py +0 -0
  469. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/repo_map.py +0 -0
  470. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/review.py +0 -0
  471. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/run_state.py +0 -0
  472. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/run_store.py +0 -0
  473. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/self_healing.py +0 -0
  474. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/semantic_diff.py +0 -0
  475. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/subagent.py +0 -0
  476. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/symbol_edit.py +0 -0
  477. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/task_ledger.py +0 -0
  478. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/task_orchestrator.py +0 -0
  479. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/task_worktree.py +0 -0
  480. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/tool_executor.py +0 -0
  481. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/tool_policy.py +0 -0
  482. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/transactions.py +0 -0
  483. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/windows_job.py +0 -0
  484. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/workflows.py +0 -0
  485. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runtime/worktrees.py +0 -0
  486. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/runway_video_client.py +0 -0
  487. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/safety/__init__.py +0 -0
  488. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/safety/client_isolation.py +0 -0
  489. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/safety/permissions.py +0 -0
  490. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/safety/risk.py +0 -0
  491. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/safety/sandbox.py +0 -0
  492. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/safety/service.py +0 -0
  493. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/setup_wizard.py +0 -0
  494. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/spreadsheet_tools.py +0 -0
  495. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/strategy_vault.py +0 -0
  496. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/tools/__init__.py +0 -0
  497. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/tools/artifact_tools.py +0 -0
  498. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/tools/broker_tools.py +0 -0
  499. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/tools/build_quant_engine.py +0 -0
  500. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/tools/code_audit_tools.py +0 -0
  501. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/tools/computer_use_tools.py +0 -0
  502. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/tools/enterprise_finance_tools.py +0 -0
  503. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/tools/extended_tools.py +0 -0
  504. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/tools/file_analysis_tools.py +0 -0
  505. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/tools/image_gen_tools.py +0 -0
  506. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/tools/local_finance_tools.py +0 -0
  507. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/tools/logistics_carriers.py +0 -0
  508. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/tools/logistics_inventory.py +0 -0
  509. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/tools/logistics_io.py +0 -0
  510. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/tools/logistics_tenancy.py +0 -0
  511. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/tools/logistics_tools.py +0 -0
  512. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/tools/macro_tools.py +0 -0
  513. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/tools/notification_tools.py +0 -0
  514. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/tools/project_tools.py +0 -0
  515. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/tools/realty_data_tools.py +0 -0
  516. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/tools/spreadsheet_tools.py +0 -0
  517. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/tools/stripe_tools.py +0 -0
  518. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/tools/video_tools.py +0 -0
  519. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/training/__init__.py +0 -0
  520. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/training/compare.py +0 -0
  521. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/training/sft_dataset.py +0 -0
  522. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/ui/__init__.py +0 -0
  523. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/ui/banner.py +0 -0
  524. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/ui/completer.py +0 -0
  525. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/ui/console.py +0 -0
  526. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/ui/input_box.py +0 -0
  527. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/ui/mentions.py +0 -0
  528. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/ui/picker.py +0 -0
  529. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/ui/render/__init__.py +0 -0
  530. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/ui/render/actions.py +0 -0
  531. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/ui/render/finance.py +0 -0
  532. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/ui/render/market.py +0 -0
  533. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/ui/render/output.py +0 -0
  534. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/ui/render/responsive.py +0 -0
  535. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/ui/render/team.py +0 -0
  536. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/ui/robot.py +0 -0
  537. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/ui/startup_dashboard.py +0 -0
  538. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/utils/vscode_uri.py +0 -0
  539. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/video_analysis.py +0 -0
  540. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/video_editor.py +0 -0
  541. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/video_workflow/__init__.py +0 -0
  542. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/video_workflow/__main__.py +0 -0
  543. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/video_workflow/engines/__init__.py +0 -0
  544. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/video_workflow/engines/base.py +0 -0
  545. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/video_workflow/engines/custom_model.py +0 -0
  546. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/video_workflow/engines/google_veo.py +0 -0
  547. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/video_workflow/engines/local_engine.py +0 -0
  548. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/video_workflow/engines/registry.py +0 -0
  549. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/video_workflow/google_models.py +0 -0
  550. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/video_workflow/music/__init__.py +0 -0
  551. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/video_workflow/music/foley_service.py +0 -0
  552. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/video_workflow/music/service.py +0 -0
  553. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/video_workflow/pipeline.py +0 -0
  554. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/video_workflow/plan.py +0 -0
  555. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/video_workflow/session.py +0 -0
  556. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/workspace/__init__.py +0 -0
  557. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/workspace/files.py +0 -0
  558. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/workspace/verify.py +0 -0
  559. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/workspace_changes.py +0 -0
  560. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/workspace_context.py +0 -0
  561. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/workspace_service.py +0 -0
  562. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code/workspace_tools.py +0 -0
  563. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code.egg-info/dependency_links.txt +0 -0
  564. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code.egg-info/entry_points.txt +0 -0
  565. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code.egg-info/requires.txt +0 -0
  566. {aria_code-0.158.0 → aria_code-0.160.0}/src/aria_code.egg-info/top_level.txt +0 -0
  567. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_action_view.py +0 -0
  568. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_adk_market_tools.py +0 -0
  569. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_agent_key_points_language.py +0 -0
  570. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_agent_team_fallback.py +0 -0
  571. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_analyze_file_tool.py +0 -0
  572. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_architecture_ledger_is_true.py +0 -0
  573. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_architecture_report.py +0 -0
  574. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_aria_cli_core.py +0 -0
  575. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_aria_mcp_server.py +0 -0
  576. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_aria_sdk.py +0 -0
  577. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_arthera_gateway_provider.py +0 -0
  578. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_artifact_publishing.py +0 -0
  579. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_artifacts_and_reports.py +0 -0
  580. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_ashare_prediction_cmds.py +0 -0
  581. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_background_processes.py +0 -0
  582. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_backtest_cmds.py +0 -0
  583. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_backtest_engine.py +0 -0
  584. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_backtest_report.py +0 -0
  585. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_backtest_runs_what_it_names.py +0 -0
  586. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_baseline.py +0 -0
  587. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_binary_bundles_runtime_imports.py +0 -0
  588. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_broken_akshare_is_optional.py +0 -0
  589. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_broker_automation.py +0 -0
  590. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_broker_chat_confirm_gate.py +0 -0
  591. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_broker_planning.py +0 -0
  592. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_broker_safety.py +0 -0
  593. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_broker_tools.py +0 -0
  594. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_budget.py +0 -0
  595. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_business_workflow_cmds.py +0 -0
  596. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_callback_provider_cleanup.py +0 -0
  597. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_canva_client.py +0 -0
  598. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_canvas_cmds.py +0 -0
  599. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_card_approvals.py +0 -0
  600. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_change_contract.py +0 -0
  601. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_channel_intake.py +0 -0
  602. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_channels.py +0 -0
  603. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_chart_handlers.py +0 -0
  604. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_chat_bots_fail_closed.py +0 -0
  605. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_chat_routing.py +0 -0
  606. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_checkpoints_since.py +0 -0
  607. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_ci_security_workflow.py +0 -0
  608. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_cli_app_split.py +0 -0
  609. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_cli_bootstrap.py +0 -0
  610. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_cli_config_store.py +0 -0
  611. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_cli_lifecycle_hooks.py +0 -0
  612. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_cli_runtime_consumer.py +0 -0
  613. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_cli_tool_executor_module.py +0 -0
  614. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_cli_updater.py +0 -0
  615. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_client_isolation_guard.py +0 -0
  616. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_cloud_memory.py +0 -0
  617. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_code_audit_tools.py +0 -0
  618. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_code_review_agent.py +0 -0
  619. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_codegen_output.py +0 -0
  620. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_coder_tester_self_healing.py +0 -0
  621. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_coder_tool_safety.py +0 -0
  622. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_collaboration.py +0 -0
  623. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_command_loggers.py +0 -0
  624. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_command_safety.py +0 -0
  625. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_compare_strategies.py +0 -0
  626. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_completions_builder.py +0 -0
  627. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_config_paths.py +0 -0
  628. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_configured_provider.py +0 -0
  629. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_container_entrypoint.py +0 -0
  630. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_container_entrypoints.py +0 -0
  631. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_context_checkpoints.py +0 -0
  632. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_context_references.py +0 -0
  633. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_context_service.py +0 -0
  634. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_conversation_core.py +0 -0
  635. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_conversation_policy.py +0 -0
  636. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_crash_report.py +0 -0
  637. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_credential_file_permissions.py +0 -0
  638. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_custom_providers.py +0 -0
  639. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_daemon_gateway_config.py +0 -0
  640. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_dashboard_generator.py +0 -0
  641. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_data_service.py +0 -0
  642. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_data_service_imports.py +0 -0
  643. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_data_without_model.py +0 -0
  644. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_datasource_routing.py +0 -0
  645. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_deep_analysis.py +0 -0
  646. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_degrades_without_quant_engine.py +0 -0
  647. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_delivery_report.py +0 -0
  648. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_dispatcher_pins_match_the_release.py +0 -0
  649. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_doctor.py +0 -0
  650. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_doctor_describes_the_current_install.py +0 -0
  651. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_doctor_npm_scope.py +0 -0
  652. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_doctor_sandbox.py +0 -0
  653. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_edit_and_command_safety.py +0 -0
  654. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_engine_boundary.py +0 -0
  655. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_english_output_group.py +0 -0
  656. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_enterprise_tool_honesty.py +0 -0
  657. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_env_switch_docs.py +0 -0
  658. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_eval_behavior.py +0 -0
  659. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_eval_hard_suite.py +0 -0
  660. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_eval_holdout.py +0 -0
  661. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_eval_summary.py +0 -0
  662. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_eval_task_bank.py +0 -0
  663. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_eval_trajectories.py +0 -0
  664. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_evals_harness.py +0 -0
  665. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_event_import_roots.py +0 -0
  666. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_exec_events.py +0 -0
  667. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_extended_tools.py +0 -0
  668. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_feishu_swarm_config.py +0 -0
  669. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_file_links.py +0 -0
  670. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_finalize_release.py +0 -0
  671. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_finance_renderers.py +0 -0
  672. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_finance_service_catalog.py +0 -0
  673. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_first_run_output.py +0 -0
  674. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_first_run_works.py +0 -0
  675. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_football_agent.py +0 -0
  676. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_football_prediction_output.py +0 -0
  677. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_frozen_module_aliases.py +0 -0
  678. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_gemini_retirement.py +0 -0
  679. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_google_cloud_models.py +0 -0
  680. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_google_cloud_routing.py +0 -0
  681. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_google_login.py +0 -0
  682. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_google_search_provider.py +0 -0
  683. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_headless_command_approval.py +0 -0
  684. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_headless_is_agentic.py +0 -0
  685. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_honest_surfaces.py +0 -0
  686. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_image_gen_tools.py +0 -0
  687. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_image_inputs.py +0 -0
  688. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_import_aliasing.py +0 -0
  689. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_import_graph_budget.py +0 -0
  690. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_intent_router.py +0 -0
  691. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_intent_signals.py +0 -0
  692. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_kling_video_client.py +0 -0
  693. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_lazy_rebind.py +0 -0
  694. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_legacy_module_imports.py +0 -0
  695. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_license_consistency.py +0 -0
  696. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_licensing.py +0 -0
  697. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_linux_sandbox_integration.py +0 -0
  698. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_local_image_provider.py +0 -0
  699. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_local_workspace_execution.py +0 -0
  700. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_logistics_3pl.py +0 -0
  701. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_logistics_and_finance_agents.py +0 -0
  702. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_lsp.py +0 -0
  703. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_markdown_pdf.py +0 -0
  704. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_market_answers_in_english.py +0 -0
  705. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_market_data_client.py +0 -0
  706. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_market_history_inheritance.py +0 -0
  707. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_market_history_tool.py +0 -0
  708. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_market_hours.py +0 -0
  709. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_market_questions_on_backend.py +0 -0
  710. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_market_symbol_extraction.py +0 -0
  711. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_market_universe.py +0 -0
  712. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_mcp_circuit.py +0 -0
  713. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_mcp_client.py +0 -0
  714. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_mentions.py +0 -0
  715. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_model_capability_registry.py +0 -0
  716. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_model_choice_is_the_users.py +0 -0
  717. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_model_number_selection.py +0 -0
  718. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_model_probe.py +0 -0
  719. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_model_selection_state.py +0 -0
  720. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_narrow_chinese_output.py +0 -0
  721. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_native_binary_entrypoints.py +0 -0
  722. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_native_branding.py +0 -0
  723. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_native_bridge.py +0 -0
  724. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_native_checkpoints.py +0 -0
  725. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_native_entry.py +0 -0
  726. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_native_eval_trajectories.py +0 -0
  727. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_native_go_acceptance.py +0 -0
  728. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_native_go_app.py +0 -0
  729. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_native_go_bridge.py +0 -0
  730. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_native_go_contract.py +0 -0
  731. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_native_go_delivery.py +0 -0
  732. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_native_go_providers.py +0 -0
  733. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_native_go_review.py +0 -0
  734. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_native_go_risk.py +0 -0
  735. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_native_go_stream.py +0 -0
  736. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_native_index.py +0 -0
  737. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_native_installer.py +0 -0
  738. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_native_runtime_domain.py +0 -0
  739. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_native_training_compare.py +0 -0
  740. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_native_training_dataset.py +0 -0
  741. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_natural_language_routing.py +0 -0
  742. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_new_modules.py +0 -0
  743. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_no_hardcoded_developer_paths.py +0 -0
  744. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_no_tools_route.py +0 -0
  745. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_no_uncommitted_imports.py +0 -0
  746. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_numeric_listings.py +0 -0
  747. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_ollama_stream_imports.py +0 -0
  748. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_ollama_stream_tools.py +0 -0
  749. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_openai_image_client.py +0 -0
  750. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_operations_suite.py +0 -0
  751. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_os_sandbox.py +0 -0
  752. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_output_rendering.py +0 -0
  753. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_packages_facade.py +0 -0
  754. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_packaging_constraints.py +0 -0
  755. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_packaging_manifest.py +0 -0
  756. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_packs_domains.py +0 -0
  757. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_pdf_report.py +0 -0
  758. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_pick_best_installed_model.py +0 -0
  759. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_plan_mode.py +0 -0
  760. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_plan_schema.py +0 -0
  761. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_plan_without_material.py +0 -0
  762. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_platform_package_assembly.py +0 -0
  763. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_platform_packages.py +0 -0
  764. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_platform_publish.py +0 -0
  765. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_plotly_html_output.py +0 -0
  766. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_portfolio_language.py +0 -0
  767. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_portfolio_ledger.py +0 -0
  768. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_post_turn_context_decision.py +0 -0
  769. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_preflight.py +0 -0
  770. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_preview_server.py +0 -0
  771. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_privacy_feedback.py +0 -0
  772. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_project_aria.py +0 -0
  773. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_project_context_files.py +0 -0
  774. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_project_graph.py +0 -0
  775. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_project_review.py +0 -0
  776. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_project_review_api.py +0 -0
  777. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_prompt_assembly.py +0 -0
  778. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_prompt_dates.py +0 -0
  779. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_prompt_selection.py +0 -0
  780. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_provider_autoconfig.py +0 -0
  781. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_provider_error_classification.py +0 -0
  782. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_provider_error_messages.py +0 -0
  783. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_provider_integration.py +0 -0
  784. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_provider_project_config.py +0 -0
  785. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_provider_registry.py +0 -0
  786. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_public_service_status.py +0 -0
  787. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_quant_engine_namespace.py +0 -0
  788. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_rebind_contract.py +0 -0
  789. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_rebind_namespace_contract.py +0 -0
  790. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_relay_client_credentials.py +0 -0
  791. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_relay_contract.py +0 -0
  792. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_relay_event_verification.py +0 -0
  793. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_relay_reliability.py +0 -0
  794. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_relay_sends_for_clients.py +0 -0
  795. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_relay_store.py +0 -0
  796. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_relay_url.py +0 -0
  797. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_release_badges.py +0 -0
  798. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_release_chain.py +0 -0
  799. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_release_commit_identity.py +0 -0
  800. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_release_download.py +0 -0
  801. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_release_push_is_atomic.py +0 -0
  802. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_release_reaches_the_registries.py +0 -0
  803. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_release_verification_waits.py +0 -0
  804. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_release_workflow_permissions.py +0 -0
  805. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_report_charts.py +0 -0
  806. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_report_generator.py +0 -0
  807. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_report_prompt_language.py +0 -0
  808. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_research_protocol.py +0 -0
  809. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_research_quality.py +0 -0
  810. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_responsive_rendering.py +0 -0
  811. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_review_gate.py +0 -0
  812. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_review_service.py +0 -0
  813. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_risk_approval.py +0 -0
  814. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_risk_assessment.py +0 -0
  815. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_risk_earnings_ops.py +0 -0
  816. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_robot_artwork.py +0 -0
  817. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_root_module_budget.py +0 -0
  818. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_rsi_without_pandas_ta.py +0 -0
  819. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_run_store_redaction.py +0 -0
  820. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_runtime_acceptance.py +0 -0
  821. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_runtime_agent_loop.py +0 -0
  822. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_runtime_approval.py +0 -0
  823. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_runtime_bridge.py +0 -0
  824. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_runtime_bridge_fallback.py +0 -0
  825. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_runtime_checkpoints.py +0 -0
  826. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_runtime_event_identity.py +0 -0
  827. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_runtime_gateway.py +0 -0
  828. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_runtime_repo_map.py +0 -0
  829. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_runtime_run_store.py +0 -0
  830. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_runtime_tool_executor.py +0 -0
  831. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_runtime_worktrees.py +0 -0
  832. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_runway_video_client.py +0 -0
  833. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_rust_cli.py +0 -0
  834. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_rust_state.py +0 -0
  835. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_rust_stream.py +0 -0
  836. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_safety_permissions.py +0 -0
  837. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_safety_service.py +0 -0
  838. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_safety_service_adoption.py +0 -0
  839. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_semantic_diff.py +0 -0
  840. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_service_diagnostics_security.py +0 -0
  841. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_session_search.py +0 -0
  842. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_settings_service.py +0 -0
  843. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_shell_commands_as_written.py +0 -0
  844. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_shipper_digest.py +0 -0
  845. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_single_import_root.py +0 -0
  846. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_skill_agent_binding.py +0 -0
  847. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_skill_catalog.py +0 -0
  848. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_skill_loader.py +0 -0
  849. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_slash_popup.py +0 -0
  850. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_spreadsheet_tools.py +0 -0
  851. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_sse_http_roundtrip.py +0 -0
  852. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_sse_stream_contract.py +0 -0
  853. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_startup_dashboard.py +0 -0
  854. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_startup_keeps_cloud_model.py +0 -0
  855. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_startup_latency.py +0 -0
  856. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_status_language.py +0 -0
  857. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_streaming_pipeline.py +0 -0
  858. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_stripe_agent.py +0 -0
  859. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_subagent.py +0 -0
  860. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_subagent_workspace.py +0 -0
  861. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_supervisor_routing.py +0 -0
  862. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_symbol_edit.py +0 -0
  863. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_system_prompts.py +0 -0
  864. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_system_tools_output.py +0 -0
  865. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_task_isolation_turn.py +0 -0
  866. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_task_orchestrator.py +0 -0
  867. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_task_restore_startup.py +0 -0
  868. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_task_worktree.py +0 -0
  869. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_team_analysts.py +0 -0
  870. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_team_synthesis.py +0 -0
  871. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_terminal_mixins.py +0 -0
  872. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_terminal_snapshots.py +0 -0
  873. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_tls_trust_store.py +0 -0
  874. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_tool_policy.py +0 -0
  875. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_tool_rounds_on_openai_apis.py +0 -0
  876. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_tool_scope.py +0 -0
  877. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_tool_step_output.py +0 -0
  878. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_trading_service.py +0 -0
  879. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_tradingview_bridge.py +0 -0
  880. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_training_pipeline.py +0 -0
  881. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_transactions.py +0 -0
  882. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_transactions_turn.py +0 -0
  883. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_turn_planning.py +0 -0
  884. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_ui_completer_references.py +0 -0
  885. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_ui_console_theme.py +0 -0
  886. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_ui_input_box.py +0 -0
  887. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_ui_language_and_model.py +0 -0
  888. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_ui_robot_banner.py +0 -0
  889. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_update_health_routes.py +0 -0
  890. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_verification_hint.py +0 -0
  891. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_verification_policy.py +0 -0
  892. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_verification_runner_selection.py +0 -0
  893. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_version_consistency.py +0 -0
  894. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_version_counter.py +0 -0
  895. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_vertex_busy_retry.py +0 -0
  896. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_vertex_empty_rounds.py +0 -0
  897. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_vertex_models.py +0 -0
  898. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_vertex_project.py +0 -0
  899. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_vertexai_tool_history.py +0 -0
  900. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_video_analysis.py +0 -0
  901. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_video_director.py +0 -0
  902. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_video_editor.py +0 -0
  903. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_video_engines.py +0 -0
  904. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_video_multi_agent.py +0 -0
  905. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_video_session.py +0 -0
  906. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_vscode_mcp.py +0 -0
  907. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_warehouse_agents.py +0 -0
  908. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_warehouse_cli_registration.py +0 -0
  909. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_warehouse_erp_client.py +0 -0
  910. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_warehouse_workflow.py +0 -0
  911. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_wheel_is_installable.py +0 -0
  912. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_workflows.py +0 -0
  913. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_workspace_changes.py +0 -0
  914. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_workspace_context.py +0 -0
  915. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_workspace_files.py +0 -0
  916. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_workspace_scope.py +0 -0
  917. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_workspace_service.py +0 -0
  918. {aria_code-0.158.0 → aria_code-0.160.0}/tests/test_workspace_verify.py +0 -0
  919. {aria_code-0.158.0 → aria_code-0.160.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.158.0
3
+ Version: 0.160.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
@@ -172,7 +172,7 @@ Numbers you can check, client data kept apart, actions a person approves.</p>
172
172
  <p align="center">
173
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>
174
174
  <!-- Release automation pins PyPI: the default endpoint still selects legacy 4.x. -->
175
- <a href="https://pypi.org/project/aria-code/0.158.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.158.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.160.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.160.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>
176
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>
177
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>
178
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.158.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.158.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.160.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.160.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.158.0"
7
+ version = "0.160.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" }
@@ -17,4 +17,4 @@ from __future__ import annotations
17
17
 
18
18
  __all__ = ["__version__"]
19
19
 
20
- __version__ = "0.158.0"
20
+ __version__ = "0.160.0"
@@ -378,6 +378,10 @@ class Server:
378
378
  t = self.terminal
379
379
  t._last_turn_envelope = None
380
380
  t._last_response = ""
381
+ # Set by the turn when it has already told the user, in their own
382
+ # language, what went wrong; cleared here so one turn's answer is
383
+ # never taken for the next one's.
384
+ t._error_presented = False
381
385
  t.cancel_event = asyncio.Event()
382
386
  self.emit("turn.started", prompt=value["text"])
383
387
  outcome, error = "completed", ""
@@ -423,7 +427,12 @@ class Server:
423
427
  self.persist()
424
428
  except Exception as exc:
425
429
  outcome, error = "failed", f"Session save failed: {exc}"
426
- self.emit("turn.completed", status=outcome, error=error, session_id=t.session_id)
430
+ # `error` stays the raw text for scripts and exec mode. `presented`
431
+ # tells a human-facing front end it has already been shown, so it
432
+ # does not print the same failure again under an error heading.
433
+ self.emit("turn.completed", status=outcome, error=error,
434
+ presented=bool(error and getattr(t, "_error_presented", False)),
435
+ session_id=t.session_id)
427
436
  self.turn_id = None
428
437
  self.snapshot("session.state")
429
438
 
@@ -845,6 +845,11 @@ class ChatTurnMixin:
845
845
  ],
846
846
  )
847
847
  console.print() if HAS_RICH else print()
848
+ # The user has now been told, in their language, what went
849
+ # wrong. A host that also receives the raw error text (the
850
+ # native front end gets it in turn.completed) must not show it
851
+ # a second time under a heading of its own.
852
+ self._error_presented = True
848
853
  if error_presentation.use_generic_error_prefix:
849
854
  _print_error(error_presentation.lines[0])
850
855
  else:
@@ -130,8 +130,9 @@ def _general_prompt() -> str:
130
130
  f"You are Aria, Arthera's product and software-engineering assistant. "
131
131
  f"Today is {today}.\n"
132
132
  "You review products, understand repositories, find defects and risks, plan "
133
- "architecture, and write and verify code. Finance and sports analysis are "
134
- "optional domain capabilities, used only when the user asks for them.\n\n"
133
+ "architecture, and write and verify code. Specialist domains have their own "
134
+ "guidance, which is added to a turn only when the user's request is about "
135
+ "one; never list or offer what you can do unprompted.\n\n"
135
136
  "- Read the evidence before proposing a change; never claim to have read a "
136
137
  "file, run a test, or made an edit without a tool result showing it.\n"
137
138
  "- State the scope before a change and the verification after it.\n"
@@ -268,6 +268,50 @@ def _skill_tool_schema_allowed(schema: dict, allowed_names: set[str]) -> bool:
268
268
  return False
269
269
 
270
270
 
271
+ def _general_turn_prompt(message: str, history: list | None = None) -> str:
272
+ """System prompt for a knowledge or conversational turn on a local model.
273
+
274
+ This used to be one hard-coded Chinese prompt that opened by listing what
275
+ Aria can do — "金融量化分析、足球/体育赛事分析与预测(含泊松算法)、编程" —
276
+ and then gave a long section of football and Poisson rules, for every
277
+ general turn. A small local model told that will offer it back, so a bare
278
+ 你好 was answered with "是关于足球赛事还是其他方面的问题呢?".
279
+
280
+ The sports rules only mean anything when sports data is attached to the
281
+ message, so they are added for a sports query — the same test the sports
282
+ data path uses — or when the conversation already holds a prediction block
283
+ the model has to keep treating as fact ("那加拿大呢?" is not a sports query
284
+ by itself, but it is still about the match above it). Everything else gets
285
+ the neutral prompt every other general turn already uses.
286
+ """
287
+ from aria_code.apps.cli.prompts.select import _general_prompt
288
+
289
+ prompt = _general_prompt()
290
+ if _is_sports_query(message) or _recent_sports_quant_context(history or []):
291
+ prompt += (
292
+ "\n\n"
293
+ "## 体育量化分析规则(重要)\n"
294
+ "用户消息中可能包含两种特殊数据块:\n\n"
295
+ "### 【比赛信息】块\n"
296
+ "= football-data.org API 获取的真实赛程(比赛时间、状态、比分)。这是**事实**,不要质疑。\n\n"
297
+ "### 【泊松模型量化预测】块\n"
298
+ "= Aria 用 Dixon-Coles 泊松算法计算的量化结果,包含:\n"
299
+ " - 两队 FIFA 排名强度参数(进攻/防守)\n"
300
+ " - 预期进球数(λ值)\n"
301
+ " - 主胜/平局/客胜概率(%)\n"
302
+ " - 最可能比分及其概率\n"
303
+ " - 隐含赔率\n"
304
+ "当收到此块时,你应当:\n"
305
+ "1. **直接引用数字**(「算法显示加拿大胜率 42.4%」),不要重新计算或质疑\n"
306
+ "2. **解释概率背后的逻辑**:FIFA 排名差距、进攻强度对比说明了什么\n"
307
+ "3. **分析高频比分区间**:比如 1-0/1-1/2-1 集中说明比赛预计紧张胶着\n"
308
+ "4. **补充战术/球员层面的定性分析**(这是你的训练知识,算法没有的部分)\n"
309
+ "5. **绝对不要**说「我没有实时数据」「世界杯尚未开始」「不包含实时数据」「以上预测基于历史」——这些与上方数据矛盾\n"
310
+ "6. **绝对不要**在末尾添加「若需最新数据请使用/football命令」之类的建议——用户已经有数据了\n\n"
311
+ )
312
+ return prompt
313
+
314
+
271
315
  async def stream_ollama(ollama_url: str, message: str, history: list,
272
316
  model: str = "qwen2.5:7b",
273
317
  on_token=None, on_thinking=None,
@@ -545,36 +589,8 @@ async def stream_ollama(ollama_url: str, message: str, history: list,
545
589
  else _build_analysis_prompt_lite(_intent_message)
546
590
  )
547
591
  elif _intent == "general":
548
- # 纯知识/概念问题:注入日期,但不注入工具 schema
549
- from datetime import datetime as _dt2
550
- _today = _dt2.now()
551
- _today_str = f"{_today.year:04d}年{_today.month:02d}月{_today.day:02d}日"
552
- _base_prompt = (
553
- f"你是 Aria,Arthera 的 AI 助手。今天是 {_today_str}。\n"
554
- "你的能力覆盖:金融量化分析、足球/体育赛事分析与预测(含泊松算法)、编程、通用知识问答。\n\n"
555
- "## 体育量化分析规则(重要)\n"
556
- "用户消息中可能包含两种特殊数据块:\n\n"
557
- "### 【比赛信息】块\n"
558
- "= football-data.org API 获取的真实赛程(比赛时间、状态、比分)。这是**事实**,不要质疑。\n\n"
559
- "### 【泊松模型量化预测】块\n"
560
- "= Aria 用 Dixon-Coles 泊松算法计算的量化结果,包含:\n"
561
- " - 两队 FIFA 排名强度参数(进攻/防守)\n"
562
- " - 预期进球数(λ值)\n"
563
- " - 主胜/平局/客胜概率(%)\n"
564
- " - 最可能比分及其概率\n"
565
- " - 隐含赔率\n"
566
- "当收到此块时,你应当:\n"
567
- "1. **直接引用数字**(「算法显示加拿大胜率 42.4%」),不要重新计算或质疑\n"
568
- "2. **解释概率背后的逻辑**:FIFA 排名差距、进攻强度对比说明了什么\n"
569
- "3. **分析高频比分区间**:比如 1-0/1-1/2-1 集中说明比赛预计紧张胶着\n"
570
- "4. **补充战术/球员层面的定性分析**(这是你的训练知识,算法没有的部分)\n"
571
- "5. **绝对不要**说「我没有实时数据」「世界杯尚未开始」「不包含实时数据」「以上预测基于历史」——这些与上方数据矛盾\n"
572
- "6. **绝对不要**在末尾添加「若需最新数据请使用/football命令」之类的建议——用户已经有数据了\n\n"
573
- "## 通用规则\n"
574
- "- 使用 Markdown(**粗体**、## 标题、- 列表、表格)\n"
575
- "- 不要编造股价/汇率等金融数字\n"
576
- "- 简洁精准,用数据说话\n"
577
- )
592
+ # 纯知识/概念问题:不注入工具 schema
593
+ _base_prompt = _general_turn_prompt(_intent_message, history)
578
594
  else:
579
595
  # realtime / finance: use full finance prompt with tool access
580
596
  _base_prompt = _finance_prompt
@@ -17,11 +17,12 @@ testable offline; ``load_bars`` bridges to DataService for real runs.
17
17
 
18
18
  from __future__ import annotations
19
19
 
20
- import math
21
20
  from abc import ABC, abstractmethod
22
21
  from dataclasses import dataclass, field
23
22
  from typing import Any, Callable, Dict, List, Optional
24
23
 
24
+ from aria_code.domain import performance_stats as stats
25
+
25
26
 
26
27
  @dataclass
27
28
  class Bar:
@@ -98,27 +99,16 @@ class BacktestResult:
98
99
  benchmark: Dict[str, Any]
99
100
 
100
101
 
101
- def _sharpe(returns: List[float], periods: int = 252) -> float:
102
- if len(returns) < 2:
103
- return 0.0
104
- mean = sum(returns) / len(returns)
105
- var = sum((r - mean) ** 2 for r in returns) / (len(returns) - 1)
106
- std = math.sqrt(var)
107
- return (mean / std) * math.sqrt(periods) if std > 0 else 0.0
108
-
109
-
110
- def _max_drawdown(equity: List[float]) -> float:
111
- peak = equity[0] if equity else 0.0
112
- mdd = 0.0
113
- for v in equity:
114
- peak = max(peak, v)
115
- if peak > 0:
116
- mdd = min(mdd, v / peak - 1.0)
117
- return mdd
118
-
119
-
120
102
  def _metrics(equity_curve: List[Dict[str, Any]], trades: List[Dict[str, Any]],
121
- periods: int = 252) -> Dict[str, Any]:
103
+ periods: Optional[int] = None) -> Dict[str, Any]:
104
+ """Headline statistics for a run.
105
+
106
+ `periods` is the caller's own periods-per-year when they gave one, and then
107
+ behaves exactly as it always did. Left out, the span comes from the equity
108
+ curve's dates (see performance_stats), so a year of weekly bars and a year
109
+ of daily bars both annualize to a year. A curve whose dates cannot be read
110
+ falls back to 252, the old behaviour.
111
+ """
122
112
  eq = [pt["equity"] for pt in equity_curve]
123
113
  if len(eq) < 2 or eq[0] <= 0:
124
114
  return {"total_return": 0.0, "annual_return": 0.0, "sharpe": 0.0,
@@ -126,14 +116,23 @@ def _metrics(equity_curve: List[Dict[str, Any]], trades: List[Dict[str, Any]],
126
116
  rets = [eq[i] / eq[i - 1] - 1 for i in range(1, len(eq)) if eq[i - 1] > 0]
127
117
  total = eq[-1] / eq[0] - 1
128
118
  n = len(eq)
129
- annual = (1 + total) ** (periods / n) - 1 if n > 0 else 0.0
119
+ years = stats.span_years(equity_curve[0].get("date"), equity_curve[-1].get("date"))
120
+ if periods is not None:
121
+ sharpe_periods = periods
122
+ annual = -1.0 if total <= -1 else (1 + total) ** (periods / n) - 1
123
+ elif years is not None:
124
+ sharpe_periods = len(rets) / years
125
+ annual = stats.annualized_return(total, years)
126
+ else:
127
+ sharpe_periods = stats.FALLBACK_PERIODS_PER_YEAR
128
+ annual = -1.0 if total <= -1 else (1 + total) ** (sharpe_periods / n) - 1
130
129
  sells = [t for t in trades if t["side"] == "sell"]
131
130
  wins = [t for t in sells if t.get("realized_pnl", 0) > 0]
132
131
  return {
133
132
  "total_return": round(total, 6),
134
133
  "annual_return": round(annual, 6),
135
- "sharpe": round(_sharpe(rets, periods), 4),
136
- "max_drawdown": round(_max_drawdown(eq), 6),
134
+ "sharpe": round(stats.sharpe(rets, sharpe_periods), 4),
135
+ "max_drawdown": round(stats.max_drawdown(eq), 6),
137
136
  "n_trades": len(trades),
138
137
  "win_rate": round(len(wins) / len(sells), 4) if sells else 0.0,
139
138
  }
@@ -142,11 +141,12 @@ def _metrics(equity_curve: List[Dict[str, Any]], trades: List[Dict[str, Any]],
142
141
  class BacktestEngine:
143
142
  def __init__(self, *, starting_cash: float = 100_000.0,
144
143
  commission: float = 0.0005, slippage: float = 0.0005,
145
- periods_per_year: int = 252):
144
+ periods_per_year: Optional[int] = None):
146
145
  self.starting_cash = float(starting_cash)
147
146
  self.commission = float(commission)
148
147
  self.slippage = float(slippage)
149
- self.periods_per_year = int(periods_per_year)
148
+ # None: read it from the data's dates. A number: the caller knows their data.
149
+ self.periods_per_year = None if periods_per_year is None else int(periods_per_year)
150
150
 
151
151
  def run(self, data: Dict[str, List[Bar]], strategy: Strategy) -> BacktestResult:
152
152
  symbols = list(data.keys())
@@ -12,6 +12,7 @@ from typing import Any, Dict, Iterable, List, Optional, Sequence, Tuple
12
12
 
13
13
  from aria_code.artifacts import create_user_artifact, write_artifact_metadata, write_artifact_raw_data
14
14
  from aria_code.data_service import DataService
15
+ from aria_code.domain import performance_stats as stats
15
16
 
16
17
 
17
18
  @dataclass(frozen=True)
@@ -125,26 +126,6 @@ def _signals(strategy: str, closes: Sequence[float], fast: int, slow: int, momen
125
126
  return [1 if i >= period and closes[i] > closes[i - period] else 0 for i in range(n)]
126
127
 
127
128
 
128
- def _max_drawdown(values: Sequence[float]) -> float:
129
- if not values:
130
- return 0.0
131
- peak = values[0]
132
- worst = 0.0
133
- for value in values:
134
- peak = max(peak, value)
135
- if peak > 0:
136
- worst = min(worst, value / peak - 1.0)
137
- return worst
138
-
139
-
140
- def _stddev(values: Sequence[float]) -> float:
141
- if len(values) < 2:
142
- return 0.0
143
- mean = sum(values) / len(values)
144
- variance = sum((v - mean) ** 2 for v in values) / (len(values) - 1)
145
- return math.sqrt(max(variance, 0.0))
146
-
147
-
148
129
  def run_backtest_from_history(history: Sequence[Dict[str, Any]], config: BacktestConfig) -> Dict[str, Any]:
149
130
  rows = _clean_history_rows(history, config.start_date, config.end_date)
150
131
  min_bars = max(30, min(max(config.slow_period, config.momentum_period) + 2, 80))
@@ -192,11 +173,17 @@ def run_backtest_from_history(history: Sequence[Dict[str, Any]], config: Backtes
192
173
 
193
174
  total_return = equity[-1] / initial - 1.0
194
175
  benchmark_return = benchmark[-1] / initial - 1.0
195
- span_days = max((_parse_date(dates[-1]) - _parse_date(dates[0])).days if _parse_date(dates[-1]) and _parse_date(dates[0]) else len(rows), 1)
196
- years = max(span_days / 365.25, 1 / 252)
197
- annualized_return = (1.0 + total_return) ** (1.0 / years) - 1.0 if total_return > -1 else -1.0
198
- volatility = _stddev(daily_strategy_returns[1:]) * math.sqrt(252)
199
- sharpe = (sum(daily_strategy_returns[1:]) / max(len(daily_strategy_returns) - 1, 1)) / _stddev(daily_strategy_returns[1:]) * math.sqrt(252) if _stddev(daily_strategy_returns[1:]) > 0 else 0.0
176
+ rets = daily_strategy_returns[1:]
177
+ years = stats.span_years(dates[0], dates[-1])
178
+ if years is None:
179
+ # Undatable rows: count bars as days, the long-standing fallback.
180
+ years = max(len(rows) / stats.DAYS_PER_YEAR, stats.MIN_YEARS)
181
+ periods_per_year = float(stats.FALLBACK_PERIODS_PER_YEAR)
182
+ else:
183
+ periods_per_year = len(rets) / years
184
+ annualized_return = stats.annualized_return(total_return, years)
185
+ volatility = stats.stddev(rets) * math.sqrt(periods_per_year)
186
+ sharpe = stats.sharpe(rets, periods_per_year)
200
187
  if entry_equity:
201
188
  trade_results.append(equity[-1] / entry_equity - 1.0) # still open: marked at the last close
202
189
  # Winning trades over trades. This was the share of up days while holding,
@@ -228,8 +215,8 @@ def run_backtest_from_history(history: Sequence[Dict[str, Any]], config: Backtes
228
215
  "benchmark_return": round(benchmark_return, 6),
229
216
  "buy_hold_return": round(benchmark_return, 6),
230
217
  "alpha": round(total_return - benchmark_return, 6),
231
- "max_drawdown": round(_max_drawdown(equity), 6),
232
- "benchmark_max_drawdown": round(_max_drawdown(benchmark), 6),
218
+ "max_drawdown": round(stats.max_drawdown(equity), 6),
219
+ "benchmark_max_drawdown": round(stats.max_drawdown(benchmark), 6),
233
220
  "annual_volatility": round(volatility, 6),
234
221
  "sharpe_ratio": round(sharpe, 4),
235
222
  "win_rate": round(win_rate, 4),
@@ -0,0 +1,101 @@
1
+ """Performance statistics, from the data's own calendar.
2
+
3
+ There were two backtest calculators in this package, and they disagreed. The
4
+ engine annualized as (1 + total) ** (252 / bars) - 1, which is right only when
5
+ a year holds 252 bars. Run on a calendar year of daily bars for a market that
6
+ trades every day it reported a 10.5% return as 7.1% a year, and on a year of
7
+ weekly bars it reported 59%. The report module annualized by calendar span but
8
+ still scaled volatility and Sharpe by sqrt(252). Neither could be right for a
9
+ 24/7 market, for weekly bars, or for an intraday run, and nothing tested the
10
+ numbers, because the only check was the output of the same code.
11
+
12
+ The statistics here read the span from the dates themselves, so one rule holds
13
+ for every bar frequency:
14
+
15
+ years = (last date - first date) / 365.25
16
+ annualized return = (1 + total) ** (1 / years) - 1
17
+ periods per year = observations / years
18
+ Sharpe = mean / sample-std * sqrt(periods per year)
19
+
20
+ An explicit periods-per-year is still honoured: someone who passes 365 knows
21
+ their data. Dates that cannot be read fall back to 252, the previous behaviour,
22
+ which keeps synthetic series ("1", "2", "3") working. There is a Go port of
23
+ this arithmetic (go/runtime/quant) checked against the fixtures this module
24
+ generates; change both together.
25
+ """
26
+ from __future__ import annotations
27
+
28
+ import math
29
+ from datetime import date
30
+ from typing import Optional, Sequence
31
+
32
+ #: What the engine assumed for every series, and what an undatable one still gets.
33
+ FALLBACK_PERIODS_PER_YEAR = 252
34
+
35
+ DAYS_PER_YEAR = 365.25
36
+
37
+ #: A span shorter than one trading day would compound a result hundreds of
38
+ #: times over. The report module already clamped here; the engine now does too.
39
+ MIN_YEARS = 1.0 / FALLBACK_PERIODS_PER_YEAR
40
+
41
+
42
+ def parse_day(text: object) -> Optional[date]:
43
+ """The calendar day of an ISO timestamp or date, or None when it is not one."""
44
+ try:
45
+ return date.fromisoformat(str(text)[:10])
46
+ except ValueError:
47
+ return None
48
+
49
+
50
+ def span_years(first: object, last: object) -> Optional[float]:
51
+ """Years between two dates, or None when either is unreadable or the span is not forward.
52
+
53
+ Clamped to MIN_YEARS from below so a one-day span cannot compound into nonsense.
54
+ """
55
+ a, b = parse_day(first), parse_day(last)
56
+ if a is None or b is None or b <= a:
57
+ return None
58
+ return max((b - a).days / DAYS_PER_YEAR, MIN_YEARS)
59
+
60
+
61
+ def annualized_return(total_return: float, years: float) -> float:
62
+ """The constant yearly rate that compounds to `total_return` over `years`."""
63
+ if total_return <= -1.0:
64
+ return -1.0
65
+ return (1.0 + total_return) ** (1.0 / years) - 1.0
66
+
67
+
68
+ def stddev(values: Sequence[float]) -> float:
69
+ """Sample standard deviation (n - 1); 0 for fewer than two values."""
70
+ if len(values) < 2:
71
+ return 0.0
72
+ mean = sum(values) / len(values)
73
+ variance = sum((v - mean) ** 2 for v in values) / (len(values) - 1)
74
+ return math.sqrt(max(variance, 0.0))
75
+
76
+
77
+ def sharpe(returns: Sequence[float], periods_per_year: float) -> float:
78
+ """Annualized mean over sample standard deviation; 0 when there is no spread."""
79
+ if len(returns) < 2:
80
+ return 0.0
81
+ std = stddev(returns)
82
+ if std <= 0:
83
+ return 0.0
84
+ return (sum(returns) / len(returns)) / std * math.sqrt(periods_per_year)
85
+
86
+
87
+ def max_drawdown(equity: Sequence[float]) -> float:
88
+ """The worst peak-to-trough fall, as a negative fraction (0 when never below a peak)."""
89
+ peak = equity[0] if equity else 0.0
90
+ worst = 0.0
91
+ for value in equity:
92
+ peak = max(peak, value)
93
+ if peak > 0:
94
+ worst = min(worst, value / peak - 1.0)
95
+ return worst
96
+
97
+
98
+ def periods_per_year_from_dates(n_returns: int, first: object, last: object) -> Optional[float]:
99
+ """How many observations a year this series holds, or None when its dates cannot say."""
100
+ years = span_years(first, last)
101
+ return None if years is None else n_returns / years
@@ -80,8 +80,14 @@ class BacktestEngine:
80
80
  returns = equity_df['total_value'].pct_change().dropna()
81
81
  total_return = (equity_df['total_value'].iloc[-1] / self.portfolio.initial_cash) - 1.0
82
82
 
83
- ann_vol = returns.std() * (252 ** 0.5) if not returns.empty else 0.0
84
- sharpe = (returns.mean() * 252) / ann_vol if ann_vol > 0 else 0.0
83
+ # Periods a year from the equity curve's own dates; 252 when it has none.
84
+ from aria_code.domain import performance_stats as stats
85
+
86
+ periods = stats.periods_per_year_from_dates(
87
+ len(returns), equity_df.index[0], equity_df.index[-1]
88
+ ) or float(stats.FALLBACK_PERIODS_PER_YEAR)
89
+ ann_vol = returns.std() * (periods ** 0.5) if not returns.empty else 0.0
90
+ sharpe = (returns.mean() * periods) / ann_vol if ann_vol > 0 else 0.0
85
91
 
86
92
  cum_ret = (1 + returns).cumprod()
87
93
  peak = cum_ret.cummax()
@@ -485,7 +485,7 @@ def calc_correlation_matrix(params: dict) -> dict:
485
485
  continue
486
486
  stats[sym] = {
487
487
  "return_total": round((s.iloc[-1]/s.iloc[0] - 1)*100, 2),
488
- "volatility": round(float(r.std() * np.sqrt(252) * 100), 2) if len(r) > 1 else None,
488
+ "volatility": round(_annual_vol(r) * 100, 2) if len(r) > 1 else None,
489
489
  "sharpe": _calc_sharpe(r),
490
490
  "max_drawdown": round(_max_drawdown(s) * 100, 2),
491
491
  }
@@ -586,7 +586,7 @@ def portfolio_backtest(params: dict) -> dict:
586
586
  port_cum = (1 + port_rets_w).cumprod()
587
587
 
588
588
  total_return = float(port_cum.iloc[-1] - 1) * 100
589
- annual_vol = float(port_rets_w.std() * np.sqrt(252 if freq else 252) * 100)
589
+ annual_vol = _annual_vol(port_rets_w) * 100
590
590
  sharpe = _calc_sharpe(port_rets_w)
591
591
  max_dd = round(_max_drawdown(port_cum) * 100, 2)
592
592
 
@@ -598,7 +598,7 @@ def portfolio_backtest(params: dict) -> dict:
598
598
  bench_stats = {
599
599
  "symbol": benchmark,
600
600
  "total_return": round((float(b_cum.iloc[-1]) - 1)*100, 2),
601
- "volatility": round(float(bench_rets.std() * np.sqrt(252) * 100), 2),
601
+ "volatility": round(_annual_vol(bench_rets) * 100, 2),
602
602
  "sharpe": _calc_sharpe(bench_rets),
603
603
  "max_drawdown": round(_max_drawdown(b_cum) * 100, 2),
604
604
  }
@@ -785,6 +785,28 @@ def load_csv_data(params: dict) -> dict:
785
785
 
786
786
  # ── Private Helpers ───────────────────────────────────────────────────────────
787
787
 
788
+ def _periods_per_year(rets) -> float:
789
+ """Observations a year in this return series, read from its index.
790
+
791
+ Monthly-rebalanced portfolio returns are monthly, so scaling them by
792
+ sqrt(252) overstated volatility and Sharpe about 4.6x. An index that is not
793
+ dates falls back to 252 (daily), the old assumption.
794
+ """
795
+ from aria_code.domain import performance_stats as stats
796
+
797
+ try:
798
+ idx = rets.index
799
+ # N dated returns span N - 1 intervals.
800
+ found = stats.periods_per_year_from_dates(len(rets) - 1, idx[0], idx[-1])
801
+ except Exception:
802
+ found = None
803
+ return found if found else float(stats.FALLBACK_PERIODS_PER_YEAR)
804
+
805
+
806
+ def _annual_vol(rets) -> float:
807
+ return float(rets.std() * np.sqrt(_periods_per_year(rets)))
808
+
809
+
788
810
  def _calc_sharpe(rets, rf_daily: float = 0.0) -> Optional[float]:
789
811
  if not _HAS_NP or not hasattr(rets, "__len__") or len(rets) < 2:
790
812
  return None
@@ -792,7 +814,7 @@ def _calc_sharpe(rets, rf_daily: float = 0.0) -> Optional[float]:
792
814
  excess = rets - rf_daily
793
815
  if float(excess.std()) == 0:
794
816
  return None
795
- return round(float(excess.mean() / excess.std() * np.sqrt(252)), 3)
817
+ return round(float(excess.mean() / excess.std() * np.sqrt(_periods_per_year(rets))), 3)
796
818
  except Exception:
797
819
  return None
798
820
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aria-code
3
- Version: 0.158.0
3
+ Version: 0.160.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
@@ -172,7 +172,7 @@ Numbers you can check, client data kept apart, actions a person approves.</p>
172
172
  <p align="center">
173
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>
174
174
  <!-- Release automation pins PyPI: the default endpoint still selects legacy 4.x. -->
175
- <a href="https://pypi.org/project/aria-code/0.158.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.158.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.160.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.160.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>
176
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>
177
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>
178
178
  </p>
@@ -346,6 +346,7 @@ src/aria_code/domain/__init__.py
346
346
  src/aria_code/domain/backtest_engine.py
347
347
  src/aria_code/domain/backtest_report.py
348
348
  src/aria_code/domain/finance_formulas.py
349
+ src/aria_code/domain/performance_stats.py
349
350
  src/aria_code/domain/portfolio_ledger.py
350
351
  src/aria_code/domain/strategy_vault.py
351
352
  src/aria_code/evals/__init__.py
@@ -668,6 +669,7 @@ tests/test_football_agent.py
668
669
  tests/test_football_prediction_output.py
669
670
  tests/test_frozen_module_aliases.py
670
671
  tests/test_gemini_retirement.py
672
+ tests/test_general_turn_prompt.py
671
673
  tests/test_google_cloud_models.py
672
674
  tests/test_google_cloud_routing.py
673
675
  tests/test_google_login.py
@@ -749,6 +751,7 @@ tests/test_packaging_constraints.py
749
751
  tests/test_packaging_manifest.py
750
752
  tests/test_packs_domains.py
751
753
  tests/test_pdf_report.py
754
+ tests/test_performance_stats.py
752
755
  tests/test_pick_best_installed_model.py
753
756
  tests/test_plan_mode.py
754
757
  tests/test_plan_schema.py
@@ -759,6 +762,7 @@ tests/test_platform_publish.py
759
762
  tests/test_plotly_html_output.py
760
763
  tests/test_portfolio_language.py
761
764
  tests/test_portfolio_ledger.py
765
+ tests/test_portfolio_periods.py
762
766
  tests/test_post_turn_context_decision.py
763
767
  tests/test_preflight.py
764
768
  tests/test_preview_server.py