aria-code 0.155.0__tar.gz → 0.156.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 (917) hide show
  1. {aria_code-0.155.0/src/aria_code.egg-info → aria_code-0.156.0}/PKG-INFO +2 -2
  2. {aria_code-0.155.0 → aria_code-0.156.0}/README.md +1 -1
  3. {aria_code-0.155.0 → aria_code-0.156.0}/pyproject.toml +1 -1
  4. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/_version.py +1 -1
  5. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/model_cmds.py +32 -1
  6. aria_code-0.156.0/src/aria_code/packages/aria_services/research_protocol.py +134 -0
  7. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/providers/llm/arthera_gateway.py +13 -1
  8. {aria_code-0.155.0 → aria_code-0.156.0/src/aria_code.egg-info}/PKG-INFO +2 -2
  9. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code.egg-info/SOURCES.txt +1 -0
  10. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_arthera_gateway_provider.py +30 -7
  11. aria_code-0.156.0/tests/test_model_number_selection.py +129 -0
  12. aria_code-0.156.0/tests/test_research_protocol.py +70 -0
  13. aria_code-0.155.0/src/aria_code/packages/aria_services/research_protocol.py +0 -83
  14. aria_code-0.155.0/tests/test_research_protocol.py +0 -26
  15. {aria_code-0.155.0 → aria_code-0.156.0}/LICENSE +0 -0
  16. {aria_code-0.155.0 → aria_code-0.156.0}/NOTICE +0 -0
  17. {aria_code-0.155.0 → aria_code-0.156.0}/setup.cfg +0 -0
  18. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/__init__.py +0 -0
  19. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/adk_apps/__init__.py +0 -0
  20. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/adk_apps/aria_code_review/__init__.py +0 -0
  21. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/adk_apps/aria_code_review/agent.py +0 -0
  22. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/adk_apps/aria_research/__init__.py +0 -0
  23. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/adk_apps/aria_research/agent.py +0 -0
  24. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/__init__.py +0 -0
  25. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/base.py +0 -0
  26. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/code_review.py +0 -0
  27. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/deep/__init__.py +0 -0
  28. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/deep/calibration_loop.py +0 -0
  29. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/deep/critic.py +0 -0
  30. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/deep/deepen.py +0 -0
  31. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/deep/models.py +0 -0
  32. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/deep/pipeline.py +0 -0
  33. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/deep/quant_fusion.py +0 -0
  34. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/deep/themes.py +0 -0
  35. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/deep/tiers.py +0 -0
  36. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/engineering/__init__.py +0 -0
  37. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/engineering/coder.py +0 -0
  38. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/engineering/tester.py +0 -0
  39. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/financial/__init__.py +0 -0
  40. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/financial/cashflow_burn.py +0 -0
  41. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/financial/catalyst.py +0 -0
  42. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/financial/corporate_finance.py +0 -0
  43. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/financial/debate.py +0 -0
  44. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/financial/earnings.py +0 -0
  45. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/financial/fundamental.py +0 -0
  46. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/financial/macro.py +0 -0
  47. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/financial/news.py +0 -0
  48. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/financial/risk.py +0 -0
  49. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/financial/sector.py +0 -0
  50. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/financial/strategist.py +0 -0
  51. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/financial/stripe_revenue.py +0 -0
  52. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/financial/synthesis.py +0 -0
  53. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/financial/technical.py +0 -0
  54. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/orchestrator.py +0 -0
  55. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/portfolio_agent.py +0 -0
  56. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/realty/__init__.py +0 -0
  57. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/realty/asset_diagnosis.py +0 -0
  58. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/realty/business_match.py +0 -0
  59. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/realty/cashflow_verify.py +0 -0
  60. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/realty/contract_rules.py +0 -0
  61. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/realty/energy_anomaly.py +0 -0
  62. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/realty/exit_settlement.py +0 -0
  63. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/realty/fulfillment_risk.py +0 -0
  64. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/realty/ops_optimize.py +0 -0
  65. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/realty/revenue_share.py +0 -0
  66. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/registry.py +0 -0
  67. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/signal_scheme.py +0 -0
  68. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/sports/__init__.py +0 -0
  69. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/sports/football_agent.py +0 -0
  70. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/supervisor.py +0 -0
  71. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/team.py +0 -0
  72. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/video/__init__.py +0 -0
  73. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/video/director.py +0 -0
  74. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/video/qa_agent.py +0 -0
  75. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/video/script_doctor.py +0 -0
  76. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/warehouse/__init__.py +0 -0
  77. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/warehouse/contracts.py +0 -0
  78. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/warehouse/dashboard.py +0 -0
  79. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/warehouse/fulfillment_leadtime.py +0 -0
  80. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/warehouse/inbound_exceptions.py +0 -0
  81. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/warehouse/inventory_health.py +0 -0
  82. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/warehouse/local_run.py +0 -0
  83. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/warehouse/local_snapshot.py +0 -0
  84. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/warehouse/logistics_cost.py +0 -0
  85. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/warehouse/logistics_sync.py +0 -0
  86. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/agents/warehouse/workflow.py +0 -0
  87. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/aliyun_data_client.py +0 -0
  88. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/README.md +0 -0
  89. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/__init__.py +0 -0
  90. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/channels/README.md +0 -0
  91. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/channels/__init__.py +0 -0
  92. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/channels/approvals.py +0 -0
  93. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/channels/conversation.py +0 -0
  94. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/channels/digest.py +0 -0
  95. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/channels/intake.py +0 -0
  96. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/channels/registry.py +0 -0
  97. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/channels/tradingview.py +0 -0
  98. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/README.md +0 -0
  99. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/__init__.py +0 -0
  100. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/_optional.py +0 -0
  101. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/app_server.py +0 -0
  102. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/bootstrap.py +0 -0
  103. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/broker_render.py +0 -0
  104. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/chat_turn.py +0 -0
  105. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/codegen_paths.py +0 -0
  106. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/__init__.py +0 -0
  107. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/_business_render.py +0 -0
  108. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/_ui.py +0 -0
  109. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/analysis_cmds.py +0 -0
  110. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/ashare_prediction_cmds.py +0 -0
  111. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/auth_cmds.py +0 -0
  112. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/backtest_cmds.py +0 -0
  113. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/broker_cmds.py +0 -0
  114. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/business_workflow_cmds.py +0 -0
  115. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/canvas_cmds.py +0 -0
  116. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/catalog.py +0 -0
  117. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/core_cmds.py +0 -0
  118. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/data_cmds.py +0 -0
  119. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/diagnostic_cmds.py +0 -0
  120. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/diagnostic_ops_cmds.py +0 -0
  121. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/file_cmds.py +0 -0
  122. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/finance_service_cmds.py +0 -0
  123. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/fx_commodity_cmds.py +0 -0
  124. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/market.py +0 -0
  125. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/market_cmds.py +0 -0
  126. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/market_context.py +0 -0
  127. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/market_render.py +0 -0
  128. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/ops_cmds.py +0 -0
  129. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/orchestrator_cmds.py +0 -0
  130. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/pdf_export_cmds.py +0 -0
  131. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/portfolio_cmds.py +0 -0
  132. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/report.py +0 -0
  133. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/scaffold_templates.py +0 -0
  134. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/session_cmds.py +0 -0
  135. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/session_ux_cmds.py +0 -0
  136. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/team.py +0 -0
  137. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/team_render.py +0 -0
  138. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/ui_cmds.py +0 -0
  139. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/warehouse_cmds.py +0 -0
  140. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/workflow_cmds.py +0 -0
  141. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/commands/workspace_cmds.py +0 -0
  142. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/config_paths.py +0 -0
  143. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/config_store.py +0 -0
  144. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/constants.py +0 -0
  145. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/context.py +0 -0
  146. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/conversation_policy.py +0 -0
  147. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/deterministic.py +0 -0
  148. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/direct.py +0 -0
  149. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/earnings_view.py +0 -0
  150. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/exec_events.py +0 -0
  151. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/finance_service_catalog.py +0 -0
  152. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/football_reports.py +0 -0
  153. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/github_app_auth.py +0 -0
  154. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/google_login.py +0 -0
  155. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/handlers/__init__.py +0 -0
  156. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/handlers/broker_handlers.py +0 -0
  157. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/handlers/chart_handlers.py +0 -0
  158. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/handlers/market_handlers.py +0 -0
  159. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/handlers/realty_handlers.py +0 -0
  160. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/handlers/sports_handlers.py +0 -0
  161. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/handlers/strategy_advice.py +0 -0
  162. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/headless.py +0 -0
  163. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/helpers.py +0 -0
  164. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/hooks.py +0 -0
  165. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/i18n.py +0 -0
  166. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/intent.py +0 -0
  167. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/intent_router.py +0 -0
  168. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/intent_signals.py +0 -0
  169. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/lifecycle_hooks.py +0 -0
  170. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/local_tool_schemas.py +0 -0
  171. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/main.py +0 -0
  172. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/market_hours.py +0 -0
  173. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/market_metadata.py +0 -0
  174. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/market_universe.py +0 -0
  175. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/message_processing.py +0 -0
  176. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/mixin_binding.py +0 -0
  177. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/model_catalog.py +0 -0
  178. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/model_probe.py +0 -0
  179. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/model_retirement.py +0 -0
  180. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/native_branding.py +0 -0
  181. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/native_bridge.py +0 -0
  182. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/native_entry.py +0 -0
  183. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/pdf_report.py +0 -0
  184. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/plan_mode.py +0 -0
  185. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/plotly_html.py +0 -0
  186. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/prediction_feedback.py +0 -0
  187. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/preflight.py +0 -0
  188. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/project_aria.py +0 -0
  189. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/prompt_assembly.py +0 -0
  190. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/prompts/__init__.py +0 -0
  191. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/prompts/coding.py +0 -0
  192. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/prompts/select.py +0 -0
  193. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/prompts/system_prompts.py +0 -0
  194. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/prompts/ui.py +0 -0
  195. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/provider_endpoints.py +0 -0
  196. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/provider_keys.py +0 -0
  197. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/providers/__init__.py +0 -0
  198. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/providers/base.py +0 -0
  199. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/providers/chat_routing.py +0 -0
  200. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/providers/collaboration.py +0 -0
  201. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/providers/llm/__init__.py +0 -0
  202. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/providers/llm/offline_responses.py +0 -0
  203. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/providers/llm/ollama_stream.py +0 -0
  204. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/providers/llm/response_cache.py +0 -0
  205. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/providers/llm/sse_stream.py +0 -0
  206. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/providers/runtime_bridge.py +0 -0
  207. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/providers/vertexai_stream.py +0 -0
  208. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/release_download.py +0 -0
  209. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/review_runner.py +0 -0
  210. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/runtime_consumer.py +0 -0
  211. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/sandbox.py +0 -0
  212. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/session_export.py +0 -0
  213. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/session_jsonl.py +0 -0
  214. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/session_store.py +0 -0
  215. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/skills_catalog.py +0 -0
  216. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/task_isolation.py +0 -0
  217. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/terminal_chrome.py +0 -0
  218. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/todo_tracker.py +0 -0
  219. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/tool_executor.py +0 -0
  220. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/tool_registry.py +0 -0
  221. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/tool_scope.py +0 -0
  222. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/tools/__init__.py +0 -0
  223. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/tools/context.py +0 -0
  224. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/tools/file_tools.py +0 -0
  225. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/tools/market_tools.py +0 -0
  226. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/tools/notebook_tools.py +0 -0
  227. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/tools/system_tools.py +0 -0
  228. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/tools/write_tools.py +0 -0
  229. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/tradingview_bridge.py +0 -0
  230. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/transactions.py +0 -0
  231. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/turn_planning.py +0 -0
  232. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/update_check.py +0 -0
  233. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/updater.py +0 -0
  234. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/utils/__init__.py +0 -0
  235. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/utils/market_detect.py +0 -0
  236. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/workflow_runner.py +0 -0
  237. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/cli/workspace_route.py +0 -0
  238. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/daemon/README.md +0 -0
  239. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/vscode/README.md +0 -0
  240. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/apps/vscode/package.json +0 -0
  241. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/aria_cli.py +0 -0
  242. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/aria_daemon.py +0 -0
  243. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/aria_feishu_bot.py +0 -0
  244. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/aria_mcp_server.py +0 -0
  245. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/aria_relay_client.py +0 -0
  246. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/aria_relay_server.py +0 -0
  247. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/aria_telegram_bot.py +0 -0
  248. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/ariarc.py +0 -0
  249. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/artifacts.py +0 -0
  250. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/backtest_engine.py +0 -0
  251. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/backtest_report.py +0 -0
  252. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/brokers/__init__.py +0 -0
  253. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/brokers/automation.py +0 -0
  254. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/brokers/base.py +0 -0
  255. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/brokers/capabilities.py +0 -0
  256. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/brokers/cn/__init__.py +0 -0
  257. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/brokers/cn/easytrader_broker.py +0 -0
  258. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/brokers/cn/futu_broker.py +0 -0
  259. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/brokers/cn/longbridge_broker.py +0 -0
  260. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/brokers/cn/tiger_broker.py +0 -0
  261. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/brokers/cn/xtquant_broker.py +0 -0
  262. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/brokers/config.py +0 -0
  263. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/brokers/intl/__init__.py +0 -0
  264. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/brokers/intl/alpaca_broker.py +0 -0
  265. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/brokers/intl/ibkr_broker.py +0 -0
  266. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/brokers/intl/trading212_broker.py +0 -0
  267. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/brokers/intl/webull_broker.py +0 -0
  268. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/brokers/paper_broker.py +0 -0
  269. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/brokers/planning.py +0 -0
  270. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/brokers/registry.py +0 -0
  271. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/brokers/trading.py +0 -0
  272. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/canva_client.py +0 -0
  273. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/change_store.py +0 -0
  274. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/clients/__init__.py +0 -0
  275. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/clients/aliyun_data_client.py +0 -0
  276. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/clients/aria_relay_client.py +0 -0
  277. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/clients/canva_client.py +0 -0
  278. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/clients/figma_client.py +0 -0
  279. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/clients/football_data_client.py +0 -0
  280. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/clients/kling_video_client.py +0 -0
  281. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/clients/market_data_client.py +0 -0
  282. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/clients/openai_image_client.py +0 -0
  283. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/clients/runway_video_client.py +0 -0
  284. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/clients/warehouse_erp_client.py +0 -0
  285. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/cloud_memory.py +0 -0
  286. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/command_safety.py +0 -0
  287. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/computer_use_tools.py +0 -0
  288. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/dashboard_generator.py +0 -0
  289. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/data_analysis_tools.py +0 -0
  290. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/data_cleaner.py +0 -0
  291. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/data_service.py +0 -0
  292. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/datasources/__init__.py +0 -0
  293. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/datasources/base.py +0 -0
  294. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/datasources/router.py +0 -0
  295. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/datasources/sources/__init__.py +0 -0
  296. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/datasources/sources/akshare_source.py +0 -0
  297. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/datasources/sources/alpha_vantage_source.py +0 -0
  298. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/datasources/sources/edgar_source.py +0 -0
  299. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/datasources/sources/finnhub_source.py +0 -0
  300. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/datasources/sources/fred_source.py +0 -0
  301. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/datasources/sources/tushare_source.py +0 -0
  302. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/datasources/sources/web_scraper_source.py +0 -0
  303. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/datasources/sources/world_bank_source.py +0 -0
  304. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/datasources/sources/yfinance_source.py +0 -0
  305. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/demo_player.py +0 -0
  306. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/doctor.py +0 -0
  307. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/domain/__init__.py +0 -0
  308. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/domain/backtest_engine.py +0 -0
  309. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/domain/backtest_report.py +0 -0
  310. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/domain/finance_formulas.py +0 -0
  311. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/domain/portfolio_ledger.py +0 -0
  312. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/domain/strategy_vault.py +0 -0
  313. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/evals/__init__.py +0 -0
  314. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/evals/behavior.py +0 -0
  315. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/evals/gap.py +0 -0
  316. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/evals/harness.py +0 -0
  317. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/evals/review_probe.py +0 -0
  318. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/evals/runner.py +0 -0
  319. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/evals/summary.py +0 -0
  320. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/external_agent_runner.py +0 -0
  321. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/figma_client.py +0 -0
  322. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/file_analysis_tools.py +0 -0
  323. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/finance_formulas.py +0 -0
  324. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/football_data_client.py +0 -0
  325. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/image_gen_tools.py +0 -0
  326. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/intent_classifier.py +0 -0
  327. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/kling_video_client.py +0 -0
  328. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/licensing.py +0 -0
  329. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/local_finance_tools.py +0 -0
  330. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/local_image_provider.py +0 -0
  331. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/local_llm_provider.py +0 -0
  332. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/macro_tools.py +0 -0
  333. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/markdown_pdf.py +0 -0
  334. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/market_data_client.py +0 -0
  335. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/mcp_client.py +0 -0
  336. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/memory_manager.py +0 -0
  337. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/model_capability.py +0 -0
  338. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/notification_tools.py +0 -0
  339. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/openai_image_client.py +0 -0
  340. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/__init__.py +0 -0
  341. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/adk_bridge/__init__.py +0 -0
  342. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/adk_bridge/code_review_tools.py +0 -0
  343. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/adk_bridge/market_tools.py +0 -0
  344. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_agents/__init__.py +0 -0
  345. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_agents/manifest.py +0 -0
  346. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_core/__init__.py +0 -0
  347. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_core/architecture.py +0 -0
  348. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_core/export.py +0 -0
  349. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_core/manifest.py +0 -0
  350. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_core/paths.py +0 -0
  351. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_core/secure_file.py +0 -0
  352. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_infra/__init__.py +0 -0
  353. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_infra/arthera.py +0 -0
  354. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_infra/doctor.py +0 -0
  355. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_infra/product.py +0 -0
  356. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_mcp/__init__.py +0 -0
  357. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_mcp/bridge.py +0 -0
  358. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_mcp/circuit.py +0 -0
  359. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_mcp/config.py +0 -0
  360. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_mcp/installer.py +0 -0
  361. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_mcp/server.py +0 -0
  362. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_mcp/tools.py +0 -0
  363. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_sdk/__init__.py +0 -0
  364. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_sdk/client.py +0 -0
  365. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_sdk/providers.py +0 -0
  366. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_sdk/streaming.py +0 -0
  367. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_sdk/types.py +0 -0
  368. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_services/__init__.py +0 -0
  369. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_services/cache.py +0 -0
  370. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_services/context.py +0 -0
  371. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_services/context_checkpoints.py +0 -0
  372. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_services/data.py +0 -0
  373. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_services/provider_health.py +0 -0
  374. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_services/references.py +0 -0
  375. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_services/registry.py +0 -0
  376. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_services/research_quality.py +0 -0
  377. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_services/settings.py +0 -0
  378. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_services/usage.py +0 -0
  379. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_skills/__init__.py +0 -0
  380. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_skills/catalog.py +0 -0
  381. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_skills/loader.py +0 -0
  382. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_skills/registry.py +0 -0
  383. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_tools/__init__.py +0 -0
  384. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_tools/financial/__init__.py +0 -0
  385. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_tools/financial/_paths.py +0 -0
  386. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_tools/financial/compliance.py +0 -0
  387. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_tools/financial/factors.py +0 -0
  388. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_tools/financial/risk_tools.py +0 -0
  389. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_tools/financial/strategy.py +0 -0
  390. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/aria_tools/registry.py +0 -0
  391. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/quant_engine/__init__.py +0 -0
  392. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/quant_engine/_namespace.py +0 -0
  393. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/quant_engine/backtest/__init__.py +0 -0
  394. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/quant_engine/backtest/core.py +0 -0
  395. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/quant_engine/backtest/engine.py +0 -0
  396. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/quant_engine/portfolio/__init__.py +0 -0
  397. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/quant_engine/portfolio/optimizer.py +0 -0
  398. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/quant_engine/sports/__init__.py +0 -0
  399. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/quant_engine/sports/calibrator.py +0 -0
  400. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/quant_engine/sports/dixon_coles.py +0 -0
  401. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/quant_engine/sports/elo.py +0 -0
  402. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/quant_engine/sports/form.py +0 -0
  403. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/quant_engine/sports/h2h.py +0 -0
  404. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/quant_engine/sports/ml_model.py +0 -0
  405. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/quant_engine/sports/predictor.py +0 -0
  406. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/quant_engine/sports/tracker.py +0 -0
  407. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/quant_engine/stochastic/__init__.py +0 -0
  408. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/quant_engine/stochastic/gbm_enhanced.py +0 -0
  409. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/quant_engine/stochastic/ito_calculus.py +0 -0
  410. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/quant_engine/stochastic/kelly_criterion.py +0 -0
  411. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/quant_engine/stochastic/monte_carlo_advanced.py +0 -0
  412. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/quant_engine/stochastic/options_pricing.py +0 -0
  413. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packages/quant_engine/stochastic/stochastic_processes.py +0 -0
  414. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packs/__init__.py +0 -0
  415. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packs/base.py +0 -0
  416. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packs/finance/__init__.py +0 -0
  417. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packs/logistics/__init__.py +0 -0
  418. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packs/payments/__init__.py +0 -0
  419. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packs/realty/__init__.py +0 -0
  420. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packs/registry.py +0 -0
  421. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/packs/rules.py +0 -0
  422. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/plan_utils.py +0 -0
  423. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/plugin_loader.py +0 -0
  424. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/portfolio_ledger.py +0 -0
  425. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/preview_server.py +0 -0
  426. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/privacy/__init__.py +0 -0
  427. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/privacy/feedback.py +0 -0
  428. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/project_review.py +0 -0
  429. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/project_review_api.py +0 -0
  430. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/project_review_server.py +0 -0
  431. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/project_tools.py +0 -0
  432. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/providers/__init__.py +0 -0
  433. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/providers/google_video_provider.py +0 -0
  434. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/providers/llm/__init__.py +0 -0
  435. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/providers/llm/anthropic.py +0 -0
  436. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/providers/llm/autoconfig.py +0 -0
  437. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/providers/llm/base.py +0 -0
  438. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/providers/llm/custom.py +0 -0
  439. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/providers/llm/ollama.py +0 -0
  440. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/providers/llm/openai_compat.py +0 -0
  441. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/providers/llm/registry.py +0 -0
  442. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/providers/local_image_provider.py +0 -0
  443. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/providers/local_llm_provider.py +0 -0
  444. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/providers/tool_messages.py +0 -0
  445. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/realty_data_tools.py +0 -0
  446. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/relay_store.py +0 -0
  447. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/report_exporters.py +0 -0
  448. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/report_generator.py +0 -0
  449. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/review_service.py +0 -0
  450. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/__init__.py +0 -0
  451. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/acceptance.py +0 -0
  452. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/agent_loop.py +0 -0
  453. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/approval.py +0 -0
  454. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/baseline.py +0 -0
  455. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/budget.py +0 -0
  456. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/checkpoints.py +0 -0
  457. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/contract.py +0 -0
  458. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/crash_report.py +0 -0
  459. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/delivery.py +0 -0
  460. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/events.py +0 -0
  461. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/gateway.py +0 -0
  462. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/lsp.py +0 -0
  463. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/native_index.py +0 -0
  464. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/orchestrator.py +0 -0
  465. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/processes.py +0 -0
  466. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/project_graph.py +0 -0
  467. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/repo_map.py +0 -0
  468. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/review.py +0 -0
  469. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/run_state.py +0 -0
  470. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/run_store.py +0 -0
  471. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/self_healing.py +0 -0
  472. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/semantic_diff.py +0 -0
  473. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/subagent.py +0 -0
  474. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/symbol_edit.py +0 -0
  475. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/task_ledger.py +0 -0
  476. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/task_orchestrator.py +0 -0
  477. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/task_worktree.py +0 -0
  478. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/tool_executor.py +0 -0
  479. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/tool_policy.py +0 -0
  480. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/transactions.py +0 -0
  481. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/windows_job.py +0 -0
  482. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/workflows.py +0 -0
  483. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runtime/worktrees.py +0 -0
  484. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/runway_video_client.py +0 -0
  485. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/safety/__init__.py +0 -0
  486. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/safety/client_isolation.py +0 -0
  487. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/safety/permissions.py +0 -0
  488. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/safety/risk.py +0 -0
  489. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/safety/sandbox.py +0 -0
  490. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/safety/service.py +0 -0
  491. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/setup_wizard.py +0 -0
  492. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/spreadsheet_tools.py +0 -0
  493. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/strategy_vault.py +0 -0
  494. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/tools/__init__.py +0 -0
  495. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/tools/artifact_tools.py +0 -0
  496. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/tools/broker_tools.py +0 -0
  497. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/tools/build_quant_engine.py +0 -0
  498. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/tools/code_audit_tools.py +0 -0
  499. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/tools/computer_use_tools.py +0 -0
  500. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/tools/data_analysis_tools.py +0 -0
  501. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/tools/enterprise_finance_tools.py +0 -0
  502. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/tools/extended_tools.py +0 -0
  503. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/tools/file_analysis_tools.py +0 -0
  504. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/tools/image_gen_tools.py +0 -0
  505. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/tools/local_finance_tools.py +0 -0
  506. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/tools/logistics_carriers.py +0 -0
  507. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/tools/logistics_inventory.py +0 -0
  508. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/tools/logistics_io.py +0 -0
  509. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/tools/logistics_tenancy.py +0 -0
  510. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/tools/logistics_tools.py +0 -0
  511. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/tools/macro_tools.py +0 -0
  512. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/tools/notification_tools.py +0 -0
  513. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/tools/project_tools.py +0 -0
  514. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/tools/realty_data_tools.py +0 -0
  515. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/tools/spreadsheet_tools.py +0 -0
  516. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/tools/stripe_tools.py +0 -0
  517. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/tools/video_tools.py +0 -0
  518. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/training/__init__.py +0 -0
  519. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/training/compare.py +0 -0
  520. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/training/sft_dataset.py +0 -0
  521. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/ui/__init__.py +0 -0
  522. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/ui/banner.py +0 -0
  523. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/ui/completer.py +0 -0
  524. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/ui/console.py +0 -0
  525. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/ui/input_box.py +0 -0
  526. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/ui/mentions.py +0 -0
  527. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/ui/picker.py +0 -0
  528. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/ui/render/__init__.py +0 -0
  529. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/ui/render/actions.py +0 -0
  530. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/ui/render/finance.py +0 -0
  531. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/ui/render/market.py +0 -0
  532. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/ui/render/output.py +0 -0
  533. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/ui/render/responsive.py +0 -0
  534. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/ui/render/team.py +0 -0
  535. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/ui/robot.py +0 -0
  536. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/ui/startup_dashboard.py +0 -0
  537. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/utils/vscode_uri.py +0 -0
  538. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/video_analysis.py +0 -0
  539. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/video_editor.py +0 -0
  540. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/video_workflow/__init__.py +0 -0
  541. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/video_workflow/__main__.py +0 -0
  542. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/video_workflow/engines/__init__.py +0 -0
  543. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/video_workflow/engines/base.py +0 -0
  544. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/video_workflow/engines/custom_model.py +0 -0
  545. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/video_workflow/engines/google_veo.py +0 -0
  546. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/video_workflow/engines/local_engine.py +0 -0
  547. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/video_workflow/engines/registry.py +0 -0
  548. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/video_workflow/google_models.py +0 -0
  549. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/video_workflow/music/__init__.py +0 -0
  550. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/video_workflow/music/foley_service.py +0 -0
  551. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/video_workflow/music/service.py +0 -0
  552. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/video_workflow/pipeline.py +0 -0
  553. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/video_workflow/plan.py +0 -0
  554. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/video_workflow/session.py +0 -0
  555. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/workspace/__init__.py +0 -0
  556. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/workspace/files.py +0 -0
  557. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/workspace/verify.py +0 -0
  558. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/workspace_changes.py +0 -0
  559. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/workspace_context.py +0 -0
  560. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/workspace_service.py +0 -0
  561. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code/workspace_tools.py +0 -0
  562. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code.egg-info/dependency_links.txt +0 -0
  563. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code.egg-info/entry_points.txt +0 -0
  564. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code.egg-info/requires.txt +0 -0
  565. {aria_code-0.155.0 → aria_code-0.156.0}/src/aria_code.egg-info/top_level.txt +0 -0
  566. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_action_view.py +0 -0
  567. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_adk_market_tools.py +0 -0
  568. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_agent_key_points_language.py +0 -0
  569. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_agent_team_fallback.py +0 -0
  570. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_analyze_file_tool.py +0 -0
  571. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_architecture_ledger_is_true.py +0 -0
  572. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_architecture_report.py +0 -0
  573. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_aria_cli_core.py +0 -0
  574. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_aria_mcp_server.py +0 -0
  575. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_aria_sdk.py +0 -0
  576. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_artifact_publishing.py +0 -0
  577. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_artifacts_and_reports.py +0 -0
  578. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_ashare_prediction_cmds.py +0 -0
  579. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_background_processes.py +0 -0
  580. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_backtest_cmds.py +0 -0
  581. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_backtest_engine.py +0 -0
  582. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_backtest_report.py +0 -0
  583. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_backtest_runs_what_it_names.py +0 -0
  584. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_baseline.py +0 -0
  585. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_binary_bundles_runtime_imports.py +0 -0
  586. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_broken_akshare_is_optional.py +0 -0
  587. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_broker_automation.py +0 -0
  588. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_broker_chat_confirm_gate.py +0 -0
  589. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_broker_planning.py +0 -0
  590. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_broker_safety.py +0 -0
  591. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_broker_tools.py +0 -0
  592. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_budget.py +0 -0
  593. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_business_workflow_cmds.py +0 -0
  594. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_callback_provider_cleanup.py +0 -0
  595. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_canva_client.py +0 -0
  596. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_canvas_cmds.py +0 -0
  597. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_card_approvals.py +0 -0
  598. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_change_contract.py +0 -0
  599. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_channel_intake.py +0 -0
  600. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_channels.py +0 -0
  601. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_chart_handlers.py +0 -0
  602. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_chat_bots_fail_closed.py +0 -0
  603. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_chat_routing.py +0 -0
  604. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_checkpoints_since.py +0 -0
  605. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_ci_security_workflow.py +0 -0
  606. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_cli_app_split.py +0 -0
  607. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_cli_bootstrap.py +0 -0
  608. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_cli_config_store.py +0 -0
  609. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_cli_lifecycle_hooks.py +0 -0
  610. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_cli_runtime_consumer.py +0 -0
  611. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_cli_tool_executor_module.py +0 -0
  612. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_cli_updater.py +0 -0
  613. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_client_isolation_guard.py +0 -0
  614. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_cloud_memory.py +0 -0
  615. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_code_audit_tools.py +0 -0
  616. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_code_review_agent.py +0 -0
  617. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_codegen_output.py +0 -0
  618. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_coder_tester_self_healing.py +0 -0
  619. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_coder_tool_safety.py +0 -0
  620. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_collaboration.py +0 -0
  621. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_command_loggers.py +0 -0
  622. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_command_safety.py +0 -0
  623. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_compare_strategies.py +0 -0
  624. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_completions_builder.py +0 -0
  625. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_config_paths.py +0 -0
  626. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_configured_provider.py +0 -0
  627. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_container_entrypoint.py +0 -0
  628. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_container_entrypoints.py +0 -0
  629. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_context_checkpoints.py +0 -0
  630. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_context_references.py +0 -0
  631. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_context_service.py +0 -0
  632. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_conversation_core.py +0 -0
  633. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_conversation_policy.py +0 -0
  634. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_crash_report.py +0 -0
  635. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_credential_file_permissions.py +0 -0
  636. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_custom_providers.py +0 -0
  637. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_daemon_gateway_config.py +0 -0
  638. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_dashboard_generator.py +0 -0
  639. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_data_service.py +0 -0
  640. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_data_service_imports.py +0 -0
  641. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_data_without_model.py +0 -0
  642. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_datasource_routing.py +0 -0
  643. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_deep_analysis.py +0 -0
  644. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_degrades_without_quant_engine.py +0 -0
  645. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_delivery_report.py +0 -0
  646. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_dispatcher_pins_match_the_release.py +0 -0
  647. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_doctor.py +0 -0
  648. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_doctor_describes_the_current_install.py +0 -0
  649. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_doctor_npm_scope.py +0 -0
  650. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_doctor_sandbox.py +0 -0
  651. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_edit_and_command_safety.py +0 -0
  652. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_engine_boundary.py +0 -0
  653. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_english_output_group.py +0 -0
  654. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_enterprise_tool_honesty.py +0 -0
  655. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_env_switch_docs.py +0 -0
  656. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_eval_behavior.py +0 -0
  657. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_eval_hard_suite.py +0 -0
  658. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_eval_holdout.py +0 -0
  659. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_eval_summary.py +0 -0
  660. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_eval_task_bank.py +0 -0
  661. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_eval_trajectories.py +0 -0
  662. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_evals_harness.py +0 -0
  663. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_event_import_roots.py +0 -0
  664. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_exec_events.py +0 -0
  665. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_extended_tools.py +0 -0
  666. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_feishu_swarm_config.py +0 -0
  667. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_file_links.py +0 -0
  668. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_finalize_release.py +0 -0
  669. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_finance_renderers.py +0 -0
  670. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_finance_service_catalog.py +0 -0
  671. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_first_run_output.py +0 -0
  672. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_first_run_works.py +0 -0
  673. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_football_agent.py +0 -0
  674. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_football_prediction_output.py +0 -0
  675. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_frozen_module_aliases.py +0 -0
  676. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_gemini_retirement.py +0 -0
  677. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_google_cloud_models.py +0 -0
  678. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_google_cloud_routing.py +0 -0
  679. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_google_login.py +0 -0
  680. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_google_search_provider.py +0 -0
  681. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_headless_command_approval.py +0 -0
  682. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_headless_is_agentic.py +0 -0
  683. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_honest_surfaces.py +0 -0
  684. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_image_gen_tools.py +0 -0
  685. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_image_inputs.py +0 -0
  686. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_import_aliasing.py +0 -0
  687. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_import_graph_budget.py +0 -0
  688. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_intent_router.py +0 -0
  689. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_intent_signals.py +0 -0
  690. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_kling_video_client.py +0 -0
  691. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_lazy_rebind.py +0 -0
  692. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_legacy_module_imports.py +0 -0
  693. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_license_consistency.py +0 -0
  694. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_licensing.py +0 -0
  695. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_linux_sandbox_integration.py +0 -0
  696. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_local_image_provider.py +0 -0
  697. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_local_workspace_execution.py +0 -0
  698. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_logistics_3pl.py +0 -0
  699. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_logistics_and_finance_agents.py +0 -0
  700. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_lsp.py +0 -0
  701. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_markdown_pdf.py +0 -0
  702. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_market_answers_in_english.py +0 -0
  703. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_market_data_client.py +0 -0
  704. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_market_history_inheritance.py +0 -0
  705. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_market_history_tool.py +0 -0
  706. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_market_hours.py +0 -0
  707. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_market_questions_on_backend.py +0 -0
  708. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_market_symbol_extraction.py +0 -0
  709. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_market_universe.py +0 -0
  710. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_mcp_circuit.py +0 -0
  711. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_mcp_client.py +0 -0
  712. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_mentions.py +0 -0
  713. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_model_capability_registry.py +0 -0
  714. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_model_choice_is_the_users.py +0 -0
  715. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_model_probe.py +0 -0
  716. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_model_selection_state.py +0 -0
  717. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_narrow_chinese_output.py +0 -0
  718. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_native_app.py +0 -0
  719. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_native_binary_entrypoints.py +0 -0
  720. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_native_branding.py +0 -0
  721. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_native_bridge.py +0 -0
  722. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_native_checkpoints.py +0 -0
  723. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_native_entry.py +0 -0
  724. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_native_eval_trajectories.py +0 -0
  725. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_native_go_acceptance.py +0 -0
  726. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_native_go_app.py +0 -0
  727. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_native_go_bridge.py +0 -0
  728. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_native_go_contract.py +0 -0
  729. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_native_go_delivery.py +0 -0
  730. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_native_go_providers.py +0 -0
  731. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_native_go_review.py +0 -0
  732. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_native_go_risk.py +0 -0
  733. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_native_go_stream.py +0 -0
  734. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_native_index.py +0 -0
  735. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_native_installer.py +0 -0
  736. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_native_runtime_domain.py +0 -0
  737. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_native_training_compare.py +0 -0
  738. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_native_training_dataset.py +0 -0
  739. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_natural_language_routing.py +0 -0
  740. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_new_modules.py +0 -0
  741. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_no_hardcoded_developer_paths.py +0 -0
  742. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_no_tools_route.py +0 -0
  743. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_no_uncommitted_imports.py +0 -0
  744. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_numeric_listings.py +0 -0
  745. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_ollama_stream_imports.py +0 -0
  746. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_ollama_stream_tools.py +0 -0
  747. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_openai_image_client.py +0 -0
  748. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_operations_suite.py +0 -0
  749. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_os_sandbox.py +0 -0
  750. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_output_discipline_prompt.py +0 -0
  751. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_output_rendering.py +0 -0
  752. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_packages_facade.py +0 -0
  753. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_packaging_constraints.py +0 -0
  754. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_packaging_manifest.py +0 -0
  755. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_packs_domains.py +0 -0
  756. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_pdf_report.py +0 -0
  757. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_pick_best_installed_model.py +0 -0
  758. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_plan_mode.py +0 -0
  759. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_plan_schema.py +0 -0
  760. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_plan_without_material.py +0 -0
  761. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_platform_package_assembly.py +0 -0
  762. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_platform_packages.py +0 -0
  763. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_platform_publish.py +0 -0
  764. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_plotly_html_output.py +0 -0
  765. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_portfolio_language.py +0 -0
  766. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_portfolio_ledger.py +0 -0
  767. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_post_turn_context_decision.py +0 -0
  768. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_preflight.py +0 -0
  769. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_preview_server.py +0 -0
  770. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_privacy_feedback.py +0 -0
  771. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_project_aria.py +0 -0
  772. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_project_context_files.py +0 -0
  773. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_project_graph.py +0 -0
  774. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_project_review.py +0 -0
  775. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_project_review_api.py +0 -0
  776. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_prompt_assembly.py +0 -0
  777. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_prompt_dates.py +0 -0
  778. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_prompt_selection.py +0 -0
  779. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_provider_autoconfig.py +0 -0
  780. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_provider_error_classification.py +0 -0
  781. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_provider_error_messages.py +0 -0
  782. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_provider_integration.py +0 -0
  783. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_provider_project_config.py +0 -0
  784. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_provider_registry.py +0 -0
  785. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_public_service_status.py +0 -0
  786. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_quant_engine_namespace.py +0 -0
  787. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_rebind_contract.py +0 -0
  788. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_rebind_namespace_contract.py +0 -0
  789. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_relay_client_credentials.py +0 -0
  790. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_relay_contract.py +0 -0
  791. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_relay_event_verification.py +0 -0
  792. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_relay_reliability.py +0 -0
  793. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_relay_sends_for_clients.py +0 -0
  794. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_relay_store.py +0 -0
  795. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_relay_url.py +0 -0
  796. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_release_badges.py +0 -0
  797. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_release_chain.py +0 -0
  798. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_release_commit_identity.py +0 -0
  799. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_release_download.py +0 -0
  800. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_release_push_is_atomic.py +0 -0
  801. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_release_reaches_the_registries.py +0 -0
  802. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_release_verification_waits.py +0 -0
  803. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_release_workflow_permissions.py +0 -0
  804. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_report_charts.py +0 -0
  805. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_report_generator.py +0 -0
  806. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_report_prompt_language.py +0 -0
  807. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_research_quality.py +0 -0
  808. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_responsive_rendering.py +0 -0
  809. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_review_gate.py +0 -0
  810. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_review_service.py +0 -0
  811. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_risk_approval.py +0 -0
  812. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_risk_assessment.py +0 -0
  813. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_risk_earnings_ops.py +0 -0
  814. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_robot_artwork.py +0 -0
  815. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_root_module_budget.py +0 -0
  816. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_rsi_without_pandas_ta.py +0 -0
  817. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_run_store_redaction.py +0 -0
  818. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_runtime_acceptance.py +0 -0
  819. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_runtime_agent_loop.py +0 -0
  820. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_runtime_approval.py +0 -0
  821. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_runtime_bridge.py +0 -0
  822. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_runtime_bridge_fallback.py +0 -0
  823. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_runtime_checkpoints.py +0 -0
  824. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_runtime_event_identity.py +0 -0
  825. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_runtime_gateway.py +0 -0
  826. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_runtime_repo_map.py +0 -0
  827. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_runtime_run_store.py +0 -0
  828. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_runtime_tool_executor.py +0 -0
  829. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_runtime_worktrees.py +0 -0
  830. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_runway_video_client.py +0 -0
  831. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_rust_cli.py +0 -0
  832. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_rust_state.py +0 -0
  833. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_rust_stream.py +0 -0
  834. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_safety_permissions.py +0 -0
  835. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_safety_service.py +0 -0
  836. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_safety_service_adoption.py +0 -0
  837. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_semantic_diff.py +0 -0
  838. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_service_diagnostics_security.py +0 -0
  839. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_session_search.py +0 -0
  840. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_settings_service.py +0 -0
  841. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_shell_commands_as_written.py +0 -0
  842. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_shipper_digest.py +0 -0
  843. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_single_import_root.py +0 -0
  844. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_skill_agent_binding.py +0 -0
  845. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_skill_catalog.py +0 -0
  846. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_skill_loader.py +0 -0
  847. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_slash_popup.py +0 -0
  848. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_spreadsheet_tools.py +0 -0
  849. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_sse_http_roundtrip.py +0 -0
  850. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_sse_stream_contract.py +0 -0
  851. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_startup_dashboard.py +0 -0
  852. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_startup_keeps_cloud_model.py +0 -0
  853. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_startup_latency.py +0 -0
  854. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_status_language.py +0 -0
  855. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_streaming_pipeline.py +0 -0
  856. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_stripe_agent.py +0 -0
  857. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_subagent.py +0 -0
  858. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_subagent_workspace.py +0 -0
  859. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_supervisor_routing.py +0 -0
  860. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_symbol_edit.py +0 -0
  861. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_system_prompts.py +0 -0
  862. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_system_tools_output.py +0 -0
  863. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_task_isolation_turn.py +0 -0
  864. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_task_orchestrator.py +0 -0
  865. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_task_restore_startup.py +0 -0
  866. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_task_worktree.py +0 -0
  867. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_team_analysts.py +0 -0
  868. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_team_synthesis.py +0 -0
  869. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_terminal_mixins.py +0 -0
  870. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_terminal_snapshots.py +0 -0
  871. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_tls_trust_store.py +0 -0
  872. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_tool_policy.py +0 -0
  873. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_tool_rounds_on_openai_apis.py +0 -0
  874. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_tool_scope.py +0 -0
  875. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_tool_step_output.py +0 -0
  876. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_trading_service.py +0 -0
  877. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_tradingview_bridge.py +0 -0
  878. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_training_pipeline.py +0 -0
  879. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_transactions.py +0 -0
  880. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_transactions_turn.py +0 -0
  881. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_turn_planning.py +0 -0
  882. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_ui_completer_references.py +0 -0
  883. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_ui_console_theme.py +0 -0
  884. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_ui_input_box.py +0 -0
  885. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_ui_language_and_model.py +0 -0
  886. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_ui_robot_banner.py +0 -0
  887. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_update_health_routes.py +0 -0
  888. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_verification_hint.py +0 -0
  889. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_verification_policy.py +0 -0
  890. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_verification_runner_selection.py +0 -0
  891. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_version_consistency.py +0 -0
  892. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_version_counter.py +0 -0
  893. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_vertex_busy_retry.py +0 -0
  894. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_vertex_empty_rounds.py +0 -0
  895. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_vertex_models.py +0 -0
  896. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_vertex_project.py +0 -0
  897. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_vertexai_tool_history.py +0 -0
  898. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_video_analysis.py +0 -0
  899. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_video_director.py +0 -0
  900. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_video_editor.py +0 -0
  901. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_video_engines.py +0 -0
  902. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_video_multi_agent.py +0 -0
  903. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_video_session.py +0 -0
  904. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_vscode_mcp.py +0 -0
  905. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_warehouse_agents.py +0 -0
  906. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_warehouse_cli_registration.py +0 -0
  907. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_warehouse_erp_client.py +0 -0
  908. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_warehouse_workflow.py +0 -0
  909. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_wheel_is_installable.py +0 -0
  910. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_workflows.py +0 -0
  911. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_workspace_changes.py +0 -0
  912. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_workspace_context.py +0 -0
  913. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_workspace_files.py +0 -0
  914. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_workspace_scope.py +0 -0
  915. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_workspace_service.py +0 -0
  916. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_workspace_verify.py +0 -0
  917. {aria_code-0.155.0 → aria_code-0.156.0}/tests/test_wrapped_indent.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aria-code
