aria-code 0.84.0__tar.gz → 0.86.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 (746) hide show
  1. {aria_code-0.84.0/src/aria_code.egg-info → aria_code-0.86.0}/PKG-INFO +1 -1
  2. {aria_code-0.84.0 → aria_code-0.86.0}/pyproject.toml +1 -1
  3. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/_version.py +1 -1
  4. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/core_cmds.py +28 -16
  5. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/market.py +121 -14
  6. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/market_cmds.py +20 -2
  7. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/aria_cli.py +19 -1
  8. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/ui/completer.py +62 -17
  9. aria_code-0.86.0/src/aria_code/ui/mentions.py +206 -0
  10. {aria_code-0.84.0 → aria_code-0.86.0/src/aria_code.egg-info}/PKG-INFO +1 -1
  11. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code.egg-info/SOURCES.txt +3 -0
  12. aria_code-0.86.0/tests/test_mentions.py +62 -0
  13. aria_code-0.86.0/tests/test_natural_language_routing.py +118 -0
  14. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_release_chain.py +22 -2
  15. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_ui_completer_references.py +7 -8
  16. {aria_code-0.84.0 → aria_code-0.86.0}/LICENSE +0 -0
  17. {aria_code-0.84.0 → aria_code-0.86.0}/NOTICE +0 -0
  18. {aria_code-0.84.0 → aria_code-0.86.0}/README.md +0 -0
  19. {aria_code-0.84.0 → aria_code-0.86.0}/setup.cfg +0 -0
  20. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/__init__.py +0 -0
  21. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/adk_apps/__init__.py +0 -0
  22. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/adk_apps/aria_code_review/__init__.py +0 -0
  23. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/adk_apps/aria_code_review/agent.py +0 -0
  24. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/adk_apps/aria_research/__init__.py +0 -0
  25. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/adk_apps/aria_research/agent.py +0 -0
  26. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/__init__.py +0 -0
  27. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/base.py +0 -0
  28. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/code_review.py +0 -0
  29. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/deep/__init__.py +0 -0
  30. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/deep/calibration_loop.py +0 -0
  31. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/deep/critic.py +0 -0
  32. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/deep/deepen.py +0 -0
  33. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/deep/models.py +0 -0
  34. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/deep/pipeline.py +0 -0
  35. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/deep/quant_fusion.py +0 -0
  36. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/deep/themes.py +0 -0
  37. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/deep/tiers.py +0 -0
  38. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/engineering/__init__.py +0 -0
  39. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/engineering/coder.py +0 -0
  40. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/engineering/tester.py +0 -0
  41. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/financial/__init__.py +0 -0
  42. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/financial/cashflow_burn.py +0 -0
  43. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/financial/catalyst.py +0 -0
  44. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/financial/corporate_finance.py +0 -0
  45. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/financial/debate.py +0 -0
  46. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/financial/earnings.py +0 -0
  47. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/financial/fundamental.py +0 -0
  48. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/financial/macro.py +0 -0
  49. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/financial/news.py +0 -0
  50. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/financial/risk.py +0 -0
  51. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/financial/sector.py +0 -0
  52. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/financial/strategist.py +0 -0
  53. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/financial/stripe_revenue.py +0 -0
  54. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/financial/synthesis.py +0 -0
  55. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/financial/technical.py +0 -0
  56. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/orchestrator.py +0 -0
  57. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/portfolio_agent.py +0 -0
  58. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/realty/__init__.py +0 -0
  59. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/realty/asset_diagnosis.py +0 -0
  60. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/realty/business_match.py +0 -0
  61. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/realty/cashflow_verify.py +0 -0
  62. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/realty/contract_rules.py +0 -0
  63. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/realty/energy_anomaly.py +0 -0
  64. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/realty/exit_settlement.py +0 -0
  65. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/realty/fulfillment_risk.py +0 -0
  66. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/realty/ops_optimize.py +0 -0
  67. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/realty/revenue_share.py +0 -0
  68. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/registry.py +0 -0
  69. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/signal_scheme.py +0 -0
  70. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/sports/__init__.py +0 -0
  71. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/sports/football_agent.py +0 -0
  72. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/supervisor.py +0 -0
  73. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/team.py +0 -0
  74. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/warehouse/__init__.py +0 -0
  75. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/warehouse/contracts.py +0 -0
  76. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/warehouse/dashboard.py +0 -0
  77. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/warehouse/fulfillment_leadtime.py +0 -0
  78. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/warehouse/inbound_exceptions.py +0 -0
  79. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/warehouse/inventory_health.py +0 -0
  80. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/warehouse/local_run.py +0 -0
  81. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/warehouse/local_snapshot.py +0 -0
  82. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/warehouse/logistics_cost.py +0 -0
  83. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/warehouse/logistics_sync.py +0 -0
  84. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/agents/warehouse/workflow.py +0 -0
  85. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/aliyun_data_client.py +0 -0
  86. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/README.md +0 -0
  87. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/__init__.py +0 -0
  88. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/channels/README.md +0 -0
  89. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/channels/__init__.py +0 -0
  90. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/channels/approvals.py +0 -0
  91. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/channels/conversation.py +0 -0
  92. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/channels/digest.py +0 -0
  93. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/channels/intake.py +0 -0
  94. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/channels/registry.py +0 -0
  95. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/channels/tradingview.py +0 -0
  96. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/README.md +0 -0
  97. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/__init__.py +0 -0
  98. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/_optional.py +0 -0
  99. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/bootstrap.py +0 -0
  100. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/broker_render.py +0 -0
  101. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/codegen_paths.py +0 -0
  102. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/__init__.py +0 -0
  103. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/_business_render.py +0 -0
  104. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/_ui.py +0 -0
  105. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/analysis_cmds.py +0 -0
  106. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/ashare_prediction_cmds.py +0 -0
  107. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/auth_cmds.py +0 -0
  108. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/backtest_cmds.py +0 -0
  109. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/broker_cmds.py +0 -0
  110. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/business_workflow_cmds.py +0 -0
  111. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/canvas_cmds.py +0 -0
  112. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/catalog.py +0 -0
  113. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/data_cmds.py +0 -0
  114. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/diagnostic_cmds.py +0 -0
  115. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/diagnostic_ops_cmds.py +0 -0
  116. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/file_cmds.py +0 -0
  117. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/finance_service_cmds.py +0 -0
  118. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/fx_commodity_cmds.py +0 -0
  119. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/market_context.py +0 -0
  120. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/market_render.py +0 -0
  121. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/model_cmds.py +0 -0
  122. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/ops_cmds.py +0 -0
  123. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/orchestrator_cmds.py +0 -0
  124. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/pdf_export_cmds.py +0 -0
  125. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/portfolio_cmds.py +0 -0
  126. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/report.py +0 -0
  127. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/scaffold_templates.py +0 -0
  128. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/session_cmds.py +0 -0
  129. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/session_ux_cmds.py +0 -0
  130. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/team.py +0 -0
  131. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/team_render.py +0 -0
  132. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/ui_cmds.py +0 -0
  133. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/warehouse_cmds.py +0 -0
  134. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/workflow_cmds.py +0 -0
  135. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/commands/workspace_cmds.py +0 -0
  136. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/config_paths.py +0 -0
  137. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/config_store.py +0 -0
  138. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/constants.py +0 -0
  139. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/context.py +0 -0
  140. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/deterministic.py +0 -0
  141. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/direct.py +0 -0
  142. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/finance_service_catalog.py +0 -0
  143. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/football_reports.py +0 -0
  144. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/github_app_auth.py +0 -0
  145. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/google_login.py +0 -0
  146. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/handlers/__init__.py +0 -0
  147. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/handlers/broker_handlers.py +0 -0
  148. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/handlers/chart_handlers.py +0 -0
  149. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/handlers/market_handlers.py +0 -0
  150. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/handlers/realty_handlers.py +0 -0
  151. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/handlers/sports_handlers.py +0 -0
  152. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/handlers/strategy_advice.py +0 -0
  153. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/helpers.py +0 -0
  154. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/hooks.py +0 -0
  155. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/i18n.py +0 -0
  156. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/intent.py +0 -0
  157. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/intent_router.py +0 -0
  158. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/intent_signals.py +0 -0
  159. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/lifecycle_hooks.py +0 -0
  160. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/local_tool_schemas.py +0 -0
  161. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/main.py +0 -0
  162. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/market_hours.py +0 -0
  163. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/market_metadata.py +0 -0
  164. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/market_universe.py +0 -0
  165. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/message_processing.py +0 -0
  166. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/model_catalog.py +0 -0
  167. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/pdf_report.py +0 -0
  168. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/plan_mode.py +0 -0
  169. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/plotly_html.py +0 -0
  170. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/prediction_feedback.py +0 -0
  171. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/preflight.py +0 -0
  172. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/project_aria.py +0 -0
  173. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/prompt_assembly.py +0 -0
  174. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/prompts/__init__.py +0 -0
  175. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/prompts/coding.py +0 -0
  176. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/prompts/select.py +0 -0
  177. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/prompts/system_prompts.py +0 -0
  178. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/prompts/ui.py +0 -0
  179. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/provider_endpoints.py +0 -0
  180. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/provider_keys.py +0 -0
  181. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/providers/__init__.py +0 -0
  182. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/providers/base.py +0 -0
  183. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/providers/chat_routing.py +0 -0
  184. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/providers/collaboration.py +0 -0
  185. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/providers/llm/__init__.py +0 -0
  186. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/providers/llm/offline_responses.py +0 -0
  187. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/providers/llm/ollama_stream.py +0 -0
  188. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/providers/llm/response_cache.py +0 -0
  189. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/providers/llm/sse_stream.py +0 -0
  190. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/providers/runtime_bridge.py +0 -0
  191. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/providers/vertexai_stream.py +0 -0
  192. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/review_runner.py +0 -0
  193. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/runtime_consumer.py +0 -0
  194. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/sandbox.py +0 -0
  195. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/session_export.py +0 -0
  196. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/session_jsonl.py +0 -0
  197. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/session_store.py +0 -0
  198. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/skills_catalog.py +0 -0
  199. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/todo_tracker.py +0 -0
  200. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/tool_executor.py +0 -0
  201. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/tool_registry.py +0 -0
  202. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/tool_scope.py +0 -0
  203. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/tools/__init__.py +0 -0
  204. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/tools/context.py +0 -0
  205. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/tools/file_tools.py +0 -0
  206. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/tools/market_tools.py +0 -0
  207. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/tools/notebook_tools.py +0 -0
  208. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/tools/system_tools.py +0 -0
  209. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/tools/write_tools.py +0 -0
  210. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/tradingview_bridge.py +0 -0
  211. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/turn_planning.py +0 -0
  212. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/update_check.py +0 -0
  213. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/updater.py +0 -0
  214. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/utils/__init__.py +0 -0
  215. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/cli/utils/market_detect.py +0 -0
  216. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/daemon/README.md +0 -0
  217. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/vscode/README.md +0 -0
  218. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/apps/vscode/package.json +0 -0
  219. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/aria_daemon.py +0 -0
  220. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/aria_feishu_bot.py +0 -0
  221. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/aria_mcp_server.py +0 -0
  222. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/aria_relay_client.py +0 -0
  223. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/aria_relay_server.py +0 -0
  224. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/aria_telegram_bot.py +0 -0
  225. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/ariarc.py +0 -0
  226. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/artifacts.py +0 -0
  227. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/backtest_engine.py +0 -0
  228. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/backtest_report.py +0 -0
  229. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/brokers/__init__.py +0 -0
  230. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/brokers/automation.py +0 -0
  231. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/brokers/base.py +0 -0
  232. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/brokers/capabilities.py +0 -0
  233. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/brokers/cn/__init__.py +0 -0
  234. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/brokers/cn/easytrader_broker.py +0 -0
  235. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/brokers/cn/futu_broker.py +0 -0
  236. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/brokers/cn/longbridge_broker.py +0 -0
  237. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/brokers/cn/tiger_broker.py +0 -0
  238. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/brokers/cn/xtquant_broker.py +0 -0
  239. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/brokers/config.py +0 -0
  240. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/brokers/intl/__init__.py +0 -0
  241. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/brokers/intl/alpaca_broker.py +0 -0
  242. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/brokers/intl/ibkr_broker.py +0 -0
  243. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/brokers/intl/trading212_broker.py +0 -0
  244. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/brokers/intl/webull_broker.py +0 -0
  245. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/brokers/paper_broker.py +0 -0
  246. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/brokers/planning.py +0 -0
  247. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/brokers/registry.py +0 -0
  248. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/brokers/trading.py +0 -0
  249. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/canva_client.py +0 -0
  250. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/change_store.py +0 -0
  251. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/clients/__init__.py +0 -0
  252. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/clients/aliyun_data_client.py +0 -0
  253. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/clients/aria_relay_client.py +0 -0
  254. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/clients/canva_client.py +0 -0
  255. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/clients/figma_client.py +0 -0
  256. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/clients/football_data_client.py +0 -0
  257. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/clients/kling_video_client.py +0 -0
  258. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/clients/market_data_client.py +0 -0
  259. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/clients/openai_image_client.py +0 -0
  260. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/clients/runway_video_client.py +0 -0
  261. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/clients/warehouse_erp_client.py +0 -0
  262. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/cloud_memory.py +0 -0
  263. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/command_safety.py +0 -0
  264. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/computer_use_tools.py +0 -0
  265. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/dashboard_generator.py +0 -0
  266. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/data_analysis_tools.py +0 -0
  267. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/data_cleaner.py +0 -0
  268. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/data_service.py +0 -0
  269. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/datasources/__init__.py +0 -0
  270. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/datasources/base.py +0 -0
  271. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/datasources/router.py +0 -0
  272. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/datasources/sources/__init__.py +0 -0
  273. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/datasources/sources/akshare_source.py +0 -0
  274. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/datasources/sources/alpha_vantage_source.py +0 -0
  275. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/datasources/sources/edgar_source.py +0 -0
  276. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/datasources/sources/finnhub_source.py +0 -0
  277. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/datasources/sources/fred_source.py +0 -0
  278. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/datasources/sources/tushare_source.py +0 -0
  279. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/datasources/sources/web_scraper_source.py +0 -0
  280. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/datasources/sources/world_bank_source.py +0 -0
  281. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/datasources/sources/yfinance_source.py +0 -0
  282. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/demo_player.py +0 -0
  283. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/doctor.py +0 -0
  284. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/domain/__init__.py +0 -0
  285. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/domain/backtest_engine.py +0 -0
  286. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/domain/backtest_report.py +0 -0
  287. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/domain/finance_formulas.py +0 -0
  288. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/domain/portfolio_ledger.py +0 -0
  289. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/domain/strategy_vault.py +0 -0
  290. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/evals/__init__.py +0 -0
  291. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/evals/harness.py +0 -0
  292. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/evals/runner.py +0 -0
  293. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/external_agent_runner.py +0 -0
  294. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/figma_client.py +0 -0
  295. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/file_analysis_tools.py +0 -0
  296. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/finance_formulas.py +0 -0
  297. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/football_data_client.py +0 -0
  298. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/image_gen_tools.py +0 -0
  299. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/intent_classifier.py +0 -0
  300. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/kling_video_client.py +0 -0
  301. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/licensing.py +0 -0
  302. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/local_finance_tools.py +0 -0
  303. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/local_image_provider.py +0 -0
  304. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/local_llm_provider.py +0 -0
  305. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/macro_tools.py +0 -0
  306. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/markdown_pdf.py +0 -0
  307. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/market_data_client.py +0 -0
  308. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/mcp_client.py +0 -0
  309. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/memory_manager.py +0 -0
  310. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/model_capability.py +0 -0
  311. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/notification_tools.py +0 -0
  312. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/openai_image_client.py +0 -0
  313. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/__init__.py +0 -0
  314. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/adk_bridge/__init__.py +0 -0
  315. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/adk_bridge/code_review_tools.py +0 -0
  316. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/adk_bridge/market_tools.py +0 -0
  317. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_agents/__init__.py +0 -0
  318. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_agents/manifest.py +0 -0
  319. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_core/__init__.py +0 -0
  320. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_core/architecture.py +0 -0
  321. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_core/export.py +0 -0
  322. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_core/manifest.py +0 -0
  323. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_core/paths.py +0 -0
  324. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_core/secure_file.py +0 -0
  325. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_infra/__init__.py +0 -0
  326. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_infra/arthera.py +0 -0
  327. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_infra/doctor.py +0 -0
  328. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_infra/product.py +0 -0
  329. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_mcp/__init__.py +0 -0
  330. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_mcp/bridge.py +0 -0
  331. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_mcp/circuit.py +0 -0
  332. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_mcp/config.py +0 -0
  333. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_mcp/installer.py +0 -0
  334. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_mcp/server.py +0 -0
  335. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_mcp/tools.py +0 -0
  336. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_sdk/__init__.py +0 -0
  337. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_sdk/client.py +0 -0
  338. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_sdk/providers.py +0 -0
  339. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_sdk/streaming.py +0 -0
  340. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_sdk/types.py +0 -0
  341. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_services/__init__.py +0 -0
  342. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_services/cache.py +0 -0
  343. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_services/context.py +0 -0
  344. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_services/context_checkpoints.py +0 -0
  345. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_services/data.py +0 -0
  346. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_services/provider_health.py +0 -0
  347. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_services/references.py +0 -0
  348. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_services/registry.py +0 -0
  349. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_services/research_protocol.py +0 -0
  350. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_services/research_quality.py +0 -0
  351. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_services/settings.py +0 -0
  352. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_services/usage.py +0 -0
  353. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_skills/__init__.py +0 -0
  354. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_skills/catalog.py +0 -0
  355. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_skills/loader.py +0 -0
  356. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_skills/registry.py +0 -0
  357. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_tools/__init__.py +0 -0
  358. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_tools/financial/__init__.py +0 -0
  359. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_tools/financial/_paths.py +0 -0
  360. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_tools/financial/compliance.py +0 -0
  361. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_tools/financial/factors.py +0 -0
  362. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_tools/financial/risk_tools.py +0 -0
  363. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_tools/financial/strategy.py +0 -0
  364. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/aria_tools/registry.py +0 -0
  365. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/quant_engine/__init__.py +0 -0
  366. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/quant_engine/_namespace.py +0 -0
  367. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/quant_engine/backtest/__init__.py +0 -0
  368. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/quant_engine/backtest/core.py +0 -0
  369. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/quant_engine/backtest/engine.py +0 -0
  370. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/quant_engine/portfolio/__init__.py +0 -0
  371. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/quant_engine/portfolio/optimizer.py +0 -0
  372. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/quant_engine/sports/__init__.py +0 -0
  373. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/quant_engine/sports/calibrator.py +0 -0
  374. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/quant_engine/sports/dixon_coles.py +0 -0
  375. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/quant_engine/sports/elo.py +0 -0
  376. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/quant_engine/sports/form.py +0 -0
  377. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/quant_engine/sports/h2h.py +0 -0
  378. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/quant_engine/sports/ml_model.py +0 -0
  379. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/quant_engine/sports/predictor.py +0 -0
  380. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/quant_engine/sports/tracker.py +0 -0
  381. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/quant_engine/stochastic/__init__.py +0 -0
  382. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/quant_engine/stochastic/gbm_enhanced.py +0 -0
  383. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/quant_engine/stochastic/ito_calculus.py +0 -0
  384. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/quant_engine/stochastic/kelly_criterion.py +0 -0
  385. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/quant_engine/stochastic/monte_carlo_advanced.py +0 -0
  386. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/quant_engine/stochastic/options_pricing.py +0 -0
  387. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packages/quant_engine/stochastic/stochastic_processes.py +0 -0
  388. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packs/__init__.py +0 -0
  389. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packs/base.py +0 -0
  390. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packs/finance/__init__.py +0 -0
  391. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packs/logistics/__init__.py +0 -0
  392. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packs/payments/__init__.py +0 -0
  393. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packs/realty/__init__.py +0 -0
  394. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packs/registry.py +0 -0
  395. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/packs/rules.py +0 -0
  396. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/plan_utils.py +0 -0
  397. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/plugin_loader.py +0 -0
  398. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/portfolio_ledger.py +0 -0
  399. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/preview_server.py +0 -0
  400. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/privacy/__init__.py +0 -0
  401. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/privacy/feedback.py +0 -0
  402. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/project_review.py +0 -0
  403. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/project_review_api.py +0 -0
  404. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/project_review_server.py +0 -0
  405. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/project_tools.py +0 -0
  406. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/providers/__init__.py +0 -0
  407. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/providers/llm/__init__.py +0 -0
  408. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/providers/llm/anthropic.py +0 -0
  409. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/providers/llm/autoconfig.py +0 -0
  410. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/providers/llm/base.py +0 -0
  411. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/providers/llm/custom.py +0 -0
  412. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/providers/llm/ollama.py +0 -0
  413. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/providers/llm/openai_compat.py +0 -0
  414. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/providers/llm/registry.py +0 -0
  415. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/providers/local_image_provider.py +0 -0
  416. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/providers/local_llm_provider.py +0 -0
  417. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/providers/tool_messages.py +0 -0
  418. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/realty_data_tools.py +0 -0
  419. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/relay_store.py +0 -0
  420. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/report_exporters.py +0 -0
  421. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/report_generator.py +0 -0
  422. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/review_service.py +0 -0
  423. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/runtime/__init__.py +0 -0
  424. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/runtime/acceptance.py +0 -0
  425. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/runtime/agent_loop.py +0 -0
  426. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/runtime/approval.py +0 -0
  427. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/runtime/budget.py +0 -0
  428. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/runtime/checkpoints.py +0 -0
  429. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/runtime/crash_report.py +0 -0
  430. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/runtime/events.py +0 -0
  431. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/runtime/gateway.py +0 -0
  432. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/runtime/lsp.py +0 -0
  433. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/runtime/orchestrator.py +0 -0
  434. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/runtime/repo_map.py +0 -0
  435. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/runtime/run_state.py +0 -0
  436. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/runtime/run_store.py +0 -0
  437. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/runtime/self_healing.py +0 -0
  438. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/runtime/subagent.py +0 -0
  439. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/runtime/task_ledger.py +0 -0
  440. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/runtime/task_orchestrator.py +0 -0
  441. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/runtime/tool_executor.py +0 -0
  442. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/runtime/tool_policy.py +0 -0
  443. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/runtime/worktrees.py +0 -0
  444. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/runway_video_client.py +0 -0
  445. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/safety/__init__.py +0 -0
  446. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/safety/permissions.py +0 -0
  447. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/safety/service.py +0 -0
  448. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/setup_wizard.py +0 -0
  449. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/spreadsheet_tools.py +0 -0
  450. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/strategy_vault.py +0 -0
  451. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/tools/__init__.py +0 -0
  452. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/tools/artifact_tools.py +0 -0
  453. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/tools/broker_tools.py +0 -0
  454. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/tools/build_quant_engine.py +0 -0
  455. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/tools/code_audit_tools.py +0 -0
  456. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/tools/computer_use_tools.py +0 -0
  457. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/tools/data_analysis_tools.py +0 -0
  458. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/tools/enterprise_finance_tools.py +0 -0
  459. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/tools/extended_tools.py +0 -0
  460. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/tools/file_analysis_tools.py +0 -0
  461. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/tools/image_gen_tools.py +0 -0
  462. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/tools/local_finance_tools.py +0 -0
  463. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/tools/logistics_carriers.py +0 -0
  464. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/tools/logistics_inventory.py +0 -0
  465. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/tools/logistics_io.py +0 -0
  466. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/tools/logistics_tenancy.py +0 -0
  467. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/tools/logistics_tools.py +0 -0
  468. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/tools/macro_tools.py +0 -0
  469. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/tools/notification_tools.py +0 -0
  470. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/tools/project_tools.py +0 -0
  471. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/tools/realty_data_tools.py +0 -0
  472. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/tools/spreadsheet_tools.py +0 -0
  473. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/tools/stripe_tools.py +0 -0
  474. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/ui/__init__.py +0 -0
  475. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/ui/banner.py +0 -0
  476. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/ui/console.py +0 -0
  477. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/ui/image_render.py +0 -0
  478. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/ui/input_box.py +0 -0
  479. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/ui/picker.py +0 -0
  480. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/ui/render/__init__.py +0 -0
  481. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/ui/render/finance.py +0 -0
  482. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/ui/render/market.py +0 -0
  483. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/ui/render/output.py +0 -0
  484. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/ui/render/responsive.py +0 -0
  485. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/ui/render/team.py +0 -0
  486. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/ui/robot.py +0 -0
  487. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/ui/startup_dashboard.py +0 -0
  488. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/utils/vscode_uri.py +0 -0
  489. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/video_analysis.py +0 -0
  490. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/video_editor.py +0 -0
  491. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/workspace/__init__.py +0 -0
  492. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/workspace/files.py +0 -0
  493. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/workspace/verify.py +0 -0
  494. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/workspace_changes.py +0 -0
  495. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/workspace_context.py +0 -0
  496. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/workspace_service.py +0 -0
  497. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code/workspace_tools.py +0 -0
  498. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code.egg-info/dependency_links.txt +0 -0
  499. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code.egg-info/entry_points.txt +0 -0
  500. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code.egg-info/requires.txt +0 -0
  501. {aria_code-0.84.0 → aria_code-0.86.0}/src/aria_code.egg-info/top_level.txt +0 -0
  502. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_adk_market_tools.py +0 -0
  503. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_agent_team_fallback.py +0 -0
  504. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_analyze_file_tool.py +0 -0
  505. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_architecture_ledger_is_true.py +0 -0
  506. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_architecture_report.py +0 -0
  507. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_aria_cli_core.py +0 -0
  508. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_aria_mcp_server.py +0 -0
  509. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_aria_sdk.py +0 -0
  510. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_artifact_publishing.py +0 -0
  511. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_artifacts_and_reports.py +0 -0
  512. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_ashare_prediction_cmds.py +0 -0
  513. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_backtest_cmds.py +0 -0
  514. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_backtest_engine.py +0 -0
  515. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_backtest_report.py +0 -0
  516. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_binary_bundles_runtime_imports.py +0 -0
  517. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_broken_akshare_is_optional.py +0 -0
  518. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_broker_automation.py +0 -0
  519. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_broker_chat_confirm_gate.py +0 -0
  520. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_broker_planning.py +0 -0
  521. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_broker_safety.py +0 -0
  522. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_broker_tools.py +0 -0
  523. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_budget.py +0 -0
  524. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_business_workflow_cmds.py +0 -0
  525. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_canva_client.py +0 -0
  526. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_canvas_cmds.py +0 -0
  527. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_card_approvals.py +0 -0
  528. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_channel_intake.py +0 -0
  529. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_channels.py +0 -0
  530. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_chart_handlers.py +0 -0
  531. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_chat_bots_fail_closed.py +0 -0
  532. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_chat_routing.py +0 -0
  533. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_ci_security_workflow.py +0 -0
  534. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_cli_app_split.py +0 -0
  535. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_cli_bootstrap.py +0 -0
  536. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_cli_config_store.py +0 -0
  537. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_cli_lifecycle_hooks.py +0 -0
  538. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_cli_runtime_consumer.py +0 -0
  539. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_cli_tool_executor_module.py +0 -0
  540. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_cli_updater.py +0 -0
  541. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_cloud_memory.py +0 -0
  542. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_code_audit_tools.py +0 -0
  543. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_code_review_agent.py +0 -0
  544. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_codegen_output.py +0 -0
  545. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_coder_tester_self_healing.py +0 -0
  546. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_coder_tool_safety.py +0 -0
  547. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_collaboration.py +0 -0
  548. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_command_loggers.py +0 -0
  549. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_command_safety.py +0 -0
  550. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_completions_builder.py +0 -0
  551. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_config_paths.py +0 -0
  552. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_configured_provider.py +0 -0
  553. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_container_entrypoint.py +0 -0
  554. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_container_entrypoints.py +0 -0
  555. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_context_checkpoints.py +0 -0
  556. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_context_references.py +0 -0
  557. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_context_service.py +0 -0
  558. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_conversation_core.py +0 -0
  559. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_crash_report.py +0 -0
  560. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_credential_file_permissions.py +0 -0
  561. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_custom_providers.py +0 -0
  562. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_daemon_gateway_config.py +0 -0
  563. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_dashboard_generator.py +0 -0
  564. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_data_service.py +0 -0
  565. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_data_service_imports.py +0 -0
  566. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_datasource_routing.py +0 -0
  567. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_deep_analysis.py +0 -0
  568. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_degrades_without_quant_engine.py +0 -0
  569. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_dispatcher_pins_match_the_release.py +0 -0
  570. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_doctor.py +0 -0
  571. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_doctor_describes_the_current_install.py +0 -0
  572. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_doctor_npm_scope.py +0 -0
  573. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_engine_boundary.py +0 -0
  574. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_enterprise_tool_honesty.py +0 -0
  575. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_env_switch_docs.py +0 -0
  576. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_evals_harness.py +0 -0
  577. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_event_import_roots.py +0 -0
  578. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_extended_tools.py +0 -0
  579. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_feishu_swarm_config.py +0 -0
  580. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_finalize_release.py +0 -0
  581. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_finance_renderers.py +0 -0
  582. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_finance_service_catalog.py +0 -0
  583. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_first_run_output.py +0 -0
  584. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_first_run_works.py +0 -0
  585. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_football_agent.py +0 -0
  586. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_football_prediction_output.py +0 -0
  587. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_google_cloud_models.py +0 -0
  588. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_google_cloud_routing.py +0 -0
  589. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_google_login.py +0 -0
  590. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_google_search_provider.py +0 -0
  591. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_headless_is_agentic.py +0 -0
  592. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_honest_surfaces.py +0 -0
  593. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_image_gen_tools.py +0 -0
  594. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_image_inputs.py +0 -0
  595. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_import_graph_budget.py +0 -0
  596. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_intent_router.py +0 -0
  597. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_intent_signals.py +0 -0
  598. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_kling_video_client.py +0 -0
  599. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_lazy_rebind.py +0 -0
  600. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_legacy_module_imports.py +0 -0
  601. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_license_consistency.py +0 -0
  602. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_licensing.py +0 -0
  603. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_local_image_provider.py +0 -0
  604. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_logistics_3pl.py +0 -0
  605. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_logistics_and_finance_agents.py +0 -0
  606. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_lsp.py +0 -0
  607. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_markdown_pdf.py +0 -0
  608. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_market_answers_in_english.py +0 -0
  609. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_market_data_client.py +0 -0
  610. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_market_history_inheritance.py +0 -0
  611. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_market_history_tool.py +0 -0
  612. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_market_hours.py +0 -0
  613. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_market_questions_on_backend.py +0 -0
  614. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_market_symbol_extraction.py +0 -0
  615. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_market_universe.py +0 -0
  616. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_mcp_circuit.py +0 -0
  617. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_mcp_client.py +0 -0
  618. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_model_capability_registry.py +0 -0
  619. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_model_choice_is_the_users.py +0 -0
  620. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_model_selection_state.py +0 -0
  621. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_native_binary_entrypoints.py +0 -0
  622. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_native_installer.py +0 -0
  623. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_new_modules.py +0 -0
  624. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_no_hardcoded_developer_paths.py +0 -0
  625. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_no_uncommitted_imports.py +0 -0
  626. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_numeric_listings.py +0 -0
  627. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_ollama_stream_imports.py +0 -0
  628. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_ollama_stream_tools.py +0 -0
  629. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_openai_image_client.py +0 -0
  630. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_operations_suite.py +0 -0
  631. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_output_rendering.py +0 -0
  632. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_packages_facade.py +0 -0
  633. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_packaging_constraints.py +0 -0
  634. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_packaging_manifest.py +0 -0
  635. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_packs_domains.py +0 -0
  636. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_pdf_report.py +0 -0
  637. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_pick_best_installed_model.py +0 -0
  638. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_plan_mode.py +0 -0
  639. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_platform_package_assembly.py +0 -0
  640. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_platform_packages.py +0 -0
  641. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_plotly_html_output.py +0 -0
  642. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_portfolio_ledger.py +0 -0
  643. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_post_turn_context_decision.py +0 -0
  644. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_preflight.py +0 -0
  645. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_preview_server.py +0 -0
  646. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_privacy_feedback.py +0 -0
  647. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_project_aria.py +0 -0
  648. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_project_review.py +0 -0
  649. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_project_review_api.py +0 -0
  650. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_prompt_assembly.py +0 -0
  651. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_prompt_selection.py +0 -0
  652. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_provider_autoconfig.py +0 -0
  653. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_provider_error_messages.py +0 -0
  654. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_provider_integration.py +0 -0
  655. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_provider_registry.py +0 -0
  656. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_public_service_status.py +0 -0
  657. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_quant_engine_namespace.py +0 -0
  658. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_rebind_contract.py +0 -0
  659. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_rebind_namespace_contract.py +0 -0
  660. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_relay_client_credentials.py +0 -0
  661. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_relay_event_verification.py +0 -0
  662. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_relay_sends_for_clients.py +0 -0
  663. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_relay_store.py +0 -0
  664. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_relay_url.py +0 -0
  665. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_release_commit_identity.py +0 -0
  666. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_release_push_is_atomic.py +0 -0
  667. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_release_reaches_the_registries.py +0 -0
  668. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_release_verification_waits.py +0 -0
  669. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_release_workflow_permissions.py +0 -0
  670. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_report_charts.py +0 -0
  671. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_report_generator.py +0 -0
  672. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_research_protocol.py +0 -0
  673. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_research_quality.py +0 -0
  674. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_responsive_rendering.py +0 -0
  675. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_review_service.py +0 -0
  676. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_root_module_budget.py +0 -0
  677. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_rsi_without_pandas_ta.py +0 -0
  678. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_runtime_acceptance.py +0 -0
  679. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_runtime_agent_loop.py +0 -0
  680. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_runtime_approval.py +0 -0
  681. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_runtime_bridge.py +0 -0
  682. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_runtime_bridge_fallback.py +0 -0
  683. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_runtime_checkpoints.py +0 -0
  684. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_runtime_event_identity.py +0 -0
  685. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_runtime_gateway.py +0 -0
  686. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_runtime_repo_map.py +0 -0
  687. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_runtime_run_store.py +0 -0
  688. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_runtime_tool_executor.py +0 -0
  689. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_runtime_worktrees.py +0 -0
  690. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_runway_video_client.py +0 -0
  691. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_safety_permissions.py +0 -0
  692. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_safety_service.py +0 -0
  693. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_safety_service_adoption.py +0 -0
  694. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_service_diagnostics_security.py +0 -0
  695. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_session_search.py +0 -0
  696. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_settings_service.py +0 -0
  697. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_shipper_digest.py +0 -0
  698. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_single_import_root.py +0 -0
  699. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_skill_agent_binding.py +0 -0
  700. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_skill_catalog.py +0 -0
  701. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_skill_loader.py +0 -0
  702. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_slash_popup.py +0 -0
  703. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_spreadsheet_tools.py +0 -0
  704. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_sse_stream_contract.py +0 -0
  705. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_startup_dashboard.py +0 -0
  706. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_startup_latency.py +0 -0
  707. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_status_language.py +0 -0
  708. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_streaming_pipeline.py +0 -0
  709. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_stripe_agent.py +0 -0
  710. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_subagent.py +0 -0
  711. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_supervisor_routing.py +0 -0
  712. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_system_prompts.py +0 -0
  713. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_system_tools_output.py +0 -0
  714. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_task_orchestrator.py +0 -0
  715. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_team_synthesis.py +0 -0
  716. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_tls_trust_store.py +0 -0
  717. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_tool_policy.py +0 -0
  718. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_tool_rounds_on_openai_apis.py +0 -0
  719. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_tool_scope.py +0 -0
  720. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_tool_step_output.py +0 -0
  721. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_trading_service.py +0 -0
  722. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_tradingview_bridge.py +0 -0
  723. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_turn_planning.py +0 -0
  724. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_ui_console_theme.py +0 -0
  725. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_ui_input_box.py +0 -0
  726. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_ui_language_and_model.py +0 -0
  727. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_ui_robot_banner.py +0 -0
  728. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_update_health_routes.py +0 -0
  729. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_verification_hint.py +0 -0
  730. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_verification_policy.py +0 -0
  731. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_version_consistency.py +0 -0
  732. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_version_counter.py +0 -0
  733. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_video_analysis.py +0 -0
  734. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_video_editor.py +0 -0
  735. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_vscode_mcp.py +0 -0
  736. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_warehouse_agents.py +0 -0
  737. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_warehouse_cli_registration.py +0 -0
  738. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_warehouse_erp_client.py +0 -0
  739. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_warehouse_workflow.py +0 -0
  740. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_wheel_is_installable.py +0 -0
  741. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_workspace_changes.py +0 -0
  742. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_workspace_context.py +0 -0
  743. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_workspace_files.py +0 -0
  744. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_workspace_scope.py +0 -0
  745. {aria_code-0.84.0 → aria_code-0.86.0}/tests/test_workspace_service.py +0 -0
  746. {aria_code-0.84.0 → aria_code-0.86.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.84.0
3
+ Version: 0.86.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.84.0"
7
+ version = "0.86.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.84.0"
20
+ __version__ = "0.86.0"
@@ -2187,28 +2187,40 @@ class CoreCommandsMixin:
2187
2187
  "resistance": res3,
2188
2188
  },
