aria-code 0.117.0__tar.gz → 0.119.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.119.0}/PKG-INFO +2 -2
  2. {aria_code-0.117.0 → aria_code-0.119.0}/README.md +1 -1
  3. {aria_code-0.117.0 → aria_code-0.119.0}/pyproject.toml +1 -2
  4. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/_version.py +1 -1
  5. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/providers/base.py +9 -1
  6. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/providers/vertexai_stream.py +181 -22
  7. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_sdk/streaming.py +4 -0
  8. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/runtime/agent_loop.py +75 -1
  9. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/ui/banner.py +9 -53
  10. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/ui/robot.py +17 -15
  11. {aria_code-0.117.0 → aria_code-0.119.0/src/aria_code.egg-info}/PKG-INFO +2 -2
  12. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code.egg-info/SOURCES.txt +1 -3
  13. aria_code-0.119.0/tests/test_robot_artwork.py +50 -0
  14. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_runtime_agent_loop.py +96 -0
  15. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_ui_robot_banner.py +10 -9
  16. aria_code-0.119.0/tests/test_vertexai_tool_history.py +145 -0
  17. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_wheel_is_installable.py +1 -2
  18. aria_code-0.117.0/src/aria_code/ui/assets/aria-robot.png +0 -0
  19. aria_code-0.117.0/src/aria_code/ui/image_render.py +0 -239
  20. aria_code-0.117.0/src/aria_code/ui/robot_pixels.py +0 -6
  21. aria_code-0.117.0/tests/test_robot_artwork.py +0 -101
  22. {aria_code-0.117.0 → aria_code-0.119.0}/LICENSE +0 -0
  23. {aria_code-0.117.0 → aria_code-0.119.0}/NOTICE +0 -0
  24. {aria_code-0.117.0 → aria_code-0.119.0}/setup.cfg +0 -0
  25. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/__init__.py +0 -0
  26. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/adk_apps/__init__.py +0 -0
  27. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/adk_apps/aria_code_review/__init__.py +0 -0
  28. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/adk_apps/aria_code_review/agent.py +0 -0
  29. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/adk_apps/aria_research/__init__.py +0 -0
  30. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/adk_apps/aria_research/agent.py +0 -0
  31. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/__init__.py +0 -0
  32. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/base.py +0 -0
  33. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/code_review.py +0 -0
  34. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/deep/__init__.py +0 -0
  35. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/deep/calibration_loop.py +0 -0
  36. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/deep/critic.py +0 -0
  37. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/deep/deepen.py +0 -0
  38. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/deep/models.py +0 -0
  39. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/deep/pipeline.py +0 -0
  40. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/deep/quant_fusion.py +0 -0
  41. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/deep/themes.py +0 -0
  42. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/deep/tiers.py +0 -0
  43. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/engineering/__init__.py +0 -0
  44. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/engineering/coder.py +0 -0
  45. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/engineering/tester.py +0 -0
  46. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/financial/__init__.py +0 -0
  47. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/financial/cashflow_burn.py +0 -0
  48. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/financial/catalyst.py +0 -0
  49. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/financial/corporate_finance.py +0 -0
  50. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/financial/debate.py +0 -0
  51. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/financial/earnings.py +0 -0
  52. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/financial/fundamental.py +0 -0
  53. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/financial/macro.py +0 -0
  54. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/financial/news.py +0 -0
  55. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/financial/risk.py +0 -0
  56. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/financial/sector.py +0 -0
  57. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/financial/strategist.py +0 -0
  58. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/financial/stripe_revenue.py +0 -0
  59. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/financial/synthesis.py +0 -0
  60. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/financial/technical.py +0 -0
  61. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/orchestrator.py +0 -0
  62. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/portfolio_agent.py +0 -0
  63. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/realty/__init__.py +0 -0
  64. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/realty/asset_diagnosis.py +0 -0
  65. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/realty/business_match.py +0 -0
  66. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/realty/cashflow_verify.py +0 -0
  67. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/realty/contract_rules.py +0 -0
  68. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/realty/energy_anomaly.py +0 -0
  69. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/realty/exit_settlement.py +0 -0
  70. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/realty/fulfillment_risk.py +0 -0
  71. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/realty/ops_optimize.py +0 -0
  72. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/realty/revenue_share.py +0 -0
  73. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/registry.py +0 -0
  74. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/signal_scheme.py +0 -0
  75. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/sports/__init__.py +0 -0
  76. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/sports/football_agent.py +0 -0
  77. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/supervisor.py +0 -0
  78. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/team.py +0 -0
  79. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/warehouse/__init__.py +0 -0
  80. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/warehouse/contracts.py +0 -0
  81. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/warehouse/dashboard.py +0 -0
  82. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/warehouse/fulfillment_leadtime.py +0 -0
  83. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/warehouse/inbound_exceptions.py +0 -0
  84. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/warehouse/inventory_health.py +0 -0
  85. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/warehouse/local_run.py +0 -0
  86. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/warehouse/local_snapshot.py +0 -0
  87. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/warehouse/logistics_cost.py +0 -0
  88. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/warehouse/logistics_sync.py +0 -0
  89. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/agents/warehouse/workflow.py +0 -0
  90. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/aliyun_data_client.py +0 -0
  91. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/README.md +0 -0
  92. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/__init__.py +0 -0
  93. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/channels/README.md +0 -0
  94. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/channels/__init__.py +0 -0
  95. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/channels/approvals.py +0 -0
  96. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/channels/conversation.py +0 -0
  97. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/channels/digest.py +0 -0
  98. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/channels/intake.py +0 -0
  99. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/channels/registry.py +0 -0
  100. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/channels/tradingview.py +0 -0
  101. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/README.md +0 -0
  102. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/__init__.py +0 -0
  103. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/_optional.py +0 -0
  104. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/bootstrap.py +0 -0
  105. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/broker_render.py +0 -0
  106. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/chat_turn.py +0 -0
  107. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/codegen_paths.py +0 -0
  108. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/__init__.py +0 -0
  109. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/_business_render.py +0 -0
  110. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/_ui.py +0 -0
  111. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/analysis_cmds.py +0 -0
  112. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/ashare_prediction_cmds.py +0 -0
  113. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/auth_cmds.py +0 -0
  114. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/backtest_cmds.py +0 -0
  115. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/broker_cmds.py +0 -0
  116. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/business_workflow_cmds.py +0 -0
  117. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/canvas_cmds.py +0 -0
  118. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/catalog.py +0 -0
  119. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/core_cmds.py +0 -0
  120. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/data_cmds.py +0 -0
  121. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/diagnostic_cmds.py +0 -0
  122. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/diagnostic_ops_cmds.py +0 -0
  123. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/file_cmds.py +0 -0
  124. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/finance_service_cmds.py +0 -0
  125. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/fx_commodity_cmds.py +0 -0
  126. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/market.py +0 -0
  127. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/market_cmds.py +0 -0
  128. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/market_context.py +0 -0
  129. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/market_render.py +0 -0
  130. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/model_cmds.py +0 -0
  131. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/ops_cmds.py +0 -0
  132. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/orchestrator_cmds.py +0 -0
  133. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/pdf_export_cmds.py +0 -0
  134. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/portfolio_cmds.py +0 -0
  135. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/report.py +0 -0
  136. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/scaffold_templates.py +0 -0
  137. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/session_cmds.py +0 -0
  138. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/session_ux_cmds.py +0 -0
  139. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/team.py +0 -0
  140. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/team_render.py +0 -0
  141. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/ui_cmds.py +0 -0
  142. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/warehouse_cmds.py +0 -0
  143. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/workflow_cmds.py +0 -0
  144. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/commands/workspace_cmds.py +0 -0
  145. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/config_paths.py +0 -0
  146. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/config_store.py +0 -0
  147. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/constants.py +0 -0
  148. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/context.py +0 -0
  149. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/deterministic.py +0 -0
  150. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/direct.py +0 -0
  151. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/earnings_view.py +0 -0
  152. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/exec_events.py +0 -0
  153. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/finance_service_catalog.py +0 -0
  154. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/football_reports.py +0 -0
  155. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/github_app_auth.py +0 -0
  156. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/google_login.py +0 -0
  157. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/handlers/__init__.py +0 -0
  158. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/handlers/broker_handlers.py +0 -0
  159. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/handlers/chart_handlers.py +0 -0
  160. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/handlers/market_handlers.py +0 -0
  161. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/handlers/realty_handlers.py +0 -0
  162. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/handlers/sports_handlers.py +0 -0
  163. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/handlers/strategy_advice.py +0 -0
  164. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/headless.py +0 -0
  165. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/helpers.py +0 -0
  166. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/hooks.py +0 -0
  167. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/i18n.py +0 -0
  168. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/intent.py +0 -0
  169. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/intent_router.py +0 -0
  170. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/intent_signals.py +0 -0
  171. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/lifecycle_hooks.py +0 -0
  172. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/local_tool_schemas.py +0 -0
  173. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/main.py +0 -0
  174. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/market_hours.py +0 -0
  175. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/market_metadata.py +0 -0
  176. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/market_universe.py +0 -0
  177. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/message_processing.py +0 -0
  178. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/mixin_binding.py +0 -0
  179. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/model_catalog.py +0 -0
  180. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/model_probe.py +0 -0
  181. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/model_retirement.py +0 -0
  182. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/pdf_report.py +0 -0
  183. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/plan_mode.py +0 -0
  184. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/plotly_html.py +0 -0
  185. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/prediction_feedback.py +0 -0
  186. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/preflight.py +0 -0
  187. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/project_aria.py +0 -0
  188. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/prompt_assembly.py +0 -0
  189. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/prompts/__init__.py +0 -0
  190. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/prompts/coding.py +0 -0
  191. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/prompts/select.py +0 -0
  192. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/prompts/system_prompts.py +0 -0
  193. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/prompts/ui.py +0 -0
  194. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/provider_endpoints.py +0 -0
  195. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/provider_keys.py +0 -0
  196. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/providers/__init__.py +0 -0
  197. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/providers/chat_routing.py +0 -0
  198. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/providers/collaboration.py +0 -0
  199. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/providers/llm/__init__.py +0 -0
  200. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/providers/llm/offline_responses.py +0 -0
  201. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/providers/llm/ollama_stream.py +0 -0
  202. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/providers/llm/response_cache.py +0 -0
  203. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/providers/llm/sse_stream.py +0 -0
  204. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/providers/runtime_bridge.py +0 -0
  205. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/release_download.py +0 -0
  206. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/review_runner.py +0 -0
  207. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/runtime_consumer.py +0 -0
  208. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/sandbox.py +0 -0
  209. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/session_export.py +0 -0
  210. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/session_jsonl.py +0 -0
  211. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/session_store.py +0 -0
  212. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/skills_catalog.py +0 -0
  213. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/terminal_chrome.py +0 -0
  214. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/todo_tracker.py +0 -0
  215. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/tool_executor.py +0 -0
  216. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/tool_registry.py +0 -0
  217. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/tool_scope.py +0 -0
  218. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/tools/__init__.py +0 -0
  219. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/tools/context.py +0 -0
  220. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/tools/file_tools.py +0 -0
  221. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/tools/market_tools.py +0 -0
  222. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/tools/notebook_tools.py +0 -0
  223. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/tools/system_tools.py +0 -0
  224. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/tools/write_tools.py +0 -0
  225. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/tradingview_bridge.py +0 -0
  226. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/turn_planning.py +0 -0
  227. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/update_check.py +0 -0
  228. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/updater.py +0 -0
  229. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/utils/__init__.py +0 -0
  230. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/utils/market_detect.py +0 -0
  231. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/cli/workspace_route.py +0 -0
  232. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/daemon/README.md +0 -0
  233. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/vscode/README.md +0 -0
  234. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/apps/vscode/package.json +0 -0
  235. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/aria_cli.py +0 -0
  236. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/aria_daemon.py +0 -0
  237. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/aria_feishu_bot.py +0 -0
  238. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/aria_mcp_server.py +0 -0
  239. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/aria_relay_client.py +0 -0
  240. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/aria_relay_server.py +0 -0
  241. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/aria_telegram_bot.py +0 -0
  242. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/ariarc.py +0 -0
  243. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/artifacts.py +0 -0
  244. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/backtest_engine.py +0 -0
  245. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/backtest_report.py +0 -0
  246. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/brokers/__init__.py +0 -0
  247. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/brokers/automation.py +0 -0
  248. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/brokers/base.py +0 -0
  249. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/brokers/capabilities.py +0 -0
  250. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/brokers/cn/__init__.py +0 -0
  251. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/brokers/cn/easytrader_broker.py +0 -0
  252. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/brokers/cn/futu_broker.py +0 -0
  253. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/brokers/cn/longbridge_broker.py +0 -0
  254. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/brokers/cn/tiger_broker.py +0 -0
  255. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/brokers/cn/xtquant_broker.py +0 -0
  256. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/brokers/config.py +0 -0
  257. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/brokers/intl/__init__.py +0 -0
  258. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/brokers/intl/alpaca_broker.py +0 -0
  259. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/brokers/intl/ibkr_broker.py +0 -0
  260. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/brokers/intl/trading212_broker.py +0 -0
  261. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/brokers/intl/webull_broker.py +0 -0
  262. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/brokers/paper_broker.py +0 -0
  263. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/brokers/planning.py +0 -0
  264. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/brokers/registry.py +0 -0
  265. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/brokers/trading.py +0 -0
  266. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/canva_client.py +0 -0
  267. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/change_store.py +0 -0
  268. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/clients/__init__.py +0 -0
  269. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/clients/aliyun_data_client.py +0 -0
  270. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/clients/aria_relay_client.py +0 -0
  271. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/clients/canva_client.py +0 -0
  272. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/clients/figma_client.py +0 -0
  273. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/clients/football_data_client.py +0 -0
  274. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/clients/kling_video_client.py +0 -0
  275. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/clients/market_data_client.py +0 -0
  276. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/clients/openai_image_client.py +0 -0
  277. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/clients/runway_video_client.py +0 -0
  278. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/clients/warehouse_erp_client.py +0 -0
  279. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/cloud_memory.py +0 -0
  280. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/command_safety.py +0 -0
  281. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/computer_use_tools.py +0 -0
  282. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/dashboard_generator.py +0 -0
  283. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/data_analysis_tools.py +0 -0
  284. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/data_cleaner.py +0 -0
  285. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/data_service.py +0 -0
  286. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/datasources/__init__.py +0 -0
  287. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/datasources/base.py +0 -0
  288. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/datasources/router.py +0 -0
  289. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/datasources/sources/__init__.py +0 -0
  290. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/datasources/sources/akshare_source.py +0 -0
  291. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/datasources/sources/alpha_vantage_source.py +0 -0
  292. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/datasources/sources/edgar_source.py +0 -0
  293. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/datasources/sources/finnhub_source.py +0 -0
  294. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/datasources/sources/fred_source.py +0 -0
  295. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/datasources/sources/tushare_source.py +0 -0
  296. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/datasources/sources/web_scraper_source.py +0 -0
  297. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/datasources/sources/world_bank_source.py +0 -0
  298. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/datasources/sources/yfinance_source.py +0 -0
  299. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/demo_player.py +0 -0
  300. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/doctor.py +0 -0
  301. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/domain/__init__.py +0 -0
  302. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/domain/backtest_engine.py +0 -0
  303. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/domain/backtest_report.py +0 -0
  304. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/domain/finance_formulas.py +0 -0
  305. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/domain/portfolio_ledger.py +0 -0
  306. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/domain/strategy_vault.py +0 -0
  307. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/evals/__init__.py +0 -0
  308. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/evals/gap.py +0 -0
  309. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/evals/harness.py +0 -0
  310. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/evals/runner.py +0 -0
  311. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/evals/summary.py +0 -0
  312. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/external_agent_runner.py +0 -0
  313. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/figma_client.py +0 -0
  314. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/file_analysis_tools.py +0 -0
  315. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/finance_formulas.py +0 -0
  316. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/football_data_client.py +0 -0
  317. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/image_gen_tools.py +0 -0
  318. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/intent_classifier.py +0 -0
  319. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/kling_video_client.py +0 -0
  320. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/licensing.py +0 -0
  321. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/local_finance_tools.py +0 -0
  322. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/local_image_provider.py +0 -0
  323. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/local_llm_provider.py +0 -0
  324. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/macro_tools.py +0 -0
  325. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/markdown_pdf.py +0 -0
  326. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/market_data_client.py +0 -0
  327. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/mcp_client.py +0 -0
  328. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/memory_manager.py +0 -0
  329. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/model_capability.py +0 -0
  330. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/notification_tools.py +0 -0
  331. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/openai_image_client.py +0 -0
  332. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/__init__.py +0 -0
  333. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/adk_bridge/__init__.py +0 -0
  334. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/adk_bridge/code_review_tools.py +0 -0
  335. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/adk_bridge/market_tools.py +0 -0
  336. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_agents/__init__.py +0 -0
  337. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_agents/manifest.py +0 -0
  338. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_core/__init__.py +0 -0
  339. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_core/architecture.py +0 -0
  340. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_core/export.py +0 -0
  341. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_core/manifest.py +0 -0
  342. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_core/paths.py +0 -0
  343. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_core/secure_file.py +0 -0
  344. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_infra/__init__.py +0 -0
  345. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_infra/arthera.py +0 -0
  346. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_infra/doctor.py +0 -0
  347. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_infra/product.py +0 -0
  348. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_mcp/__init__.py +0 -0
  349. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_mcp/bridge.py +0 -0
  350. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_mcp/circuit.py +0 -0
  351. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_mcp/config.py +0 -0
  352. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_mcp/installer.py +0 -0
  353. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_mcp/server.py +0 -0
  354. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_mcp/tools.py +0 -0
  355. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_sdk/__init__.py +0 -0
  356. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_sdk/client.py +0 -0
  357. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_sdk/providers.py +0 -0
  358. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_sdk/types.py +0 -0
  359. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_services/__init__.py +0 -0
  360. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_services/cache.py +0 -0
  361. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_services/context.py +0 -0
  362. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_services/context_checkpoints.py +0 -0
  363. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_services/data.py +0 -0
  364. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_services/provider_health.py +0 -0
  365. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_services/references.py +0 -0
  366. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_services/registry.py +0 -0
  367. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_services/research_protocol.py +0 -0
  368. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_services/research_quality.py +0 -0
  369. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_services/settings.py +0 -0
  370. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_services/usage.py +0 -0
  371. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_skills/__init__.py +0 -0
  372. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_skills/catalog.py +0 -0
  373. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_skills/loader.py +0 -0
  374. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_skills/registry.py +0 -0
  375. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_tools/__init__.py +0 -0
  376. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_tools/financial/__init__.py +0 -0
  377. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_tools/financial/_paths.py +0 -0
  378. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_tools/financial/compliance.py +0 -0
  379. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_tools/financial/factors.py +0 -0
  380. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_tools/financial/risk_tools.py +0 -0
  381. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_tools/financial/strategy.py +0 -0
  382. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/aria_tools/registry.py +0 -0
  383. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/quant_engine/__init__.py +0 -0
  384. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/quant_engine/_namespace.py +0 -0
  385. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/quant_engine/backtest/__init__.py +0 -0
  386. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/quant_engine/backtest/core.py +0 -0
  387. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/quant_engine/backtest/engine.py +0 -0
  388. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/quant_engine/portfolio/__init__.py +0 -0
  389. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/quant_engine/portfolio/optimizer.py +0 -0
  390. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/quant_engine/sports/__init__.py +0 -0
  391. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/quant_engine/sports/calibrator.py +0 -0
  392. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/quant_engine/sports/dixon_coles.py +0 -0
  393. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/quant_engine/sports/elo.py +0 -0
  394. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/quant_engine/sports/form.py +0 -0
  395. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/quant_engine/sports/h2h.py +0 -0
  396. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/quant_engine/sports/ml_model.py +0 -0
  397. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/quant_engine/sports/predictor.py +0 -0
  398. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/quant_engine/sports/tracker.py +0 -0
  399. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/quant_engine/stochastic/__init__.py +0 -0
  400. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/quant_engine/stochastic/gbm_enhanced.py +0 -0
  401. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/quant_engine/stochastic/ito_calculus.py +0 -0
  402. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/quant_engine/stochastic/kelly_criterion.py +0 -0
  403. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/quant_engine/stochastic/monte_carlo_advanced.py +0 -0
  404. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/quant_engine/stochastic/options_pricing.py +0 -0
  405. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packages/quant_engine/stochastic/stochastic_processes.py +0 -0
  406. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packs/__init__.py +0 -0
  407. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packs/base.py +0 -0
  408. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packs/finance/__init__.py +0 -0
  409. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packs/logistics/__init__.py +0 -0
  410. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packs/payments/__init__.py +0 -0
  411. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packs/realty/__init__.py +0 -0
  412. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packs/registry.py +0 -0
  413. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/packs/rules.py +0 -0
  414. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/plan_utils.py +0 -0
  415. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/plugin_loader.py +0 -0
  416. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/portfolio_ledger.py +0 -0
  417. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/preview_server.py +0 -0
  418. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/privacy/__init__.py +0 -0
  419. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/privacy/feedback.py +0 -0
  420. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/project_review.py +0 -0
  421. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/project_review_api.py +0 -0
  422. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/project_review_server.py +0 -0
  423. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/project_tools.py +0 -0
  424. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/providers/__init__.py +0 -0
  425. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/providers/llm/__init__.py +0 -0
  426. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/providers/llm/anthropic.py +0 -0
  427. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/providers/llm/autoconfig.py +0 -0
  428. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/providers/llm/base.py +0 -0
  429. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/providers/llm/custom.py +0 -0
  430. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/providers/llm/ollama.py +0 -0
  431. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/providers/llm/openai_compat.py +0 -0
  432. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/providers/llm/registry.py +0 -0
  433. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/providers/local_image_provider.py +0 -0
  434. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/providers/local_llm_provider.py +0 -0
  435. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/providers/tool_messages.py +0 -0
  436. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/realty_data_tools.py +0 -0
  437. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/relay_store.py +0 -0
  438. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/report_exporters.py +0 -0
  439. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/report_generator.py +0 -0
  440. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/review_service.py +0 -0
  441. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/runtime/__init__.py +0 -0
  442. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/runtime/acceptance.py +0 -0
  443. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/runtime/approval.py +0 -0
  444. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/runtime/budget.py +0 -0
  445. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/runtime/checkpoints.py +0 -0
  446. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/runtime/crash_report.py +0 -0
  447. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/runtime/events.py +0 -0
  448. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/runtime/gateway.py +0 -0
  449. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/runtime/lsp.py +0 -0
  450. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/runtime/orchestrator.py +0 -0
  451. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/runtime/processes.py +0 -0
  452. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/runtime/repo_map.py +0 -0
  453. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/runtime/run_state.py +0 -0
  454. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/runtime/run_store.py +0 -0
  455. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/runtime/self_healing.py +0 -0
  456. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/runtime/subagent.py +0 -0
  457. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/runtime/task_ledger.py +0 -0
  458. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/runtime/task_orchestrator.py +0 -0
  459. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/runtime/tool_executor.py +0 -0
  460. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/runtime/tool_policy.py +0 -0
  461. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/runtime/windows_job.py +0 -0
  462. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/runtime/worktrees.py +0 -0
  463. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/runway_video_client.py +0 -0
  464. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/safety/__init__.py +0 -0
  465. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/safety/client_isolation.py +0 -0
  466. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/safety/permissions.py +0 -0
  467. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/safety/sandbox.py +0 -0
  468. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/safety/service.py +0 -0
  469. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/setup_wizard.py +0 -0
  470. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/spreadsheet_tools.py +0 -0
  471. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/strategy_vault.py +0 -0
  472. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/tools/__init__.py +0 -0
  473. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/tools/artifact_tools.py +0 -0
  474. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/tools/broker_tools.py +0 -0
  475. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/tools/build_quant_engine.py +0 -0
  476. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/tools/code_audit_tools.py +0 -0
  477. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/tools/computer_use_tools.py +0 -0
  478. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/tools/data_analysis_tools.py +0 -0
  479. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/tools/enterprise_finance_tools.py +0 -0
  480. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/tools/extended_tools.py +0 -0
  481. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/tools/file_analysis_tools.py +0 -0
  482. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/tools/image_gen_tools.py +0 -0
  483. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/tools/local_finance_tools.py +0 -0
  484. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/tools/logistics_carriers.py +0 -0
  485. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/tools/logistics_inventory.py +0 -0
  486. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/tools/logistics_io.py +0 -0
  487. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/tools/logistics_tenancy.py +0 -0
  488. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/tools/logistics_tools.py +0 -0
  489. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/tools/macro_tools.py +0 -0
  490. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/tools/notification_tools.py +0 -0
  491. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/tools/project_tools.py +0 -0
  492. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/tools/realty_data_tools.py +0 -0
  493. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/tools/spreadsheet_tools.py +0 -0
  494. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/tools/stripe_tools.py +0 -0
  495. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/training/__init__.py +0 -0
  496. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/training/compare.py +0 -0
  497. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/training/sft_dataset.py +0 -0
  498. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/ui/__init__.py +0 -0
  499. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/ui/completer.py +0 -0
  500. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/ui/console.py +0 -0
  501. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/ui/input_box.py +0 -0
  502. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/ui/mentions.py +0 -0
  503. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/ui/picker.py +0 -0
  504. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/ui/render/__init__.py +0 -0
  505. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/ui/render/finance.py +0 -0
  506. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/ui/render/market.py +0 -0
  507. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/ui/render/output.py +0 -0
  508. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/ui/render/responsive.py +0 -0
  509. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/ui/render/team.py +0 -0
  510. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/ui/startup_dashboard.py +0 -0
  511. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/utils/vscode_uri.py +0 -0
  512. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/video_analysis.py +0 -0
  513. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/video_editor.py +0 -0
  514. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/workspace/__init__.py +0 -0
  515. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/workspace/files.py +0 -0
  516. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/workspace/verify.py +0 -0
  517. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/workspace_changes.py +0 -0
  518. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/workspace_context.py +0 -0
  519. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/workspace_service.py +0 -0
  520. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code/workspace_tools.py +0 -0
  521. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code.egg-info/dependency_links.txt +0 -0
  522. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code.egg-info/entry_points.txt +0 -0
  523. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code.egg-info/requires.txt +0 -0
  524. {aria_code-0.117.0 → aria_code-0.119.0}/src/aria_code.egg-info/top_level.txt +0 -0
  525. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_adk_market_tools.py +0 -0
  526. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_agent_key_points_language.py +0 -0
  527. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_agent_team_fallback.py +0 -0
  528. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_analyze_file_tool.py +0 -0
  529. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_architecture_ledger_is_true.py +0 -0
  530. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_architecture_report.py +0 -0
  531. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_aria_cli_core.py +0 -0
  532. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_aria_mcp_server.py +0 -0
  533. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_aria_sdk.py +0 -0
  534. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_artifact_publishing.py +0 -0
  535. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_artifacts_and_reports.py +0 -0
  536. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_ashare_prediction_cmds.py +0 -0
  537. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_background_processes.py +0 -0
  538. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_backtest_cmds.py +0 -0
  539. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_backtest_engine.py +0 -0
  540. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_backtest_report.py +0 -0
  541. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_backtest_runs_what_it_names.py +0 -0
  542. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_binary_bundles_runtime_imports.py +0 -0
  543. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_broken_akshare_is_optional.py +0 -0
  544. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_broker_automation.py +0 -0
  545. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_broker_chat_confirm_gate.py +0 -0
  546. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_broker_planning.py +0 -0
  547. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_broker_safety.py +0 -0
  548. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_broker_tools.py +0 -0
  549. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_budget.py +0 -0
  550. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_business_workflow_cmds.py +0 -0
  551. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_callback_provider_cleanup.py +0 -0
  552. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_canva_client.py +0 -0
  553. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_canvas_cmds.py +0 -0
  554. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_card_approvals.py +0 -0
  555. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_channel_intake.py +0 -0
  556. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_channels.py +0 -0
  557. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_chart_handlers.py +0 -0
  558. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_chat_bots_fail_closed.py +0 -0
  559. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_chat_routing.py +0 -0
  560. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_ci_security_workflow.py +0 -0
  561. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_cli_app_split.py +0 -0
  562. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_cli_bootstrap.py +0 -0
  563. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_cli_config_store.py +0 -0
  564. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_cli_lifecycle_hooks.py +0 -0
  565. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_cli_runtime_consumer.py +0 -0
  566. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_cli_tool_executor_module.py +0 -0
  567. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_cli_updater.py +0 -0
  568. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_client_isolation_guard.py +0 -0
  569. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_cloud_memory.py +0 -0
  570. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_code_audit_tools.py +0 -0
  571. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_code_review_agent.py +0 -0
  572. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_codegen_output.py +0 -0
  573. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_coder_tester_self_healing.py +0 -0
  574. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_coder_tool_safety.py +0 -0
  575. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_collaboration.py +0 -0
  576. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_command_loggers.py +0 -0
  577. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_command_safety.py +0 -0
  578. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_compare_strategies.py +0 -0
  579. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_completions_builder.py +0 -0
  580. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_config_paths.py +0 -0
  581. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_configured_provider.py +0 -0
  582. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_container_entrypoint.py +0 -0
  583. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_container_entrypoints.py +0 -0
  584. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_context_checkpoints.py +0 -0
  585. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_context_references.py +0 -0
  586. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_context_service.py +0 -0
  587. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_conversation_core.py +0 -0
  588. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_crash_report.py +0 -0
  589. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_credential_file_permissions.py +0 -0
  590. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_custom_providers.py +0 -0
  591. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_daemon_gateway_config.py +0 -0
  592. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_dashboard_generator.py +0 -0
  593. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_data_service.py +0 -0
  594. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_data_service_imports.py +0 -0
  595. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_data_without_model.py +0 -0
  596. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_datasource_routing.py +0 -0
  597. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_deep_analysis.py +0 -0
  598. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_degrades_without_quant_engine.py +0 -0
  599. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_dispatcher_pins_match_the_release.py +0 -0
  600. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_doctor.py +0 -0
  601. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_doctor_describes_the_current_install.py +0 -0
  602. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_doctor_npm_scope.py +0 -0
  603. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_doctor_sandbox.py +0 -0
  604. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_edit_and_command_safety.py +0 -0
  605. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_engine_boundary.py +0 -0
  606. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_english_output_group.py +0 -0
  607. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_enterprise_tool_honesty.py +0 -0
  608. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_env_switch_docs.py +0 -0
  609. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_eval_hard_suite.py +0 -0
  610. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_eval_holdout.py +0 -0
  611. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_eval_summary.py +0 -0
  612. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_eval_task_bank.py +0 -0
  613. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_eval_trajectories.py +0 -0
  614. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_evals_harness.py +0 -0
  615. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_event_import_roots.py +0 -0
  616. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_exec_events.py +0 -0
  617. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_extended_tools.py +0 -0
  618. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_feishu_swarm_config.py +0 -0
  619. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_file_links.py +0 -0
  620. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_finalize_release.py +0 -0
  621. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_finance_renderers.py +0 -0
  622. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_finance_service_catalog.py +0 -0
  623. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_first_run_output.py +0 -0
  624. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_first_run_works.py +0 -0
  625. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_football_agent.py +0 -0
  626. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_football_prediction_output.py +0 -0
  627. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_gemini_retirement.py +0 -0
  628. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_google_cloud_models.py +0 -0
  629. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_google_cloud_routing.py +0 -0
  630. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_google_login.py +0 -0
  631. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_google_search_provider.py +0 -0
  632. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_headless_command_approval.py +0 -0
  633. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_headless_is_agentic.py +0 -0
  634. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_honest_surfaces.py +0 -0
  635. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_image_gen_tools.py +0 -0
  636. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_image_inputs.py +0 -0
  637. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_import_graph_budget.py +0 -0
  638. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_intent_router.py +0 -0
  639. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_intent_signals.py +0 -0
  640. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_kling_video_client.py +0 -0
  641. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_lazy_rebind.py +0 -0
  642. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_legacy_module_imports.py +0 -0
  643. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_license_consistency.py +0 -0
  644. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_licensing.py +0 -0
  645. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_linux_sandbox_integration.py +0 -0
  646. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_local_image_provider.py +0 -0
  647. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_local_workspace_execution.py +0 -0
  648. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_logistics_3pl.py +0 -0
  649. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_logistics_and_finance_agents.py +0 -0
  650. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_lsp.py +0 -0
  651. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_markdown_pdf.py +0 -0
  652. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_market_answers_in_english.py +0 -0
  653. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_market_data_client.py +0 -0
  654. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_market_history_inheritance.py +0 -0
  655. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_market_history_tool.py +0 -0
  656. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_market_hours.py +0 -0
  657. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_market_questions_on_backend.py +0 -0
  658. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_market_symbol_extraction.py +0 -0
  659. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_market_universe.py +0 -0
  660. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_mcp_circuit.py +0 -0
  661. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_mcp_client.py +0 -0
  662. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_mentions.py +0 -0
  663. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_model_capability_registry.py +0 -0
  664. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_model_choice_is_the_users.py +0 -0
  665. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_model_probe.py +0 -0
  666. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_model_selection_state.py +0 -0
  667. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_narrow_chinese_output.py +0 -0
  668. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_native_binary_entrypoints.py +0 -0
  669. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_native_installer.py +0 -0
  670. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_natural_language_routing.py +0 -0
  671. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_new_modules.py +0 -0
  672. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_no_hardcoded_developer_paths.py +0 -0
  673. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_no_tools_route.py +0 -0
  674. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_no_uncommitted_imports.py +0 -0
  675. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_numeric_listings.py +0 -0
  676. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_ollama_stream_imports.py +0 -0
  677. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_ollama_stream_tools.py +0 -0
  678. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_openai_image_client.py +0 -0
  679. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_operations_suite.py +0 -0
  680. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_os_sandbox.py +0 -0
  681. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_output_discipline_prompt.py +0 -0
  682. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_output_rendering.py +0 -0
  683. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_packages_facade.py +0 -0
  684. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_packaging_constraints.py +0 -0
  685. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_packaging_manifest.py +0 -0
  686. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_packs_domains.py +0 -0
  687. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_pdf_report.py +0 -0
  688. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_pick_best_installed_model.py +0 -0
  689. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_plan_mode.py +0 -0
  690. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_platform_package_assembly.py +0 -0
  691. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_platform_packages.py +0 -0
  692. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_platform_publish.py +0 -0
  693. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_plotly_html_output.py +0 -0
  694. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_portfolio_language.py +0 -0
  695. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_portfolio_ledger.py +0 -0
  696. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_post_turn_context_decision.py +0 -0
  697. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_preflight.py +0 -0
  698. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_preview_server.py +0 -0
  699. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_privacy_feedback.py +0 -0
  700. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_project_aria.py +0 -0
  701. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_project_context_files.py +0 -0
  702. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_project_review.py +0 -0
  703. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_project_review_api.py +0 -0
  704. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_prompt_assembly.py +0 -0
  705. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_prompt_dates.py +0 -0
  706. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_prompt_selection.py +0 -0
  707. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_provider_autoconfig.py +0 -0
  708. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_provider_error_classification.py +0 -0
  709. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_provider_error_messages.py +0 -0
  710. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_provider_integration.py +0 -0
  711. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_provider_registry.py +0 -0
  712. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_public_service_status.py +0 -0
  713. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_quant_engine_namespace.py +0 -0
  714. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_rebind_contract.py +0 -0
  715. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_rebind_namespace_contract.py +0 -0
  716. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_relay_client_credentials.py +0 -0
  717. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_relay_event_verification.py +0 -0
  718. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_relay_sends_for_clients.py +0 -0
  719. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_relay_store.py +0 -0
  720. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_relay_url.py +0 -0
  721. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_release_badges.py +0 -0
  722. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_release_chain.py +0 -0
  723. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_release_commit_identity.py +0 -0
  724. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_release_download.py +0 -0
  725. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_release_push_is_atomic.py +0 -0
  726. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_release_reaches_the_registries.py +0 -0
  727. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_release_verification_waits.py +0 -0
  728. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_release_workflow_permissions.py +0 -0
  729. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_report_charts.py +0 -0
  730. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_report_generator.py +0 -0
  731. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_report_prompt_language.py +0 -0
  732. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_research_protocol.py +0 -0
  733. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_research_quality.py +0 -0
  734. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_responsive_rendering.py +0 -0
  735. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_review_service.py +0 -0
  736. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_risk_earnings_ops.py +0 -0
  737. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_root_module_budget.py +0 -0
  738. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_rsi_without_pandas_ta.py +0 -0
  739. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_runtime_acceptance.py +0 -0
  740. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_runtime_approval.py +0 -0
  741. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_runtime_bridge.py +0 -0
  742. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_runtime_bridge_fallback.py +0 -0
  743. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_runtime_checkpoints.py +0 -0
  744. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_runtime_event_identity.py +0 -0
  745. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_runtime_gateway.py +0 -0
  746. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_runtime_repo_map.py +0 -0
  747. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_runtime_run_store.py +0 -0
  748. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_runtime_tool_executor.py +0 -0
  749. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_runtime_worktrees.py +0 -0
  750. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_runway_video_client.py +0 -0
  751. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_safety_permissions.py +0 -0
  752. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_safety_service.py +0 -0
  753. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_safety_service_adoption.py +0 -0
  754. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_service_diagnostics_security.py +0 -0
  755. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_session_search.py +0 -0
  756. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_settings_service.py +0 -0
  757. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_shell_commands_as_written.py +0 -0
  758. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_shipper_digest.py +0 -0
  759. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_single_import_root.py +0 -0
  760. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_skill_agent_binding.py +0 -0
  761. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_skill_catalog.py +0 -0
  762. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_skill_loader.py +0 -0
  763. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_slash_popup.py +0 -0
  764. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_spreadsheet_tools.py +0 -0
  765. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_sse_http_roundtrip.py +0 -0
  766. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_sse_stream_contract.py +0 -0
  767. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_startup_dashboard.py +0 -0
  768. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_startup_keeps_cloud_model.py +0 -0
  769. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_startup_latency.py +0 -0
  770. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_status_language.py +0 -0
  771. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_streaming_pipeline.py +0 -0
  772. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_stripe_agent.py +0 -0
  773. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_subagent.py +0 -0
  774. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_supervisor_routing.py +0 -0
  775. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_system_prompts.py +0 -0
  776. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_system_tools_output.py +0 -0
  777. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_task_orchestrator.py +0 -0
  778. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_task_restore_startup.py +0 -0
  779. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_team_analysts.py +0 -0
  780. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_team_synthesis.py +0 -0
  781. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_terminal_mixins.py +0 -0
  782. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_terminal_snapshots.py +0 -0
  783. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_tls_trust_store.py +0 -0
  784. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_tool_policy.py +0 -0
  785. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_tool_rounds_on_openai_apis.py +0 -0
  786. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_tool_scope.py +0 -0
  787. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_tool_step_output.py +0 -0
  788. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_trading_service.py +0 -0
  789. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_tradingview_bridge.py +0 -0
  790. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_training_pipeline.py +0 -0
  791. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_turn_planning.py +0 -0
  792. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_ui_completer_references.py +0 -0
  793. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_ui_console_theme.py +0 -0
  794. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_ui_input_box.py +0 -0
  795. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_ui_language_and_model.py +0 -0
  796. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_update_health_routes.py +0 -0
  797. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_verification_hint.py +0 -0
  798. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_verification_policy.py +0 -0
  799. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_verification_runner_selection.py +0 -0
  800. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_version_consistency.py +0 -0
  801. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_version_counter.py +0 -0
  802. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_vertex_busy_retry.py +0 -0
  803. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_vertex_empty_rounds.py +0 -0
  804. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_vertex_models.py +0 -0
  805. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_video_analysis.py +0 -0
  806. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_video_editor.py +0 -0
  807. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_vscode_mcp.py +0 -0
  808. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_warehouse_agents.py +0 -0
  809. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_warehouse_cli_registration.py +0 -0
  810. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_warehouse_erp_client.py +0 -0
  811. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_warehouse_workflow.py +0 -0
  812. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_workspace_changes.py +0 -0
  813. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_workspace_context.py +0 -0
  814. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_workspace_files.py +0 -0
  815. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_workspace_scope.py +0 -0
  816. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_workspace_service.py +0 -0
  817. {aria_code-0.117.0 → aria_code-0.119.0}/tests/test_workspace_verify.py +0 -0
  818. {aria_code-0.117.0 → aria_code-0.119.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.119.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.119.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.119.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.119.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.119.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.119.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" }
@@ -276,7 +276,6 @@ include = ["aria_code*"]
276
276
 
277
277
  [tool.setuptools.package-data]
278
278
  "*" = ["*.yaml", "*.json", "*.md", "*.txt", "*.sh"]
279
- "aria_code.ui" = ["assets/*.png"]
280
279
 
281
280
  # ── Ruff linting ───────────────────────────────────────────────────────────────
282
281
  [tool.ruff]
@@ -17,4 +17,4 @@ from __future__ import annotations
17
17
 
18
18
  __all__ = ["__version__"]
19
19
 
20
- __version__ = "0.117.0"
20
+ __version__ = "0.119.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
  # 模型不再要工具 = 它认为做完了。这是唯一一个「宣称完成」的出口,
@@ -19,8 +19,6 @@ from __future__ import annotations
19
19
 
20
20
  import os
21
21
  import shutil
22
- from functools import lru_cache
23
- from pathlib import Path
24
22
  from typing import Optional
25
23
 
26
24
  from .startup_dashboard import StartupDashboardViewModel
@@ -207,53 +205,16 @@ def _robot_text():
207
205
  return face
208
206
 
209
207
 
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
215
- from rich.text import Text
216
- from .robot_pixels import HEIGHT, PIXELS, WIDTH
217
-
218
- rgb = zlib.decompress(base64.b85decode(PIXELS))
219
- face = Text()
220
- for y in range(0, HEIGHT, 2):
221
- 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}")
225
- if y + 2 < HEIGHT:
226
- face.append("\n")
227
- return face
228
-
208
+ def _mascot(console):
209
+ """Return (renderable, columns): the compact robot, or nothing.
229
210
 
230
- def _mascot(console, width: int):
231
- """Return (renderable, columns, rows, optional native image sequence).
232
-
233
- Inline graphics go only to a real TTY. Rich's text parser strips OSC/APC
234
- escapes, so the PNG is written separately after reserving its cells.
211
+ ARIA_ROBOT_RENDER=off leaves the four summary lines without a robot.
235
212
  """
236
213
  from rich.text import Text
237
- from .robot_pixels import BOUNDS, HEIGHT, WIDTH
238
- mode = os.getenv("ARIA_ROBOT_RENDER", "auto").strip().lower()
239
- tty = bool(console.is_terminal and getattr(console.file, "isatty", lambda: False)())
240
- if mode == "off":
241
- return Text(), 0, 4, None
242
- if console.no_color or console.color_system is None:
243
- # Uncoloured half-blocks are a solid rectangle, not a robot.
244
- return _robot_text(), 9, 4, None
245
- if mode == "compact" or width < 60 or (not tty and mode not in ("pixels", "image")):
246
- return _robot_text(), 9, 4, None
247
- if mode != "pixels" and tty:
248
- from .image_render import best_method, render_image
249
- method = best_method()
250
- if method in ("iterm", "kitty"):
251
- rows = (HEIGHT + 1) // 2 + 1 # aspect-preserving image may occupy a fraction more
252
- asset = Path(__file__).parent / "assets" / "aria-robot.png"
253
- sequence = render_image(str(asset), WIDTH, method, crop=BOUNDS, cells_high=rows)
254
- 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
214
+
215
+ if os.getenv("ARIA_ROBOT_RENDER", "").strip().lower() == "off":
216
+ return Text(), 0
217
+ return _robot_text(), 9
257
218
 
258
219
 
259
220
  def _summary_lines(view: StartupDashboardViewModel) -> list[str]:
@@ -308,7 +269,7 @@ def render_startup_dashboard(
308
269
  terminal_width: Optional[int] = None,
309
270
  terminal_height: Optional[int] = None,
310
271
  ) -> None:
311
- """The original mascot beside the model/workspace summary, then notes."""
272
+ """The robot beside the model/workspace summary, then notes."""
312
273
  del rich_box, terminal_height
313
274
  from .robot import ROBOT_ROW_COUNT, get_robot_row
314
275
 
@@ -327,18 +288,13 @@ def render_startup_dashboard(
327
288
  from rich.text import Text
328
289
 
329
290
  width = terminal_width or _console_width(console)
330
- face, columns, rows, sequence = _mascot(console, width)
291
+ face, columns = _mascot(console)
331
292
  block = Table.grid(padding=(0, 2))
332
293
  block.add_column(no_wrap=True, width=columns or None)
333
294
  # One line per row, cut rather than wrapped, so the block keeps its height.
334
295
  block.add_column(no_wrap=True, overflow="ellipsis", max_width=max(10, width - columns - 3))
335
296
  block.add_row(face, Text.from_markup("\n".join(_summary_lines(view)), overflow="ellipsis"))
336
297
  console.print(block)
337
- if sequence:
338
- # Reserve the rows first (also handles scrolling), draw at their top,
339
- # then restore the cursor before the notes and prompt are printed.
340
- console.file.write(f"\x1b7\x1b[{rows}A\r{sequence}\x1b8")
341
- console.file.flush()
342
298
  for note in _notes(view):
343
299
  console.print(Text.from_markup(" " + note, overflow="ellipsis"), no_wrap=True)
344
300
 
@@ -10,8 +10,10 @@ screen, base, feet), each unit one sub-pixel across and half a sub-pixel down
10
10
  — which, with terminal cells twice as tall as wide, keeps the units square.
11
11
  The eye is two quadrants (a square), the dash a lower-quarter block (2:1),
12
12
  the cap corners ▛ ▜, the ears ▌ ▐, the four feet ▀. Colours are sampled from
13
- the artwork; only the body is deepened on light terminals, where the
14
- artwork's cream would vanish against a white background.
13
+ the artwork (docs/assets/aria-robot.png) on this grid; only the light-theme
14
+ greys and body are deepened, where the artwork's would vanish against a
15
+ white background. The orange seam between body and base is left out: at
16
+ this size it would share a cell with two other colours, and a cell has two.
15
17
 
16
18
  Runtime state is shown by the compact status dot, not by the mascot.
17
19
  """