3
- Version: 0.155.0
3
+ Version: 0.156.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
@@ -172,7 +172,7 @@ Numbers you can check, client data kept apart, actions a person approves.</p>
172
172
  <p align="center">
173
173
  <a href="https://www.npmjs.com/package/@artheras/aria-code"><img src="https://img.shields.io/npm/v/@artheras/aria-code/latest?style=flat-square&logo=npm&label=npm" alt="npm version"></a>
174
174
  <!-- Release automation pins PyPI: the default endpoint still selects legacy 4.x. -->
175
- <a href="https://pypi.org/project/aria-code/0.155.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.155.0%2Fjson&amp;query=%24.info.version&amp;prefix=v&amp;style=flat-square&amp;logo=pypi&amp;label=PyPI&amp;color=blue&amp;cacheSeconds=300" alt="PyPI version"></a>
175
+ <a href="https://pypi.org/project/aria-code/0.156.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.156.0%2Fjson&amp;query=%24.info.version&amp;prefix=v&amp;style=flat-square&amp;logo=pypi&amp;label=PyPI&amp;color=blue&amp;cacheSeconds=300" alt="PyPI version"></a>
176
176
  <a href="https://github.com/artheras/aria-code/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/artheras/aria-code/ci.yml?branch=main&style=flat-square&logo=githubactions&label=CI" alt="CI status"></a>