2189
2189
  }
2190
+ # The summary was Chinese whatever the UI language ("趋势: 偏多 …
2191
+ # 自审通过"); the trend value itself comes from the chart in Chinese.
2192
+ _zh = str(self.terminal.config.get("ui_lang", "en")).lower().startswith("zh")
2193
+ _T = (lambda a, b: a) if _zh else (lambda a, b: b)
2194
+ _trend = str(result.get("trend") or "—")
2195
+ if not _zh:
2196
+ _trend = {"偏多": "bullish", "偏空": "bearish", "震荡": "range-bound",
2197
+ "震荡/中性": "range-bound"}.get(_trend, _trend)
2198
+ _summary = (
2199
+ f"{display_label} {_T('趋势', 'trend')}: {_trend} "
2200
+ f"RSI: {f'{rsi_val:.1f}' if rsi_val else '—'} "
2201
+ f"{_T('支撑', 'support')}: {'/'.join(str(v) for v in sup3) or '—'} "
2202
+ f"{_T('阻力', 'resistance')}: {'/'.join(str(v) for v in res3) or '—'} "
2203
+ f"{_T('数据', 'source')}: {provider}"
2204
+ )
2205
+ _issues_head = _T(f"自审发现 {len(issues)} 个问题:", f"self-check found {len(issues)} issue(s):")
2206
+ _clean = _T("自审通过(数据质量正常)", "self-check passed (data quality normal)")
2190
2207
  if self.context.has_rich:
2191
- self.context.console.print(f" [green]✓[/green] chart generated [dim]({elapsed_ms}ms)[/dim]")
2192
- self.context.console.print(f" saved: [link={path}]{path_label}[/link]")
2193
- self.context.console.print(
2194
- f" [dim]{display_label} "
2195
- f"趋势: {result.get('trend','—')} "
2196
- f"RSI: {f'{rsi_val:.1f}' if rsi_val else '—'} "
2197
- f"支撑: {'/'.join(str(v) for v in sup3) or '—'} "
2198
- f"阻力: {'/'.join(str(v) for v in res3) or '—'} "
2199
- f"数据: {provider}[/dim]"
2200
- )
2208
+ from rich.markup import escape as _esc
2209
+
2210
+ self.context.console.print(f" [green]✓[/green] {_T('图表已生成', 'chart generated')} [dim]({elapsed_ms}ms)[/dim]")
2211
+ self.context.console.print(f" {_T('已保存', 'saved')}: [link={path}]{path_label}[/link]")
2212
+ self.context.console.print(f" [dim]{_esc(_summary)}[/dim]")
2201
2213
  if issues:
2202
- self.context.console.print(f" [yellow]⚠ 自审发现 {len(issues)} 个问题:[/yellow]")
2214
+ self.context.console.print(f" [yellow]⚠ {_issues_head}[/yellow]")
2203
2215
  for iss in issues:
2204
- self.context.console.print(f" [yellow]· {iss}[/yellow]")
2216
+ self.context.console.print(f" [yellow]· {_esc(str(iss))}[/yellow]")
2205
2217
  else:
2206
- self.context.console.print(" [green dim]✓ 自审通过(数据质量正常)[/green dim]")
2218
+ self.context.console.print(f" [green dim]✓ {_clean}[/green dim]")
2207
2219
  else:
2208
- print(f" OK chart generated ({elapsed_ms}ms): {path_label}")
2209
- print(f" {display_label} 趋势: {result.get('trend','—')} RSI: {f'{rsi_val:.1f}' if rsi_val else '—'} 数据: {provider}")
2220
+ print(f" OK {_T('图表已生成', 'chart generated')} ({elapsed_ms}ms): {path_label}")
2221
+ print(f" {_summary}")
2210
2222
  if issues:
2211
- print(f" ⚠ 自审发现 {len(issues)} 个问题:")
2223
+ print(f" ⚠ {_issues_head}")
2212
2224
  for iss in issues:
2213
2225
  print(f" · {iss}")
2214
2226
  import subprocess as _sp
@@ -6,6 +6,7 @@ CLI, Feishu, and future gateway adapters can share the same command semantics.
6
6
 
7
7
  from __future__ import annotations
