aria-code 0.81.0__tar.gz → 0.83.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 (743) hide show
  1. {aria_code-0.81.0/src/aria_code.egg-info → aria_code-0.83.0}/PKG-INFO +1 -1
  2. {aria_code-0.81.0 → aria_code-0.83.0}/pyproject.toml +1 -1
  3. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/_version.py +1 -1
  4. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/analysis_cmds.py +13 -11
  5. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/broker_cmds.py +5 -3
  6. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/business_workflow_cmds.py +5 -2
  7. aria_code-0.83.0/src/aria_code/apps/cli/commands/catalog.py +160 -0
  8. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/core_cmds.py +113 -5
  9. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/data_cmds.py +11 -7
  10. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/market_cmds.py +8 -6
  11. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/orchestrator_cmds.py +3 -1
  12. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/portfolio_cmds.py +3 -1
  13. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/handlers/market_handlers.py +9 -4
  14. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/i18n.py +11 -0
  15. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/providers/base.py +53 -0
  16. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/utils/market_detect.py +35 -2
  17. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/aria_cli.py +9 -2
  18. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/runtime/agent_loop.py +39 -0
  19. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/ui/completer.py +40 -15
  20. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/ui/input_box.py +24 -7
  21. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/ui/render/market.py +23 -15
  22. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/ui/render/output.py +19 -2
  23. {aria_code-0.81.0 → aria_code-0.83.0/src/aria_code.egg-info}/PKG-INFO +1 -1
  24. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code.egg-info/SOURCES.txt +4 -0
  25. aria_code-0.83.0/tests/test_first_run_output.py +107 -0
  26. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_market_answers_in_english.py +6 -0
  27. aria_code-0.83.0/tests/test_numeric_listings.py +57 -0
  28. aria_code-0.83.0/tests/test_slash_popup.py +162 -0
  29. aria_code-0.83.0/tests/test_status_language.py +70 -0
  30. aria_code-0.81.0/src/aria_code/apps/cli/commands/catalog.py +0 -87
  31. {aria_code-0.81.0 → aria_code-0.83.0}/LICENSE +0 -0
  32. {aria_code-0.81.0 → aria_code-0.83.0}/NOTICE +0 -0
  33. {aria_code-0.81.0 → aria_code-0.83.0}/README.md +0 -0
  34. {aria_code-0.81.0 → aria_code-0.83.0}/setup.cfg +0 -0
  35. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/__init__.py +0 -0
  36. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/adk_apps/__init__.py +0 -0
  37. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/adk_apps/aria_code_review/__init__.py +0 -0
  38. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/adk_apps/aria_code_review/agent.py +0 -0
  39. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/adk_apps/aria_research/__init__.py +0 -0
  40. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/adk_apps/aria_research/agent.py +0 -0
  41. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/__init__.py +0 -0
  42. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/base.py +0 -0
  43. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/code_review.py +0 -0
  44. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/deep/__init__.py +0 -0
  45. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/deep/calibration_loop.py +0 -0
  46. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/deep/critic.py +0 -0
  47. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/deep/deepen.py +0 -0
  48. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/deep/models.py +0 -0
  49. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/deep/pipeline.py +0 -0
  50. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/deep/quant_fusion.py +0 -0
  51. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/deep/themes.py +0 -0
  52. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/deep/tiers.py +0 -0
  53. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/engineering/__init__.py +0 -0
  54. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/engineering/coder.py +0 -0
  55. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/engineering/tester.py +0 -0
  56. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/financial/__init__.py +0 -0
  57. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/financial/cashflow_burn.py +0 -0
  58. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/financial/catalyst.py +0 -0
  59. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/financial/corporate_finance.py +0 -0
  60. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/financial/debate.py +0 -0
  61. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/financial/earnings.py +0 -0
  62. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/financial/fundamental.py +0 -0
  63. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/financial/macro.py +0 -0
  64. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/financial/news.py +0 -0
  65. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/financial/risk.py +0 -0
  66. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/financial/sector.py +0 -0
  67. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/financial/strategist.py +0 -0
  68. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/financial/stripe_revenue.py +0 -0
  69. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/financial/synthesis.py +0 -0
  70. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/financial/technical.py +0 -0
  71. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/orchestrator.py +0 -0
  72. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/portfolio_agent.py +0 -0
  73. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/realty/__init__.py +0 -0
  74. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/realty/asset_diagnosis.py +0 -0
  75. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/realty/business_match.py +0 -0
  76. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/realty/cashflow_verify.py +0 -0
  77. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/realty/contract_rules.py +0 -0
  78. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/realty/energy_anomaly.py +0 -0
  79. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/realty/exit_settlement.py +0 -0
  80. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/realty/fulfillment_risk.py +0 -0
  81. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/realty/ops_optimize.py +0 -0
  82. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/realty/revenue_share.py +0 -0
  83. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/registry.py +0 -0
  84. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/signal_scheme.py +0 -0
  85. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/sports/__init__.py +0 -0
  86. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/sports/football_agent.py +0 -0
  87. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/supervisor.py +0 -0
  88. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/team.py +0 -0
  89. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/warehouse/__init__.py +0 -0
  90. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/warehouse/contracts.py +0 -0
  91. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/warehouse/dashboard.py +0 -0
  92. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/warehouse/fulfillment_leadtime.py +0 -0
  93. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/warehouse/inbound_exceptions.py +0 -0
  94. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/warehouse/inventory_health.py +0 -0
  95. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/warehouse/local_run.py +0 -0
  96. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/warehouse/local_snapshot.py +0 -0
  97. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/warehouse/logistics_cost.py +0 -0
  98. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/warehouse/logistics_sync.py +0 -0
  99. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/agents/warehouse/workflow.py +0 -0
  100. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/aliyun_data_client.py +0 -0
  101. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/README.md +0 -0
  102. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/__init__.py +0 -0
  103. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/channels/README.md +0 -0
  104. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/channels/__init__.py +0 -0
  105. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/channels/approvals.py +0 -0
  106. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/channels/conversation.py +0 -0
  107. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/channels/digest.py +0 -0
  108. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/channels/intake.py +0 -0
  109. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/channels/registry.py +0 -0
  110. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/channels/tradingview.py +0 -0
  111. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/README.md +0 -0
  112. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/__init__.py +0 -0
  113. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/_optional.py +0 -0
  114. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/bootstrap.py +0 -0
  115. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/broker_render.py +0 -0
  116. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/codegen_paths.py +0 -0
  117. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/__init__.py +0 -0
  118. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/_business_render.py +0 -0
  119. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/_ui.py +0 -0
  120. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/ashare_prediction_cmds.py +0 -0
  121. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/auth_cmds.py +0 -0
  122. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/backtest_cmds.py +0 -0
  123. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/canvas_cmds.py +0 -0
  124. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/diagnostic_cmds.py +0 -0
  125. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/diagnostic_ops_cmds.py +0 -0
  126. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/file_cmds.py +0 -0
  127. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/finance_service_cmds.py +0 -0
  128. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/fx_commodity_cmds.py +0 -0
  129. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/market.py +0 -0
  130. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/market_context.py +0 -0
  131. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/market_render.py +0 -0
  132. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/model_cmds.py +0 -0
  133. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/ops_cmds.py +0 -0
  134. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/pdf_export_cmds.py +0 -0
  135. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/report.py +0 -0
  136. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/scaffold_templates.py +0 -0
  137. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/session_cmds.py +0 -0
  138. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/session_ux_cmds.py +0 -0
  139. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/team.py +0 -0
  140. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/team_render.py +0 -0
  141. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/ui_cmds.py +0 -0
  142. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/warehouse_cmds.py +0 -0
  143. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/workflow_cmds.py +0 -0
  144. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/workspace_cmds.py +0 -0
  145. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/config_paths.py +0 -0
  146. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/config_store.py +0 -0
  147. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/constants.py +0 -0
  148. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/context.py +0 -0
  149. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/deterministic.py +0 -0
  150. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/direct.py +0 -0
  151. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/finance_service_catalog.py +0 -0
  152. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/football_reports.py +0 -0
  153. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/github_app_auth.py +0 -0
  154. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/google_login.py +0 -0
  155. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/handlers/__init__.py +0 -0
  156. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/handlers/broker_handlers.py +0 -0
  157. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/handlers/chart_handlers.py +0 -0
  158. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/handlers/realty_handlers.py +0 -0
  159. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/handlers/sports_handlers.py +0 -0
  160. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/handlers/strategy_advice.py +0 -0
  161. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/helpers.py +0 -0
  162. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/hooks.py +0 -0
  163. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/intent.py +0 -0
  164. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/intent_router.py +0 -0
  165. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/intent_signals.py +0 -0
  166. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/lifecycle_hooks.py +0 -0
  167. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/local_tool_schemas.py +0 -0
  168. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/main.py +0 -0
  169. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/market_hours.py +0 -0
  170. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/market_metadata.py +0 -0
  171. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/market_universe.py +0 -0
  172. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/message_processing.py +0 -0
  173. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/model_catalog.py +0 -0
  174. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/pdf_report.py +0 -0
  175. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/plan_mode.py +0 -0
  176. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/plotly_html.py +0 -0
  177. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/prediction_feedback.py +0 -0
  178. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/preflight.py +0 -0
  179. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/project_aria.py +0 -0
  180. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/prompt_assembly.py +0 -0
  181. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/prompts/__init__.py +0 -0
  182. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/prompts/coding.py +0 -0
  183. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/prompts/select.py +0 -0
  184. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/prompts/system_prompts.py +0 -0
  185. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/prompts/ui.py +0 -0
  186. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/provider_endpoints.py +0 -0
  187. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/provider_keys.py +0 -0
  188. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/providers/__init__.py +0 -0
  189. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/providers/chat_routing.py +0 -0
  190. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/providers/collaboration.py +0 -0
  191. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/providers/llm/__init__.py +0 -0
  192. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/providers/llm/offline_responses.py +0 -0
  193. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/providers/llm/ollama_stream.py +0 -0
  194. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/providers/llm/response_cache.py +0 -0
  195. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/providers/llm/sse_stream.py +0 -0
  196. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/providers/runtime_bridge.py +0 -0
  197. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/providers/vertexai_stream.py +0 -0
  198. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/review_runner.py +0 -0
  199. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/runtime_consumer.py +0 -0
  200. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/sandbox.py +0 -0
  201. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/session_export.py +0 -0
  202. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/session_jsonl.py +0 -0
  203. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/session_store.py +0 -0
  204. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/skills_catalog.py +0 -0
  205. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/todo_tracker.py +0 -0
  206. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/tool_executor.py +0 -0
  207. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/tool_registry.py +0 -0
  208. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/tool_scope.py +0 -0
  209. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/tools/__init__.py +0 -0
  210. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/tools/context.py +0 -0
  211. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/tools/file_tools.py +0 -0
  212. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/tools/market_tools.py +0 -0
  213. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/tools/notebook_tools.py +0 -0
  214. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/tools/system_tools.py +0 -0
  215. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/tools/write_tools.py +0 -0
  216. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/tradingview_bridge.py +0 -0
  217. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/turn_planning.py +0 -0
  218. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/update_check.py +0 -0
  219. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/updater.py +0 -0
  220. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/cli/utils/__init__.py +0 -0
  221. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/daemon/README.md +0 -0
  222. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/vscode/README.md +0 -0
  223. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/apps/vscode/package.json +0 -0
  224. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/aria_daemon.py +0 -0
  225. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/aria_feishu_bot.py +0 -0
  226. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/aria_mcp_server.py +0 -0
  227. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/aria_relay_client.py +0 -0
  228. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/aria_relay_server.py +0 -0
  229. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/aria_telegram_bot.py +0 -0
  230. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/ariarc.py +0 -0
  231. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/artifacts.py +0 -0
  232. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/backtest_engine.py +0 -0
  233. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/backtest_report.py +0 -0
  234. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/brokers/__init__.py +0 -0
  235. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/brokers/automation.py +0 -0
  236. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/brokers/base.py +0 -0
  237. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/brokers/capabilities.py +0 -0
  238. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/brokers/cn/__init__.py +0 -0
  239. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/brokers/cn/easytrader_broker.py +0 -0
  240. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/brokers/cn/futu_broker.py +0 -0
  241. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/brokers/cn/longbridge_broker.py +0 -0
  242. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/brokers/cn/tiger_broker.py +0 -0
  243. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/brokers/cn/xtquant_broker.py +0 -0
  244. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/brokers/config.py +0 -0
  245. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/brokers/intl/__init__.py +0 -0
  246. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/brokers/intl/alpaca_broker.py +0 -0
  247. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/brokers/intl/ibkr_broker.py +0 -0
  248. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/brokers/intl/trading212_broker.py +0 -0
  249. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/brokers/intl/webull_broker.py +0 -0
  250. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/brokers/paper_broker.py +0 -0
  251. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/brokers/planning.py +0 -0
  252. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/brokers/registry.py +0 -0
  253. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/brokers/trading.py +0 -0
  254. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/canva_client.py +0 -0
  255. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/change_store.py +0 -0
  256. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/clients/__init__.py +0 -0
  257. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/clients/aliyun_data_client.py +0 -0
  258. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/clients/aria_relay_client.py +0 -0
  259. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/clients/canva_client.py +0 -0
  260. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/clients/figma_client.py +0 -0
  261. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/clients/football_data_client.py +0 -0
  262. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/clients/kling_video_client.py +0 -0
  263. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/clients/market_data_client.py +0 -0
  264. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/clients/openai_image_client.py +0 -0
  265. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/clients/runway_video_client.py +0 -0
  266. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/clients/warehouse_erp_client.py +0 -0
  267. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/cloud_memory.py +0 -0
  268. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/command_safety.py +0 -0
  269. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/computer_use_tools.py +0 -0
  270. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/dashboard_generator.py +0 -0
  271. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/data_analysis_tools.py +0 -0
  272. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/data_cleaner.py +0 -0
  273. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/data_service.py +0 -0
  274. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/datasources/__init__.py +0 -0
  275. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/datasources/base.py +0 -0
  276. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/datasources/router.py +0 -0
  277. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/datasources/sources/__init__.py +0 -0
  278. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/datasources/sources/akshare_source.py +0 -0
  279. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/datasources/sources/alpha_vantage_source.py +0 -0
  280. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/datasources/sources/edgar_source.py +0 -0
  281. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/datasources/sources/finnhub_source.py +0 -0
  282. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/datasources/sources/fred_source.py +0 -0
  283. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/datasources/sources/tushare_source.py +0 -0
  284. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/datasources/sources/web_scraper_source.py +0 -0
  285. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/datasources/sources/world_bank_source.py +0 -0
  286. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/datasources/sources/yfinance_source.py +0 -0
  287. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/demo_player.py +0 -0
  288. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/doctor.py +0 -0
  289. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/domain/__init__.py +0 -0
  290. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/domain/backtest_engine.py +0 -0
  291. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/domain/backtest_report.py +0 -0
  292. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/domain/finance_formulas.py +0 -0
  293. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/domain/portfolio_ledger.py +0 -0
  294. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/domain/strategy_vault.py +0 -0
  295. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/evals/__init__.py +0 -0
  296. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/evals/harness.py +0 -0
  297. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/evals/runner.py +0 -0
  298. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/external_agent_runner.py +0 -0
  299. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/figma_client.py +0 -0
  300. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/file_analysis_tools.py +0 -0
  301. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/finance_formulas.py +0 -0
  302. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/football_data_client.py +0 -0
  303. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/image_gen_tools.py +0 -0
  304. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/intent_classifier.py +0 -0
  305. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/kling_video_client.py +0 -0
  306. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/licensing.py +0 -0
  307. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/local_finance_tools.py +0 -0
  308. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/local_image_provider.py +0 -0
  309. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/local_llm_provider.py +0 -0
  310. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/macro_tools.py +0 -0
  311. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/markdown_pdf.py +0 -0
  312. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/market_data_client.py +0 -0
  313. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/mcp_client.py +0 -0
  314. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/memory_manager.py +0 -0
  315. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/model_capability.py +0 -0
  316. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/notification_tools.py +0 -0
  317. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/openai_image_client.py +0 -0
  318. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/__init__.py +0 -0
  319. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/adk_bridge/__init__.py +0 -0
  320. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/adk_bridge/code_review_tools.py +0 -0
  321. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/adk_bridge/market_tools.py +0 -0
  322. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_agents/__init__.py +0 -0
  323. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_agents/manifest.py +0 -0
  324. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_core/__init__.py +0 -0
  325. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_core/architecture.py +0 -0
  326. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_core/export.py +0 -0
  327. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_core/manifest.py +0 -0
  328. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_core/paths.py +0 -0
  329. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_core/secure_file.py +0 -0
  330. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_infra/__init__.py +0 -0
  331. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_infra/arthera.py +0 -0
  332. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_infra/doctor.py +0 -0
  333. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_infra/product.py +0 -0
  334. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_mcp/__init__.py +0 -0
  335. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_mcp/bridge.py +0 -0
  336. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_mcp/circuit.py +0 -0
  337. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_mcp/config.py +0 -0
  338. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_mcp/installer.py +0 -0
  339. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_mcp/server.py +0 -0
  340. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_mcp/tools.py +0 -0
  341. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_sdk/__init__.py +0 -0
  342. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_sdk/client.py +0 -0
  343. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_sdk/providers.py +0 -0
  344. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_sdk/streaming.py +0 -0
  345. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_sdk/types.py +0 -0
  346. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_services/__init__.py +0 -0
  347. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_services/cache.py +0 -0
  348. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_services/context.py +0 -0
  349. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_services/context_checkpoints.py +0 -0
  350. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_services/data.py +0 -0
  351. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_services/provider_health.py +0 -0
  352. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_services/references.py +0 -0
  353. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_services/registry.py +0 -0
  354. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_services/research_protocol.py +0 -0
  355. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_services/research_quality.py +0 -0
  356. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_services/settings.py +0 -0
  357. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_services/usage.py +0 -0
  358. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_skills/__init__.py +0 -0
  359. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_skills/catalog.py +0 -0
  360. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_skills/loader.py +0 -0
  361. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_skills/registry.py +0 -0
  362. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_tools/__init__.py +0 -0
  363. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_tools/financial/__init__.py +0 -0
  364. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_tools/financial/_paths.py +0 -0
  365. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_tools/financial/compliance.py +0 -0
  366. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_tools/financial/factors.py +0 -0
  367. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_tools/financial/risk_tools.py +0 -0
  368. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_tools/financial/strategy.py +0 -0
  369. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/aria_tools/registry.py +0 -0
  370. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/__init__.py +0 -0
  371. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/_namespace.py +0 -0
  372. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/backtest/__init__.py +0 -0
  373. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/backtest/core.py +0 -0
  374. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/backtest/engine.py +0 -0
  375. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/portfolio/__init__.py +0 -0
  376. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/portfolio/optimizer.py +0 -0
  377. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/sports/__init__.py +0 -0
  378. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/sports/calibrator.py +0 -0
  379. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/sports/dixon_coles.py +0 -0
  380. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/sports/elo.py +0 -0
  381. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/sports/form.py +0 -0
  382. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/sports/h2h.py +0 -0
  383. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/sports/ml_model.py +0 -0
  384. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/sports/predictor.py +0 -0
  385. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/sports/tracker.py +0 -0
  386. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/stochastic/__init__.py +0 -0
  387. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/stochastic/gbm_enhanced.py +0 -0
  388. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/stochastic/ito_calculus.py +0 -0
  389. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/stochastic/kelly_criterion.py +0 -0
  390. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/stochastic/monte_carlo_advanced.py +0 -0
  391. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/stochastic/options_pricing.py +0 -0
  392. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/stochastic/stochastic_processes.py +0 -0
  393. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packs/__init__.py +0 -0
  394. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packs/base.py +0 -0
  395. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packs/finance/__init__.py +0 -0
  396. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packs/logistics/__init__.py +0 -0
  397. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packs/payments/__init__.py +0 -0
  398. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packs/realty/__init__.py +0 -0
  399. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packs/registry.py +0 -0
  400. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/packs/rules.py +0 -0
  401. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/plan_utils.py +0 -0
  402. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/plugin_loader.py +0 -0
  403. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/portfolio_ledger.py +0 -0
  404. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/preview_server.py +0 -0
  405. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/privacy/__init__.py +0 -0
  406. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/privacy/feedback.py +0 -0
  407. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/project_review.py +0 -0
  408. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/project_review_api.py +0 -0
  409. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/project_review_server.py +0 -0
  410. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/project_tools.py +0 -0
  411. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/providers/__init__.py +0 -0
  412. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/providers/llm/__init__.py +0 -0
  413. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/providers/llm/anthropic.py +0 -0
  414. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/providers/llm/autoconfig.py +0 -0
  415. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/providers/llm/base.py +0 -0
  416. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/providers/llm/custom.py +0 -0
  417. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/providers/llm/ollama.py +0 -0
  418. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/providers/llm/openai_compat.py +0 -0
  419. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/providers/llm/registry.py +0 -0
  420. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/providers/local_image_provider.py +0 -0
  421. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/providers/local_llm_provider.py +0 -0
  422. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/providers/tool_messages.py +0 -0
  423. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/realty_data_tools.py +0 -0
  424. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/relay_store.py +0 -0
  425. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/report_exporters.py +0 -0
  426. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/report_generator.py +0 -0
  427. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/review_service.py +0 -0
  428. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/runtime/__init__.py +0 -0
  429. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/runtime/acceptance.py +0 -0
  430. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/runtime/approval.py +0 -0
  431. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/runtime/budget.py +0 -0
  432. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/runtime/checkpoints.py +0 -0
  433. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/runtime/crash_report.py +0 -0
  434. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/runtime/events.py +0 -0
  435. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/runtime/gateway.py +0 -0
  436. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/runtime/lsp.py +0 -0
  437. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/runtime/orchestrator.py +0 -0
  438. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/runtime/repo_map.py +0 -0
  439. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/runtime/run_state.py +0 -0
  440. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/runtime/run_store.py +0 -0
  441. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/runtime/self_healing.py +0 -0
  442. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/runtime/subagent.py +0 -0
  443. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/runtime/task_ledger.py +0 -0
  444. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/runtime/task_orchestrator.py +0 -0
  445. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/runtime/tool_executor.py +0 -0
  446. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/runtime/tool_policy.py +0 -0
  447. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/runtime/worktrees.py +0 -0
  448. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/runway_video_client.py +0 -0
  449. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/safety/__init__.py +0 -0
  450. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/safety/permissions.py +0 -0
  451. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/safety/service.py +0 -0
  452. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/setup_wizard.py +0 -0
  453. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/spreadsheet_tools.py +0 -0
  454. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/strategy_vault.py +0 -0
  455. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/tools/__init__.py +0 -0
  456. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/tools/artifact_tools.py +0 -0
  457. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/tools/broker_tools.py +0 -0
  458. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/tools/build_quant_engine.py +0 -0
  459. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/tools/code_audit_tools.py +0 -0
  460. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/tools/computer_use_tools.py +0 -0
  461. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/tools/data_analysis_tools.py +0 -0
  462. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/tools/enterprise_finance_tools.py +0 -0
  463. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/tools/extended_tools.py +0 -0
  464. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/tools/file_analysis_tools.py +0 -0
  465. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/tools/image_gen_tools.py +0 -0
  466. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/tools/local_finance_tools.py +0 -0
  467. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/tools/logistics_carriers.py +0 -0
  468. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/tools/logistics_inventory.py +0 -0
  469. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/tools/logistics_io.py +0 -0
  470. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/tools/logistics_tenancy.py +0 -0
  471. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/tools/logistics_tools.py +0 -0
  472. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/tools/macro_tools.py +0 -0
  473. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/tools/notification_tools.py +0 -0
  474. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/tools/project_tools.py +0 -0
  475. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/tools/realty_data_tools.py +0 -0
  476. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/tools/spreadsheet_tools.py +0 -0
  477. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/tools/stripe_tools.py +0 -0
  478. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/ui/__init__.py +0 -0
  479. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/ui/banner.py +0 -0
  480. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/ui/console.py +0 -0
  481. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/ui/image_render.py +0 -0
  482. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/ui/picker.py +0 -0
  483. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/ui/render/__init__.py +0 -0
  484. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/ui/render/finance.py +0 -0
  485. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/ui/render/responsive.py +0 -0
  486. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/ui/render/team.py +0 -0
  487. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/ui/robot.py +0 -0
  488. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/ui/startup_dashboard.py +0 -0
  489. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/utils/vscode_uri.py +0 -0
  490. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/video_analysis.py +0 -0
  491. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/video_editor.py +0 -0
  492. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/workspace/__init__.py +0 -0
  493. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/workspace/files.py +0 -0
  494. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/workspace/verify.py +0 -0
  495. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/workspace_changes.py +0 -0
  496. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/workspace_context.py +0 -0
  497. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/workspace_service.py +0 -0
  498. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code/workspace_tools.py +0 -0
  499. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code.egg-info/dependency_links.txt +0 -0
  500. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code.egg-info/entry_points.txt +0 -0
  501. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code.egg-info/requires.txt +0 -0
  502. {aria_code-0.81.0 → aria_code-0.83.0}/src/aria_code.egg-info/top_level.txt +0 -0
  503. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_adk_market_tools.py +0 -0
  504. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_agent_team_fallback.py +0 -0
  505. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_analyze_file_tool.py +0 -0
  506. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_architecture_ledger_is_true.py +0 -0
  507. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_architecture_report.py +0 -0
  508. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_aria_cli_core.py +0 -0
  509. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_aria_mcp_server.py +0 -0
  510. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_aria_sdk.py +0 -0
  511. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_artifact_publishing.py +0 -0
  512. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_artifacts_and_reports.py +0 -0
  513. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_ashare_prediction_cmds.py +0 -0
  514. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_backtest_cmds.py +0 -0
  515. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_backtest_engine.py +0 -0
  516. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_backtest_report.py +0 -0
  517. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_binary_bundles_runtime_imports.py +0 -0
  518. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_broken_akshare_is_optional.py +0 -0
  519. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_broker_automation.py +0 -0
  520. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_broker_chat_confirm_gate.py +0 -0
  521. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_broker_planning.py +0 -0
  522. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_broker_safety.py +0 -0
  523. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_broker_tools.py +0 -0
  524. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_budget.py +0 -0
  525. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_business_workflow_cmds.py +0 -0
  526. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_canva_client.py +0 -0
  527. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_canvas_cmds.py +0 -0
  528. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_card_approvals.py +0 -0
  529. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_channel_intake.py +0 -0
  530. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_channels.py +0 -0
  531. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_chart_handlers.py +0 -0
  532. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_chat_bots_fail_closed.py +0 -0
  533. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_chat_routing.py +0 -0
  534. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_ci_security_workflow.py +0 -0
  535. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_cli_app_split.py +0 -0
  536. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_cli_bootstrap.py +0 -0
  537. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_cli_config_store.py +0 -0
  538. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_cli_lifecycle_hooks.py +0 -0
  539. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_cli_runtime_consumer.py +0 -0
  540. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_cli_tool_executor_module.py +0 -0
  541. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_cli_updater.py +0 -0
  542. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_cloud_memory.py +0 -0
  543. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_code_audit_tools.py +0 -0
  544. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_code_review_agent.py +0 -0
  545. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_codegen_output.py +0 -0
  546. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_coder_tester_self_healing.py +0 -0
  547. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_coder_tool_safety.py +0 -0
  548. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_collaboration.py +0 -0
  549. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_command_loggers.py +0 -0
  550. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_command_safety.py +0 -0
  551. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_completions_builder.py +0 -0
  552. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_config_paths.py +0 -0
  553. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_configured_provider.py +0 -0
  554. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_container_entrypoint.py +0 -0
  555. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_container_entrypoints.py +0 -0
  556. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_context_checkpoints.py +0 -0
  557. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_context_references.py +0 -0
  558. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_context_service.py +0 -0
  559. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_conversation_core.py +0 -0
  560. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_crash_report.py +0 -0
  561. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_credential_file_permissions.py +0 -0
  562. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_custom_providers.py +0 -0
  563. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_daemon_gateway_config.py +0 -0
  564. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_dashboard_generator.py +0 -0
  565. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_data_service.py +0 -0
  566. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_data_service_imports.py +0 -0
  567. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_datasource_routing.py +0 -0
  568. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_deep_analysis.py +0 -0
  569. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_degrades_without_quant_engine.py +0 -0
  570. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_dispatcher_pins_match_the_release.py +0 -0
  571. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_doctor.py +0 -0
  572. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_doctor_describes_the_current_install.py +0 -0
  573. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_doctor_npm_scope.py +0 -0
  574. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_engine_boundary.py +0 -0
  575. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_enterprise_tool_honesty.py +0 -0
  576. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_env_switch_docs.py +0 -0
  577. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_evals_harness.py +0 -0
  578. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_event_import_roots.py +0 -0
  579. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_extended_tools.py +0 -0
  580. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_feishu_swarm_config.py +0 -0
  581. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_finalize_release.py +0 -0
  582. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_finance_renderers.py +0 -0
  583. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_finance_service_catalog.py +0 -0
  584. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_first_run_works.py +0 -0
  585. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_football_agent.py +0 -0
  586. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_football_prediction_output.py +0 -0
  587. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_google_cloud_models.py +0 -0
  588. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_google_cloud_routing.py +0 -0
  589. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_google_login.py +0 -0
  590. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_google_search_provider.py +0 -0
  591. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_headless_is_agentic.py +0 -0
  592. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_honest_surfaces.py +0 -0
  593. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_image_gen_tools.py +0 -0
  594. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_image_inputs.py +0 -0
  595. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_import_graph_budget.py +0 -0
  596. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_intent_router.py +0 -0
  597. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_intent_signals.py +0 -0
  598. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_kling_video_client.py +0 -0
  599. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_lazy_rebind.py +0 -0
  600. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_legacy_module_imports.py +0 -0
  601. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_license_consistency.py +0 -0
  602. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_licensing.py +0 -0
  603. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_local_image_provider.py +0 -0
  604. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_logistics_3pl.py +0 -0
  605. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_logistics_and_finance_agents.py +0 -0
  606. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_lsp.py +0 -0
  607. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_markdown_pdf.py +0 -0
  608. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_market_data_client.py +0 -0
  609. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_market_history_inheritance.py +0 -0
  610. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_market_history_tool.py +0 -0
  611. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_market_hours.py +0 -0
  612. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_market_questions_on_backend.py +0 -0
  613. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_market_symbol_extraction.py +0 -0
  614. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_market_universe.py +0 -0
  615. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_mcp_circuit.py +0 -0
  616. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_mcp_client.py +0 -0
  617. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_model_capability_registry.py +0 -0
  618. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_model_choice_is_the_users.py +0 -0
  619. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_model_selection_state.py +0 -0
  620. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_native_binary_entrypoints.py +0 -0
  621. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_native_installer.py +0 -0
  622. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_new_modules.py +0 -0
  623. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_no_hardcoded_developer_paths.py +0 -0
  624. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_no_uncommitted_imports.py +0 -0
  625. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_ollama_stream_imports.py +0 -0
  626. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_ollama_stream_tools.py +0 -0
  627. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_openai_image_client.py +0 -0
  628. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_operations_suite.py +0 -0
  629. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_output_rendering.py +0 -0
  630. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_packages_facade.py +0 -0
  631. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_packaging_constraints.py +0 -0
  632. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_packaging_manifest.py +0 -0
  633. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_packs_domains.py +0 -0
  634. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_pdf_report.py +0 -0
  635. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_pick_best_installed_model.py +0 -0
  636. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_plan_mode.py +0 -0
  637. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_platform_package_assembly.py +0 -0
  638. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_platform_packages.py +0 -0
  639. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_plotly_html_output.py +0 -0
  640. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_portfolio_ledger.py +0 -0
  641. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_post_turn_context_decision.py +0 -0
  642. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_preflight.py +0 -0
  643. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_preview_server.py +0 -0
  644. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_privacy_feedback.py +0 -0
  645. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_project_aria.py +0 -0
  646. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_project_review.py +0 -0
  647. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_project_review_api.py +0 -0
  648. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_prompt_assembly.py +0 -0
  649. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_prompt_selection.py +0 -0
  650. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_provider_autoconfig.py +0 -0
  651. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_provider_error_messages.py +0 -0
  652. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_provider_integration.py +0 -0
  653. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_provider_registry.py +0 -0
  654. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_public_service_status.py +0 -0
  655. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_quant_engine_namespace.py +0 -0
  656. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_rebind_contract.py +0 -0
  657. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_rebind_namespace_contract.py +0 -0
  658. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_relay_client_credentials.py +0 -0
  659. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_relay_event_verification.py +0 -0
  660. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_relay_sends_for_clients.py +0 -0
  661. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_relay_store.py +0 -0
  662. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_relay_url.py +0 -0
  663. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_release_chain.py +0 -0
  664. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_release_commit_identity.py +0 -0
  665. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_release_push_is_atomic.py +0 -0
  666. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_release_reaches_the_registries.py +0 -0
  667. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_release_verification_waits.py +0 -0
  668. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_release_workflow_permissions.py +0 -0
  669. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_report_charts.py +0 -0
  670. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_report_generator.py +0 -0
  671. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_research_protocol.py +0 -0
  672. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_research_quality.py +0 -0
  673. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_responsive_rendering.py +0 -0
  674. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_review_service.py +0 -0
  675. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_root_module_budget.py +0 -0
  676. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_rsi_without_pandas_ta.py +0 -0
  677. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_runtime_acceptance.py +0 -0
  678. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_runtime_agent_loop.py +0 -0
  679. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_runtime_approval.py +0 -0
  680. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_runtime_bridge.py +0 -0
  681. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_runtime_bridge_fallback.py +0 -0
  682. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_runtime_checkpoints.py +0 -0
  683. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_runtime_event_identity.py +0 -0
  684. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_runtime_gateway.py +0 -0
  685. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_runtime_repo_map.py +0 -0
  686. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_runtime_run_store.py +0 -0
  687. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_runtime_tool_executor.py +0 -0
  688. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_runtime_worktrees.py +0 -0
  689. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_runway_video_client.py +0 -0
  690. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_safety_permissions.py +0 -0
  691. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_safety_service.py +0 -0
  692. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_safety_service_adoption.py +0 -0
  693. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_service_diagnostics_security.py +0 -0
  694. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_session_search.py +0 -0
  695. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_settings_service.py +0 -0
  696. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_shipper_digest.py +0 -0
  697. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_single_import_root.py +0 -0
  698. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_skill_agent_binding.py +0 -0
  699. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_skill_catalog.py +0 -0
  700. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_skill_loader.py +0 -0
  701. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_spreadsheet_tools.py +0 -0
  702. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_sse_stream_contract.py +0 -0
  703. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_startup_dashboard.py +0 -0
  704. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_startup_latency.py +0 -0
  705. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_streaming_pipeline.py +0 -0
  706. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_stripe_agent.py +0 -0
  707. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_subagent.py +0 -0
  708. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_supervisor_routing.py +0 -0
  709. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_system_prompts.py +0 -0
  710. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_system_tools_output.py +0 -0
  711. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_task_orchestrator.py +0 -0
  712. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_team_synthesis.py +0 -0
  713. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_tls_trust_store.py +0 -0
  714. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_tool_policy.py +0 -0
  715. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_tool_rounds_on_openai_apis.py +0 -0
  716. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_tool_scope.py +0 -0
  717. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_trading_service.py +0 -0
  718. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_tradingview_bridge.py +0 -0
  719. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_turn_planning.py +0 -0
  720. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_ui_completer_references.py +0 -0
  721. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_ui_console_theme.py +0 -0
  722. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_ui_input_box.py +0 -0
  723. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_ui_language_and_model.py +0 -0
  724. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_ui_robot_banner.py +0 -0
  725. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_update_health_routes.py +0 -0
  726. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_verification_hint.py +0 -0
  727. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_verification_policy.py +0 -0
  728. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_version_consistency.py +0 -0
  729. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_version_counter.py +0 -0
  730. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_video_analysis.py +0 -0
  731. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_video_editor.py +0 -0
  732. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_vscode_mcp.py +0 -0
  733. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_warehouse_agents.py +0 -0
  734. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_warehouse_cli_registration.py +0 -0
  735. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_warehouse_erp_client.py +0 -0
  736. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_warehouse_workflow.py +0 -0
  737. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_wheel_is_installable.py +0 -0
  738. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_workspace_changes.py +0 -0
  739. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_workspace_context.py +0 -0
  740. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_workspace_files.py +0 -0
  741. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_workspace_scope.py +0 -0
  742. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_workspace_service.py +0 -0
  743. {aria_code-0.81.0 → aria_code-0.83.0}/tests/test_workspace_verify.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aria-code