177
177
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-64748b?style=flat-square" alt="Apache License 2.0"></a>
178
178
  </p>
@@ -15,7 +15,7 @@ Numbers you can check, client data kept apart, actions a person approves.</p>
15
15
  <p align="center">
16
16
  <a href="https://www.npmjs.com/package/@artheras/aria-code"><img src="https://img.shields.io/npm/v/@artheras/aria-code/latest?style=flat-square&logo=npm&label=npm" alt="npm version"></a>
17
17
  <!-- Release automation pins PyPI: the default endpoint still selects legacy 4.x. -->
18
- <a href="https://pypi.org/project/aria-code/0.155.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.155.0%2Fjson&amp;query=%24.info.version&amp;prefix=v&amp;style=flat-square&amp;logo=pypi&amp;label=PyPI&amp;color=blue&amp;cacheSeconds=300" alt="PyPI version"></a>
18
+ <a href="https://pypi.org/project/aria-code/0.156.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.156.0%2Fjson&amp;query=%24.info.version&amp;prefix=v&amp;style=flat-square&amp;logo=pypi&amp;label=PyPI&amp;color=blue&amp;cacheSeconds=300" alt="PyPI version"></a>
19
19
  <a href="https://github.com/artheras/aria-code/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/artheras/aria-code/ci.yml?branch=main&style=flat-square&logo=githubactions&label=CI" alt="CI status"></a>