8
8
 
9
+ import re
9
10
  from dataclasses import dataclass
10
11
  from typing import Mapping
11
12
 
@@ -56,13 +57,13 @@ _DASHBOARD_MODE_HINTS: tuple[tuple[tuple[str, ...], str], ...] = (
56
57
  )
57
58
 
58
59
  _CHART_PERIOD_HINTS: tuple[tuple[tuple[str, ...], str], ...] = (
59
- (("近一年", "一年", "1y", "1年"), "1y"),
60
- (("近三个月", "三个月", "3m", "3个月"), "3m"),
61
- (("近六个月", "六个月", "6m", "6个月"), "6m"),
62
- (("年初至今", "ytd"), "ytd"),
63
- (("两年", "2y"), "2y"),
64
- (("三年", "3y"), "3y"),
65
- (("五年", "5y"), "5y"),
60
+ (("近三个月", "三个月", "3m", "3个月", "3 months", "three months", "3-month", "quarter"), "3m"),
61
+ (("近六个月", "六个月", "6m", "6个月", "6 months", "six months", "6-month", "half a year"), "6m"),
62
+ (("年初至今", "ytd", "year to date"), "ytd"),
63
+ (("两年", "2y", "2 years", "two years"), "2y"),
64
+ (("三年", "3y", "3 years", "three years"), "3y"),
65
+ (("五年", "5y", "5 years", "five years"), "5y"),
66
+ (("近一年", "一年", "1y", "1年", "1 year", "one year", "a year", "12 months"), "1y"),
66
67
  )