3
- Version: 0.81.0
3
+ Version: 0.83.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.81.0"
7
+ version = "0.83.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.81.0"
20
+ __version__ = "0.83.0"
@@ -2,6 +2,8 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ from aria_code.apps.cli.i18n import ui_text
6
+
5
7
  from aria_code.apps.cli.commands.market import parse_analysis_args
6
8
  from aria_code.apps.cli.commands.market_context import context_has_price
7
9
 
@@ -98,7 +100,7 @@ class AnalysisCommandsMixin:
98
100
  response_lang = parsed.lang or ("zh" if is_cn else "en")
99
101
 
100
102
  if self.context.has_rich:
101
- with self.context.console.status(f"[dim]正在获取 {symbol} 数据...[/dim]", spinner="dots"):
103
+ with self.context.console.status(f"[dim]{ui_text(self, f'正在获取 {symbol} 数据', f'Fetching {symbol} data')}...[/dim]", spinner="dots"):
102
104
  ctx = await self._build_analyze_context(symbol, is_cn)
103
105
  else:
104
106
  print(f"Fetching data for {symbol}...")
@@ -166,7 +168,7 @@ class AnalysisCommandsMixin:
166
168
 
167
169
  if region in ("us", "all"):
168
170
  if self.context.has_rich:
169
- with self.context.console.status("[dim]获取美国宏观数据 (FRED)...[/dim]", spinner="dots"):
171
+ with self.context.console.status(f"[dim]{ui_text(self, '获取美国宏观数据 (FRED)', 'Fetching US macro data (FRED)')}...[/dim]", spinner="dots"):
170
172
  r = await loop.run_in_executor(None, lambda: get_us_macro(indicator if region == "us" else "all"))