20
20
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-64748b?style=flat-square" alt="Apache License 2.0"></a>
21
21
  </p>
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "aria-code"
7
- version = "0.155.0"
7
+ version = "0.156.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.155.0"
20
+ __version__ = "0.156.0"
@@ -182,9 +182,37 @@ logger = logging.getLogger(__name__)
182
182
  class ModelCommandsMixin:
183
183
  """Mixin: Model/config commands: model, apikey, providers, cloud, config, tools, skills."""
184
184
 
185
+ def _listed_model_ids(self) -> list:
186
+ """The ids behind the numbers /models prints, in the order it prints them.
187
+
188
+ The number is the most prominent thing on each row, so it has to mean
189
+ something; the printer and this must therefore read the same order
190
+ from the same place. Community models are keyed by name, which is
191
+ their id.
192
+ """
193
+ ids = [m["id"] for m in _get_MODELS().values()]
194
+ for name in getattr(self, "_last_listed_community", []) or []:
195
+ if name not in ids:
196
+ ids.append(name)
197
+ return ids
198
+
185
199
  async def cmd_model(self, args: str):
186
200
  name = args.strip()
187
201
 
202
+ # /models prints a numbered list, so a number is the obvious thing to
203
+ # type back. It used to be taken as a model name and matched nothing,
204
+ # which left the numbers on screen decorative.
205
+ if name.isdigit():
206
+ listed = self._listed_model_ids()
207
+ index = int(name)
208
+ if 1 <= index <= len(listed):
209
+ name = listed[index - 1]
210
+ else:
211
+ msg = ui_text(self, f"没有第 {index} 个模型;用 /models 查看当前列表。",
212
+ f"There is no model {index}; run /models for the current list.")
213
+ self.context.console.print(f"[yellow]{msg}[/yellow]") if self.context.has_rich else print(msg)
214
+ return
215
+
188
216
  # A model Google has retired would fail on the next request; switch