67
68
 
68
69
  _REPORT_TYPE_HINTS: tuple[tuple[tuple[str, ...], str], ...] = (
@@ -80,7 +81,13 @@ _TRADINGVIEW_ANALYSIS_HINTS = (
80
81
  "指标", "信号", "analyze", "analysis", "data", "indicator", "signal",
81
82
  )
82
83
 
83
- _ROUTE_SYMBOL_BLOCKLIST = {"K", "LINE", "CHART", "PLOT"}
84
+ _ROUTE_SYMBOL_BLOCKLIST = {
85
+ "K", "LINE", "CHART", "PLOT",
86
+ # Product and engineering acronyms, typed in capitals and almost never a
87
+ # ticker in a message: "news app UI design ideas" ran `/news UI`.
88
+ "UI", "UX", "API", "CLI", "SDK", "URL", "PDF", "CSS", "HTML", "SQL", "JSON", "CSV", "IDE",
89
+ "OS", "PR", "QA", "CI", "CD", "MVP", "LLM", "GPU", "CPU", "RAM", "SSD", "DB",
90
+ }
84
91
  _CHART_CONTEXT_TOKEN_BLOCKLIST = {
85
92
  "ABOVE", "BELOW", "INC", "TTM", "RATIO", "SIGNAL", "SUPPORT", "RESIST",
86
93
  "RESISTANCE", "LEVEL", "LEVELS", "HIGH", "LOW", "OPEN", "CLOSE", "AVG",
@@ -115,8 +122,31 @@ def _news_topic(text: str, symbols: list[str]) -> str:
115
122
  return symbols[0] if symbols else text
116
123
 
117
124
 
125
+ def _known_tickers() -> frozenset[str]:
126
+ """Tickers Aria knows by name — the company table's values."""
127
+ global _KNOWN_TICKERS
128
+ if _KNOWN_TICKERS is None:
129
+ try:
130
+ from aria_code.apps.cli.utils.market_detect import _COMPANY_TO_TICKER
131
+
132
+ _KNOWN_TICKERS = frozenset(str(v).upper() for v in _COMPANY_TO_TICKER.values() if v)
133
+ except Exception:
134
+ _KNOWN_TICKERS = frozenset()
135
+ return _KNOWN_TICKERS
136
+
137
+
138
+ _KNOWN_TICKERS: frozenset[str] | None = None
139
+
140
+
118
141
  def _route_symbols(text: str, *, limit: int = 6) -> list[str]:
119
- """Resolve ticker/company mentions for natural-language command routing."""
142
+ """Resolve ticker/company mentions for natural-language command routing.
143
+
144
+ The second pass reads the message upper-cased so "aapl" is found — and it
145
+ used to accept anything that came out of it, so every English word became
146
+ a ticker: "what's the latest version of python?" ran `/news WHAT`, "write a
147
+ report generator script" ran `/report WRITE`. That pass now adds only
148
+ tickers Aria knows; the message as typed is read as before.
149
+ """
120
150
  seen: set[str] = set()
121
151
  out: list[str] = []
122
152
  for source in (text, text.upper()):
@@ -126,6 +156,8 @@ def _route_symbols(text: str, *, limit: int = 6) -> list[str]:
126
156
  not normalized
127
157
  or normalized in _ROUTE_SYMBOL_BLOCKLIST
128
158
  or _is_blocked_market_symbol_candidate(normalized)
159
+ or (source is not text and normalized not in _known_tickers()
160
+ and normalized not in text)
129
161
  ):
130
162
  continue
131
163
  if len(normalized) == 1 and "." not in normalized:
@@ -135,7 +167,10 @@ def _route_symbols(text: str, *, limit: int = 6) -> list[str]:
135
167
  out.append(normalized)
136
168
  if len(out) >= limit:
137
169
  return out
138
- single = _extract_market_symbol(text) or _extract_market_symbol(text.upper())
170
+ single = _extract_market_symbol(text)
171
+ if not single:
172
+ upper = _extract_market_symbol(text.upper())
173
+ single = upper if str(upper or "").upper() in _known_tickers() else ""
139
174
  normalized = str(single or "").upper()
140
175
  if (
141
176
  normalized
@@ -236,12 +271,67 @@ def parse_analysis_args(args: str, *, default_symbol: str = "AAPL") -> AnalysisA
236
271
  return AnalysisArgs(symbol=(symbol or default_symbol).upper(), focus=focus, lang=lang)
237
272
 
238
273
 
274
+ _DATA_FILE_RE = re.compile(r"(?<![\w/.-])([\w./-]+\.(?:csv|tsv|xlsx|xls|json))(?![\w.])", re.I)
275
+ _CODE_FILE_RE = re.compile(r"\b[\w./-]+\.(?:py|js|ts|tsx|jsx|go|rs|java|rb|php|c|cc|cpp|h|cs|swift|kt|sh|"
276
+ r"md|txt|toml|ya?ml|html|css|sql|ipynb|csv|tsv|json|xlsx?)\b", re.I)
277
+ _CODE_WORDS = (
278
+ "script", "function", "class", "method", "refactor", "repo", "repository", "stack trace", "traceback",
279
+ "test coverage", "unit test", "pattern", "code", "compile", "debug", "regex", "api", "endpoint",
280
+ "代码", "脚本", "函数", "重构", "仓库", "测试", "报错", "调试", "接口",
281
+ )
282
+ # English words match whole words ("repo" is not in "report"); Chinese has no
283
+ # spaces, so it matches as a substring.
284
+ _CODE_WORD_RE = re.compile(
285
+ r"\b(?:" + "|".join(re.escape(w) for w in _CODE_WORDS if w.isascii()) + r")(?:s|es)?\b", re.I)
286
+ _INVENTORY_WORDS = ("inventory", "reorder", "re-order", "safety stock", "stockout", "sku", "库存", "补货", "安全库存", "断货")
287
+ _CARRIER_WORDS = ("carrier", "freight", "waybill", "shipping cost", "lane", "承运商", "运单", "运费", "物流成本")
288
+ _FINANCE_WORDS = ("market", "stock", "finance", "financial", "earnings", "市场", "股", "财经", "金融", "财报")
289
+ # Commands that act on one instrument and must not guess one.
290
+ _SYMBOL_COMMANDS = {"/analyze", "/risk", "/strategy", "/signal", "/predict", "/report", "/news", "/chart",
291
+ "/backtest"}
292
+
293
+
294
+ def _logistics_route(text: str, low: str, available_commands: set[str]) -> RoutedCommand | None:
295
+ """ "Which SKUs in skus.csv need reordering?" → /inventory skus.csv, when that file exists."""
296
+ import os
297
+
298
+ files = [m.group(1) for m in _DATA_FILE_RE.finditer(text) if os.path.isfile(m.group(1))]
299
+ if not files:
300
+ return None
301
+ if "/inventory" in available_commands and any(w in low for w in _INVENTORY_WORDS):
302
+ return RoutedCommand(command="/inventory", args=files[0])
303
+ if "/carriers" in available_commands and any(w in low for w in _CARRIER_WORDS):
304
+ return RoutedCommand(command="/carriers", args=files[0])
305
+ return None
306
+
307
+
308
+ def _looks_like_code_work(text: str, low: str) -> bool:
309
+ """A message about code or a data file, which is the model's to answer.
310
+
311
+ "plot a histogram of ages in data.csv" ran `/chart OF AGES GE IN CSV`,
312
+ "analyze this stack trace" ran `/analyze`, "strategy pattern in python"
313
+ ran `/strategy`. None of them is a market request.
314
+ """
315
+ return (bool(_CODE_FILE_RE.search(text)) or bool(_CODE_WORD_RE.search(low))
316
+ or any(word in low for word in _CODE_WORDS if not word.isascii()))
317
+
318
+
239
319
  def route_top_level_text(user_input: str, available_commands: set[str]) -> RoutedCommand | None:
240
- """Translate bare workflow text into a slash command when possible."""
320
+ """Translate bare workflow text into a slash command when possible.
321
+
322
+ Only requests this can answer with certainty run a command; anything else
323
+ — code, data files, a keyword with no instrument — goes to the model,
324
+ which has the same tools and can ask.
325
+ """
241
326
 
242
327
  stripped = user_input.strip()
243
328
  if not stripped or stripped.startswith("/"):
244
329
  return None
330
+ logistics = _logistics_route(stripped, stripped.lower(), available_commands)
331
+ if logistics is not None:
332
+ return logistics
333
+ if _looks_like_code_work(stripped, stripped.lower()):
334
+ return None
245
335
 
246
336
  low = stripped.lower()
247
337
 
@@ -336,13 +426,23 @@ def route_top_level_text(user_input: str, available_commands: set[str]) -> Route
336
426
  "新闻", "消息", "最新进展", "最近进展", "news", "latest", "recent",
337
427
  )):