171
173
  else:
172
174
  r = get_us_macro(indicator if region == "us" else "all")
@@ -174,7 +176,7 @@ class AnalysisCommandsMixin:
174
176
 
175
177
  if region in ("cn", "all"):
176
178
  if self.context.has_rich:
177
- with self.context.console.status("[dim]获取中国宏观数据 (akshare)...[/dim]", spinner="dots"):
179
+ with self.context.console.status(f"[dim]{ui_text(self, '获取中国宏观数据 (akshare)', 'Fetching China macro data (akshare)')}...[/dim]", spinner="dots"):
178
180
  r_cn = await loop.run_in_executor(None, lambda: get_cn_macro(indicator if region == "cn" else "all"))
179
181
  else:
180
182
  r_cn = get_cn_macro(indicator if region == "cn" else "all")
@@ -182,7 +184,7 @@ class AnalysisCommandsMixin:
182
184
 
183
185
  if region in ("rates", "all"):
184
186
  if self.context.has_rich:
185
- with self.context.console.status("[dim]获取央行利率...[/dim]", spinner="dots"):
187
+ with self.context.console.status(f"[dim]{ui_text(self, '获取央行利率', 'Fetching central bank rates')}...[/dim]", spinner="dots"):
186
188
  r_rates = await loop.run_in_executor(None, get_central_bank_rates)