189
217
  # to its replacement and say so (model_retirement.py).
190
218
  from aria_code.apps.cli.model_retirement import retired_replacement
@@ -429,6 +457,8 @@ class ModelCommandsMixin:
429
457
  # Non-interactive (-p mode): show static numbered list then return.
430
458
  # The arrow picker cannot run without a TTY.
431
459
  community_list = [cm for cm in rich_models if cm["name"] not in aria_ids]
460
+ # What /model <number> will count through, recorded as it is printed.
461
+ self._last_listed_community = [cm["name"] for cm in community_list]
432
462
  for key, m in _get_MODELS().items():
433
463
  mid = m["id"]
434
464
  is_cur = mid == current_id
@@ -450,7 +480,8 @@ class ModelCommandsMixin:
450
480
  self.context.console.print(line) if self.context.has_rich else print(line)
451
481
  idx_counter += 1
452
482
  self.context.console.print() if self.context.has_rich else print()
453
- self.context.console.print(" [dim]Use /model <id> to switch. E.g. /model deepseek/deepseek-chat[/dim]") if self.context.has_rich else print(" Use /model <id> to switch.")
483
+ hint = "Use /model <number> from this list, or /model <id>. E.g. /model 1 or /model deepseek/deepseek-chat"
484
+ self.context.console.print(f" [dim]{hint}[/dim]") if self.context.has_rich else print(f" {hint}")
454
485
  return
