aria-code 0.119.0__tar.gz → 0.121.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 (829) hide show
  1. {aria_code-0.119.0/src/aria_code.egg-info → aria_code-0.121.0}/PKG-INFO +2 -2
  2. {aria_code-0.119.0 → aria_code-0.121.0}/README.md +1 -1
  3. {aria_code-0.119.0 → aria_code-0.121.0}/pyproject.toml +1 -1
  4. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/_version.py +1 -1
  5. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/bootstrap.py +10 -0
  6. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/chat_turn.py +82 -48
  7. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/model_cmds.py +15 -1
  8. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/headless.py +2 -0
  9. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/local_tool_schemas.py +11 -2
  10. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/prompts/coding.py +5 -1
  11. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/providers/runtime_bridge.py +68 -4
  12. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/runtime_consumer.py +41 -2
  13. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/terminal_chrome.py +10 -2
  14. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/tool_executor.py +96 -12
  15. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/tools/system_tools.py +6 -1
  16. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/tools/write_tools.py +7 -0
  17. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/aria_cli.py +13 -0
  18. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/runtime/__init__.py +7 -0
  19. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/runtime/agent_loop.py +114 -3
  20. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/runtime/approval.py +16 -2
  21. aria_code-0.121.0/src/aria_code/runtime/contract.py +282 -0
  22. aria_code-0.121.0/src/aria_code/runtime/delivery.py +387 -0
  23. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/runtime/gateway.py +8 -0
  24. aria_code-0.121.0/src/aria_code/runtime/review.py +254 -0
  25. aria_code-0.121.0/src/aria_code/runtime/semantic_diff.py +161 -0
  26. aria_code-0.121.0/src/aria_code/runtime/symbol_edit.py +117 -0
  27. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/safety/__init__.py +4 -0
  28. aria_code-0.121.0/src/aria_code/safety/risk.py +605 -0
  29. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/ui/picker.py +25 -3
  30. aria_code-0.121.0/src/aria_code/ui/render/actions.py +297 -0
  31. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/ui/render/output.py +87 -0
  32. {aria_code-0.119.0 → aria_code-0.121.0/src/aria_code.egg-info}/PKG-INFO +2 -2
  33. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code.egg-info/SOURCES.txt +15 -0
  34. aria_code-0.121.0/tests/test_action_view.py +182 -0
  35. aria_code-0.121.0/tests/test_change_contract.py +146 -0
  36. aria_code-0.121.0/tests/test_delivery_report.py +125 -0
  37. aria_code-0.121.0/tests/test_review_gate.py +131 -0
  38. aria_code-0.121.0/tests/test_risk_approval.py +99 -0
  39. aria_code-0.121.0/tests/test_risk_assessment.py +87 -0
  40. aria_code-0.121.0/tests/test_semantic_diff.py +120 -0
  41. aria_code-0.121.0/tests/test_symbol_edit.py +62 -0
  42. {aria_code-0.119.0 → aria_code-0.121.0}/LICENSE +0 -0
  43. {aria_code-0.119.0 → aria_code-0.121.0}/NOTICE +0 -0
  44. {aria_code-0.119.0 → aria_code-0.121.0}/setup.cfg +0 -0
  45. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/__init__.py +0 -0
  46. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/adk_apps/__init__.py +0 -0
  47. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/adk_apps/aria_code_review/__init__.py +0 -0
  48. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/adk_apps/aria_code_review/agent.py +0 -0
  49. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/adk_apps/aria_research/__init__.py +0 -0
  50. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/adk_apps/aria_research/agent.py +0 -0
  51. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/__init__.py +0 -0
  52. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/base.py +0 -0
  53. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/code_review.py +0 -0
  54. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/deep/__init__.py +0 -0
  55. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/deep/calibration_loop.py +0 -0
  56. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/deep/critic.py +0 -0
  57. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/deep/deepen.py +0 -0
  58. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/deep/models.py +0 -0
  59. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/deep/pipeline.py +0 -0
  60. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/deep/quant_fusion.py +0 -0
  61. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/deep/themes.py +0 -0
  62. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/deep/tiers.py +0 -0
  63. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/engineering/__init__.py +0 -0
  64. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/engineering/coder.py +0 -0
  65. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/engineering/tester.py +0 -0
  66. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/financial/__init__.py +0 -0
  67. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/financial/cashflow_burn.py +0 -0
  68. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/financial/catalyst.py +0 -0
  69. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/financial/corporate_finance.py +0 -0
  70. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/financial/debate.py +0 -0
  71. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/financial/earnings.py +0 -0
  72. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/financial/fundamental.py +0 -0
  73. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/financial/macro.py +0 -0
  74. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/financial/news.py +0 -0
  75. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/financial/risk.py +0 -0
  76. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/financial/sector.py +0 -0
  77. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/financial/strategist.py +0 -0
  78. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/financial/stripe_revenue.py +0 -0
  79. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/financial/synthesis.py +0 -0
  80. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/financial/technical.py +0 -0
  81. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/orchestrator.py +0 -0
  82. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/portfolio_agent.py +0 -0
  83. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/realty/__init__.py +0 -0
  84. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/realty/asset_diagnosis.py +0 -0
  85. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/realty/business_match.py +0 -0
  86. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/realty/cashflow_verify.py +0 -0
  87. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/realty/contract_rules.py +0 -0
  88. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/realty/energy_anomaly.py +0 -0
  89. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/realty/exit_settlement.py +0 -0
  90. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/realty/fulfillment_risk.py +0 -0
  91. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/realty/ops_optimize.py +0 -0
  92. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/realty/revenue_share.py +0 -0
  93. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/registry.py +0 -0
  94. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/signal_scheme.py +0 -0
  95. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/sports/__init__.py +0 -0
  96. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/sports/football_agent.py +0 -0
  97. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/supervisor.py +0 -0
  98. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/team.py +0 -0
  99. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/warehouse/__init__.py +0 -0
  100. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/warehouse/contracts.py +0 -0
  101. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/warehouse/dashboard.py +0 -0
  102. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/warehouse/fulfillment_leadtime.py +0 -0
  103. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/warehouse/inbound_exceptions.py +0 -0
  104. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/warehouse/inventory_health.py +0 -0
  105. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/warehouse/local_run.py +0 -0
  106. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/warehouse/local_snapshot.py +0 -0
  107. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/warehouse/logistics_cost.py +0 -0
  108. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/warehouse/logistics_sync.py +0 -0
  109. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/agents/warehouse/workflow.py +0 -0
  110. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/aliyun_data_client.py +0 -0
  111. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/README.md +0 -0
  112. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/__init__.py +0 -0
  113. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/channels/README.md +0 -0
  114. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/channels/__init__.py +0 -0
  115. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/channels/approvals.py +0 -0
  116. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/channels/conversation.py +0 -0
  117. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/channels/digest.py +0 -0
  118. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/channels/intake.py +0 -0
  119. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/channels/registry.py +0 -0
  120. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/channels/tradingview.py +0 -0
  121. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/README.md +0 -0
  122. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/__init__.py +0 -0
  123. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/_optional.py +0 -0
  124. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/broker_render.py +0 -0
  125. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/codegen_paths.py +0 -0
  126. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/__init__.py +0 -0
  127. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/_business_render.py +0 -0
  128. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/_ui.py +0 -0
  129. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/analysis_cmds.py +0 -0
  130. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/ashare_prediction_cmds.py +0 -0
  131. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/auth_cmds.py +0 -0
  132. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/backtest_cmds.py +0 -0
  133. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/broker_cmds.py +0 -0
  134. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/business_workflow_cmds.py +0 -0
  135. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/canvas_cmds.py +0 -0
  136. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/catalog.py +0 -0
  137. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/core_cmds.py +0 -0
  138. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/data_cmds.py +0 -0
  139. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/diagnostic_cmds.py +0 -0
  140. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/diagnostic_ops_cmds.py +0 -0
  141. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/file_cmds.py +0 -0
  142. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/finance_service_cmds.py +0 -0
  143. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/fx_commodity_cmds.py +0 -0
  144. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/market.py +0 -0
  145. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/market_cmds.py +0 -0
  146. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/market_context.py +0 -0
  147. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/market_render.py +0 -0
  148. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/ops_cmds.py +0 -0
  149. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/orchestrator_cmds.py +0 -0
  150. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/pdf_export_cmds.py +0 -0
  151. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/portfolio_cmds.py +0 -0
  152. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/report.py +0 -0
  153. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/scaffold_templates.py +0 -0
  154. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/session_cmds.py +0 -0
  155. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/session_ux_cmds.py +0 -0
  156. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/team.py +0 -0
  157. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/team_render.py +0 -0
  158. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/ui_cmds.py +0 -0
  159. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/warehouse_cmds.py +0 -0
  160. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/workflow_cmds.py +0 -0
  161. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/commands/workspace_cmds.py +0 -0
  162. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/config_paths.py +0 -0
  163. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/config_store.py +0 -0
  164. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/constants.py +0 -0
  165. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/context.py +0 -0
  166. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/deterministic.py +0 -0
  167. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/direct.py +0 -0
  168. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/earnings_view.py +0 -0
  169. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/exec_events.py +0 -0
  170. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/finance_service_catalog.py +0 -0
  171. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/football_reports.py +0 -0
  172. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/github_app_auth.py +0 -0
  173. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/google_login.py +0 -0
  174. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/handlers/__init__.py +0 -0
  175. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/handlers/broker_handlers.py +0 -0
  176. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/handlers/chart_handlers.py +0 -0
  177. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/handlers/market_handlers.py +0 -0
  178. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/handlers/realty_handlers.py +0 -0
  179. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/handlers/sports_handlers.py +0 -0
  180. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/handlers/strategy_advice.py +0 -0
  181. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/helpers.py +0 -0
  182. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/hooks.py +0 -0
  183. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/i18n.py +0 -0
  184. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/intent.py +0 -0
  185. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/intent_router.py +0 -0
  186. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/intent_signals.py +0 -0
  187. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/lifecycle_hooks.py +0 -0
  188. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/main.py +0 -0
  189. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/market_hours.py +0 -0
  190. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/market_metadata.py +0 -0
  191. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/market_universe.py +0 -0
  192. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/message_processing.py +0 -0
  193. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/mixin_binding.py +0 -0
  194. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/model_catalog.py +0 -0
  195. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/model_probe.py +0 -0
  196. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/model_retirement.py +0 -0
  197. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/pdf_report.py +0 -0
  198. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/plan_mode.py +0 -0
  199. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/plotly_html.py +0 -0
  200. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/prediction_feedback.py +0 -0
  201. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/preflight.py +0 -0
  202. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/project_aria.py +0 -0
  203. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/prompt_assembly.py +0 -0
  204. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/prompts/__init__.py +0 -0
  205. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/prompts/select.py +0 -0
  206. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/prompts/system_prompts.py +0 -0
  207. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/prompts/ui.py +0 -0
  208. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/provider_endpoints.py +0 -0
  209. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/provider_keys.py +0 -0
  210. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/providers/__init__.py +0 -0
  211. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/providers/base.py +0 -0
  212. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/providers/chat_routing.py +0 -0
  213. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/providers/collaboration.py +0 -0
  214. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/providers/llm/__init__.py +0 -0
  215. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/providers/llm/offline_responses.py +0 -0
  216. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/providers/llm/ollama_stream.py +0 -0
  217. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/providers/llm/response_cache.py +0 -0
  218. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/providers/llm/sse_stream.py +0 -0
  219. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/providers/vertexai_stream.py +0 -0
  220. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/release_download.py +0 -0
  221. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/review_runner.py +0 -0
  222. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/sandbox.py +0 -0
  223. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/session_export.py +0 -0
  224. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/session_jsonl.py +0 -0
  225. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/session_store.py +0 -0
  226. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/skills_catalog.py +0 -0
  227. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/todo_tracker.py +0 -0
  228. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/tool_registry.py +0 -0
  229. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/tool_scope.py +0 -0
  230. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/tools/__init__.py +0 -0
  231. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/tools/context.py +0 -0
  232. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/tools/file_tools.py +0 -0
  233. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/tools/market_tools.py +0 -0
  234. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/tools/notebook_tools.py +0 -0
  235. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/tradingview_bridge.py +0 -0
  236. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/turn_planning.py +0 -0
  237. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/update_check.py +0 -0
  238. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/updater.py +0 -0
  239. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/utils/__init__.py +0 -0
  240. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/utils/market_detect.py +0 -0
  241. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/cli/workspace_route.py +0 -0
  242. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/daemon/README.md +0 -0
  243. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/vscode/README.md +0 -0
  244. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/apps/vscode/package.json +0 -0
  245. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/aria_daemon.py +0 -0
  246. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/aria_feishu_bot.py +0 -0
  247. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/aria_mcp_server.py +0 -0
  248. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/aria_relay_client.py +0 -0
  249. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/aria_relay_server.py +0 -0
  250. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/aria_telegram_bot.py +0 -0
  251. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/ariarc.py +0 -0
  252. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/artifacts.py +0 -0
  253. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/backtest_engine.py +0 -0
  254. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/backtest_report.py +0 -0
  255. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/brokers/__init__.py +0 -0
  256. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/brokers/automation.py +0 -0
  257. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/brokers/base.py +0 -0
  258. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/brokers/capabilities.py +0 -0
  259. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/brokers/cn/__init__.py +0 -0
  260. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/brokers/cn/easytrader_broker.py +0 -0
  261. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/brokers/cn/futu_broker.py +0 -0
  262. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/brokers/cn/longbridge_broker.py +0 -0
  263. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/brokers/cn/tiger_broker.py +0 -0
  264. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/brokers/cn/xtquant_broker.py +0 -0
  265. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/brokers/config.py +0 -0
  266. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/brokers/intl/__init__.py +0 -0
  267. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/brokers/intl/alpaca_broker.py +0 -0
  268. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/brokers/intl/ibkr_broker.py +0 -0
  269. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/brokers/intl/trading212_broker.py +0 -0
  270. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/brokers/intl/webull_broker.py +0 -0
  271. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/brokers/paper_broker.py +0 -0
  272. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/brokers/planning.py +0 -0
  273. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/brokers/registry.py +0 -0
  274. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/brokers/trading.py +0 -0
  275. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/canva_client.py +0 -0
  276. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/change_store.py +0 -0
  277. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/clients/__init__.py +0 -0
  278. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/clients/aliyun_data_client.py +0 -0
  279. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/clients/aria_relay_client.py +0 -0
  280. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/clients/canva_client.py +0 -0
  281. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/clients/figma_client.py +0 -0
  282. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/clients/football_data_client.py +0 -0
  283. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/clients/kling_video_client.py +0 -0
  284. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/clients/market_data_client.py +0 -0
  285. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/clients/openai_image_client.py +0 -0
  286. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/clients/runway_video_client.py +0 -0
  287. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/clients/warehouse_erp_client.py +0 -0
  288. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/cloud_memory.py +0 -0
  289. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/command_safety.py +0 -0
  290. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/computer_use_tools.py +0 -0
  291. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/dashboard_generator.py +0 -0
  292. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/data_analysis_tools.py +0 -0
  293. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/data_cleaner.py +0 -0
  294. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/data_service.py +0 -0
  295. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/datasources/__init__.py +0 -0
  296. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/datasources/base.py +0 -0
  297. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/datasources/router.py +0 -0
  298. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/datasources/sources/__init__.py +0 -0
  299. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/datasources/sources/akshare_source.py +0 -0
  300. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/datasources/sources/alpha_vantage_source.py +0 -0
  301. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/datasources/sources/edgar_source.py +0 -0
  302. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/datasources/sources/finnhub_source.py +0 -0
  303. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/datasources/sources/fred_source.py +0 -0
  304. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/datasources/sources/tushare_source.py +0 -0
  305. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/datasources/sources/web_scraper_source.py +0 -0
  306. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/datasources/sources/world_bank_source.py +0 -0
  307. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/datasources/sources/yfinance_source.py +0 -0
  308. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/demo_player.py +0 -0
  309. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/doctor.py +0 -0
  310. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/domain/__init__.py +0 -0
  311. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/domain/backtest_engine.py +0 -0
  312. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/domain/backtest_report.py +0 -0
  313. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/domain/finance_formulas.py +0 -0
  314. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/domain/portfolio_ledger.py +0 -0
  315. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/domain/strategy_vault.py +0 -0
  316. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/evals/__init__.py +0 -0
  317. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/evals/gap.py +0 -0
  318. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/evals/harness.py +0 -0
  319. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/evals/runner.py +0 -0
  320. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/evals/summary.py +0 -0
  321. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/external_agent_runner.py +0 -0
  322. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/figma_client.py +0 -0
  323. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/file_analysis_tools.py +0 -0
  324. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/finance_formulas.py +0 -0
  325. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/football_data_client.py +0 -0
  326. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/image_gen_tools.py +0 -0
  327. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/intent_classifier.py +0 -0
  328. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/kling_video_client.py +0 -0
  329. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/licensing.py +0 -0
  330. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/local_finance_tools.py +0 -0
  331. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/local_image_provider.py +0 -0
  332. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/local_llm_provider.py +0 -0
  333. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/macro_tools.py +0 -0
  334. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/markdown_pdf.py +0 -0
  335. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/market_data_client.py +0 -0
  336. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/mcp_client.py +0 -0
  337. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/memory_manager.py +0 -0
  338. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/model_capability.py +0 -0
  339. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/notification_tools.py +0 -0
  340. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/openai_image_client.py +0 -0
  341. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/__init__.py +0 -0
  342. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/adk_bridge/__init__.py +0 -0
  343. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/adk_bridge/code_review_tools.py +0 -0
  344. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/adk_bridge/market_tools.py +0 -0
  345. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_agents/__init__.py +0 -0
  346. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_agents/manifest.py +0 -0
  347. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_core/__init__.py +0 -0
  348. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_core/architecture.py +0 -0
  349. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_core/export.py +0 -0
  350. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_core/manifest.py +0 -0
  351. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_core/paths.py +0 -0
  352. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_core/secure_file.py +0 -0
  353. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_infra/__init__.py +0 -0
  354. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_infra/arthera.py +0 -0
  355. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_infra/doctor.py +0 -0
  356. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_infra/product.py +0 -0
  357. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_mcp/__init__.py +0 -0
  358. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_mcp/bridge.py +0 -0
  359. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_mcp/circuit.py +0 -0
  360. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_mcp/config.py +0 -0
  361. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_mcp/installer.py +0 -0
  362. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_mcp/server.py +0 -0
  363. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_mcp/tools.py +0 -0
  364. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_sdk/__init__.py +0 -0
  365. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_sdk/client.py +0 -0
  366. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_sdk/providers.py +0 -0
  367. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_sdk/streaming.py +0 -0
  368. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_sdk/types.py +0 -0
  369. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_services/__init__.py +0 -0
  370. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_services/cache.py +0 -0
  371. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_services/context.py +0 -0
  372. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_services/context_checkpoints.py +0 -0
  373. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_services/data.py +0 -0
  374. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_services/provider_health.py +0 -0
  375. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_services/references.py +0 -0
  376. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_services/registry.py +0 -0
  377. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_services/research_protocol.py +0 -0
  378. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_services/research_quality.py +0 -0
  379. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_services/settings.py +0 -0
  380. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_services/usage.py +0 -0
  381. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_skills/__init__.py +0 -0
  382. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_skills/catalog.py +0 -0
  383. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_skills/loader.py +0 -0
  384. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_skills/registry.py +0 -0
  385. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_tools/__init__.py +0 -0
  386. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_tools/financial/__init__.py +0 -0
  387. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_tools/financial/_paths.py +0 -0
  388. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_tools/financial/compliance.py +0 -0
  389. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_tools/financial/factors.py +0 -0
  390. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_tools/financial/risk_tools.py +0 -0
  391. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_tools/financial/strategy.py +0 -0
  392. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/aria_tools/registry.py +0 -0
  393. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/quant_engine/__init__.py +0 -0
  394. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/quant_engine/_namespace.py +0 -0
  395. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/quant_engine/backtest/__init__.py +0 -0
  396. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/quant_engine/backtest/core.py +0 -0
  397. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/quant_engine/backtest/engine.py +0 -0
  398. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/quant_engine/portfolio/__init__.py +0 -0
  399. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/quant_engine/portfolio/optimizer.py +0 -0
  400. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/quant_engine/sports/__init__.py +0 -0
  401. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/quant_engine/sports/calibrator.py +0 -0
  402. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/quant_engine/sports/dixon_coles.py +0 -0
  403. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/quant_engine/sports/elo.py +0 -0
  404. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/quant_engine/sports/form.py +0 -0
  405. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/quant_engine/sports/h2h.py +0 -0
  406. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/quant_engine/sports/ml_model.py +0 -0
  407. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/quant_engine/sports/predictor.py +0 -0
  408. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/quant_engine/sports/tracker.py +0 -0
  409. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/quant_engine/stochastic/__init__.py +0 -0
  410. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/quant_engine/stochastic/gbm_enhanced.py +0 -0
  411. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/quant_engine/stochastic/ito_calculus.py +0 -0
  412. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/quant_engine/stochastic/kelly_criterion.py +0 -0
  413. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/quant_engine/stochastic/monte_carlo_advanced.py +0 -0
  414. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/quant_engine/stochastic/options_pricing.py +0 -0
  415. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packages/quant_engine/stochastic/stochastic_processes.py +0 -0
  416. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packs/__init__.py +0 -0
  417. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packs/base.py +0 -0
  418. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packs/finance/__init__.py +0 -0
  419. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packs/logistics/__init__.py +0 -0
  420. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packs/payments/__init__.py +0 -0
  421. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packs/realty/__init__.py +0 -0
  422. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packs/registry.py +0 -0
  423. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/packs/rules.py +0 -0
  424. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/plan_utils.py +0 -0
  425. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/plugin_loader.py +0 -0
  426. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/portfolio_ledger.py +0 -0
  427. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/preview_server.py +0 -0
  428. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/privacy/__init__.py +0 -0
  429. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/privacy/feedback.py +0 -0
  430. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/project_review.py +0 -0
  431. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/project_review_api.py +0 -0
  432. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/project_review_server.py +0 -0
  433. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/project_tools.py +0 -0
  434. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/providers/__init__.py +0 -0
  435. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/providers/llm/__init__.py +0 -0
  436. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/providers/llm/anthropic.py +0 -0
  437. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/providers/llm/autoconfig.py +0 -0
  438. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/providers/llm/base.py +0 -0
  439. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/providers/llm/custom.py +0 -0
  440. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/providers/llm/ollama.py +0 -0
  441. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/providers/llm/openai_compat.py +0 -0
  442. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/providers/llm/registry.py +0 -0
  443. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/providers/local_image_provider.py +0 -0
  444. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/providers/local_llm_provider.py +0 -0
  445. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/providers/tool_messages.py +0 -0
  446. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/realty_data_tools.py +0 -0
  447. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/relay_store.py +0 -0
  448. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/report_exporters.py +0 -0
  449. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/report_generator.py +0 -0
  450. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/review_service.py +0 -0
  451. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/runtime/acceptance.py +0 -0
  452. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/runtime/budget.py +0 -0
  453. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/runtime/checkpoints.py +0 -0
  454. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/runtime/crash_report.py +0 -0
  455. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/runtime/events.py +0 -0
  456. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/runtime/lsp.py +0 -0
  457. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/runtime/orchestrator.py +0 -0
  458. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/runtime/processes.py +0 -0
  459. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/runtime/repo_map.py +0 -0
  460. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/runtime/run_state.py +0 -0
  461. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/runtime/run_store.py +0 -0
  462. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/runtime/self_healing.py +0 -0
  463. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/runtime/subagent.py +0 -0
  464. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/runtime/task_ledger.py +0 -0
  465. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/runtime/task_orchestrator.py +0 -0
  466. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/runtime/tool_executor.py +0 -0
  467. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/runtime/tool_policy.py +0 -0
  468. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/runtime/windows_job.py +0 -0
  469. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/runtime/worktrees.py +0 -0
  470. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/runway_video_client.py +0 -0
  471. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/safety/client_isolation.py +0 -0
  472. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/safety/permissions.py +0 -0
  473. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/safety/sandbox.py +0 -0
  474. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/safety/service.py +0 -0
  475. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/setup_wizard.py +0 -0
  476. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/spreadsheet_tools.py +0 -0
  477. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/strategy_vault.py +0 -0
  478. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/tools/__init__.py +0 -0
  479. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/tools/artifact_tools.py +0 -0
  480. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/tools/broker_tools.py +0 -0
  481. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/tools/build_quant_engine.py +0 -0
  482. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/tools/code_audit_tools.py +0 -0
  483. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/tools/computer_use_tools.py +0 -0
  484. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/tools/data_analysis_tools.py +0 -0
  485. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/tools/enterprise_finance_tools.py +0 -0
  486. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/tools/extended_tools.py +0 -0
  487. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/tools/file_analysis_tools.py +0 -0
  488. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/tools/image_gen_tools.py +0 -0
  489. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/tools/local_finance_tools.py +0 -0
  490. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/tools/logistics_carriers.py +0 -0
  491. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/tools/logistics_inventory.py +0 -0
  492. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/tools/logistics_io.py +0 -0
  493. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/tools/logistics_tenancy.py +0 -0
  494. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/tools/logistics_tools.py +0 -0
  495. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/tools/macro_tools.py +0 -0
  496. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/tools/notification_tools.py +0 -0
  497. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/tools/project_tools.py +0 -0
  498. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/tools/realty_data_tools.py +0 -0
  499. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/tools/spreadsheet_tools.py +0 -0
  500. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/tools/stripe_tools.py +0 -0
  501. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/training/__init__.py +0 -0
  502. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/training/compare.py +0 -0
  503. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/training/sft_dataset.py +0 -0
  504. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/ui/__init__.py +0 -0
  505. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/ui/banner.py +0 -0
  506. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/ui/completer.py +0 -0
  507. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/ui/console.py +0 -0
  508. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/ui/input_box.py +0 -0
  509. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/ui/mentions.py +0 -0
  510. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/ui/render/__init__.py +0 -0
  511. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/ui/render/finance.py +0 -0
  512. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/ui/render/market.py +0 -0
  513. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/ui/render/responsive.py +0 -0
  514. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/ui/render/team.py +0 -0
  515. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/ui/robot.py +0 -0
  516. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/ui/startup_dashboard.py +0 -0
  517. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/utils/vscode_uri.py +0 -0
  518. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/video_analysis.py +0 -0
  519. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/video_editor.py +0 -0
  520. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/workspace/__init__.py +0 -0
  521. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/workspace/files.py +0 -0
  522. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/workspace/verify.py +0 -0
  523. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/workspace_changes.py +0 -0
  524. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/workspace_context.py +0 -0
  525. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/workspace_service.py +0 -0
  526. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code/workspace_tools.py +0 -0
  527. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code.egg-info/dependency_links.txt +0 -0
  528. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code.egg-info/entry_points.txt +0 -0
  529. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code.egg-info/requires.txt +0 -0
  530. {aria_code-0.119.0 → aria_code-0.121.0}/src/aria_code.egg-info/top_level.txt +0 -0
  531. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_adk_market_tools.py +0 -0
  532. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_agent_key_points_language.py +0 -0
  533. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_agent_team_fallback.py +0 -0
  534. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_analyze_file_tool.py +0 -0
  535. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_architecture_ledger_is_true.py +0 -0
  536. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_architecture_report.py +0 -0
  537. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_aria_cli_core.py +0 -0
  538. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_aria_mcp_server.py +0 -0
  539. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_aria_sdk.py +0 -0
  540. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_artifact_publishing.py +0 -0
  541. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_artifacts_and_reports.py +0 -0
  542. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_ashare_prediction_cmds.py +0 -0
  543. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_background_processes.py +0 -0
  544. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_backtest_cmds.py +0 -0
  545. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_backtest_engine.py +0 -0
  546. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_backtest_report.py +0 -0
  547. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_backtest_runs_what_it_names.py +0 -0
  548. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_binary_bundles_runtime_imports.py +0 -0
  549. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_broken_akshare_is_optional.py +0 -0
  550. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_broker_automation.py +0 -0
  551. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_broker_chat_confirm_gate.py +0 -0
  552. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_broker_planning.py +0 -0
  553. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_broker_safety.py +0 -0
  554. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_broker_tools.py +0 -0
  555. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_budget.py +0 -0
  556. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_business_workflow_cmds.py +0 -0
  557. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_callback_provider_cleanup.py +0 -0
  558. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_canva_client.py +0 -0
  559. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_canvas_cmds.py +0 -0
  560. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_card_approvals.py +0 -0
  561. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_channel_intake.py +0 -0
  562. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_channels.py +0 -0
  563. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_chart_handlers.py +0 -0
  564. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_chat_bots_fail_closed.py +0 -0
  565. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_chat_routing.py +0 -0
  566. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_ci_security_workflow.py +0 -0
  567. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_cli_app_split.py +0 -0
  568. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_cli_bootstrap.py +0 -0
  569. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_cli_config_store.py +0 -0
  570. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_cli_lifecycle_hooks.py +0 -0
  571. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_cli_runtime_consumer.py +0 -0
  572. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_cli_tool_executor_module.py +0 -0
  573. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_cli_updater.py +0 -0
  574. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_client_isolation_guard.py +0 -0
  575. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_cloud_memory.py +0 -0
  576. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_code_audit_tools.py +0 -0
  577. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_code_review_agent.py +0 -0
  578. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_codegen_output.py +0 -0
  579. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_coder_tester_self_healing.py +0 -0
  580. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_coder_tool_safety.py +0 -0
  581. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_collaboration.py +0 -0
  582. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_command_loggers.py +0 -0
  583. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_command_safety.py +0 -0
  584. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_compare_strategies.py +0 -0
  585. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_completions_builder.py +0 -0
  586. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_config_paths.py +0 -0
  587. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_configured_provider.py +0 -0
  588. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_container_entrypoint.py +0 -0
  589. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_container_entrypoints.py +0 -0
  590. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_context_checkpoints.py +0 -0
  591. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_context_references.py +0 -0
  592. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_context_service.py +0 -0
  593. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_conversation_core.py +0 -0
  594. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_crash_report.py +0 -0
  595. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_credential_file_permissions.py +0 -0
  596. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_custom_providers.py +0 -0
  597. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_daemon_gateway_config.py +0 -0
  598. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_dashboard_generator.py +0 -0
  599. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_data_service.py +0 -0
  600. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_data_service_imports.py +0 -0
  601. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_data_without_model.py +0 -0
  602. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_datasource_routing.py +0 -0
  603. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_deep_analysis.py +0 -0
  604. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_degrades_without_quant_engine.py +0 -0
  605. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_dispatcher_pins_match_the_release.py +0 -0
  606. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_doctor.py +0 -0
  607. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_doctor_describes_the_current_install.py +0 -0
  608. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_doctor_npm_scope.py +0 -0
  609. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_doctor_sandbox.py +0 -0
  610. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_edit_and_command_safety.py +0 -0
  611. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_engine_boundary.py +0 -0
  612. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_english_output_group.py +0 -0
  613. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_enterprise_tool_honesty.py +0 -0
  614. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_env_switch_docs.py +0 -0
  615. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_eval_hard_suite.py +0 -0
  616. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_eval_holdout.py +0 -0
  617. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_eval_summary.py +0 -0
  618. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_eval_task_bank.py +0 -0
  619. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_eval_trajectories.py +0 -0
  620. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_evals_harness.py +0 -0
  621. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_event_import_roots.py +0 -0
  622. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_exec_events.py +0 -0
  623. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_extended_tools.py +0 -0
  624. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_feishu_swarm_config.py +0 -0
  625. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_file_links.py +0 -0
  626. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_finalize_release.py +0 -0
  627. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_finance_renderers.py +0 -0
  628. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_finance_service_catalog.py +0 -0
  629. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_first_run_output.py +0 -0
  630. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_first_run_works.py +0 -0
  631. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_football_agent.py +0 -0
  632. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_football_prediction_output.py +0 -0
  633. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_gemini_retirement.py +0 -0
  634. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_google_cloud_models.py +0 -0
  635. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_google_cloud_routing.py +0 -0
  636. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_google_login.py +0 -0
  637. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_google_search_provider.py +0 -0
  638. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_headless_command_approval.py +0 -0
  639. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_headless_is_agentic.py +0 -0
  640. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_honest_surfaces.py +0 -0
  641. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_image_gen_tools.py +0 -0
  642. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_image_inputs.py +0 -0
  643. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_import_graph_budget.py +0 -0
  644. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_intent_router.py +0 -0
  645. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_intent_signals.py +0 -0
  646. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_kling_video_client.py +0 -0
  647. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_lazy_rebind.py +0 -0
  648. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_legacy_module_imports.py +0 -0
  649. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_license_consistency.py +0 -0
  650. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_licensing.py +0 -0
  651. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_linux_sandbox_integration.py +0 -0
  652. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_local_image_provider.py +0 -0
  653. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_local_workspace_execution.py +0 -0
  654. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_logistics_3pl.py +0 -0
  655. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_logistics_and_finance_agents.py +0 -0
  656. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_lsp.py +0 -0
  657. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_markdown_pdf.py +0 -0
  658. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_market_answers_in_english.py +0 -0
  659. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_market_data_client.py +0 -0
  660. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_market_history_inheritance.py +0 -0
  661. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_market_history_tool.py +0 -0
  662. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_market_hours.py +0 -0
  663. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_market_questions_on_backend.py +0 -0
  664. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_market_symbol_extraction.py +0 -0
  665. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_market_universe.py +0 -0
  666. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_mcp_circuit.py +0 -0
  667. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_mcp_client.py +0 -0
  668. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_mentions.py +0 -0
  669. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_model_capability_registry.py +0 -0
  670. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_model_choice_is_the_users.py +0 -0
  671. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_model_probe.py +0 -0
  672. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_model_selection_state.py +0 -0
  673. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_narrow_chinese_output.py +0 -0
  674. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_native_binary_entrypoints.py +0 -0
  675. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_native_installer.py +0 -0
  676. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_natural_language_routing.py +0 -0
  677. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_new_modules.py +0 -0
  678. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_no_hardcoded_developer_paths.py +0 -0
  679. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_no_tools_route.py +0 -0
  680. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_no_uncommitted_imports.py +0 -0
  681. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_numeric_listings.py +0 -0
  682. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_ollama_stream_imports.py +0 -0
  683. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_ollama_stream_tools.py +0 -0
  684. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_openai_image_client.py +0 -0
  685. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_operations_suite.py +0 -0
  686. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_os_sandbox.py +0 -0
  687. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_output_discipline_prompt.py +0 -0
  688. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_output_rendering.py +0 -0
  689. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_packages_facade.py +0 -0
  690. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_packaging_constraints.py +0 -0
  691. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_packaging_manifest.py +0 -0
  692. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_packs_domains.py +0 -0
  693. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_pdf_report.py +0 -0
  694. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_pick_best_installed_model.py +0 -0
  695. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_plan_mode.py +0 -0
  696. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_platform_package_assembly.py +0 -0
  697. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_platform_packages.py +0 -0
  698. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_platform_publish.py +0 -0
  699. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_plotly_html_output.py +0 -0
  700. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_portfolio_language.py +0 -0
  701. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_portfolio_ledger.py +0 -0
  702. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_post_turn_context_decision.py +0 -0
  703. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_preflight.py +0 -0
  704. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_preview_server.py +0 -0
  705. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_privacy_feedback.py +0 -0
  706. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_project_aria.py +0 -0
  707. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_project_context_files.py +0 -0
  708. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_project_review.py +0 -0
  709. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_project_review_api.py +0 -0
  710. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_prompt_assembly.py +0 -0
  711. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_prompt_dates.py +0 -0
  712. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_prompt_selection.py +0 -0
  713. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_provider_autoconfig.py +0 -0
  714. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_provider_error_classification.py +0 -0
  715. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_provider_error_messages.py +0 -0
  716. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_provider_integration.py +0 -0
  717. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_provider_registry.py +0 -0
  718. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_public_service_status.py +0 -0
  719. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_quant_engine_namespace.py +0 -0
  720. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_rebind_contract.py +0 -0
  721. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_rebind_namespace_contract.py +0 -0
  722. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_relay_client_credentials.py +0 -0
  723. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_relay_event_verification.py +0 -0
  724. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_relay_sends_for_clients.py +0 -0
  725. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_relay_store.py +0 -0
  726. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_relay_url.py +0 -0
  727. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_release_badges.py +0 -0
  728. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_release_chain.py +0 -0
  729. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_release_commit_identity.py +0 -0
  730. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_release_download.py +0 -0
  731. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_release_push_is_atomic.py +0 -0
  732. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_release_reaches_the_registries.py +0 -0
  733. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_release_verification_waits.py +0 -0
  734. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_release_workflow_permissions.py +0 -0
  735. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_report_charts.py +0 -0
  736. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_report_generator.py +0 -0
  737. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_report_prompt_language.py +0 -0
  738. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_research_protocol.py +0 -0
  739. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_research_quality.py +0 -0
  740. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_responsive_rendering.py +0 -0
  741. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_review_service.py +0 -0
  742. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_risk_earnings_ops.py +0 -0
  743. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_robot_artwork.py +0 -0
  744. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_root_module_budget.py +0 -0
  745. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_rsi_without_pandas_ta.py +0 -0
  746. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_runtime_acceptance.py +0 -0
  747. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_runtime_agent_loop.py +0 -0
  748. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_runtime_approval.py +0 -0
  749. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_runtime_bridge.py +0 -0
  750. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_runtime_bridge_fallback.py +0 -0
  751. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_runtime_checkpoints.py +0 -0
  752. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_runtime_event_identity.py +0 -0
  753. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_runtime_gateway.py +0 -0
  754. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_runtime_repo_map.py +0 -0
  755. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_runtime_run_store.py +0 -0
  756. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_runtime_tool_executor.py +0 -0
  757. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_runtime_worktrees.py +0 -0
  758. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_runway_video_client.py +0 -0
  759. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_safety_permissions.py +0 -0
  760. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_safety_service.py +0 -0
  761. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_safety_service_adoption.py +0 -0
  762. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_service_diagnostics_security.py +0 -0
  763. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_session_search.py +0 -0
  764. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_settings_service.py +0 -0
  765. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_shell_commands_as_written.py +0 -0
  766. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_shipper_digest.py +0 -0
  767. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_single_import_root.py +0 -0
  768. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_skill_agent_binding.py +0 -0
  769. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_skill_catalog.py +0 -0
  770. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_skill_loader.py +0 -0
  771. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_slash_popup.py +0 -0
  772. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_spreadsheet_tools.py +0 -0
  773. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_sse_http_roundtrip.py +0 -0
  774. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_sse_stream_contract.py +0 -0
  775. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_startup_dashboard.py +0 -0
  776. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_startup_keeps_cloud_model.py +0 -0
  777. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_startup_latency.py +0 -0
  778. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_status_language.py +0 -0
  779. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_streaming_pipeline.py +0 -0
  780. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_stripe_agent.py +0 -0
  781. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_subagent.py +0 -0
  782. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_supervisor_routing.py +0 -0
  783. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_system_prompts.py +0 -0
  784. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_system_tools_output.py +0 -0
  785. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_task_orchestrator.py +0 -0
  786. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_task_restore_startup.py +0 -0
  787. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_team_analysts.py +0 -0
  788. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_team_synthesis.py +0 -0
  789. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_terminal_mixins.py +0 -0
  790. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_terminal_snapshots.py +0 -0
  791. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_tls_trust_store.py +0 -0
  792. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_tool_policy.py +0 -0
  793. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_tool_rounds_on_openai_apis.py +0 -0
  794. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_tool_scope.py +0 -0
  795. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_tool_step_output.py +0 -0
  796. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_trading_service.py +0 -0
  797. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_tradingview_bridge.py +0 -0
  798. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_training_pipeline.py +0 -0
  799. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_turn_planning.py +0 -0
  800. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_ui_completer_references.py +0 -0
  801. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_ui_console_theme.py +0 -0
  802. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_ui_input_box.py +0 -0
  803. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_ui_language_and_model.py +0 -0
  804. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_ui_robot_banner.py +0 -0
  805. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_update_health_routes.py +0 -0
  806. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_verification_hint.py +0 -0
  807. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_verification_policy.py +0 -0
  808. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_verification_runner_selection.py +0 -0
  809. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_version_consistency.py +0 -0
  810. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_version_counter.py +0 -0
  811. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_vertex_busy_retry.py +0 -0
  812. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_vertex_empty_rounds.py +0 -0
  813. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_vertex_models.py +0 -0
  814. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_vertexai_tool_history.py +0 -0
  815. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_video_analysis.py +0 -0
  816. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_video_editor.py +0 -0
  817. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_vscode_mcp.py +0 -0
  818. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_warehouse_agents.py +0 -0
  819. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_warehouse_cli_registration.py +0 -0
  820. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_warehouse_erp_client.py +0 -0
  821. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_warehouse_workflow.py +0 -0
  822. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_wheel_is_installable.py +0 -0
  823. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_workspace_changes.py +0 -0
  824. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_workspace_context.py +0 -0
  825. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_workspace_files.py +0 -0
  826. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_workspace_scope.py +0 -0
  827. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_workspace_service.py +0 -0
  828. {aria_code-0.119.0 → aria_code-0.121.0}/tests/test_workspace_verify.py +0 -0
  829. {aria_code-0.119.0 → aria_code-0.121.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.119.0
3
+ Version: 0.121.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.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>
175
+ <a href="https://pypi.org/project/aria-code/0.121.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.121.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.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>
18
+ <a href="https://pypi.org/project/aria-code/0.121.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.121.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.119.0"
7
+ version = "0.121.0"
8
8
  description = "Open-source AI agent for coding, financial analysis and logistics operations: numbers you can check, client data kept apart, actions a person approves"
9
9
  readme = "README.md"
10
10
  license = { text = "Apache-2.0" }
@@ -17,4 +17,4 @@ from __future__ import annotations
17
17
 
18
18
  __all__ = ["__version__"]
19
19
 
20
- __version__ = "0.119.0"
20
+ __version__ = "0.121.0"
@@ -176,6 +176,16 @@ def default_config() -> dict:
176
176
  "auto_compact_threshold": 0.78,
177
177
  "command_policy": "safe",
178
178
  "permission_mode": "workspace-write",
179
+ # Approval by risk level (safety/risk.py): "manual" asks as before;
180
+ # "risk" runs actions at or below auto_approve_level (0-2) without a
181
+ # prompt. L4 always asks, even after "always allow".
182
+ "approval_mode": "manual",
183
+ "auto_approve_level": 1,
184
+ # Independent review of a turn's changes by a fresh-context reviewer
185
+ # before it ends (runtime/review.py). Costs one extra model call.
186
+ "review_gate": False,
187
+ # The runtime's DONE/INCOMPLETE report under coding answers.
188
+ "delivery_report": True,
179
189
  "network_enabled": True,
180
190
  "data_sharing": False,
181
191
  "feedback_upload": False,
@@ -531,6 +531,13 @@ class ChatTurnMixin:
531
531
  from apps.cli.providers.runtime_bridge import run_chat_via_runtime
532
532
 
533
533
  response_text = ""
534
+ # Explored / Ran / Edit cells instead of a ⏺ and a ✓ per call;
535
+ # tool_display=classic keeps the per-call lines.
536
+ from ui.render.actions import ActionView
537
+ _action_view = (
538
+ None if _ARIA_BOT_MODE or self.config.get("tool_display", "actions") == "classic"
539
+ else ActionView()
540
+ )
534
541
  stream_consumer = TerminalRuntimeEventConsumer(
535
542
  terminal=self,
536
543
  console=console,
@@ -545,6 +552,7 @@ class ChatTurnMixin:
545
552
  fallback_from=self._last_provider or "local",
546
553
  ui_lang=self.config.get("ui_lang", "en") or "en",
547
554
  on_response_start=_print_response_header,
555
+ action_view=_action_view,
548
556
  )
549
557
  _start_spinner = stream_consumer.start_spinner
550
558
  _stop_spinner = stream_consumer.stop_spinner
@@ -616,57 +624,64 @@ class ChatTurnMixin:
616
624
  # 空响应自动重试:云端模型偶发空补全时,同 provider 重放本轮一次,
617
625
  # 而不是把"请重试"推给用户(60s 的工具结果/思考不该因一次抽风作废)。
618
626
  # 仅对 empty_response 重试;其他错误(配额/鉴权等)走原有 rescue 链。
619
- for _rt_attempt in range(2):
620
- try:
621
- _rt_turn = await run_chat_via_runtime(
622
- prompt=current_message, history=self.conversation[:-1],
623
- local_tools=LOCAL_TOOLS, tool_schemas=LOCAL_TOOL_SCHEMAS,
624
- model=model, config=_runtime_config, api_url=self.api_url,
625
- ollama_url=self.config.get("ollama_url", "http://localhost:11434"),
626
- cancel_event=self.cancel_event,
627
- on_token=on_token, on_thinking=on_thinking,
628
- on_tool_call=on_tool_call,
629
- on_tool_result=on_tool_result, on_status=on_status,
630
- thinking_mode=thinking_mode, user_context=user_context,
631
- auth_token=auth_token, project_context=_PROJECT_CONTEXT,
632
- system_override=_rt_sys_ov,
633
- max_rounds=hard_max_rounds,
634
- confirm_tools=_CONFIRM_TOOLS,
635
- approval_callback=_approval_callback,
636
- approval_applier=_approval_applier,
637
- requires_evidence=_requires_financial_evidence,
638
- grounding_tools=grounding_tool_names(LOCAL_TOOL_SCHEMAS),
639
- evidence_already_grounded=bool(
640
- evidence_grounded
641
- or (_det_wants_analysis and deterministic.get("success"))
642
- ),
643
- execution_context=lambda: {
644
- "_run_id": self._active_run_id,
645
- "_session_id": self.session_id,
646
- },
647
- return_result=True,
648
- )
649
- except Exception as _rt_err:
650
- logger.error("Runtime turn failed: %s", _rt_err)
651
- _rt_turn = None
627
+ _ACTION_VIEW_ACTIVE[0] = _action_view is not None
628
+ try:
629
+ for _rt_attempt in range(2):
630
+ try:
631
+ _rt_turn = await run_chat_via_runtime(
632
+ prompt=current_message, history=self.conversation[:-1],
633
+ local_tools=LOCAL_TOOLS, tool_schemas=LOCAL_TOOL_SCHEMAS,
634
+ model=model, config=_runtime_config, api_url=self.api_url,
635
+ ollama_url=self.config.get("ollama_url", "http://localhost:11434"),
636
+ cancel_event=self.cancel_event,
637
+ on_token=on_token, on_thinking=on_thinking,
638
+ on_tool_call=on_tool_call,
639
+ on_tool_result=on_tool_result, on_status=on_status,
640
+ thinking_mode=thinking_mode, user_context=user_context,
641
+ auth_token=auth_token, project_context=_PROJECT_CONTEXT,
642
+ system_override=_rt_sys_ov,
643
+ max_rounds=hard_max_rounds,
644
+ confirm_tools=_CONFIRM_TOOLS,
645
+ approval_callback=_approval_callback,
646
+ approval_applier=_approval_applier,
647
+ requires_evidence=_requires_financial_evidence,
648
+ grounding_tools=grounding_tool_names(LOCAL_TOOL_SCHEMAS),
649
+ evidence_already_grounded=bool(
650
+ evidence_grounded
651
+ or (_det_wants_analysis and deterministic.get("success"))
652
+ ),
653
+ execution_context=lambda: {
654
+ "_run_id": self._active_run_id,
655
+ "_session_id": self.session_id,
656
+ },
657
+ return_result=True,
658
+ )
659
+ except Exception as _rt_err:
660
+ logger.error("Runtime turn failed: %s", _rt_err)
661
+ _rt_turn = None
652
662
 
653
- _rt_probe_text = getattr(_rt_turn, "text", "") if _rt_turn is not None else ""
654
- _rt_probe_cancelled = bool(getattr(_rt_turn, "cancelled", False)) or bool(
655
- self.cancel_event is not None and self.cancel_event.is_set()
656
- )
657
- if _rt_probe_cancelled or (_rt_probe_text or "").strip():
663
+ _rt_probe_text = getattr(_rt_turn, "text", "") if _rt_turn is not None else ""
664
+ _rt_probe_cancelled = bool(getattr(_rt_turn, "cancelled", False)) or bool(
665
+ self.cancel_event is not None and self.cancel_event.is_set()
666
+ )
667
+ if _rt_probe_cancelled or (_rt_probe_text or "").strip():
668
+ break
669
+ _rt_probe_err = (
670
+ getattr(_rt_turn, "error", None) if _rt_turn is not None else None
671
+ ) or "empty_response"
672
+ if _rt_attempt == 0 and "empty_response" in str(_rt_probe_err) and "ARIA-4223" not in str(_rt_probe_err):
673
+ if HAS_RICH:
674
+ console.print(" [dim yellow]⚠ Empty response from model; auto-retrying once...[/dim yellow]")
675
+ else:
676
+ print(" ⚠ Empty response from model; auto-retrying once...")
677
+ continue
658
678
  break
659
- _rt_probe_err = (
660
- getattr(_rt_turn, "error", None) if _rt_turn is not None else None
661
- ) or "empty_response"
662
- if _rt_attempt == 0 and "empty_response" in str(_rt_probe_err) and "ARIA-4223" not in str(_rt_probe_err):
663
- if HAS_RICH:
664
- console.print(" [dim yellow]⚠ Empty response from model; auto-retrying once...[/dim yellow]")
665
- else:
666
- print(" ⚠ Empty response from model; auto-retrying once...")
667
- continue
668
- break
669
679
 
680
+ finally:
681
+ # Reset whatever ends the turn: /run after it must print its output.
682
+ _ACTION_VIEW_ACTIVE[0] = False
683
+ if _action_view is not None:
684
+ self._action_details = list(_action_view.details)
670
685
  response_text = stream_consumer.response_text
671
686
  token_count = stream_consumer.token_count
672
687
  thinking_tokens = stream_consumer.thinking_tokens
@@ -693,6 +708,10 @@ class ChatTurnMixin:
693
708
  "error": getattr(_rt_turn, "error", None) or getattr(_rt_final, "error", ""),
694
709
  "stop_reason": getattr(_rt_final, "stop_reason", "completed"),
695
710
  "acceptance": getattr(_rt_final, "acceptance", None),
711
+ "delivery": getattr(_rt_final, "delivery", None),
712
+ # Captured now: the run id is cleared when the run is marked done,
713
+ # before the report that names it for /rewind is printed.
714
+ "run_id": self._active_run_id,
696
715
  "provider": _rt_provider,
697
716
  "cancelled": False,
698
717
  "usage": {
@@ -1026,6 +1045,21 @@ class ChatTurnMixin:
1026
1045
  for _sym in _ml_signal_syms:
1027
1046
  self._record_prediction(_sym, final_text)
1028
1047
 
1048
+ # The runtime's delivery report: what changed, what was verified,
1049
+ # risk, checkpoints — from evidence, not from the model's summary.
1050
+ _delivery = result.get("delivery") if isinstance(result, dict) else None
1051
+ if _delivery and self.config.get("delivery_report", True):
1052
+ try:
1053
+ from ui.render.output import print_delivery_report
1054
+ print_delivery_report(
1055
+ console if HAS_RICH else None,
1056
+ _delivery,
1057
+ run_id=str(result.get("run_id") or ""),
1058
+ root=os.getcwd(),
1059
+ )
1060
+ except Exception as _delivery_err:
1061
+ logger.debug("delivery report not shown: %s", _delivery_err)
1062
+
1029
1063
  # Metadata line — detailed stats
1030
1064
  metadata = turn_result.metadata
1031
1065
  prompt_t = metadata.prompt_tokens
@@ -1819,6 +1819,7 @@ class ModelCommandsMixin:
1819
1819
  for key in ("api_url", "ollama_url", "local_provider", "model",
1820
1820
  "provider_fallback", "llm_base_url", "thinking_mode",
1821
1821
  "command_policy", "permission_mode", "network_enabled",
1822
+ "approval_mode", "auto_approve_level", "review_gate", "delivery_report",
1822
1823
  "write_policy", "lsp_autocheck", "input_style", "input_theme",
1823
1824
  "response_footer", "auto_compact_context",
1824
1825
  "auto_compact_threshold", "auto_save_sessions"):
@@ -1866,6 +1867,7 @@ class ModelCommandsMixin:
1866
1867
  for key in ("api_url", "ollama_url", "local_provider", "model",
1867
1868
  "provider_fallback", "llm_base_url", "thinking_mode",
1868
1869
  "command_policy", "permission_mode", "network_enabled",
1870
+ "approval_mode", "auto_approve_level", "review_gate", "delivery_report",
1869
1871
  "write_policy", "lsp_autocheck", "input_style", "input_theme",
1870
1872
  "response_footer", "auto_compact_context",
1871
1873
  "auto_compact_threshold"):
@@ -1886,7 +1888,19 @@ class ModelCommandsMixin:
1886
1888
  msg = "permission_mode must be one of: read-only | workspace-write | full-access"
1887
1889
  self.context.console.print(f"[red]{msg}[/red]" if self.context.has_rich else msg)
1888
1890
  return
1889
- elif key in {"network_enabled", "data_sharing", "feedback_upload"}:
1891
+ elif key == "approval_mode":
1892
+ if val not in {"manual", "risk"}:
1893
+ msg = ("approval_mode must be one of: manual | risk "
1894
+ "(risk: auto-approve actions at or below auto_approve_level)")
1895
+ self.context.console.print(f"[red]{msg}[/red]" if self.context.has_rich else msg)
1896
+ return
1897
+ elif key == "auto_approve_level":
1898
+ if val not in {"0", "1", "2"}:
1899
+ msg = "auto_approve_level must be 0, 1 or 2 (L3 and L4 always ask)"
1900
+ self.context.console.print(f"[red]{msg}[/red]" if self.context.has_rich else msg)
1901
+ return
1902
+ val = int(val)
1903
+ elif key in {"network_enabled", "data_sharing", "feedback_upload", "review_gate", "delivery_report"}:
1890
1904
  if val.lower() in {"true", "1", "yes", "on"}:
1891
1905
  val = True
1892
1906
  elif val.lower() in {"false", "0", "no", "off"}:
@@ -212,6 +212,8 @@ class HeadlessMixin:
212
212
  "provider": getattr(_turn.final, "provider", ""),
213
213
  "tools_used": _tools_used,
214
214
  "acceptance": getattr(_turn.final, "acceptance", None),
215
+ "delivery": getattr(_turn.final, "delivery", None),
216
+ "contract": getattr(_turn.final, "contract", None),
215
217
  "stop_reason": getattr(_turn.final, "stop_reason", "") or _turn.error or "completed",
216
218
  }
217
219
  finally:
@@ -93,7 +93,14 @@ def build_local_tool_schemas(
93
93
  "type": "function",
94
94
  "function": {
95
95
  "name": "edit_file",
96
- "description": "Edit a file by replacing old_string with new_string. Read the file first to get the exact text to replace. old_string must match exactly one place: include enough surrounding lines to make it unique, or set replace_all to change every match.",
96
+ "description": (
97
+ "Edit a file by replacing old_string with new_string. Read the file first to get the exact "
98
+ "text to replace. old_string must match exactly one place: include enough surrounding lines "
99
+ "to make it unique, or set replace_all to change every match. To change a whole function, "
100
+ "method or class, pass symbol instead of old_string (e.g. symbol=\"Session.refresh\"): "
101
+ "new_string is then the complete new definition, or with position=\"after\" the code to "
102
+ "insert after it."
103
+ ),
97
104
  "parameters": {
98
105
  "type": "object",
99
106
  "properties": {
@@ -101,8 +108,10 @@ def build_local_tool_schemas(
101
108
  "old_string": {"type": "string", "description": "Exact text to find and replace (must match exactly)"},
102
109
  "new_string": {"type": "string", "description": "Replacement text"},
103
110
  "replace_all": {"type": "boolean", "description": "Replace every match instead of requiring exactly one (default false)"},
111
+ "symbol": {"type": "string", "description": "Instead of old_string: the definition to edit, by name or Class.method"},
112
+ "position": {"type": "string", "enum": ["replace", "after"], "description": "With symbol: replace the definition (default) or insert new_string after it"},
104
113
  },
105
- "required": ["path", "old_string", "new_string"],
114
+ "required": ["path", "new_string"],
106
115
  },
107
116
  },
108
117
  },
@@ -46,7 +46,11 @@ CODING_SYSTEM_PROMPT = (
46
46
  " 'playwright not found'), you MUST pip3 install exactly what it says and re-run. "
47
47
  " DO NOT write code to catch the ImportError; install the dependency.\n"
48
48
  "5. NEVER suggest applying patches manually or say 'here is the updated code'. "
49
- " YOU must apply the edit using edit_file/multi_edit/write_file tool calls.\n\n"
49
+ " YOU must apply the edit using edit_file/multi_edit/write_file tool calls.\n"
50
+ "6. To rewrite a whole function, method or class, call edit_file with "
51
+ " symbol=\"Name\" or \"Class.method\" and the complete new definition as new_string, "
52
+ " instead of copying the old text into old_string. position=\"after\" inserts "
53
+ " new_string after that definition.\n\n"
50
54
 
51
55
  "## SUBAGENT DELEGATION\n"
52
56
  "If a task is extremely large (e.g., 'Refactor the entire auth system' or 'Write tests for 50 endpoints'), "
@@ -85,6 +85,16 @@ def _declared_acceptance_commands(cfg: dict, message: str) -> tuple:
85
85
  return tuple(commands)
86
86
 
87
87
 
88
+ def _workspace_root(cfg: dict, executor=None) -> str:
89
+ """Where this turn's tools act: the executor's workspace if it names one."""
90
+ import os
91
+
92
+ root = cfg.get("_session_workspace_root") or cfg.get("workspace_root") or os.getcwd()
93
+ if getattr(executor, "execution_context", None) is not None:
94
+ root = dict(executor.execution_context() or {}).get("_workspace") or root
95
+ return str(root)
96
+
97
+
88
98
  def build_acceptance_gate(executor, config: Optional[dict] = None, message: str = ""):
89
99
  """The CLI's acceptance gate, or ``None`` when this session shouldn't have one.
90
100
 
@@ -108,14 +118,11 @@ def build_acceptance_gate(executor, config: Optional[dict] = None, message: str
108
118
  if "run_command" not in getattr(executor, "local_tools", {}):
109
119
  return None
110
120
 
111
- import os
112
121
  from aria_code.runtime.acceptance import AcceptanceGate
113
122
  from aria_code.runtime.approval import ApprovalDecision
114
123
 
115
124
  timeout = int(cfg.get("acceptance_timeout", 300) or 300)
116
- root = cfg.get("_session_workspace_root") or cfg.get("workspace_root") or os.getcwd()
117
- if getattr(executor, "execution_context", None) is not None:
118
- root = dict(executor.execution_context() or {}).get("_workspace") or root
125
+ root = _workspace_root(cfg, executor)
119
126
 
120
127
  def _runner(command: str) -> dict:
121
128
  return executor.execute_local("run_command", {
@@ -132,6 +139,58 @@ def build_acceptance_gate(executor, config: Optional[dict] = None, message: str
132
139
  )
133
140
 
134
141
 
142
+ def build_change_contract(config: Optional[dict] = None, message: str = "", executor=None):
143
+ """The project's change contract with this request as its goal, or None.
144
+
145
+ Declared in ``.aria/policy.yaml`` under the workspace root. A file that
146
+ cannot be read yields a fail-closed contract rather than none — see
147
+ ``ChangeContract.fail_closed``.
148
+ """
149
+ from aria_code.runtime.contract import ChangeContract, ContractError
150
+
151
+ root = _workspace_root(config or {}, executor)
152
+ try:
153
+ contract = ChangeContract.load(root)
154
+ except ContractError as exc:
155
+ contract = ChangeContract.fail_closed(root, str(exc))
156
+ except Exception as exc: # unreadable file, missing yaml, …: still fail closed
157
+ contract = ChangeContract.fail_closed(root, f"{type(exc).__name__}: {exc}")
158
+ return contract.with_goal(message) if contract is not None else None
159
+
160
+
161
+ def build_review_gate(config: Optional[dict] = None, *, model: str, api_url: Optional[str],
162
+ ollama_url: str, thinking_mode: str = "auto", auth_token: Optional[str] = None):
163
+ """The independent reviewer for this turn, or None unless review_gate is on.
164
+
165
+ Same model, fresh context: no history, no tools, no project context — the
166
+ reviewer judges the diff it is given, not the conversation that made it.
167
+ """
168
+ cfg = config or {}
169
+ if not cfg.get("review_gate", False):
170
+ return None
171
+ if str(cfg.get("permission_mode", "workspace-write") or "") in _READ_ONLY_MODES:
172
+ return None
173
+ from aria_code.runtime.review import REVIEWER_SYSTEM, ReviewGate
174
+
175
+ reviewer_fn = make_provider_fn(
176
+ model=model, config=cfg, api_url=api_url, ollama_url=ollama_url,
177
+ tool_schemas=[], thinking_mode=thinking_mode, auth_token=auth_token,
178
+ system_override=REVIEWER_SYSTEM,
179
+ )
180
+
181
+ async def _review(prompt: str) -> str:
182
+ result = await reviewer_fn(prompt, [])
183
+ if not result.get("success", True):
184
+ raise RuntimeError(result.get("error") or "reviewer call failed")
185
+ return str(result.get("response") or "")
186
+
187
+ try:
188
+ attempts = int(cfg.get("review_max_attempts", 1))
189
+ except (TypeError, ValueError):
190
+ attempts = 1
191
+ return ReviewGate(reviewer=_review, max_attempts=max(0, attempts))
192
+
193
+
135
194
  async def run_with_fallback(
136
195
  route: str,
137
196
  *,
@@ -354,6 +413,9 @@ async def run_chat_via_runtime(
354
413
  )
355
414
  executor = build_tool_executor(local_tools, config, execution_context)
356
415
  gate = build_acceptance_gate(executor, config, prompt)
416
+ contract = build_change_contract(config, prompt, executor)
417
+ review = build_review_gate(config, model=model, api_url=api_url, ollama_url=ollama_url,
418
+ thinking_mode=thinking_mode, auth_token=auth_token)
357
419
 
358
420
  result = await run_turn(
359
421
  prompt, history,
@@ -369,5 +431,7 @@ async def run_chat_via_runtime(
369
431
  grounding_tools=grounding_tools,
370
432
  evidence_already_grounded=evidence_already_grounded,
371
433
  acceptance=gate,
434
+ contract=contract,
435
+ review=review,
372
436
  )
373
437
  return result if return_result else result.text
@@ -116,6 +116,8 @@ class TurnLifecycle:
116
116
  class TerminalRuntimeEventConsumer:
117
117
  """Consume runtime/provider events and render them to a terminal."""
118
118
 
119
+ action_view: Any = None
120
+
119
121
  def __init__(
120
122
  self,
121
123
  *,
@@ -134,6 +136,7 @@ class TerminalRuntimeEventConsumer:
134
136
  ui_lang: str = "en",
135
137
  on_response_start: Callable[[], None] | None = None,
136
138
  on_phase_change: Callable[[TurnPhase], None] | None = None,
139
+ action_view: Any = None,
137
140
  ) -> None:
138
141
  self.terminal = terminal
139
142
  self.console = console
@@ -150,6 +153,9 @@ class TerminalRuntimeEventConsumer:
150
153
  self.ui_lang = ui_lang or "en"
151
154
  self.on_response_start = on_response_start
152
155
  self.on_phase_change = on_phase_change
156
+ # ui.render.actions.ActionView: tool events as Explored / Ran / Edit
157
+ # cells. None keeps the per-call ⏺ / ✓ lines.
158
+ self.action_view = action_view
153
159
  self.lifecycle = TurnLifecycle()
154
160
 
155
161
  self.response_text = ""
@@ -242,6 +248,7 @@ class TerminalRuntimeEventConsumer:
242
248
  return
243
249
  self._finish_thinking()
244
250
  self.stop_spinner()
251
+ self.flush_actions()
245
252
  self.response_started = True
246
253
  if self.on_response_start is not None:
247
254
  self.on_response_start()
@@ -249,8 +256,27 @@ class TerminalRuntimeEventConsumer:
249
256
  def finish(self, phase: TurnPhase = TurnPhase.DONE) -> None:
250
257
  self._finish_thinking()
251
258
  self.stop_spinner()
259
+ self.close_tool_spinner()
260
+ self.flush_actions()
252
261
  self.set_phase(phase)
253
262
 
263
+ def print_action_lines(self, lines) -> None:
264
+ rich = self.has_rich and self.console is not None
265
+ for style, text in lines:
266
+ if text.startswith("⏺"): # a new cell: one blank line above it
267
+ self.console.print() if rich else print()
268
+ if rich:
269
+ from rich.markup import escape
270
+ body = f" {escape(text)}"
271
+ self.console.print(f"[{style}]{body}[/{style}]" if style else body, highlight=False)
272
+ else:
273
+ print(f" {text}")
274
+
275
+ def flush_actions(self) -> None:
276
+ """Print a pending Explored cell before anything else reaches the screen."""
277
+ if self.action_view is not None:
278
+ self.print_action_lines(self.action_view.flush())
279
+
254
280
  def stop_spinner(self) -> None:
255
281
  if self.spinner is not None:
256
282
  try:
@@ -521,7 +547,9 @@ class TerminalRuntimeEventConsumer:
521
547
  self.tool_spinner = self.console.status(label, spinner="dots12", spinner_style="cyan")
522
548
  self.tool_spinner.__enter__()
523
549
 
524
- if self.print_tool_call is not None:
550
+ if self.action_view is not None:
551
+ self.print_action_lines(self.action_view.start(tool, params if isinstance(params, dict) else {}))
552
+ elif self.print_tool_call is not None:
525
553
  self.print_tool_call(tool, params if isinstance(params, dict) else {})
526
554
 
527
555
  self.tool_start_times.setdefault(tool, []).append(time.time())
@@ -557,7 +585,9 @@ class TerminalRuntimeEventConsumer:
557
585
  if not params_queue:
558
586
  self.tool_params.pop(tool, None)
559
587
  ok = not (isinstance(summary, dict) and not summary.get("success", True))
560
- if self.print_tool_done is not None:
588
+ if self.action_view is not None:
589
+ self.print_action_lines(self.action_view.done(tool, params, summary, elapsed_ms / 1000))
590
+ elif self.print_tool_done is not None:
561
591
  # Surface the failure reason on the ✗ line — a red cross with no
562
592
  # explanation leaves both the user and the reviewer blind to WHY
563
593
  # (observed in the channels drill: peer_comparison failed 4× with
@@ -613,6 +643,15 @@ class TerminalRuntimeEventConsumer:
613
643
  else:
614
644
  print(f" {'✓' if passed else '✗'} {message}")
615
645
  return
646
+ if state in ("review_passed", "review_blocking", "review_error"):
647
+ mark, colour = {"review_passed": ("✓", "green"), "review_blocking": ("✗", "yellow"),
648
+ "review_error": ("⚠", "dim")}[state]
649
+ if self.has_rich and self.console is not None:
650
+ from rich.markup import escape
651
+ self.console.print(f" [{colour}]{mark} {escape(message)}[/{colour}]")
652
+ else:
653
+ print(f" {mark} {message}")
654
+ return
616
655
  if state in {"max_rounds", "budget_exhausted", "loop_guard", "checks_failed"}:
617
656
  if self.has_rich and self.console is not None:
618
657
  self.console.print(f" [yellow]Task incomplete: {message}[/yellow]")
@@ -320,7 +320,8 @@ class ChromeMixin:
320
320
  def _toggle_transcript(event):
321
321
  """Ctrl+O → show/hide recent tool calls + full thinking of last turn."""
322
322
  self._transcript_visible = not self._transcript_visible
323
- if self._transcript_visible and (self._transcript_log or self._last_thinking):
323
+ _details = list(getattr(self, "_action_details", None) or [])
324
+ if self._transcript_visible and (self._transcript_log or self._last_thinking or _details):
324
325
  import sys as _sys
325
326
  _sys.stderr.write("\n")
326
327
  if self._last_thinking:
@@ -329,7 +330,14 @@ class ChromeMixin:
329
330
  # wrap-soft: indent each line, cap very long lines
330
331
  _sys.stderr.write(f" {tline[:200]}\n")
331
332
  _sys.stderr.write("\n")
332
- if self._transcript_log:
333
+ if _details:
334
+ # Every action of the last turn in full: commands with
335
+ # their whole output, edits with their whole diff.
336
+ from aria_code.ui.render.actions import format_action_details
337
+ _sys.stderr.write(" ⏺ Actions\n")
338
+ for _style, line in format_action_details(_details):
339
+ _sys.stderr.write(f" {line}\n")
340
+ elif self._transcript_log:
333
341
  _sys.stderr.write(" ⏺ Tool calls\n")
334
342
  for line in self._transcript_log[-20:]:
335
343
  _sys.stderr.write(f" {line}\n")