aria-code 0.88.0__tar.gz → 0.89.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 (751) hide show
  1. {aria_code-0.88.0/src/aria_code.egg-info → aria_code-0.89.0}/PKG-INFO +1 -1
  2. {aria_code-0.88.0 → aria_code-0.89.0}/pyproject.toml +1 -1
  3. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/_version.py +1 -1
  4. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/backtest_cmds.py +30 -25
  5. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/catalog.py +23 -0
  6. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/core_cmds.py +4 -3
  7. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/warehouse_cmds.py +45 -8
  8. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/aria_cli.py +8 -4
  9. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/completer.py +2 -2
  10. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/render/output.py +38 -12
  11. {aria_code-0.88.0 → aria_code-0.89.0/src/aria_code.egg-info}/PKG-INFO +1 -1
  12. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code.egg-info/SOURCES.txt +3 -1
  13. aria_code-0.89.0/tests/test_narrow_chinese_output.py +62 -0
  14. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_output_rendering.py +19 -2
  15. aria_code-0.89.0/tests/test_wrapped_indent.py +33 -0
  16. {aria_code-0.88.0 → aria_code-0.89.0}/LICENSE +0 -0
  17. {aria_code-0.88.0 → aria_code-0.89.0}/NOTICE +0 -0
  18. {aria_code-0.88.0 → aria_code-0.89.0}/README.md +0 -0
  19. {aria_code-0.88.0 → aria_code-0.89.0}/setup.cfg +0 -0
  20. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/__init__.py +0 -0
  21. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/adk_apps/__init__.py +0 -0
  22. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/adk_apps/aria_code_review/__init__.py +0 -0
  23. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/adk_apps/aria_code_review/agent.py +0 -0
  24. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/adk_apps/aria_research/__init__.py +0 -0
  25. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/adk_apps/aria_research/agent.py +0 -0
  26. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/__init__.py +0 -0
  27. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/base.py +0 -0
  28. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/code_review.py +0 -0
  29. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/deep/__init__.py +0 -0
  30. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/deep/calibration_loop.py +0 -0
  31. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/deep/critic.py +0 -0
  32. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/deep/deepen.py +0 -0
  33. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/deep/models.py +0 -0
  34. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/deep/pipeline.py +0 -0
  35. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/deep/quant_fusion.py +0 -0
  36. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/deep/themes.py +0 -0
  37. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/deep/tiers.py +0 -0
  38. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/engineering/__init__.py +0 -0
  39. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/engineering/coder.py +0 -0
  40. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/engineering/tester.py +0 -0
  41. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/__init__.py +0 -0
  42. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/cashflow_burn.py +0 -0
  43. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/catalyst.py +0 -0
  44. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/corporate_finance.py +0 -0
  45. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/debate.py +0 -0
  46. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/earnings.py +0 -0
  47. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/fundamental.py +0 -0
  48. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/macro.py +0 -0
  49. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/news.py +0 -0
  50. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/risk.py +0 -0
  51. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/sector.py +0 -0
  52. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/strategist.py +0 -0
  53. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/stripe_revenue.py +0 -0
  54. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/synthesis.py +0 -0
  55. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/technical.py +0 -0
  56. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/orchestrator.py +0 -0
  57. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/portfolio_agent.py +0 -0
  58. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/realty/__init__.py +0 -0
  59. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/realty/asset_diagnosis.py +0 -0
  60. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/realty/business_match.py +0 -0
  61. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/realty/cashflow_verify.py +0 -0
  62. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/realty/contract_rules.py +0 -0
  63. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/realty/energy_anomaly.py +0 -0
  64. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/realty/exit_settlement.py +0 -0
  65. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/realty/fulfillment_risk.py +0 -0
  66. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/realty/ops_optimize.py +0 -0
  67. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/realty/revenue_share.py +0 -0
  68. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/registry.py +0 -0
  69. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/signal_scheme.py +0 -0
  70. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/sports/__init__.py +0 -0
  71. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/sports/football_agent.py +0 -0
  72. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/supervisor.py +0 -0
  73. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/team.py +0 -0
  74. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/warehouse/__init__.py +0 -0
  75. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/warehouse/contracts.py +0 -0
  76. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/warehouse/dashboard.py +0 -0
  77. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/warehouse/fulfillment_leadtime.py +0 -0
  78. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/warehouse/inbound_exceptions.py +0 -0
  79. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/warehouse/inventory_health.py +0 -0
  80. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/warehouse/local_run.py +0 -0
  81. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/warehouse/local_snapshot.py +0 -0
  82. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/warehouse/logistics_cost.py +0 -0
  83. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/warehouse/logistics_sync.py +0 -0
  84. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/warehouse/workflow.py +0 -0
  85. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/aliyun_data_client.py +0 -0
  86. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/README.md +0 -0
  87. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/__init__.py +0 -0
  88. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/channels/README.md +0 -0
  89. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/channels/__init__.py +0 -0
  90. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/channels/approvals.py +0 -0
  91. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/channels/conversation.py +0 -0
  92. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/channels/digest.py +0 -0
  93. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/channels/intake.py +0 -0
  94. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/channels/registry.py +0 -0
  95. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/channels/tradingview.py +0 -0
  96. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/README.md +0 -0
  97. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/__init__.py +0 -0
  98. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/_optional.py +0 -0
  99. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/bootstrap.py +0 -0
  100. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/broker_render.py +0 -0
  101. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/codegen_paths.py +0 -0
  102. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/__init__.py +0 -0
  103. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/_business_render.py +0 -0
  104. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/_ui.py +0 -0
  105. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/analysis_cmds.py +0 -0
  106. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/ashare_prediction_cmds.py +0 -0
  107. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/auth_cmds.py +0 -0
  108. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/broker_cmds.py +0 -0
  109. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/business_workflow_cmds.py +0 -0
  110. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/canvas_cmds.py +0 -0
  111. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/data_cmds.py +0 -0
  112. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/diagnostic_cmds.py +0 -0
  113. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/diagnostic_ops_cmds.py +0 -0
  114. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/file_cmds.py +0 -0
  115. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/finance_service_cmds.py +0 -0
  116. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/fx_commodity_cmds.py +0 -0
  117. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/market.py +0 -0
  118. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/market_cmds.py +0 -0
  119. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/market_context.py +0 -0
  120. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/market_render.py +0 -0
  121. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/model_cmds.py +0 -0
  122. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/ops_cmds.py +0 -0
  123. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/orchestrator_cmds.py +0 -0
  124. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/pdf_export_cmds.py +0 -0
  125. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/portfolio_cmds.py +0 -0
  126. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/report.py +0 -0
  127. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/scaffold_templates.py +0 -0
  128. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/session_cmds.py +0 -0
  129. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/session_ux_cmds.py +0 -0
  130. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/team.py +0 -0
  131. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/team_render.py +0 -0
  132. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/ui_cmds.py +0 -0
  133. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/workflow_cmds.py +0 -0
  134. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/workspace_cmds.py +0 -0
  135. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/config_paths.py +0 -0
  136. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/config_store.py +0 -0
  137. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/constants.py +0 -0
  138. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/context.py +0 -0
  139. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/deterministic.py +0 -0
  140. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/direct.py +0 -0
  141. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/finance_service_catalog.py +0 -0
  142. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/football_reports.py +0 -0
  143. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/github_app_auth.py +0 -0
  144. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/google_login.py +0 -0
  145. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/handlers/__init__.py +0 -0
  146. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/handlers/broker_handlers.py +0 -0
  147. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/handlers/chart_handlers.py +0 -0
  148. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/handlers/market_handlers.py +0 -0
  149. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/handlers/realty_handlers.py +0 -0
  150. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/handlers/sports_handlers.py +0 -0
  151. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/handlers/strategy_advice.py +0 -0
  152. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/helpers.py +0 -0
  153. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/hooks.py +0 -0
  154. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/i18n.py +0 -0
  155. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/intent.py +0 -0
  156. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/intent_router.py +0 -0
  157. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/intent_signals.py +0 -0
  158. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/lifecycle_hooks.py +0 -0
  159. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/local_tool_schemas.py +0 -0
  160. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/main.py +0 -0
  161. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/market_hours.py +0 -0
  162. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/market_metadata.py +0 -0
  163. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/market_universe.py +0 -0
  164. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/message_processing.py +0 -0
  165. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/model_catalog.py +0 -0
  166. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/pdf_report.py +0 -0
  167. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/plan_mode.py +0 -0
  168. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/plotly_html.py +0 -0
  169. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/prediction_feedback.py +0 -0
  170. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/preflight.py +0 -0
  171. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/project_aria.py +0 -0
  172. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/prompt_assembly.py +0 -0
  173. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/prompts/__init__.py +0 -0
  174. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/prompts/coding.py +0 -0
  175. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/prompts/select.py +0 -0
  176. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/prompts/system_prompts.py +0 -0
  177. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/prompts/ui.py +0 -0
  178. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/provider_endpoints.py +0 -0
  179. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/provider_keys.py +0 -0
  180. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/providers/__init__.py +0 -0
  181. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/providers/base.py +0 -0
  182. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/providers/chat_routing.py +0 -0
  183. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/providers/collaboration.py +0 -0
  184. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/providers/llm/__init__.py +0 -0
  185. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/providers/llm/offline_responses.py +0 -0
  186. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/providers/llm/ollama_stream.py +0 -0
  187. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/providers/llm/response_cache.py +0 -0
  188. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/providers/llm/sse_stream.py +0 -0
  189. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/providers/runtime_bridge.py +0 -0
  190. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/providers/vertexai_stream.py +0 -0
  191. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/review_runner.py +0 -0
  192. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/runtime_consumer.py +0 -0
  193. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/sandbox.py +0 -0
  194. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/session_export.py +0 -0
  195. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/session_jsonl.py +0 -0
  196. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/session_store.py +0 -0
  197. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/skills_catalog.py +0 -0
  198. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/todo_tracker.py +0 -0
  199. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/tool_executor.py +0 -0
  200. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/tool_registry.py +0 -0
  201. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/tool_scope.py +0 -0
  202. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/tools/__init__.py +0 -0
  203. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/tools/context.py +0 -0
  204. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/tools/file_tools.py +0 -0
  205. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/tools/market_tools.py +0 -0
  206. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/tools/notebook_tools.py +0 -0
  207. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/tools/system_tools.py +0 -0
  208. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/tools/write_tools.py +0 -0
  209. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/tradingview_bridge.py +0 -0
  210. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/turn_planning.py +0 -0
  211. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/update_check.py +0 -0
  212. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/updater.py +0 -0
  213. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/utils/__init__.py +0 -0
  214. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/utils/market_detect.py +0 -0
  215. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/daemon/README.md +0 -0
  216. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/vscode/README.md +0 -0
  217. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/vscode/package.json +0 -0
  218. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/aria_daemon.py +0 -0
  219. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/aria_feishu_bot.py +0 -0
  220. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/aria_mcp_server.py +0 -0
  221. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/aria_relay_client.py +0 -0
  222. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/aria_relay_server.py +0 -0
  223. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/aria_telegram_bot.py +0 -0
  224. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ariarc.py +0 -0
  225. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/artifacts.py +0 -0
  226. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/backtest_engine.py +0 -0
  227. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/backtest_report.py +0 -0
  228. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/__init__.py +0 -0
  229. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/automation.py +0 -0
  230. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/base.py +0 -0
  231. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/capabilities.py +0 -0
  232. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/cn/__init__.py +0 -0
  233. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/cn/easytrader_broker.py +0 -0
  234. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/cn/futu_broker.py +0 -0
  235. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/cn/longbridge_broker.py +0 -0
  236. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/cn/tiger_broker.py +0 -0
  237. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/cn/xtquant_broker.py +0 -0
  238. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/config.py +0 -0
  239. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/intl/__init__.py +0 -0
  240. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/intl/alpaca_broker.py +0 -0
  241. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/intl/ibkr_broker.py +0 -0
  242. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/intl/trading212_broker.py +0 -0
  243. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/intl/webull_broker.py +0 -0
  244. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/paper_broker.py +0 -0
  245. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/planning.py +0 -0
  246. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/registry.py +0 -0
  247. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/trading.py +0 -0
  248. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/canva_client.py +0 -0
  249. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/change_store.py +0 -0
  250. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/clients/__init__.py +0 -0
  251. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/clients/aliyun_data_client.py +0 -0
  252. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/clients/aria_relay_client.py +0 -0
  253. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/clients/canva_client.py +0 -0
  254. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/clients/figma_client.py +0 -0
  255. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/clients/football_data_client.py +0 -0
  256. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/clients/kling_video_client.py +0 -0
  257. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/clients/market_data_client.py +0 -0
  258. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/clients/openai_image_client.py +0 -0
  259. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/clients/runway_video_client.py +0 -0
  260. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/clients/warehouse_erp_client.py +0 -0
  261. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/cloud_memory.py +0 -0
  262. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/command_safety.py +0 -0
  263. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/computer_use_tools.py +0 -0
  264. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/dashboard_generator.py +0 -0
  265. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/data_analysis_tools.py +0 -0
  266. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/data_cleaner.py +0 -0
  267. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/data_service.py +0 -0
  268. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/datasources/__init__.py +0 -0
  269. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/datasources/base.py +0 -0
  270. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/datasources/router.py +0 -0
  271. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/datasources/sources/__init__.py +0 -0
  272. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/datasources/sources/akshare_source.py +0 -0
  273. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/datasources/sources/alpha_vantage_source.py +0 -0
  274. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/datasources/sources/edgar_source.py +0 -0
  275. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/datasources/sources/finnhub_source.py +0 -0
  276. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/datasources/sources/fred_source.py +0 -0
  277. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/datasources/sources/tushare_source.py +0 -0
  278. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/datasources/sources/web_scraper_source.py +0 -0
  279. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/datasources/sources/world_bank_source.py +0 -0
  280. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/datasources/sources/yfinance_source.py +0 -0
  281. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/demo_player.py +0 -0
  282. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/doctor.py +0 -0
  283. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/domain/__init__.py +0 -0
  284. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/domain/backtest_engine.py +0 -0
  285. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/domain/backtest_report.py +0 -0
  286. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/domain/finance_formulas.py +0 -0
  287. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/domain/portfolio_ledger.py +0 -0
  288. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/domain/strategy_vault.py +0 -0
  289. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/evals/__init__.py +0 -0
  290. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/evals/harness.py +0 -0
  291. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/evals/runner.py +0 -0
  292. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/external_agent_runner.py +0 -0
  293. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/figma_client.py +0 -0
  294. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/file_analysis_tools.py +0 -0
  295. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/finance_formulas.py +0 -0
  296. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/football_data_client.py +0 -0
  297. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/image_gen_tools.py +0 -0
  298. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/intent_classifier.py +0 -0
  299. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/kling_video_client.py +0 -0
  300. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/licensing.py +0 -0
  301. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/local_finance_tools.py +0 -0
  302. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/local_image_provider.py +0 -0
  303. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/local_llm_provider.py +0 -0
  304. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/macro_tools.py +0 -0
  305. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/markdown_pdf.py +0 -0
  306. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/market_data_client.py +0 -0
  307. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/mcp_client.py +0 -0
  308. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/memory_manager.py +0 -0
  309. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/model_capability.py +0 -0
  310. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/notification_tools.py +0 -0
  311. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/openai_image_client.py +0 -0
  312. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/__init__.py +0 -0
  313. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/adk_bridge/__init__.py +0 -0
  314. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/adk_bridge/code_review_tools.py +0 -0
  315. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/adk_bridge/market_tools.py +0 -0
  316. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_agents/__init__.py +0 -0
  317. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_agents/manifest.py +0 -0
  318. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_core/__init__.py +0 -0
  319. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_core/architecture.py +0 -0
  320. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_core/export.py +0 -0
  321. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_core/manifest.py +0 -0
  322. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_core/paths.py +0 -0
  323. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_core/secure_file.py +0 -0
  324. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_infra/__init__.py +0 -0
  325. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_infra/arthera.py +0 -0
  326. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_infra/doctor.py +0 -0
  327. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_infra/product.py +0 -0
  328. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_mcp/__init__.py +0 -0
  329. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_mcp/bridge.py +0 -0
  330. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_mcp/circuit.py +0 -0
  331. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_mcp/config.py +0 -0
  332. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_mcp/installer.py +0 -0
  333. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_mcp/server.py +0 -0
  334. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_mcp/tools.py +0 -0
  335. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_sdk/__init__.py +0 -0
  336. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_sdk/client.py +0 -0
  337. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_sdk/providers.py +0 -0
  338. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_sdk/streaming.py +0 -0
  339. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_sdk/types.py +0 -0
  340. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_services/__init__.py +0 -0
  341. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_services/cache.py +0 -0
  342. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_services/context.py +0 -0
  343. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_services/context_checkpoints.py +0 -0
  344. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_services/data.py +0 -0
  345. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_services/provider_health.py +0 -0
  346. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_services/references.py +0 -0
  347. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_services/registry.py +0 -0
  348. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_services/research_protocol.py +0 -0
  349. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_services/research_quality.py +0 -0
  350. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_services/settings.py +0 -0
  351. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_services/usage.py +0 -0
  352. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_skills/__init__.py +0 -0
  353. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_skills/catalog.py +0 -0
  354. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_skills/loader.py +0 -0
  355. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_skills/registry.py +0 -0
  356. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_tools/__init__.py +0 -0
  357. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_tools/financial/__init__.py +0 -0
  358. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_tools/financial/_paths.py +0 -0
  359. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_tools/financial/compliance.py +0 -0
  360. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_tools/financial/factors.py +0 -0
  361. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_tools/financial/risk_tools.py +0 -0
  362. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_tools/financial/strategy.py +0 -0
  363. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_tools/registry.py +0 -0
  364. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/__init__.py +0 -0
  365. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/_namespace.py +0 -0
  366. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/backtest/__init__.py +0 -0
  367. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/backtest/core.py +0 -0
  368. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/backtest/engine.py +0 -0
  369. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/portfolio/__init__.py +0 -0
  370. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/portfolio/optimizer.py +0 -0
  371. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/sports/__init__.py +0 -0
  372. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/sports/calibrator.py +0 -0
  373. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/sports/dixon_coles.py +0 -0
  374. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/sports/elo.py +0 -0
  375. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/sports/form.py +0 -0
  376. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/sports/h2h.py +0 -0
  377. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/sports/ml_model.py +0 -0
  378. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/sports/predictor.py +0 -0
  379. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/sports/tracker.py +0 -0
  380. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/stochastic/__init__.py +0 -0
  381. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/stochastic/gbm_enhanced.py +0 -0
  382. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/stochastic/ito_calculus.py +0 -0
  383. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/stochastic/kelly_criterion.py +0 -0
  384. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/stochastic/monte_carlo_advanced.py +0 -0
  385. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/stochastic/options_pricing.py +0 -0
  386. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/stochastic/stochastic_processes.py +0 -0
  387. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packs/__init__.py +0 -0
  388. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packs/base.py +0 -0
  389. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packs/finance/__init__.py +0 -0
  390. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packs/logistics/__init__.py +0 -0
  391. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packs/payments/__init__.py +0 -0
  392. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packs/realty/__init__.py +0 -0
  393. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packs/registry.py +0 -0
  394. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packs/rules.py +0 -0
  395. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/plan_utils.py +0 -0
  396. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/plugin_loader.py +0 -0
  397. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/portfolio_ledger.py +0 -0
  398. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/preview_server.py +0 -0
  399. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/privacy/__init__.py +0 -0
  400. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/privacy/feedback.py +0 -0
  401. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/project_review.py +0 -0
  402. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/project_review_api.py +0 -0
  403. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/project_review_server.py +0 -0
  404. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/project_tools.py +0 -0
  405. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/providers/__init__.py +0 -0
  406. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/providers/llm/__init__.py +0 -0
  407. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/providers/llm/anthropic.py +0 -0
  408. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/providers/llm/autoconfig.py +0 -0
  409. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/providers/llm/base.py +0 -0
  410. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/providers/llm/custom.py +0 -0
  411. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/providers/llm/ollama.py +0 -0
  412. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/providers/llm/openai_compat.py +0 -0
  413. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/providers/llm/registry.py +0 -0
  414. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/providers/local_image_provider.py +0 -0
  415. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/providers/local_llm_provider.py +0 -0
  416. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/providers/tool_messages.py +0 -0
  417. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/realty_data_tools.py +0 -0
  418. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/relay_store.py +0 -0
  419. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/report_exporters.py +0 -0
  420. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/report_generator.py +0 -0
  421. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/review_service.py +0 -0
  422. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/__init__.py +0 -0
  423. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/acceptance.py +0 -0
  424. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/agent_loop.py +0 -0
  425. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/approval.py +0 -0
  426. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/budget.py +0 -0
  427. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/checkpoints.py +0 -0
  428. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/crash_report.py +0 -0
  429. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/events.py +0 -0
  430. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/gateway.py +0 -0
  431. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/lsp.py +0 -0
  432. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/orchestrator.py +0 -0
  433. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/repo_map.py +0 -0
  434. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/run_state.py +0 -0
  435. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/run_store.py +0 -0
  436. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/self_healing.py +0 -0
  437. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/subagent.py +0 -0
  438. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/task_ledger.py +0 -0
  439. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/task_orchestrator.py +0 -0
  440. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/tool_executor.py +0 -0
  441. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/tool_policy.py +0 -0
  442. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/worktrees.py +0 -0
  443. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runway_video_client.py +0 -0
  444. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/safety/__init__.py +0 -0
  445. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/safety/permissions.py +0 -0
  446. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/safety/service.py +0 -0
  447. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/setup_wizard.py +0 -0
  448. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/spreadsheet_tools.py +0 -0
  449. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/strategy_vault.py +0 -0
  450. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/__init__.py +0 -0
  451. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/artifact_tools.py +0 -0
  452. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/broker_tools.py +0 -0
  453. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/build_quant_engine.py +0 -0
  454. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/code_audit_tools.py +0 -0
  455. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/computer_use_tools.py +0 -0
  456. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/data_analysis_tools.py +0 -0
  457. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/enterprise_finance_tools.py +0 -0
  458. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/extended_tools.py +0 -0
  459. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/file_analysis_tools.py +0 -0
  460. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/image_gen_tools.py +0 -0
  461. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/local_finance_tools.py +0 -0
  462. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/logistics_carriers.py +0 -0
  463. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/logistics_inventory.py +0 -0
  464. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/logistics_io.py +0 -0
  465. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/logistics_tenancy.py +0 -0
  466. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/logistics_tools.py +0 -0
  467. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/macro_tools.py +0 -0
  468. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/notification_tools.py +0 -0
  469. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/project_tools.py +0 -0
  470. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/realty_data_tools.py +0 -0
  471. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/spreadsheet_tools.py +0 -0
  472. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/stripe_tools.py +0 -0
  473. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/__init__.py +0 -0
  474. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/banner.py +0 -0
  475. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/console.py +0 -0
  476. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/image_render.py +0 -0
  477. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/input_box.py +0 -0
  478. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/mentions.py +0 -0
  479. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/picker.py +0 -0
  480. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/render/__init__.py +0 -0
  481. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/render/finance.py +0 -0
  482. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/render/market.py +0 -0
  483. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/render/responsive.py +0 -0
  484. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/render/team.py +0 -0
  485. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/robot.py +0 -0
  486. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/startup_dashboard.py +0 -0
  487. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/utils/vscode_uri.py +0 -0
  488. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/video_analysis.py +0 -0
  489. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/video_editor.py +0 -0
  490. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/workspace/__init__.py +0 -0
  491. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/workspace/files.py +0 -0
  492. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/workspace/verify.py +0 -0
  493. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/workspace_changes.py +0 -0
  494. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/workspace_context.py +0 -0
  495. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/workspace_service.py +0 -0
  496. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/workspace_tools.py +0 -0
  497. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code.egg-info/dependency_links.txt +0 -0
  498. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code.egg-info/entry_points.txt +0 -0
  499. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code.egg-info/requires.txt +0 -0
  500. {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code.egg-info/top_level.txt +0 -0
  501. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_adk_market_tools.py +0 -0
  502. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_agent_team_fallback.py +0 -0
  503. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_analyze_file_tool.py +0 -0
  504. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_architecture_ledger_is_true.py +0 -0
  505. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_architecture_report.py +0 -0
  506. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_aria_cli_core.py +0 -0
  507. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_aria_mcp_server.py +0 -0
  508. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_aria_sdk.py +0 -0
  509. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_artifact_publishing.py +0 -0
  510. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_artifacts_and_reports.py +0 -0
  511. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_ashare_prediction_cmds.py +0 -0
  512. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_backtest_cmds.py +0 -0
  513. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_backtest_engine.py +0 -0
  514. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_backtest_report.py +0 -0
  515. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_binary_bundles_runtime_imports.py +0 -0
  516. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_broken_akshare_is_optional.py +0 -0
  517. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_broker_automation.py +0 -0
  518. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_broker_chat_confirm_gate.py +0 -0
  519. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_broker_planning.py +0 -0
  520. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_broker_safety.py +0 -0
  521. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_broker_tools.py +0 -0
  522. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_budget.py +0 -0
  523. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_business_workflow_cmds.py +0 -0
  524. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_canva_client.py +0 -0
  525. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_canvas_cmds.py +0 -0
  526. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_card_approvals.py +0 -0
  527. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_channel_intake.py +0 -0
  528. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_channels.py +0 -0
  529. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_chart_handlers.py +0 -0
  530. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_chat_bots_fail_closed.py +0 -0
  531. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_chat_routing.py +0 -0
  532. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_ci_security_workflow.py +0 -0
  533. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_cli_app_split.py +0 -0
  534. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_cli_bootstrap.py +0 -0
  535. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_cli_config_store.py +0 -0
  536. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_cli_lifecycle_hooks.py +0 -0
  537. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_cli_runtime_consumer.py +0 -0
  538. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_cli_tool_executor_module.py +0 -0
  539. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_cli_updater.py +0 -0
  540. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_cloud_memory.py +0 -0
  541. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_code_audit_tools.py +0 -0
  542. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_code_review_agent.py +0 -0
  543. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_codegen_output.py +0 -0
  544. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_coder_tester_self_healing.py +0 -0
  545. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_coder_tool_safety.py +0 -0
  546. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_collaboration.py +0 -0
  547. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_command_loggers.py +0 -0
  548. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_command_safety.py +0 -0
  549. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_completions_builder.py +0 -0
  550. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_config_paths.py +0 -0
  551. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_configured_provider.py +0 -0
  552. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_container_entrypoint.py +0 -0
  553. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_container_entrypoints.py +0 -0
  554. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_context_checkpoints.py +0 -0
  555. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_context_references.py +0 -0
  556. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_context_service.py +0 -0
  557. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_conversation_core.py +0 -0
  558. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_crash_report.py +0 -0
  559. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_credential_file_permissions.py +0 -0
  560. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_custom_providers.py +0 -0
  561. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_daemon_gateway_config.py +0 -0
  562. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_dashboard_generator.py +0 -0
  563. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_data_service.py +0 -0
  564. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_data_service_imports.py +0 -0
  565. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_data_without_model.py +0 -0
  566. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_datasource_routing.py +0 -0
  567. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_deep_analysis.py +0 -0
  568. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_degrades_without_quant_engine.py +0 -0
  569. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_dispatcher_pins_match_the_release.py +0 -0
  570. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_doctor.py +0 -0
  571. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_doctor_describes_the_current_install.py +0 -0
  572. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_doctor_npm_scope.py +0 -0
  573. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_engine_boundary.py +0 -0
  574. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_enterprise_tool_honesty.py +0 -0
  575. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_env_switch_docs.py +0 -0
  576. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_evals_harness.py +0 -0
  577. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_event_import_roots.py +0 -0
  578. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_extended_tools.py +0 -0
  579. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_feishu_swarm_config.py +0 -0
  580. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_file_links.py +0 -0
  581. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_finalize_release.py +0 -0
  582. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_finance_renderers.py +0 -0
  583. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_finance_service_catalog.py +0 -0
  584. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_first_run_output.py +0 -0
  585. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_first_run_works.py +0 -0
  586. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_football_agent.py +0 -0
  587. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_football_prediction_output.py +0 -0
  588. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_google_cloud_models.py +0 -0
  589. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_google_cloud_routing.py +0 -0
  590. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_google_login.py +0 -0
  591. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_google_search_provider.py +0 -0
  592. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_headless_is_agentic.py +0 -0
  593. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_honest_surfaces.py +0 -0
  594. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_image_gen_tools.py +0 -0
  595. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_image_inputs.py +0 -0
  596. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_import_graph_budget.py +0 -0
  597. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_intent_router.py +0 -0
  598. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_intent_signals.py +0 -0
  599. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_kling_video_client.py +0 -0
  600. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_lazy_rebind.py +0 -0
  601. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_legacy_module_imports.py +0 -0
  602. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_license_consistency.py +0 -0
  603. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_licensing.py +0 -0
  604. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_local_image_provider.py +0 -0
  605. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_logistics_3pl.py +0 -0
  606. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_logistics_and_finance_agents.py +0 -0
  607. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_lsp.py +0 -0
  608. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_markdown_pdf.py +0 -0
  609. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_market_answers_in_english.py +0 -0
  610. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_market_data_client.py +0 -0
  611. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_market_history_inheritance.py +0 -0
  612. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_market_history_tool.py +0 -0
  613. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_market_hours.py +0 -0
  614. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_market_questions_on_backend.py +0 -0
  615. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_market_symbol_extraction.py +0 -0
  616. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_market_universe.py +0 -0
  617. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_mcp_circuit.py +0 -0
  618. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_mcp_client.py +0 -0
  619. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_mentions.py +0 -0
  620. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_model_capability_registry.py +0 -0
  621. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_model_choice_is_the_users.py +0 -0
  622. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_model_selection_state.py +0 -0
  623. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_native_binary_entrypoints.py +0 -0
  624. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_native_installer.py +0 -0
  625. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_natural_language_routing.py +0 -0
  626. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_new_modules.py +0 -0
  627. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_no_hardcoded_developer_paths.py +0 -0
  628. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_no_uncommitted_imports.py +0 -0
  629. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_numeric_listings.py +0 -0
  630. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_ollama_stream_imports.py +0 -0
  631. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_ollama_stream_tools.py +0 -0
  632. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_openai_image_client.py +0 -0
  633. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_operations_suite.py +0 -0
  634. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_packages_facade.py +0 -0
  635. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_packaging_constraints.py +0 -0
  636. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_packaging_manifest.py +0 -0
  637. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_packs_domains.py +0 -0
  638. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_pdf_report.py +0 -0
  639. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_pick_best_installed_model.py +0 -0
  640. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_plan_mode.py +0 -0
  641. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_platform_package_assembly.py +0 -0
  642. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_platform_packages.py +0 -0
  643. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_platform_publish.py +0 -0
  644. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_plotly_html_output.py +0 -0
  645. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_portfolio_ledger.py +0 -0
  646. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_post_turn_context_decision.py +0 -0
  647. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_preflight.py +0 -0
  648. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_preview_server.py +0 -0
  649. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_privacy_feedback.py +0 -0
  650. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_project_aria.py +0 -0
  651. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_project_review.py +0 -0
  652. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_project_review_api.py +0 -0
  653. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_prompt_assembly.py +0 -0
  654. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_prompt_selection.py +0 -0
  655. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_provider_autoconfig.py +0 -0
  656. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_provider_error_messages.py +0 -0
  657. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_provider_integration.py +0 -0
  658. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_provider_registry.py +0 -0
  659. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_public_service_status.py +0 -0
  660. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_quant_engine_namespace.py +0 -0
  661. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_rebind_contract.py +0 -0
  662. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_rebind_namespace_contract.py +0 -0
  663. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_relay_client_credentials.py +0 -0
  664. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_relay_event_verification.py +0 -0
  665. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_relay_sends_for_clients.py +0 -0
  666. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_relay_store.py +0 -0
  667. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_relay_url.py +0 -0
  668. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_release_chain.py +0 -0
  669. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_release_commit_identity.py +0 -0
  670. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_release_push_is_atomic.py +0 -0
  671. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_release_reaches_the_registries.py +0 -0
  672. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_release_verification_waits.py +0 -0
  673. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_release_workflow_permissions.py +0 -0
  674. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_report_charts.py +0 -0
  675. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_report_generator.py +0 -0
  676. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_research_protocol.py +0 -0
  677. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_research_quality.py +0 -0
  678. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_responsive_rendering.py +0 -0
  679. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_review_service.py +0 -0
  680. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_root_module_budget.py +0 -0
  681. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_rsi_without_pandas_ta.py +0 -0
  682. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_runtime_acceptance.py +0 -0
  683. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_runtime_agent_loop.py +0 -0
  684. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_runtime_approval.py +0 -0
  685. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_runtime_bridge.py +0 -0
  686. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_runtime_bridge_fallback.py +0 -0
  687. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_runtime_checkpoints.py +0 -0
  688. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_runtime_event_identity.py +0 -0
  689. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_runtime_gateway.py +0 -0
  690. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_runtime_repo_map.py +0 -0
  691. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_runtime_run_store.py +0 -0
  692. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_runtime_tool_executor.py +0 -0
  693. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_runtime_worktrees.py +0 -0
  694. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_runway_video_client.py +0 -0
  695. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_safety_permissions.py +0 -0
  696. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_safety_service.py +0 -0
  697. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_safety_service_adoption.py +0 -0
  698. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_service_diagnostics_security.py +0 -0
  699. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_session_search.py +0 -0
  700. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_settings_service.py +0 -0
  701. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_shipper_digest.py +0 -0
  702. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_single_import_root.py +0 -0
  703. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_skill_agent_binding.py +0 -0
  704. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_skill_catalog.py +0 -0
  705. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_skill_loader.py +0 -0
  706. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_slash_popup.py +0 -0
  707. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_spreadsheet_tools.py +0 -0
  708. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_sse_stream_contract.py +0 -0
  709. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_startup_dashboard.py +0 -0
  710. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_startup_latency.py +0 -0
  711. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_status_language.py +0 -0
  712. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_streaming_pipeline.py +0 -0
  713. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_stripe_agent.py +0 -0
  714. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_subagent.py +0 -0
  715. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_supervisor_routing.py +0 -0
  716. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_system_prompts.py +0 -0
  717. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_system_tools_output.py +0 -0
  718. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_task_orchestrator.py +0 -0
  719. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_team_synthesis.py +0 -0
  720. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_tls_trust_store.py +0 -0
  721. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_tool_policy.py +0 -0
  722. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_tool_rounds_on_openai_apis.py +0 -0
  723. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_tool_scope.py +0 -0
  724. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_tool_step_output.py +0 -0
  725. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_trading_service.py +0 -0
  726. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_tradingview_bridge.py +0 -0
  727. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_turn_planning.py +0 -0
  728. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_ui_completer_references.py +0 -0
  729. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_ui_console_theme.py +0 -0
  730. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_ui_input_box.py +0 -0
  731. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_ui_language_and_model.py +0 -0
  732. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_ui_robot_banner.py +0 -0
  733. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_update_health_routes.py +0 -0
  734. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_verification_hint.py +0 -0
  735. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_verification_policy.py +0 -0
  736. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_version_consistency.py +0 -0
  737. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_version_counter.py +0 -0
  738. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_video_analysis.py +0 -0
  739. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_video_editor.py +0 -0
  740. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_vscode_mcp.py +0 -0
  741. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_warehouse_agents.py +0 -0
  742. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_warehouse_cli_registration.py +0 -0
  743. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_warehouse_erp_client.py +0 -0
  744. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_warehouse_workflow.py +0 -0
  745. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_wheel_is_installable.py +0 -0
  746. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_workspace_changes.py +0 -0
  747. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_workspace_context.py +0 -0
  748. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_workspace_files.py +0 -0
  749. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_workspace_scope.py +0 -0
  750. {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_workspace_service.py +0 -0
  751. {aria_code-0.88.0 → aria_code-0.89.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.88.0
3
+ Version: 0.89.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.88.0"
7
+ version = "0.89.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.88.0"
20
+ __version__ = "0.89.0"
@@ -553,46 +553,51 @@ class BacktestCommandsMixin:
553
553
  actual_end = self._bt_value(d, "end", "end_date", default=end_date)
554
554
  bars = self._bt_int(d.get("bars"))
555
555
  initial = self._bt_money(d.get("initial_capital", _initial_capital))
556
- self.context.console.print(
557
- f" [#57606a]source:[/#57606a] {src}"
558
- f" [#57606a]period:[/#57606a] {actual_start} → {actual_end}"
559
- f" [#57606a]bars:[/#57606a] {bars}"
560
- f" [#57606a]capital:[/#57606a] {initial}"
561
- )
562
- self.context.console.print(
563
- f" [#57606a]params:[/#57606a] "
564
- f"momentum={_momentum_period} fast={_fast_period} slow={_slow_period}"
565
- )
556
+ # One label per row, values wrapping in their own column: four
557
+ # "label: value" pairs on one line wrapped anywhere in an
558
+ # 80-column terminal, and the report path fell to column 0.
559
+ from rich.padding import Padding
560
+ from rich.style import Style
561
+ from rich.table import Table
562
+ from rich.text import Text
563
+ from aria_code.ui.render.output import file_uri
564
+
565
+ facts: list[tuple[str, object]] = [
566
+ ("source", src),
567
+ ("period", f"{actual_start} → {actual_end} · {bars} bars"),
568
+ ("capital", initial),
569
+ ("params", f"momentum={_momentum_period} fast={_fast_period} slow={_slow_period}"),
570
+ ]
566
571
  if d.get("provider_chain"):
567
572
  chain = " → ".join(str(x) for x in d.get("provider_chain") or [])
568
573
  status = d.get("data_status") or "complete"
569
574
  missing = ", ".join(str(x) for x in (d.get("missing_fields") or [])) or "none"
570
- self.context.console.print(
571
- f" [#57606a]data:[/#57606a] {chain}"
572
- f" [#57606a]status:[/#57606a] {status}"
573
- f" [#57606a]missing:[/#57606a] {missing}"
574
- )
575
+ facts.append(("data", f"{chain} · {status} · missing {missing}"))
575
576
  vol = self._bt_volume_summary(d)
576
577
  if vol:
577
578
  avg = vol.get("average")
578
579
  last = vol.get("last")
579
580
  coverage = self._bt_num(vol.get("coverage"))
580
- self.context.console.print(
581
- f" [#57606a]volume:[/#57606a] "
582
- f"avg {avg:,.0f} · last {last:,.0f} · coverage {coverage:.0%}"
583
- if avg is not None and last is not None
584
- else " [#57606a]volume:[/#57606a] unavailable"
585
- )
581
+ facts.append(("volume", f"avg {avg:,.0f} · last {last:,.0f} · coverage {coverage:.0%}"
582
+ if avg is not None and last is not None else "unavailable"))
586
583
  if d.get("report_path"):
587
584
  _report = str(d["report_path"])
588
585
  _home = str(pathlib.Path.home())
589
- if _report.startswith(_home + os.sep):
590
- _report = "~" + _report[len(_home):]
591
- self.context.console.print(f" [#57606a]report:[/#57606a] {_report}")
586
+ _shown = "~" + _report[len(_home):] if _report.startswith(_home + os.sep) else _report
587
+ facts.append(("report", Text(_shown, style=Style(link=file_uri(_report)))))
588
+ grid = Table.grid(padding=(0, 1))
589
+ grid.add_column(style="#57606a", no_wrap=True)
590
+ grid.add_column(overflow="fold")
591
+ for label, value in facts:
592
+ grid.add_row(f"{label}:", value if isinstance(value, Text) else Text(str(value)))
593
+ self.context.console.print(Padding(grid, (0, 0, 0, 2)))
592
594
  if trades == 0:
595
+ _zh_bt = str(self.terminal.config.get("ui_lang", "en")).lower().startswith("zh")
593
596
  self.context.console.print(
594
597
  " [yellow]注意:[/yellow] # Trades 为 0,表示本次规则没有触发入场;"
595
- "收益可能来自全程空仓/持仓逻辑或上游交易统计口径。"
598
+ "收益可能来自全程空仓/持仓逻辑或上游交易统计口径。" if _zh_bt else
599
+ " [yellow]Note:[/yellow] 0 trades — the rules never triggered an entry; any return "
600
+ "comes from holding or from how the data source counts trades."
596
601
  )
597
602
  else:
598
603
  print(f"Total Return: {d.get('total_return',0)*100:.1f}% Sharpe: {d.get('sharpe_ratio',0):.2f} MaxDD: {d.get('max_drawdown',0)*100:.1f}%")
@@ -158,3 +158,26 @@ def short_description(description: str) -> str:
158
158
  text = str(description or "")
159
159
  cut = text.find(": /")
160
160
  return (text[:cut] if cut > 0 else text).strip()
161
+
162
+
163
+ # What /help and the "/" popup say about the commands they show, in the Chinese
164
+ # UI: the descriptions in the command table are English, so a Chinese session
165
+ # read "Show commands and examples" under 命令.
166
+ COMMAND_DESCRIPTIONS_ZH = {
167
+ "/help": "命令与示例", "/model": "切换模型", "/review": "代码审查", "/plan": "起草计划",
168
+ "/init": "为当前项目生成 ARIA.md", "/status": "运行状态:引擎 · 模型 · 工具 · 上下文",
169
+ "/sessions": "查看与搜索会话", "/clear": "清空对话", "/compact": "压缩上下文",
170
+ "/copy": "复制上一条回答", "/rewind": "恢复代码或对话", "/permissions": "工具权限",
171
+ "/config": "查看与修改配置", "/doctor": "诊断安装、模型与 API Key", "/login": "登录",
172
+ "/code": "生成并运行代码", "/ta": "技术指标", "/backtest": "回测并生成 HTML 报告",
173
+ "/team": "多智能体研究团队", "/report": "研究报告", "/portfolio": "投资组合",
174
+ "/inventory": "3PL 库存策略:补货点、安全库存、ABC/XYZ、呆滞库存",
175
+ "/carriers": "3PL 承运商评分:按线路排名、成本异常与节省",
176
+ }
177
+
178
+
179
+ def describe(name: str, description: str, lang: str = "en") -> str:
180
+ """The short description to show for a command, in the UI language."""
181
+ if str(lang).lower().startswith("zh") and name in COMMAND_DESCRIPTIONS_ZH:
182
+ return COMMAND_DESCRIPTIONS_ZH[name]
183
+ return short_description(description)
@@ -264,12 +264,13 @@ class CoreCommandsMixin:
264
264
  commands that matter scrolled out of view. The rest is a topic away.
265
265
  """
266
266
  from aria_code.apps.cli.commands.catalog import (
267
- CORE_SLASH_COMMANDS, ENTRY_SLASH_COMMANDS, HELP_TOPICS, short_description,
267
+ CORE_SLASH_COMMANDS, ENTRY_SLASH_COMMANDS, HELP_TOPICS, describe,
268
268
  )
269
269
  zh = str(self.terminal.config.get("ui_lang", "en")).lower().startswith("zh")
270
270
  T = (lambda a, b: a) if zh else (lambda a, b: b)
271
- core = [(n, short_description(self.commands[n][1])) for n in CORE_SLASH_COMMANDS if n in self.commands]
272
- entry = [(n, short_description(self.commands[n][1])) for n in ENTRY_SLASH_COMMANDS if n in self.commands]
271
+ lang = "zh" if zh else "en"
272
+ core = [(n, describe(n, self.commands[n][1], lang)) for n in CORE_SLASH_COMMANDS if n in self.commands]
273
+ entry = [(n, describe(n, self.commands[n][1], lang)) for n in ENTRY_SLASH_COMMANDS if n in self.commands]
273
274
  examples = (
274
275
  T("给 utils.py 补上测试并运行", "Add tests for utils.py and run them"),
275
276
  T("NVDA 这周走势怎么样?", "How's NVDA this week?"),
@@ -156,8 +156,38 @@ _LABELS = {
156
156
  }
157
157
 
158
158
 
159
+ def _inventory_headline(result: dict, zh: bool) -> str:
160
+ """The first line of /inventory, in the UI language.
161
+
162
+ The tool's summary is English; in a Chinese session the detail lines under
163
+ it were Chinese and the headline above them was not. The formulas in the
164
+ basis line stay as the tool writes them.
165
+ """
166
+ if not zh:
167
+ return result["summary"]
168
+ data, counts = result["data"], result["data"].get("counts", {})
169
+ return (f"分析 {len(data['items'])} 个 SKU({result.get('source', '')}):"
170
+ f"{counts.get('reorder', 0)} 个需补货,{counts.get('insufficient_history', 0)} 个历史数据不足,"
171
+ f"{counts.get('no_demand', 0)} 个无需求;呆滞 {data.get('dead_stock', 0)} 个,慢动 {data.get('slow_stock', 0)} 个。")
172
+
173
+
174
+ def _carriers_headline(result: dict, zh: bool) -> str:
175
+ """The first line of /carriers, in the UI language (see _inventory_headline)."""
176
+ if not zh:
177
+ return result["summary"]
178
+ import re
179
+
180
+ data = result["data"]
181
+ waybills = re.match(r"(\d+)", result.get("summary", ""))
182
+ lanes = {c["lane"] for c in data.get("scorecard", [])}
183
+ carriers = {c["carrier"] for c in data.get("scorecard", [])}
184
+ return (f"{waybills.group(1) if waybills else '?'} 张运单,{len(lanes)} 条线路、{len(carriers)} 家承运商"
185
+ f"({result.get('source', '')});{len(data.get('anomalies', []))} 个异常待核实;"
186
+ f"{len(data.get('savings', []))} 个节省机会,预计共 {data.get('estimated_total_saving', 0):,.2f}。")
187
+
188
+
159
189
  def _labels(self) -> dict:
160
- """Labels in the UI language. The tools' summaries and formulas stay English."""
190
+ """Labels in the UI language. The tools' formulas stay as they write them."""
161
191
  config = getattr(getattr(self, "terminal", None), "config", None) or {}
162
192
  lang = str(config.get("ui_lang", "en") or "en").lower()
163
193
  return _LABELS["zh" if lang.startswith("zh") else "en"]
@@ -169,12 +199,19 @@ def _abc_xyz(item: dict) -> str:
169
199
 
170
200
 
171
201
  def _emit(self, text: str, style: str = "") -> None:
172
- if self.context.has_rich and style:
173
- self.context.console.print(f"[{style}]{text}[/{style}]")
174
- elif self.context.has_rich:
175
- self.context.console.print(text)
176
- else:
202
+ """One line of a report, wrapped under its own indent.
203
+
204
+ The indent was typed as leading spaces, so in an 80-column terminal a
205
+ wrapped line went back to column 0 ("cover · ABC/XYZ –/X" under the
206
+ margin). It is plain text, not markup: a SKU or file name may hold "[".
207
+ """
208
+ if not self.context.has_rich:
177
209
  print(text)
210
+ return
211
+ from aria_code.ui.render.output import print_hanging
212
+
213
+ body = text.lstrip(" ")
214
+ print_hanging(self.context.console, text[: len(text) - len(body)], body, style)
178
215
 
179
216
 
180
217
  class LogisticsCommandsMixin:
@@ -207,7 +244,7 @@ class LogisticsCommandsMixin:
207
244
  data = result["data"]
208
245
  if not data["scope"]["client_facing"]:
209
246
  _emit(self, data["scope"]["marker"], "bold red")
210
- _emit(self, result["summary"], "bold")
247
+ _emit(self, _inventory_headline(result, text is _LABELS["zh"]), "bold")
211
248
  for item in data["items"]:
212
249
  if item["action"] != "reorder":
213
250
  continue
@@ -239,7 +276,7 @@ class LogisticsCommandsMixin:
239
276
  data = result["data"]
240
277
  if not data["scope"]["client_facing"]:
241
278
  _emit(self, data["scope"]["marker"], "bold red")
242
- _emit(self, result["summary"], "bold")
279
+ _emit(self, _carriers_headline(result, text is _LABELS["zh"]), "bold")
243
280
  for entry in data["scorecard"]:
244
281
  rank = f"#{entry['rank_in_lane']}" if entry["rank_in_lane"] else text["too_few"]
245
282
  on_time = (text["on_time"].format(rate=entry["on_time_rate"], low=entry["on_time_lower_bound"])
@@ -4401,13 +4401,17 @@ class ArtheraTerminal:
4401
4401
  # improve its finance model — so disclose it up front.
4402
4402
  import os as _os
4403
4403
  if not _os.environ.get("ARIA_NO_TELEMETRY"):
4404
- console.print(
4405
- " [dim]隐私:反馈默认[bold]仅存本地[/bold],不上传。"
4404
+ # Padded, not prefixed with spaces: in 80 columns the
4405
+ # second line fell back to column 0.
4406
+ from rich.padding import Padding as _Pad
4407
+ from rich.text import Text as _Txt
4408
+ console.print(_Pad(_Txt.from_markup(
4409
+ "[dim]隐私:反馈默认[bold]仅存本地[/bold],不上传。"
4406
4410
  "opt-in 后可用于改进金融模型 · /privacy 查看与开关 · /bug 报告问题[/dim]"
4407
4411
  if str(_ui_lang).lower().startswith("zh") else
4408
- " [dim]Feedback stays [bold]on this machine[/bold] unless you opt in to "
4412
+ "[dim]Feedback stays [bold]on this machine[/bold] unless you opt in to "
4409
4413
  "help improve Aria · /privacy · /bug[/dim]"
4410
- )
4414
+ ), (0, 0, 0, 2)))
4411
4415
  else:
4412
4416
  if _banner_mode != "off":
4413
4417
  from ui.banner import render_full_banner as _rfb
@@ -21,8 +21,8 @@ from aria_code.apps.cli.commands.catalog import (
21
21
  COMMAND_ALIASES,
22
22
  CORE_SLASH_COMMANDS,
23
23
  ENTRY_SLASH_COMMANDS,
24
+ describe,
24
25
  popup_rank,
25
- short_description,
26
26
  )
27
27
  from aria_code.packages.aria_services.references import REFERENCE_KINDS, reference_search_roots
28
28
 
@@ -307,7 +307,7 @@ if HAS_PT:
307
307
  "设置": "运行设置" if self.lang == "zh" else "Runtime",
308
308
  "系统": "会话" if self.lang == "zh" else "Session",
309
309
  }.get(cat, "")
310
- desc = short_description(desc)
310
+ desc = describe(name, desc, self.lang)
311
311
  meta_body = desc[:44] + ("…" if len(desc) > 44 else "")
312
312
  meta_str = f"{cat_label} · {meta_body}" if cat_label else meta_body
313
313
 
@@ -52,6 +52,43 @@ def _is_markdown_table_separator(line: str) -> bool:
52
52
  return bool(cells) and all(_TABLE_SEPARATOR_CELL.fullmatch(cell) for cell in cells)
53
53
 
54
54
 
55
+ # Column headers that name no dimension — the value column of a key/value table.
56
+ _GENERIC_TABLE_HEADERS = {"value", "values", "meaning", "数值", "值", "含义", "说明"}
57
+
58
+
59
+ def _table_rows_as_lines(headers: list[str], rows: list[list[str]]) -> list[str]:
60
+ """One line per table row: the first cell as its label, the rest after it.
61
+
62
+ Each cell used to become its own bullet — "• 指标:最新价 / • 数值:USD 332.89"
63
+ — so a ten-row snapshot table took about thirty lines in an 80-column
64
+ terminal. Generic value columns ("Value", "数值") lose their header; a
65
+ column that names a dimension keeps it ("观察:价格高于 MA20"). A value
66
+ already contained in the one before it ("51.9,中性" then "中性") is dropped.
67
+ """
68
+ lines: list[str] = []
69
+ for row in rows:
70
+ cells = [(header, (row[pos] if pos < len(row) else "").strip())
71
+ for pos, header in enumerate(headers) if header]
72
+ if not cells:
73
+ continue
74
+ label = cells[0][1] or "—"
75
+ parts: list[str] = []
76
+ previous = ""
77
+ for header, value in cells[1:]:
78
+ if not value or value in ("—", "-") or (previous and value in previous):
79
+ continue
80
+ generic = header.strip().lower() in _GENERIC_TABLE_HEADERS
81
+ parts.append(value if generic else f"{header}{':' if _has_cjk(header) else ': '}{value}")
82
+ previous = value
83
+ colon = ":" if _has_cjk(label) or any(_has_cjk(h) for h, _ in cells) else ": "
84
+ lines.append(f"- **{label}**{colon}{' · '.join(parts) or '—'}")
85
+ return lines
86
+
87
+
88
+ def _has_cjk(text: str) -> bool:
89
+ return any("\u4e00" <= ch <= "\u9fff" for ch in text or "")
90
+
91
+
55
92
  def adapt_markdown_for_width(markup: str, width: int, *, table_breakpoint: int = 96) -> str:
56
93
  """Convert GFM tables to stacked records when the terminal is narrow.
57
94
 
@@ -92,18 +129,7 @@ def adapt_markdown_for_width(markup: str, width: int, *, table_breakpoint: int =
92
129
  cursor += 1
93
130
 
94
131
  if headers and rows:
95
- for row in rows:
96
- pairs = [
97
- (header, row[pos] if pos < len(row) else "—")
98
- for pos, header in enumerate(headers)
99
- if header
100
- ]
101
- if not pairs:
102
- continue
103
- first_header, first_value = pairs[0]
104
- output.append(f"- **{first_header}**:{first_value or '—'}")
105
- for header, value in pairs[1:]:
106
- output.append(f" - **{header}**:{value or '—'}")
132
+ output.extend(_table_rows_as_lines(headers, rows))
107
133
  index = cursor
108
134
  continue
109
135
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aria-code
3
- Version: 0.88.0
3
+ Version: 0.89.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
@@ -615,6 +615,7 @@ tests/test_mentions.py
615
615
  tests/test_model_capability_registry.py
616
616
  tests/test_model_choice_is_the_users.py
617
617
  tests/test_model_selection_state.py
618
+ tests/test_narrow_chinese_output.py
618
619
  tests/test_native_binary_entrypoints.py
619
620
  tests/test_native_installer.py
620
621
  tests/test_natural_language_routing.py
@@ -744,4 +745,5 @@ tests/test_workspace_context.py
744
745
  tests/test_workspace_files.py
745
746
  tests/test_workspace_scope.py
746
747
  tests/test_workspace_service.py
747
- tests/test_workspace_verify.py
748
+ tests/test_workspace_verify.py
749
+ tests/test_wrapped_indent.py
@@ -0,0 +1,62 @@
1
+ """The Chinese UI in an 80-column terminal reads as Chinese and stays short.
2
+
3
+ Recorded: /help and the "/" popup described commands in English under 命令,
4
+ and /inventory and /carriers put an English headline over Chinese detail
5
+ lines. (Narrow tables are covered in test_output_rendering.)
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import io
11
+ import sys
12
+
13
+ from rich.console import Console
14
+
15
+ from aria_code.apps.cli.commands.catalog import COMMAND_DESCRIPTIONS_ZH, CORE_SLASH_COMMANDS, ENTRY_SLASH_COMMANDS, describe
16
+
17
+
18
+ def test_every_command_help_shows_has_a_chinese_description():
19
+ missing = [n for n in (*CORE_SLASH_COMMANDS, *ENTRY_SLASH_COMMANDS) if n not in COMMAND_DESCRIPTIONS_ZH]
20
+ assert not missing, missing
21
+ assert describe("/help", "Show commands and examples", "zh") == "命令与示例"
22
+ assert describe("/help", "Show commands and examples", "en") == "Show commands and examples"
23
+ assert describe("/realty", "Real-estate data: /realty X", "zh") == "Real-estate data"
24
+
25
+
26
+ def test_help_in_chinese_describes_in_chinese(monkeypatch):
27
+ sys.argv = ["aria-code"]
28
+ import aria_code.aria_cli as cli
29
+
30
+ terminal = cli.ArtheraTerminal(dict(cli.DEFAULT_CONFIG, ui_lang="zh"))
31
+ console = Console(file=io.StringIO(), width=80, color_system=None)
32
+ monkeypatch.setattr(terminal.commands.context, "console", console)
33
+ monkeypatch.setattr(terminal.commands.context, "has_rich", True)
34
+ terminal.commands.cmd_help("")
35
+ text = console.file.getvalue()
36
+ assert "命令与示例" in text and "Show commands and examples" not in text
37
+
38
+
39
+ def test_the_popup_describes_in_chinese():
40
+ from prompt_toolkit.document import Document
41
+
42
+ from aria_code.ui.completer import AriaPTCompleter
43
+
44
+ completer = AriaPTCompleter({"/help": (lambda a: None, "Show commands and examples")}, [], [], lang="zh")
45
+ meta = str(next(completer.get_completions(Document("/he"), None)).display_meta_text)
46
+ assert "命令与示例" in meta
47
+
48
+
49
+ def test_logistics_headlines_follow_the_ui_language():
50
+ from aria_code.apps.cli.commands.warehouse_cmds import _carriers_headline, _inventory_headline
51
+
52
+ inventory = {"summary": "7 SKUs analysed (file:skus.csv): 3 to reorder", "source": "file:skus.csv",
53
+ "data": {"items": [{}] * 7, "counts": {"reorder": 3, "insufficient_history": 1, "no_demand": 1},
54
+ "dead_stock": 0, "slow_stock": 0}}
55
+ assert _inventory_headline(inventory, zh=True) == (
56
+ "分析 7 个 SKU(file:skus.csv):3 个需补货,1 个历史数据不足,1 个无需求;呆滞 0 个,慢动 0 个。")
57
+ assert _inventory_headline(inventory, zh=False) == inventory["summary"]
58
+ carriers = {"summary": "100 waybills across 3 lanes and 5 carriers", "source": "file:waybills.csv",
59
+ "data": {"scorecard": [{"lane": "A", "carrier": "X"}, {"lane": "B", "carrier": "Y"}],
60
+ "anomalies": [1, 2], "savings": [1], "estimated_total_saving": 645.49}}
61
+ assert _carriers_headline(carriers, zh=True) == (
62
+ "100 张运单,2 条线路、2 家承运商(file:waybills.csv);2 个异常待核实;1 个节省机会,预计共 645.49。")
@@ -524,11 +524,28 @@ def test_narrow_terminal_converts_markdown_table_to_stacked_records():
524
524
  adapted = adapt_markdown_for_width(source, 80)
525
525
 
526
526
  assert "| --- |" not in adapted
527
- assert "- **维度**:趋势" in adapted
528
- assert " - **观察**:价格高于 MA20" in adapted
527
+ # One line a row; a column that names a dimension keeps its name.
528
+ assert adapted.strip() == "- **趋势**:观察:价格高于 MA20 · 结论:偏多"
529
529
  assert adapt_markdown_for_width(source, 120) == source
530
530
 
531
531
 
532
+ def test_a_narrow_key_value_table_is_one_line_a_row():
533
+ """A ten-row snapshot table took about thirty lines as nested bullets."""
534
+ from ui.render.output import adapt_markdown_for_width
535
+
536
+ source = (
537
+ "| 技术指标 | 数值 | 含义 |\n|---|---|---|\n"
538
+ "| RSI(14) | 51.9,中性 | 中性 |\n| MA20 | USD 332.54 | 价格高于MA20 ↑ |\n| 支撑位 | USD 332.54 | |"
539
+ )
540
+ assert adapt_markdown_for_width(source, 80).splitlines() == [
541
+ "- **RSI(14)**:51.9,中性",
542
+ "- **MA20**:USD 332.54 · 价格高于MA20 ↑",
543
+ "- **支撑位**:USD 332.54",
544
+ ]
545
+ wide = "| Symbol | Price | Change |\n|---|---|---|\n| AAPL | USD 333 | +0.8% |"
546
+ assert adapt_markdown_for_width(wide, 80) == "- **AAPL**: Price: USD 333 · Change: +0.8%"
547
+
548
+
532
549
  def test_turn_footer_defaults_to_compact_without_token_noise():
533
550
  from runtime import AgentTurnState
534
551
  from ui.render.output import format_turn_footer
@@ -0,0 +1,33 @@
1
+ """Wrapped lines stay under their indent in a narrow terminal.
2
+
3
+ Recorded at 80 columns: /inventory and /carriers lines, the backtest summary
4
+ and the first-run note all wrapped back to column 0, because their indent was
5
+ typed as leading spaces that Rich does not carry onto the next line.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import io
11
+ from types import SimpleNamespace
12
+
13
+ from rich.console import Console
14
+
15
+
16
+ def test_a_logistics_line_wraps_under_its_indent():
17
+ from aria_code.apps.cli.commands.warehouse_cmds import _emit
18
+
19
+ console = Console(file=io.StringIO(), width=60, color_system=None)
20
+ owner = SimpleNamespace(context=SimpleNamespace(has_rich=True, console=console))
21
+ _emit(owner, " Reorder A100: order 335 · reorder point 353 · safety stock 71 · 7.4 days of cover", "")
22
+ lines = console.file.getvalue().rstrip("\n").splitlines()
23
+ assert len(lines) > 1 # it did wrap
24
+ assert all(line.startswith(" ") for line in lines) # every row under the indent
25
+
26
+
27
+ def test_a_logistics_line_is_plain_text():
28
+ from aria_code.apps.cli.commands.warehouse_cmds import _emit
29
+
30
+ console = Console(file=io.StringIO(), width=80, color_system=None)
31
+ owner = SimpleNamespace(context=SimpleNamespace(has_rich=True, console=console))
32
+ _emit(owner, "SKU [A-100] in file [bold].csv", "bold")
33
+ assert "SKU [A-100] in file [bold].csv" in console.file.getvalue()
File without changes
File without changes
File without changes
File without changes