455
486
 
456
487
  # ── Build compact options for _arrow_select ────────────────────────
@@ -0,0 +1,134 @@
1
+ """Financial-research grounding policy shared by Aria adapters."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import re
6
+ from collections.abc import Iterable, Mapping
7
+
8
+
9
+ _MARKET_IDENTIFIER = re.compile(
10
+ r"\b[A-Z]{1,5}(?:\.[A-Z]{1,4})?\b|\b\d{6}(?:\.(?:SH|SZ|SS|HK))?\b"
11
+ )
12
+ # Words that name a financial subject on their own. Everyday words used to be
13
+ # in this list too — market, share, option, volume, price, holding, fund, and
14
+ # 市场, 组合, 加密 — so "analyze the performance of the share button", "how is
15
+ # option parsing doing", "分析一下这个项目的市场定位" and "分析当前加密算法的风险"
16
+ # (加密 alone is encryption) were all gated as market questions, and refused
17
+ # after the turn had already done its real work, because no market-data tool
18
+ # had run. Only terms that mean finance wherever they appear belong here.
19
+ _FINANCIAL_SUBJECTS = (
20
+ "stock", "equity", "equities", "portfolio", "crypto", "bitcoin", "forex",
21
+ "etf", "dividend", "earnings", "ticker", "share price", "stock market",
22
+ "market cap", "trading volume", "bond yield", "mutual fund", "index fund",
23
+ "hedge fund", "options chain", "call option", "put option", "price target",
24
+ "股票", "股价", "股市", "大盘", "a股", "美股", "港股", "行情", "持仓", "基金",
25
+ "期权", "债券", "外汇", "加密货币", "数字货币", "币价", "成交量", "市值",
26
+ "财报", "基本面", "涨跌", "收盘价", "开盘价", "目标价",
27
+ )
28
+
29
+ # Words that are financial only some of the time: "how is the market doing
30
+ # today" is a market question, "这个项目的市场定位" is not. They count when the
31
+ # message asks about now and says nothing that places it in the user's own
32
+ # product or code.
33
+ _AMBIGUOUS_SUBJECTS = ("market", "price", "valuation", "市场", "价格", "估值")
34
+ _TIME_INTENTS = (
35
+ "today", "current", "latest", "this week", "right now", "how's", "how is",
36
+ "doing", "今天", "当前", "最新", "本周", "这周", "近期", "现在", "走势", "怎么样",
37
+ )
38
+ _WORKSPACE_CONTEXT = (
39
+ "project", "product", "code", "app", "function", "button", "feature",
40
+ "repo", "file", "api", "cli", "page", "plan", "pricing", "subscription",
41
+ "competitor", "positioning", "user",
42
+ "项目", "产品", "代码", "函数", "功能", "页面", "应用", "仓库", "文件",
43
+ "定位", "竞品", "用户", "方案", "套餐",
44
+ )
45
+
46
+ _EVIDENCE_INTENTS = (
47
+ "analyze", "analysis", "forecast", "predict", "recommend", "buy", "sell",
48
+ "current", "latest", "today", "trend", "risk", "target", "outlook",
49
+ "this week", "how's", "how is", "doing", "performance",
50
+ "分析", "预测", "推荐", "买入", "卖出", "最新", "当前", "今天", "走势",
51
+ "趋势", "风险", "目标价", "前景", "成交量", "全面分析",
52
+ "本周", "这周", "近期", "怎么样", "表现", "看法", "值得",
53
+ )
54
+ _GROUNDING_TOOL_FRAGMENTS = (
55
+ "market", "quote", "price", "ohlcv", "fundamental", "filing", "news",
56
+ "factor", "risk", "backtest", "portfolio", "prediction", "signal",
57
+ "regime", "financial", "earnings", "valuation", "macro", "flow",
58
+ )
59
+
60
+
61
+ def _mentions(lowered: str, terms: Iterable[str]) -> bool:
62
+ """Whether any term occurs — as a word for English, as a substring for CJK.
63
+
64
+ Substrings are wrong for short English words in both directions: "market"
65
+ is inside "marketing" and "equity" inside "inequity", while "app" is inside
66
+ "happening" and "api" inside "capital". Chinese has no spaces to bound a
67
+ word, so it keeps substring matching.
68
+ """
69
+ for term in terms:
70
+ if term.isascii():
71
+ if re.search(rf"(?<![a-z]){re.escape(term)}(?![a-z])", lowered):
72
+ return True
73
+ elif term in lowered:
74
+ return True
75
+ return False
76
+
77
+
78
+ def _names_an_instrument(text: str) -> bool:
79
+ """A ticker, code or company the finance pack recognises, or a named company.
80
+
81
+ This used to be a bare regex, \\b[A-Z]{1,5}\\b: it took "API" and "CSV"
82
+ for tickers ("analyze the API latency trend" was gated as a market
83
+ question and refused without market data), and missed "分析AAPL" — no word
84
+ boundary between 析 and A — and every company named in Chinese.
85
+ """
86
+ try:
87
+ from aria_code.packs import activate_packs, load_builtin_packs
88
+
89
+ load_builtin_packs()
90
+ if any(a.pack == "finance" for a in activate_packs(text)):
91
+ return True
92
+ except Exception:
93
+ if _MARKET_IDENTIFIER.search(text):
94
+ return True
95
+ try:
96
+ from aria_code.apps.cli.intent_signals import _ENTITY_TERMS
97
+ except Exception:
98
+ return False
99
+ lowered = text.lower()
100
+ return any(term in lowered for term in _ENTITY_TERMS)
101
+
102
+
103
+ def requires_financial_evidence(query: str) -> bool:
104
+ """Return whether a request needs current external financial evidence."""
105
+ text = str(query or "").strip()
106
+ if not text:
107
+ return False
108
+ lowered = text.lower()
109
+ if not any(term in lowered for term in _EVIDENCE_INTENTS):
110
+ return False
111
+ if _mentions(lowered, _FINANCIAL_SUBJECTS) or _names_an_instrument(text):
112
+ return True
113
+ return (
114
+ _mentions(lowered, _AMBIGUOUS_SUBJECTS)
115
+ and _mentions(lowered, _TIME_INTENTS)
116
+ and not _mentions(lowered, _WORKSPACE_CONTEXT)
117
+ )
118
+
119
+
120
+ def grounding_tool_names(tool_schemas: Iterable[Mapping]) -> frozenset[str]:
121
+ """Select registered tools whose outputs can ground a financial conclusion."""
122
+ names: set[str] = set()
123
+ for schema in tool_schemas:
124
+ function = schema.get("function") if isinstance(schema, Mapping) else None
125
+ name = str(
126
+ (function or {}).get("name")
127
+ if isinstance(function, Mapping)
128
+ else schema.get("name", "")
129
+ )
130
+ canonical = name.rsplit("__", 1)[-1].lower()
131
+ if name and any(fragment in canonical for fragment in _GROUNDING_TOOL_FRAGMENTS):
132
+ names.add(name)
133
+ return frozenset(names)
134
+
@@ -32,7 +32,19 @@ DEFAULT_MODEL = "google/gemini-3.5-flash"
32
32
 
33
33
 
34
34
  def _config_path() -> Path:
35
- return Path(os.getenv("ARIA_CONFIG_DIR", Path.home() / ".arthera")) / "config.json"
35
+ """Where /login saved the session: the same file, by the same rule.
36
+
37
+ This used to be ~/.arthera/config.json, or ARIA_CONFIG_DIR. /login writes
38
+ through aria_home(), which is ~/.arthera only when that legacy folder
39
+ already exists and ~/.aria-code otherwise, and is overridden by ARIA_HOME.
40
+ So on a new install — the people signing in to reach a model without a
41
+ key — the session was saved in one folder and looked for in another, and
42
+ signing in never gave them a model. Asking aria_home() is what the 38
43
+ files that once hardcoded ~/.arthera were moved over to for this reason.
44
+ """
45
+ from aria_code.packages.aria_core.paths import aria_home
46
+
47
+ return aria_home() / "config.json"
36
48
 
37
49
 
38
50
  def session_token() -> Optional[str]:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aria-code
3
- Version: 0.155.0
3
+ Version: 0.156.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
@@ -172,7 +172,7 @@ Numbers you can check, client data kept apart, actions a person approves.</p>
172
172
  <p align="center">
173
173
  <a href="https://www.npmjs.com/package/@artheras/aria-code"><img src="https://img.shields.io/npm/v/@artheras/aria-code/latest?style=flat-square&logo=npm&label=npm" alt="npm version"></a>
174
174
  <!-- Release automation pins PyPI: the default endpoint still selects legacy 4.x. -->
175
- <a href="https://pypi.org/project/aria-code/0.155.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.155.0%2Fjson&amp;query=%24.info.version&amp;prefix=v&amp;style=flat-square&amp;logo=pypi&amp;label=PyPI&amp;color=blue&amp;cacheSeconds=300" alt="PyPI version"></a>
175
+ <a href="https://pypi.org/project/aria-code/0.156.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.156.0%2Fjson&amp;query=%24.info.version&amp;prefix=v&amp;style=flat-square&amp;logo=pypi&amp;label=PyPI&amp;color=blue&amp;cacheSeconds=300" alt="PyPI version"></a>
176
176
  <a href="https://github.com/artheras/aria-code/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/artheras/aria-code/ci.yml?branch=main&style=flat-square&logo=githubactions&label=CI" alt="CI status"></a>
177
177
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-64748b?style=flat-square" alt="Apache License 2.0"></a>
178
178
  </p>
@@ -706,6 +706,7 @@ tests/test_mcp_client.py
706
706
  tests/test_mentions.py
707
707
  tests/test_model_capability_registry.py
708
708
  tests/test_model_choice_is_the_users.py
709
+ tests/test_model_number_selection.py
709
710
  tests/test_model_probe.py
710
711
  tests/test_model_selection_state.py
711
712
  tests/test_narrow_chinese_output.py
@@ -30,29 +30,52 @@ class SessionTest(unittest.TestCase):
30
30
 
31
31
  def test_the_token_login_stored_is_what_authorises_calls(self):
32
32
  self.write_config({"auth_token": "firebase-token"})
33
- with mock.patch.dict(os.environ, {"ARIA_CONFIG_DIR": str(self.dir)}):
33
+ with mock.patch.dict(os.environ, {"ARIA_HOME": str(self.dir)}):
34
34
  self.assertEqual(gw.session_token(), "firebase-token")
35
35
 
36
36
  def test_signed_out_is_no_token_rather_than_an_empty_one(self):
37
37
  # An empty credential reaches the server and comes back 401, which
38
38
  # tells the user nothing they can act on.
39
39
  self.write_config({"auth_token": None})
40
- with mock.patch.dict(os.environ, {"ARIA_CONFIG_DIR": str(self.dir)}):
40
+ with mock.patch.dict(os.environ, {"ARIA_HOME": str(self.dir)}):
41
41
  self.assertIsNone(gw.session_token())
42
42
  self.assertFalse(gw.ArtheraGatewayProvider.available())
43
43
 
44
44
  def test_a_missing_config_is_not_an_error(self):
45
- with mock.patch.dict(os.environ, {"ARIA_CONFIG_DIR": str(self.dir / "absent")}):
45
+ with mock.patch.dict(os.environ, {"ARIA_HOME": str(self.dir / "absent")}):
46
46
  self.assertIsNone(gw.session_token())
47
47
 
48
48
  def test_a_corrupt_config_is_not_an_error(self):
49
49
  (self.dir / "config.json").write_text("{ not json", encoding="utf-8")
50
- with mock.patch.dict(os.environ, {"ARIA_CONFIG_DIR": str(self.dir)}):
50
+ with mock.patch.dict(os.environ, {"ARIA_HOME": str(self.dir)}):
51
51
  self.assertIsNone(gw.session_token())
52
52
 
53
+ def test_a_new_install_reads_the_session_where_login_wrote_it(self):
54
+ # With no legacy ~/.arthera, /login saves under ~/.aria-code. The
55
+ # provider used to look only in ~/.arthera, so on a new install signing
56
+ # in never gave the user a model.
57
+ home = self.dir / "home"
58
+ (home / ".aria-code").mkdir(parents=True)
59
+ (home / ".aria-code" / "config.json").write_text(
60
+ json.dumps({"auth_token": "fresh-install"}), encoding="utf-8")
61
+ env = {k: v for k, v in os.environ.items() if k != "ARIA_HOME"}
62
+ env["HOME"] = str(home)
63
+ with mock.patch.dict(os.environ, env, clear=True):
64
+ self.assertEqual(gw.session_token(), "fresh-install")
65
+
66
+ def test_an_existing_install_keeps_reading_its_legacy_folder(self):
67
+ home = self.dir / "home"
68
+ (home / ".arthera").mkdir(parents=True)
69
+ (home / ".arthera" / "config.json").write_text(
70
+ json.dumps({"auth_token": "legacy"}), encoding="utf-8")
71
+ env = {k: v for k, v in os.environ.items() if k != "ARIA_HOME"}
72
+ env["HOME"] = str(home)
73
+ with mock.patch.dict(os.environ, env, clear=True):
74
+ self.assertEqual(gw.session_token(), "legacy")
75
+
53
76
  def test_a_signed_in_user_is_available(self):
54
77
  self.write_config({"auth_token": "t"})
55
- with mock.patch.dict(os.environ, {"ARIA_CONFIG_DIR": str(self.dir)}):
78
+ with mock.patch.dict(os.environ, {"ARIA_HOME": str(self.dir)}):
56
79
  self.assertTrue(gw.ArtheraGatewayProvider.available())
57
80
 
58
81
 
@@ -77,13 +100,13 @@ class ProviderTest(unittest.TestCase):
77
100
  Path(self.tmp.name, "config.json").write_text(json.dumps({"auth_token": "t"}), encoding="utf-8")
78
101
 
79
102
  def test_it_builds_itself_from_the_session_with_nothing_supplied(self):
80
- with mock.patch.dict(os.environ, {"ARIA_CONFIG_DIR": self.tmp.name, "ARIA_API_URL": ""}):
103
+ with mock.patch.dict(os.environ, {"ARIA_HOME": self.tmp.name, "ARIA_API_URL": ""}):
81
104
  provider = gw.ArtheraGatewayProvider(ProviderConfig(name="arthera", model=""))
82
105
  self.assertEqual(provider.config.api_key, "t")
83
106
  self.assertEqual(provider.config.base_url, "https://api.arthera.finance/api/v2/llm/v1")
84
107
 
85
108
  def test_an_explicit_base_url_is_respected(self):
86
- with mock.patch.dict(os.environ, {"ARIA_CONFIG_DIR": self.tmp.name}):
109
+ with mock.patch.dict(os.environ, {"ARIA_HOME": self.tmp.name}):
87
110
  provider = gw.ArtheraGatewayProvider(
88
111
  ProviderConfig(name="arthera", model="", base_url="https://elsewhere.example/v1"))
89
112
  self.assertEqual(provider.config.base_url, "https://elsewhere.example/v1")
@@ -0,0 +1,129 @@
1
+ """The numbers /models prints are the numbers /model accepts.
2
+
3
+ Under the Rust frontend the Python worker's stdin is a pipe, so it can never
4
+ read keystrokes and the arrow picker cannot run there — the numbered list is
5
+ the right output, not a fallback to be removed. What was wrong is that the
6
+ list numbered every row with something that did nothing, showed a display
7
+ name you could not type, and then told you to use an id it never printed.
8
+
9
+ So the number has to resolve, and the printer and the resolver have to agree
10
+ about what it counts.
11
+ """
12
+ from __future__ import annotations
13
+
14
+ import unittest
15
+ from unittest import mock
16
+
17
+ from aria_code.apps.cli.commands import model_cmds
18
+
19
+
20
+ class _Console:
21
+ def __init__(self):
22
+ self.lines = []
23
+
24
+ def print(self, text=""):
25
+ self.lines.append(str(text))
26
+
27
+
28
+ class _Context:
29
+ def __init__(self):
30
+ self.console = _Console()
31
+ # True so messages route to the console above rather than stdout.
32
+ self.has_rich = True
33
+
34
+
35
+ class _Mixin(model_cmds.ModelCommandsMixin):
36
+ """The mixin alone, with only what the number path touches."""
37
+
38
+ def __init__(self):
39
+ self.context = _Context()
40
+ self.lang = "en"
41
+
42
+
43
+ ARIA = {
44
+ "a": {"id": "google/gemini-3.5-flash", "name": "Gemini"},
45
+ "b": {"id": "deepseek/deepseek-chat", "name": "DeepSeek"},
46
+ }
47
+
48
+
49
+ class ListedOrderTest(unittest.TestCase):
50
+ def setUp(self):
51
+ self.mixin = _Mixin()
52
+
53
+ def test_the_order_is_the_aria_models_then_the_community_ones(self):
54
+ with mock.patch.object(model_cmds, "_get_MODELS", lambda: ARIA):
55
+ self.mixin._last_listed_community = ["qwen3:8b"]
56
+ self.assertEqual(
57
+ self.mixin._listed_model_ids(),
58
+ ["google/gemini-3.5-flash", "deepseek/deepseek-chat", "qwen3:8b"],
59
+ )
60
+
61
+ def test_a_community_model_already_listed_is_not_counted_twice(self):
62
+ # Two rows for one model would make every number after it wrong.
63
+ with mock.patch.object(model_cmds, "_get_MODELS", lambda: ARIA):
64
+ self.mixin._last_listed_community = ["deepseek/deepseek-chat", "qwen3:8b"]
65
+ self.assertEqual(self.mixin._listed_model_ids().count("deepseek/deepseek-chat"), 1)
66
+
67
+ def test_without_a_listing_it_is_just_the_aria_models(self):
68
+ with mock.patch.object(model_cmds, "_get_MODELS", lambda: ARIA):
69
+ self.assertEqual(len(self.mixin._listed_model_ids()), 2)
70
+
71
+
72
+ class NumberResolvesTest(unittest.IsolatedAsyncioTestCase):
73
+ def setUp(self):
74
+ self.mixin = _Mixin()
75
+ self.mixin._last_listed_community = ["qwen3:8b"]
76
+
77
+ async def resolve(self, typed: str):
78
+ """Run cmd_model far enough to see what the number became."""
79
+ seen = {}
80
+
81
+ async def stop_at_name(_self, args):
82
+ seen["name"] = args
83
+ return None
84
+
85
+ with mock.patch.object(model_cmds, "_get_MODELS", lambda: ARIA), \
86
+ mock.patch.object(model_cmds, "retired_replacement", lambda _n: None, create=True):
87
+ # Everything past resolution is provider plumbing; capture the
88
+ # resolved name by letting the retirement lookup observe it.
89
+ with mock.patch("aria_code.apps.cli.model_retirement.retired_replacement",
90
+ side_effect=lambda n: seen.setdefault("name", n) and None):
91
+ try:
92
+ await self.mixin.cmd_model(typed)
93
+ except Exception:
94
+ pass
95
+ return seen.get("name")
96
+
97
+ async def test_a_number_becomes_the_id_on_that_row(self):
98
+ self.assertEqual(await self.resolve("2"), "deepseek/deepseek-chat")
99
+
100
+ async def test_the_first_row_is_one_not_zero(self):
101
+ self.assertEqual(await self.resolve("1"), "google/gemini-3.5-flash")
102
+
103
+ async def test_a_community_row_resolves_too(self):
104
+ self.assertEqual(await self.resolve("3"), "qwen3:8b")
105
+
106
+ async def test_a_number_past_the_end_says_so_and_changes_nothing(self):
107
+ await self.mixin.cmd_model("99")
108
+ printed = " ".join(self.mixin.context.console.lines)
109
+ self.assertIn("99", printed)
110
+ self.assertIn("/models", printed)
111
+
112
+ async def test_zero_is_out_of_range_rather_than_the_last_row(self):
113
+ # Negative indexing would silently pick something.
114
+ await self.mixin.cmd_model("0")
115
+ self.assertIn("/models", " ".join(self.mixin.context.console.lines))
116
+
117
+
118
+ class HintTest(unittest.TestCase):
119
+ def test_the_hint_offers_what_the_screen_actually_shows(self):
120
+ source = model_cmds.__file__
121
+ with open(source, encoding="utf-8") as handle:
122
+ text = handle.read()
123
+ self.assertIn("Use /model <number> from this list", text)
124
+ # The old hint named only an id the list never printed.
125
+ self.assertNotIn("Use /model <id> to switch. E.g.", text)
126
+
127
+
128
+ if __name__ == "__main__":
129
+ unittest.main()
@@ -0,0 +1,70 @@
1
+ from aria_code.packages.aria_services.research_protocol import (
2
+ grounding_tool_names,
3
+ requires_financial_evidence,
4
+ )
5
+
6
+
7
+ def test_financial_evidence_intent_is_conservative():
8
+ assert requires_financial_evidence("分析苹果股票走势和成交量")
9
+ assert requires_financial_evidence("What is the current AAPL price?")
10
+ assert not requires_financial_evidence("Explain what a Sharpe ratio is")
11
+
12
+
13
+ def test_grounding_tool_names_support_local_and_mcp_schemas():
14
+ schemas = [
15
+ {"name": "get_market_data"},
16
+ {"name": "read_file"},
17
+ {
18
+ "type": "function",
19
+ "function": {"name": "mcp__arthera_quant_engine__run_backtest"},
20
+ },
21
+ ]
22
+
23
+ assert grounding_tool_names(schemas) == frozenset({
24
+ "get_market_data",
25
+ "mcp__arthera_quant_engine__run_backtest",
26
+ })
27
+
28
+
29
+ # ── Ordinary words are not financial subjects ────────────────────────────────
30
+ # The subject list used to hold everyday words — market, share, option, volume,
31
+ # price, holding, fund, 市场, 组合, 加密 — so a question about the user's own
32
+ # product or code was gated as a market question and refused after the turn
33
+ # had done its real work, because no market-data tool had run. A turn that read
34
+ # the project structure and was then refused for 179 seconds is how this
35
+ # surfaced.
36
+
37
+ import pytest # noqa: E402
38
+
39
+
40
+ @pytest.mark.parametrize("question", [
41
+ "分析一下这个项目的市场定位",
42
+ "帮我写一份产品的市场分析报告",
43
+ "analyze the performance of the share button",
44
+ "what is the current volume setting in the player",
45
+ "how is option parsing doing in the CLI",
46
+ "分析当前加密算法的风险", # 加密 alone is encryption
47
+ "分析一下用户组合功能的表现", # 组合 is any combination
48
+ "how is our marketing doing this week", # market is inside marketing
49
+ "analyze the inequity in current data", # equity is inside inequity
50
+ ])
51
+ def test_a_question_about_the_users_own_work_is_not_a_market_question(question):
52
+ assert not requires_financial_evidence(question)
53
+
54
+
55
+ @pytest.mark.parametrize("question", [
56
+ "how is the market doing today",
57
+ "今天市场怎么样",
58
+ "大盘走势",
59
+ "美股今天表现怎么样",
60
+ ])
61
+ def test_a_question_about_the_market_itself_still_needs_evidence(question):
62
+ # Narrowing the list must not open the door the gate exists to close: a
63
+ # conclusion about today's market with no data behind it.
64
+ assert requires_financial_evidence(question)
65
+
66
+
67
+ def test_a_word_inside_a_longer_word_does_not_count_as_context():
68
+ # "app" is inside "happening"; matched as a substring it would veto a real
69
+ # market question as if it were about the user's app.
70
+ assert requires_financial_evidence("what is happening in the market today")
@@ -1,83 +0,0 @@
1
- """Financial-research grounding policy shared by Aria adapters."""
2
-
3
- from __future__ import annotations
4
-
5
- import re
6
- from collections.abc import Iterable, Mapping
7
-
8
-
9
- _MARKET_IDENTIFIER = re.compile(
10
- r"\b[A-Z]{1,5}(?:\.[A-Z]{1,4})?\b|\b\d{6}(?:\.(?:SH|SZ|SS|HK))?\b"
11
- )
12
- _FINANCIAL_SUBJECTS = (
13
- "stock", "share", "equity", "market", "portfolio", "holding", "fund",
14
- "option", "bond", "forex", "crypto", "price", "volume", "valuation",
15
- "股票", "股价", "行情", "市场", "持仓", "组合", "基金", "期权", "债券",
16
- "外汇", "加密", "成交量", "估值", "市值", "财报", "基本面",
17
- )
18
- _EVIDENCE_INTENTS = (
19
- "analyze", "analysis", "forecast", "predict", "recommend", "buy", "sell",
20
- "current", "latest", "today", "trend", "risk", "target", "outlook",
21
- "this week", "how's", "how is", "doing", "performance",
22
- "分析", "预测", "推荐", "买入", "卖出", "最新", "当前", "今天", "走势",
23
- "趋势", "风险", "目标价", "前景", "成交量", "全面分析",
24
- "本周", "这周", "近期", "怎么样", "表现", "看法", "值得",
25
- )
26
- _GROUNDING_TOOL_FRAGMENTS = (
27
- "market", "quote", "price", "ohlcv", "fundamental", "filing", "news",
28
- "factor", "risk", "backtest", "portfolio", "prediction", "signal",
29
- "regime", "financial", "earnings", "valuation", "macro", "flow",
30
- )
31
-
32
-
33
- def _names_an_instrument(text: str) -> bool:
34
- """A ticker, code or company the finance pack recognises, or a named company.
35
-
36
- This used to be a bare regex, \\b[A-Z]{1,5}\\b: it took "API" and "CSV"
37
- for tickers ("analyze the API latency trend" was gated as a market
38
- question and refused without market data), and missed "分析AAPL" — no word
39
- boundary between 析 and A — and every company named in Chinese.
40
- """
41
- try:
42
- from aria_code.packs import activate_packs, load_builtin_packs
43
-
44
- load_builtin_packs()
45
- if any(a.pack == "finance" for a in activate_packs(text)):
46
- return True
47
- except Exception:
48
- if _MARKET_IDENTIFIER.search(text):
49
- return True
50
- try:
51
- from aria_code.apps.cli.intent_signals import _ENTITY_TERMS
52
- except Exception:
53
- return False
54
- lowered = text.lower()
55
- return any(term in lowered for term in _ENTITY_TERMS)
56
-
57
-
58
- def requires_financial_evidence(query: str) -> bool:
59
- """Return whether a request needs current external financial evidence."""
60
- text = str(query or "").strip()
61
- if not text:
62
- return False
63
- lowered = text.lower()
64
- if not any(term in lowered for term in _EVIDENCE_INTENTS):
65
- return False
66
- return any(term in lowered for term in _FINANCIAL_SUBJECTS) or _names_an_instrument(text)
67
-
68
-
69
- def grounding_tool_names(tool_schemas: Iterable[Mapping]) -> frozenset[str]:
70
- """Select registered tools whose outputs can ground a financial conclusion."""
71
- names: set[str] = set()
72
- for schema in tool_schemas:
73
- function = schema.get("function") if isinstance(schema, Mapping) else None
74
- name = str(
75
- (function or {}).get("name")
76
- if isinstance(function, Mapping)
77
- else schema.get("name", "")
78
- )
79
- canonical = name.rsplit("__", 1)[-1].lower()
80
- if name and any(fragment in canonical for fragment in _GROUNDING_TOOL_FRAGMENTS):
81
- names.add(name)
82
- return frozenset(names)
83
-