aria-code 0.102.0__tar.gz → 0.104.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 (784) hide show
  1. {aria_code-0.102.0/src/aria_code.egg-info → aria_code-0.104.0}/PKG-INFO +2 -2
  2. {aria_code-0.102.0 → aria_code-0.104.0}/README.md +1 -1
  3. {aria_code-0.102.0 → aria_code-0.104.0}/pyproject.toml +1 -1
  4. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/_version.py +1 -1
  5. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/model_cmds.py +19 -4
  6. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/prompts/select.py +30 -1
  7. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/providers/base.py +84 -4
  8. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/providers/vertexai_stream.py +5 -1
  9. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/model_capability.py +6 -0
  10. {aria_code-0.102.0 → aria_code-0.104.0/src/aria_code.egg-info}/PKG-INFO +2 -2
  11. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code.egg-info/SOURCES.txt +2 -0
  12. aria_code-0.104.0/tests/test_output_discipline_prompt.py +37 -0
  13. aria_code-0.104.0/tests/test_vertex_models.py +122 -0
  14. {aria_code-0.102.0 → aria_code-0.104.0}/LICENSE +0 -0
  15. {aria_code-0.102.0 → aria_code-0.104.0}/NOTICE +0 -0
  16. {aria_code-0.102.0 → aria_code-0.104.0}/setup.cfg +0 -0
  17. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/__init__.py +0 -0
  18. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/adk_apps/__init__.py +0 -0
  19. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/adk_apps/aria_code_review/__init__.py +0 -0
  20. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/adk_apps/aria_code_review/agent.py +0 -0
  21. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/adk_apps/aria_research/__init__.py +0 -0
  22. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/adk_apps/aria_research/agent.py +0 -0
  23. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/__init__.py +0 -0
  24. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/base.py +0 -0
  25. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/code_review.py +0 -0
  26. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/deep/__init__.py +0 -0
  27. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/deep/calibration_loop.py +0 -0
  28. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/deep/critic.py +0 -0
  29. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/deep/deepen.py +0 -0
  30. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/deep/models.py +0 -0
  31. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/deep/pipeline.py +0 -0
  32. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/deep/quant_fusion.py +0 -0
  33. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/deep/themes.py +0 -0
  34. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/deep/tiers.py +0 -0
  35. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/engineering/__init__.py +0 -0
  36. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/engineering/coder.py +0 -0
  37. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/engineering/tester.py +0 -0
  38. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/__init__.py +0 -0
  39. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/cashflow_burn.py +0 -0
  40. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/catalyst.py +0 -0
  41. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/corporate_finance.py +0 -0
  42. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/debate.py +0 -0
  43. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/earnings.py +0 -0
  44. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/fundamental.py +0 -0
  45. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/macro.py +0 -0
  46. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/news.py +0 -0
  47. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/risk.py +0 -0
  48. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/sector.py +0 -0
  49. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/strategist.py +0 -0
  50. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/stripe_revenue.py +0 -0
  51. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/synthesis.py +0 -0
  52. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/technical.py +0 -0
  53. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/orchestrator.py +0 -0
  54. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/portfolio_agent.py +0 -0
  55. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/realty/__init__.py +0 -0
  56. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/realty/asset_diagnosis.py +0 -0
  57. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/realty/business_match.py +0 -0
  58. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/realty/cashflow_verify.py +0 -0
  59. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/realty/contract_rules.py +0 -0
  60. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/realty/energy_anomaly.py +0 -0
  61. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/realty/exit_settlement.py +0 -0
  62. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/realty/fulfillment_risk.py +0 -0
  63. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/realty/ops_optimize.py +0 -0
  64. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/realty/revenue_share.py +0 -0
  65. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/registry.py +0 -0
  66. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/signal_scheme.py +0 -0
  67. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/sports/__init__.py +0 -0
  68. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/sports/football_agent.py +0 -0
  69. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/supervisor.py +0 -0
  70. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/team.py +0 -0
  71. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/warehouse/__init__.py +0 -0
  72. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/warehouse/contracts.py +0 -0
  73. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/warehouse/dashboard.py +0 -0
  74. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/warehouse/fulfillment_leadtime.py +0 -0
  75. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/warehouse/inbound_exceptions.py +0 -0
  76. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/warehouse/inventory_health.py +0 -0
  77. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/warehouse/local_run.py +0 -0
  78. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/warehouse/local_snapshot.py +0 -0
  79. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/warehouse/logistics_cost.py +0 -0
  80. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/warehouse/logistics_sync.py +0 -0
  81. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/warehouse/workflow.py +0 -0
  82. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/aliyun_data_client.py +0 -0
  83. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/README.md +0 -0
  84. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/__init__.py +0 -0
  85. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/channels/README.md +0 -0
  86. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/channels/__init__.py +0 -0
  87. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/channels/approvals.py +0 -0
  88. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/channels/conversation.py +0 -0
  89. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/channels/digest.py +0 -0
  90. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/channels/intake.py +0 -0
  91. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/channels/registry.py +0 -0
  92. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/channels/tradingview.py +0 -0
  93. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/README.md +0 -0
  94. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/__init__.py +0 -0
  95. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/_optional.py +0 -0
  96. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/bootstrap.py +0 -0
  97. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/broker_render.py +0 -0
  98. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/chat_turn.py +0 -0
  99. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/codegen_paths.py +0 -0
  100. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/__init__.py +0 -0
  101. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/_business_render.py +0 -0
  102. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/_ui.py +0 -0
  103. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/analysis_cmds.py +0 -0
  104. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/ashare_prediction_cmds.py +0 -0
  105. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/auth_cmds.py +0 -0
  106. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/backtest_cmds.py +0 -0
  107. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/broker_cmds.py +0 -0
  108. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/business_workflow_cmds.py +0 -0
  109. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/canvas_cmds.py +0 -0
  110. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/catalog.py +0 -0
  111. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/core_cmds.py +0 -0
  112. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/data_cmds.py +0 -0
  113. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/diagnostic_cmds.py +0 -0
  114. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/diagnostic_ops_cmds.py +0 -0
  115. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/file_cmds.py +0 -0
  116. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/finance_service_cmds.py +0 -0
  117. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/fx_commodity_cmds.py +0 -0
  118. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/market.py +0 -0
  119. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/market_cmds.py +0 -0
  120. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/market_context.py +0 -0
  121. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/market_render.py +0 -0
  122. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/ops_cmds.py +0 -0
  123. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/orchestrator_cmds.py +0 -0
  124. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/pdf_export_cmds.py +0 -0
  125. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/portfolio_cmds.py +0 -0
  126. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/report.py +0 -0
  127. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/scaffold_templates.py +0 -0
  128. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/session_cmds.py +0 -0
  129. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/session_ux_cmds.py +0 -0
  130. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/team.py +0 -0
  131. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/team_render.py +0 -0
  132. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/ui_cmds.py +0 -0
  133. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/warehouse_cmds.py +0 -0
  134. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/workflow_cmds.py +0 -0
  135. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/workspace_cmds.py +0 -0
  136. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/config_paths.py +0 -0
  137. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/config_store.py +0 -0
  138. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/constants.py +0 -0
  139. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/context.py +0 -0
  140. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/deterministic.py +0 -0
  141. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/direct.py +0 -0
  142. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/earnings_view.py +0 -0
  143. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/exec_events.py +0 -0
  144. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/finance_service_catalog.py +0 -0
  145. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/football_reports.py +0 -0
  146. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/github_app_auth.py +0 -0
  147. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/google_login.py +0 -0
  148. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/handlers/__init__.py +0 -0
  149. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/handlers/broker_handlers.py +0 -0
  150. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/handlers/chart_handlers.py +0 -0
  151. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/handlers/market_handlers.py +0 -0
  152. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/handlers/realty_handlers.py +0 -0
  153. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/handlers/sports_handlers.py +0 -0
  154. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/handlers/strategy_advice.py +0 -0
  155. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/headless.py +0 -0
  156. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/helpers.py +0 -0
  157. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/hooks.py +0 -0
  158. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/i18n.py +0 -0
  159. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/intent.py +0 -0
  160. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/intent_router.py +0 -0
  161. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/intent_signals.py +0 -0
  162. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/lifecycle_hooks.py +0 -0
  163. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/local_tool_schemas.py +0 -0
  164. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/main.py +0 -0
  165. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/market_hours.py +0 -0
  166. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/market_metadata.py +0 -0
  167. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/market_universe.py +0 -0
  168. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/message_processing.py +0 -0
  169. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/mixin_binding.py +0 -0
  170. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/model_catalog.py +0 -0
  171. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/pdf_report.py +0 -0
  172. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/plan_mode.py +0 -0
  173. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/plotly_html.py +0 -0
  174. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/prediction_feedback.py +0 -0
  175. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/preflight.py +0 -0
  176. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/project_aria.py +0 -0
  177. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/prompt_assembly.py +0 -0
  178. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/prompts/__init__.py +0 -0
  179. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/prompts/coding.py +0 -0
  180. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/prompts/system_prompts.py +0 -0
  181. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/prompts/ui.py +0 -0
  182. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/provider_endpoints.py +0 -0
  183. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/provider_keys.py +0 -0
  184. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/providers/__init__.py +0 -0
  185. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/providers/chat_routing.py +0 -0
  186. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/providers/collaboration.py +0 -0
  187. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/providers/llm/__init__.py +0 -0
  188. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/providers/llm/offline_responses.py +0 -0
  189. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/providers/llm/ollama_stream.py +0 -0
  190. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/providers/llm/response_cache.py +0 -0
  191. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/providers/llm/sse_stream.py +0 -0
  192. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/providers/runtime_bridge.py +0 -0
  193. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/review_runner.py +0 -0
  194. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/runtime_consumer.py +0 -0
  195. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/sandbox.py +0 -0
  196. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/session_export.py +0 -0
  197. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/session_jsonl.py +0 -0
  198. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/session_store.py +0 -0
  199. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/skills_catalog.py +0 -0
  200. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/terminal_chrome.py +0 -0
  201. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/todo_tracker.py +0 -0
  202. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/tool_executor.py +0 -0
  203. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/tool_registry.py +0 -0
  204. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/tool_scope.py +0 -0
  205. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/tools/__init__.py +0 -0
  206. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/tools/context.py +0 -0
  207. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/tools/file_tools.py +0 -0
  208. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/tools/market_tools.py +0 -0
  209. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/tools/notebook_tools.py +0 -0
  210. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/tools/system_tools.py +0 -0
  211. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/tools/write_tools.py +0 -0
  212. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/tradingview_bridge.py +0 -0
  213. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/turn_planning.py +0 -0
  214. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/update_check.py +0 -0
  215. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/updater.py +0 -0
  216. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/utils/__init__.py +0 -0
  217. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/utils/market_detect.py +0 -0
  218. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/workspace_route.py +0 -0
  219. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/daemon/README.md +0 -0
  220. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/vscode/README.md +0 -0
  221. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/vscode/package.json +0 -0
  222. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/aria_cli.py +0 -0
  223. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/aria_daemon.py +0 -0
  224. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/aria_feishu_bot.py +0 -0
  225. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/aria_mcp_server.py +0 -0
  226. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/aria_relay_client.py +0 -0
  227. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/aria_relay_server.py +0 -0
  228. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/aria_telegram_bot.py +0 -0
  229. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ariarc.py +0 -0
  230. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/artifacts.py +0 -0
  231. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/backtest_engine.py +0 -0
  232. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/backtest_report.py +0 -0
  233. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/__init__.py +0 -0
  234. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/automation.py +0 -0
  235. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/base.py +0 -0
  236. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/capabilities.py +0 -0
  237. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/cn/__init__.py +0 -0
  238. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/cn/easytrader_broker.py +0 -0
  239. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/cn/futu_broker.py +0 -0
  240. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/cn/longbridge_broker.py +0 -0
  241. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/cn/tiger_broker.py +0 -0
  242. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/cn/xtquant_broker.py +0 -0
  243. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/config.py +0 -0
  244. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/intl/__init__.py +0 -0
  245. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/intl/alpaca_broker.py +0 -0
  246. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/intl/ibkr_broker.py +0 -0
  247. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/intl/trading212_broker.py +0 -0
  248. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/intl/webull_broker.py +0 -0
  249. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/paper_broker.py +0 -0
  250. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/planning.py +0 -0
  251. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/registry.py +0 -0
  252. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/trading.py +0 -0
  253. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/canva_client.py +0 -0
  254. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/change_store.py +0 -0
  255. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/clients/__init__.py +0 -0
  256. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/clients/aliyun_data_client.py +0 -0
  257. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/clients/aria_relay_client.py +0 -0
  258. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/clients/canva_client.py +0 -0
  259. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/clients/figma_client.py +0 -0
  260. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/clients/football_data_client.py +0 -0
  261. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/clients/kling_video_client.py +0 -0
  262. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/clients/market_data_client.py +0 -0
  263. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/clients/openai_image_client.py +0 -0
  264. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/clients/runway_video_client.py +0 -0
  265. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/clients/warehouse_erp_client.py +0 -0
  266. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/cloud_memory.py +0 -0
  267. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/command_safety.py +0 -0
  268. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/computer_use_tools.py +0 -0
  269. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/dashboard_generator.py +0 -0
  270. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/data_analysis_tools.py +0 -0
  271. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/data_cleaner.py +0 -0
  272. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/data_service.py +0 -0
  273. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/datasources/__init__.py +0 -0
  274. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/datasources/base.py +0 -0
  275. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/datasources/router.py +0 -0
  276. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/datasources/sources/__init__.py +0 -0
  277. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/datasources/sources/akshare_source.py +0 -0
  278. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/datasources/sources/alpha_vantage_source.py +0 -0
  279. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/datasources/sources/edgar_source.py +0 -0
  280. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/datasources/sources/finnhub_source.py +0 -0
  281. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/datasources/sources/fred_source.py +0 -0
  282. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/datasources/sources/tushare_source.py +0 -0
  283. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/datasources/sources/web_scraper_source.py +0 -0
  284. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/datasources/sources/world_bank_source.py +0 -0
  285. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/datasources/sources/yfinance_source.py +0 -0
  286. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/demo_player.py +0 -0
  287. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/doctor.py +0 -0
  288. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/domain/__init__.py +0 -0
  289. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/domain/backtest_engine.py +0 -0
  290. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/domain/backtest_report.py +0 -0
  291. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/domain/finance_formulas.py +0 -0
  292. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/domain/portfolio_ledger.py +0 -0
  293. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/domain/strategy_vault.py +0 -0
  294. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/evals/__init__.py +0 -0
  295. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/evals/harness.py +0 -0
  296. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/evals/runner.py +0 -0
  297. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/evals/summary.py +0 -0
  298. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/external_agent_runner.py +0 -0
  299. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/figma_client.py +0 -0
  300. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/file_analysis_tools.py +0 -0
  301. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/finance_formulas.py +0 -0
  302. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/football_data_client.py +0 -0
  303. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/image_gen_tools.py +0 -0
  304. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/intent_classifier.py +0 -0
  305. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/kling_video_client.py +0 -0
  306. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/licensing.py +0 -0
  307. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/local_finance_tools.py +0 -0
  308. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/local_image_provider.py +0 -0
  309. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/local_llm_provider.py +0 -0
  310. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/macro_tools.py +0 -0
  311. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/markdown_pdf.py +0 -0
  312. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/market_data_client.py +0 -0
  313. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/mcp_client.py +0 -0
  314. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/memory_manager.py +0 -0
  315. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/notification_tools.py +0 -0
  316. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/openai_image_client.py +0 -0
  317. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/__init__.py +0 -0
  318. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/adk_bridge/__init__.py +0 -0
  319. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/adk_bridge/code_review_tools.py +0 -0
  320. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/adk_bridge/market_tools.py +0 -0
  321. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_agents/__init__.py +0 -0
  322. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_agents/manifest.py +0 -0
  323. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_core/__init__.py +0 -0
  324. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_core/architecture.py +0 -0
  325. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_core/export.py +0 -0
  326. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_core/manifest.py +0 -0
  327. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_core/paths.py +0 -0
  328. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_core/secure_file.py +0 -0
  329. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_infra/__init__.py +0 -0
  330. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_infra/arthera.py +0 -0
  331. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_infra/doctor.py +0 -0
  332. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_infra/product.py +0 -0
  333. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_mcp/__init__.py +0 -0
  334. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_mcp/bridge.py +0 -0
  335. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_mcp/circuit.py +0 -0
  336. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_mcp/config.py +0 -0
  337. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_mcp/installer.py +0 -0
  338. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_mcp/server.py +0 -0
  339. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_mcp/tools.py +0 -0
  340. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_sdk/__init__.py +0 -0
  341. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_sdk/client.py +0 -0
  342. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_sdk/providers.py +0 -0
  343. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_sdk/streaming.py +0 -0
  344. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_sdk/types.py +0 -0
  345. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_services/__init__.py +0 -0
  346. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_services/cache.py +0 -0
  347. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_services/context.py +0 -0
  348. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_services/context_checkpoints.py +0 -0
  349. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_services/data.py +0 -0
  350. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_services/provider_health.py +0 -0
  351. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_services/references.py +0 -0
  352. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_services/registry.py +0 -0
  353. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_services/research_protocol.py +0 -0
  354. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_services/research_quality.py +0 -0
  355. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_services/settings.py +0 -0
  356. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_services/usage.py +0 -0
  357. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_skills/__init__.py +0 -0
  358. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_skills/catalog.py +0 -0
  359. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_skills/loader.py +0 -0
  360. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_skills/registry.py +0 -0
  361. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_tools/__init__.py +0 -0
  362. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_tools/financial/__init__.py +0 -0
  363. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_tools/financial/_paths.py +0 -0
  364. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_tools/financial/compliance.py +0 -0
  365. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_tools/financial/factors.py +0 -0
  366. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_tools/financial/risk_tools.py +0 -0
  367. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_tools/financial/strategy.py +0 -0
  368. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_tools/registry.py +0 -0
  369. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/__init__.py +0 -0
  370. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/_namespace.py +0 -0
  371. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/backtest/__init__.py +0 -0
  372. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/backtest/core.py +0 -0
  373. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/backtest/engine.py +0 -0
  374. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/portfolio/__init__.py +0 -0
  375. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/portfolio/optimizer.py +0 -0
  376. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/sports/__init__.py +0 -0
  377. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/sports/calibrator.py +0 -0
  378. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/sports/dixon_coles.py +0 -0
  379. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/sports/elo.py +0 -0
  380. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/sports/form.py +0 -0
  381. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/sports/h2h.py +0 -0
  382. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/sports/ml_model.py +0 -0
  383. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/sports/predictor.py +0 -0
  384. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/sports/tracker.py +0 -0
  385. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/stochastic/__init__.py +0 -0
  386. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/stochastic/gbm_enhanced.py +0 -0
  387. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/stochastic/ito_calculus.py +0 -0
  388. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/stochastic/kelly_criterion.py +0 -0
  389. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/stochastic/monte_carlo_advanced.py +0 -0
  390. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/stochastic/options_pricing.py +0 -0
  391. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/stochastic/stochastic_processes.py +0 -0
  392. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packs/__init__.py +0 -0
  393. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packs/base.py +0 -0
  394. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packs/finance/__init__.py +0 -0
  395. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packs/logistics/__init__.py +0 -0
  396. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packs/payments/__init__.py +0 -0
  397. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packs/realty/__init__.py +0 -0
  398. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packs/registry.py +0 -0
  399. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packs/rules.py +0 -0
  400. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/plan_utils.py +0 -0
  401. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/plugin_loader.py +0 -0
  402. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/portfolio_ledger.py +0 -0
  403. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/preview_server.py +0 -0
  404. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/privacy/__init__.py +0 -0
  405. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/privacy/feedback.py +0 -0
  406. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/project_review.py +0 -0
  407. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/project_review_api.py +0 -0
  408. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/project_review_server.py +0 -0
  409. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/project_tools.py +0 -0
  410. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/providers/__init__.py +0 -0
  411. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/providers/llm/__init__.py +0 -0
  412. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/providers/llm/anthropic.py +0 -0
  413. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/providers/llm/autoconfig.py +0 -0
  414. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/providers/llm/base.py +0 -0
  415. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/providers/llm/custom.py +0 -0
  416. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/providers/llm/ollama.py +0 -0
  417. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/providers/llm/openai_compat.py +0 -0
  418. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/providers/llm/registry.py +0 -0
  419. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/providers/local_image_provider.py +0 -0
  420. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/providers/local_llm_provider.py +0 -0
  421. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/providers/tool_messages.py +0 -0
  422. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/realty_data_tools.py +0 -0
  423. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/relay_store.py +0 -0
  424. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/report_exporters.py +0 -0
  425. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/report_generator.py +0 -0
  426. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/review_service.py +0 -0
  427. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/__init__.py +0 -0
  428. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/acceptance.py +0 -0
  429. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/agent_loop.py +0 -0
  430. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/approval.py +0 -0
  431. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/budget.py +0 -0
  432. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/checkpoints.py +0 -0
  433. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/crash_report.py +0 -0
  434. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/events.py +0 -0
  435. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/gateway.py +0 -0
  436. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/lsp.py +0 -0
  437. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/orchestrator.py +0 -0
  438. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/processes.py +0 -0
  439. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/repo_map.py +0 -0
  440. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/run_state.py +0 -0
  441. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/run_store.py +0 -0
  442. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/self_healing.py +0 -0
  443. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/subagent.py +0 -0
  444. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/task_ledger.py +0 -0
  445. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/task_orchestrator.py +0 -0
  446. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/tool_executor.py +0 -0
  447. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/tool_policy.py +0 -0
  448. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/worktrees.py +0 -0
  449. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runway_video_client.py +0 -0
  450. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/safety/__init__.py +0 -0
  451. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/safety/permissions.py +0 -0
  452. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/safety/sandbox.py +0 -0
  453. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/safety/service.py +0 -0
  454. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/setup_wizard.py +0 -0
  455. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/spreadsheet_tools.py +0 -0
  456. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/strategy_vault.py +0 -0
  457. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/__init__.py +0 -0
  458. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/artifact_tools.py +0 -0
  459. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/broker_tools.py +0 -0
  460. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/build_quant_engine.py +0 -0
  461. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/code_audit_tools.py +0 -0
  462. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/computer_use_tools.py +0 -0
  463. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/data_analysis_tools.py +0 -0
  464. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/enterprise_finance_tools.py +0 -0
  465. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/extended_tools.py +0 -0
  466. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/file_analysis_tools.py +0 -0
  467. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/image_gen_tools.py +0 -0
  468. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/local_finance_tools.py +0 -0
  469. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/logistics_carriers.py +0 -0
  470. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/logistics_inventory.py +0 -0
  471. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/logistics_io.py +0 -0
  472. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/logistics_tenancy.py +0 -0
  473. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/logistics_tools.py +0 -0
  474. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/macro_tools.py +0 -0
  475. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/notification_tools.py +0 -0
  476. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/project_tools.py +0 -0
  477. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/realty_data_tools.py +0 -0
  478. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/spreadsheet_tools.py +0 -0
  479. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/stripe_tools.py +0 -0
  480. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/__init__.py +0 -0
  481. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/banner.py +0 -0
  482. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/completer.py +0 -0
  483. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/console.py +0 -0
  484. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/image_render.py +0 -0
  485. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/input_box.py +0 -0
  486. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/mentions.py +0 -0
  487. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/picker.py +0 -0
  488. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/render/__init__.py +0 -0
  489. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/render/finance.py +0 -0
  490. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/render/market.py +0 -0
  491. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/render/output.py +0 -0
  492. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/render/responsive.py +0 -0
  493. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/render/team.py +0 -0
  494. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/robot.py +0 -0
  495. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/startup_dashboard.py +0 -0
  496. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/utils/vscode_uri.py +0 -0
  497. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/video_analysis.py +0 -0
  498. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/video_editor.py +0 -0
  499. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/workspace/__init__.py +0 -0
  500. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/workspace/files.py +0 -0
  501. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/workspace/verify.py +0 -0
  502. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/workspace_changes.py +0 -0
  503. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/workspace_context.py +0 -0
  504. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/workspace_service.py +0 -0
  505. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/workspace_tools.py +0 -0
  506. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code.egg-info/dependency_links.txt +0 -0
  507. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code.egg-info/entry_points.txt +0 -0
  508. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code.egg-info/requires.txt +0 -0
  509. {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code.egg-info/top_level.txt +0 -0
  510. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_adk_market_tools.py +0 -0
  511. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_agent_key_points_language.py +0 -0
  512. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_agent_team_fallback.py +0 -0
  513. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_analyze_file_tool.py +0 -0
  514. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_architecture_ledger_is_true.py +0 -0
  515. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_architecture_report.py +0 -0
  516. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_aria_cli_core.py +0 -0
  517. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_aria_mcp_server.py +0 -0
  518. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_aria_sdk.py +0 -0
  519. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_artifact_publishing.py +0 -0
  520. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_artifacts_and_reports.py +0 -0
  521. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_ashare_prediction_cmds.py +0 -0
  522. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_background_processes.py +0 -0
  523. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_backtest_cmds.py +0 -0
  524. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_backtest_engine.py +0 -0
  525. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_backtest_report.py +0 -0
  526. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_backtest_runs_what_it_names.py +0 -0
  527. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_binary_bundles_runtime_imports.py +0 -0
  528. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_broken_akshare_is_optional.py +0 -0
  529. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_broker_automation.py +0 -0
  530. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_broker_chat_confirm_gate.py +0 -0
  531. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_broker_planning.py +0 -0
  532. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_broker_safety.py +0 -0
  533. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_broker_tools.py +0 -0
  534. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_budget.py +0 -0
  535. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_business_workflow_cmds.py +0 -0
  536. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_canva_client.py +0 -0
  537. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_canvas_cmds.py +0 -0
  538. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_card_approvals.py +0 -0
  539. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_channel_intake.py +0 -0
  540. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_channels.py +0 -0
  541. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_chart_handlers.py +0 -0
  542. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_chat_bots_fail_closed.py +0 -0
  543. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_chat_routing.py +0 -0
  544. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_ci_security_workflow.py +0 -0
  545. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_cli_app_split.py +0 -0
  546. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_cli_bootstrap.py +0 -0
  547. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_cli_config_store.py +0 -0
  548. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_cli_lifecycle_hooks.py +0 -0
  549. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_cli_runtime_consumer.py +0 -0
  550. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_cli_tool_executor_module.py +0 -0
  551. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_cli_updater.py +0 -0
  552. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_cloud_memory.py +0 -0
  553. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_code_audit_tools.py +0 -0
  554. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_code_review_agent.py +0 -0
  555. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_codegen_output.py +0 -0
  556. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_coder_tester_self_healing.py +0 -0
  557. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_coder_tool_safety.py +0 -0
  558. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_collaboration.py +0 -0
  559. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_command_loggers.py +0 -0
  560. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_command_safety.py +0 -0
  561. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_compare_strategies.py +0 -0
  562. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_completions_builder.py +0 -0
  563. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_config_paths.py +0 -0
  564. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_configured_provider.py +0 -0
  565. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_container_entrypoint.py +0 -0
  566. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_container_entrypoints.py +0 -0
  567. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_context_checkpoints.py +0 -0
  568. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_context_references.py +0 -0
  569. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_context_service.py +0 -0
  570. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_conversation_core.py +0 -0
  571. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_crash_report.py +0 -0
  572. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_credential_file_permissions.py +0 -0
  573. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_custom_providers.py +0 -0
  574. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_daemon_gateway_config.py +0 -0
  575. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_dashboard_generator.py +0 -0
  576. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_data_service.py +0 -0
  577. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_data_service_imports.py +0 -0
  578. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_data_without_model.py +0 -0
  579. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_datasource_routing.py +0 -0
  580. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_deep_analysis.py +0 -0
  581. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_degrades_without_quant_engine.py +0 -0
  582. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_dispatcher_pins_match_the_release.py +0 -0
  583. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_doctor.py +0 -0
  584. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_doctor_describes_the_current_install.py +0 -0
  585. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_doctor_npm_scope.py +0 -0
  586. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_edit_and_command_safety.py +0 -0
  587. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_engine_boundary.py +0 -0
  588. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_english_output_group.py +0 -0
  589. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_enterprise_tool_honesty.py +0 -0
  590. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_env_switch_docs.py +0 -0
  591. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_eval_summary.py +0 -0
  592. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_evals_harness.py +0 -0
  593. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_event_import_roots.py +0 -0
  594. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_exec_events.py +0 -0
  595. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_extended_tools.py +0 -0
  596. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_feishu_swarm_config.py +0 -0
  597. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_file_links.py +0 -0
  598. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_finalize_release.py +0 -0
  599. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_finance_renderers.py +0 -0
  600. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_finance_service_catalog.py +0 -0
  601. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_first_run_output.py +0 -0
  602. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_first_run_works.py +0 -0
  603. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_football_agent.py +0 -0
  604. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_football_prediction_output.py +0 -0
  605. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_google_cloud_models.py +0 -0
  606. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_google_cloud_routing.py +0 -0
  607. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_google_login.py +0 -0
  608. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_google_search_provider.py +0 -0
  609. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_headless_command_approval.py +0 -0
  610. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_headless_is_agentic.py +0 -0
  611. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_honest_surfaces.py +0 -0
  612. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_image_gen_tools.py +0 -0
  613. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_image_inputs.py +0 -0
  614. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_import_graph_budget.py +0 -0
  615. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_intent_router.py +0 -0
  616. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_intent_signals.py +0 -0
  617. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_kling_video_client.py +0 -0
  618. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_lazy_rebind.py +0 -0
  619. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_legacy_module_imports.py +0 -0
  620. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_license_consistency.py +0 -0
  621. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_licensing.py +0 -0
  622. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_local_image_provider.py +0 -0
  623. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_logistics_3pl.py +0 -0
  624. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_logistics_and_finance_agents.py +0 -0
  625. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_lsp.py +0 -0
  626. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_markdown_pdf.py +0 -0
  627. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_market_answers_in_english.py +0 -0
  628. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_market_data_client.py +0 -0
  629. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_market_history_inheritance.py +0 -0
  630. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_market_history_tool.py +0 -0
  631. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_market_hours.py +0 -0
  632. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_market_questions_on_backend.py +0 -0
  633. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_market_symbol_extraction.py +0 -0
  634. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_market_universe.py +0 -0
  635. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_mcp_circuit.py +0 -0
  636. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_mcp_client.py +0 -0
  637. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_mentions.py +0 -0
  638. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_model_capability_registry.py +0 -0
  639. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_model_choice_is_the_users.py +0 -0
  640. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_model_selection_state.py +0 -0
  641. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_narrow_chinese_output.py +0 -0
  642. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_native_binary_entrypoints.py +0 -0
  643. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_native_installer.py +0 -0
  644. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_natural_language_routing.py +0 -0
  645. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_new_modules.py +0 -0
  646. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_no_hardcoded_developer_paths.py +0 -0
  647. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_no_tools_route.py +0 -0
  648. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_no_uncommitted_imports.py +0 -0
  649. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_numeric_listings.py +0 -0
  650. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_ollama_stream_imports.py +0 -0
  651. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_ollama_stream_tools.py +0 -0
  652. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_openai_image_client.py +0 -0
  653. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_operations_suite.py +0 -0
  654. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_os_sandbox.py +0 -0
  655. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_output_rendering.py +0 -0
  656. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_packages_facade.py +0 -0
  657. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_packaging_constraints.py +0 -0
  658. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_packaging_manifest.py +0 -0
  659. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_packs_domains.py +0 -0
  660. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_pdf_report.py +0 -0
  661. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_pick_best_installed_model.py +0 -0
  662. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_plan_mode.py +0 -0
  663. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_platform_package_assembly.py +0 -0
  664. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_platform_packages.py +0 -0
  665. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_platform_publish.py +0 -0
  666. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_plotly_html_output.py +0 -0
  667. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_portfolio_language.py +0 -0
  668. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_portfolio_ledger.py +0 -0
  669. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_post_turn_context_decision.py +0 -0
  670. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_preflight.py +0 -0
  671. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_preview_server.py +0 -0
  672. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_privacy_feedback.py +0 -0
  673. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_project_aria.py +0 -0
  674. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_project_context_files.py +0 -0
  675. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_project_review.py +0 -0
  676. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_project_review_api.py +0 -0
  677. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_prompt_assembly.py +0 -0
  678. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_prompt_selection.py +0 -0
  679. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_provider_autoconfig.py +0 -0
  680. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_provider_error_messages.py +0 -0
  681. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_provider_integration.py +0 -0
  682. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_provider_registry.py +0 -0
  683. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_public_service_status.py +0 -0
  684. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_quant_engine_namespace.py +0 -0
  685. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_rebind_contract.py +0 -0
  686. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_rebind_namespace_contract.py +0 -0
  687. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_relay_client_credentials.py +0 -0
  688. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_relay_event_verification.py +0 -0
  689. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_relay_sends_for_clients.py +0 -0
  690. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_relay_store.py +0 -0
  691. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_relay_url.py +0 -0
  692. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_release_chain.py +0 -0
  693. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_release_commit_identity.py +0 -0
  694. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_release_push_is_atomic.py +0 -0
  695. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_release_reaches_the_registries.py +0 -0
  696. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_release_verification_waits.py +0 -0
  697. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_release_workflow_permissions.py +0 -0
  698. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_report_charts.py +0 -0
  699. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_report_generator.py +0 -0
  700. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_report_prompt_language.py +0 -0
  701. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_research_protocol.py +0 -0
  702. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_research_quality.py +0 -0
  703. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_responsive_rendering.py +0 -0
  704. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_review_service.py +0 -0
  705. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_risk_earnings_ops.py +0 -0
  706. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_root_module_budget.py +0 -0
  707. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_rsi_without_pandas_ta.py +0 -0
  708. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_runtime_acceptance.py +0 -0
  709. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_runtime_agent_loop.py +0 -0
  710. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_runtime_approval.py +0 -0
  711. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_runtime_bridge.py +0 -0
  712. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_runtime_bridge_fallback.py +0 -0
  713. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_runtime_checkpoints.py +0 -0
  714. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_runtime_event_identity.py +0 -0
  715. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_runtime_gateway.py +0 -0
  716. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_runtime_repo_map.py +0 -0
  717. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_runtime_run_store.py +0 -0
  718. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_runtime_tool_executor.py +0 -0
  719. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_runtime_worktrees.py +0 -0
  720. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_runway_video_client.py +0 -0
  721. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_safety_permissions.py +0 -0
  722. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_safety_service.py +0 -0
  723. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_safety_service_adoption.py +0 -0
  724. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_service_diagnostics_security.py +0 -0
  725. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_session_search.py +0 -0
  726. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_settings_service.py +0 -0
  727. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_shell_commands_as_written.py +0 -0
  728. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_shipper_digest.py +0 -0
  729. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_single_import_root.py +0 -0
  730. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_skill_agent_binding.py +0 -0
  731. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_skill_catalog.py +0 -0
  732. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_skill_loader.py +0 -0
  733. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_slash_popup.py +0 -0
  734. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_spreadsheet_tools.py +0 -0
  735. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_sse_stream_contract.py +0 -0
  736. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_startup_dashboard.py +0 -0
  737. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_startup_keeps_cloud_model.py +0 -0
  738. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_startup_latency.py +0 -0
  739. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_status_language.py +0 -0
  740. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_streaming_pipeline.py +0 -0
  741. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_stripe_agent.py +0 -0
  742. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_subagent.py +0 -0
  743. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_supervisor_routing.py +0 -0
  744. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_system_prompts.py +0 -0
  745. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_system_tools_output.py +0 -0
  746. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_task_orchestrator.py +0 -0
  747. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_team_analysts.py +0 -0
  748. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_team_synthesis.py +0 -0
  749. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_terminal_mixins.py +0 -0
  750. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_terminal_snapshots.py +0 -0
  751. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_tls_trust_store.py +0 -0
  752. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_tool_policy.py +0 -0
  753. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_tool_rounds_on_openai_apis.py +0 -0
  754. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_tool_scope.py +0 -0
  755. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_tool_step_output.py +0 -0
  756. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_trading_service.py +0 -0
  757. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_tradingview_bridge.py +0 -0
  758. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_turn_planning.py +0 -0
  759. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_ui_completer_references.py +0 -0
  760. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_ui_console_theme.py +0 -0
  761. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_ui_input_box.py +0 -0
  762. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_ui_language_and_model.py +0 -0
  763. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_ui_robot_banner.py +0 -0
  764. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_update_health_routes.py +0 -0
  765. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_verification_hint.py +0 -0
  766. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_verification_policy.py +0 -0
  767. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_version_consistency.py +0 -0
  768. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_version_counter.py +0 -0
  769. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_vertex_empty_rounds.py +0 -0
  770. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_video_analysis.py +0 -0
  771. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_video_editor.py +0 -0
  772. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_vscode_mcp.py +0 -0
  773. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_warehouse_agents.py +0 -0
  774. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_warehouse_cli_registration.py +0 -0
  775. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_warehouse_erp_client.py +0 -0
  776. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_warehouse_workflow.py +0 -0
  777. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_wheel_is_installable.py +0 -0
  778. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_workspace_changes.py +0 -0
  779. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_workspace_context.py +0 -0
  780. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_workspace_files.py +0 -0
  781. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_workspace_scope.py +0 -0
  782. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_workspace_service.py +0 -0
  783. {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_workspace_verify.py +0 -0
  784. {aria_code-0.102.0 → aria_code-0.104.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.102.0
3
+ Version: 0.104.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
@@ -263,7 +263,7 @@ aria-code -p "Fix the failing tests and run them" --format jsonl --allow-tools e
263
263
  | --- | --- |
264
264
  | Local Ollama | An installed and running Ollama model; no cloud account for local inference. |
265
265
  | Direct cloud provider | That provider's API credentials and network access. |
266
- | Direct Google Cloud Vertex AI | `GOOGLE_CLOUD_PROJECT` and either a `gcloud auth login` (Aria uses Vertex AI's OpenAI-compatible endpoint with that login's token) or Application Default Credentials with `aria-code[google]`. `GOOGLE_CLOUD_LOCATION` defaults to `global`. |
266
+ | Direct Google Cloud Vertex AI | `GOOGLE_CLOUD_PROJECT` and either a `gcloud auth login` (Aria uses Vertex AI's OpenAI-compatible endpoint with that login's token) or Application Default Credentials with `aria-code[google]`. `GOOGLE_CLOUD_LOCATION` defaults to `global`. Any model your project can use works without an API key: `/model google/gemini-3.5-flash`, the Gemini 3 previews (served only from `global`), or Gemma and other Model Garden managed models by their id (`/model google/<id>`), which go through Vertex's OpenAI-compatible endpoint. |
267
267
  | Arthera hosted service | Install `aria-code[google]` and sign in through `/login` in the CLI. Arthera account sign-in does not grant Vertex AI credentials to your own machine. |
268
268
 
269
269
  Install extras only for features you use; see [pyproject.toml](pyproject.toml) for the current package options. Local inference can work offline, but live market data, remote integrations, sign-in, and cloud models cannot.
@@ -107,7 +107,7 @@ aria-code -p "Fix the failing tests and run them" --format jsonl --allow-tools e
107
107
  | --- | --- |
108
108
  | Local Ollama | An installed and running Ollama model; no cloud account for local inference. |
109
109
  | Direct cloud provider | That provider's API credentials and network access. |
110
- | Direct Google Cloud Vertex AI | `GOOGLE_CLOUD_PROJECT` and either a `gcloud auth login` (Aria uses Vertex AI's OpenAI-compatible endpoint with that login's token) or Application Default Credentials with `aria-code[google]`. `GOOGLE_CLOUD_LOCATION` defaults to `global`. |
110
+ | Direct Google Cloud Vertex AI | `GOOGLE_CLOUD_PROJECT` and either a `gcloud auth login` (Aria uses Vertex AI's OpenAI-compatible endpoint with that login's token) or Application Default Credentials with `aria-code[google]`. `GOOGLE_CLOUD_LOCATION` defaults to `global`. Any model your project can use works without an API key: `/model google/gemini-3.5-flash`, the Gemini 3 previews (served only from `global`), or Gemma and other Model Garden managed models by their id (`/model google/<id>`), which go through Vertex's OpenAI-compatible endpoint. |
111
111
  | Arthera hosted service | Install `aria-code[google]` and sign in through `/login` in the CLI. Arthera account sign-in does not grant Vertex AI credentials to your own machine. |
112
112
 
113
113
  Install extras only for features you use; see [pyproject.toml](pyproject.toml) for the current package options. Local inference can work offline, but live market data, remote integrations, sign-in, and cloud models cannot.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "aria-code"
7
- version = "0.102.0"
7
+ version = "0.104.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.102.0"
20
+ __version__ = "0.104.0"
@@ -5,6 +5,8 @@ Extracted from aria_cli.py. Methods' __globals__ are rebound to aria_cli's names
5
5
  by _rebind_mixin_globals() called at module load time.
6
6
  """
7
7
  from __future__ import annotations
8
+
9
+ from aria_code.apps.cli.i18n import ui_text
8
10
  from aria_code.packages.aria_core.paths import aria_home
9
11
 
10
12
 
@@ -194,11 +196,24 @@ class ModelCommandsMixin:
194
196
  _mod = _mod.strip()
195
197
  _local_backends = {"ollama", "lmstudio", "vllm", "llamacpp", "jan", "custom"}
196
198
  if _prov not in _local_backends:
197
- # Cloud provider — check API key
199
+ # Cloud provider — check API key. Google models also run on
200
+ # Vertex AI with Google Cloud credentials and no key; this
201
+ # refused every `/model google/…` without a Gemini API key,
202
+ # so a team running on Google Cloud could not pick Gemini 3
203
+ # or Gemma at all.
204
+ from aria_code.apps.cli.providers.base import google_cloud_available
198
205
  _key = _get_provider_key(_prov)
199
- if not _key:
200
- msg = (f"⚠ {_prov} API key 未配置。"
201
- f"运行: /apikey set {_prov} <key>")
206
+ _vertex_ok = _prov in ("google", "gemini", "vertexai") and google_cloud_available()
207
+ if not _key and not _vertex_ok:
208
+ if _prov in ("google", "gemini", "vertexai"):
209
+ msg = ui_text(self,
210
+ f"⚠ 需要 Google Cloud 凭据或 API key:运行 gcloud auth application-default login,"
211
+ f"或 /apikey set {_prov} <key>",
212
+ f"⚠ Needs Google Cloud credentials or an API key: run "
213
+ f"gcloud auth application-default login, or /apikey set {_prov} <key>")
214
+ else:
215
+ msg = (f"⚠ {_prov} API key 未配置。"
216
+ f"运行: /apikey set {_prov} <key>")
202
217
  self.context.console.print(f"[yellow]{msg}[/yellow]") if self.context.has_rich else print(msg)
203
218
  return
204
219
  self.terminal.config["local_provider"] = _prov
@@ -52,6 +52,12 @@ def select_base_prompt(message: str, *, intent: Optional[str] = None) -> str:
52
52
  data by the caller that has it).
53
53
  """
54
54
  resolved = intent or _intent_of(message)
55
+ if resolved == "general" and intent is None and _needs_workspace(message):
56
+ # "Write a stock brief to report_BETA.md from inventory.csv" read as
57
+ # general chat and got the short general prompt, with no tool
58
+ # discipline; in the evals the agent then computed by hand. Work on
59
+ # files in this folder is done the way code is.
60
+ resolved = "coding"
55
61
 
56
62
  if resolved == "coding":
57
63
  from aria_code.apps.cli.prompts.coding import CODING_SYSTEM_PROMPT
@@ -77,6 +83,29 @@ def select_base_prompt(message: str, *, intent: Optional[str] = None) -> str:
77
83
  return _general_prompt()
78
84
 
79
85
 
86
+ def _needs_workspace(message: str) -> bool:
87
+ try:
88
+ from aria_code.apps.cli.workspace_route import needs_workspace
89
+
90
+ return needs_workspace(message or "")
91
+ except Exception:
92
+ return False
93
+
94
+
95
+ # Appended to every turn's prompt, whatever the intent. Both rules come from
96
+ # the evals: asked to write reorder.json or audit.json, the agent reported its
97
+ # results and wrote nothing; asked for a shipper's total stock, it added eight
98
+ # numbers by hand and got 500 for 560.
99
+ OUTPUT_DISCIPLINE = (
100
+ "Output rules:\n"
101
+ "- When the request names a file to write (a report, a JSON result), write it with a tool. "
102
+ "Before you finish, confirm it exists by reading it back or listing the folder. Describing the "
103
+ "result in your reply does not create the file.\n"
104
+ "- Compute totals, counts, averages and other figures from the data with code (run a short "
105
+ "script), not by hand. Every number you report or write must come from a tool's output."
106
+ )
107
+
108
+
80
109
  def _general_prompt() -> str:
81
110
  """What Aria is, for turns that are neither code nor market work.
82
111
 
@@ -120,7 +149,7 @@ def build_turn_system_prompt(
120
149
  if override and override.strip():
121
150
  return override
122
151
 
123
- parts = [select_base_prompt(message, intent=intent)]
152
+ parts = [select_base_prompt(message, intent=intent), OUTPUT_DISCIPLINE]
124
153
  if project_context and project_context.strip():
125
154
  parts.append(project_context.strip())
126
155
 
@@ -336,6 +336,13 @@ def _adc_available() -> bool:
336
336
  return os.path.isfile(os.path.join(folder, "application_default_credentials.json"))
337
337
 
338
338
 
339
+ def google_cloud_available() -> bool:
340
+ """Credentials Vertex AI can use: application-default credentials or a gcloud CLI."""
341
+ import shutil
342
+
343
+ return _adc_available() or bool(shutil.which("gcloud"))
344
+
345
+
339
346
  def _google_api_key(config: dict) -> str:
340
347
  import os
341
348
 
@@ -408,6 +415,30 @@ def google_readiness(config: dict) -> str:
408
415
  return ""
409
416
 
410
417
 
418
+ def is_vertex_open_model(model: str) -> bool:
419
+ """A model Vertex serves through its OpenAI-compatible endpoint, not generateContent.
420
+
421
+ Gemma ("gemma-4-26b-a4b-it-maas", "gemma-3-27b-it") and other Model Garden
422
+ managed models ("…-maas") are open models: the Gemini API does not serve
423
+ them, and the native SDK path 404'd.
424
+ """
425
+ name = str(model or "").lower().split("/")[-1]
426
+ return name.startswith("gemma") or name.endswith("-maas")
427
+
428
+
429
+ def _adc_access_token() -> str:
430
+ """An access token from application-default credentials, or "" if there are none."""
431
+ try:
432
+ import google.auth
433
+ import google.auth.transport.requests
434
+
435
+ credentials, _ = google.auth.default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
436
+ credentials.refresh(google.auth.transport.requests.Request())
437
+ return str(credentials.token or "")
438
+ except Exception:
439
+ return ""
440
+
441
+
411
442
  def vertex_openai_endpoint(config: dict) -> dict:
412
443
  """Vertex AI's OpenAI-compatible endpoint and a token from the gcloud login.
413
444
 
@@ -423,16 +454,21 @@ def vertex_openai_endpoint(config: dict) -> dict:
423
454
  import os
424
455
  import shutil
425
456
 
426
- if not shutil.which("gcloud"):
457
+ # Application-default credentials first (a CI runner signed in with
458
+ # Workload Identity Federation, a service account, `gcloud auth
459
+ # application-default login`), then the gcloud CLI's own login.
460
+ adc_token = _adc_access_token() if _adc_available() else ""
461
+ if not adc_token and not shutil.which("gcloud"):
427
462
  return {}
428
463
  try:
429
- project = (os.getenv("GOOGLE_CLOUD_PROJECT") or str(config.get("gcp_project") or "")
430
- or _gcloud("config", "get-value", "project", timeout=10)).strip()
464
+ project = (os.getenv("GOOGLE_CLOUD_PROJECT") or str(config.get("gcp_project") or "")).strip()
465
+ if not project and shutil.which("gcloud"):
466
+ project = _gcloud("config", "get-value", "project", timeout=10).strip()
431
467
  if not project or project == "(unset)":
432
468
  return {"error": "vertex_needs_project: set GOOGLE_CLOUD_PROJECT, /config set gcp_project=<id>, "
433
469
  "or `gcloud config set project <id>`"}
434
470
  location = (os.getenv("GOOGLE_CLOUD_LOCATION") or str(config.get("gcp_location") or "") or "global").strip()
435
- token = _gcloud("auth", "print-access-token")
471
+ token = adc_token or _gcloud("auth", "print-access-token")
436
472
  except Exception as exc: # timeout, permissions: report, never hang the chat
437
473
  return {"error": f"vertex_gcloud_failed: {type(exc).__name__}"}
438
474
  if not token:
@@ -515,6 +551,45 @@ class ConfiguredProvider:
515
551
  self.config["local_provider"] = self.backend
516
552
  self.system_override = system_override
517
553
 
554
+ async def _stream_vertex_open_model(self, prepared: list, tools: list, cancel_event):
555
+ """Gemma and other managed open models, through Vertex's OpenAI-compatible endpoint."""
556
+ from aria_code.local_llm_provider import LocalLLMProvider
557
+
558
+ vertex = await asyncio.to_thread(vertex_openai_endpoint, self.config)
559
+ if not vertex or vertex.get("error"):
560
+ yield LLMDone(response="", provider="vertexai", success=False,
561
+ error=(vertex or {}).get("error") or
562
+ "vertex_needs_credentials: run `gcloud auth application-default login` "
563
+ "or set GOOGLE_APPLICATION_CREDENTIALS")
564
+ return
565
+ cfg = dict(self.config)
566
+ cfg.update({
567
+ "model": f"google/{self.model}",
568
+ "local_provider": "custom",
569
+ "custom_endpoint": vertex["base_url"],
570
+ "custom_model": f"google/{self.model}",
571
+ "local_api_key": vertex["token"],
572
+ })
573
+ provider = LocalLLMProvider.from_config(cfg)
574
+ async for event in provider.stream(prepared, tools=tools, cancel_event=cancel_event):
575
+ kind = event.get("type")
576
+ if kind == "token":
577
+ yield LLMToken(text=str(event.get("text", "")))
578
+ elif kind == "thinking":
579
+ yield LLMThinking(content=str(event.get("text", "")))
580
+ elif kind == "tool_call":
581
+ yield LLMToolCall(tool=str(event.get("name", "")), params=dict(event.get("arguments") or {}))
582
+ elif kind == "error":
583
+ yield LLMDone(response="", provider="vertexai", success=False,
584
+ error=str(event.get("message") or "provider_error"))
585
+ return
586
+ elif kind == "done":
587
+ yield LLMDone(response=str(event.get("text") or ""), usage=dict(event.get("usage") or {}),
588
+ provider="vertexai", success=True,
589
+ cancelled=str(event.get("stop_reason") or "") == "cancelled")
590
+ return
591
+ yield LLMDone(response="", provider="vertexai", success=False, error="empty_response")
592
+
518
593
  def _messages(self, messages: list) -> list:
519
594
  prepared = [dict(message) for message in messages]
520
595
  if not self.system_override:
@@ -539,6 +614,11 @@ class ConfiguredProvider:
539
614
  native_vertex = self.backend in ("vertexai", "vertex-ai", "google-genai") or (
540
615
  self.backend in ("google", "gemini") and _opt_in(self.config, "use_vertexai")
541
616
  )
617
+ if self.backend in ("google", "gemini", "vertexai", "vertex-ai", "google-genai") \
618
+ and is_vertex_open_model(self.model):
619
+ async for evt in self._stream_vertex_open_model(prepared, tools, cancel_event):
620
+ yield evt
621
+ return
542
622
  if native_vertex and self.backend in ("google", "gemini") and _gcloud_login_only(self.config):
543
623
  # The SDK route accepts only application-default credentials. With
544
624
  # just a `gcloud auth login` it failed outright, so a logged-in
@@ -116,10 +116,14 @@ class VertexAIProvider(LLMProvider):
116
116
 
117
117
  if self._use_vertex():
118
118
  project = os.getenv("GOOGLE_CLOUD_PROJECT") or self.config.get("gcp_project")
119
+ # global, not us-central1: the Gemini 3 previews
120
+ # (gemini-3-flash-preview, gemini-3.1-pro-preview) are served
121
+ # only from the global endpoint and 404 in a region, and the
122
+ # global endpoint serves 2.5 as well.
119
123
  location = (
120
124
  os.getenv("GOOGLE_CLOUD_LOCATION")
121
125
  or self.config.get("gcp_location")
122
- or "us-central1"
126
+ or "global"
123
127
  )
124
128
  kwargs = {"vertexai": True, "location": location}
125
129
  if project:
@@ -202,6 +202,12 @@ _CAPABILITY_TABLE: Dict[str, ModelCapability] = {
202
202
  "gemini-1.5-pro": ModelCapability(tool_calls=True, format="openai_native", context_window=2097152, temperature=0.2, size_class="large", vision=True),
203
203
  "gemini-1.5-flash": ModelCapability(tool_calls=True, format="openai_native", context_window=1048576, temperature=0.2, size_class="medium", vision=True),
204
204
  "gemini": ModelCapability(tool_calls=True, format="openai_native", context_window=1048576, temperature=0.2, size_class="large", vision=True),
205
+ # Gemma served on Vertex AI (Model Garden, managed): "gemma-4-…-maas",
206
+ # "gemma-3-…". These used to match nothing and fell to the default — no
207
+ # tools, a 4K window — so a coding task on Gemma was refused as a
208
+ # tool-less route. Ollama's "gemma3:27b" ids keep their own entries above.
209
+ "gemma-4": ModelCapability(tool_calls=True, format="openai_native", context_window=131072, temperature=0.2, size_class="medium", vision=True, notes="Gemma 4 on Vertex AI"),
210
+ "gemma-3": ModelCapability(tool_calls=True, format="openai_native", context_window=131072, temperature=0.2, size_class="medium", vision=True, notes="Gemma 3 on Vertex AI"),
205
211
  # ── OpenAI (cloud, via providers/llm/openai_compat.py) ────────────────
206
212
  "gpt-5": ModelCapability(tool_calls=True, format="openai_native", context_window=400000, temperature=0.2, size_class="large", vision=True, thinking=True),
207
213
  "gpt-4.1": ModelCapability(tool_calls=True, format="openai_native", context_window=1047576, temperature=0.2, size_class="large", vision=True),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aria-code
3
- Version: 0.102.0
3
+ Version: 0.104.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
@@ -263,7 +263,7 @@ aria-code -p "Fix the failing tests and run them" --format jsonl --allow-tools e
263
263
  | --- | --- |
264
264
  | Local Ollama | An installed and running Ollama model; no cloud account for local inference. |
265
265
  | Direct cloud provider | That provider's API credentials and network access. |
266
- | Direct Google Cloud Vertex AI | `GOOGLE_CLOUD_PROJECT` and either a `gcloud auth login` (Aria uses Vertex AI's OpenAI-compatible endpoint with that login's token) or Application Default Credentials with `aria-code[google]`. `GOOGLE_CLOUD_LOCATION` defaults to `global`. |
266
+ | Direct Google Cloud Vertex AI | `GOOGLE_CLOUD_PROJECT` and either a `gcloud auth login` (Aria uses Vertex AI's OpenAI-compatible endpoint with that login's token) or Application Default Credentials with `aria-code[google]`. `GOOGLE_CLOUD_LOCATION` defaults to `global`. Any model your project can use works without an API key: `/model google/gemini-3.5-flash`, the Gemini 3 previews (served only from `global`), or Gemma and other Model Garden managed models by their id (`/model google/<id>`), which go through Vertex's OpenAI-compatible endpoint. |
267
267
  | Arthera hosted service | Install `aria-code[google]` and sign in through `/login` in the CLI. Arthera account sign-in does not grant Vertex AI credentials to your own machine. |
268
268
 
269
269
  Install extras only for features you use; see [pyproject.toml](pyproject.toml) for the current package options. Local inference can work offline, but live market data, remote integrations, sign-in, and cloud models cannot.
@@ -648,6 +648,7 @@ tests/test_ollama_stream_tools.py
648
648
  tests/test_openai_image_client.py
649
649
  tests/test_operations_suite.py
650
650
  tests/test_os_sandbox.py
651
+ tests/test_output_discipline_prompt.py
651
652
  tests/test_output_rendering.py
652
653
  tests/test_packages_facade.py
653
654
  tests/test_packaging_constraints.py
@@ -763,6 +764,7 @@ tests/test_verification_policy.py
763
764
  tests/test_version_consistency.py
764
765
  tests/test_version_counter.py
765
766
  tests/test_vertex_empty_rounds.py
767
+ tests/test_vertex_models.py
766
768
  tests/test_video_analysis.py
767
769
  tests/test_video_editor.py
768
770
  tests/test_vscode_mcp.py
@@ -0,0 +1,37 @@
1
+ """Every turn is told to write the files it is asked for and to compute numbers with code.
2
+
3
+ In the Vertex evals the agent reported reorder.json's contents without writing
4
+ it, and added up a shipper's stock by hand (500 for 560). Two of those prompts
5
+ read as general chat and got the short general prompt, with no tool discipline.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ from aria_code.apps.cli.prompts.coding import CODING_SYSTEM_PROMPT
11
+ from aria_code.apps.cli.prompts.select import OUTPUT_DISCIPLINE, build_turn_system_prompt, select_base_prompt
12
+
13
+
14
+ def test_every_intent_gets_the_output_rules():
15
+ for message in ("fix the failing test", "AAPL price", "hello there", "what is a reorder point"):
16
+ assert OUTPUT_DISCIPLINE in build_turn_system_prompt(message)
17
+
18
+
19
+ def test_the_rules_say_what_the_evals_needed():
20
+ assert "confirm it exists" in OUTPUT_DISCIPLINE
21
+ assert "not by hand" in OUTPUT_DISCIPLINE
22
+
23
+
24
+ def test_work_on_files_in_this_folder_gets_the_coding_prompt(tmp_path, monkeypatch):
25
+ monkeypatch.chdir(tmp_path)
26
+ (tmp_path / "inventory.csv").write_text("owner_id,sku,on_hand\n")
27
+ message = "给货主 BETA 准备一份本周库存简报,写到 report_BETA.md。数据在 inventory.csv。"
28
+ assert select_base_prompt(message) == CODING_SYSTEM_PROMPT
29
+
30
+
31
+ def test_a_general_question_keeps_the_general_prompt(tmp_path, monkeypatch):
32
+ monkeypatch.chdir(tmp_path)
33
+ assert select_base_prompt("what is a reorder point?") != CODING_SYSTEM_PROMPT
34
+
35
+
36
+ def test_an_override_is_left_alone():
37
+ assert build_turn_system_prompt("x", override="only this") == "only this"
@@ -0,0 +1,122 @@
1
+ """Gemini 3.x and Gemma on Google Cloud, without a Gemini API key.
2
+
3
+ - `/model google/<anything>` refused without a Gemini API key, though the
4
+ model runs on Vertex AI with Google Cloud credentials.
5
+ - The native Vertex path defaulted to us-central1; the Gemini 3 previews are
6
+ served only from the global endpoint.
7
+ - Gemma ids matched no capability entry (no tools, a 4K window) and went to
8
+ the Gemini API, which does not serve them.
9
+ """
10
+
11
+ from __future__ import annotations
12
+
13
+ import asyncio
14
+ import io
15
+ import sys
16
+ from types import SimpleNamespace
17
+
18
+ import pytest
19
+
20
+ from aria_code.apps.cli.providers import base
21
+ from aria_code.model_capability import get_model_capability
22
+
23
+
24
+ @pytest.mark.parametrize("model", ["google/gemma-4-26b-a4b-it-maas", "gemma-3-27b-it", "vertexai/gemma-4-31b-it"])
25
+ def test_gemma_on_vertex_has_tools_and_a_real_window(model):
26
+ capability = get_model_capability(model)
27
+ assert capability.tool_calls and capability.context_window >= 131072
28
+
29
+
30
+ def test_ollama_gemma_keeps_its_own_entry():
31
+ assert get_model_capability("gemma3:27b").format == "ollama_native"
32
+
33
+
34
+ @pytest.mark.parametrize("model, open_model", [
35
+ ("gemma-4-26b-a4b-it-maas", True), ("gemma-3-27b-it", True), ("llama-4-maverick-17b-128e-instruct-maas", True),
36
+ ("gemini-3.5-flash", False), ("gemini-3.1-pro-preview", False),
37
+ ])
38
+ def test_which_models_take_the_openai_compatible_endpoint(model, open_model):
39
+ assert base.is_vertex_open_model(model) is open_model
40
+
41
+
42
+ def test_gemma_streams_through_vertex_openai_compatible_endpoint(monkeypatch):
43
+ import aria_code.local_llm_provider as local_llm
44
+
45
+ monkeypatch.setattr(base, "vertex_openai_endpoint", lambda config: {
46
+ "token": "tok", "project": "p", "location": "global",
47
+ "base_url": "https://aiplatform.googleapis.com/v1/projects/p/locations/global/endpoints/openapi"})
48
+ seen = {}
49
+
50
+ class FakeProvider:
51
+ async def stream(self, messages, tools=None, cancel_event=None):
52
+ yield {"type": "tool_call", "name": "read_file", "arguments": {"path": "a.py"}}
53
+ yield {"type": "done", "text": "ok"}
54
+
55
+ def from_config(cfg):
56
+ seen.update(cfg)
57
+ return FakeProvider()
58
+
59
+ monkeypatch.setattr(local_llm.LocalLLMProvider, "from_config", staticmethod(from_config))
60
+ provider = base.ConfiguredProvider({"local_provider": "google"}, "google/gemma-4-26b-a4b-it-maas")
61
+
62
+ async def run():
63
+ return [e async for e in provider.stream([{"role": "user", "content": "hi"}], tools=[])]
64
+
65
+ events = asyncio.run(run())
66
+ assert seen["custom_model"] == "google/gemma-4-26b-a4b-it-maas"
67
+ assert seen["custom_endpoint"].endswith("/locations/global/endpoints/openapi")
68
+ assert [type(e).__name__ for e in events] == ["LLMToolCall", "LLMDone"]
69
+ assert events[-1].success
70
+
71
+
72
+ def test_gemma_without_credentials_says_how_to_sign_in(monkeypatch):
73
+ monkeypatch.setattr(base, "vertex_openai_endpoint", lambda config: {})
74
+ provider = base.ConfiguredProvider({}, "google/gemma-4-26b-a4b-it-maas")
75
+
76
+ async def run():
77
+ return [e async for e in provider.stream([{"role": "user", "content": "hi"}], tools=[])]
78
+
79
+ done = asyncio.run(run())[-1]
80
+ assert not done.success and "application-default login" in done.error
81
+
82
+
83
+ def test_native_vertex_defaults_to_the_global_endpoint(monkeypatch):
84
+ from aria_code.apps.cli.providers.vertexai_stream import VertexAIProvider
85
+
86
+ monkeypatch.delenv("GOOGLE_CLOUD_LOCATION", raising=False)
87
+ monkeypatch.setenv("GOOGLE_CLOUD_PROJECT", "p")
88
+ made = {}
89
+ genai = pytest.importorskip("google.genai")
90
+ monkeypatch.setattr(genai, "Client", lambda **kw: made.update(kw) or object())
91
+ VertexAIProvider(model="gemini-3-flash-preview", config={})._get_client()
92
+ assert made["vertexai"] is True and made["location"] == "global"
93
+
94
+
95
+ def test_model_command_accepts_google_models_with_cloud_credentials(monkeypatch):
96
+ sys.argv = ["aria-code"]
97
+ import aria_code.aria_cli as cli
98
+ from rich.console import Console
99
+
100
+ monkeypatch.setattr(base, "google_cloud_available", lambda: True)
101
+ terminal = cli.ArtheraTerminal(dict(cli.DEFAULT_CONFIG))
102
+ monkeypatch.setattr(terminal.commands.context, "console", Console(file=io.StringIO(), color_system=None))
103
+ asyncio.run(terminal.commands.cmd_model("google/gemini-3.5-flash"))
104
+ assert terminal.config["model"] == "gemini-3.5-flash" and terminal.config["local_provider"] == "google"
105
+
106
+
107
+ def test_model_command_without_credentials_names_both_ways(monkeypatch):
108
+ sys.argv = ["aria-code"]
109
+ import aria_code.aria_cli as cli
110
+ from rich.console import Console
111
+
112
+ monkeypatch.setattr(base, "google_cloud_available", lambda: False)
113
+ terminal = cli.ArtheraTerminal(dict(cli.DEFAULT_CONFIG, ui_lang="en"))
114
+ console = Console(file=io.StringIO(), color_system=None, width=200)
115
+ monkeypatch.setattr(terminal.commands.context, "console", console)
116
+ import aria_code.apps.cli.commands.model_cmds as model_cmds
117
+ monkeypatch.setattr(model_cmds, "_get_provider_key", lambda provider: "", raising=False)
118
+ before = terminal.config["model"]
119
+ asyncio.run(terminal.commands.cmd_model("google/gemini-3.5-flash"))
120
+ assert terminal.config["model"] == before
121
+ text = console.file.getvalue()
122
+ assert "application-default login" in text and "/apikey set google" in text
File without changes
File without changes
File without changes