aria-code 0.83.0__tar.gz → 0.85.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (743) hide show
  1. {aria_code-0.83.0/src/aria_code.egg-info → aria_code-0.85.0}/PKG-INFO +1 -1
  2. {aria_code-0.83.0 → aria_code-0.85.0}/pyproject.toml +1 -1
  3. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/_version.py +1 -1
  4. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/prompts/coding.py +6 -0
  5. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/prompts/system_prompts.py +3 -0
  6. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/runtime_consumer.py +46 -4
  7. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/tool_executor.py +9 -3
  8. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/tools/system_tools.py +37 -14
  9. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/aria_cli.py +5 -2
  10. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/runtime/gateway.py +3 -1
  11. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/ui/console.py +6 -2
  12. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/ui/picker.py +41 -16
  13. {aria_code-0.83.0 → aria_code-0.85.0/src/aria_code.egg-info}/PKG-INFO +1 -1
  14. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code.egg-info/SOURCES.txt +1 -0
  15. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_release_chain.py +22 -2
  16. aria_code-0.85.0/tests/test_tool_step_output.py +147 -0
  17. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_ui_console_theme.py +7 -2
  18. {aria_code-0.83.0 → aria_code-0.85.0}/LICENSE +0 -0
  19. {aria_code-0.83.0 → aria_code-0.85.0}/NOTICE +0 -0
  20. {aria_code-0.83.0 → aria_code-0.85.0}/README.md +0 -0
  21. {aria_code-0.83.0 → aria_code-0.85.0}/setup.cfg +0 -0
  22. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/__init__.py +0 -0
  23. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/adk_apps/__init__.py +0 -0
  24. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/adk_apps/aria_code_review/__init__.py +0 -0
  25. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/adk_apps/aria_code_review/agent.py +0 -0
  26. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/adk_apps/aria_research/__init__.py +0 -0
  27. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/adk_apps/aria_research/agent.py +0 -0
  28. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/__init__.py +0 -0
  29. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/base.py +0 -0
  30. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/code_review.py +0 -0
  31. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/deep/__init__.py +0 -0
  32. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/deep/calibration_loop.py +0 -0
  33. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/deep/critic.py +0 -0
  34. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/deep/deepen.py +0 -0
  35. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/deep/models.py +0 -0
  36. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/deep/pipeline.py +0 -0
  37. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/deep/quant_fusion.py +0 -0
  38. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/deep/themes.py +0 -0
  39. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/deep/tiers.py +0 -0
  40. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/engineering/__init__.py +0 -0
  41. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/engineering/coder.py +0 -0
  42. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/engineering/tester.py +0 -0
  43. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/financial/__init__.py +0 -0
  44. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/financial/cashflow_burn.py +0 -0
  45. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/financial/catalyst.py +0 -0
  46. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/financial/corporate_finance.py +0 -0
  47. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/financial/debate.py +0 -0
  48. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/financial/earnings.py +0 -0
  49. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/financial/fundamental.py +0 -0
  50. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/financial/macro.py +0 -0
  51. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/financial/news.py +0 -0
  52. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/financial/risk.py +0 -0
  53. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/financial/sector.py +0 -0
  54. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/financial/strategist.py +0 -0
  55. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/financial/stripe_revenue.py +0 -0
  56. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/financial/synthesis.py +0 -0
  57. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/financial/technical.py +0 -0
  58. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/orchestrator.py +0 -0
  59. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/portfolio_agent.py +0 -0
  60. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/realty/__init__.py +0 -0
  61. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/realty/asset_diagnosis.py +0 -0
  62. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/realty/business_match.py +0 -0
  63. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/realty/cashflow_verify.py +0 -0
  64. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/realty/contract_rules.py +0 -0
  65. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/realty/energy_anomaly.py +0 -0
  66. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/realty/exit_settlement.py +0 -0
  67. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/realty/fulfillment_risk.py +0 -0
  68. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/realty/ops_optimize.py +0 -0
  69. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/realty/revenue_share.py +0 -0
  70. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/registry.py +0 -0
  71. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/signal_scheme.py +0 -0
  72. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/sports/__init__.py +0 -0
  73. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/sports/football_agent.py +0 -0
  74. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/supervisor.py +0 -0
  75. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/team.py +0 -0
  76. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/warehouse/__init__.py +0 -0
  77. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/warehouse/contracts.py +0 -0
  78. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/warehouse/dashboard.py +0 -0
  79. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/warehouse/fulfillment_leadtime.py +0 -0
  80. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/warehouse/inbound_exceptions.py +0 -0
  81. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/warehouse/inventory_health.py +0 -0
  82. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/warehouse/local_run.py +0 -0
  83. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/warehouse/local_snapshot.py +0 -0
  84. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/warehouse/logistics_cost.py +0 -0
  85. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/warehouse/logistics_sync.py +0 -0
  86. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/agents/warehouse/workflow.py +0 -0
  87. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/aliyun_data_client.py +0 -0
  88. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/README.md +0 -0
  89. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/__init__.py +0 -0
  90. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/channels/README.md +0 -0
  91. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/channels/__init__.py +0 -0
  92. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/channels/approvals.py +0 -0
  93. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/channels/conversation.py +0 -0
  94. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/channels/digest.py +0 -0
  95. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/channels/intake.py +0 -0
  96. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/channels/registry.py +0 -0
  97. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/channels/tradingview.py +0 -0
  98. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/README.md +0 -0
  99. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/__init__.py +0 -0
  100. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/_optional.py +0 -0
  101. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/bootstrap.py +0 -0
  102. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/broker_render.py +0 -0
  103. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/codegen_paths.py +0 -0
  104. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/__init__.py +0 -0
  105. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/_business_render.py +0 -0
  106. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/_ui.py +0 -0
  107. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/analysis_cmds.py +0 -0
  108. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/ashare_prediction_cmds.py +0 -0
  109. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/auth_cmds.py +0 -0
  110. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/backtest_cmds.py +0 -0
  111. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/broker_cmds.py +0 -0
  112. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/business_workflow_cmds.py +0 -0
  113. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/canvas_cmds.py +0 -0
  114. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/catalog.py +0 -0
  115. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/core_cmds.py +0 -0
  116. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/data_cmds.py +0 -0
  117. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/diagnostic_cmds.py +0 -0
  118. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/diagnostic_ops_cmds.py +0 -0
  119. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/file_cmds.py +0 -0
  120. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/finance_service_cmds.py +0 -0
  121. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/fx_commodity_cmds.py +0 -0
  122. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/market.py +0 -0
  123. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/market_cmds.py +0 -0
  124. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/market_context.py +0 -0
  125. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/market_render.py +0 -0
  126. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/model_cmds.py +0 -0
  127. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/ops_cmds.py +0 -0
  128. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/orchestrator_cmds.py +0 -0
  129. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/pdf_export_cmds.py +0 -0
  130. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/portfolio_cmds.py +0 -0
  131. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/report.py +0 -0
  132. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/scaffold_templates.py +0 -0
  133. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/session_cmds.py +0 -0
  134. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/session_ux_cmds.py +0 -0
  135. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/team.py +0 -0
  136. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/team_render.py +0 -0
  137. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/ui_cmds.py +0 -0
  138. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/warehouse_cmds.py +0 -0
  139. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/workflow_cmds.py +0 -0
  140. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/commands/workspace_cmds.py +0 -0
  141. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/config_paths.py +0 -0
  142. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/config_store.py +0 -0
  143. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/constants.py +0 -0
  144. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/context.py +0 -0
  145. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/deterministic.py +0 -0
  146. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/direct.py +0 -0
  147. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/finance_service_catalog.py +0 -0
  148. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/football_reports.py +0 -0
  149. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/github_app_auth.py +0 -0
  150. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/google_login.py +0 -0
  151. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/handlers/__init__.py +0 -0
  152. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/handlers/broker_handlers.py +0 -0
  153. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/handlers/chart_handlers.py +0 -0
  154. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/handlers/market_handlers.py +0 -0
  155. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/handlers/realty_handlers.py +0 -0
  156. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/handlers/sports_handlers.py +0 -0
  157. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/handlers/strategy_advice.py +0 -0
  158. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/helpers.py +0 -0
  159. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/hooks.py +0 -0
  160. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/i18n.py +0 -0
  161. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/intent.py +0 -0
  162. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/intent_router.py +0 -0
  163. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/intent_signals.py +0 -0
  164. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/lifecycle_hooks.py +0 -0
  165. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/local_tool_schemas.py +0 -0
  166. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/main.py +0 -0
  167. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/market_hours.py +0 -0
  168. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/market_metadata.py +0 -0
  169. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/market_universe.py +0 -0
  170. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/message_processing.py +0 -0
  171. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/model_catalog.py +0 -0
  172. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/pdf_report.py +0 -0
  173. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/plan_mode.py +0 -0
  174. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/plotly_html.py +0 -0
  175. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/prediction_feedback.py +0 -0
  176. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/preflight.py +0 -0
  177. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/project_aria.py +0 -0
  178. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/prompt_assembly.py +0 -0
  179. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/prompts/__init__.py +0 -0
  180. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/prompts/select.py +0 -0
  181. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/prompts/ui.py +0 -0
  182. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/provider_endpoints.py +0 -0
  183. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/provider_keys.py +0 -0
  184. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/providers/__init__.py +0 -0
  185. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/providers/base.py +0 -0
  186. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/providers/chat_routing.py +0 -0
  187. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/providers/collaboration.py +0 -0
  188. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/providers/llm/__init__.py +0 -0
  189. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/providers/llm/offline_responses.py +0 -0
  190. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/providers/llm/ollama_stream.py +0 -0
  191. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/providers/llm/response_cache.py +0 -0
  192. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/providers/llm/sse_stream.py +0 -0
  193. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/providers/runtime_bridge.py +0 -0
  194. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/providers/vertexai_stream.py +0 -0
  195. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/review_runner.py +0 -0
  196. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/sandbox.py +0 -0
  197. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/session_export.py +0 -0
  198. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/session_jsonl.py +0 -0
  199. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/session_store.py +0 -0
  200. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/skills_catalog.py +0 -0
  201. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/todo_tracker.py +0 -0
  202. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/tool_registry.py +0 -0
  203. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/tool_scope.py +0 -0
  204. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/tools/__init__.py +0 -0
  205. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/tools/context.py +0 -0
  206. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/tools/file_tools.py +0 -0
  207. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/tools/market_tools.py +0 -0
  208. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/tools/notebook_tools.py +0 -0
  209. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/tools/write_tools.py +0 -0
  210. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/tradingview_bridge.py +0 -0
  211. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/turn_planning.py +0 -0
  212. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/update_check.py +0 -0
  213. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/updater.py +0 -0
  214. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/utils/__init__.py +0 -0
  215. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/cli/utils/market_detect.py +0 -0
  216. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/daemon/README.md +0 -0
  217. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/vscode/README.md +0 -0
  218. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/apps/vscode/package.json +0 -0
  219. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/aria_daemon.py +0 -0
  220. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/aria_feishu_bot.py +0 -0
  221. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/aria_mcp_server.py +0 -0
  222. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/aria_relay_client.py +0 -0
  223. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/aria_relay_server.py +0 -0
  224. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/aria_telegram_bot.py +0 -0
  225. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/ariarc.py +0 -0
  226. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/artifacts.py +0 -0
  227. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/backtest_engine.py +0 -0
  228. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/backtest_report.py +0 -0
  229. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/brokers/__init__.py +0 -0
  230. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/brokers/automation.py +0 -0
  231. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/brokers/base.py +0 -0
  232. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/brokers/capabilities.py +0 -0
  233. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/brokers/cn/__init__.py +0 -0
  234. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/brokers/cn/easytrader_broker.py +0 -0
  235. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/brokers/cn/futu_broker.py +0 -0
  236. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/brokers/cn/longbridge_broker.py +0 -0
  237. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/brokers/cn/tiger_broker.py +0 -0
  238. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/brokers/cn/xtquant_broker.py +0 -0
  239. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/brokers/config.py +0 -0
  240. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/brokers/intl/__init__.py +0 -0
  241. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/brokers/intl/alpaca_broker.py +0 -0
  242. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/brokers/intl/ibkr_broker.py +0 -0
  243. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/brokers/intl/trading212_broker.py +0 -0
  244. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/brokers/intl/webull_broker.py +0 -0
  245. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/brokers/paper_broker.py +0 -0
  246. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/brokers/planning.py +0 -0
  247. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/brokers/registry.py +0 -0
  248. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/brokers/trading.py +0 -0
  249. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/canva_client.py +0 -0
  250. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/change_store.py +0 -0
  251. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/clients/__init__.py +0 -0
  252. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/clients/aliyun_data_client.py +0 -0
  253. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/clients/aria_relay_client.py +0 -0
  254. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/clients/canva_client.py +0 -0
  255. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/clients/figma_client.py +0 -0
  256. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/clients/football_data_client.py +0 -0
  257. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/clients/kling_video_client.py +0 -0
  258. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/clients/market_data_client.py +0 -0
  259. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/clients/openai_image_client.py +0 -0
  260. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/clients/runway_video_client.py +0 -0
  261. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/clients/warehouse_erp_client.py +0 -0
  262. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/cloud_memory.py +0 -0
  263. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/command_safety.py +0 -0
  264. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/computer_use_tools.py +0 -0
  265. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/dashboard_generator.py +0 -0
  266. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/data_analysis_tools.py +0 -0
  267. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/data_cleaner.py +0 -0
  268. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/data_service.py +0 -0
  269. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/datasources/__init__.py +0 -0
  270. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/datasources/base.py +0 -0
  271. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/datasources/router.py +0 -0
  272. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/datasources/sources/__init__.py +0 -0
  273. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/datasources/sources/akshare_source.py +0 -0
  274. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/datasources/sources/alpha_vantage_source.py +0 -0
  275. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/datasources/sources/edgar_source.py +0 -0
  276. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/datasources/sources/finnhub_source.py +0 -0
  277. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/datasources/sources/fred_source.py +0 -0
  278. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/datasources/sources/tushare_source.py +0 -0
  279. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/datasources/sources/web_scraper_source.py +0 -0
  280. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/datasources/sources/world_bank_source.py +0 -0
  281. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/datasources/sources/yfinance_source.py +0 -0
  282. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/demo_player.py +0 -0
  283. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/doctor.py +0 -0
  284. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/domain/__init__.py +0 -0
  285. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/domain/backtest_engine.py +0 -0
  286. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/domain/backtest_report.py +0 -0
  287. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/domain/finance_formulas.py +0 -0
  288. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/domain/portfolio_ledger.py +0 -0
  289. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/domain/strategy_vault.py +0 -0
  290. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/evals/__init__.py +0 -0
  291. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/evals/harness.py +0 -0
  292. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/evals/runner.py +0 -0
  293. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/external_agent_runner.py +0 -0
  294. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/figma_client.py +0 -0
  295. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/file_analysis_tools.py +0 -0
  296. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/finance_formulas.py +0 -0
  297. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/football_data_client.py +0 -0
  298. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/image_gen_tools.py +0 -0
  299. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/intent_classifier.py +0 -0
  300. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/kling_video_client.py +0 -0
  301. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/licensing.py +0 -0
  302. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/local_finance_tools.py +0 -0
  303. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/local_image_provider.py +0 -0
  304. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/local_llm_provider.py +0 -0
  305. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/macro_tools.py +0 -0
  306. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/markdown_pdf.py +0 -0
  307. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/market_data_client.py +0 -0
  308. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/mcp_client.py +0 -0
  309. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/memory_manager.py +0 -0
  310. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/model_capability.py +0 -0
  311. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/notification_tools.py +0 -0
  312. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/openai_image_client.py +0 -0
  313. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/__init__.py +0 -0
  314. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/adk_bridge/__init__.py +0 -0
  315. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/adk_bridge/code_review_tools.py +0 -0
  316. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/adk_bridge/market_tools.py +0 -0
  317. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_agents/__init__.py +0 -0
  318. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_agents/manifest.py +0 -0
  319. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_core/__init__.py +0 -0
  320. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_core/architecture.py +0 -0
  321. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_core/export.py +0 -0
  322. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_core/manifest.py +0 -0
  323. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_core/paths.py +0 -0
  324. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_core/secure_file.py +0 -0
  325. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_infra/__init__.py +0 -0
  326. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_infra/arthera.py +0 -0
  327. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_infra/doctor.py +0 -0
  328. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_infra/product.py +0 -0
  329. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_mcp/__init__.py +0 -0
  330. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_mcp/bridge.py +0 -0
  331. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_mcp/circuit.py +0 -0
  332. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_mcp/config.py +0 -0
  333. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_mcp/installer.py +0 -0
  334. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_mcp/server.py +0 -0
  335. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_mcp/tools.py +0 -0
  336. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_sdk/__init__.py +0 -0
  337. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_sdk/client.py +0 -0
  338. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_sdk/providers.py +0 -0
  339. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_sdk/streaming.py +0 -0
  340. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_sdk/types.py +0 -0
  341. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_services/__init__.py +0 -0
  342. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_services/cache.py +0 -0
  343. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_services/context.py +0 -0
  344. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_services/context_checkpoints.py +0 -0
  345. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_services/data.py +0 -0
  346. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_services/provider_health.py +0 -0
  347. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_services/references.py +0 -0
  348. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_services/registry.py +0 -0
  349. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_services/research_protocol.py +0 -0
  350. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_services/research_quality.py +0 -0
  351. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_services/settings.py +0 -0
  352. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_services/usage.py +0 -0
  353. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_skills/__init__.py +0 -0
  354. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_skills/catalog.py +0 -0
  355. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_skills/loader.py +0 -0
  356. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_skills/registry.py +0 -0
  357. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_tools/__init__.py +0 -0
  358. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_tools/financial/__init__.py +0 -0
  359. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_tools/financial/_paths.py +0 -0
  360. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_tools/financial/compliance.py +0 -0
  361. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_tools/financial/factors.py +0 -0
  362. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_tools/financial/risk_tools.py +0 -0
  363. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_tools/financial/strategy.py +0 -0
  364. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/aria_tools/registry.py +0 -0
  365. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/quant_engine/__init__.py +0 -0
  366. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/quant_engine/_namespace.py +0 -0
  367. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/quant_engine/backtest/__init__.py +0 -0
  368. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/quant_engine/backtest/core.py +0 -0
  369. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/quant_engine/backtest/engine.py +0 -0
  370. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/quant_engine/portfolio/__init__.py +0 -0
  371. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/quant_engine/portfolio/optimizer.py +0 -0
  372. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/quant_engine/sports/__init__.py +0 -0
  373. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/quant_engine/sports/calibrator.py +0 -0
  374. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/quant_engine/sports/dixon_coles.py +0 -0
  375. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/quant_engine/sports/elo.py +0 -0
  376. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/quant_engine/sports/form.py +0 -0
  377. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/quant_engine/sports/h2h.py +0 -0
  378. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/quant_engine/sports/ml_model.py +0 -0
  379. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/quant_engine/sports/predictor.py +0 -0
  380. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/quant_engine/sports/tracker.py +0 -0
  381. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/quant_engine/stochastic/__init__.py +0 -0
  382. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/quant_engine/stochastic/gbm_enhanced.py +0 -0
  383. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/quant_engine/stochastic/ito_calculus.py +0 -0
  384. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/quant_engine/stochastic/kelly_criterion.py +0 -0
  385. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/quant_engine/stochastic/monte_carlo_advanced.py +0 -0
  386. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/quant_engine/stochastic/options_pricing.py +0 -0
  387. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packages/quant_engine/stochastic/stochastic_processes.py +0 -0
  388. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packs/__init__.py +0 -0
  389. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packs/base.py +0 -0
  390. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packs/finance/__init__.py +0 -0
  391. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packs/logistics/__init__.py +0 -0
  392. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packs/payments/__init__.py +0 -0
  393. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packs/realty/__init__.py +0 -0
  394. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packs/registry.py +0 -0
  395. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/packs/rules.py +0 -0
  396. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/plan_utils.py +0 -0
  397. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/plugin_loader.py +0 -0
  398. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/portfolio_ledger.py +0 -0
  399. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/preview_server.py +0 -0
  400. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/privacy/__init__.py +0 -0
  401. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/privacy/feedback.py +0 -0
  402. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/project_review.py +0 -0
  403. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/project_review_api.py +0 -0
  404. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/project_review_server.py +0 -0
  405. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/project_tools.py +0 -0
  406. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/providers/__init__.py +0 -0
  407. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/providers/llm/__init__.py +0 -0
  408. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/providers/llm/anthropic.py +0 -0
  409. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/providers/llm/autoconfig.py +0 -0
  410. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/providers/llm/base.py +0 -0
  411. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/providers/llm/custom.py +0 -0
  412. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/providers/llm/ollama.py +0 -0
  413. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/providers/llm/openai_compat.py +0 -0
  414. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/providers/llm/registry.py +0 -0
  415. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/providers/local_image_provider.py +0 -0
  416. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/providers/local_llm_provider.py +0 -0
  417. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/providers/tool_messages.py +0 -0
  418. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/realty_data_tools.py +0 -0
  419. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/relay_store.py +0 -0
  420. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/report_exporters.py +0 -0
  421. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/report_generator.py +0 -0
  422. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/review_service.py +0 -0
  423. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/runtime/__init__.py +0 -0
  424. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/runtime/acceptance.py +0 -0
  425. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/runtime/agent_loop.py +0 -0
  426. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/runtime/approval.py +0 -0
  427. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/runtime/budget.py +0 -0
  428. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/runtime/checkpoints.py +0 -0
  429. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/runtime/crash_report.py +0 -0
  430. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/runtime/events.py +0 -0
  431. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/runtime/lsp.py +0 -0
  432. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/runtime/orchestrator.py +0 -0
  433. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/runtime/repo_map.py +0 -0
  434. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/runtime/run_state.py +0 -0
  435. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/runtime/run_store.py +0 -0
  436. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/runtime/self_healing.py +0 -0
  437. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/runtime/subagent.py +0 -0
  438. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/runtime/task_ledger.py +0 -0
  439. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/runtime/task_orchestrator.py +0 -0
  440. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/runtime/tool_executor.py +0 -0
  441. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/runtime/tool_policy.py +0 -0
  442. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/runtime/worktrees.py +0 -0
  443. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/runway_video_client.py +0 -0
  444. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/safety/__init__.py +0 -0
  445. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/safety/permissions.py +0 -0
  446. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/safety/service.py +0 -0
  447. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/setup_wizard.py +0 -0
  448. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/spreadsheet_tools.py +0 -0
  449. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/strategy_vault.py +0 -0
  450. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/tools/__init__.py +0 -0
  451. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/tools/artifact_tools.py +0 -0
  452. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/tools/broker_tools.py +0 -0
  453. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/tools/build_quant_engine.py +0 -0
  454. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/tools/code_audit_tools.py +0 -0
  455. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/tools/computer_use_tools.py +0 -0
  456. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/tools/data_analysis_tools.py +0 -0
  457. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/tools/enterprise_finance_tools.py +0 -0
  458. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/tools/extended_tools.py +0 -0
  459. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/tools/file_analysis_tools.py +0 -0
  460. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/tools/image_gen_tools.py +0 -0
  461. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/tools/local_finance_tools.py +0 -0
  462. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/tools/logistics_carriers.py +0 -0
  463. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/tools/logistics_inventory.py +0 -0
  464. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/tools/logistics_io.py +0 -0
  465. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/tools/logistics_tenancy.py +0 -0
  466. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/tools/logistics_tools.py +0 -0
  467. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/tools/macro_tools.py +0 -0
  468. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/tools/notification_tools.py +0 -0
  469. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/tools/project_tools.py +0 -0
  470. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/tools/realty_data_tools.py +0 -0
  471. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/tools/spreadsheet_tools.py +0 -0
  472. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/tools/stripe_tools.py +0 -0
  473. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/ui/__init__.py +0 -0
  474. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/ui/banner.py +0 -0
  475. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/ui/completer.py +0 -0
  476. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/ui/image_render.py +0 -0
  477. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/ui/input_box.py +0 -0
  478. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/ui/render/__init__.py +0 -0
  479. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/ui/render/finance.py +0 -0
  480. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/ui/render/market.py +0 -0
  481. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/ui/render/output.py +0 -0
  482. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/ui/render/responsive.py +0 -0
  483. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/ui/render/team.py +0 -0
  484. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/ui/robot.py +0 -0
  485. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/ui/startup_dashboard.py +0 -0
  486. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/utils/vscode_uri.py +0 -0
  487. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/video_analysis.py +0 -0
  488. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/video_editor.py +0 -0
  489. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/workspace/__init__.py +0 -0
  490. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/workspace/files.py +0 -0
  491. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/workspace/verify.py +0 -0
  492. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/workspace_changes.py +0 -0
  493. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/workspace_context.py +0 -0
  494. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/workspace_service.py +0 -0
  495. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code/workspace_tools.py +0 -0
  496. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code.egg-info/dependency_links.txt +0 -0
  497. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code.egg-info/entry_points.txt +0 -0
  498. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code.egg-info/requires.txt +0 -0
  499. {aria_code-0.83.0 → aria_code-0.85.0}/src/aria_code.egg-info/top_level.txt +0 -0
  500. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_adk_market_tools.py +0 -0
  501. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_agent_team_fallback.py +0 -0
  502. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_analyze_file_tool.py +0 -0
  503. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_architecture_ledger_is_true.py +0 -0
  504. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_architecture_report.py +0 -0
  505. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_aria_cli_core.py +0 -0
  506. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_aria_mcp_server.py +0 -0
  507. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_aria_sdk.py +0 -0
  508. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_artifact_publishing.py +0 -0
  509. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_artifacts_and_reports.py +0 -0
  510. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_ashare_prediction_cmds.py +0 -0
  511. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_backtest_cmds.py +0 -0
  512. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_backtest_engine.py +0 -0
  513. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_backtest_report.py +0 -0
  514. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_binary_bundles_runtime_imports.py +0 -0
  515. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_broken_akshare_is_optional.py +0 -0
  516. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_broker_automation.py +0 -0
  517. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_broker_chat_confirm_gate.py +0 -0
  518. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_broker_planning.py +0 -0
  519. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_broker_safety.py +0 -0
  520. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_broker_tools.py +0 -0
  521. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_budget.py +0 -0
  522. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_business_workflow_cmds.py +0 -0
  523. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_canva_client.py +0 -0
  524. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_canvas_cmds.py +0 -0
  525. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_card_approvals.py +0 -0
  526. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_channel_intake.py +0 -0
  527. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_channels.py +0 -0
  528. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_chart_handlers.py +0 -0
  529. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_chat_bots_fail_closed.py +0 -0
  530. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_chat_routing.py +0 -0
  531. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_ci_security_workflow.py +0 -0
  532. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_cli_app_split.py +0 -0
  533. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_cli_bootstrap.py +0 -0
  534. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_cli_config_store.py +0 -0
  535. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_cli_lifecycle_hooks.py +0 -0
  536. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_cli_runtime_consumer.py +0 -0
  537. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_cli_tool_executor_module.py +0 -0
  538. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_cli_updater.py +0 -0
  539. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_cloud_memory.py +0 -0
  540. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_code_audit_tools.py +0 -0
  541. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_code_review_agent.py +0 -0
  542. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_codegen_output.py +0 -0
  543. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_coder_tester_self_healing.py +0 -0
  544. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_coder_tool_safety.py +0 -0
  545. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_collaboration.py +0 -0
  546. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_command_loggers.py +0 -0
  547. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_command_safety.py +0 -0
  548. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_completions_builder.py +0 -0
  549. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_config_paths.py +0 -0
  550. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_configured_provider.py +0 -0
  551. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_container_entrypoint.py +0 -0
  552. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_container_entrypoints.py +0 -0
  553. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_context_checkpoints.py +0 -0
  554. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_context_references.py +0 -0
  555. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_context_service.py +0 -0
  556. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_conversation_core.py +0 -0
  557. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_crash_report.py +0 -0
  558. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_credential_file_permissions.py +0 -0
  559. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_custom_providers.py +0 -0
  560. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_daemon_gateway_config.py +0 -0
  561. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_dashboard_generator.py +0 -0
  562. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_data_service.py +0 -0
  563. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_data_service_imports.py +0 -0
  564. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_datasource_routing.py +0 -0
  565. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_deep_analysis.py +0 -0
  566. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_degrades_without_quant_engine.py +0 -0
  567. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_dispatcher_pins_match_the_release.py +0 -0
  568. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_doctor.py +0 -0
  569. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_doctor_describes_the_current_install.py +0 -0
  570. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_doctor_npm_scope.py +0 -0
  571. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_engine_boundary.py +0 -0
  572. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_enterprise_tool_honesty.py +0 -0
  573. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_env_switch_docs.py +0 -0
  574. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_evals_harness.py +0 -0
  575. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_event_import_roots.py +0 -0
  576. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_extended_tools.py +0 -0
  577. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_feishu_swarm_config.py +0 -0
  578. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_finalize_release.py +0 -0
  579. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_finance_renderers.py +0 -0
  580. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_finance_service_catalog.py +0 -0
  581. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_first_run_output.py +0 -0
  582. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_first_run_works.py +0 -0
  583. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_football_agent.py +0 -0
  584. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_football_prediction_output.py +0 -0
  585. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_google_cloud_models.py +0 -0
  586. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_google_cloud_routing.py +0 -0
  587. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_google_login.py +0 -0
  588. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_google_search_provider.py +0 -0
  589. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_headless_is_agentic.py +0 -0
  590. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_honest_surfaces.py +0 -0
  591. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_image_gen_tools.py +0 -0
  592. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_image_inputs.py +0 -0
  593. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_import_graph_budget.py +0 -0
  594. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_intent_router.py +0 -0
  595. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_intent_signals.py +0 -0
  596. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_kling_video_client.py +0 -0
  597. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_lazy_rebind.py +0 -0
  598. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_legacy_module_imports.py +0 -0
  599. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_license_consistency.py +0 -0
  600. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_licensing.py +0 -0
  601. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_local_image_provider.py +0 -0
  602. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_logistics_3pl.py +0 -0
  603. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_logistics_and_finance_agents.py +0 -0
  604. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_lsp.py +0 -0
  605. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_markdown_pdf.py +0 -0
  606. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_market_answers_in_english.py +0 -0
  607. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_market_data_client.py +0 -0
  608. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_market_history_inheritance.py +0 -0
  609. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_market_history_tool.py +0 -0
  610. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_market_hours.py +0 -0
  611. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_market_questions_on_backend.py +0 -0
  612. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_market_symbol_extraction.py +0 -0
  613. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_market_universe.py +0 -0
  614. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_mcp_circuit.py +0 -0
  615. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_mcp_client.py +0 -0
  616. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_model_capability_registry.py +0 -0
  617. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_model_choice_is_the_users.py +0 -0
  618. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_model_selection_state.py +0 -0
  619. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_native_binary_entrypoints.py +0 -0
  620. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_native_installer.py +0 -0
  621. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_new_modules.py +0 -0
  622. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_no_hardcoded_developer_paths.py +0 -0
  623. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_no_uncommitted_imports.py +0 -0
  624. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_numeric_listings.py +0 -0
  625. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_ollama_stream_imports.py +0 -0
  626. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_ollama_stream_tools.py +0 -0
  627. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_openai_image_client.py +0 -0
  628. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_operations_suite.py +0 -0
  629. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_output_rendering.py +0 -0
  630. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_packages_facade.py +0 -0
  631. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_packaging_constraints.py +0 -0
  632. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_packaging_manifest.py +0 -0
  633. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_packs_domains.py +0 -0
  634. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_pdf_report.py +0 -0
  635. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_pick_best_installed_model.py +0 -0
  636. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_plan_mode.py +0 -0
  637. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_platform_package_assembly.py +0 -0
  638. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_platform_packages.py +0 -0
  639. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_plotly_html_output.py +0 -0
  640. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_portfolio_ledger.py +0 -0
  641. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_post_turn_context_decision.py +0 -0
  642. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_preflight.py +0 -0
  643. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_preview_server.py +0 -0
  644. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_privacy_feedback.py +0 -0
  645. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_project_aria.py +0 -0
  646. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_project_review.py +0 -0
  647. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_project_review_api.py +0 -0
  648. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_prompt_assembly.py +0 -0
  649. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_prompt_selection.py +0 -0
  650. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_provider_autoconfig.py +0 -0
  651. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_provider_error_messages.py +0 -0
  652. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_provider_integration.py +0 -0
  653. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_provider_registry.py +0 -0
  654. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_public_service_status.py +0 -0
  655. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_quant_engine_namespace.py +0 -0
  656. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_rebind_contract.py +0 -0
  657. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_rebind_namespace_contract.py +0 -0
  658. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_relay_client_credentials.py +0 -0
  659. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_relay_event_verification.py +0 -0
  660. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_relay_sends_for_clients.py +0 -0
  661. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_relay_store.py +0 -0
  662. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_relay_url.py +0 -0
  663. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_release_commit_identity.py +0 -0
  664. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_release_push_is_atomic.py +0 -0
  665. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_release_reaches_the_registries.py +0 -0
  666. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_release_verification_waits.py +0 -0
  667. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_release_workflow_permissions.py +0 -0
  668. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_report_charts.py +0 -0
  669. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_report_generator.py +0 -0
  670. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_research_protocol.py +0 -0
  671. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_research_quality.py +0 -0
  672. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_responsive_rendering.py +0 -0
  673. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_review_service.py +0 -0
  674. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_root_module_budget.py +0 -0
  675. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_rsi_without_pandas_ta.py +0 -0
  676. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_runtime_acceptance.py +0 -0
  677. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_runtime_agent_loop.py +0 -0
  678. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_runtime_approval.py +0 -0
  679. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_runtime_bridge.py +0 -0
  680. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_runtime_bridge_fallback.py +0 -0
  681. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_runtime_checkpoints.py +0 -0
  682. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_runtime_event_identity.py +0 -0
  683. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_runtime_gateway.py +0 -0
  684. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_runtime_repo_map.py +0 -0
  685. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_runtime_run_store.py +0 -0
  686. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_runtime_tool_executor.py +0 -0
  687. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_runtime_worktrees.py +0 -0
  688. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_runway_video_client.py +0 -0
  689. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_safety_permissions.py +0 -0
  690. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_safety_service.py +0 -0
  691. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_safety_service_adoption.py +0 -0
  692. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_service_diagnostics_security.py +0 -0
  693. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_session_search.py +0 -0
  694. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_settings_service.py +0 -0
  695. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_shipper_digest.py +0 -0
  696. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_single_import_root.py +0 -0
  697. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_skill_agent_binding.py +0 -0
  698. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_skill_catalog.py +0 -0
  699. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_skill_loader.py +0 -0
  700. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_slash_popup.py +0 -0
  701. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_spreadsheet_tools.py +0 -0
  702. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_sse_stream_contract.py +0 -0
  703. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_startup_dashboard.py +0 -0
  704. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_startup_latency.py +0 -0
  705. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_status_language.py +0 -0
  706. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_streaming_pipeline.py +0 -0
  707. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_stripe_agent.py +0 -0
  708. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_subagent.py +0 -0
  709. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_supervisor_routing.py +0 -0
  710. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_system_prompts.py +0 -0
  711. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_system_tools_output.py +0 -0
  712. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_task_orchestrator.py +0 -0
  713. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_team_synthesis.py +0 -0
  714. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_tls_trust_store.py +0 -0
  715. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_tool_policy.py +0 -0
  716. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_tool_rounds_on_openai_apis.py +0 -0
  717. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_tool_scope.py +0 -0
  718. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_trading_service.py +0 -0
  719. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_tradingview_bridge.py +0 -0
  720. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_turn_planning.py +0 -0
  721. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_ui_completer_references.py +0 -0
  722. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_ui_input_box.py +0 -0
  723. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_ui_language_and_model.py +0 -0
  724. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_ui_robot_banner.py +0 -0
  725. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_update_health_routes.py +0 -0
  726. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_verification_hint.py +0 -0
  727. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_verification_policy.py +0 -0
  728. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_version_consistency.py +0 -0
  729. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_version_counter.py +0 -0
  730. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_video_analysis.py +0 -0
  731. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_video_editor.py +0 -0
  732. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_vscode_mcp.py +0 -0
  733. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_warehouse_agents.py +0 -0
  734. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_warehouse_cli_registration.py +0 -0
  735. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_warehouse_erp_client.py +0 -0
  736. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_warehouse_workflow.py +0 -0
  737. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_wheel_is_installable.py +0 -0
  738. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_workspace_changes.py +0 -0
  739. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_workspace_context.py +0 -0
  740. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_workspace_files.py +0 -0
  741. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_workspace_scope.py +0 -0
  742. {aria_code-0.83.0 → aria_code-0.85.0}/tests/test_workspace_service.py +0 -0
  743. {aria_code-0.83.0 → aria_code-0.85.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.83.0
3
+ Version: 0.85.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.83.0"
7
+ version = "0.85.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.83.0"
20
+ __version__ = "0.85.0"
@@ -26,6 +26,12 @@ CODING_SYSTEM_PROMPT = (
26
26
  "For multi-file projects: emit one <tool_call> per file in the SAME response (up to 5 write_file calls). "
27
27
  "Then run/verify in the NEXT response. Never mix write_file and run_command in the same response.\n\n"
28
28
 
29
+ "## FINAL SUMMARY\n"
30
+ "The user has already seen every step: each file written, with a preview, and each command's "
31
+ "output. End with 1-4 sentences: which files changed, what was verified and the result "
32
+ "(\"3 tests passed\"), and anything left open. Do NOT paste file contents, diffs or command "
33
+ "output back; quote a line or two only when it matters.\n\n"
34
+
29
35
  "## ABSOLUTELY FORBIDDEN\n"
30
36
  "1. NEVER pass slash-commands (/config, /model, /note, /apikey, etc.) to run_command — "
31
37
  " they are NOT shell commands. To change policy tell the user to type the slash command directly.\n"
@@ -46,6 +46,8 @@ def build_response_style_rule(lang: str) -> str:
46
46
  "- For analysis: Conclusion -> Evidence -> Risk/Limitations -> Next.\n"
47
47
  "- Keep output compact: avoid repeated disclaimers, generic education, and duplicated sections.\n"
48
48
  "- Keep the interactive answer near one terminal screen (about 24 lines) unless the user explicitly requests detail.\n"
49
+ "- After using tools, do not paste back what the user already saw: name the files you wrote or changed and "
50
+ "quote only the lines that matter, and summarise command output (\"4 tests passed\") instead of reprinting it.\n"
49
51
  "- Never invent data. If a field is unavailable, omit it or note 'N/A' and continue with available data.\n\n"
50
52
  )
51
53
  return (
@@ -59,6 +61,7 @@ def build_response_style_rule(lang: str) -> str:
59
61
  "- 分析类回答按:结论 -> 依据 -> 风险/限制 -> 下一步。\n"
60
62
  "- 输出要紧凑:避免重复免责声明、泛泛教学和重复章节。\n"
61
63
  "- 交互回答尽量控制在一屏(约24行);用户明确要求详细内容时除外。\n"
64
+ "- 用过工具后不要重复用户已看到的内容:写入或修改的文件只说文件名并只引用关键几行,命令输出用一句话概括(如“4 个测试全部通过”),不要整段重贴。\n"
62
65
  "- 绝不编造数据。字段不可用时说明数据源未返回,并继续使用已有数据。\n\n"
63
66
  )
64
67
 
@@ -33,15 +33,44 @@ _REPETITION_NOTICE = (
33
33
 
34
34
 
35
35
  def _redact_activity_text(value: Any, limit: int = 90) -> str:
36
+ """One line, secrets masked — for anything echoed to the screen or a log.
37
+
38
+ Shell commands are now shown on their step line, so this also covers
39
+ "Authorization: Bearer …", credentials in URLs and the usual key shapes.
40
+ """
36
41
  text = re.sub(r"\s+", " ", str(value or "")).strip()
37
42
  text = re.sub(
38
- r"(?i)(api[_-]?key|token|password|secret)(\s*[=:]\s*|\s+)[^\s]+",
43
+ r"(?i)(api[_-]?key|token|password|passwd|secret)(\s*[=:]\s*|\s+)[^\s]+",
39
44
  r"\1\2***",
40
45
  text,
41
46
  )
47
+ text = re.sub(r"(?i)\b(bearer|basic)\s+[A-Za-z0-9._~+/=-]+", r"\1 ***", text)
48
+ text = re.sub(r"://[^/\s:@]+:[^@\s]+@", "://***@", text)
49
+ text = re.sub(r"\b(sk|pk|rk)-[A-Za-z0-9_-]{8,}|\bgh[pousr]_[A-Za-z0-9]{12,}|\bAIza[0-9A-Za-z_-]{20,}"
50
+ r"|\bxox[abposr]-[A-Za-z0-9-]{10,}", "***", text)
42
51
  return text[:limit]
43
52
 
44
53
 
54
+ # How long the runtime measured a tool call to take, carried with its result.
55
+ MEASURED_ELAPSED_KEY = "_elapsed_s"
56
+
57
+
58
+ def with_measured_elapsed(result: Any, elapsed: Any) -> Any:
59
+ if isinstance(result, dict) and isinstance(elapsed, (int, float)):
60
+ return {**result, MEASURED_ELAPSED_KEY: float(elapsed)}
61
+ return result
62
+
63
+
64
+ def approval_subject(tool_name: str, params: dict[str, Any]) -> str:
65
+ """What an answered approval leaves behind: the file, or the command with secrets masked."""
66
+ if tool_name == "run_command":
67
+ return _redact_activity_text(params.get("command", ""), limit=80)
68
+ for key in ("path", "file_path"):
69
+ if params.get(key):
70
+ return Path(str(params[key])).name
71
+ return tool_name.replace("_", " ")
72
+
73
+
45
74
  def _tool_activity_hint(tool: str, params: dict[str, Any]) -> str:
46
75
  """Return one safe, useful argument for a compact activity row."""
47
76
  if not isinstance(params, dict):
@@ -506,6 +535,11 @@ class TerminalRuntimeEventConsumer:
506
535
  if not starts:
507
536
  self.tool_start_times.pop(tool, None)
508
537
  elapsed_ms = int((time.time() - started_at) * 1000)
538
+ # The runtime times each call itself. Measuring from the announcement
539
+ # counted the person reading an approval, and results of a batch
540
+ # arrive together — "✓ writing file test_fx.py 13.9s" for a 9ms write.
541
+ if isinstance(summary, dict) and isinstance(summary.get(MEASURED_ELAPSED_KEY), (int, float)):
542
+ elapsed_ms = int(summary[MEASURED_ELAPSED_KEY] * 1000)
509
543
  params_queue = self.tool_params.get(tool) or []
510
544
  params = params_queue.pop(0) if params_queue else {}
511
545
  if not params_queue:
@@ -519,6 +553,10 @@ class TerminalRuntimeEventConsumer:
519
553
  detail = ""
520
554
  if not ok and isinstance(summary, dict):
521
555
  detail = str(summary.get("error") or "")[:90]
556
+ elif ok:
557
+ # Name what was done: two bare "✓ writing file" lines in a row
558
+ # did not say which file each was.
559
+ detail = _tool_activity_hint(tool, params)
522
560
  self.print_tool_done(tool, elapsed_ms, success=ok, summary=detail)
523
561
 
524
562
  ts = time.strftime("%H:%M:%S")
@@ -588,7 +626,7 @@ class TerminalRuntimeEventConsumer:
588
626
  elif isinstance(event, AgentEventToolCall):
589
627
  self.on_tool_call(event.tool, event.params)
590
628
  elif isinstance(event, AgentEventToolResult):
591
- self.on_tool_result(event.tool, event.result)
629
+ self.on_tool_result(event.tool, with_measured_elapsed(event.result, getattr(event, "elapsed", None)))
592
630
  elif isinstance(event, AgentEventStatus):
593
631
  self.on_status(event.state, event.message)
594
632
 
@@ -638,7 +676,9 @@ class TerminalApprovalEventConsumer:
638
676
  if not approval.approved:
639
677
  from aria_code.ui.render.output import print_tool_blocked
640
678
 
641
- print_tool_blocked(tool_name, "用户取消", console=self.console, has_rich=self.has_rich)
679
+ zh = str(self.terminal.config.get("ui_lang", "en")).lower().startswith("zh")
680
+ print_tool_blocked(tool_name, "用户取消" if zh else "declined", console=self.console,
681
+ has_rich=self.has_rich)
642
682
  return approval
643
683
 
644
684
  def apply(self, tool_params: dict, approval: ApprovalDecision) -> dict:
@@ -649,7 +689,9 @@ class TerminalApprovalEventConsumer:
649
689
  try:
650
690
  self.save_config(self.terminal.config)
651
691
  if self.has_rich:
652
- self.console.print(" [dim]策略已升级为 balanced 并保存[/dim]")
692
+ zh = str(self.terminal.config.get("ui_lang", "en")).lower().startswith("zh")
693
+ self.console.print(" [dim]策略已升级为 balanced 并保存[/dim]" if zh else
694
+ " [dim]Policy set to balanced and saved[/dim]")
653
695
  except Exception:
654
696
  pass
655
697
  return tool_params
@@ -57,7 +57,7 @@ def _command_approval_prefix(command: str) -> tuple[str, ...]:
57
57
  return ()
58
58
 
59
59
 
60
- def _arrow_select(options, selected: int = 0, title: str = "") -> int:
60
+ def _arrow_select(options, selected: int = 0, title: str = "", **_kwargs) -> int:
61
61
  return len(options) - 1
62
62
 
63
63
 
@@ -472,7 +472,10 @@ def _confirm_tool_execution_decision(tool_name: str, params: dict,
472
472
  ("Allow & set balanced", "允许并升级策略(本会话有效)" if zh else "and use balanced for this session"),
473
473
  ("No", "拒绝执行" if zh else "do not run it"),
474
474
  ]
475
- choice = _arrow_select(options, selected=0, title="")
475
+ # Imported here: aria_cli rebinds this function to its own globals.
476
+ from aria_code.apps.cli.runtime_consumer import approval_subject as _subject
477
+ choice = _arrow_select(options, selected=0, title="",
478
+ collapse_to=_subject(tool_name, params))
476
479
  if choice == 0:
477
480
  return ApprovalDecision.allow(policy="balanced", user_approved=True)
478
481
  if choice == 1:
@@ -518,7 +521,10 @@ def _confirm_tool_execution_decision(tool_name: str, params: dict,
518
521
  ("Yes, allow all tools", "本会话内所有工具自动允许" if zh else "every tool, this session"),
519
522
  ("No", ""),
520
523
  ]
521
- choice = _arrow_select(options, selected=0, title="")
524
+ # Imported here: aria_cli rebinds this function to its own globals.
525
+ from aria_code.apps.cli.runtime_consumer import approval_subject as _subject
526
+ choice = _arrow_select(options, selected=0, title="",
527
+ collapse_to=_subject(tool_name, params))
522
528
 
523
529
  if choice == 0:
524
530
  if tool_name == "run_command":
@@ -77,6 +77,41 @@ def _cprint(msg: str, *, console, has_rich: bool) -> None:
77
77
  print(plain)
78
78
 
79
79
 
80
+ OUTPUT_PREVIEW_LINES = 5
81
+
82
+
83
+ def print_command_outcome(console, returncode: int, stdout: str, stderr: str, full_output_path: str = "") -> None:
84
+ """One step line and the last few lines of what the command printed.
85
+
86
+ This printed "Command completed (exit 0)", up to six stdout lines and
87
+ "full output saved" — and nothing at all for `python3 -m unittest -v`,
88
+ whose report goes to stderr, so the model pasted the test results into
89
+ its answer instead. Lines are plain text: program output such as
90
+ "[/dim]" is not Rich markup. As Codex does, the tail is kept — that is
91
+ where "OK" or the failure is — and the rest is counted.
92
+ """
93
+ from rich.text import Text
94
+
95
+ lines = stdout.rstrip().splitlines() + (stderr.rstrip().splitlines() if stderr.strip() else [])
96
+ ok = returncode == 0
97
+ head = Text(" ⎿ ", style="dim")
98
+ head.append(f"exit {returncode}", style="green" if ok else "red")
99
+ if lines:
100
+ head.append(f" · {len(lines)} line{'s' if len(lines) != 1 else ''}", style="dim")
101
+ console.print(head)
102
+ notes = []
103
+ if len(lines) > OUTPUT_PREVIEW_LINES:
104
+ notes.append(f"… +{len(lines) - OUTPUT_PREVIEW_LINES} lines")
105
+ if full_output_path:
106
+ from aria_code.ui.render.output import display_path
107
+
108
+ notes.append(f"full output saved: {display_path(full_output_path)}")
109
+ if notes:
110
+ console.print(Text(" " + " · ".join(notes), style="dim"))
111
+ for line in lines[-OUTPUT_PREVIEW_LINES:]:
112
+ console.print(Text(" " + line[:160], style="dim" if ok else "red"), overflow="ellipsis", no_wrap=True)
113
+
114
+
80
115
  def tool_run_command(
81
116
  params: dict,
82
117
  *,
@@ -374,20 +409,8 @@ def tool_run_command(
374
409
  # ── End auto-fix ─────────────────────────────────────────────────────
375
410
 
376
411
  if has_rich and console is not None:
377
- if result.returncode == 0:
378
- console.print(f" [green]Command completed[/green] [dim](exit {result.returncode})[/dim]")
379
- else:
380
- console.print(f" [dim]Command exited {result.returncode}[/dim]")
381
- out_preview = output.strip().splitlines()[:6]
382
- for ol in out_preview:
383
- console.print(f" [dim]{ol[:120]}[/dim]")
384
- if len(output.strip().splitlines()) > 6:
385
- console.print(" [dim]...truncated[/dim]")
386
- if output_artifact.get("full_output_path"):
387
- console.print(" [dim]full output saved[/dim]")
388
- if stderr.strip() and result.returncode != 0:
389
- for el in stderr.strip().splitlines()[:3]:
390
- console.print(f" [red]{el[:120]}[/red]")
412
+ print_command_outcome(console, result.returncode, output, stderr,
413
+ output_artifact.get("full_output_path", ""))
391
414
  else:
392
415
  print(f" Command exit: {result.returncode}")
393
416
  data = {
@@ -2623,7 +2623,10 @@ def _format_tool_params(tool_name: str, params: dict) -> str:
2623
2623
  # Basename only — informative without leaking full workspace paths.
2624
2624
  return _short(pathlib.Path(str(params.get("path", ""))).name or "file tool", 40)
2625
2625
  if tool_name == "run_command":
2626
- return "shell tool"
2626
+ # The command itself, secrets masked: "shell tool" said nothing, while
2627
+ # the approval menu under it named the command anyway.
2628
+ from apps.cli.runtime_consumer import _redact_activity_text
2629
+ return _short(_redact_activity_text(params.get("command", ""), limit=200) or "shell", 72)
2627
2630
  if tool_name == "list_files":
2628
2631
  return _short(params.get("pattern") or params.get("path") or "file tool", 40)
2629
2632
  if tool_name == "search_code":
@@ -2782,7 +2785,7 @@ def _print_tool_done(tool_name: str, elapsed_ms: int, success: bool = True, summ
2782
2785
  return
2783
2786
  action = _TOOL_ACTION_LABELS.get(tool_name, tool_name.replace("_", " "))
2784
2787
  icon = "[green]✓[/green]" if success else "[red]✗[/red]"
2785
- t_txt = f"({elapsed_ms}ms)" if elapsed_ms > 0 else ""
2788
+ t_txt = ("" if elapsed_ms <= 0 else f"{elapsed_ms}ms" if elapsed_ms < 1000 else f"{elapsed_ms / 1000:.1f}s")
2786
2789
  if summary:
2787
2790
  # 单行预算:summary 按显示宽度(CJK 记 2 格)截断,保证图标+动作+摘要+时长
2788
2791
  # 排在同一行——否则 Rich 整行回卷,时长 chip 顶格孤立在下一行,树形缩进被破坏。
@@ -126,7 +126,9 @@ async def run_turn(
126
126
  on_tool_call(ev.tool, dict(ev.params))
127
127
  elif isinstance(ev, AgentEventToolResult):
128
128
  if on_tool_result is not None:
129
- on_tool_result(ev.tool, dict(ev.result))
129
+ from aria_code.apps.cli.runtime_consumer import with_measured_elapsed
130
+
131
+ on_tool_result(ev.tool, with_measured_elapsed(dict(ev.result), getattr(ev, "elapsed", None)))
130
132
  elif isinstance(ev, AgentEventStatus):
131
133
  if on_status is not None:
132
134
  phase = getattr(ev, "phase", "") or getattr(ev, "state", "") or ""
@@ -139,10 +139,14 @@ if HAS_RICH:
139
139
  from ui.render.output import adapt_markdown_for_width
140
140
 
141
141
  markup = adapt_markdown_for_width(markup, getattr(console, "width", 80))
142
+ # Rich's "bw" theme paints its own white background, so every code
143
+ # block was a white slab in a dark terminal. The ANSI themes keep the
144
+ # terminal's background and colour with its palette.
145
+ code_theme = "ansi_light" if ARIA_RICH_THEME_NAME == "light" else "ansi_dark"
142
146
  return Markdown(
143
147
  markup,
144
- code_theme="bw",
145
- inline_code_theme="bw",
148
+ code_theme=code_theme,
149
+ inline_code_theme=code_theme,
146
150
  )
147
151
  else:
148
152
  class _FallbackConsole:
@@ -19,7 +19,8 @@ if _HAS_TERMIOS:
19
19
 
20
20
  def arrow_select(options: list, selected: int = 0, title: str = "",
21
21
  max_visible: int = 10,
22
- controls_hint: str = "↑↓ Enter Esc/q Cancel") -> int:
22
+ controls_hint: str = "↑↓ Enter Esc/q Cancel",
23
+ collapse_to: str | None = None) -> int:
23
24
  """Interactive arrow-key selector with scrolling.
24
25
 
25
26
  Args:
@@ -27,6 +28,10 @@ def arrow_select(options: list, selected: int = 0, title: str = "",
27
28
  selected: initially highlighted index
28
29
  title: optional header line
29
30
  max_visible: max rows shown at once; scrolls when list is larger
31
+ collapse_to: when given, the menu is erased once answered and one
32
+ line is left in its place — "✓ Yes fx.py" — instead of
33
+ the whole menu, as Codex leaves an answered approval.
34
+ The text names what was being approved.
30
35
  Returns:
31
36
  index of chosen option, or -1 if cancelled
32
37
  """
@@ -130,21 +135,13 @@ def arrow_select(options: list, selected: int = 0, title: str = "",
130
135
 
131
136
  _render.drawn = False
132
137
  _render.last_phys_height = visible + 1
138
+ header_text = f" {title} {controls_hint}" if title else f" {controls_hint}"
139
+ # blank line + rule, then the title/hint line(s) + blank line
140
+ header_height = 2 + _physical_lines(header_text) + 1
141
+ result = -1
133
142
 
134
- try:
135
- _esc_watcher.pause()
136
- tty.setcbreak(fd)
137
- sys.stdout.flush()
138
-
139
- # Top boundary
140
- _raw(f"\n \033[2m{_rule}\033[0m\n")
141
- if title:
142
- _raw(f" \033[1m{title}\033[0m \033[2m{controls_hint}\033[0m\n\n")
143
- else:
144
- _raw(f" \033[2m{controls_hint}\033[0m\n\n")
145
-
146
- _render()
147
-
143
+ def _choose() -> int:
144
+ nonlocal selected
148
145
  while True:
149
146
  ch = os.read(fd, 1)
150
147
  if ch == b'\x1b':
@@ -175,12 +172,40 @@ def arrow_select(options: list, selected: int = 0, title: str = "",
175
172
  selected = n - 1; _render()
176
173
  elif ch in (b'\x03', b'\x04'):
177
174
  return -1
175
+
176
+ try:
177
+ _esc_watcher.pause()
178
+ tty.setcbreak(fd)
179
+ sys.stdout.flush()
180
+
181
+ # Top boundary
182
+ _raw(f"\n \033[2m{_rule}\033[0m\n")
183
+ if title:
184
+ _raw(f" \033[1m{title}\033[0m \033[2m{controls_hint}\033[0m\n\n")
185
+ else:
186
+ _raw(f" \033[2m{controls_hint}\033[0m\n\n")
187
+
188
+ _render()
189
+ result = _choose()
190
+ return result
178
191
  except (EOFError, KeyboardInterrupt, OSError):
179
192
  return -1
180
193
  finally:
181
194
  termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
182
195
  _esc_watcher.resume()
183
- _raw(f" \033[2m{_rule}\033[0m\n\n")
196
+ if collapse_to is not None and _render.drawn:
197
+ label = ""
198
+ if 0 <= result < n:
199
+ opt = options[result]
200
+ label = opt[0] if isinstance(opt, tuple) else opt
201
+ declined = result < 0 or label.strip().lower() in ("no", "否", "取消", "cancel")
202
+ mark = "\033[31m✗\033[0m" if declined else "\033[32m✓\033[0m"
203
+ shown = label or "Cancelled"
204
+ subject = f" \033[2m{collapse_to}\033[0m" if collapse_to else ""
205
+ # Up over the header and the menu, clear to the end, one line instead.
206
+ _raw(f"\033[{header_height + _render.last_phys_height}A\r\033[J {mark} {shown}{subject}\n")
207
+ else:
208
+ _raw(f" \033[2m{_rule}\033[0m\n\n")
184
209
 
185
210
 
186
211
  async def run_picker_in_thread(options: list, current_idx: int,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aria-code
3
- Version: 0.83.0
3
+ Version: 0.85.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
@@ -711,6 +711,7 @@ tests/test_tls_trust_store.py
711
711
  tests/test_tool_policy.py
712
712
  tests/test_tool_rounds_on_openai_apis.py
713
713
  tests/test_tool_scope.py
714
+ tests/test_tool_step_output.py
714
715
  tests/test_trading_service.py
715
716
  tests/test_tradingview_bridge.py
716
717
  tests/test_turn_planning.py
@@ -163,7 +163,7 @@ class CalledWorkflowsAcceptATag(unittest.TestCase):
163
163
  class NpmDispatcherGate(unittest.TestCase):
164
164
  """Exercise the actual release step without contacting npm."""
165
165
 
166
- def _run_wait(self, npm_available: bool):
166
+ def _run_wait(self, npm_available: bool, status: str = ""):
167
167
  steps = _load("publish")["jobs"]["publish-npm"]["steps"]
168
168
  script = next(step["run"] for step in steps
169
169
  if step.get("name") == "Wait for this version's platform packages")
@@ -182,7 +182,16 @@ class NpmDispatcherGate(unittest.TestCase):
182
182
  # The registry is asked directly (curl), not through npm's cache.
183
183
  calls = bin_dir / "calls"
184
184
  curl = bin_dir / "curl"
185
- curl.write_text(f"#!/bin/sh\necho \"$@\" >> {calls}\nexit {0 if npm_available else 22}\n")
185
+ # Like the registry: a status for the version path, the package
186
+ # document (with its version list) for the fallback.
187
+ code = status or ("200" if npm_available else "404")
188
+ listed = '{"versions":{"0.52.0":{}}}' if npm_available else '{"versions":{"0.51.0":{}}}'
189
+ curl.write_text(
190
+ "#!/bin/sh\n"
191
+ f"echo \"$@\" >> {calls}\n"
192
+ 'case "$*" in *http_code*) printf %s ' + code + "; exit 0;; esac\n"
193
+ f"echo '{listed}'\n"
194
+ )
186
195
  node.chmod(0o755)
187
196
  curl.chmod(0o755)
188
197
  env = dict(os.environ, PATH=f"{tmp}:{os.environ.get('PATH', '')}",
@@ -200,6 +209,17 @@ class NpmDispatcherGate(unittest.TestCase):
200
209
  missing = self._run_wait(False)
201
210
  self.assertNotEqual(missing.returncode, 0)
202
211
  self.assertIn("Refusing to publish a dispatcher", missing.stdout)
212
+ self.assertIn("linux-x64@0.52.0 (HTTP 404)", missing.stdout)
213
+
214
+ def test_a_package_listed_in_its_document_counts_as_published(self):
215
+ """A 404 on the version path alone is not proof it is missing."""
216
+ listed = self._run_wait(True, status="404")
217
+ self.assertEqual(listed.returncode, 0, listed.stdout + listed.stderr)
218
+
219
+ def test_throttling_is_reported_as_throttling(self):
220
+ throttled = self._run_wait(False, status="429")
221
+ self.assertNotEqual(throttled.returncode, 0)
222
+ self.assertIn("(HTTP 429)", throttled.stdout)
203
223
 
204
224
 
205
225
  if __name__ == "__main__":
@@ -0,0 +1,147 @@
1
+ """Each tool step reads as one block, as Codex shows it.
2
+
3
+ Recorded on a real coding turn: the command header said "executing command
4
+ shell tool"; two "✓ writing file (13910ms)" lines named no file and counted
5
+ the person reading the diff; answered approval menus stayed on screen in
6
+ full; `python3 -m unittest -v` showed no output (its report is on stderr),
7
+ so the model pasted the results into its answer; code blocks were white
8
+ slabs in a dark terminal.
9
+ """
10
+
11
+ from __future__ import annotations
12
+
13
+ import io
14
+ import sys
15
+
16
+ import pytest
17
+ from rich.console import Console
18
+
19
+
20
+ def _console(width=100):
21
+ return Console(file=io.StringIO(), width=width, color_system=None, highlight=False)
22
+
23
+
24
+ def test_command_outcome_shows_the_tail_of_stdout_and_stderr():
25
+ from aria_code.apps.cli.tools.system_tools import print_command_outcome
26
+
27
+ console = _console()
28
+ report = "\n".join(f"test_{i} ... ok" for i in range(8)) + "\n" + "-" * 20 + "\nRan 8 tests in 0.001s\n\nOK"
29
+ print_command_outcome(console, 0, "", report, "/Users/someone/.aria/out/abc.log")
30
+ lines = console.file.getvalue().splitlines()
31
+ assert lines[0].strip() == "⎿ exit 0 · 12 lines"
32
+ assert "… +7 lines · full output saved: abc.log" in lines[1]
33
+ assert lines[-1].strip() == "OK" and len(lines) == 2 + 5
34
+ assert "/Users/someone" not in console.file.getvalue()
35
+
36
+
37
+ def test_program_output_is_not_markup():
38
+ from aria_code.apps.cli.tools.system_tools import print_command_outcome
39
+
40
+ console = _console()
41
+ print_command_outcome(console, 1, "[bold]not bold[/bold] and a stray [/dim]", "")
42
+ text = console.file.getvalue()
43
+ assert "exit 1" in text and "[bold]not bold[/bold] and a stray [/dim]" in text
44
+
45
+
46
+ @pytest.mark.parametrize("raw, hidden", [
47
+ ("curl -H 'Authorization: Bearer abc.def.ghi' https://x", "abc.def.ghi"),
48
+ ("git clone https://user:hunter2@github.com/o/r", "hunter2"),
49
+ ("OPENAI_API_KEY=sk-live1234567890abcd python run.py", "sk-live1234567890abcd"),
50
+ ("export GITHUB_TOKEN=ghp_abcdefghijklmnop", "ghp_abcdefghijklmnop"),
51
+ ("gemini --key AIzaSyA1234567890abcdefghijk", "AIzaSyA1234567890abcdefghijk"),
52
+ ])
53
+ def test_commands_are_shown_with_secrets_masked(raw, hidden):
54
+ from aria_code.apps.cli.runtime_consumer import _redact_activity_text
55
+
56
+ shown = _redact_activity_text(raw, limit=200)
57
+ assert hidden not in shown and "***" in shown
58
+
59
+
60
+ def test_the_step_header_names_the_command():
61
+ sys.argv = ["aria-code"]
62
+ import aria_code.aria_cli as cli
63
+
64
+ assert cli._format_tool_params("run_command", {"command": "python3 -m unittest -v"}) == "python3 -m unittest -v"
65
+ assert "s3cr3t" not in cli._format_tool_params("run_command", {"command": "mysql --password s3cr3t"})
66
+
67
+
68
+ def _consumer(calls):
69
+ from aria_code.apps.cli.runtime_consumer import TerminalRuntimeEventConsumer
70
+
71
+ done = []
72
+ consumer = TerminalRuntimeEventConsumer.__new__(TerminalRuntimeEventConsumer)
73
+ consumer.tool_start_times = {"write_file": [100.0] * len(calls)}
74
+ consumer.tool_params = {"write_file": [{"path": path} for path in calls]}
75
+ consumer.print_tool_done = lambda tool, ms, success=True, summary="": done.append((summary, ms))
76
+ consumer.terminal = type("T", (), {"_transcript_log": []})()
77
+ consumer.tool_spinner = None
78
+ return consumer, done
79
+
80
+
81
+ def test_the_done_line_names_its_target_and_shows_the_measured_time(monkeypatch):
82
+ """Two writes announced together, approved one after the other, reported
83
+ together: each line shows its own file and the time the runtime measured,
84
+ not the time since it was announced."""
85
+ from aria_code.apps.cli.runtime_consumer import with_measured_elapsed
86
+
87
+ monkeypatch.setattr("aria_code.apps.cli.runtime_consumer.time.time", lambda: 113.9)
88
+ consumer, done = _consumer(["src/fx.py", "test_fx.py"])
89
+ consumer.on_tool_result("write_file", with_measured_elapsed({"success": True}, 0.009))
90
+ consumer.on_tool_result("write_file", with_measured_elapsed({"success": True}, 0.012))
91
+ assert done == [("fx.py", 9), ("test_fx.py", 12)]
92
+
93
+
94
+ def test_without_a_measurement_the_announcement_time_is_used(monkeypatch):
95
+ monkeypatch.setattr("aria_code.apps.cli.runtime_consumer.time.time", lambda: 100.25)
96
+ consumer, done = _consumer(["fx.py"])
97
+ consumer.on_tool_result("write_file", {"success": True})
98
+ assert done == [("fx.py", 250)]
99
+
100
+
101
+ def test_the_gateway_passes_the_measured_time_on():
102
+ import inspect
103
+
104
+ from aria_code.runtime import gateway
105
+
106
+ assert "with_measured_elapsed" in inspect.getsource(gateway)
107
+
108
+
109
+ def test_an_approval_collapses_to_what_was_approved(monkeypatch):
110
+ """Through aria_cli, which rebinds the approval function to its own
111
+ globals: a helper defined in tool_executor was not visible there, and the
112
+ first recorded run crashed every approval with a NameError."""
113
+ sys.argv = ["aria-code"]
114
+ import aria_code.aria_cli as cli
115
+
116
+ seen = {}
117
+
118
+ def fake_select(options, selected=0, title="", **kwargs):
119
+ seen.update(kwargs)
120
+ return 0
121
+
122
+ monkeypatch.setattr(cli, "_arrow_select", fake_select)
123
+ monkeypatch.setattr(cli, "HAS_RICH", False)
124
+ decision = cli._confirm_tool_execution_decision(
125
+ "write_file", {"path": "/tmp/w/fx.py", "content": "x = 1\n"}, config_policy="safe")
126
+ assert decision.approved and seen["collapse_to"] == "fx.py"
127
+ seen.clear()
128
+ cli._confirm_tool_execution_decision(
129
+ "run_command", {"command": "TOKEN=abc123 python3 -m unittest -v"}, config_policy="safe")
130
+ assert "abc123" not in seen.get("collapse_to", "") and "unittest" in seen.get("collapse_to", "")
131
+
132
+
133
+ def test_the_answer_rules_say_not_to_paste_back_tool_output():
134
+ from aria_code.apps.cli.prompts.system_prompts import build_response_style_rule
135
+
136
+ assert "do not paste back" in build_response_style_rule("en")
137
+ assert "不要整段重贴" in build_response_style_rule("zh")
138
+
139
+
140
+ def test_the_coding_prompt_asks_for_a_short_summary():
141
+ """A coding turn gets CODING_SYSTEM_PROMPT, not the answer-style rule: the
142
+ recorded turn pasted both files and the whole test run back."""
143
+ from aria_code.apps.cli.prompts.coding import CODING_SYSTEM_PROMPT
144
+
145
+ assert "## FINAL SUMMARY" in CODING_SYSTEM_PROMPT
146
+ assert "Do NOT paste file contents" in CODING_SYSTEM_PROMPT
147
+
@@ -30,10 +30,15 @@ def test_light_markdown_theme_uses_high_contrast_text():
30
30
 
31
31
 
32
32
  def test_make_markdown_uses_neutral_code_theme():
33
+ """Code keeps the terminal's background. "bw" was meant to be neutral, but
34
+ it paints #ffffff behind every block: white slabs in a dark terminal."""
35
+ from rich.syntax import Syntax
36
+
33
37
  md = make_markdown("`AAPL` and ```python\nprint('ok')\n```")
34
38
 
35
- assert getattr(md, "code_theme", "") == "bw"
36
- assert getattr(md, "inline_code_theme", "") == "bw"
39
+ assert md.code_theme in ("ansi_dark", "ansi_light")
40
+ assert md.inline_code_theme == md.code_theme
41
+ assert not Syntax.get_theme(md.code_theme).get_background_style()
37
42
 
38
43
 
39
44
  def test_rich_theme_defaults_apple_terminal_to_light_without_color_metadata():
File without changes
File without changes
File without changes
File without changes