338
428
  symbols = _route_symbols(stripped)
339
- return RoutedCommand(command="/news", args=_news_topic(stripped, symbols))
429
+ topic = _news_topic(stripped, symbols)
430
+ # "latest"/"recent" alone are ordinary words ("the latest version of
431
+ # python"): without an instrument, only an explicit news request about
432
+ # markets is one ("今天有什么财经新闻", "market news today").
433
+ explicit = any(k in low for k in ("新闻", "news")) and any(k in low for k in _FINANCE_WORDS)
434
+ if symbols or topic in ("SpaceX", "LVMH") or explicit:
435
+ return RoutedCommand(command="/news", args=topic)
340
436
  parts = stripped.split(maxsplit=1)
341
437
  keyword = parts[0].lower()
342
438
  rest = parts[1] if len(parts) > 1 else ""
343
439
  command = TOP_LEVEL_ROUTES.get(keyword)
344
440
  if not command or command not in available_commands:
345
441
  return None
442
+ # "risk of this refactor?", "strategy pattern …", "analyze this …": these
443
+ # commands act on one instrument, and parse_analysis_args fell back to AAPL.
444
+ if command in _SYMBOL_COMMANDS and not _route_symbols(rest or stripped):
445
+ return None
346
446
  if command == "/analyze":
347
447
  parsed = parse_analysis_args(rest)
348
448
  focus_arg = f" --focus {parsed.focus}" if parsed.focus else ""