187
189
  else:
188
190
  r_rates = get_central_bank_rates()
@@ -190,7 +192,7 @@ class AnalysisCommandsMixin:
190
192
 
191
193
  if region == "calendar":
192
194
  if self.context.has_rich:
193
- with self.context.console.status("[dim]获取经济日历...[/dim]", spinner="dots"):
195
+ with self.context.console.status(f"[dim]{ui_text(self, '获取经济日历', 'Fetching the economic calendar')}...[/dim]", spinner="dots"):
194
196
  r_cal = await loop.run_in_executor(None, lambda: get_economic_calendar(7))
195
197
  else:
196
198
  r_cal = get_economic_calendar(7)
@@ -216,7 +218,7 @@ class AnalysisCommandsMixin:
216
218
  import asyncio as _asyncio
217
219
  loop = _asyncio.get_event_loop()
218
220
  if self.context.has_rich:
219
- with self.context.console.status(f"[dim]获取 {symbol} 期权链...[/dim]", spinner="dots"):
221
+ with self.context.console.status(f"[dim]{ui_text(self, f'获取 {symbol} 期权链', f'Fetching the {symbol} option chain')}...[/dim]", spinner="dots"):
220
222
  from local_finance_tools import _get_options_chain
221
223
  r = await loop.run_in_executor(None, _get_options_chain,
222
224
  {"symbol": symbol, "type": opt_type, "expiry": expiry, "limit": 20})