@@ -88,22 +90,22 @@ _STATUS = {
88
90
  # resolves to a Rich style ("<fg> on <bg>").
89
91
  _COLOURS = {
90
92
  "dark": {
91
- "body": "#F3EEE9", # cream shell
92
- "screen": "#0B0A09", # black screen
93
- "eye": "#F1EDE9", # square eye
94
- "dash": "#EDBC7F", # orange dash
95
- "ear": "#989088", # grey ear nub
96
- "base": "#CDAD8F", # tan underside with the orange seam
97
- "leg": "#B4AEA6", # grey feet
93
+ "body": "#F4EBE4", # cream shell
94
+ "screen": "#0E0E0E", # black screen
95
+ "eye": "#FFFDF5", # square eye, brighter than the shell
96
+ "dash": "#F9B467", # orange dash
97
+ "ear": "#B6ADA4", # grey ear nub
98
+ "base": "#B6ADA4", # grey underside
99
+ "leg": "#D5CCC3", # light grey feet
98
100
  },
99
101
  "light": {
100
102
  "body": "#E6DDD0", # deeper cream: the artwork's would vanish on white
101
- "screen": "#0B0A09",
102
- "eye": "#F6F2EA",
103
- "dash": "#EDBC7F",
104
- "ear": "#8C847B",
105
- "base": "#C9A57F",
106
- "leg": "#A39C93",
103
+ "screen": "#0E0E0E",
104
+ "eye": "#FFFDF5",
105
+ "dash": "#F9B467",
106
+ "ear": "#9C948B",
107
+ "base": "#9C948B",
108
+ "leg": "#B8AFA6",
107
109
  },
108
110
  }
109
111
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aria-code
3
- Version: 0.117.0
3
+ Version: 0.119.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.119.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.119.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>