@@ -424,11 +524,18 @@ def parse_technical_args(args: str, *, default_symbol: str = "AAPL", default_day
424
524
  return TechnicalArgs(symbol=symbol, days=days)
425
525
 
426
526
 
427
- async def try_top_level_route(user_input: str, commands) -> bool:
428
- """Execute a top-level routed slash command through a SlashCommands object."""
527
+ async def try_top_level_route(user_input: str, commands, *, announce=None) -> bool:
528
+ """Execute a top-level routed slash command through a SlashCommands object.
529
+
530
+ ``announce`` is told the command first ("→ /news AAPL"): the interactive
531
+ loop routes here before send_message, so a routed message used to run its
532
+ command with nothing on screen saying which.
533
+ """
429
534
 
430
535
  routed = route_top_level_text(user_input, set(commands.commands))
431
536
  if routed is None:
432
537
  return False
538
+ if announce is not None:
539
+ announce(routed.text)
433
540
  await commands.execute(routed.text)
434
541
  return True
@@ -352,6 +352,24 @@ from typing import Dict, Any, Optional
352
352
  logger = logging.getLogger(__name__)
353
353
 
354
354
 
355
+ def _news_date(raw: str) -> str:
356
+ """A feed's publish time as 2026-10-05.
357
+
358
+ The first ten characters were kept, which suits ISO dates and cut an RSS
359
+ date mid-word: "Mon, 05 Oct 2026 12:00:00 GMT" showed as "Mon, 05 Oc".
360
+ """
361
+ from datetime import datetime
362
+ from email.utils import parsedate_to_datetime
363
+
364
+ text = str(raw or "").strip()
365
+ for parse in (lambda t: datetime.fromisoformat(t.replace("Z", "+00:00")), parsedate_to_datetime):
366
+ try:
367
+ return parse(text).strftime("%Y-%m-%d")
368
+ except (TypeError, ValueError, IndexError):
369
+ continue
370
+ return text[:10]
371
+
372
+
355
373
  class MarketCommandsMixin:
356
374
  """Mixin: Market commands: quote, realty, football, screen, news, screen_cn, limitup, north."""
357
375
 
@@ -1185,7 +1203,7 @@ class MarketCommandsMixin:
1185
1203
  url_item = a.get("url", a.get("link", ""))
1186
1204
  pub_date = a.get("published_at", a.get("date", a.get("publishedAt", "")))
1187
1205
  if pub_date:
1188
- pub_date = pub_date[:10] if len(pub_date) >= 10 else pub_date
1206
+ pub_date = _news_date(pub_date)
1189
1207
  else:
1190
1208
  title = str(a)
1191
1209
  source = pub_date = url_item = ""
@@ -1224,7 +1242,7 @@ class MarketCommandsMixin:
1224
1242
  source = a.get("source", "") if isinstance(a, dict) else ""
1225
1243
  pub_date = a.get("published_at", "") if isinstance(a, dict) else ""
1226
1244
  if pub_date:
1227
- pub_date = pub_date[:10] if len(pub_date) >= 10 else pub_date
1245
+ pub_date = _news_date(pub_date)
1228
1246
  if self.context.has_rich:
1229
1247
  self.context.console.print(f" [bold]{idx}.[/bold] {title}")
1230
1248
  meta_parts = [p for p in [source, pub_date] if p]
@@ -2752,6 +2752,22 @@ def _render_answer_block(text: str) -> None:
2752
2752
  console.print(Padding(make_markdown(_strip_latex(text)), (0, 0, 0, 4)))
2753
2753
 
2754
2754
 
2755
+ def _announce_route(command_text: str) -> None:
2756
+ """Say which command a plain-language message ran: "→ /news AAPL".
2757
+
2758
+ Routed messages used to run their command silently, so a misroute looked
2759
+ like Aria misunderstanding, and nobody learned the command for next time.
2760
+ """
2761
+ if _ARIA_BOT_MODE:
2762
+ return
2763
+ if HAS_RICH:
2764
+ from rich.text import Text
2765
+
2766
+ console.print(Text(f" → {command_text}", style="dim"))
2767
+ else:
2768
+ print(f" → {command_text}")
2769
+
2770
+
2755
2771
  def _print_tool_call(tool_name: str, params: dict):
2756
2772
  """Print tool call header — Claude Code-style ⏺ bullet tree."""
2757
2773
  if _ARIA_BOT_MODE:
@@ -4694,6 +4710,7 @@ class ArtheraTerminal:
4694
4710
  if routed is not None:
4695
4711
  self._send_message_route_active = True
4696
4712
  try:
4713
+ _announce_route(routed.text)
4697
4714
  self._maybe_show_intent_preflight(routed.text)
4698
4715
  await self.commands.execute(routed.text)
4699
4716
  finally:
@@ -4703,6 +4720,7 @@ class ArtheraTerminal:
4703
4720
  if routed is not None:
4704
4721
  self._send_message_route_active = True
4705
4722
  try:
4723
+ _announce_route(routed.text)
4706
4724
  self._maybe_show_intent_preflight(routed.text)
4707
4725
  await self.commands.execute(routed.text)
4708
4726
  finally:
@@ -6357,7 +6375,7 @@ class ArtheraTerminal:
6357
6375
  # Intercepts bare keywords like "analyze AAPL" → /analyze AAPL
6358
6376
  # so users don't need to type the slash for common quant workflows.
6359
6377
  self._maybe_show_intent_preflight(user_input)
6360
- _routed = await try_top_level_route(user_input, self.commands)
6378
+ _routed = await try_top_level_route(user_input, self.commands, announce=_announce_route)
6361
6379
  if _routed:
6362
6380
  continue
6363
6381
 
@@ -321,31 +321,76 @@ if HAS_PT:
321
321
  display_meta = meta_str,
322
322
  )
323
323
 
324
+ def _mention_index(self):
325
+ if getattr(self, "_mentions", None) is None:
326
+ from aria_code.ui.mentions import MentionIndex
327
+
328
+ self._mentions = MentionIndex(self.workspace, output_root=self.output_root, symbols=self.symbols)
329
+ return self._mentions
330
+
331
+ def _kind_label(self, name: str) -> str:
332
+ for kind in REFERENCE_KINDS:
333
+ if kind.name == name:
334
+ return kind.label_zh if self.lang == "zh" else kind.label_en
335
+ return name
336
+
337
+ def _kind_shortcuts(self, frag: str) -> Iterator[Completion]:
338
+ lowered = frag.lower()
339
+ for kind in REFERENCE_KINDS:
340
+ if kind.name.startswith(lowered):
341
+ yield Completion(
342
+ f"{kind.name}:",
343
+ start_position=-len(frag),
344
+ display=FormattedText([("class:fz-hi", f"@{kind.name}"), ("class:fz-cat", ":")]),
345
+ display_meta=(f"只看{self._kind_label(kind.name)}" if self.lang == "zh"
346
+ else f"{self._kind_label(kind.name)} only"),
347
+ )
348
+
349
+ def _mention_completions(self, mentions, replace: int) -> Iterator[Completion]:
350
+ for mention in mentions:
351
+ hits = set(mention.matched)
352
+ parts = [("class:fz-hi" if i in hits else "", ch) for i, ch in enumerate(mention.label)]
353
+ yield Completion(
354
+ mention.insert_text,
355
+ start_position=-replace,
356
+ display=FormattedText(parts),
357
+ display_meta=self._kind_label(mention.kind),
358
+ )
359
+
324
360
  def _reference_completions(self, frag: str) -> Iterator[Completion]:
325
- """Complete typed reference namespaces and their values."""
361
+ """Complete "@" references: results across every kind first.
362
+
363
+ "@" used to open on the kinds (file:, asset: …) and list files only
364
+ after a path character, so attaching a file took three steps. A
365
+ bare "@" now shows recently changed files, "@fx" searches files,
366
+ folders, assets and saved resources together, and "@file:" or
367
+ another kind prefix narrows to that kind.
368
+ """
326
369
  if ":" not in frag:
327
- lowered = frag.lower()
328
- for kind in REFERENCE_KINDS:
329
- if kind.name.startswith(lowered):
330
- label = kind.label_zh if self.lang == "zh" else kind.label_en
331
- yield Completion(
332
- f"{kind.name}:",
333
- start_position=-len(frag),
334
- display=FormattedText([
335
- ("class:fz-hi", f"@{kind.name}"),
336
- ("class:fz-cat", ":"),
337
- ]),
338
- display_meta=label,
339
- )
340
- # Keep the first-level @ menu semantic and compact. Plain-path
341
- # completion remains available only after an explicit path
342
- # prefix; normal discovery goes through @file:/@folder:.
370
+ # Browsing by path ("@src/", "@./", "@~/") works as before.
343
371
  if frag and (frag.startswith((".", "/", "~")) or "/" in frag):
344
372
  yield from self._file_completions(frag)
373
+ return
374
+ index = self._mention_index()
375
+ if not frag:
376
+ from aria_code.ui.mentions import Mention
377
+
378
+ recent = [Mention("file", path, 0) for path in index.recent_files()]
379
+ yield from self._mention_completions(recent, 0)
380
+ yield from self._kind_shortcuts("")
381
+ return
382
+ if len(frag) >= 2:
383
+ yield from self._kind_shortcuts(frag)
384
+ yield from self._mention_completions(index.search(frag), len(frag))
345
385
  return
346
386
 
347
387
  kind, value_frag = frag.split(":", 1)
348
388
  kind = kind.lower()
389
+ path_like = value_frag.startswith((".", "/", "~")) or "/" in value_frag
390
+ if kind in {"file", "folder"} and value_frag and not path_like:
391
+ found = self._mention_index().search(value_frag, kind=kind)
392
+ yield from self._mention_completions(found, len(frag))
393
+ return
349
394
  if kind == "asset":
350
395
  for symbol in self.symbols:
351
396
  if symbol.lower().startswith(value_frag.lower()):