@@ -281,7 +283,7 @@ class AnalysisCommandsMixin:
281
283
  import asyncio as _asyncio
282
284
  loop = _asyncio.get_event_loop()
283
285
  if self.context.has_rich:
284
- with self.context.console.status(f"[dim]计算 {symbol} 财务质量评分...[/dim]", spinner="dots"):
286
+ with self.context.console.status(f"[dim]{ui_text(self, f'计算 {symbol} 财务质量评分', f'Scoring {symbol} financial quality')}...[/dim]", spinner="dots"):
285
287
  from local_finance_tools import _piotroski_fscore, _altman_zscore
286
288
  f_r = await loop.run_in_executor(None, _piotroski_fscore, {"symbol": symbol})
287
289
  z_r = await loop.run_in_executor(None, _altman_zscore, {"symbol": symbol})
@@ -303,7 +305,7 @@ class AnalysisCommandsMixin:
303
305
  import asyncio as _asyncio
304
306
  loop = _asyncio.get_event_loop()
305
307
  if self.context.has_rich:
306
- with self.context.console.status(f"[dim]计算 {symbol} 一目均衡表...[/dim]", spinner="dots"):
308
+ with self.context.console.status(f"[dim]{ui_text(self, f'计算 {symbol} 一目均衡表', f'Computing {symbol} Ichimoku')}...[/dim]", spinner="dots"):
307
309
  from local_finance_tools import _calculate_ichimoku
308
310
  r = await loop.run_in_executor(None, _calculate_ichimoku, {"symbol": symbol})
309
311
  else:
@@ -322,7 +324,7 @@ class AnalysisCommandsMixin:
322
324
  import asyncio as _asyncio
323
325
  loop = _asyncio.get_event_loop()
324
326
  if self.context.has_rich:
325
- with self.context.console.status("[dim]获取恐惧贪婪指数...[/dim]", spinner="dots"):
327
+ with self.context.console.status(f"[dim]{ui_text(self, '获取恐惧贪婪指数', 'Fetching the Fear & Greed index')}...[/dim]", spinner="dots"):
326
328
  from local_finance_tools import _get_fear_greed_index
327
329
  r = await loop.run_in_executor(None, _get_fear_greed_index, {})
328
330
  else:
@@ -356,7 +358,7 @@ class AnalysisCommandsMixin:
356
358
  loop = _asyncio.get_event_loop()
357
359
  if compare_mode:
358
360
  if self.context.has_rich:
359
- with self.context.console.status("[dim]并行查询 binance / okx / bybit...[/dim]", spinner="dots"):
361
+ with self.context.console.status(f"[dim]{ui_text(self, '并行查询 binance / okx / bybit', 'Querying binance / okx / bybit in parallel')}...[/dim]", spinner="dots"):
360
362
  from local_finance_tools import _get_funding_rates_compare
361
363
  r = await loop.run_in_executor(None, _get_funding_rates_compare, {"symbols": syms})
362
364
  else:
