aria-code 0.117.0__tar.gz → 0.118.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 (818) hide show
  1. {aria_code-0.117.0/src/aria_code.egg-info → aria_code-0.118.0}/PKG-INFO +2 -2
  2. {aria_code-0.117.0 → aria_code-0.118.0}/README.md +1 -1
  3. {aria_code-0.117.0 → aria_code-0.118.0}/pyproject.toml +1 -1
  4. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/_version.py +1 -1
  5. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/providers/base.py +9 -1
  6. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/providers/vertexai_stream.py +181 -22
  7. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_sdk/streaming.py +4 -0
  8. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/runtime/agent_loop.py +75 -1
  9. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/ui/banner.py +23 -15
  10. aria_code-0.118.0/src/aria_code/ui/robot_pixels.py +80 -0
  11. {aria_code-0.117.0 → aria_code-0.118.0/src/aria_code.egg-info}/PKG-INFO +2 -2
  12. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code.egg-info/SOURCES.txt +1 -0
  13. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_robot_artwork.py +33 -7
  14. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_runtime_agent_loop.py +96 -0
  15. aria_code-0.118.0/tests/test_vertexai_tool_history.py +145 -0
  16. aria_code-0.117.0/src/aria_code/ui/robot_pixels.py +0 -6
  17. {aria_code-0.117.0 → aria_code-0.118.0}/LICENSE +0 -0
  18. {aria_code-0.117.0 → aria_code-0.118.0}/NOTICE +0 -0
  19. {aria_code-0.117.0 → aria_code-0.118.0}/setup.cfg +0 -0
  20. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/__init__.py +0 -0
  21. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/adk_apps/__init__.py +0 -0
  22. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/adk_apps/aria_code_review/__init__.py +0 -0
  23. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/adk_apps/aria_code_review/agent.py +0 -0
  24. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/adk_apps/aria_research/__init__.py +0 -0
  25. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/adk_apps/aria_research/agent.py +0 -0
  26. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/__init__.py +0 -0
  27. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/base.py +0 -0
  28. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/code_review.py +0 -0
  29. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/deep/__init__.py +0 -0
  30. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/deep/calibration_loop.py +0 -0
  31. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/deep/critic.py +0 -0
  32. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/deep/deepen.py +0 -0
  33. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/deep/models.py +0 -0
  34. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/deep/pipeline.py +0 -0
  35. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/deep/quant_fusion.py +0 -0
  36. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/deep/themes.py +0 -0
  37. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/deep/tiers.py +0 -0
  38. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/engineering/__init__.py +0 -0
  39. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/engineering/coder.py +0 -0
  40. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/engineering/tester.py +0 -0
  41. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/financial/__init__.py +0 -0
  42. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/financial/cashflow_burn.py +0 -0
  43. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/financial/catalyst.py +0 -0
  44. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/financial/corporate_finance.py +0 -0
  45. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/financial/debate.py +0 -0
  46. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/financial/earnings.py +0 -0
  47. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/financial/fundamental.py +0 -0
  48. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/financial/macro.py +0 -0
  49. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/financial/news.py +0 -0
  50. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/financial/risk.py +0 -0
  51. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/financial/sector.py +0 -0
  52. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/financial/strategist.py +0 -0
  53. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/financial/stripe_revenue.py +0 -0
  54. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/financial/synthesis.py +0 -0
  55. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/financial/technical.py +0 -0
  56. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/orchestrator.py +0 -0
  57. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/portfolio_agent.py +0 -0
  58. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/realty/__init__.py +0 -0
  59. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/realty/asset_diagnosis.py +0 -0
  60. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/realty/business_match.py +0 -0
  61. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/realty/cashflow_verify.py +0 -0
  62. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/realty/contract_rules.py +0 -0
  63. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/realty/energy_anomaly.py +0 -0
  64. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/realty/exit_settlement.py +0 -0
  65. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/realty/fulfillment_risk.py +0 -0
  66. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/realty/ops_optimize.py +0 -0
  67. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/realty/revenue_share.py +0 -0
  68. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/registry.py +0 -0
  69. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/signal_scheme.py +0 -0
  70. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/sports/__init__.py +0 -0
  71. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/sports/football_agent.py +0 -0
  72. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/supervisor.py +0 -0
  73. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/team.py +0 -0
  74. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/warehouse/__init__.py +0 -0
  75. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/warehouse/contracts.py +0 -0
  76. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/warehouse/dashboard.py +0 -0
  77. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/warehouse/fulfillment_leadtime.py +0 -0
  78. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/warehouse/inbound_exceptions.py +0 -0
  79. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/warehouse/inventory_health.py +0 -0
  80. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/warehouse/local_run.py +0 -0
  81. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/warehouse/local_snapshot.py +0 -0
  82. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/warehouse/logistics_cost.py +0 -0
  83. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/warehouse/logistics_sync.py +0 -0
  84. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/agents/warehouse/workflow.py +0 -0
  85. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/aliyun_data_client.py +0 -0
  86. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/README.md +0 -0
  87. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/__init__.py +0 -0
  88. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/channels/README.md +0 -0
  89. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/channels/__init__.py +0 -0
  90. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/channels/approvals.py +0 -0
  91. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/channels/conversation.py +0 -0
  92. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/channels/digest.py +0 -0
  93. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/channels/intake.py +0 -0
  94. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/channels/registry.py +0 -0
  95. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/channels/tradingview.py +0 -0
  96. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/README.md +0 -0
  97. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/__init__.py +0 -0
  98. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/_optional.py +0 -0
  99. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/bootstrap.py +0 -0
  100. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/broker_render.py +0 -0
  101. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/chat_turn.py +0 -0
  102. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/codegen_paths.py +0 -0
  103. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/__init__.py +0 -0
  104. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/_business_render.py +0 -0
  105. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/_ui.py +0 -0
  106. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/analysis_cmds.py +0 -0
  107. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/ashare_prediction_cmds.py +0 -0
  108. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/auth_cmds.py +0 -0
  109. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/backtest_cmds.py +0 -0
  110. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/broker_cmds.py +0 -0
  111. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/business_workflow_cmds.py +0 -0
  112. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/canvas_cmds.py +0 -0
  113. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/catalog.py +0 -0
  114. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/core_cmds.py +0 -0
  115. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/data_cmds.py +0 -0
  116. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/diagnostic_cmds.py +0 -0
  117. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/diagnostic_ops_cmds.py +0 -0
  118. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/file_cmds.py +0 -0
  119. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/finance_service_cmds.py +0 -0
  120. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/fx_commodity_cmds.py +0 -0
  121. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/market.py +0 -0
  122. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/market_cmds.py +0 -0
  123. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/market_context.py +0 -0
  124. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/market_render.py +0 -0
  125. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/model_cmds.py +0 -0
  126. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/ops_cmds.py +0 -0
  127. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/orchestrator_cmds.py +0 -0
  128. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/pdf_export_cmds.py +0 -0
  129. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/portfolio_cmds.py +0 -0
  130. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/report.py +0 -0
  131. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/scaffold_templates.py +0 -0
  132. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/session_cmds.py +0 -0
  133. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/session_ux_cmds.py +0 -0
  134. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/team.py +0 -0
  135. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/team_render.py +0 -0
  136. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/ui_cmds.py +0 -0
  137. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/warehouse_cmds.py +0 -0
  138. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/workflow_cmds.py +0 -0
  139. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/commands/workspace_cmds.py +0 -0
  140. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/config_paths.py +0 -0
  141. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/config_store.py +0 -0
  142. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/constants.py +0 -0
  143. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/context.py +0 -0
  144. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/deterministic.py +0 -0
  145. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/direct.py +0 -0
  146. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/earnings_view.py +0 -0
  147. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/exec_events.py +0 -0
  148. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/finance_service_catalog.py +0 -0
  149. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/football_reports.py +0 -0
  150. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/github_app_auth.py +0 -0
  151. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/google_login.py +0 -0
  152. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/handlers/__init__.py +0 -0
  153. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/handlers/broker_handlers.py +0 -0
  154. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/handlers/chart_handlers.py +0 -0
  155. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/handlers/market_handlers.py +0 -0
  156. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/handlers/realty_handlers.py +0 -0
  157. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/handlers/sports_handlers.py +0 -0
  158. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/handlers/strategy_advice.py +0 -0
  159. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/headless.py +0 -0
  160. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/helpers.py +0 -0
  161. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/hooks.py +0 -0
  162. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/i18n.py +0 -0
  163. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/intent.py +0 -0
  164. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/intent_router.py +0 -0
  165. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/intent_signals.py +0 -0
  166. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/lifecycle_hooks.py +0 -0
  167. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/local_tool_schemas.py +0 -0
  168. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/main.py +0 -0
  169. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/market_hours.py +0 -0
  170. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/market_metadata.py +0 -0
  171. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/market_universe.py +0 -0
  172. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/message_processing.py +0 -0
  173. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/mixin_binding.py +0 -0
  174. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/model_catalog.py +0 -0
  175. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/model_probe.py +0 -0
  176. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/model_retirement.py +0 -0
  177. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/pdf_report.py +0 -0
  178. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/plan_mode.py +0 -0
  179. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/plotly_html.py +0 -0
  180. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/prediction_feedback.py +0 -0
  181. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/preflight.py +0 -0
  182. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/project_aria.py +0 -0
  183. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/prompt_assembly.py +0 -0
  184. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/prompts/__init__.py +0 -0
  185. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/prompts/coding.py +0 -0
  186. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/prompts/select.py +0 -0
  187. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/prompts/system_prompts.py +0 -0
  188. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/prompts/ui.py +0 -0
  189. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/provider_endpoints.py +0 -0
  190. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/provider_keys.py +0 -0
  191. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/providers/__init__.py +0 -0
  192. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/providers/chat_routing.py +0 -0
  193. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/providers/collaboration.py +0 -0
  194. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/providers/llm/__init__.py +0 -0
  195. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/providers/llm/offline_responses.py +0 -0
  196. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/providers/llm/ollama_stream.py +0 -0
  197. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/providers/llm/response_cache.py +0 -0
  198. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/providers/llm/sse_stream.py +0 -0
  199. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/providers/runtime_bridge.py +0 -0
  200. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/release_download.py +0 -0
  201. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/review_runner.py +0 -0
  202. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/runtime_consumer.py +0 -0
  203. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/sandbox.py +0 -0
  204. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/session_export.py +0 -0
  205. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/session_jsonl.py +0 -0
  206. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/session_store.py +0 -0
  207. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/skills_catalog.py +0 -0
  208. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/terminal_chrome.py +0 -0
  209. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/todo_tracker.py +0 -0
  210. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/tool_executor.py +0 -0
  211. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/tool_registry.py +0 -0
  212. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/tool_scope.py +0 -0
  213. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/tools/__init__.py +0 -0
  214. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/tools/context.py +0 -0
  215. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/tools/file_tools.py +0 -0
  216. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/tools/market_tools.py +0 -0
  217. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/tools/notebook_tools.py +0 -0
  218. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/tools/system_tools.py +0 -0
  219. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/tools/write_tools.py +0 -0
  220. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/tradingview_bridge.py +0 -0
  221. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/turn_planning.py +0 -0
  222. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/update_check.py +0 -0
  223. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/updater.py +0 -0
  224. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/utils/__init__.py +0 -0
  225. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/utils/market_detect.py +0 -0
  226. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/cli/workspace_route.py +0 -0
  227. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/daemon/README.md +0 -0
  228. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/vscode/README.md +0 -0
  229. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/apps/vscode/package.json +0 -0
  230. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/aria_cli.py +0 -0
  231. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/aria_daemon.py +0 -0
  232. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/aria_feishu_bot.py +0 -0
  233. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/aria_mcp_server.py +0 -0
  234. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/aria_relay_client.py +0 -0
  235. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/aria_relay_server.py +0 -0
  236. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/aria_telegram_bot.py +0 -0
  237. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/ariarc.py +0 -0
  238. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/artifacts.py +0 -0
  239. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/backtest_engine.py +0 -0
  240. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/backtest_report.py +0 -0
  241. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/brokers/__init__.py +0 -0
  242. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/brokers/automation.py +0 -0
  243. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/brokers/base.py +0 -0
  244. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/brokers/capabilities.py +0 -0
  245. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/brokers/cn/__init__.py +0 -0
  246. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/brokers/cn/easytrader_broker.py +0 -0
  247. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/brokers/cn/futu_broker.py +0 -0
  248. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/brokers/cn/longbridge_broker.py +0 -0
  249. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/brokers/cn/tiger_broker.py +0 -0
  250. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/brokers/cn/xtquant_broker.py +0 -0
  251. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/brokers/config.py +0 -0
  252. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/brokers/intl/__init__.py +0 -0
  253. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/brokers/intl/alpaca_broker.py +0 -0
  254. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/brokers/intl/ibkr_broker.py +0 -0
  255. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/brokers/intl/trading212_broker.py +0 -0
  256. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/brokers/intl/webull_broker.py +0 -0
  257. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/brokers/paper_broker.py +0 -0
  258. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/brokers/planning.py +0 -0
  259. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/brokers/registry.py +0 -0
  260. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/brokers/trading.py +0 -0
  261. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/canva_client.py +0 -0
  262. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/change_store.py +0 -0
  263. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/clients/__init__.py +0 -0
  264. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/clients/aliyun_data_client.py +0 -0
  265. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/clients/aria_relay_client.py +0 -0
  266. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/clients/canva_client.py +0 -0
  267. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/clients/figma_client.py +0 -0
  268. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/clients/football_data_client.py +0 -0
  269. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/clients/kling_video_client.py +0 -0
  270. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/clients/market_data_client.py +0 -0
  271. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/clients/openai_image_client.py +0 -0
  272. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/clients/runway_video_client.py +0 -0
  273. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/clients/warehouse_erp_client.py +0 -0
  274. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/cloud_memory.py +0 -0
  275. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/command_safety.py +0 -0
  276. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/computer_use_tools.py +0 -0
  277. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/dashboard_generator.py +0 -0
  278. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/data_analysis_tools.py +0 -0
  279. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/data_cleaner.py +0 -0
  280. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/data_service.py +0 -0
  281. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/datasources/__init__.py +0 -0
  282. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/datasources/base.py +0 -0
  283. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/datasources/router.py +0 -0
  284. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/datasources/sources/__init__.py +0 -0
  285. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/datasources/sources/akshare_source.py +0 -0
  286. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/datasources/sources/alpha_vantage_source.py +0 -0
  287. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/datasources/sources/edgar_source.py +0 -0
  288. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/datasources/sources/finnhub_source.py +0 -0
  289. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/datasources/sources/fred_source.py +0 -0
  290. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/datasources/sources/tushare_source.py +0 -0
  291. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/datasources/sources/web_scraper_source.py +0 -0
  292. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/datasources/sources/world_bank_source.py +0 -0
  293. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/datasources/sources/yfinance_source.py +0 -0
  294. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/demo_player.py +0 -0
  295. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/doctor.py +0 -0
  296. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/domain/__init__.py +0 -0
  297. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/domain/backtest_engine.py +0 -0
  298. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/domain/backtest_report.py +0 -0
  299. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/domain/finance_formulas.py +0 -0
  300. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/domain/portfolio_ledger.py +0 -0
  301. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/domain/strategy_vault.py +0 -0
  302. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/evals/__init__.py +0 -0
  303. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/evals/gap.py +0 -0
  304. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/evals/harness.py +0 -0
  305. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/evals/runner.py +0 -0
  306. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/evals/summary.py +0 -0
  307. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/external_agent_runner.py +0 -0
  308. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/figma_client.py +0 -0
  309. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/file_analysis_tools.py +0 -0
  310. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/finance_formulas.py +0 -0
  311. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/football_data_client.py +0 -0
  312. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/image_gen_tools.py +0 -0
  313. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/intent_classifier.py +0 -0
  314. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/kling_video_client.py +0 -0
  315. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/licensing.py +0 -0
  316. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/local_finance_tools.py +0 -0
  317. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/local_image_provider.py +0 -0
  318. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/local_llm_provider.py +0 -0
  319. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/macro_tools.py +0 -0
  320. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/markdown_pdf.py +0 -0
  321. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/market_data_client.py +0 -0
  322. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/mcp_client.py +0 -0
  323. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/memory_manager.py +0 -0
  324. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/model_capability.py +0 -0
  325. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/notification_tools.py +0 -0
  326. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/openai_image_client.py +0 -0
  327. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/__init__.py +0 -0
  328. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/adk_bridge/__init__.py +0 -0
  329. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/adk_bridge/code_review_tools.py +0 -0
  330. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/adk_bridge/market_tools.py +0 -0
  331. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_agents/__init__.py +0 -0
  332. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_agents/manifest.py +0 -0
  333. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_core/__init__.py +0 -0
  334. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_core/architecture.py +0 -0
  335. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_core/export.py +0 -0
  336. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_core/manifest.py +0 -0
  337. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_core/paths.py +0 -0
  338. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_core/secure_file.py +0 -0
  339. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_infra/__init__.py +0 -0
  340. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_infra/arthera.py +0 -0
  341. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_infra/doctor.py +0 -0
  342. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_infra/product.py +0 -0
  343. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_mcp/__init__.py +0 -0
  344. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_mcp/bridge.py +0 -0
  345. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_mcp/circuit.py +0 -0
  346. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_mcp/config.py +0 -0
  347. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_mcp/installer.py +0 -0
  348. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_mcp/server.py +0 -0
  349. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_mcp/tools.py +0 -0
  350. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_sdk/__init__.py +0 -0
  351. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_sdk/client.py +0 -0
  352. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_sdk/providers.py +0 -0
  353. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_sdk/types.py +0 -0
  354. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_services/__init__.py +0 -0
  355. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_services/cache.py +0 -0
  356. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_services/context.py +0 -0
  357. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_services/context_checkpoints.py +0 -0
  358. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_services/data.py +0 -0
  359. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_services/provider_health.py +0 -0
  360. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_services/references.py +0 -0
  361. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_services/registry.py +0 -0
  362. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_services/research_protocol.py +0 -0
  363. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_services/research_quality.py +0 -0
  364. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_services/settings.py +0 -0
  365. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_services/usage.py +0 -0
  366. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_skills/__init__.py +0 -0
  367. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_skills/catalog.py +0 -0
  368. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_skills/loader.py +0 -0
  369. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_skills/registry.py +0 -0
  370. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_tools/__init__.py +0 -0
  371. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_tools/financial/__init__.py +0 -0
  372. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_tools/financial/_paths.py +0 -0
  373. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_tools/financial/compliance.py +0 -0
  374. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_tools/financial/factors.py +0 -0
  375. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_tools/financial/risk_tools.py +0 -0
  376. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_tools/financial/strategy.py +0 -0
  377. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/aria_tools/registry.py +0 -0
  378. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/quant_engine/__init__.py +0 -0
  379. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/quant_engine/_namespace.py +0 -0
  380. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/quant_engine/backtest/__init__.py +0 -0
  381. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/quant_engine/backtest/core.py +0 -0
  382. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/quant_engine/backtest/engine.py +0 -0
  383. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/quant_engine/portfolio/__init__.py +0 -0
  384. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/quant_engine/portfolio/optimizer.py +0 -0
  385. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/quant_engine/sports/__init__.py +0 -0
  386. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/quant_engine/sports/calibrator.py +0 -0
  387. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/quant_engine/sports/dixon_coles.py +0 -0
  388. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/quant_engine/sports/elo.py +0 -0
  389. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/quant_engine/sports/form.py +0 -0
  390. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/quant_engine/sports/h2h.py +0 -0
  391. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/quant_engine/sports/ml_model.py +0 -0
  392. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/quant_engine/sports/predictor.py +0 -0
  393. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/quant_engine/sports/tracker.py +0 -0
  394. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/quant_engine/stochastic/__init__.py +0 -0
  395. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/quant_engine/stochastic/gbm_enhanced.py +0 -0
  396. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/quant_engine/stochastic/ito_calculus.py +0 -0
  397. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/quant_engine/stochastic/kelly_criterion.py +0 -0
  398. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/quant_engine/stochastic/monte_carlo_advanced.py +0 -0
  399. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/quant_engine/stochastic/options_pricing.py +0 -0
  400. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packages/quant_engine/stochastic/stochastic_processes.py +0 -0
  401. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packs/__init__.py +0 -0
  402. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packs/base.py +0 -0
  403. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packs/finance/__init__.py +0 -0
  404. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packs/logistics/__init__.py +0 -0
  405. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packs/payments/__init__.py +0 -0
  406. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packs/realty/__init__.py +0 -0
  407. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packs/registry.py +0 -0
  408. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/packs/rules.py +0 -0
  409. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/plan_utils.py +0 -0
  410. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/plugin_loader.py +0 -0
  411. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/portfolio_ledger.py +0 -0
  412. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/preview_server.py +0 -0
  413. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/privacy/__init__.py +0 -0
  414. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/privacy/feedback.py +0 -0
  415. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/project_review.py +0 -0
  416. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/project_review_api.py +0 -0
  417. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/project_review_server.py +0 -0
  418. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/project_tools.py +0 -0
  419. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/providers/__init__.py +0 -0
  420. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/providers/llm/__init__.py +0 -0
  421. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/providers/llm/anthropic.py +0 -0
  422. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/providers/llm/autoconfig.py +0 -0
  423. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/providers/llm/base.py +0 -0
  424. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/providers/llm/custom.py +0 -0
  425. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/providers/llm/ollama.py +0 -0
  426. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/providers/llm/openai_compat.py +0 -0
  427. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/providers/llm/registry.py +0 -0
  428. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/providers/local_image_provider.py +0 -0
  429. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/providers/local_llm_provider.py +0 -0
  430. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/providers/tool_messages.py +0 -0
  431. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/realty_data_tools.py +0 -0
  432. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/relay_store.py +0 -0
  433. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/report_exporters.py +0 -0
  434. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/report_generator.py +0 -0
  435. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/review_service.py +0 -0
  436. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/runtime/__init__.py +0 -0
  437. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/runtime/acceptance.py +0 -0
  438. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/runtime/approval.py +0 -0
  439. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/runtime/budget.py +0 -0
  440. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/runtime/checkpoints.py +0 -0
  441. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/runtime/crash_report.py +0 -0
  442. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/runtime/events.py +0 -0
  443. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/runtime/gateway.py +0 -0
  444. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/runtime/lsp.py +0 -0
  445. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/runtime/orchestrator.py +0 -0
  446. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/runtime/processes.py +0 -0
  447. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/runtime/repo_map.py +0 -0
  448. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/runtime/run_state.py +0 -0
  449. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/runtime/run_store.py +0 -0
  450. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/runtime/self_healing.py +0 -0
  451. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/runtime/subagent.py +0 -0
  452. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/runtime/task_ledger.py +0 -0
  453. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/runtime/task_orchestrator.py +0 -0
  454. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/runtime/tool_executor.py +0 -0
  455. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/runtime/tool_policy.py +0 -0
  456. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/runtime/windows_job.py +0 -0
  457. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/runtime/worktrees.py +0 -0
  458. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/runway_video_client.py +0 -0
  459. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/safety/__init__.py +0 -0
  460. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/safety/client_isolation.py +0 -0
  461. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/safety/permissions.py +0 -0
  462. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/safety/sandbox.py +0 -0
  463. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/safety/service.py +0 -0
  464. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/setup_wizard.py +0 -0
  465. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/spreadsheet_tools.py +0 -0
  466. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/strategy_vault.py +0 -0
  467. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/tools/__init__.py +0 -0
  468. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/tools/artifact_tools.py +0 -0
  469. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/tools/broker_tools.py +0 -0
  470. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/tools/build_quant_engine.py +0 -0
  471. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/tools/code_audit_tools.py +0 -0
  472. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/tools/computer_use_tools.py +0 -0
  473. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/tools/data_analysis_tools.py +0 -0
  474. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/tools/enterprise_finance_tools.py +0 -0
  475. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/tools/extended_tools.py +0 -0
  476. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/tools/file_analysis_tools.py +0 -0
  477. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/tools/image_gen_tools.py +0 -0
  478. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/tools/local_finance_tools.py +0 -0
  479. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/tools/logistics_carriers.py +0 -0
  480. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/tools/logistics_inventory.py +0 -0
  481. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/tools/logistics_io.py +0 -0
  482. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/tools/logistics_tenancy.py +0 -0
  483. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/tools/logistics_tools.py +0 -0
  484. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/tools/macro_tools.py +0 -0
  485. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/tools/notification_tools.py +0 -0
  486. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/tools/project_tools.py +0 -0
  487. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/tools/realty_data_tools.py +0 -0
  488. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/tools/spreadsheet_tools.py +0 -0
  489. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/tools/stripe_tools.py +0 -0
  490. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/training/__init__.py +0 -0
  491. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/training/compare.py +0 -0
  492. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/training/sft_dataset.py +0 -0
  493. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/ui/__init__.py +0 -0
  494. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/ui/assets/aria-robot.png +0 -0
  495. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/ui/completer.py +0 -0
  496. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/ui/console.py +0 -0
  497. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/ui/image_render.py +0 -0
  498. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/ui/input_box.py +0 -0
  499. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/ui/mentions.py +0 -0
  500. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/ui/picker.py +0 -0
  501. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/ui/render/__init__.py +0 -0
  502. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/ui/render/finance.py +0 -0
  503. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/ui/render/market.py +0 -0
  504. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/ui/render/output.py +0 -0
  505. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/ui/render/responsive.py +0 -0
  506. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/ui/render/team.py +0 -0
  507. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/ui/robot.py +0 -0
  508. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/ui/startup_dashboard.py +0 -0
  509. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/utils/vscode_uri.py +0 -0
  510. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/video_analysis.py +0 -0
  511. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/video_editor.py +0 -0
  512. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/workspace/__init__.py +0 -0
  513. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/workspace/files.py +0 -0
  514. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/workspace/verify.py +0 -0
  515. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/workspace_changes.py +0 -0
  516. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/workspace_context.py +0 -0
  517. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/workspace_service.py +0 -0
  518. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code/workspace_tools.py +0 -0
  519. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code.egg-info/dependency_links.txt +0 -0
  520. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code.egg-info/entry_points.txt +0 -0
  521. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code.egg-info/requires.txt +0 -0
  522. {aria_code-0.117.0 → aria_code-0.118.0}/src/aria_code.egg-info/top_level.txt +0 -0
  523. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_adk_market_tools.py +0 -0
  524. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_agent_key_points_language.py +0 -0
  525. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_agent_team_fallback.py +0 -0
  526. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_analyze_file_tool.py +0 -0
  527. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_architecture_ledger_is_true.py +0 -0
  528. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_architecture_report.py +0 -0
  529. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_aria_cli_core.py +0 -0
  530. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_aria_mcp_server.py +0 -0
  531. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_aria_sdk.py +0 -0
  532. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_artifact_publishing.py +0 -0
  533. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_artifacts_and_reports.py +0 -0
  534. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_ashare_prediction_cmds.py +0 -0
  535. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_background_processes.py +0 -0
  536. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_backtest_cmds.py +0 -0
  537. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_backtest_engine.py +0 -0
  538. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_backtest_report.py +0 -0
  539. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_backtest_runs_what_it_names.py +0 -0
  540. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_binary_bundles_runtime_imports.py +0 -0
  541. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_broken_akshare_is_optional.py +0 -0
  542. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_broker_automation.py +0 -0
  543. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_broker_chat_confirm_gate.py +0 -0
  544. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_broker_planning.py +0 -0
  545. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_broker_safety.py +0 -0
  546. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_broker_tools.py +0 -0
  547. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_budget.py +0 -0
  548. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_business_workflow_cmds.py +0 -0
  549. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_callback_provider_cleanup.py +0 -0
  550. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_canva_client.py +0 -0
  551. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_canvas_cmds.py +0 -0
  552. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_card_approvals.py +0 -0
  553. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_channel_intake.py +0 -0
  554. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_channels.py +0 -0
  555. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_chart_handlers.py +0 -0
  556. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_chat_bots_fail_closed.py +0 -0
  557. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_chat_routing.py +0 -0
  558. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_ci_security_workflow.py +0 -0
  559. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_cli_app_split.py +0 -0
  560. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_cli_bootstrap.py +0 -0
  561. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_cli_config_store.py +0 -0
  562. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_cli_lifecycle_hooks.py +0 -0
  563. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_cli_runtime_consumer.py +0 -0
  564. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_cli_tool_executor_module.py +0 -0
  565. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_cli_updater.py +0 -0
  566. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_client_isolation_guard.py +0 -0
  567. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_cloud_memory.py +0 -0
  568. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_code_audit_tools.py +0 -0
  569. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_code_review_agent.py +0 -0
  570. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_codegen_output.py +0 -0
  571. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_coder_tester_self_healing.py +0 -0
  572. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_coder_tool_safety.py +0 -0
  573. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_collaboration.py +0 -0
  574. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_command_loggers.py +0 -0
  575. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_command_safety.py +0 -0
  576. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_compare_strategies.py +0 -0
  577. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_completions_builder.py +0 -0
  578. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_config_paths.py +0 -0
  579. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_configured_provider.py +0 -0
  580. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_container_entrypoint.py +0 -0
  581. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_container_entrypoints.py +0 -0
  582. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_context_checkpoints.py +0 -0
  583. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_context_references.py +0 -0
  584. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_context_service.py +0 -0
  585. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_conversation_core.py +0 -0
  586. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_crash_report.py +0 -0
  587. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_credential_file_permissions.py +0 -0
  588. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_custom_providers.py +0 -0
  589. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_daemon_gateway_config.py +0 -0
  590. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_dashboard_generator.py +0 -0
  591. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_data_service.py +0 -0
  592. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_data_service_imports.py +0 -0
  593. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_data_without_model.py +0 -0
  594. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_datasource_routing.py +0 -0
  595. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_deep_analysis.py +0 -0
  596. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_degrades_without_quant_engine.py +0 -0
  597. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_dispatcher_pins_match_the_release.py +0 -0
  598. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_doctor.py +0 -0
  599. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_doctor_describes_the_current_install.py +0 -0
  600. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_doctor_npm_scope.py +0 -0
  601. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_doctor_sandbox.py +0 -0
  602. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_edit_and_command_safety.py +0 -0
  603. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_engine_boundary.py +0 -0
  604. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_english_output_group.py +0 -0
  605. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_enterprise_tool_honesty.py +0 -0
  606. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_env_switch_docs.py +0 -0
  607. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_eval_hard_suite.py +0 -0
  608. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_eval_holdout.py +0 -0
  609. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_eval_summary.py +0 -0
  610. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_eval_task_bank.py +0 -0
  611. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_eval_trajectories.py +0 -0
  612. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_evals_harness.py +0 -0
  613. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_event_import_roots.py +0 -0
  614. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_exec_events.py +0 -0
  615. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_extended_tools.py +0 -0
  616. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_feishu_swarm_config.py +0 -0
  617. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_file_links.py +0 -0
  618. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_finalize_release.py +0 -0
  619. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_finance_renderers.py +0 -0
  620. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_finance_service_catalog.py +0 -0
  621. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_first_run_output.py +0 -0
  622. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_first_run_works.py +0 -0
  623. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_football_agent.py +0 -0
  624. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_football_prediction_output.py +0 -0
  625. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_gemini_retirement.py +0 -0
  626. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_google_cloud_models.py +0 -0
  627. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_google_cloud_routing.py +0 -0
  628. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_google_login.py +0 -0
  629. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_google_search_provider.py +0 -0
  630. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_headless_command_approval.py +0 -0
  631. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_headless_is_agentic.py +0 -0
  632. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_honest_surfaces.py +0 -0
  633. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_image_gen_tools.py +0 -0
  634. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_image_inputs.py +0 -0
  635. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_import_graph_budget.py +0 -0
  636. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_intent_router.py +0 -0
  637. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_intent_signals.py +0 -0
  638. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_kling_video_client.py +0 -0
  639. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_lazy_rebind.py +0 -0
  640. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_legacy_module_imports.py +0 -0
  641. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_license_consistency.py +0 -0
  642. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_licensing.py +0 -0
  643. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_linux_sandbox_integration.py +0 -0
  644. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_local_image_provider.py +0 -0
  645. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_local_workspace_execution.py +0 -0
  646. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_logistics_3pl.py +0 -0
  647. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_logistics_and_finance_agents.py +0 -0
  648. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_lsp.py +0 -0
  649. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_markdown_pdf.py +0 -0
  650. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_market_answers_in_english.py +0 -0
  651. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_market_data_client.py +0 -0
  652. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_market_history_inheritance.py +0 -0
  653. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_market_history_tool.py +0 -0
  654. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_market_hours.py +0 -0
  655. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_market_questions_on_backend.py +0 -0
  656. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_market_symbol_extraction.py +0 -0
  657. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_market_universe.py +0 -0
  658. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_mcp_circuit.py +0 -0
  659. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_mcp_client.py +0 -0
  660. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_mentions.py +0 -0
  661. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_model_capability_registry.py +0 -0
  662. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_model_choice_is_the_users.py +0 -0
  663. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_model_probe.py +0 -0
  664. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_model_selection_state.py +0 -0
  665. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_narrow_chinese_output.py +0 -0
  666. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_native_binary_entrypoints.py +0 -0
  667. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_native_installer.py +0 -0
  668. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_natural_language_routing.py +0 -0
  669. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_new_modules.py +0 -0
  670. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_no_hardcoded_developer_paths.py +0 -0
  671. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_no_tools_route.py +0 -0
  672. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_no_uncommitted_imports.py +0 -0
  673. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_numeric_listings.py +0 -0
  674. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_ollama_stream_imports.py +0 -0
  675. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_ollama_stream_tools.py +0 -0
  676. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_openai_image_client.py +0 -0
  677. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_operations_suite.py +0 -0
  678. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_os_sandbox.py +0 -0
  679. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_output_discipline_prompt.py +0 -0
  680. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_output_rendering.py +0 -0
  681. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_packages_facade.py +0 -0
  682. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_packaging_constraints.py +0 -0
  683. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_packaging_manifest.py +0 -0
  684. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_packs_domains.py +0 -0
  685. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_pdf_report.py +0 -0
  686. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_pick_best_installed_model.py +0 -0
  687. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_plan_mode.py +0 -0
  688. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_platform_package_assembly.py +0 -0
  689. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_platform_packages.py +0 -0
  690. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_platform_publish.py +0 -0
  691. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_plotly_html_output.py +0 -0
  692. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_portfolio_language.py +0 -0
  693. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_portfolio_ledger.py +0 -0
  694. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_post_turn_context_decision.py +0 -0
  695. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_preflight.py +0 -0
  696. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_preview_server.py +0 -0
  697. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_privacy_feedback.py +0 -0
  698. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_project_aria.py +0 -0
  699. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_project_context_files.py +0 -0
  700. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_project_review.py +0 -0
  701. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_project_review_api.py +0 -0
  702. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_prompt_assembly.py +0 -0
  703. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_prompt_dates.py +0 -0
  704. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_prompt_selection.py +0 -0
  705. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_provider_autoconfig.py +0 -0
  706. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_provider_error_classification.py +0 -0
  707. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_provider_error_messages.py +0 -0
  708. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_provider_integration.py +0 -0
  709. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_provider_registry.py +0 -0
  710. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_public_service_status.py +0 -0
  711. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_quant_engine_namespace.py +0 -0
  712. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_rebind_contract.py +0 -0
  713. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_rebind_namespace_contract.py +0 -0
  714. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_relay_client_credentials.py +0 -0
  715. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_relay_event_verification.py +0 -0
  716. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_relay_sends_for_clients.py +0 -0
  717. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_relay_store.py +0 -0
  718. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_relay_url.py +0 -0
  719. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_release_badges.py +0 -0
  720. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_release_chain.py +0 -0
  721. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_release_commit_identity.py +0 -0
  722. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_release_download.py +0 -0
  723. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_release_push_is_atomic.py +0 -0
  724. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_release_reaches_the_registries.py +0 -0
  725. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_release_verification_waits.py +0 -0
  726. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_release_workflow_permissions.py +0 -0
  727. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_report_charts.py +0 -0
  728. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_report_generator.py +0 -0
  729. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_report_prompt_language.py +0 -0
  730. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_research_protocol.py +0 -0
  731. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_research_quality.py +0 -0
  732. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_responsive_rendering.py +0 -0
  733. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_review_service.py +0 -0
  734. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_risk_earnings_ops.py +0 -0
  735. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_root_module_budget.py +0 -0
  736. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_rsi_without_pandas_ta.py +0 -0
  737. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_runtime_acceptance.py +0 -0
  738. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_runtime_approval.py +0 -0
  739. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_runtime_bridge.py +0 -0
  740. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_runtime_bridge_fallback.py +0 -0
  741. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_runtime_checkpoints.py +0 -0
  742. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_runtime_event_identity.py +0 -0
  743. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_runtime_gateway.py +0 -0
  744. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_runtime_repo_map.py +0 -0
  745. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_runtime_run_store.py +0 -0
  746. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_runtime_tool_executor.py +0 -0
  747. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_runtime_worktrees.py +0 -0
  748. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_runway_video_client.py +0 -0
  749. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_safety_permissions.py +0 -0
  750. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_safety_service.py +0 -0
  751. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_safety_service_adoption.py +0 -0
  752. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_service_diagnostics_security.py +0 -0
  753. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_session_search.py +0 -0
  754. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_settings_service.py +0 -0
  755. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_shell_commands_as_written.py +0 -0
  756. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_shipper_digest.py +0 -0
  757. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_single_import_root.py +0 -0
  758. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_skill_agent_binding.py +0 -0
  759. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_skill_catalog.py +0 -0
  760. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_skill_loader.py +0 -0
  761. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_slash_popup.py +0 -0
  762. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_spreadsheet_tools.py +0 -0
  763. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_sse_http_roundtrip.py +0 -0
  764. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_sse_stream_contract.py +0 -0
  765. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_startup_dashboard.py +0 -0
  766. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_startup_keeps_cloud_model.py +0 -0
  767. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_startup_latency.py +0 -0
  768. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_status_language.py +0 -0
  769. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_streaming_pipeline.py +0 -0
  770. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_stripe_agent.py +0 -0
  771. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_subagent.py +0 -0
  772. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_supervisor_routing.py +0 -0
  773. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_system_prompts.py +0 -0
  774. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_system_tools_output.py +0 -0
  775. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_task_orchestrator.py +0 -0
  776. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_task_restore_startup.py +0 -0
  777. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_team_analysts.py +0 -0
  778. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_team_synthesis.py +0 -0
  779. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_terminal_mixins.py +0 -0
  780. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_terminal_snapshots.py +0 -0
  781. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_tls_trust_store.py +0 -0
  782. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_tool_policy.py +0 -0
  783. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_tool_rounds_on_openai_apis.py +0 -0
  784. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_tool_scope.py +0 -0
  785. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_tool_step_output.py +0 -0
  786. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_trading_service.py +0 -0
  787. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_tradingview_bridge.py +0 -0
  788. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_training_pipeline.py +0 -0
  789. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_turn_planning.py +0 -0
  790. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_ui_completer_references.py +0 -0
  791. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_ui_console_theme.py +0 -0
  792. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_ui_input_box.py +0 -0
  793. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_ui_language_and_model.py +0 -0
  794. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_ui_robot_banner.py +0 -0
  795. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_update_health_routes.py +0 -0
  796. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_verification_hint.py +0 -0
  797. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_verification_policy.py +0 -0
  798. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_verification_runner_selection.py +0 -0
  799. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_version_consistency.py +0 -0
  800. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_version_counter.py +0 -0
  801. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_vertex_busy_retry.py +0 -0
  802. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_vertex_empty_rounds.py +0 -0
  803. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_vertex_models.py +0 -0
  804. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_video_analysis.py +0 -0
  805. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_video_editor.py +0 -0
  806. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_vscode_mcp.py +0 -0
  807. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_warehouse_agents.py +0 -0
  808. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_warehouse_cli_registration.py +0 -0
  809. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_warehouse_erp_client.py +0 -0
  810. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_warehouse_workflow.py +0 -0
  811. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_wheel_is_installable.py +0 -0
  812. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_workspace_changes.py +0 -0
  813. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_workspace_context.py +0 -0
  814. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_workspace_files.py +0 -0
  815. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_workspace_scope.py +0 -0
  816. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_workspace_service.py +0 -0
  817. {aria_code-0.117.0 → aria_code-0.118.0}/tests/test_workspace_verify.py +0 -0
  818. {aria_code-0.117.0 → aria_code-0.118.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.117.0
3
+ Version: 0.118.0
4
4
  Summary: Open-source AI agent for coding, financial analysis and logistics operations: numbers you can check, client data kept apart, actions a person approves
5
5
  License: Apache-2.0
6
6
  Project-URL: Homepage, https://github.com/artheras/aria-code
@@ -172,7 +172,7 @@ Numbers you can check, client data kept apart, actions a person approves.</p>
172
172
  <p align="center">
173
173
  <a href="https://www.npmjs.com/package/@artheras/aria-code"><img src="https://img.shields.io/npm/v/@artheras/aria-code/latest?style=flat-square&logo=npm&label=npm" alt="npm version"></a>
174
174
  <!-- Release automation pins PyPI: the default endpoint still selects legacy 4.x. -->
175
- <a href="https://pypi.org/project/aria-code/0.117.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.117.0%2Fjson&amp;query=%24.info.version&amp;prefix=v&amp;style=flat-square&amp;logo=pypi&amp;label=PyPI&amp;color=blue&amp;cacheSeconds=300" alt="PyPI version"></a>
175
+ <a href="https://pypi.org/project/aria-code/0.118.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.118.0%2Fjson&amp;query=%24.info.version&amp;prefix=v&amp;style=flat-square&amp;logo=pypi&amp;label=PyPI&amp;color=blue&amp;cacheSeconds=300" alt="PyPI version"></a>
176
176
  <a href="https://github.com/artheras/aria-code/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/artheras/aria-code/ci.yml?branch=main&style=flat-square&logo=githubactions&label=CI" alt="CI status"></a>
177
177
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-64748b?style=flat-square" alt="Apache License 2.0"></a>
178
178
  </p>
@@ -15,7 +15,7 @@ Numbers you can check, client data kept apart, actions a person approves.</p>
15
15
  <p align="center">
16
16
  <a href="https://www.npmjs.com/package/@artheras/aria-code"><img src="https://img.shields.io/npm/v/@artheras/aria-code/latest?style=flat-square&logo=npm&label=npm" alt="npm version"></a>
17
17
  <!-- Release automation pins PyPI: the default endpoint still selects legacy 4.x. -->
18
- <a href="https://pypi.org/project/aria-code/0.117.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.117.0%2Fjson&amp;query=%24.info.version&amp;prefix=v&amp;style=flat-square&amp;logo=pypi&amp;label=PyPI&amp;color=blue&amp;cacheSeconds=300" alt="PyPI version"></a>
18
+ <a href="https://pypi.org/project/aria-code/0.118.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.118.0%2Fjson&amp;query=%24.info.version&amp;prefix=v&amp;style=flat-square&amp;logo=pypi&amp;label=PyPI&amp;color=blue&amp;cacheSeconds=300" alt="PyPI version"></a>
19
19
  <a href="https://github.com/artheras/aria-code/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/artheras/aria-code/ci.yml?branch=main&style=flat-square&logo=githubactions&label=CI" alt="CI status"></a>
20
20
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-64748b?style=flat-square" alt="Apache License 2.0"></a>
21
21
  </p>
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "aria-code"
7
- version = "0.117.0"
7
+ version = "0.118.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.117.0"
20
+ __version__ = "0.118.0"
@@ -33,9 +33,17 @@ class LLMThinking:
33
33
 
34
34
  @dataclass(frozen=True)
35
35
  class LLMToolCall:
36
- """Model requested a tool call."""
36
+ """Model requested a tool call.
37
+
38
+ ``call_id`` and ``thought_signature`` are opaque values some backends
39
+ (Gemini) hand out with a call and require back, unchanged, when the call
40
+ is replayed in history. Providers that have no such thing leave them None.
41
+ The signature is base64 text, not bytes, because history is JSON.
42
+ """
37
43
  tool: str
38
44
  params: dict
45
+ call_id: Optional[str] = None
46
+ thought_signature: Optional[str] = None
39
47
 
40
48
 
41
49
  @dataclass(frozen=True)
@@ -7,8 +7,10 @@ what to do rather than leaking a ModuleNotFoundError.
7
7
  """
8
8
 
9
9
  import asyncio
10
+ import base64
10
11
  import json
11
12
  import os
13
+ import re
12
14
  from typing import AsyncGenerator, Optional
13
15
 
14
16
  from aria_code.apps.cli.providers.base import (
@@ -26,6 +28,13 @@ _MISSING_SDK_MESSAGE = (
26
28
  " 或改用其他模型:/model (Ollama 本地模型无需额外依赖)"
27
29
  )
28
30
 
31
+ # How runtime.agent_loop.build_tool_followup ends its results text; what
32
+ # follows is guidance, not a copy of the results.
33
+ _TOOL_RESULTS_TRAILERS = (
34
+ "\n\n⚠ Tool(s) returned errors:",
35
+ "\n\nAll tools completed successfully.",
36
+ )
37
+
29
38
 
30
39
  import logging
31
40
 
@@ -88,6 +97,40 @@ def _chunk_text(chunk) -> str:
88
97
  return ""
89
98
 
90
99
 
100
+ def _chunk_calls(chunk) -> list:
101
+ """The function calls in a chunk, with their ids and thought signatures.
102
+
103
+ Signatures are base64 text: the call is recorded in history, and history
104
+ is JSON.
105
+ """
106
+ calls = []
107
+ for candidate in (getattr(chunk, "candidates", None) or [])[:1]:
108
+ content = getattr(candidate, "content", None)
109
+ for part in (getattr(content, "parts", None) or []):
110
+ fc = getattr(part, "function_call", None)
111
+ if not fc:
112
+ continue
113
+ call = {
114
+ "tool": fc.name,
115
+ "params": {k: v for k, v in fc.args.items()} if fc.args else {},
116
+ }
117
+ if getattr(fc, "id", None):
118
+ call["call_id"] = fc.id
119
+ signature = getattr(part, "thought_signature", None)
120
+ if signature:
121
+ call["thought_signature"] = base64.b64encode(signature).decode("ascii")
122
+ calls.append(call)
123
+ if not calls:
124
+ # No call parts to read (a chunk without candidates): take the SDK's
125
+ # own list, which has no signatures.
126
+ for fc in (getattr(chunk, "function_calls", None) or []):
127
+ calls.append({
128
+ "tool": fc.name,
129
+ "params": {k: v for k, v in fc.args.items()} if fc.args else {},
130
+ })
131
+ return calls
132
+
133
+
91
134
  class VertexAIProvider(LLMProvider):
92
135
  """Native Vertex AI provider using google-genai."""
93
136
 
@@ -170,40 +213,109 @@ class VertexAIProvider(LLMProvider):
170
213
  self._client = genai.Client(api_key=api_key)
171
214
  return self._client
172
215
 
216
+ def _requires_thought_signatures(self) -> bool:
217
+ """Gemini 3 and later reject a replayed function call without its signature."""
218
+ match = re.search(r"gemini-(\d+)", str(self.model).lower())
219
+ return bool(match) and int(match.group(1)) >= 3
220
+
221
+ @staticmethod
222
+ def _append(contents: list, role: str, parts: list, types) -> None:
223
+ # Gemini requires alternating roles: user, model, user, model.
224
+ if contents and contents[-1].role == role:
225
+ contents[-1].parts.extend(parts)
226
+ else:
227
+ contents.append(types.Content(role=role, parts=parts))
228
+
229
+ @staticmethod
230
+ def _strip_tool_results_text(text: str) -> str:
231
+ """Drop the text copy of tool results from the loop's follow-up message.
232
+
233
+ The follow-up repeats every result as ``## Tool Results ...`` text for
234
+ providers that have no native tool turn. Once the results have gone to
235
+ Gemini as function responses, that copy is not just redundant: it is a
236
+ transcript of tool calls written as prose, and Gemini learns from it to
237
+ write its next calls — and their results — as prose too, which run
238
+ nothing. Only what the loop appends after the results is kept: the
239
+ error / completion guidance and any loop-guard directives.
240
+ """
241
+ cut = max(text.rfind(marker) for marker in _TOOL_RESULTS_TRAILERS)
242
+ return text[cut:].strip() if cut >= 0 else ""
243
+
173
244
  def _messages_to_contents(self, messages: list):
174
245
  # Convert aria chat messages to genai Content objects
175
246
  from google.genai import types
176
-
247
+
177
248
  system_instruction = self.system_override or ""
178
249
  contents = []
179
-
250
+ # Calls from the latest native model turn that still need a
251
+ # function_response, as [name, id] pairs.
252
+ unanswered: list = []
253
+ native_results = False
254
+
255
+ def answer_leftovers() -> None:
256
+ # Gemini rejects a turn that leaves any call of the previous model
257
+ # turn unanswered — e.g. when the batch was cut short.
258
+ parts = [
259
+ types.Part(function_response=types.FunctionResponse(
260
+ name=name, id=call_id, response={"error": "not executed"}))
261
+ for name, call_id in unanswered
262
+ ]
263
+ unanswered.clear()
264
+ if parts:
265
+ self._append(contents, "user", parts, types)
266
+
180
267
  for msg in messages:
181
268
  role = msg.get("role", "user")
182
269
  content_str = msg.get("content", "")
183
-
270
+
184
271
  if role == "system":
185
272
  if system_instruction:
186
273
  system_instruction += "\n\n" + content_str
187
274
  else:
188
275
  system_instruction = content_str
189
276
  continue
190
-
277
+
191
278
  genai_role = "user" if role == "user" else "model"
192
-
279
+
280
+ if role == "assistant" and msg.get("tool_calls"):
281
+ answer_leftovers()
282
+ parts = self._function_call_parts(msg["tool_calls"], types)
283
+ if parts is not None:
284
+ if str(content_str or "").strip():
285
+ parts.insert(0, types.Part.from_text(text=content_str))
286
+ self._append(contents, "model", parts, types)
287
+ unanswered = [
288
+ [part.function_call.name, part.function_call.id]
289
+ for part in parts
290
+ if part.function_call
291
+ ]
292
+ native_results = False
293
+ continue
294
+ # No usable signatures (history from before they were kept, or
295
+ # from another provider): fall through to the text rendering.
296
+
297
+ if role == "tool" and unanswered:
298
+ tool_name = msg.get("name") or ""
299
+ index = next(
300
+ (i for i, (name, _) in enumerate(unanswered) if name == tool_name),
301
+ 0,
302
+ )
303
+ name, call_id = unanswered.pop(index)
304
+ self._append(contents, "user", [types.Part(
305
+ function_response=types.FunctionResponse(
306
+ name=name, id=call_id, response={"result": str(content_str)}),
307
+ )], types)
308
+ native_results = True
309
+ continue
310
+
193
311
  if role == "tool":
194
- # Rendered as text, not as a FunctionResponse part.
312
+ # No native call to answer: rendered as text instead.
195
313
  #
196
314
  # Gemini only accepts a function_response that answers a
197
- # function_call it can see in the preceding model turn, and the
198
- # agent loop does not preserve those: it records the assistant
199
- # turn as plain text. Sending an unanswered function_response
200
- # made the conversation malformed, and Gemini replied with a
201
- # single whitespace character and no tool call — the turn died
202
- # as "empty_response" a round or two in, every time.
203
- #
204
- # The information is not lost by doing this: the loop already
205
- # puts the same results in the follow-up user message that
206
- # comes next, in a form written to be read.
315
+ # function_call it can see in the preceding model turn.
316
+ # Sending an unanswered function_response made the
317
+ # conversation malformed, and Gemini replied with a single
318
+ # whitespace character and no tool call.
207
319
  tool_name = msg.get("name") or "tool"
208
320
  text = f"[{tool_name}] {content_str}".strip()
209
321
  if not text:
@@ -214,7 +326,17 @@ class VertexAIProvider(LLMProvider):
214
326
  contents.append(types.Content(
215
327
  role="user", parts=[types.Part.from_text(text=text)]))
216
328
  continue
217
-
329
+
330
+ answer_leftovers()
331
+ if (
332
+ native_results
333
+ and role == "user"
334
+ and isinstance(content_str, str)
335
+ and content_str.lstrip().startswith("## Tool Results")
336
+ ):
337
+ content_str = self._strip_tool_results_text(content_str)
338
+ native_results = False
339
+
218
340
  # An empty part is worse than no part. When a model answers a turn
219
341
  # with nothing but a function call — which Gemini does routinely,
220
342
  # and which the agent loop records as an assistant message whose
@@ -234,6 +356,37 @@ class VertexAIProvider(LLMProvider):
234
356
 
235
357
  return contents, system_instruction
236
358
 
359
+ def _function_call_parts(self, tool_calls: list, types) -> Optional[list]:
360
+ """The assistant's recorded calls as function_call parts.
361
+
362
+ None when they cannot be replayed natively: Gemini 3 rejects a call
363
+ replayed without the thought signature it was issued with, and calls
364
+ recorded before signatures were kept (or by another provider) have none.
365
+ """
366
+ parts = []
367
+ signed = False
368
+ for tool_call in tool_calls:
369
+ fn = tool_call.get("function", tool_call)
370
+ name = str(fn.get("name") or "")
371
+ if not name:
372
+ continue
373
+ args = fn.get("arguments", {})
374
+ if isinstance(args, str):
375
+ try:
376
+ args = json.loads(args)
377
+ except json.JSONDecodeError:
378
+ args = {}
379
+ part = types.Part(function_call=types.FunctionCall(
380
+ name=name, args=dict(args or {}), id=tool_call.get("id") or None))
381
+ signature = tool_call.get("thought_signature")
382
+ if signature:
383
+ part.thought_signature = base64.b64decode(signature)
384
+ signed = True
385
+ parts.append(part)
386
+ if not parts or (self._requires_thought_signatures() and not signed):
387
+ return None
388
+ return parts
389
+
237
390
  def _schema_from_dict(self, d: dict, types):
238
391
  if not d:
239
392
  return None
@@ -365,11 +518,17 @@ class VertexAIProvider(LLMProvider):
365
518
  full_response += text
366
519
  yield LLMToken(text=text)
367
520
 
368
- if chunk.function_calls:
369
- for fc in chunk.function_calls:
370
- args = {k: v for k, v in fc.args.items()} if fc.args else {}
371
- yield LLMToolCall(tool=fc.name, params=args)
372
- tool_calls.append({"tool": fc.name, "params": args})
521
+ # Read calls from the parts, not chunk.function_calls:
522
+ # the thought signature lives on the part, and Gemini 3
523
+ # refuses the next request if the call is replayed
524
+ # without it.
525
+ for call in _chunk_calls(chunk):
526
+ yield LLMToolCall(
527
+ tool=call["tool"], params=call["params"],
528
+ call_id=call.get("call_id"),
529
+ thought_signature=call.get("thought_signature"),
530
+ )
531
+ tool_calls.append(call)
373
532
 
374
533
  for candidate in (getattr(chunk, "candidates", None) or []):
375
534
  reason = getattr(candidate, "finish_reason", None)
@@ -38,6 +38,10 @@ async def stream_provider_result(
38
38
  on_thinking(event.content)
39
39
  elif event_kind(event) == "LLMToolCall":
40
40
  call = {"tool": event.tool, "params": dict(event.params)}
41
+ if getattr(event, "call_id", None):
42
+ call["call_id"] = event.call_id
43
+ if getattr(event, "thought_signature", None):
44
+ call["thought_signature"] = event.thought_signature
41
45
  tool_calls.append(call)
42
46
  if on_tool_call:
43
47
  on_tool_call(event.tool, dict(event.params))
@@ -9,6 +9,7 @@ from __future__ import annotations
9
9
 
10
10
  import asyncio
11
11
  import inspect
12
+ import re
12
13
  import time
13
14
  from dataclasses import dataclass, field
14
15
  from typing import AsyncGenerator, Awaitable, Callable, Dict, FrozenSet, Iterable, List, Optional, Sequence, Tuple, Union
@@ -933,6 +934,13 @@ async def execute_tool_turn(
933
934
  {
934
935
  "tool": str(tool_call.get("tool", "")),
935
936
  "params": dict(tool_call.get("params", {}) or {}),
937
+ # Opaque provider tokens (Gemini call ids / thought signatures)
938
+ # that must be replayed with the call in the next request.
939
+ **{
940
+ key: tool_call[key]
941
+ for key in ("call_id", "thought_signature")
942
+ if tool_call.get(key)
943
+ },
936
944
  }
937
945
  for tool_call in pending
938
946
  ]
@@ -1010,7 +1018,13 @@ async def execute_tool_turn(
1010
1018
  "function": {
1011
1019
  "name": str(tool_call.get("tool", "")),
1012
1020
  "arguments": dict(tool_call.get("params", {}) or {}),
1013
- }
1021
+ },
1022
+ **({"id": tool_call["call_id"]} if tool_call.get("call_id") else {}),
1023
+ **(
1024
+ {"thought_signature": tool_call["thought_signature"]}
1025
+ if tool_call.get("thought_signature")
1026
+ else {}
1027
+ ),
1014
1028
  }
1015
1029
  for tool_call in pending_transcript
1016
1030
  if tool_call.get("tool")
@@ -1064,6 +1078,37 @@ def _truncate_tool_result(text: str, limit: int = _MAX_TOOL_RESULT_CHARS) -> str
1064
1078
  )
1065
1079
 
1066
1080
 
1081
+ _MAX_TEXT_TOOL_CALL_RETRIES = 2
1082
+
1083
+ # What a reply looks like when the model wrote tool calls instead of making
1084
+ # them: a raw call tag, Gemini's "default_api:" call syntax, or an imitation of
1085
+ # the "## Tool Results" block build_tool_followup produces.
1086
+ _TEXT_TOOL_CALL = re.compile(
1087
+ r"<tool_call>|\bdefault_api[:.]\w|^#{2,3} ?Tool Results\b|^### \[\w+\] (?:✓ Success|❌ Error)",
1088
+ re.MULTILINE,
1089
+ )
1090
+
1091
+ TEXT_TOOL_CALL_DIRECTIVE = (
1092
+ "Your last reply wrote tool calls (or tool results) as text. None of them "
1093
+ "were executed and no files were changed. Do not write calls or results "
1094
+ "out as text: call the tools through function calling, and only report "
1095
+ "results you actually received."
1096
+ )
1097
+
1098
+
1099
+ _CODE_SPAN = re.compile(r"```.*?(?:```|\Z)|`[^`\n]*`", re.DOTALL)
1100
+
1101
+
1102
+ def looks_like_text_tool_calls(text: str) -> bool:
1103
+ """True when a reply with no real tool calls contains written-out ones.
1104
+
1105
+ Code spans are ignored, so an answer that quotes these formats — this
1106
+ being a coding agent, a repo can well contain them — is not mistaken
1107
+ for one.
1108
+ """
1109
+ return bool(text) and bool(_TEXT_TOOL_CALL.search(_CODE_SPAN.sub("", text)))
1110
+
1111
+
1067
1112
  def build_tool_followup(tool_results: Sequence[dict]) -> str:
1068
1113
  """Build a structured follow-up message from tool results.
1069
1114
 
@@ -1353,6 +1398,7 @@ async def run_agent(
1353
1398
  loop_guard = LoopGuard()
1354
1399
  grounded_results = 1 if opts.evidence_already_grounded else 0
1355
1400
  stop_reason = "max_rounds"
1401
+ text_tool_call_retries = 0
1356
1402
 
1357
1403
  for round_num in range(opts.max_rounds):
1358
1404
  # ── 预算闸门 ─────────────────────────────────────────────────────────
@@ -1435,6 +1481,34 @@ async def run_agent(
1435
1481
  turn_state.apply_model_result(result, response_text)
1436
1482
 
1437
1483
  pending = result.get("tool_calls_pending", [])
1484
+ if not pending and looks_like_text_tool_calls(result.get("response") or response_text):
1485
+ # The model wrote its calls (and often their "results") as prose:
1486
+ # nothing ran. Ending here reported a task as done — sometimes with
1487
+ # tests "passing" — while no file had been touched. Say so and
1488
+ # give it the round back; if it keeps doing it, end incomplete.
1489
+ text_tool_call_retries += 1
1490
+ if text_tool_call_retries > _MAX_TEXT_TOOL_CALL_RETRIES:
1491
+ stop_reason = "text_tool_calls"
1492
+ yield AgentEventStatus(
1493
+ state=stop_reason,
1494
+ message="Model kept writing tool calls as text; task remains incomplete",
1495
+ )
1496
+ turn_state.append_response(
1497
+ "\n\nThe model kept writing tool calls as text instead of "
1498
+ "calling the tools; none of them were executed."
1499
+ )
1500
+ break
1501
+ yield AgentEventStatus(
1502
+ state="text_tool_calls",
1503
+ message="Model wrote tool calls as text; asking it to call them",
1504
+ )
1505
+ history = list(history) + [
1506
+ {"role": "user", "content": current_message},
1507
+ {"role": "assistant", "content": turn_state.total_response},
1508
+ ]
1509
+ current_message = TEXT_TOOL_CALL_DIRECTIVE
1510
+ turn_state.reset_response()
1511
+ continue
1438
1512
  if not pending:
1439
1513
  # ── 验收闸门 ─────────────────────────────────────────────────────
1440
1514
  # 模型不再要工具 = 它认为做完了。这是唯一一个「宣称完成」的出口,
@@ -207,21 +207,27 @@ def _robot_text():
207
207
  return face
208
208
 
209
209
 
210
- @lru_cache(maxsize=1)
211
- def _artwork_pixels():
212
- """Rich half-blocks sampled from the reference, without importing Pillow."""
213
- import base64
214
- import zlib
210
+ @lru_cache(maxsize=2)
211
+ def _artwork_pixels(theme: str = "dark"):
212
+ """The robot's pixel map as Rich half-blocks: two flat pixels per cell."""
215
213
  from rich.text import Text
216
- from .robot_pixels import HEIGHT, PIXELS, WIDTH
214
+ from .robot_pixels import GRID, HEIGHT, PALETTES, SEAM_ROW, WIDTH
217
215
 
218
- rgb = zlib.decompress(base64.b85decode(PIXELS))
216
+ colours = PALETTES[theme]
219
217
  face = Text()
220
218
  for y in range(0, HEIGHT, 2):
221
219
  for x in range(WIDTH):
222
- top = rgb[(y * WIDTH + x) * 3:(y * WIDTH + x) * 3 + 3].hex()
223
- bottom = rgb[((y + 1) * WIDTH + x) * 3:((y + 1) * WIDTH + x) * 3 + 3].hex()
224
- face.append("▀", style=f"#{top} on #{bottom}")
220
+ top, bottom = GRID[y][x], GRID[y + 1][x]
221
+ if top == bottom == ".":
222
+ face.append(" ")
223
+ elif bottom == ".":
224
+ face.append("▀", style=colours[top])
225
+ elif top == ".":
226
+ face.append("▄", style=colours[bottom])
227
+ elif y + 1 == SEAM_ROW and top == bottom == "B":
228
+ face.append("▁", style=f"{colours['seam']} on {colours['B']}")
229
+ else:
230
+ face.append("▀", style=f"{colours[top]} on {colours[bottom]}")
225
231
  if y + 2 < HEIGHT:
226
232
  face.append("\n")
227
233
  return face
@@ -234,7 +240,7 @@ def _mascot(console, width: int):
234
240
  escapes, so the PNG is written separately after reserving its cells.
235
241
  """
236
242
  from rich.text import Text
237
- from .robot_pixels import BOUNDS, HEIGHT, WIDTH
243
+ from .robot_pixels import BOUNDS, HEIGHT, IMAGE_COLUMNS, IMAGE_ROWS, WIDTH
238
244
  mode = os.getenv("ARIA_ROBOT_RENDER", "auto").strip().lower()
239
245
  tty = bool(console.is_terminal and getattr(console.file, "isatty", lambda: False)())
240
246
  if mode == "off":
@@ -248,12 +254,14 @@ def _mascot(console, width: int):
248
254
  from .image_render import best_method, render_image
249
255
  method = best_method()
250
256
  if method in ("iterm", "kitty"):
251
- rows = (HEIGHT + 1) // 2 + 1 # aspect-preserving image may occupy a fraction more
252
257
  asset = Path(__file__).parent / "assets" / "aria-robot.png"
253
- sequence = render_image(str(asset), WIDTH, method, crop=BOUNDS, cells_high=rows)
258
+ sequence = render_image(str(asset), IMAGE_COLUMNS, method, crop=BOUNDS,
259
+ cells_high=IMAGE_ROWS)
254
260
  if sequence and sequence.startswith(("\x1b]1337;", "\x1b_G")):
255
- return Text("\n".join([" " * WIDTH] * rows)), WIDTH, rows, sequence
256
- return _artwork_pixels().copy(), WIDTH, HEIGHT // 2, None
261
+ blank = Text("\n".join([" " * IMAGE_COLUMNS] * IMAGE_ROWS))
262
+ return blank, IMAGE_COLUMNS, IMAGE_ROWS, sequence
263
+ theme = "light" if _is_light_theme() else "dark"
264
+ return _artwork_pixels(theme).copy(), WIDTH, HEIGHT // 2, None
257
265
 
258
266
 
259
267
  def _summary_lines(view: StartupDashboardViewModel) -> list[str]:
@@ -0,0 +1,80 @@
1
+ """The robot as a pixel map, for terminals that cannot show the PNG.
2
+
3
+ Drawn by hand on the artwork's own unit grid, the way Claude Code draws its
4
+ mascot: every pixel is one flat colour from a small palette, and each
5
+ terminal cell shows two of them (``▀``, foreground on background).
6
+
7
+ This used to be the PNG shrunk to 20×18 with box resampling. The artwork's
8
+ units are about 26 px and do not line up with such a grid, so most output
9
+ pixels averaged two or three colours: grey seams around the screen, a
10
+ smeared eye and dash, feet that ran into each other. A map has no edges to
11
+ average.
12
+
13
+ Grid: 18 units wide × 16 tall, measured from ``assets/aria-robot.png``
14
+ (units ~26.4 × 27.3 px inside BOUNDS): ears 1 wide and 3 tall, a notched
15
+ cap, a 12 × 8 screen with a 2 × 2 eye and a 2 × 1 dash placed mirror-wise,
16
+ the body, the grey base, and four 2-wide feet. The orange seam between body
17
+ and base is thinner than a unit, so it is drawn as a ``▁`` on the last body
18
+ row instead of a pixel row.
19
+ """
20
+
21
+ # Crop of assets/aria-robot.png that holds the robot, and the cells an
22
+ # inline image of it takes (an aspect-preserving image may need a row more).
23
+ BOUNDS = (389, 417, 865, 854)
24
+ IMAGE_COLUMNS = 20
25
+ IMAGE_ROWS = 10
26
+
27
+ WIDTH = 18
28
+ HEIGHT = 16
29
+
30
+ # "." is transparent: the terminal's own background shows through.
31
+ GRID = (
32
+ "..BBBBBBBBBBBBBB..",
33
+ ".BBBBBBBBBBBBBBBB.",
34
+ ".BBSSSSSSSSSSSSBB.",
35
+ ".BBSSSSSSSSSSSSBB.",
36
+ ".BBSSSSSSSSSSSSBB.",
37
+ "GBBSSEESSSSSSSSBBG",
38
+ "GBBSSEESSSSDDSSBBG",
39
+ "gBBSSSSSSSSSSSSBBg",
40
+ ".BBSSSSSSSSSSSSBB.",
41
+ ".BBSSSSSSSSSSSSBB.",
42
+ ".BBBBBBBBBBBBBBBB.",
43
+ ".BBBBBBBBBBBBBBBB.",
44
+ ".AAAAAAAAAAAAAAAA.",
45
+ "..FF..FF..FF..FF..",
46
+ "..ff..ff..ff..ff..",
47
+ "..................",
48
+ )
49
+
50
+ # Row (of GRID) whose bottom edge carries the orange seam.
51
+ SEAM_ROW = 11
52
+
53
+ # Sampled from the artwork. Light terminals get a deeper body, as the
54
+ # quadrant mascot in robot.py does: the artwork's cream vanishes on white.
55
+ PALETTES = {
56
+ "dark": {
57
+ "B": "#F4EBE4", # cream shell
58
+ "S": "#0E0E0E", # screen
59
+ "E": "#F4EBE2", # square eye
60
+ "D": "#FDB467", # orange dash
61
+ "G": "#BAB1A8", # ear
62
+ "g": "#7A7168", # ear, shaded underside
63
+ "A": "#B6ADA4", # base
64
+ "F": "#B9B0A7", # feet
65
+ "f": "#847B72", # feet, shaded
66
+ "seam": "#F9AF64",
67
+ },
68
+ "light": {
69
+ "B": "#E6DDD0",
70
+ "S": "#0E0E0E",
71
+ "E": "#F6F2EA",
72
+ "D": "#FDB467",
73
+ "G": "#A39C93",
74
+ "g": "#6F675F",
75
+ "A": "#A39C93",
76
+ "F": "#A39C93",
77
+ "f": "#756D65",
78
+ "seam": "#F2A456",
79
+ },
80
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aria-code
3
- Version: 0.117.0
3
+ Version: 0.118.0
4
4
  Summary: Open-source AI agent for coding, financial analysis and logistics operations: numbers you can check, client data kept apart, actions a person approves
5
5
  License: Apache-2.0
6
6
  Project-URL: Homepage, https://github.com/artheras/aria-code
@@ -172,7 +172,7 @@ Numbers you can check, client data kept apart, actions a person approves.</p>
172
172
  <p align="center">
173
173
  <a href="https://www.npmjs.com/package/@artheras/aria-code"><img src="https://img.shields.io/npm/v/@artheras/aria-code/latest?style=flat-square&logo=npm&label=npm" alt="npm version"></a>
174
174
  <!-- Release automation pins PyPI: the default endpoint still selects legacy 4.x. -->
175
- <a href="https://pypi.org/project/aria-code/0.117.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.117.0%2Fjson&amp;query=%24.info.version&amp;prefix=v&amp;style=flat-square&amp;logo=pypi&amp;label=PyPI&amp;color=blue&amp;cacheSeconds=300" alt="PyPI version"></a>
175
+ <a href="https://pypi.org/project/aria-code/0.118.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.118.0%2Fjson&amp;query=%24.info.version&amp;prefix=v&amp;style=flat-square&amp;logo=pypi&amp;label=PyPI&amp;color=blue&amp;cacheSeconds=300" alt="PyPI version"></a>
176
176
  <a href="https://github.com/artheras/aria-code/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/artheras/aria-code/ci.yml?branch=main&style=flat-square&logo=githubactions&label=CI" alt="CI status"></a>
177
177
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-64748b?style=flat-square" alt="Apache License 2.0"></a>
178
178
  </p>
@@ -797,6 +797,7 @@ tests/test_version_counter.py
797
797
  tests/test_vertex_busy_retry.py
798
798
  tests/test_vertex_empty_rounds.py
799
799
  tests/test_vertex_models.py
800
+ tests/test_vertexai_tool_history.py
800
801
  tests/test_video_analysis.py
801
802
  tests/test_video_editor.py
802
803
  tests/test_vscode_mcp.py