aria-code 0.91.0__tar.gz → 0.93.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 (761) hide show
  1. {aria_code-0.91.0/src/aria_code.egg-info → aria_code-0.93.0}/PKG-INFO +1 -1
  2. {aria_code-0.91.0 → aria_code-0.93.0}/pyproject.toml +1 -1
  3. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/_version.py +1 -1
  4. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/base.py +7 -2
  5. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/portfolio_agent.py +45 -16
  6. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/portfolio_cmds.py +39 -32
  7. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/helpers.py +48 -28
  8. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/local_tool_schemas.py +7 -2
  9. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/providers/llm/ollama_stream.py +1 -1
  10. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/tools/system_tools.py +85 -192
  11. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/tools/write_tools.py +28 -4
  12. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/aria_cli.py +7 -2
  13. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_tools/registry.py +2 -1
  14. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/runtime/agent_loop.py +1 -1
  15. aria_code-0.93.0/src/aria_code/runtime/processes.py +255 -0
  16. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/runtime/tool_executor.py +2 -1
  17. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/safety/permissions.py +52 -26
  18. aria_code-0.93.0/src/aria_code/safety/sandbox.py +120 -0
  19. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/ui/render/team.py +10 -5
  20. {aria_code-0.91.0 → aria_code-0.93.0/src/aria_code.egg-info}/PKG-INFO +1 -1
  21. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code.egg-info/SOURCES.txt +8 -0
  22. aria_code-0.93.0/tests/test_background_processes.py +117 -0
  23. aria_code-0.93.0/tests/test_edit_and_command_safety.py +122 -0
  24. aria_code-0.93.0/tests/test_os_sandbox.py +102 -0
  25. aria_code-0.93.0/tests/test_portfolio_language.py +112 -0
  26. aria_code-0.93.0/tests/test_project_context_files.py +79 -0
  27. aria_code-0.93.0/tests/test_shell_commands_as_written.py +70 -0
  28. {aria_code-0.91.0 → aria_code-0.93.0}/LICENSE +0 -0
  29. {aria_code-0.91.0 → aria_code-0.93.0}/NOTICE +0 -0
  30. {aria_code-0.91.0 → aria_code-0.93.0}/README.md +0 -0
  31. {aria_code-0.91.0 → aria_code-0.93.0}/setup.cfg +0 -0
  32. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/__init__.py +0 -0
  33. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/adk_apps/__init__.py +0 -0
  34. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/adk_apps/aria_code_review/__init__.py +0 -0
  35. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/adk_apps/aria_code_review/agent.py +0 -0
  36. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/adk_apps/aria_research/__init__.py +0 -0
  37. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/adk_apps/aria_research/agent.py +0 -0
  38. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/__init__.py +0 -0
  39. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/code_review.py +0 -0
  40. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/deep/__init__.py +0 -0
  41. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/deep/calibration_loop.py +0 -0
  42. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/deep/critic.py +0 -0
  43. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/deep/deepen.py +0 -0
  44. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/deep/models.py +0 -0
  45. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/deep/pipeline.py +0 -0
  46. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/deep/quant_fusion.py +0 -0
  47. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/deep/themes.py +0 -0
  48. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/deep/tiers.py +0 -0
  49. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/engineering/__init__.py +0 -0
  50. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/engineering/coder.py +0 -0
  51. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/engineering/tester.py +0 -0
  52. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/financial/__init__.py +0 -0
  53. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/financial/cashflow_burn.py +0 -0
  54. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/financial/catalyst.py +0 -0
  55. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/financial/corporate_finance.py +0 -0
  56. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/financial/debate.py +0 -0
  57. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/financial/earnings.py +0 -0
  58. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/financial/fundamental.py +0 -0
  59. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/financial/macro.py +0 -0
  60. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/financial/news.py +0 -0
  61. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/financial/risk.py +0 -0
  62. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/financial/sector.py +0 -0
  63. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/financial/strategist.py +0 -0
  64. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/financial/stripe_revenue.py +0 -0
  65. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/financial/synthesis.py +0 -0
  66. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/financial/technical.py +0 -0
  67. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/orchestrator.py +0 -0
  68. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/realty/__init__.py +0 -0
  69. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/realty/asset_diagnosis.py +0 -0
  70. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/realty/business_match.py +0 -0
  71. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/realty/cashflow_verify.py +0 -0
  72. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/realty/contract_rules.py +0 -0
  73. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/realty/energy_anomaly.py +0 -0
  74. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/realty/exit_settlement.py +0 -0
  75. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/realty/fulfillment_risk.py +0 -0
  76. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/realty/ops_optimize.py +0 -0
  77. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/realty/revenue_share.py +0 -0
  78. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/registry.py +0 -0
  79. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/signal_scheme.py +0 -0
  80. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/sports/__init__.py +0 -0
  81. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/sports/football_agent.py +0 -0
  82. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/supervisor.py +0 -0
  83. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/team.py +0 -0
  84. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/warehouse/__init__.py +0 -0
  85. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/warehouse/contracts.py +0 -0
  86. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/warehouse/dashboard.py +0 -0
  87. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/warehouse/fulfillment_leadtime.py +0 -0
  88. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/warehouse/inbound_exceptions.py +0 -0
  89. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/warehouse/inventory_health.py +0 -0
  90. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/warehouse/local_run.py +0 -0
  91. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/warehouse/local_snapshot.py +0 -0
  92. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/warehouse/logistics_cost.py +0 -0
  93. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/warehouse/logistics_sync.py +0 -0
  94. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/agents/warehouse/workflow.py +0 -0
  95. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/aliyun_data_client.py +0 -0
  96. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/README.md +0 -0
  97. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/__init__.py +0 -0
  98. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/channels/README.md +0 -0
  99. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/channels/__init__.py +0 -0
  100. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/channels/approvals.py +0 -0
  101. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/channels/conversation.py +0 -0
  102. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/channels/digest.py +0 -0
  103. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/channels/intake.py +0 -0
  104. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/channels/registry.py +0 -0
  105. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/channels/tradingview.py +0 -0
  106. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/README.md +0 -0
  107. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/__init__.py +0 -0
  108. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/_optional.py +0 -0
  109. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/bootstrap.py +0 -0
  110. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/broker_render.py +0 -0
  111. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/codegen_paths.py +0 -0
  112. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/__init__.py +0 -0
  113. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/_business_render.py +0 -0
  114. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/_ui.py +0 -0
  115. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/analysis_cmds.py +0 -0
  116. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/ashare_prediction_cmds.py +0 -0
  117. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/auth_cmds.py +0 -0
  118. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/backtest_cmds.py +0 -0
  119. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/broker_cmds.py +0 -0
  120. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/business_workflow_cmds.py +0 -0
  121. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/canvas_cmds.py +0 -0
  122. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/catalog.py +0 -0
  123. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/core_cmds.py +0 -0
  124. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/data_cmds.py +0 -0
  125. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/diagnostic_cmds.py +0 -0
  126. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/diagnostic_ops_cmds.py +0 -0
  127. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/file_cmds.py +0 -0
  128. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/finance_service_cmds.py +0 -0
  129. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/fx_commodity_cmds.py +0 -0
  130. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/market.py +0 -0
  131. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/market_cmds.py +0 -0
  132. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/market_context.py +0 -0
  133. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/market_render.py +0 -0
  134. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/model_cmds.py +0 -0
  135. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/ops_cmds.py +0 -0
  136. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/orchestrator_cmds.py +0 -0
  137. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/pdf_export_cmds.py +0 -0
  138. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/report.py +0 -0
  139. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/scaffold_templates.py +0 -0
  140. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/session_cmds.py +0 -0
  141. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/session_ux_cmds.py +0 -0
  142. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/team.py +0 -0
  143. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/team_render.py +0 -0
  144. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/ui_cmds.py +0 -0
  145. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/warehouse_cmds.py +0 -0
  146. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/workflow_cmds.py +0 -0
  147. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/commands/workspace_cmds.py +0 -0
  148. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/config_paths.py +0 -0
  149. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/config_store.py +0 -0
  150. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/constants.py +0 -0
  151. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/context.py +0 -0
  152. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/deterministic.py +0 -0
  153. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/direct.py +0 -0
  154. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/finance_service_catalog.py +0 -0
  155. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/football_reports.py +0 -0
  156. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/github_app_auth.py +0 -0
  157. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/google_login.py +0 -0
  158. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/handlers/__init__.py +0 -0
  159. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/handlers/broker_handlers.py +0 -0
  160. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/handlers/chart_handlers.py +0 -0
  161. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/handlers/market_handlers.py +0 -0
  162. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/handlers/realty_handlers.py +0 -0
  163. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/handlers/sports_handlers.py +0 -0
  164. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/handlers/strategy_advice.py +0 -0
  165. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/hooks.py +0 -0
  166. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/i18n.py +0 -0
  167. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/intent.py +0 -0
  168. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/intent_router.py +0 -0
  169. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/intent_signals.py +0 -0
  170. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/lifecycle_hooks.py +0 -0
  171. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/main.py +0 -0
  172. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/market_hours.py +0 -0
  173. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/market_metadata.py +0 -0
  174. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/market_universe.py +0 -0
  175. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/message_processing.py +0 -0
  176. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/model_catalog.py +0 -0
  177. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/pdf_report.py +0 -0
  178. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/plan_mode.py +0 -0
  179. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/plotly_html.py +0 -0
  180. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/prediction_feedback.py +0 -0
  181. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/preflight.py +0 -0
  182. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/project_aria.py +0 -0
  183. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/prompt_assembly.py +0 -0
  184. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/prompts/__init__.py +0 -0
  185. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/prompts/coding.py +0 -0
  186. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/prompts/select.py +0 -0
  187. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/prompts/system_prompts.py +0 -0
  188. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/prompts/ui.py +0 -0
  189. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/provider_endpoints.py +0 -0
  190. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/provider_keys.py +0 -0
  191. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/providers/__init__.py +0 -0
  192. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/providers/base.py +0 -0
  193. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/providers/chat_routing.py +0 -0
  194. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/providers/collaboration.py +0 -0
  195. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/providers/llm/__init__.py +0 -0
  196. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/providers/llm/offline_responses.py +0 -0
  197. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/providers/llm/response_cache.py +0 -0
  198. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/providers/llm/sse_stream.py +0 -0
  199. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/providers/runtime_bridge.py +0 -0
  200. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/providers/vertexai_stream.py +0 -0
  201. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/review_runner.py +0 -0
  202. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/runtime_consumer.py +0 -0
  203. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/sandbox.py +0 -0
  204. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/session_export.py +0 -0
  205. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/session_jsonl.py +0 -0
  206. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/session_store.py +0 -0
  207. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/skills_catalog.py +0 -0
  208. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/todo_tracker.py +0 -0
  209. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/tool_executor.py +0 -0
  210. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/tool_registry.py +0 -0
  211. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/tool_scope.py +0 -0
  212. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/tools/__init__.py +0 -0
  213. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/tools/context.py +0 -0
  214. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/tools/file_tools.py +0 -0
  215. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/tools/market_tools.py +0 -0
  216. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/tools/notebook_tools.py +0 -0
  217. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/tradingview_bridge.py +0 -0
  218. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/turn_planning.py +0 -0
  219. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/update_check.py +0 -0
  220. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/updater.py +0 -0
  221. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/utils/__init__.py +0 -0
  222. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/cli/utils/market_detect.py +0 -0
  223. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/daemon/README.md +0 -0
  224. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/vscode/README.md +0 -0
  225. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/apps/vscode/package.json +0 -0
  226. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/aria_daemon.py +0 -0
  227. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/aria_feishu_bot.py +0 -0
  228. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/aria_mcp_server.py +0 -0
  229. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/aria_relay_client.py +0 -0
  230. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/aria_relay_server.py +0 -0
  231. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/aria_telegram_bot.py +0 -0
  232. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/ariarc.py +0 -0
  233. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/artifacts.py +0 -0
  234. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/backtest_engine.py +0 -0
  235. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/backtest_report.py +0 -0
  236. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/brokers/__init__.py +0 -0
  237. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/brokers/automation.py +0 -0
  238. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/brokers/base.py +0 -0
  239. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/brokers/capabilities.py +0 -0
  240. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/brokers/cn/__init__.py +0 -0
  241. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/brokers/cn/easytrader_broker.py +0 -0
  242. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/brokers/cn/futu_broker.py +0 -0
  243. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/brokers/cn/longbridge_broker.py +0 -0
  244. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/brokers/cn/tiger_broker.py +0 -0
  245. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/brokers/cn/xtquant_broker.py +0 -0
  246. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/brokers/config.py +0 -0
  247. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/brokers/intl/__init__.py +0 -0
  248. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/brokers/intl/alpaca_broker.py +0 -0
  249. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/brokers/intl/ibkr_broker.py +0 -0
  250. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/brokers/intl/trading212_broker.py +0 -0
  251. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/brokers/intl/webull_broker.py +0 -0
  252. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/brokers/paper_broker.py +0 -0
  253. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/brokers/planning.py +0 -0
  254. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/brokers/registry.py +0 -0
  255. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/brokers/trading.py +0 -0
  256. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/canva_client.py +0 -0
  257. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/change_store.py +0 -0
  258. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/clients/__init__.py +0 -0
  259. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/clients/aliyun_data_client.py +0 -0
  260. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/clients/aria_relay_client.py +0 -0
  261. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/clients/canva_client.py +0 -0
  262. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/clients/figma_client.py +0 -0
  263. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/clients/football_data_client.py +0 -0
  264. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/clients/kling_video_client.py +0 -0
  265. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/clients/market_data_client.py +0 -0
  266. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/clients/openai_image_client.py +0 -0
  267. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/clients/runway_video_client.py +0 -0
  268. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/clients/warehouse_erp_client.py +0 -0
  269. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/cloud_memory.py +0 -0
  270. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/command_safety.py +0 -0
  271. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/computer_use_tools.py +0 -0
  272. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/dashboard_generator.py +0 -0
  273. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/data_analysis_tools.py +0 -0
  274. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/data_cleaner.py +0 -0
  275. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/data_service.py +0 -0
  276. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/datasources/__init__.py +0 -0
  277. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/datasources/base.py +0 -0
  278. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/datasources/router.py +0 -0
  279. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/datasources/sources/__init__.py +0 -0
  280. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/datasources/sources/akshare_source.py +0 -0
  281. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/datasources/sources/alpha_vantage_source.py +0 -0
  282. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/datasources/sources/edgar_source.py +0 -0
  283. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/datasources/sources/finnhub_source.py +0 -0
  284. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/datasources/sources/fred_source.py +0 -0
  285. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/datasources/sources/tushare_source.py +0 -0
  286. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/datasources/sources/web_scraper_source.py +0 -0
  287. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/datasources/sources/world_bank_source.py +0 -0
  288. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/datasources/sources/yfinance_source.py +0 -0
  289. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/demo_player.py +0 -0
  290. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/doctor.py +0 -0
  291. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/domain/__init__.py +0 -0
  292. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/domain/backtest_engine.py +0 -0
  293. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/domain/backtest_report.py +0 -0
  294. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/domain/finance_formulas.py +0 -0
  295. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/domain/portfolio_ledger.py +0 -0
  296. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/domain/strategy_vault.py +0 -0
  297. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/evals/__init__.py +0 -0
  298. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/evals/harness.py +0 -0
  299. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/evals/runner.py +0 -0
  300. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/external_agent_runner.py +0 -0
  301. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/figma_client.py +0 -0
  302. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/file_analysis_tools.py +0 -0
  303. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/finance_formulas.py +0 -0
  304. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/football_data_client.py +0 -0
  305. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/image_gen_tools.py +0 -0
  306. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/intent_classifier.py +0 -0
  307. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/kling_video_client.py +0 -0
  308. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/licensing.py +0 -0
  309. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/local_finance_tools.py +0 -0
  310. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/local_image_provider.py +0 -0
  311. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/local_llm_provider.py +0 -0
  312. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/macro_tools.py +0 -0
  313. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/markdown_pdf.py +0 -0
  314. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/market_data_client.py +0 -0
  315. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/mcp_client.py +0 -0
  316. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/memory_manager.py +0 -0
  317. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/model_capability.py +0 -0
  318. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/notification_tools.py +0 -0
  319. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/openai_image_client.py +0 -0
  320. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/__init__.py +0 -0
  321. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/adk_bridge/__init__.py +0 -0
  322. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/adk_bridge/code_review_tools.py +0 -0
  323. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/adk_bridge/market_tools.py +0 -0
  324. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_agents/__init__.py +0 -0
  325. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_agents/manifest.py +0 -0
  326. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_core/__init__.py +0 -0
  327. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_core/architecture.py +0 -0
  328. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_core/export.py +0 -0
  329. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_core/manifest.py +0 -0
  330. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_core/paths.py +0 -0
  331. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_core/secure_file.py +0 -0
  332. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_infra/__init__.py +0 -0
  333. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_infra/arthera.py +0 -0
  334. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_infra/doctor.py +0 -0
  335. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_infra/product.py +0 -0
  336. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_mcp/__init__.py +0 -0
  337. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_mcp/bridge.py +0 -0
  338. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_mcp/circuit.py +0 -0
  339. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_mcp/config.py +0 -0
  340. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_mcp/installer.py +0 -0
  341. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_mcp/server.py +0 -0
  342. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_mcp/tools.py +0 -0
  343. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_sdk/__init__.py +0 -0
  344. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_sdk/client.py +0 -0
  345. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_sdk/providers.py +0 -0
  346. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_sdk/streaming.py +0 -0
  347. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_sdk/types.py +0 -0
  348. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_services/__init__.py +0 -0
  349. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_services/cache.py +0 -0
  350. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_services/context.py +0 -0
  351. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_services/context_checkpoints.py +0 -0
  352. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_services/data.py +0 -0
  353. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_services/provider_health.py +0 -0
  354. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_services/references.py +0 -0
  355. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_services/registry.py +0 -0
  356. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_services/research_protocol.py +0 -0
  357. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_services/research_quality.py +0 -0
  358. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_services/settings.py +0 -0
  359. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_services/usage.py +0 -0
  360. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_skills/__init__.py +0 -0
  361. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_skills/catalog.py +0 -0
  362. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_skills/loader.py +0 -0
  363. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_skills/registry.py +0 -0
  364. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_tools/__init__.py +0 -0
  365. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_tools/financial/__init__.py +0 -0
  366. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_tools/financial/_paths.py +0 -0
  367. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_tools/financial/compliance.py +0 -0
  368. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_tools/financial/factors.py +0 -0
  369. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_tools/financial/risk_tools.py +0 -0
  370. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/aria_tools/financial/strategy.py +0 -0
  371. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/quant_engine/__init__.py +0 -0
  372. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/quant_engine/_namespace.py +0 -0
  373. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/quant_engine/backtest/__init__.py +0 -0
  374. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/quant_engine/backtest/core.py +0 -0
  375. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/quant_engine/backtest/engine.py +0 -0
  376. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/quant_engine/portfolio/__init__.py +0 -0
  377. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/quant_engine/portfolio/optimizer.py +0 -0
  378. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/quant_engine/sports/__init__.py +0 -0
  379. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/quant_engine/sports/calibrator.py +0 -0
  380. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/quant_engine/sports/dixon_coles.py +0 -0
  381. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/quant_engine/sports/elo.py +0 -0
  382. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/quant_engine/sports/form.py +0 -0
  383. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/quant_engine/sports/h2h.py +0 -0
  384. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/quant_engine/sports/ml_model.py +0 -0
  385. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/quant_engine/sports/predictor.py +0 -0
  386. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/quant_engine/sports/tracker.py +0 -0
  387. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/quant_engine/stochastic/__init__.py +0 -0
  388. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/quant_engine/stochastic/gbm_enhanced.py +0 -0
  389. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/quant_engine/stochastic/ito_calculus.py +0 -0
  390. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/quant_engine/stochastic/kelly_criterion.py +0 -0
  391. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/quant_engine/stochastic/monte_carlo_advanced.py +0 -0
  392. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/quant_engine/stochastic/options_pricing.py +0 -0
  393. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packages/quant_engine/stochastic/stochastic_processes.py +0 -0
  394. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packs/__init__.py +0 -0
  395. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packs/base.py +0 -0
  396. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packs/finance/__init__.py +0 -0
  397. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packs/logistics/__init__.py +0 -0
  398. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packs/payments/__init__.py +0 -0
  399. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packs/realty/__init__.py +0 -0
  400. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packs/registry.py +0 -0
  401. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/packs/rules.py +0 -0
  402. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/plan_utils.py +0 -0
  403. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/plugin_loader.py +0 -0
  404. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/portfolio_ledger.py +0 -0
  405. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/preview_server.py +0 -0
  406. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/privacy/__init__.py +0 -0
  407. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/privacy/feedback.py +0 -0
  408. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/project_review.py +0 -0
  409. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/project_review_api.py +0 -0
  410. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/project_review_server.py +0 -0
  411. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/project_tools.py +0 -0
  412. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/providers/__init__.py +0 -0
  413. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/providers/llm/__init__.py +0 -0
  414. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/providers/llm/anthropic.py +0 -0
  415. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/providers/llm/autoconfig.py +0 -0
  416. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/providers/llm/base.py +0 -0
  417. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/providers/llm/custom.py +0 -0
  418. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/providers/llm/ollama.py +0 -0
  419. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/providers/llm/openai_compat.py +0 -0
  420. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/providers/llm/registry.py +0 -0
  421. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/providers/local_image_provider.py +0 -0
  422. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/providers/local_llm_provider.py +0 -0
  423. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/providers/tool_messages.py +0 -0
  424. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/realty_data_tools.py +0 -0
  425. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/relay_store.py +0 -0
  426. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/report_exporters.py +0 -0
  427. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/report_generator.py +0 -0
  428. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/review_service.py +0 -0
  429. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/runtime/__init__.py +0 -0
  430. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/runtime/acceptance.py +0 -0
  431. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/runtime/approval.py +0 -0
  432. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/runtime/budget.py +0 -0
  433. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/runtime/checkpoints.py +0 -0
  434. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/runtime/crash_report.py +0 -0
  435. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/runtime/events.py +0 -0
  436. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/runtime/gateway.py +0 -0
  437. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/runtime/lsp.py +0 -0
  438. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/runtime/orchestrator.py +0 -0
  439. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/runtime/repo_map.py +0 -0
  440. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/runtime/run_state.py +0 -0
  441. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/runtime/run_store.py +0 -0
  442. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/runtime/self_healing.py +0 -0
  443. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/runtime/subagent.py +0 -0
  444. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/runtime/task_ledger.py +0 -0
  445. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/runtime/task_orchestrator.py +0 -0
  446. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/runtime/tool_policy.py +0 -0
  447. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/runtime/worktrees.py +0 -0
  448. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/runway_video_client.py +0 -0
  449. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/safety/__init__.py +0 -0
  450. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/safety/service.py +0 -0
  451. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/setup_wizard.py +0 -0
  452. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/spreadsheet_tools.py +0 -0
  453. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/strategy_vault.py +0 -0
  454. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/tools/__init__.py +0 -0
  455. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/tools/artifact_tools.py +0 -0
  456. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/tools/broker_tools.py +0 -0
  457. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/tools/build_quant_engine.py +0 -0
  458. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/tools/code_audit_tools.py +0 -0
  459. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/tools/computer_use_tools.py +0 -0
  460. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/tools/data_analysis_tools.py +0 -0
  461. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/tools/enterprise_finance_tools.py +0 -0
  462. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/tools/extended_tools.py +0 -0
  463. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/tools/file_analysis_tools.py +0 -0
  464. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/tools/image_gen_tools.py +0 -0
  465. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/tools/local_finance_tools.py +0 -0
  466. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/tools/logistics_carriers.py +0 -0
  467. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/tools/logistics_inventory.py +0 -0
  468. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/tools/logistics_io.py +0 -0
  469. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/tools/logistics_tenancy.py +0 -0
  470. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/tools/logistics_tools.py +0 -0
  471. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/tools/macro_tools.py +0 -0
  472. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/tools/notification_tools.py +0 -0
  473. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/tools/project_tools.py +0 -0
  474. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/tools/realty_data_tools.py +0 -0
  475. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/tools/spreadsheet_tools.py +0 -0
  476. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/tools/stripe_tools.py +0 -0
  477. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/ui/__init__.py +0 -0
  478. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/ui/banner.py +0 -0
  479. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/ui/completer.py +0 -0
  480. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/ui/console.py +0 -0
  481. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/ui/image_render.py +0 -0
  482. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/ui/input_box.py +0 -0
  483. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/ui/mentions.py +0 -0
  484. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/ui/picker.py +0 -0
  485. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/ui/render/__init__.py +0 -0
  486. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/ui/render/finance.py +0 -0
  487. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/ui/render/market.py +0 -0
  488. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/ui/render/output.py +0 -0
  489. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/ui/render/responsive.py +0 -0
  490. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/ui/robot.py +0 -0
  491. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/ui/startup_dashboard.py +0 -0
  492. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/utils/vscode_uri.py +0 -0
  493. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/video_analysis.py +0 -0
  494. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/video_editor.py +0 -0
  495. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/workspace/__init__.py +0 -0
  496. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/workspace/files.py +0 -0
  497. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/workspace/verify.py +0 -0
  498. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/workspace_changes.py +0 -0
  499. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/workspace_context.py +0 -0
  500. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/workspace_service.py +0 -0
  501. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code/workspace_tools.py +0 -0
  502. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code.egg-info/dependency_links.txt +0 -0
  503. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code.egg-info/entry_points.txt +0 -0
  504. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code.egg-info/requires.txt +0 -0
  505. {aria_code-0.91.0 → aria_code-0.93.0}/src/aria_code.egg-info/top_level.txt +0 -0
  506. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_adk_market_tools.py +0 -0
  507. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_agent_key_points_language.py +0 -0
  508. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_agent_team_fallback.py +0 -0
  509. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_analyze_file_tool.py +0 -0
  510. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_architecture_ledger_is_true.py +0 -0
  511. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_architecture_report.py +0 -0
  512. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_aria_cli_core.py +0 -0
  513. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_aria_mcp_server.py +0 -0
  514. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_aria_sdk.py +0 -0
  515. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_artifact_publishing.py +0 -0
  516. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_artifacts_and_reports.py +0 -0
  517. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_ashare_prediction_cmds.py +0 -0
  518. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_backtest_cmds.py +0 -0
  519. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_backtest_engine.py +0 -0
  520. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_backtest_report.py +0 -0
  521. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_binary_bundles_runtime_imports.py +0 -0
  522. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_broken_akshare_is_optional.py +0 -0
  523. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_broker_automation.py +0 -0
  524. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_broker_chat_confirm_gate.py +0 -0
  525. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_broker_planning.py +0 -0
  526. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_broker_safety.py +0 -0
  527. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_broker_tools.py +0 -0
  528. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_budget.py +0 -0
  529. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_business_workflow_cmds.py +0 -0
  530. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_canva_client.py +0 -0
  531. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_canvas_cmds.py +0 -0
  532. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_card_approvals.py +0 -0
  533. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_channel_intake.py +0 -0
  534. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_channels.py +0 -0
  535. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_chart_handlers.py +0 -0
  536. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_chat_bots_fail_closed.py +0 -0
  537. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_chat_routing.py +0 -0
  538. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_ci_security_workflow.py +0 -0
  539. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_cli_app_split.py +0 -0
  540. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_cli_bootstrap.py +0 -0
  541. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_cli_config_store.py +0 -0
  542. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_cli_lifecycle_hooks.py +0 -0
  543. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_cli_runtime_consumer.py +0 -0
  544. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_cli_tool_executor_module.py +0 -0
  545. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_cli_updater.py +0 -0
  546. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_cloud_memory.py +0 -0
  547. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_code_audit_tools.py +0 -0
  548. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_code_review_agent.py +0 -0
  549. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_codegen_output.py +0 -0
  550. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_coder_tester_self_healing.py +0 -0
  551. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_coder_tool_safety.py +0 -0
  552. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_collaboration.py +0 -0
  553. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_command_loggers.py +0 -0
  554. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_command_safety.py +0 -0
  555. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_completions_builder.py +0 -0
  556. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_config_paths.py +0 -0
  557. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_configured_provider.py +0 -0
  558. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_container_entrypoint.py +0 -0
  559. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_container_entrypoints.py +0 -0
  560. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_context_checkpoints.py +0 -0
  561. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_context_references.py +0 -0
  562. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_context_service.py +0 -0
  563. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_conversation_core.py +0 -0
  564. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_crash_report.py +0 -0
  565. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_credential_file_permissions.py +0 -0
  566. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_custom_providers.py +0 -0
  567. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_daemon_gateway_config.py +0 -0
  568. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_dashboard_generator.py +0 -0
  569. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_data_service.py +0 -0
  570. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_data_service_imports.py +0 -0
  571. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_data_without_model.py +0 -0
  572. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_datasource_routing.py +0 -0
  573. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_deep_analysis.py +0 -0
  574. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_degrades_without_quant_engine.py +0 -0
  575. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_dispatcher_pins_match_the_release.py +0 -0
  576. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_doctor.py +0 -0
  577. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_doctor_describes_the_current_install.py +0 -0
  578. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_doctor_npm_scope.py +0 -0
  579. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_engine_boundary.py +0 -0
  580. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_enterprise_tool_honesty.py +0 -0
  581. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_env_switch_docs.py +0 -0
  582. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_evals_harness.py +0 -0
  583. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_event_import_roots.py +0 -0
  584. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_extended_tools.py +0 -0
  585. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_feishu_swarm_config.py +0 -0
  586. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_file_links.py +0 -0
  587. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_finalize_release.py +0 -0
  588. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_finance_renderers.py +0 -0
  589. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_finance_service_catalog.py +0 -0
  590. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_first_run_output.py +0 -0
  591. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_first_run_works.py +0 -0
  592. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_football_agent.py +0 -0
  593. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_football_prediction_output.py +0 -0
  594. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_google_cloud_models.py +0 -0
  595. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_google_cloud_routing.py +0 -0
  596. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_google_login.py +0 -0
  597. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_google_search_provider.py +0 -0
  598. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_headless_is_agentic.py +0 -0
  599. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_honest_surfaces.py +0 -0
  600. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_image_gen_tools.py +0 -0
  601. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_image_inputs.py +0 -0
  602. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_import_graph_budget.py +0 -0
  603. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_intent_router.py +0 -0
  604. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_intent_signals.py +0 -0
  605. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_kling_video_client.py +0 -0
  606. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_lazy_rebind.py +0 -0
  607. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_legacy_module_imports.py +0 -0
  608. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_license_consistency.py +0 -0
  609. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_licensing.py +0 -0
  610. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_local_image_provider.py +0 -0
  611. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_logistics_3pl.py +0 -0
  612. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_logistics_and_finance_agents.py +0 -0
  613. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_lsp.py +0 -0
  614. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_markdown_pdf.py +0 -0
  615. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_market_answers_in_english.py +0 -0
  616. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_market_data_client.py +0 -0
  617. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_market_history_inheritance.py +0 -0
  618. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_market_history_tool.py +0 -0
  619. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_market_hours.py +0 -0
  620. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_market_questions_on_backend.py +0 -0
  621. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_market_symbol_extraction.py +0 -0
  622. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_market_universe.py +0 -0
  623. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_mcp_circuit.py +0 -0
  624. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_mcp_client.py +0 -0
  625. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_mentions.py +0 -0
  626. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_model_capability_registry.py +0 -0
  627. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_model_choice_is_the_users.py +0 -0
  628. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_model_selection_state.py +0 -0
  629. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_narrow_chinese_output.py +0 -0
  630. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_native_binary_entrypoints.py +0 -0
  631. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_native_installer.py +0 -0
  632. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_natural_language_routing.py +0 -0
  633. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_new_modules.py +0 -0
  634. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_no_hardcoded_developer_paths.py +0 -0
  635. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_no_uncommitted_imports.py +0 -0
  636. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_numeric_listings.py +0 -0
  637. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_ollama_stream_imports.py +0 -0
  638. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_ollama_stream_tools.py +0 -0
  639. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_openai_image_client.py +0 -0
  640. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_operations_suite.py +0 -0
  641. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_output_rendering.py +0 -0
  642. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_packages_facade.py +0 -0
  643. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_packaging_constraints.py +0 -0
  644. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_packaging_manifest.py +0 -0
  645. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_packs_domains.py +0 -0
  646. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_pdf_report.py +0 -0
  647. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_pick_best_installed_model.py +0 -0
  648. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_plan_mode.py +0 -0
  649. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_platform_package_assembly.py +0 -0
  650. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_platform_packages.py +0 -0
  651. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_platform_publish.py +0 -0
  652. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_plotly_html_output.py +0 -0
  653. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_portfolio_ledger.py +0 -0
  654. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_post_turn_context_decision.py +0 -0
  655. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_preflight.py +0 -0
  656. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_preview_server.py +0 -0
  657. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_privacy_feedback.py +0 -0
  658. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_project_aria.py +0 -0
  659. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_project_review.py +0 -0
  660. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_project_review_api.py +0 -0
  661. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_prompt_assembly.py +0 -0
  662. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_prompt_selection.py +0 -0
  663. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_provider_autoconfig.py +0 -0
  664. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_provider_error_messages.py +0 -0
  665. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_provider_integration.py +0 -0
  666. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_provider_registry.py +0 -0
  667. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_public_service_status.py +0 -0
  668. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_quant_engine_namespace.py +0 -0
  669. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_rebind_contract.py +0 -0
  670. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_rebind_namespace_contract.py +0 -0
  671. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_relay_client_credentials.py +0 -0
  672. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_relay_event_verification.py +0 -0
  673. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_relay_sends_for_clients.py +0 -0
  674. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_relay_store.py +0 -0
  675. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_relay_url.py +0 -0
  676. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_release_chain.py +0 -0
  677. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_release_commit_identity.py +0 -0
  678. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_release_push_is_atomic.py +0 -0
  679. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_release_reaches_the_registries.py +0 -0
  680. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_release_verification_waits.py +0 -0
  681. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_release_workflow_permissions.py +0 -0
  682. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_report_charts.py +0 -0
  683. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_report_generator.py +0 -0
  684. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_research_protocol.py +0 -0
  685. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_research_quality.py +0 -0
  686. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_responsive_rendering.py +0 -0
  687. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_review_service.py +0 -0
  688. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_root_module_budget.py +0 -0
  689. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_rsi_without_pandas_ta.py +0 -0
  690. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_runtime_acceptance.py +0 -0
  691. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_runtime_agent_loop.py +0 -0
  692. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_runtime_approval.py +0 -0
  693. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_runtime_bridge.py +0 -0
  694. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_runtime_bridge_fallback.py +0 -0
  695. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_runtime_checkpoints.py +0 -0
  696. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_runtime_event_identity.py +0 -0
  697. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_runtime_gateway.py +0 -0
  698. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_runtime_repo_map.py +0 -0
  699. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_runtime_run_store.py +0 -0
  700. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_runtime_tool_executor.py +0 -0
  701. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_runtime_worktrees.py +0 -0
  702. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_runway_video_client.py +0 -0
  703. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_safety_permissions.py +0 -0
  704. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_safety_service.py +0 -0
  705. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_safety_service_adoption.py +0 -0
  706. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_service_diagnostics_security.py +0 -0
  707. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_session_search.py +0 -0
  708. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_settings_service.py +0 -0
  709. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_shipper_digest.py +0 -0
  710. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_single_import_root.py +0 -0
  711. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_skill_agent_binding.py +0 -0
  712. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_skill_catalog.py +0 -0
  713. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_skill_loader.py +0 -0
  714. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_slash_popup.py +0 -0
  715. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_spreadsheet_tools.py +0 -0
  716. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_sse_stream_contract.py +0 -0
  717. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_startup_dashboard.py +0 -0
  718. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_startup_latency.py +0 -0
  719. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_status_language.py +0 -0
  720. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_streaming_pipeline.py +0 -0
  721. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_stripe_agent.py +0 -0
  722. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_subagent.py +0 -0
  723. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_supervisor_routing.py +0 -0
  724. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_system_prompts.py +0 -0
  725. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_system_tools_output.py +0 -0
  726. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_task_orchestrator.py +0 -0
  727. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_team_analysts.py +0 -0
  728. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_team_synthesis.py +0 -0
  729. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_tls_trust_store.py +0 -0
  730. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_tool_policy.py +0 -0
  731. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_tool_rounds_on_openai_apis.py +0 -0
  732. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_tool_scope.py +0 -0
  733. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_tool_step_output.py +0 -0
  734. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_trading_service.py +0 -0
  735. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_tradingview_bridge.py +0 -0
  736. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_turn_planning.py +0 -0
  737. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_ui_completer_references.py +0 -0
  738. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_ui_console_theme.py +0 -0
  739. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_ui_input_box.py +0 -0
  740. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_ui_language_and_model.py +0 -0
  741. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_ui_robot_banner.py +0 -0
  742. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_update_health_routes.py +0 -0
  743. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_verification_hint.py +0 -0
  744. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_verification_policy.py +0 -0
  745. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_version_consistency.py +0 -0
  746. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_version_counter.py +0 -0
  747. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_video_analysis.py +0 -0
  748. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_video_editor.py +0 -0
  749. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_vscode_mcp.py +0 -0
  750. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_warehouse_agents.py +0 -0
  751. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_warehouse_cli_registration.py +0 -0
  752. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_warehouse_erp_client.py +0 -0
  753. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_warehouse_workflow.py +0 -0
  754. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_wheel_is_installable.py +0 -0
  755. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_workspace_changes.py +0 -0
  756. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_workspace_context.py +0 -0
  757. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_workspace_files.py +0 -0
  758. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_workspace_scope.py +0 -0
  759. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_workspace_service.py +0 -0
  760. {aria_code-0.91.0 → aria_code-0.93.0}/tests/test_workspace_verify.py +0 -0
  761. {aria_code-0.91.0 → aria_code-0.93.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.91.0
3
+ Version: 0.93.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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "aria-code"
7
- version = "0.91.0"
7
+ version = "0.93.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.91.0"
20
+ __version__ = "0.93.0"
@@ -103,6 +103,7 @@ class BaseAgent(ABC):
103
103
  self.on_tool_end = on_tool_end
104
104
  self.config = config or {}
105
105
  self.lang = lang
106
+ self.llm_error: Optional[str] = None # why the last model call gave nothing, if it failed
106
107
  self.memory = [] # Short-term conversation history for multi-turn context
107
108
 
108
109
  async def fetch_data(self, symbol: str) -> Dict[str, Any]:
@@ -234,10 +235,14 @@ class BaseAgent(ABC):
234
235
  elif t == "tool_end" and self.on_tool_end:
235
236
  self.on_tool_end(event.get("tool_name", ""), event.get("tool_result", None))
236
237
  elif t == "error":
237
- logger.warning(f"[{self.name}] LLM 错误: {event.get('message')}")
238
+ # The caller falls back to a template and says so; a
239
+ # WARNING here went to the terminal as a raw log line.
240
+ self.llm_error = str(event.get("message") or "error")
241
+ logger.info(f"[{self.name}] LLM 错误: {event.get('message')}")
238
242
  break
239
243
  except Exception as e:
240
- logger.warning(f"[{self.name}] LLM 调用失败: {e}")
244
+ self.llm_error = str(e) or type(e).__name__
245
+ logger.info(f"[{self.name}] LLM 调用失败: {e}")
241
246
  break
242
247
 
243
248
  # 将当前 Assistant 的回复加入消息流
@@ -176,20 +176,24 @@ class PortfolioAgent(BaseAgent):
176
176
  async def analyze_portfolio(
177
177
  self, symbols: List[str], data: Dict[str, Any]
178
178
  ) -> AgentResult:
179
+ zh = self.lang != "en"
179
180
  if len(symbols) < 2:
180
181
  return AgentResult(
181
182
  agent=self.name, symbol=",".join(symbols),
182
- analysis="组合分析需要至少 2 个标的。",
183
+ analysis=("组合分析需要至少 2 个标的。" if zh
184
+ else "A portfolio analysis needs at least 2 symbols."),
183
185
  confidence=0.0, signal="HOLD",
184
- key_points=["标的数量不足"],
186
+ key_points=["标的数量不足" if zh else "Not enough symbols"],
185
187
  )
186
188
 
187
189
  if data.get("error") == "insufficient_data":
188
190
  return AgentResult(
189
191
  agent=self.name, symbol=",".join(symbols),
190
- analysis="无法获取足够的历史价格数据进行组合分析。",
192
+ analysis=("无法获取足够的历史价格数据进行组合分析。" if zh
193
+ else "Not enough price history could be fetched to analyse the portfolio."),
191
194
  confidence=0.3, signal="HOLD",
192
- key_points=["历史数据不足(需要 >20 个交易日)"],
195
+ key_points=["历史数据不足(需要 >20 个交易日)" if zh
196
+ else "Not enough history (needs more than 20 trading days)"],
193
197
  )
194
198
 
195
199
  valid_syms = data.get("valid_symbols", symbols)
@@ -210,12 +214,12 @@ class PortfolioAgent(BaseAgent):
210
214
 
211
215
  analysis = await self._call_llm(self._SYSTEM, prompt, max_tokens=650)
212
216
  if not analysis:
213
- analysis = _template_analysis(valid_syms, data)
217
+ analysis = _template_analysis(valid_syms, data, self.lang)
214
218
 
215
219
  verdict = _extract_verdict(analysis)
216
220
  signal = _verdict_to_signal(verdict)
217
221
  confidence = _estimate_confidence(data)
218
- key_points = _build_key_points(data, verdict)
222
+ key_points = _build_key_points(data, verdict, self.lang)
219
223
 
220
224
  return AgentResult(
221
225
  agent=self.name,
@@ -225,6 +229,9 @@ class PortfolioAgent(BaseAgent):
225
229
  signal=signal,
226
230
  key_points=key_points,
227
231
  data_used={
232
+ # The verdict itself: the signal maps NEEDS_ATTENTION to SELL,
233
+ # and a banner built from the signal said HIGH_RISK.
234
+ "verdict": verdict,
228
235
  "n": len(valid_syms),
229
236
  "port_vol_ann": data.get("port_vol_ann"),
230
237
  "div_ratio": data.get("div_ratio"),
@@ -312,35 +319,45 @@ def _estimate_confidence(d: Dict) -> float:
312
319
  return min(round(base, 2), 0.75)
313
320
 
314
321
 
315
- def _build_key_points(d: Dict, verdict: str) -> List[str]:
322
+ def _build_key_points(d: Dict, verdict: str, lang: str = "zh") -> List[str]:
323
+ zh = lang != "en"
316
324
  pts = []
317
325
  n = len(d.get("valid_symbols", []))
318
326
  if d.get("weight_source") == "ledger":
319
- pts.append(f"{n} 个标的,按真实持仓成本加权")
327
+ pts.append(f"{n} 个标的,按真实持仓成本加权" if zh
328
+ else f"{n} symbols, weighted by the cost of your real positions")
320
329
  else:
321
- pts.append(f"{n} 个标的,等权配置(无真实持仓数据,非实际风险暴露)")
330
+ pts.append(f"{n} 个标的,等权配置(无真实持仓数据,非实际风险暴露)" if zh
331
+ else f"{n} symbols, equal weight (no real positions recorded, so not your actual exposure)")
322
332
 
323
333
  port_vol = d.get("port_vol_ann", 0)
324
334
  if port_vol:
325
- risk_lv = "高风险" if port_vol > 0.30 else ("中等" if port_vol > 0.18 else "低风险")
326
- pts.append(f"组合年化波动 {port_vol*100:.1f}%({risk_lv})")
335
+ if zh:
336
+ risk_lv = "高风险" if port_vol > 0.30 else ("中等" if port_vol > 0.18 else "低风险")
337
+ pts.append(f"组合年化波动 {port_vol*100:.1f}%({risk_lv})")
338
+ else:
339
+ risk_lv = "high" if port_vol > 0.30 else ("medium" if port_vol > 0.18 else "low")
340
+ pts.append(f"Annualised portfolio volatility {port_vol*100:.1f}% ({risk_lv})")
327
341
 
328
342
  div_r = d.get("div_ratio", 1)
329
343
  if div_r < 1.1:
330
- pts.append(f"分散度不足(ratio {div_r:.2f}x,标的相关性高)")
344
+ pts.append(f"分散度不足(ratio {div_r:.2f}x,标的相关性高)" if zh
345
+ else f"Poorly diversified (ratio {div_r:.2f}x, the symbols move together)")
331
346
  else:
332
- pts.append(f"分散度合理(ratio {div_r:.2f}x)")
347
+ pts.append(f"分散度合理(ratio {div_r:.2f}x)" if zh
348
+ else f"Reasonably diversified (ratio {div_r:.2f}x)")
333
349
 
334
350
  high_corr = d.get("high_corr", [])
335
351
  if high_corr:
336
352
  top = high_corr[0]
337
- pts.append(f"最高相关对: {top['sym1']}↔{top['sym2']} ({top['corr']:+.2f})")
353
+ pts.append(f"{'最高相关对' if zh else 'Most correlated pair'}: "
354
+ f"{top['sym1']}↔{top['sym2']} ({top['corr']:+.2f})")
338
355
 
339
- pts.append(f"整体评级: {verdict}")
356
+ pts.append(f"{'整体评级' if zh else 'Overall'}: {verdict}")
340
357
  return pts[:6]
341
358
 
342
359
 
343
- def _template_analysis(symbols: List[str], d: Dict) -> str:
360
+ def _template_analysis(symbols: List[str], d: Dict, lang: str = "zh") -> str:
344
361
  high_corr = d.get("high_corr", [])
345
362
  port_vol = d.get("port_vol_ann", 0)
346
363
  div_r = d.get("div_ratio", 1)
@@ -351,6 +368,18 @@ def _template_analysis(symbols: List[str], d: Dict) -> str:
351
368
  elif len(high_corr) >= 3 or port_vol > 0.30:
352
369
  verdict = "HIGH_RISK"
353
370
 
371
+ if lang == "en":
372
+ lines = [f"{','.join(symbols)} portfolio report (template)"]
373
+ lines.append(f"Annualised volatility: {port_vol*100:.1f}%")
374
+ lines.append(f"Diversification ratio: {div_r:.2f}x")
375
+ if high_corr:
376
+ lines.append(f"{len(high_corr)} highly correlated pairs, the highest "
377
+ f"{high_corr[0]['sym1']}↔{high_corr[0]['sym2']} {high_corr[0]['corr']:+.2f}")
378
+ else:
379
+ lines.append("No highly correlated pairs.")
380
+ lines.append(f"\n{verdict}")
381
+ return "\n".join(lines)
382
+
354
383
  lines = [f"{','.join(symbols)} 组合分析报告(模板)"]
355
384
  lines.append(f"年化波动率: {port_vol*100:.1f}%")
356
385
  lines.append(f"分散度系数: {div_r:.2f}x")
@@ -688,8 +688,13 @@ class PortfolioCommandsMixin:
688
688
  else:
689
689
  symbols = self.terminal.config.get("watchlist", ["AAPL", "MSFT", "GOOGL", "NVDA", "TSLA"])[:10]
690
690
 
691
+ _lang = "zh" if str(self.terminal.config.get("ui_lang", "en")).lower().startswith("zh") else "en"
692
+ _T = (lambda a, b: a) if _lang == "zh" else (lambda a, b: b)
693
+
691
694
  if not symbols:
692
- msg = "请先设置 watchlist、记录持仓(/journal add buy ...)或指定标的:/portfolio analyze AAPL TSLA MSFT"
695
+ msg = _T("请先设置 watchlist、记录持仓(/journal add buy ...)或指定标的:/portfolio analyze AAPL TSLA MSFT",
696
+ "Set a watchlist, record positions (/journal add buy ...) or name the symbols: "
697
+ "/portfolio analyze AAPL TSLA MSFT")
693
698
  self.context.console.print(f"[yellow]{msg}[/yellow]") if self.context.has_rich else print(msg)
694
699
  return
695
700
 
@@ -697,36 +702,34 @@ class PortfolioCommandsMixin:
697
702
  _use_new = False
698
703
  try:
699
704
  from agents.portfolio_agent import PortfolioAgent as _PA
700
- from providers.llm.registry import get_provider as _get_prov, list_available_providers as _laps
701
705
  _use_new = True
702
706
  except ImportError:
703
707
  pass
704
708
 
705
709
  if _use_new:
706
710
  if sym_parts:
707
- hdr = f"分析组合:{' '.join(symbols)}"
711
+ hdr = _T(f"分析组合:{' '.join(symbols)}", f"portfolio of {' '.join(symbols)}")
708
712
  elif ledger_weights:
709
- hdr = "分析真实持仓组合(按成本加权)"
713
+ hdr = _T("分析真实持仓组合(按成本加权)", "your positions, weighted by cost")
710
714
  else:
711
- hdr = "分析 watchlist 组合(等权,无真实持仓数据)"
715
+ hdr = _T("分析 watchlist 组合(等权,无真实持仓数据)",
716
+ "watchlist, equal weight (no positions recorded)")
712
717
  if rebalance:
713
- hdr = "再平衡方案:" + hdr
718
+ hdr = _T("再平衡方案:", "Rebalance · ") + hdr
719
+ _sym_label = _T("标的", "Symbols")
714
720
  if self.context.has_rich:
715
721
  self.context.console.print()
716
722
  self.context.console.print(f" [bold cyan]━━━ /portfolio {hdr} ━━━[/bold cyan]")
717
- self.context.console.print(f" [dim]标的 ({len(symbols)}): {', '.join(symbols)}[/dim]")
723
+ self.context.console.print(f" [dim]{_sym_label} ({len(symbols)}): {', '.join(symbols)}[/dim]")
718
724
  self.context.console.print()
719
725
  else:
720
- print(f"\n ━━━ /portfolio ━━━\n 标的: {', '.join(symbols)}\n")
726
+ print(f"\n ━━━ /portfolio ━━━\n {_sym_label}: {', '.join(symbols)}\n")
721
727
 
722
- _llm = None
723
- try:
724
- all_avail = [p for p in _laps() if p["available"]]
725
- chosen = [p for p in all_avail if p.get("local")] or all_avail
726
- if chosen:
727
- _llm = _get_prov(chosen[0]["name"])
728
- except Exception as _e:
729
- logger.debug("portfolio LLM provider init failed: %s", _e)
728
+ # The model the session is configured for. This took the first
729
+ # local provider, so a Gemini session asked Ollama, which was not
730
+ # running, and printed the connection error as a log line.
731
+ from aria_code.apps.cli.commands.team import build_team_llm_provider
732
+ _llm = build_team_llm_provider(self.terminal.config)
730
733
 
731
734
  tokens: list = []
732
735
  def _on_tok(t):
@@ -734,42 +737,46 @@ class PortfolioCommandsMixin:
734
737
  _sys.stdout.write(t); _sys.stdout.flush()
735
738
 
736
739
  try:
737
- agent = _PA(llm_provider=_llm, on_token=_on_tok)
740
+ agent = _PA(llm_provider=_llm, on_token=_on_tok, lang=_lang)
738
741
  result = await agent.run_portfolio(symbols, weights=ledger_weights)
739
- print() # 换行(流式输出后)
742
+ if tokens:
743
+ print() # 换行(流式输出后)
740
744
 
741
745
  if not result:
742
746
  if self.context.has_rich:
743
- self.context.console.print("[yellow] ⚠ 组合分析返回空结果[/yellow]")
747
+ self.context.console.print(f"[yellow] {_T('组合分析返回空结果', 'The portfolio analysis came back empty')}[/yellow]")
744
748
  return
745
749
 
750
+ if not tokens and getattr(agent, "llm_error", None):
751
+ _note = _T("模型不可用,以下仅为统计结果", "Model unavailable, so this is the statistics only")
752
+ if self.context.has_rich:
753
+ self.context.console.print(f" [dim]{_note}[/dim]")
754
+ else:
755
+ print(f" {_note}")
756
+
757
+ # The verdict the analysis reached. Rebuilt from the signal,
758
+ # NEEDS_ATTENTION (signal SELL) came out as HIGH_RISK.
759
+ _port_verdict = str((result.data_used or {}).get("verdict") or "NEEDS_ATTENTION")
746
760
  if self.context.has_rich:
747
761
  self.context.console.print()
748
762
  for pt in (result.key_points or []):
749
763
  self.context.console.print(f" [dim]• {pt}[/dim]")
750
764
  self.context.console.print()
751
- # Derive portfolio verdict from signal for the banner
752
- _port_verdict = {
753
- "BUY": "HEALTHY",
754
- "HOLD": "NEEDS_ATTENTION",
755
- "SELL": "HIGH_RISK",
756
- "STRONG_BUY": "HEALTHY",
757
- "STRONG_SELL":"HIGH_RISK",
758
- }.get(result.signal.upper() if result.signal else "HOLD", "NEEDS_ATTENTION")
759
765
  _subtitle = " · ".join(result.key_points[:2]) if result.key_points else ""
760
766
  _print_verdict_banner(_port_verdict, subtitle=_subtitle,
761
- confidence=result.confidence)
767
+ confidence=result.confidence, lang=_lang)
762
768
  else:
763
769
  for pt in result.key_points:
764
770
  print(f" • {pt}")
765
- print(f"\n 置信度: {result.confidence:.0%} 信号: {result.signal}")
771
+ print(f"\n {_T('置信度', 'Confidence')}: {result.confidence:.0%} {_port_verdict}")
766
772
 
767
773
  if rebalance and self.context.has_rich:
768
- self.context.console.print("\n [dim]提示: 再平衡建议已包含在上方分析中。"
769
- "如需详细方案,可追问 Aria 具体操作步骤。[/dim]")
774
+ self.context.console.print("\n [dim]" + _T(
775
+ "提示: 再平衡建议已包含在上方分析中。如需详细方案,可追问 Aria 具体操作步骤。",
776
+ "The rebalancing suggestions are in the analysis above; ask Aria for the steps.") + "[/dim]")
770
777
 
771
778
  except Exception as e:
772
- msg = f"组合分析失败: {e}"
779
+ msg = _T(f"组合分析失败: {e}", f"Portfolio analysis failed: {e}")
773
780
  self.context.console.print(f" [red]{msg}[/red]") if self.context.has_rich else print(f" {msg}")
774
781
  return
775
782
 
@@ -33,52 +33,70 @@ __all__ = [
33
33
  ]
34
34
 
35
35
 
36
- def _load_project_context() -> str:
37
- """Load ARIA.md / CLAUDE.md by walking up from cwd (Claude Code style).
36
+ # Per directory: the AGENTS.md family (the convention Codex and other agents
37
+ # share) and Aria's own ARIA.md are both read; CLAUDE.md only when neither is
38
+ # there. AGENTS.override.md stands in for AGENTS.md, as in Codex.
39
+ _AGENTS_NAMES = ("AGENTS.override.md", "AGENTS.md")
40
+ _ARIA_NAMES = ("ARIA.md", ".aria.md")
41
+ _FALLBACK_NAMES = ("CLAUDE.md",)
42
+
43
+
44
+ def _project_rule_files(directory: pathlib.Path) -> list[pathlib.Path]:
45
+ picked = []
46
+ for family in (_AGENTS_NAMES, _ARIA_NAMES):
47
+ hit = next((directory / n for n in family if (directory / n).is_file()), None)
48
+ if hit:
49
+ picked.append(hit)
50
+ if not picked:
51
+ picked = [directory / n for n in _FALLBACK_NAMES if (directory / n).is_file()][:1]
52
+ return picked
38
53
 
39
- Search order per directory: ARIA.md → .aria.md → CLAUDE.md
40
- Walks up at most 5 levels, stops at home dir.
41
- Multiple files are concatenated (child file takes precedence at top).
42
- Total cap: 12KB.
54
+
55
+ def _load_project_context() -> str:
56
+ """Load AGENTS.md / ARIA.md / CLAUDE.md by walking up from cwd.
57
+
58
+ Only ARIA.md and CLAUDE.md were read, so a repository set up for Codex
59
+ and other agents through AGENTS.md gave Aria none of its rules. The walk
60
+ now stops at the repository root (a parent of the repository is not part
61
+ of the project), files nearer the working directory come first and get
62
+ first claim on the size cap, and ~/.arthera/ARIA.md comes last. It came
63
+ first, so a long global profile could crowd the project's rules out.
43
64
  """
44
65
  _MAX_BYTES = 12288
45
66
  _MAX_LEVELS = 5
46
- _NAMES = ("ARIA.md", ".aria.md", "CLAUDE.md")
47
67
 
48
68
  home = pathlib.Path.home()
49
69
  cwd = pathlib.Path.cwd().resolve()
50
70
 
51
- found: list[tuple[pathlib.Path, str]] = [] # (file_path, content)
71
+ found: list[tuple[pathlib.Path, str]] = [] # nearest first
72
+ seen_text: set[str] = set()
73
+
74
+ def add(path: pathlib.Path) -> None:
75
+ try:
76
+ content = path.read_text(encoding="utf-8")
77
+ except Exception:
78
+ return
79
+ key = content.strip()
80
+ if key and key not in seen_text: # a CLAUDE.md copied to AGENTS.md, a symlink
81
+ seen_text.add(key)
82
+ found.append((path, content))
83
+
52
84
  current = cwd
53
85
  for _ in range(_MAX_LEVELS):
54
- for name in _NAMES:
55
- p = current / name
56
- if p.is_file():
57
- try:
58
- content = p.read_text(encoding="utf-8")
59
- found.append((p, content))
60
- except Exception:
61
- pass
62
- break # only one file per directory level
63
- if current == home or current.parent == current:
86
+ for path in _project_rule_files(current):
87
+ add(path)
88
+ if current == home or current.parent == current or (current / ".git").exists():
64
89
  break
65
90
  current = current.parent
66
91
 
67
- # Global user file — lowest priority background layer, project files override it.
68
- # Lives at ~/.arthera/ARIA.md; user can edit with /memory edit global
92
+ # Global user file — lowest priority; /memory edit global edits it.
69
93
  _global_aria = home / ".arthera" / "ARIA.md"
70
94
  if _global_aria.is_file() and not any(f == _global_aria for f, _ in found):
71
- try:
72
- _gc = _global_aria.read_text(encoding="utf-8")
73
- if _gc.strip():
74
- found.insert(0, (_global_aria, _gc)) # prepend = lowest priority
75
- except Exception:
76
- pass
95
+ add(_global_aria)
77
96
 
78
97
  if not found:
79
98
  return ""
80
99
 
81
- # Child directories first (most specific context wins), then parents
82
100
  blocks: list[str] = []
83
101
  total = 0
84
102
  for fpath, content in found:
@@ -89,7 +107,9 @@ def _load_project_context() -> str:
89
107
  if total >= _MAX_BYTES:
90
108
  break
91
109
 
92
- return "\n\n## Project Context\n" + "\n\n".join(blocks)
110
+ header = ("\n\n## Project Context\n"
111
+ "Where these files disagree, the one listed first (nearest the working directory) wins.\n\n")
112
+ return header + "\n\n".join(blocks)
93
113
 
94
114
 
95
115
  def _display_value(value, digits: int = 2, suffix: str = "") -> str:
@@ -93,13 +93,14 @@ def build_local_tool_schemas(
93
93
  "type": "function",
94
94
  "function": {
95
95
  "name": "edit_file",
96
- "description": "Edit a file by replacing old_string with new_string. Read the file first to get the exact text to replace.",
96
+ "description": "Edit a file by replacing old_string with new_string. Read the file first to get the exact text to replace. old_string must match exactly one place: include enough surrounding lines to make it unique, or set replace_all to change every match.",
97
97
  "parameters": {
98
98
  "type": "object",
99
99
  "properties": {
100
100
  "path": {"type": "string", "description": "File path to edit"},
101
101
  "old_string": {"type": "string", "description": "Exact text to find and replace (must match exactly)"},
102
102
  "new_string": {"type": "string", "description": "Replacement text"},
103
+ "replace_all": {"type": "boolean", "description": "Replace every match instead of requiring exactly one (default false)"},
103
104
  },
104
105
  "required": ["path", "old_string", "new_string"],
105
106
  },
@@ -203,13 +204,16 @@ def build_local_tool_schemas(
203
204
  "type": "function",
204
205
  "function": {
205
206
  "name": "run_command",
206
- "description": "Run a shell command. Use for: git, pip, python, pytest, ls, etc.",
207
+ "description": "Run a shell command. Use for: git, pip, python, pytest, ls, etc. For a server, watcher or anything that keeps running, set background=true.",
207
208
  "parameters": {
208
209
  "type": "object",
209
210
  "properties": {
210
211
  "command": {"type": "string", "description": "Shell command to run"},
211
212
  "cwd": {"type": "string", "description": "Working directory (optional)"},
212
213
  "timeout": {"type": "integer", "description": "Timeout in seconds (max 300, default 120). Use 180+ for data-heavy scripts."},
214
+ "background": {"type": "boolean", "description": "Start a long-running command (dev server, watcher, interactive program) and return at once with a process_id; use the process tool to read its output, send input or stop it"},
215
+ "wait_seconds": {"type": "number", "description": "With background: how long to wait for first output (default 3, max 30)"},
216
+ "until": {"type": "string", "description": "With background: return as soon as this regex appears in the output, e.g. 'Listening on'"},
213
217
  "sandbox": {"type": "boolean", "description": "Set to true to securely execute the command inside an isolated Docker container instead of the host machine. Mandatory for running third-party or untested code."}
214
218
  },
215
219
  "required": ["command"],
@@ -533,4 +537,5 @@ def build_local_tool_schemas(
533
537
  }
534
538
  }
535
539
  },
540
+ __import__("aria_code.runtime.processes", fromlist=["PROCESS_SCHEMA"]).PROCESS_SCHEMA,
536
541
  ]
@@ -413,7 +413,7 @@ async def stream_ollama(ollama_url: str, message: str, history: list,
413
413
  _CU_TOOL_NAMES = {"browser_navigate", "browser_screenshot",
414
414
  "computer_screenshot", "computer_action"}
415
415
  _CODE_TOOL_NAMES = {"read_file", "write_file", "edit_file", "list_files",
416
- "search_code", "run_command", "github",
416
+ "search_code", "run_command", "process", "github",
417
417
  "glob", "notebook_read", "notebook_edit"}
418
418
  _FINANCE_TOOL_NAMES = {
419
419
  "get_market_data", "get_market_history", "calculate_factors",