@@ -365,7 +367,7 @@ class AnalysisCommandsMixin:
365
367
  _render_funding_compare(r)
366
368
  else:
367
369
  if self.context.has_rich:
368
- with self.context.console.status(f"[dim]获取 {exchange} 资金费率...[/dim]", spinner="dots"):
370
+ with self.context.console.status(f"[dim]{ui_text(self, f'获取 {exchange} 资金费率', f'Fetching {exchange} funding rates')}...[/dim]", spinner="dots"):
369
371
  from local_finance_tools import _get_funding_rates
370
372
  r = await loop.run_in_executor(None, _get_funding_rates, {"exchange": exchange, "symbols": syms})
371
373
  else:
@@ -6,6 +6,8 @@ imported lazily inside each method body to avoid circular imports at load time.
6
6
 
7
7
  from __future__ import annotations
8
8
 
9
+ from aria_code.apps.cli.i18n import ui_text
10
+
9
11
  from ._ui import Panel, print_error, rich_box
10
12
  from aria_code.packages.aria_core.paths import aria_home
11
13
 
@@ -389,7 +391,7 @@ class BrokerCommandsMixin:
389
391
  label = broker_id
390
392
  try:
391
393
  if self.context.has_rich:
392
- with self.context.console.status(f"[dim]正在连接 {broker_id}...[/dim]", spinner="dots"):
394
+ with self.context.console.status(f"[dim]{ui_text(self, f'正在连接 {broker_id}', f'Connecting to {broker_id}')}...[/dim]", spinner="dots"):
393
395
  import asyncio as _aio
394
396
  loop = _aio.get_event_loop()
395
397
  broker = await loop.run_in_executor(None, reg.connect, broker_id)
@@ -859,7 +861,7 @@ class BrokerCommandsMixin:
859
861
  if not broker:
860
862
  return
861
863
  import asyncio as _aio
862
- with self.context.console.status("[dim]获取持仓...[/dim]", spinner="dots") if self.context.has_rich else _null_ctx():
864
+ with self.context.console.status(f"[dim]{ui_text(self, '获取持仓', 'Fetching positions')}...[/dim]", spinner="dots") if self.context.has_rich else _null_ctx():
863
865
  pos = await _aio.get_event_loop().run_in_executor(None, broker.positions)
864
866
  _print_broker_positions(pos, broker.label, broker.config.get("currency","CNY"))
865
867
  except Exception as e:
@@ -889,7 +891,7 @@ class BrokerCommandsMixin:
889
891
  if not broker:
890
892
  return
891
893
  import asyncio as _aio
892
- with self.context.console.status("[dim]获取订单...[/dim]", spinner="dots") if self.context.has_rich else _null_ctx():
894
+ with self.context.console.status(f"[dim]{ui_text(self, '获取订单', 'Fetching orders')}...[/dim]", spinner="dots") if self.context.has_rich else _null_ctx():
893
895
  orders = await _aio.get_event_loop().run_in_executor(
894
896
  None, lambda: broker.orders(status=status, limit=30)
895
897
  )
@@ -2,6 +2,8 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ from aria_code.apps.cli.i18n import ui_text
6
+
5
7
  from ._business_render import p, print_realty_result, print_risk_scan
6
8
 
7
9
 
@@ -275,7 +277,7 @@ class BusinessWorkflowCommandsMixin:
275
277
 
276
278
  async def _run_realty_agent(self, agent_name: str, project_id: str, input_data: dict):
277
279
  if self.context.has_rich:
278
- with self.context.console.status(f"[dim]运行 {agent_name} Agent...[/dim]", spinner="dots"):
280
+ with self.context.console.status(f"[dim]{ui_text(self, f'运行 {agent_name} Agent', f'Running the {agent_name} agent')}...[/dim]", spinner="dots"):
279
281
  result = await self._call_realty_agent(agent_name, project_id, input_data)
280
282
  else:
281
283
  print(f"Running {agent_name}...")
@@ -286,7 +288,8 @@ class BusinessWorkflowCommandsMixin:
286
288
  async def _run_realty_team(self, agents: list, project_id: str, input_data: dict):
287
289
  import asyncio
288
290
  if self.context.has_rich:
289
- with self.context.console.status(f"[dim]并行扫描 {', '.join(agents)}...[/dim]", spinner="dots"):
291
+ _names = ', '.join(agents)
292
+ with self.context.console.status(f"[dim]{ui_text(self, f'并行扫描 {_names}', f'Scanning {_names} in parallel')}...[/dim]", spinner="dots"):
290
293
  tasks = [self._call_realty_agent(n, project_id, input_data) for n in agents]
291
294
  results = await asyncio.gather(*tasks, return_exceptions=False)
292
295
  else:
@@ -0,0 +1,160 @@
1
+ """Shared CLI command metadata.
2
+
3
+ This module is intentionally UI-free so future channel adapters such as Feishu
4
+ or a local gateway can reuse the same command categories without importing the
5
+ large terminal implementation.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ from dataclasses import dataclass
11
+ from typing import FrozenSet, Tuple
12
+
13
+
14
+ @dataclass(frozen=True)
15
+ class DirectCommandSpec:
16
+ name: str
17
+ method_name: str
18
+ async_method: bool = False
19
+ watchable: bool = False
20
+ aliases: Tuple[str, ...] = ()
21
+
22
+ @property
23
+ def names(self) -> Tuple[str, ...]:
24
+ return (self.name, *self.aliases)
25
+
26
+
27
+ DIRECT_COMMANDS: Tuple[DirectCommandSpec, ...] = (
28
+ DirectCommandSpec("quote", "cmd_quote", async_method=True, watchable=True),
29
+ DirectCommandSpec("backtest", "cmd_backtest", async_method=True),
30
+ DirectCommandSpec("health", "cmd_health", async_method=True, watchable=True),
31
+ DirectCommandSpec("doctor", "cmd_doctor"),
32
+ DirectCommandSpec("tools", "cmd_tools"),
33
+ DirectCommandSpec("skills", "cmd_skills"),
34
+ DirectCommandSpec("sessions", "cmd_sessions"),
35
+ DirectCommandSpec("watch", "cmd_watch", aliases=("watchlist",)),
36
+ DirectCommandSpec("export", "cmd_export", async_method=True),
37
+ DirectCommandSpec("tv", "cmd_tv", async_method=True),
38
+ DirectCommandSpec("ashare", "cmd_ashare", async_method=True, aliases=("a-share",)),
39
+ DirectCommandSpec("markets", "cmd_markets"),
40
+ DirectCommandSpec("orchestrate", "cmd_orchestrate"),
41
+ )
42
+
43
+
44
+ DIRECT_COMMAND_MAP = {
45
+ alias: spec
46
+ for spec in DIRECT_COMMANDS
47
+ for alias in spec.names
48
+ }
49
+
50
+
51
+ WATCHABLE_DIRECT_COMMANDS: FrozenSet[str] = frozenset(
52
+ alias
53
+ for spec in DIRECT_COMMANDS
54
+ if spec.watchable
55
+ for alias in spec.names
56
+ )
57
+
58
+
59
+ # Commands shown by default in /help. Other slash commands remain executable but
60
+ # are hidden to keep the startup surface compact.
61
+ VISIBLE_SLASH_COMMANDS: FrozenSet[str] = frozenset({
62
+ # Session
63
+ "/help", "/clear", "/compact", "/cost", "/status", "/health",
64
+ "/regen", "/undo", "/rewind", "/copy", "/recap", "/btw",
65
+ # Sessions
66
+ "/save", "/load", "/sessions", "/recall", "/export",
67
+ # Config
68
+ "/model", "/thinking", "/config", "/permissions", "/privacy",
69
+ # Setup & discovery
70
+ "/setup", "/apikey", "/doctor", "/architecture", "/mcp", "/skills", "/tools", "/packages", "/markets",
71
+ # Auth
72
+ "/login", "/logout", "/whoami",
73
+ # Persistent data (direct writes)
74
+ "/alert", "/journal", "/watch", "/note", "/todo", "/memory",
75
+ # Broker
76
+ "/broker", "/account", "/positions", "/orders", "/paper", "/trade",
77
+ # Code & project
78
+ "/project", "/init", "/review", "/code", "/plan", "/orchestrate", "/run", "/tasks", "/delegate", "/canva", "/completions", "/lsp",
79
+ # Research
80
+ "/team", "/warehouse", "/deep",
81
+ # Quant
82
+ "/backtest", "/wf", "/tv", "/ashare",
83
+ # UI generation
84
+ "/ui",
85
+ # Other
86
+ "/artifacts", "/vision", "/upload-image", "/file", "/strategy", "/accuracy",
87
+ })
88
+
89
+
90
+ # ── What "/" shows ────────────────────────────────────────────────────────────
91
+ # The "/" popup listed every command — 167 of them plus 14 skills, 92 without
92
+ # a category — and /help printed about 90 lines. Codex lists only session
93
+ # controls under "/", shows eight rows, and takes tasks in plain language.
94
+ # Aria keeps every command runnable by name; the popup opens on these two
95
+ # tiers, and typing narrows it over everything.
96
+
97
+ # Session and setup controls, in popup order.
98
+ CORE_SLASH_COMMANDS: Tuple[str, ...] = (
99
+ "/help", "/model", "/review", "/plan", "/init", "/status", "/sessions", "/clear",
100
+ "/compact", "/copy", "/rewind", "/permissions", "/config", "/doctor", "/login",
101
+ )
102
+
103
+ # One way into each capability: building code, financial analysis, logistics.
104
+ ENTRY_SLASH_COMMANDS: Tuple[str, ...] = (
105
+ "/code", "/ta", "/backtest", "/team", "/report", "/portfolio", "/inventory", "/carriers",
106
+ )
107
+
108
+ # Second names for a command; the popup lists the command once.
109
+ COMMAND_ALIASES = {"/upload-image": "/vision"}
110
+
111
+
112
+ @dataclass(frozen=True)
113
+ class HelpTopic:
114
+ key: str
115
+ title_en: str
116
+ title_zh: str
117
+ commands: Tuple[str, ...]
118
+
119
+
120
+ HELP_TOPICS: Tuple[HelpTopic, ...] = (
121
+ HelpTopic("code", "Code and projects", "代码与项目", (
122
+ "/code", "/project", "/init", "/review", "/plan", "/run", "/read", "/write", "/edit", "/ls",
123
+ "/search", "/verify", "/scaffold", "/apply", "/changes", "/git")),
124
+ HelpTopic("market", "Market research", "市场研究", (
125
+ "/quote", "/analyze", "/ta", "/chart", "/tv", "/deep", "/team", "/report", "/news", "/markets",
126
+ "/watch", "/alert")),
127
+ HelpTopic("quant", "Quant and portfolios", "量化与组合", (
128
+ "/backtest", "/wf", "/compare", "/auto-strategy", "/execution", "/portfolio", "/risk",
129
+ "/optimize", "/stress", "/factors")),
130
+ HelpTopic("logistics", "Logistics", "物流", ("/inventory", "/carriers", "/warehouse")),
131
+ HelpTopic("data", "Notes, files and artifacts", "笔记、文件与产物", (
132
+ "/journal", "/note", "/todo", "/memory", "/artifacts", "/strategy", "/accuracy", "/file",
133
+ "/vision", "/ui")),
134
+ HelpTopic("broker", "Broker and trading", "券商与交易", (
135
+ "/broker", "/paper", "/trade", "/account", "/positions", "/orders")),
136
+ HelpTopic("session", "Session", "会话", (
137
+ "/clear", "/compact", "/cost", "/status", "/health", "/regen", "/undo", "/rewind", "/copy",
138
+ "/recap", "/btw", "/save", "/load", "/sessions", "/export", "/export-pdf")),
139
+ HelpTopic("config", "Setup", "设置", (
140
+ "/model", "/thinking", "/config", "/permissions", "/privacy", "/local", "/update", "/setup",
141
+ "/apikey", "/doctor", "/mcp", "/login", "/logout", "/skills", "/tools", "/packages")),
142
+ )
143
+
144
+ HELP_TOPIC_MAP = {topic.key: topic for topic in HELP_TOPICS}
145
+
146
+
147
+ def popup_rank(name: str) -> int:
148
+ """0 for a core command, 1 for an entry point, 2 for everything else."""
149
+ if name in CORE_SLASH_COMMANDS:
150
+ return 0
151
+ if name in ENTRY_SLASH_COMMANDS:
152
+ return 1
153
+ return 2
154
+
155
+
156
+ def short_description(description: str) -> str:
157
+ """The description without its usage tail: "Technical indicators: /ta AAPL …" → "Technical indicators"."""
158
+ text = str(description or "")
159
+ cut = text.find(": /")
160
+ return (text[:cut] if cut > 0 else text).strip()
@@ -13,6 +13,7 @@ NameError,而这正是 requires-python = "<3.14,>=3.10" 声明支持的全部
13
13
  全绿。已发布的 4.3.0 同样中招:pip install 后运行 aria-code 直接崩溃。
14
14
  """
15
15
 
16
+ from aria_code.apps.cli.i18n import ui_text
16
17
  from ._ui import print_error
17
18
 
18
19
  import pathlib
@@ -116,7 +117,11 @@ class CoreCommandsMixin:
116
117
  # Contextual help: /help <command>
117
118
  from aria_code.apps.cli.skills_catalog import SKILLS
118
119
  target = args.strip().lower()
119
- if target:
120
+ if target and target != "all":
121
+ from aria_code.apps.cli.commands.catalog import HELP_TOPIC_MAP
122
+ if target in HELP_TOPIC_MAP:
123
+ self._print_help_topic(HELP_TOPIC_MAP[target])
124
+ return
120
125
  cmd_key = target if target.startswith("/") else f"/{target}"
121
126
  if cmd_key in self.commands:
122
127
  _, desc = self.commands[cmd_key]
@@ -148,7 +153,11 @@ class CoreCommandsMixin:
148
153
  self.context.console.print(f"[dim]No help for: {target}. Try /help[/dim]" if self.context.has_rich else f"No help for: {target}")
149
154
  return
150
155
 
151
- # Full help listing
156
+ if not target:
157
+ self._print_help_overview()
158
+ return
159
+
160
+ # /help all: every command, grouped
152
161
  if self.context.has_rich:
153
162
  self.context.console.print()
154
163
 
@@ -247,6 +256,105 @@ class CoreCommandsMixin:
247
256
  print("\nSkills:")
248
257
  for s in SKILLS:
249
258
  print(f" {s['command']:20s} {s['description']}")
259
+ def _print_help_overview(self) -> None:
260
+ """One screen: what to type, the core commands, a way into each capability.
261
+
262
+ /help printed about 90 lines — every group, every skill — so the
263
+ commands that matter scrolled out of view. The rest is a topic away.
264
+ """
265
+ from aria_code.apps.cli.commands.catalog import (
266
+ CORE_SLASH_COMMANDS, ENTRY_SLASH_COMMANDS, HELP_TOPICS, short_description,
267
+ )
268
+ zh = str(self.terminal.config.get("ui_lang", "en")).lower().startswith("zh")
269
+ T = (lambda a, b: a) if zh else (lambda a, b: b)
270
+ core = [(n, short_description(self.commands[n][1])) for n in CORE_SLASH_COMMANDS if n in self.commands]
271
+ entry = [(n, short_description(self.commands[n][1])) for n in ENTRY_SLASH_COMMANDS if n in self.commands]
272
+ examples = (
273
+ T("给 utils.py 补上测试并运行", "Add tests for utils.py and run them"),
274
+ T("NVDA 这周走势怎么样?", "How's NVDA this week?"),
275
+ T("看看 skus.csv 哪些 SKU 该补货", "Which SKUs in skus.csv need reordering?"),
276
+ )
277
+ topics = " · ".join(t.key for t in HELP_TOPICS)
278
+ if not self.context.has_rich:
279
+ print("\n" + T("直接描述要做的事,Aria 会选择工具:", "Describe what you want; Aria picks the tools:"))
280
+ for example in examples:
281
+ print(f" {example}")
282
+ print("\n" + T("常用命令", "Commands"))
283
+ for name, desc in core + entry:
284
+ print(f" {name:13s} {desc}")
285
+ print("\n" + T(f"更多:/help {topics} · all · <命令>", f"More: /help {topics} · all · <command>"))
286
+ return
287
+
288
+ from rich.text import Text
289
+
290
+ console = self.context.console
291
+ console.print()
292
+ console.print(f"[bold]{T('直接描述要做的事', 'Describe what you want')}[/bold] "
293
+ f"[dim]{T('Aria 会选择工具', 'Aria picks the tools')}[/dim]")
294
+ for example in examples:
295
+ console.print(f" [#C08050]{example}[/#C08050]")
296
+ console.print()
297
+
298
+ name_width = max(len(name) for name, _ in core + entry)
299
+ # indent 2, name, gap 2, description, gap 3, name, gap 2, description
300
+ desc_width = max(12, (console.width - 2 - 2 * name_width - 2 - 3 - 2) // 2)
301
+
302
+ def cell(text: str) -> str:
303
+ return text if len(text) <= desc_width else text[:desc_width - 1] + "…"
304
+
305
+ two_columns = console.width >= 96
306
+ if not two_columns:
307
+ desc_width = max(12, console.width - 2 - name_width - 2)
308
+
309
+ def grid(rows):
310
+ if two_columns:
311
+ half = (len(rows) + 1) // 2
312
+ pairs = zip(rows[:half], rows[half:] + [("", "")])
313
+ else:
314
+ pairs = ((row, ("", "")) for row in rows)
315
+ lines = Text()
316
+ for left, right in pairs:
317
+ lines.append(" " + left[0].ljust(name_width + 2), style="bold #C08050")
318
+ lines.append(cell(left[1]).ljust(desc_width + 3) if right[0] else cell(left[1]), style="dim")
319
+ if right[0]:
320
+ lines.append(right[0].ljust(name_width + 2), style="bold #C08050")
321
+ lines.append(cell(right[1]), style="dim")
322
+ lines.append("\n")
323
+ lines.rstrip()
324
+ return lines
325
+
326
+ console.print(f"[bold]{T('命令', 'Commands')}[/bold]")
327
+ console.print(grid(core))
328
+ console.print()
329
+ console.print(f"[bold]{T('开始一项任务', 'Start a task')}[/bold] "
330
+ f"[dim]{T('代码 · 金融分析 · 物流', 'code · financial analysis · logistics')}[/dim]")
331
+ console.print(grid(entry))
332
+ console.print()
333
+ console.print(f"[dim]{T('更多', 'More')}: /help {topics} · all · <{T('命令', 'command')}>[/dim]")
334
+ console.print(f"[dim]@ {T('附加上下文', 'attaches context')} · ! {T('运行 shell 命令', 'runs a shell command')}"
335
+ f" · Esc {T('中断', 'interrupts')}[/dim]")
336
+ console.print()
337
+
338
+ def _print_help_topic(self, topic) -> None:
339
+ from aria_code.apps.cli.commands.catalog import short_description
340
+
341
+ zh = str(self.terminal.config.get("ui_lang", "en")).lower().startswith("zh")
342
+ rows = [(n, self.commands[n][1]) for n in topic.commands if n in self.commands]
343
+ title = topic.title_zh if zh else topic.title_en
344
+ if not self.context.has_rich:
345
+ print(f"\n{title}")
346
+ for name, desc in rows:
347
+ print(f" {name:16s} {desc}")
348
+ return
349
+ from rich.markup import escape
350
+
351
+ console = self.context.console
352
+ console.print()
353
+ console.print(f"[bold]{title}[/bold]")
354
+ for name, desc in rows:
355
+ console.print(f" [bold #C08050]{name:16s}[/bold #C08050][dim]{escape(desc)}[/dim]", highlight=False)
356
+ console.print()
357
+
250
358
  async def cmd_artifacts(self, args: str):
251
359
  from aria_code.ui.render.output import display_path as _display_path
252
360
  from aria_code.apps.cli.helpers import _copy_text_to_clipboard, _open_path_or_url, _reveal_path_in_finder
@@ -2240,7 +2348,7 @@ class CoreCommandsMixin:
2240
2348
  return
2241
2349
  mdc = _get_mdc()
2242
2350
  if self.context.has_rich:
2243
- with self.context.console.status("[dim]获取全球指数...[/dim]", spinner="dots"):
2351
+ with self.context.console.status(f"[dim]{ui_text(self, '获取全球指数', 'Fetching global indices')}...[/dim]", spinner="dots"):
2244
2352
  r = mdc.indices()
2245
2353
  else:
2246
2354
  print(" 获取全球指数...")
@@ -2287,7 +2395,7 @@ class CoreCommandsMixin:
2287
2395
 
2288
2396
  mdc = _get_mdc()
2289
2397
  if self.context.has_rich:
2290
- with self.context.console.status(f"[dim]获取{market.upper()}热门股...[/dim]", spinner="dots"):
2398
+ with self.context.console.status(f"[dim]{ui_text(self, f'获取{market.upper()}热门股', f'Fetching top {market.upper()} movers')}...[/dim]", spinner="dots"):
2291
2399
  r = mdc.hot_stocks(market=market, top_n=top_n)
2292
2400
  else:
2293
2401
  r = mdc.hot_stocks(market=market, top_n=top_n)
@@ -2489,7 +2597,7 @@ class CoreCommandsMixin:
2489
2597
  sub = parts[1].lower() if len(parts) > 1 else "filings"
2490
2598
 
2491
2599
  if self.context.has_rich:
2492
- with self.context.console.status(f"[dim]查询 EDGAR {symbol}...[/dim]", spinner="dots"):
2600
+ with self.context.console.status(f"[dim]{ui_text(self, f'查询 EDGAR {symbol}', f'Querying EDGAR for {symbol}')}...[/dim]", spinner="dots"):
2493
2601
  result = await asyncio.get_event_loop().run_in_executor(
2494
2602
  None, lambda: _fetch_edgar_data(symbol, sub)
2495
2603
  )
@@ -2,6 +2,8 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ from aria_code.apps.cli.i18n import ui_text
6
+
5
7
  from ._ui import print_error
6
8
 
7
9
 
@@ -86,7 +88,7 @@ class DataCommandsMixin:
86
88
  self.context.console.print("[dim]用法: /data sql \"SELECT ...\"|/dim]")
87
89
  return
88
90
  if self.context.has_rich:
89
- with self.context.console.status("[dim]执行 SQL...[/dim]", spinner="dots"):
91
+ with self.context.console.status(f"[dim]{ui_text(self, '执行 SQL', 'Running SQL')}...[/dim]", spinner="dots"):
90
92
  r = await loop.run_in_executor(None, sql_query, {"query": query})
91
93
  else:
92
94
  r = sql_query({"query": query})
@@ -104,7 +106,7 @@ class DataCommandsMixin:
104
106
  export_data = {"示例数据": [{"symbol": s, "note": "需 yfinance"} for s in watchlist]}
105
107
  p = {"data": export_data, "filename": fname}
106
108
  if self.context.has_rich:
107
- with self.context.console.status("[dim]生成 Excel...[/dim]", spinner="dots"):
109
+ with self.context.console.status(f"[dim]{ui_text(self, '生成 Excel', 'Building Excel')}...[/dim]", spinner="dots"):
108
110
  r = await loop.run_in_executor(None, export_to_excel, p)
109
111
  else:
110
112
  r = export_to_excel(p)
@@ -125,7 +127,7 @@ class DataCommandsMixin:
125
127
  self.context.console.print("[dim]用法: /data load <csv文件路径>[/dim]")
126
128
  return
127
129
  if self.context.has_rich:
128
- with self.context.console.status("[dim]加载 CSV...[/dim]", spinner="dots"):
130
+ with self.context.console.status(f"[dim]{ui_text(self, '加载 CSV', 'Loading CSV')}...[/dim]", spinner="dots"):
129
131
  r = await loop.run_in_executor(None, load_csv_data, {"path": csv_path})
130
132
  else:
131
133
  r = load_csv_data({"path": csv_path})
@@ -221,7 +223,7 @@ class DataCommandsMixin:
221
223
 
222
224
  elif sub == "check":
223
225
  if self.context.has_rich:
224
- with self.context.console.status("[dim]检查价格预警...[/dim]", spinner="dots"):
226
+ with self.context.console.status(f"[dim]{ui_text(self, '检查价格预警', 'Checking price alerts')}...[/dim]", spinner="dots"):
225
227
  r = await loop.run_in_executor(None, check_alerts)
226
228
  else:
227
229
  r = check_alerts()
@@ -262,7 +264,8 @@ class DataCommandsMixin:
262
264
  return
263
265
 
264
266
  if self.context.has_rich:
265
- with self.context.console.status(f"[dim]计算 {', '.join(symbols)} 相关性矩阵...[/dim]", spinner="dots"):
267
+ _names = ', '.join(symbols)
268
+ with self.context.console.status(f"[dim]{ui_text(self, f'计算 {_names} 相关性矩阵', f'Computing the {_names} correlation matrix')}...[/dim]", spinner="dots"):
266
269
  r = await loop.run_in_executor(None, calc_correlation_matrix,
267
270
  {"symbols": symbols, "period": period})
268
271
  else:
@@ -312,7 +315,8 @@ class DataCommandsMixin:
312
315
  p_params["weights"] = weights
313
316
 
314
317
  if self.context.has_rich:
315
- with self.context.console.status(f"[dim]回测 {', '.join(symbols)} ({period})...[/dim]", spinner="dots"):
318
+ _names = ', '.join(symbols)
319
+ with self.context.console.status(f"[dim]{ui_text(self, f'回测 {_names} ({period})', f'Backtesting {_names} ({period})')}...[/dim]", spinner="dots"):
316
320
  r = await loop.run_in_executor(None, portfolio_backtest, p_params)
317
321
  else:
318
322
  r = portfolio_backtest(p_params)
@@ -332,7 +336,7 @@ class DataCommandsMixin:
332
336
  import asyncio as _asyncio
333
337
  loop = _asyncio.get_event_loop()
334
338
  if self.context.has_rich:
335
- with self.context.console.status(f"[dim]获取 {symbol} 同行数据...[/dim]", spinner="dots"):
339
+ with self.context.console.status(f"[dim]{ui_text(self, f'获取 {symbol} 同行数据', f'Fetching {symbol} peer data')}...[/dim]", spinner="dots"):
336
340
  from local_finance_tools import _peer_comparison
337
341
  r = await loop.run_in_executor(None, _peer_comparison,
338
342
  {"symbol": symbol, "peers": peers})