aria-code 0.125.0__tar.gz → 0.127.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 (855) hide show
  1. {aria_code-0.125.0/src/aria_code.egg-info → aria_code-0.127.0}/PKG-INFO +3 -2
  2. {aria_code-0.125.0 → aria_code-0.127.0}/README.md +2 -1
  3. {aria_code-0.125.0 → aria_code-0.127.0}/pyproject.toml +1 -1
  4. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/__init__.py +14 -6
  5. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/_version.py +1 -1
  6. aria_code-0.127.0/src/aria_code/apps/cli/native_bridge.py +118 -0
  7. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/tools/write_tools.py +3 -3
  8. aria_code-0.127.0/src/aria_code/evals/behavior.py +113 -0
  9. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/evals/harness.py +36 -1
  10. aria_code-0.127.0/src/aria_code/evals/review_probe.py +132 -0
  11. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/evals/runner.py +8 -4
  12. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/evals/summary.py +4 -0
  13. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/workspace/files.py +2 -2
  14. {aria_code-0.125.0 → aria_code-0.127.0/src/aria_code.egg-info}/PKG-INFO +3 -2
  15. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code.egg-info/SOURCES.txt +7 -0
  16. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_edit_and_command_safety.py +21 -0
  17. aria_code-0.127.0/tests/test_eval_behavior.py +156 -0
  18. aria_code-0.127.0/tests/test_frozen_module_aliases.py +56 -0
  19. aria_code-0.127.0/tests/test_native_bridge.py +99 -0
  20. aria_code-0.127.0/tests/test_rust_cli.py +151 -0
  21. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_workspace_files.py +19 -0
  22. {aria_code-0.125.0 → aria_code-0.127.0}/LICENSE +0 -0
  23. {aria_code-0.125.0 → aria_code-0.127.0}/NOTICE +0 -0
  24. {aria_code-0.125.0 → aria_code-0.127.0}/setup.cfg +0 -0
  25. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/adk_apps/__init__.py +0 -0
  26. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/adk_apps/aria_code_review/__init__.py +0 -0
  27. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/adk_apps/aria_code_review/agent.py +0 -0
  28. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/adk_apps/aria_research/__init__.py +0 -0
  29. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/adk_apps/aria_research/agent.py +0 -0
  30. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/__init__.py +0 -0
  31. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/base.py +0 -0
  32. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/code_review.py +0 -0
  33. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/deep/__init__.py +0 -0
  34. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/deep/calibration_loop.py +0 -0
  35. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/deep/critic.py +0 -0
  36. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/deep/deepen.py +0 -0
  37. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/deep/models.py +0 -0
  38. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/deep/pipeline.py +0 -0
  39. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/deep/quant_fusion.py +0 -0
  40. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/deep/themes.py +0 -0
  41. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/deep/tiers.py +0 -0
  42. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/engineering/__init__.py +0 -0
  43. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/engineering/coder.py +0 -0
  44. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/engineering/tester.py +0 -0
  45. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/financial/__init__.py +0 -0
  46. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/financial/cashflow_burn.py +0 -0
  47. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/financial/catalyst.py +0 -0
  48. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/financial/corporate_finance.py +0 -0
  49. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/financial/debate.py +0 -0
  50. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/financial/earnings.py +0 -0
  51. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/financial/fundamental.py +0 -0
  52. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/financial/macro.py +0 -0
  53. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/financial/news.py +0 -0
  54. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/financial/risk.py +0 -0
  55. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/financial/sector.py +0 -0
  56. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/financial/strategist.py +0 -0
  57. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/financial/stripe_revenue.py +0 -0
  58. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/financial/synthesis.py +0 -0
  59. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/financial/technical.py +0 -0
  60. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/orchestrator.py +0 -0
  61. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/portfolio_agent.py +0 -0
  62. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/realty/__init__.py +0 -0
  63. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/realty/asset_diagnosis.py +0 -0
  64. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/realty/business_match.py +0 -0
  65. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/realty/cashflow_verify.py +0 -0
  66. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/realty/contract_rules.py +0 -0
  67. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/realty/energy_anomaly.py +0 -0
  68. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/realty/exit_settlement.py +0 -0
  69. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/realty/fulfillment_risk.py +0 -0
  70. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/realty/ops_optimize.py +0 -0
  71. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/realty/revenue_share.py +0 -0
  72. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/registry.py +0 -0
  73. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/signal_scheme.py +0 -0
  74. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/sports/__init__.py +0 -0
  75. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/sports/football_agent.py +0 -0
  76. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/supervisor.py +0 -0
  77. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/team.py +0 -0
  78. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/warehouse/__init__.py +0 -0
  79. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/warehouse/contracts.py +0 -0
  80. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/warehouse/dashboard.py +0 -0
  81. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/warehouse/fulfillment_leadtime.py +0 -0
  82. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/warehouse/inbound_exceptions.py +0 -0
  83. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/warehouse/inventory_health.py +0 -0
  84. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/warehouse/local_run.py +0 -0
  85. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/warehouse/local_snapshot.py +0 -0
  86. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/warehouse/logistics_cost.py +0 -0
  87. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/warehouse/logistics_sync.py +0 -0
  88. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/agents/warehouse/workflow.py +0 -0
  89. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/aliyun_data_client.py +0 -0
  90. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/README.md +0 -0
  91. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/__init__.py +0 -0
  92. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/channels/README.md +0 -0
  93. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/channels/__init__.py +0 -0
  94. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/channels/approvals.py +0 -0
  95. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/channels/conversation.py +0 -0
  96. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/channels/digest.py +0 -0
  97. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/channels/intake.py +0 -0
  98. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/channels/registry.py +0 -0
  99. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/channels/tradingview.py +0 -0
  100. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/README.md +0 -0
  101. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/__init__.py +0 -0
  102. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/_optional.py +0 -0
  103. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/bootstrap.py +0 -0
  104. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/broker_render.py +0 -0
  105. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/chat_turn.py +0 -0
  106. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/codegen_paths.py +0 -0
  107. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/__init__.py +0 -0
  108. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/_business_render.py +0 -0
  109. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/_ui.py +0 -0
  110. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/analysis_cmds.py +0 -0
  111. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/ashare_prediction_cmds.py +0 -0
  112. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/auth_cmds.py +0 -0
  113. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/backtest_cmds.py +0 -0
  114. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/broker_cmds.py +0 -0
  115. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/business_workflow_cmds.py +0 -0
  116. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/canvas_cmds.py +0 -0
  117. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/catalog.py +0 -0
  118. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/core_cmds.py +0 -0
  119. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/data_cmds.py +0 -0
  120. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/diagnostic_cmds.py +0 -0
  121. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/diagnostic_ops_cmds.py +0 -0
  122. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/file_cmds.py +0 -0
  123. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/finance_service_cmds.py +0 -0
  124. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/fx_commodity_cmds.py +0 -0
  125. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/market.py +0 -0
  126. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/market_cmds.py +0 -0
  127. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/market_context.py +0 -0
  128. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/market_render.py +0 -0
  129. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/model_cmds.py +0 -0
  130. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/ops_cmds.py +0 -0
  131. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/orchestrator_cmds.py +0 -0
  132. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/pdf_export_cmds.py +0 -0
  133. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/portfolio_cmds.py +0 -0
  134. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/report.py +0 -0
  135. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/scaffold_templates.py +0 -0
  136. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/session_cmds.py +0 -0
  137. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/session_ux_cmds.py +0 -0
  138. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/team.py +0 -0
  139. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/team_render.py +0 -0
  140. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/ui_cmds.py +0 -0
  141. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/warehouse_cmds.py +0 -0
  142. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/workflow_cmds.py +0 -0
  143. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/commands/workspace_cmds.py +0 -0
  144. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/config_paths.py +0 -0
  145. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/config_store.py +0 -0
  146. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/constants.py +0 -0
  147. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/context.py +0 -0
  148. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/deterministic.py +0 -0
  149. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/direct.py +0 -0
  150. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/earnings_view.py +0 -0
  151. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/exec_events.py +0 -0
  152. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/finance_service_catalog.py +0 -0
  153. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/football_reports.py +0 -0
  154. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/github_app_auth.py +0 -0
  155. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/google_login.py +0 -0
  156. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/handlers/__init__.py +0 -0
  157. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/handlers/broker_handlers.py +0 -0
  158. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/handlers/chart_handlers.py +0 -0
  159. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/handlers/market_handlers.py +0 -0
  160. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/handlers/realty_handlers.py +0 -0
  161. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/handlers/sports_handlers.py +0 -0
  162. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/handlers/strategy_advice.py +0 -0
  163. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/headless.py +0 -0
  164. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/helpers.py +0 -0
  165. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/hooks.py +0 -0
  166. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/i18n.py +0 -0
  167. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/intent.py +0 -0
  168. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/intent_router.py +0 -0
  169. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/intent_signals.py +0 -0
  170. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/lifecycle_hooks.py +0 -0
  171. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/local_tool_schemas.py +0 -0
  172. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/main.py +0 -0
  173. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/market_hours.py +0 -0
  174. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/market_metadata.py +0 -0
  175. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/market_universe.py +0 -0
  176. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/message_processing.py +0 -0
  177. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/mixin_binding.py +0 -0
  178. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/model_catalog.py +0 -0
  179. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/model_probe.py +0 -0
  180. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/model_retirement.py +0 -0
  181. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/pdf_report.py +0 -0
  182. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/plan_mode.py +0 -0
  183. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/plotly_html.py +0 -0
  184. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/prediction_feedback.py +0 -0
  185. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/preflight.py +0 -0
  186. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/project_aria.py +0 -0
  187. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/prompt_assembly.py +0 -0
  188. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/prompts/__init__.py +0 -0
  189. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/prompts/coding.py +0 -0
  190. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/prompts/select.py +0 -0
  191. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/prompts/system_prompts.py +0 -0
  192. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/prompts/ui.py +0 -0
  193. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/provider_endpoints.py +0 -0
  194. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/provider_keys.py +0 -0
  195. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/providers/__init__.py +0 -0
  196. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/providers/base.py +0 -0
  197. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/providers/chat_routing.py +0 -0
  198. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/providers/collaboration.py +0 -0
  199. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/providers/llm/__init__.py +0 -0
  200. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/providers/llm/offline_responses.py +0 -0
  201. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/providers/llm/ollama_stream.py +0 -0
  202. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/providers/llm/response_cache.py +0 -0
  203. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/providers/llm/sse_stream.py +0 -0
  204. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/providers/runtime_bridge.py +0 -0
  205. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/providers/vertexai_stream.py +0 -0
  206. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/release_download.py +0 -0
  207. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/review_runner.py +0 -0
  208. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/runtime_consumer.py +0 -0
  209. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/sandbox.py +0 -0
  210. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/session_export.py +0 -0
  211. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/session_jsonl.py +0 -0
  212. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/session_store.py +0 -0
  213. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/skills_catalog.py +0 -0
  214. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/task_isolation.py +0 -0
  215. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/terminal_chrome.py +0 -0
  216. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/todo_tracker.py +0 -0
  217. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/tool_executor.py +0 -0
  218. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/tool_registry.py +0 -0
  219. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/tool_scope.py +0 -0
  220. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/tools/__init__.py +0 -0
  221. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/tools/context.py +0 -0
  222. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/tools/file_tools.py +0 -0
  223. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/tools/market_tools.py +0 -0
  224. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/tools/notebook_tools.py +0 -0
  225. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/tools/system_tools.py +0 -0
  226. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/tradingview_bridge.py +0 -0
  227. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/transactions.py +0 -0
  228. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/turn_planning.py +0 -0
  229. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/update_check.py +0 -0
  230. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/updater.py +0 -0
  231. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/utils/__init__.py +0 -0
  232. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/utils/market_detect.py +0 -0
  233. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/workflow_runner.py +0 -0
  234. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/cli/workspace_route.py +0 -0
  235. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/daemon/README.md +0 -0
  236. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/vscode/README.md +0 -0
  237. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/apps/vscode/package.json +0 -0
  238. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/aria_cli.py +0 -0
  239. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/aria_daemon.py +0 -0
  240. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/aria_feishu_bot.py +0 -0
  241. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/aria_mcp_server.py +0 -0
  242. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/aria_relay_client.py +0 -0
  243. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/aria_relay_server.py +0 -0
  244. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/aria_telegram_bot.py +0 -0
  245. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/ariarc.py +0 -0
  246. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/artifacts.py +0 -0
  247. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/backtest_engine.py +0 -0
  248. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/backtest_report.py +0 -0
  249. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/brokers/__init__.py +0 -0
  250. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/brokers/automation.py +0 -0
  251. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/brokers/base.py +0 -0
  252. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/brokers/capabilities.py +0 -0
  253. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/brokers/cn/__init__.py +0 -0
  254. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/brokers/cn/easytrader_broker.py +0 -0
  255. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/brokers/cn/futu_broker.py +0 -0
  256. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/brokers/cn/longbridge_broker.py +0 -0
  257. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/brokers/cn/tiger_broker.py +0 -0
  258. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/brokers/cn/xtquant_broker.py +0 -0
  259. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/brokers/config.py +0 -0
  260. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/brokers/intl/__init__.py +0 -0
  261. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/brokers/intl/alpaca_broker.py +0 -0
  262. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/brokers/intl/ibkr_broker.py +0 -0
  263. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/brokers/intl/trading212_broker.py +0 -0
  264. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/brokers/intl/webull_broker.py +0 -0
  265. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/brokers/paper_broker.py +0 -0
  266. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/brokers/planning.py +0 -0
  267. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/brokers/registry.py +0 -0
  268. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/brokers/trading.py +0 -0
  269. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/canva_client.py +0 -0
  270. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/change_store.py +0 -0
  271. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/clients/__init__.py +0 -0
  272. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/clients/aliyun_data_client.py +0 -0
  273. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/clients/aria_relay_client.py +0 -0
  274. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/clients/canva_client.py +0 -0
  275. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/clients/figma_client.py +0 -0
  276. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/clients/football_data_client.py +0 -0
  277. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/clients/kling_video_client.py +0 -0
  278. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/clients/market_data_client.py +0 -0
  279. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/clients/openai_image_client.py +0 -0
  280. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/clients/runway_video_client.py +0 -0
  281. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/clients/warehouse_erp_client.py +0 -0
  282. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/cloud_memory.py +0 -0
  283. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/command_safety.py +0 -0
  284. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/computer_use_tools.py +0 -0
  285. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/dashboard_generator.py +0 -0
  286. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/data_analysis_tools.py +0 -0
  287. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/data_cleaner.py +0 -0
  288. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/data_service.py +0 -0
  289. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/datasources/__init__.py +0 -0
  290. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/datasources/base.py +0 -0
  291. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/datasources/router.py +0 -0
  292. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/datasources/sources/__init__.py +0 -0
  293. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/datasources/sources/akshare_source.py +0 -0
  294. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/datasources/sources/alpha_vantage_source.py +0 -0
  295. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/datasources/sources/edgar_source.py +0 -0
  296. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/datasources/sources/finnhub_source.py +0 -0
  297. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/datasources/sources/fred_source.py +0 -0
  298. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/datasources/sources/tushare_source.py +0 -0
  299. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/datasources/sources/web_scraper_source.py +0 -0
  300. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/datasources/sources/world_bank_source.py +0 -0
  301. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/datasources/sources/yfinance_source.py +0 -0
  302. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/demo_player.py +0 -0
  303. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/doctor.py +0 -0
  304. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/domain/__init__.py +0 -0
  305. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/domain/backtest_engine.py +0 -0
  306. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/domain/backtest_report.py +0 -0
  307. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/domain/finance_formulas.py +0 -0
  308. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/domain/portfolio_ledger.py +0 -0
  309. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/domain/strategy_vault.py +0 -0
  310. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/evals/__init__.py +0 -0
  311. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/evals/gap.py +0 -0
  312. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/external_agent_runner.py +0 -0
  313. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/figma_client.py +0 -0
  314. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/file_analysis_tools.py +0 -0
  315. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/finance_formulas.py +0 -0
  316. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/football_data_client.py +0 -0
  317. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/image_gen_tools.py +0 -0
  318. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/intent_classifier.py +0 -0
  319. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/kling_video_client.py +0 -0
  320. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/licensing.py +0 -0
  321. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/local_finance_tools.py +0 -0
  322. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/local_image_provider.py +0 -0
  323. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/local_llm_provider.py +0 -0
  324. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/macro_tools.py +0 -0
  325. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/markdown_pdf.py +0 -0
  326. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/market_data_client.py +0 -0
  327. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/mcp_client.py +0 -0
  328. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/memory_manager.py +0 -0
  329. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/model_capability.py +0 -0
  330. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/notification_tools.py +0 -0
  331. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/openai_image_client.py +0 -0
  332. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/__init__.py +0 -0
  333. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/adk_bridge/__init__.py +0 -0
  334. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/adk_bridge/code_review_tools.py +0 -0
  335. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/adk_bridge/market_tools.py +0 -0
  336. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_agents/__init__.py +0 -0
  337. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_agents/manifest.py +0 -0
  338. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_core/__init__.py +0 -0
  339. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_core/architecture.py +0 -0
  340. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_core/export.py +0 -0
  341. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_core/manifest.py +0 -0
  342. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_core/paths.py +0 -0
  343. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_core/secure_file.py +0 -0
  344. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_infra/__init__.py +0 -0
  345. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_infra/arthera.py +0 -0
  346. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_infra/doctor.py +0 -0
  347. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_infra/product.py +0 -0
  348. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_mcp/__init__.py +0 -0
  349. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_mcp/bridge.py +0 -0
  350. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_mcp/circuit.py +0 -0
  351. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_mcp/config.py +0 -0
  352. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_mcp/installer.py +0 -0
  353. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_mcp/server.py +0 -0
  354. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_mcp/tools.py +0 -0
  355. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_sdk/__init__.py +0 -0
  356. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_sdk/client.py +0 -0
  357. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_sdk/providers.py +0 -0
  358. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_sdk/streaming.py +0 -0
  359. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_sdk/types.py +0 -0
  360. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_services/__init__.py +0 -0
  361. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_services/cache.py +0 -0
  362. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_services/context.py +0 -0
  363. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_services/context_checkpoints.py +0 -0
  364. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_services/data.py +0 -0
  365. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_services/provider_health.py +0 -0
  366. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_services/references.py +0 -0
  367. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_services/registry.py +0 -0
  368. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_services/research_protocol.py +0 -0
  369. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_services/research_quality.py +0 -0
  370. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_services/settings.py +0 -0
  371. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_services/usage.py +0 -0
  372. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_skills/__init__.py +0 -0
  373. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_skills/catalog.py +0 -0
  374. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_skills/loader.py +0 -0
  375. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_skills/registry.py +0 -0
  376. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_tools/__init__.py +0 -0
  377. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_tools/financial/__init__.py +0 -0
  378. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_tools/financial/_paths.py +0 -0
  379. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_tools/financial/compliance.py +0 -0
  380. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_tools/financial/factors.py +0 -0
  381. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_tools/financial/risk_tools.py +0 -0
  382. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_tools/financial/strategy.py +0 -0
  383. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/aria_tools/registry.py +0 -0
  384. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/quant_engine/__init__.py +0 -0
  385. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/quant_engine/_namespace.py +0 -0
  386. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/quant_engine/backtest/__init__.py +0 -0
  387. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/quant_engine/backtest/core.py +0 -0
  388. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/quant_engine/backtest/engine.py +0 -0
  389. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/quant_engine/portfolio/__init__.py +0 -0
  390. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/quant_engine/portfolio/optimizer.py +0 -0
  391. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/quant_engine/sports/__init__.py +0 -0
  392. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/quant_engine/sports/calibrator.py +0 -0
  393. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/quant_engine/sports/dixon_coles.py +0 -0
  394. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/quant_engine/sports/elo.py +0 -0
  395. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/quant_engine/sports/form.py +0 -0
  396. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/quant_engine/sports/h2h.py +0 -0
  397. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/quant_engine/sports/ml_model.py +0 -0
  398. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/quant_engine/sports/predictor.py +0 -0
  399. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/quant_engine/sports/tracker.py +0 -0
  400. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/quant_engine/stochastic/__init__.py +0 -0
  401. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/quant_engine/stochastic/gbm_enhanced.py +0 -0
  402. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/quant_engine/stochastic/ito_calculus.py +0 -0
  403. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/quant_engine/stochastic/kelly_criterion.py +0 -0
  404. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/quant_engine/stochastic/monte_carlo_advanced.py +0 -0
  405. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/quant_engine/stochastic/options_pricing.py +0 -0
  406. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packages/quant_engine/stochastic/stochastic_processes.py +0 -0
  407. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packs/__init__.py +0 -0
  408. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packs/base.py +0 -0
  409. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packs/finance/__init__.py +0 -0
  410. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packs/logistics/__init__.py +0 -0
  411. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packs/payments/__init__.py +0 -0
  412. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packs/realty/__init__.py +0 -0
  413. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packs/registry.py +0 -0
  414. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/packs/rules.py +0 -0
  415. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/plan_utils.py +0 -0
  416. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/plugin_loader.py +0 -0
  417. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/portfolio_ledger.py +0 -0
  418. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/preview_server.py +0 -0
  419. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/privacy/__init__.py +0 -0
  420. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/privacy/feedback.py +0 -0
  421. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/project_review.py +0 -0
  422. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/project_review_api.py +0 -0
  423. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/project_review_server.py +0 -0
  424. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/project_tools.py +0 -0
  425. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/providers/__init__.py +0 -0
  426. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/providers/llm/__init__.py +0 -0
  427. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/providers/llm/anthropic.py +0 -0
  428. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/providers/llm/autoconfig.py +0 -0
  429. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/providers/llm/base.py +0 -0
  430. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/providers/llm/custom.py +0 -0
  431. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/providers/llm/ollama.py +0 -0
  432. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/providers/llm/openai_compat.py +0 -0
  433. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/providers/llm/registry.py +0 -0
  434. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/providers/local_image_provider.py +0 -0
  435. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/providers/local_llm_provider.py +0 -0
  436. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/providers/tool_messages.py +0 -0
  437. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/realty_data_tools.py +0 -0
  438. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/relay_store.py +0 -0
  439. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/report_exporters.py +0 -0
  440. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/report_generator.py +0 -0
  441. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/review_service.py +0 -0
  442. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/__init__.py +0 -0
  443. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/acceptance.py +0 -0
  444. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/agent_loop.py +0 -0
  445. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/approval.py +0 -0
  446. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/baseline.py +0 -0
  447. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/budget.py +0 -0
  448. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/checkpoints.py +0 -0
  449. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/contract.py +0 -0
  450. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/crash_report.py +0 -0
  451. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/delivery.py +0 -0
  452. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/events.py +0 -0
  453. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/gateway.py +0 -0
  454. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/lsp.py +0 -0
  455. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/orchestrator.py +0 -0
  456. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/processes.py +0 -0
  457. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/project_graph.py +0 -0
  458. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/repo_map.py +0 -0
  459. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/review.py +0 -0
  460. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/run_state.py +0 -0
  461. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/run_store.py +0 -0
  462. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/self_healing.py +0 -0
  463. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/semantic_diff.py +0 -0
  464. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/subagent.py +0 -0
  465. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/symbol_edit.py +0 -0
  466. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/task_ledger.py +0 -0
  467. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/task_orchestrator.py +0 -0
  468. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/task_worktree.py +0 -0
  469. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/tool_executor.py +0 -0
  470. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/tool_policy.py +0 -0
  471. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/transactions.py +0 -0
  472. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/windows_job.py +0 -0
  473. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/workflows.py +0 -0
  474. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runtime/worktrees.py +0 -0
  475. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/runway_video_client.py +0 -0
  476. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/safety/__init__.py +0 -0
  477. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/safety/client_isolation.py +0 -0
  478. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/safety/permissions.py +0 -0
  479. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/safety/risk.py +0 -0
  480. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/safety/sandbox.py +0 -0
  481. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/safety/service.py +0 -0
  482. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/setup_wizard.py +0 -0
  483. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/spreadsheet_tools.py +0 -0
  484. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/strategy_vault.py +0 -0
  485. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/tools/__init__.py +0 -0
  486. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/tools/artifact_tools.py +0 -0
  487. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/tools/broker_tools.py +0 -0
  488. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/tools/build_quant_engine.py +0 -0
  489. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/tools/code_audit_tools.py +0 -0
  490. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/tools/computer_use_tools.py +0 -0
  491. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/tools/data_analysis_tools.py +0 -0
  492. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/tools/enterprise_finance_tools.py +0 -0
  493. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/tools/extended_tools.py +0 -0
  494. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/tools/file_analysis_tools.py +0 -0
  495. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/tools/image_gen_tools.py +0 -0
  496. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/tools/local_finance_tools.py +0 -0
  497. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/tools/logistics_carriers.py +0 -0
  498. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/tools/logistics_inventory.py +0 -0
  499. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/tools/logistics_io.py +0 -0
  500. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/tools/logistics_tenancy.py +0 -0
  501. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/tools/logistics_tools.py +0 -0
  502. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/tools/macro_tools.py +0 -0
  503. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/tools/notification_tools.py +0 -0
  504. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/tools/project_tools.py +0 -0
  505. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/tools/realty_data_tools.py +0 -0
  506. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/tools/spreadsheet_tools.py +0 -0
  507. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/tools/stripe_tools.py +0 -0
  508. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/training/__init__.py +0 -0
  509. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/training/compare.py +0 -0
  510. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/training/sft_dataset.py +0 -0
  511. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/ui/__init__.py +0 -0
  512. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/ui/banner.py +0 -0
  513. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/ui/completer.py +0 -0
  514. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/ui/console.py +0 -0
  515. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/ui/input_box.py +0 -0
  516. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/ui/mentions.py +0 -0
  517. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/ui/picker.py +0 -0
  518. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/ui/render/__init__.py +0 -0
  519. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/ui/render/actions.py +0 -0
  520. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/ui/render/finance.py +0 -0
  521. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/ui/render/market.py +0 -0
  522. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/ui/render/output.py +0 -0
  523. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/ui/render/responsive.py +0 -0
  524. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/ui/render/team.py +0 -0
  525. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/ui/robot.py +0 -0
  526. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/ui/startup_dashboard.py +0 -0
  527. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/utils/vscode_uri.py +0 -0
  528. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/video_analysis.py +0 -0
  529. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/video_editor.py +0 -0
  530. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/workspace/__init__.py +0 -0
  531. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/workspace/verify.py +0 -0
  532. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/workspace_changes.py +0 -0
  533. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/workspace_context.py +0 -0
  534. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/workspace_service.py +0 -0
  535. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code/workspace_tools.py +0 -0
  536. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code.egg-info/dependency_links.txt +0 -0
  537. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code.egg-info/entry_points.txt +0 -0
  538. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code.egg-info/requires.txt +0 -0
  539. {aria_code-0.125.0 → aria_code-0.127.0}/src/aria_code.egg-info/top_level.txt +0 -0
  540. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_action_view.py +0 -0
  541. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_adk_market_tools.py +0 -0
  542. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_agent_key_points_language.py +0 -0
  543. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_agent_team_fallback.py +0 -0
  544. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_analyze_file_tool.py +0 -0
  545. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_architecture_ledger_is_true.py +0 -0
  546. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_architecture_report.py +0 -0
  547. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_aria_cli_core.py +0 -0
  548. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_aria_mcp_server.py +0 -0
  549. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_aria_sdk.py +0 -0
  550. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_artifact_publishing.py +0 -0
  551. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_artifacts_and_reports.py +0 -0
  552. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_ashare_prediction_cmds.py +0 -0
  553. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_background_processes.py +0 -0
  554. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_backtest_cmds.py +0 -0
  555. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_backtest_engine.py +0 -0
  556. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_backtest_report.py +0 -0
  557. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_backtest_runs_what_it_names.py +0 -0
  558. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_baseline.py +0 -0
  559. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_binary_bundles_runtime_imports.py +0 -0
  560. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_broken_akshare_is_optional.py +0 -0
  561. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_broker_automation.py +0 -0
  562. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_broker_chat_confirm_gate.py +0 -0
  563. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_broker_planning.py +0 -0
  564. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_broker_safety.py +0 -0
  565. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_broker_tools.py +0 -0
  566. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_budget.py +0 -0
  567. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_business_workflow_cmds.py +0 -0
  568. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_callback_provider_cleanup.py +0 -0
  569. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_canva_client.py +0 -0
  570. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_canvas_cmds.py +0 -0
  571. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_card_approvals.py +0 -0
  572. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_change_contract.py +0 -0
  573. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_channel_intake.py +0 -0
  574. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_channels.py +0 -0
  575. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_chart_handlers.py +0 -0
  576. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_chat_bots_fail_closed.py +0 -0
  577. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_chat_routing.py +0 -0
  578. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_checkpoints_since.py +0 -0
  579. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_ci_security_workflow.py +0 -0
  580. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_cli_app_split.py +0 -0
  581. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_cli_bootstrap.py +0 -0
  582. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_cli_config_store.py +0 -0
  583. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_cli_lifecycle_hooks.py +0 -0
  584. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_cli_runtime_consumer.py +0 -0
  585. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_cli_tool_executor_module.py +0 -0
  586. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_cli_updater.py +0 -0
  587. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_client_isolation_guard.py +0 -0
  588. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_cloud_memory.py +0 -0
  589. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_code_audit_tools.py +0 -0
  590. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_code_review_agent.py +0 -0
  591. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_codegen_output.py +0 -0
  592. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_coder_tester_self_healing.py +0 -0
  593. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_coder_tool_safety.py +0 -0
  594. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_collaboration.py +0 -0
  595. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_command_loggers.py +0 -0
  596. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_command_safety.py +0 -0
  597. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_compare_strategies.py +0 -0
  598. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_completions_builder.py +0 -0
  599. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_config_paths.py +0 -0
  600. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_configured_provider.py +0 -0
  601. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_container_entrypoint.py +0 -0
  602. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_container_entrypoints.py +0 -0
  603. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_context_checkpoints.py +0 -0
  604. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_context_references.py +0 -0
  605. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_context_service.py +0 -0
  606. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_conversation_core.py +0 -0
  607. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_crash_report.py +0 -0
  608. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_credential_file_permissions.py +0 -0
  609. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_custom_providers.py +0 -0
  610. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_daemon_gateway_config.py +0 -0
  611. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_dashboard_generator.py +0 -0
  612. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_data_service.py +0 -0
  613. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_data_service_imports.py +0 -0
  614. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_data_without_model.py +0 -0
  615. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_datasource_routing.py +0 -0
  616. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_deep_analysis.py +0 -0
  617. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_degrades_without_quant_engine.py +0 -0
  618. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_delivery_report.py +0 -0
  619. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_dispatcher_pins_match_the_release.py +0 -0
  620. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_doctor.py +0 -0
  621. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_doctor_describes_the_current_install.py +0 -0
  622. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_doctor_npm_scope.py +0 -0
  623. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_doctor_sandbox.py +0 -0
  624. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_engine_boundary.py +0 -0
  625. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_english_output_group.py +0 -0
  626. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_enterprise_tool_honesty.py +0 -0
  627. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_env_switch_docs.py +0 -0
  628. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_eval_hard_suite.py +0 -0
  629. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_eval_holdout.py +0 -0
  630. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_eval_summary.py +0 -0
  631. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_eval_task_bank.py +0 -0
  632. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_eval_trajectories.py +0 -0
  633. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_evals_harness.py +0 -0
  634. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_event_import_roots.py +0 -0
  635. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_exec_events.py +0 -0
  636. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_extended_tools.py +0 -0
  637. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_feishu_swarm_config.py +0 -0
  638. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_file_links.py +0 -0
  639. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_finalize_release.py +0 -0
  640. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_finance_renderers.py +0 -0
  641. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_finance_service_catalog.py +0 -0
  642. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_first_run_output.py +0 -0
  643. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_first_run_works.py +0 -0
  644. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_football_agent.py +0 -0
  645. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_football_prediction_output.py +0 -0
  646. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_gemini_retirement.py +0 -0
  647. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_google_cloud_models.py +0 -0
  648. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_google_cloud_routing.py +0 -0
  649. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_google_login.py +0 -0
  650. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_google_search_provider.py +0 -0
  651. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_headless_command_approval.py +0 -0
  652. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_headless_is_agentic.py +0 -0
  653. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_honest_surfaces.py +0 -0
  654. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_image_gen_tools.py +0 -0
  655. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_image_inputs.py +0 -0
  656. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_import_aliasing.py +0 -0
  657. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_import_graph_budget.py +0 -0
  658. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_intent_router.py +0 -0
  659. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_intent_signals.py +0 -0
  660. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_kling_video_client.py +0 -0
  661. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_lazy_rebind.py +0 -0
  662. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_legacy_module_imports.py +0 -0
  663. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_license_consistency.py +0 -0
  664. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_licensing.py +0 -0
  665. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_linux_sandbox_integration.py +0 -0
  666. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_local_image_provider.py +0 -0
  667. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_local_workspace_execution.py +0 -0
  668. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_logistics_3pl.py +0 -0
  669. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_logistics_and_finance_agents.py +0 -0
  670. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_lsp.py +0 -0
  671. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_markdown_pdf.py +0 -0
  672. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_market_answers_in_english.py +0 -0
  673. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_market_data_client.py +0 -0
  674. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_market_history_inheritance.py +0 -0
  675. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_market_history_tool.py +0 -0
  676. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_market_hours.py +0 -0
  677. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_market_questions_on_backend.py +0 -0
  678. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_market_symbol_extraction.py +0 -0
  679. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_market_universe.py +0 -0
  680. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_mcp_circuit.py +0 -0
  681. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_mcp_client.py +0 -0
  682. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_mentions.py +0 -0
  683. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_model_capability_registry.py +0 -0
  684. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_model_choice_is_the_users.py +0 -0
  685. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_model_probe.py +0 -0
  686. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_model_selection_state.py +0 -0
  687. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_narrow_chinese_output.py +0 -0
  688. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_native_binary_entrypoints.py +0 -0
  689. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_native_installer.py +0 -0
  690. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_natural_language_routing.py +0 -0
  691. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_new_modules.py +0 -0
  692. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_no_hardcoded_developer_paths.py +0 -0
  693. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_no_tools_route.py +0 -0
  694. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_no_uncommitted_imports.py +0 -0
  695. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_numeric_listings.py +0 -0
  696. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_ollama_stream_imports.py +0 -0
  697. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_ollama_stream_tools.py +0 -0
  698. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_openai_image_client.py +0 -0
  699. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_operations_suite.py +0 -0
  700. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_os_sandbox.py +0 -0
  701. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_output_discipline_prompt.py +0 -0
  702. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_output_rendering.py +0 -0
  703. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_packages_facade.py +0 -0
  704. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_packaging_constraints.py +0 -0
  705. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_packaging_manifest.py +0 -0
  706. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_packs_domains.py +0 -0
  707. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_pdf_report.py +0 -0
  708. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_pick_best_installed_model.py +0 -0
  709. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_plan_mode.py +0 -0
  710. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_platform_package_assembly.py +0 -0
  711. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_platform_packages.py +0 -0
  712. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_platform_publish.py +0 -0
  713. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_plotly_html_output.py +0 -0
  714. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_portfolio_language.py +0 -0
  715. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_portfolio_ledger.py +0 -0
  716. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_post_turn_context_decision.py +0 -0
  717. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_preflight.py +0 -0
  718. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_preview_server.py +0 -0
  719. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_privacy_feedback.py +0 -0
  720. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_project_aria.py +0 -0
  721. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_project_context_files.py +0 -0
  722. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_project_graph.py +0 -0
  723. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_project_review.py +0 -0
  724. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_project_review_api.py +0 -0
  725. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_prompt_assembly.py +0 -0
  726. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_prompt_dates.py +0 -0
  727. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_prompt_selection.py +0 -0
  728. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_provider_autoconfig.py +0 -0
  729. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_provider_error_classification.py +0 -0
  730. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_provider_error_messages.py +0 -0
  731. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_provider_integration.py +0 -0
  732. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_provider_registry.py +0 -0
  733. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_public_service_status.py +0 -0
  734. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_quant_engine_namespace.py +0 -0
  735. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_rebind_contract.py +0 -0
  736. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_rebind_namespace_contract.py +0 -0
  737. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_relay_client_credentials.py +0 -0
  738. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_relay_event_verification.py +0 -0
  739. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_relay_sends_for_clients.py +0 -0
  740. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_relay_store.py +0 -0
  741. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_relay_url.py +0 -0
  742. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_release_badges.py +0 -0
  743. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_release_chain.py +0 -0
  744. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_release_commit_identity.py +0 -0
  745. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_release_download.py +0 -0
  746. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_release_push_is_atomic.py +0 -0
  747. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_release_reaches_the_registries.py +0 -0
  748. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_release_verification_waits.py +0 -0
  749. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_release_workflow_permissions.py +0 -0
  750. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_report_charts.py +0 -0
  751. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_report_generator.py +0 -0
  752. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_report_prompt_language.py +0 -0
  753. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_research_protocol.py +0 -0
  754. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_research_quality.py +0 -0
  755. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_responsive_rendering.py +0 -0
  756. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_review_gate.py +0 -0
  757. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_review_service.py +0 -0
  758. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_risk_approval.py +0 -0
  759. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_risk_assessment.py +0 -0
  760. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_risk_earnings_ops.py +0 -0
  761. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_robot_artwork.py +0 -0
  762. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_root_module_budget.py +0 -0
  763. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_rsi_without_pandas_ta.py +0 -0
  764. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_run_store_redaction.py +0 -0
  765. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_runtime_acceptance.py +0 -0
  766. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_runtime_agent_loop.py +0 -0
  767. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_runtime_approval.py +0 -0
  768. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_runtime_bridge.py +0 -0
  769. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_runtime_bridge_fallback.py +0 -0
  770. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_runtime_checkpoints.py +0 -0
  771. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_runtime_event_identity.py +0 -0
  772. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_runtime_gateway.py +0 -0
  773. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_runtime_repo_map.py +0 -0
  774. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_runtime_run_store.py +0 -0
  775. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_runtime_tool_executor.py +0 -0
  776. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_runtime_worktrees.py +0 -0
  777. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_runway_video_client.py +0 -0
  778. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_safety_permissions.py +0 -0
  779. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_safety_service.py +0 -0
  780. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_safety_service_adoption.py +0 -0
  781. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_semantic_diff.py +0 -0
  782. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_service_diagnostics_security.py +0 -0
  783. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_session_search.py +0 -0
  784. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_settings_service.py +0 -0
  785. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_shell_commands_as_written.py +0 -0
  786. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_shipper_digest.py +0 -0
  787. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_single_import_root.py +0 -0
  788. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_skill_agent_binding.py +0 -0
  789. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_skill_catalog.py +0 -0
  790. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_skill_loader.py +0 -0
  791. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_slash_popup.py +0 -0
  792. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_spreadsheet_tools.py +0 -0
  793. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_sse_http_roundtrip.py +0 -0
  794. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_sse_stream_contract.py +0 -0
  795. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_startup_dashboard.py +0 -0
  796. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_startup_keeps_cloud_model.py +0 -0
  797. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_startup_latency.py +0 -0
  798. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_status_language.py +0 -0
  799. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_streaming_pipeline.py +0 -0
  800. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_stripe_agent.py +0 -0
  801. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_subagent.py +0 -0
  802. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_subagent_workspace.py +0 -0
  803. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_supervisor_routing.py +0 -0
  804. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_symbol_edit.py +0 -0
  805. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_system_prompts.py +0 -0
  806. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_system_tools_output.py +0 -0
  807. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_task_isolation_turn.py +0 -0
  808. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_task_orchestrator.py +0 -0
  809. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_task_restore_startup.py +0 -0
  810. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_task_worktree.py +0 -0
  811. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_team_analysts.py +0 -0
  812. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_team_synthesis.py +0 -0
  813. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_terminal_mixins.py +0 -0
  814. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_terminal_snapshots.py +0 -0
  815. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_tls_trust_store.py +0 -0
  816. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_tool_policy.py +0 -0
  817. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_tool_rounds_on_openai_apis.py +0 -0
  818. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_tool_scope.py +0 -0
  819. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_tool_step_output.py +0 -0
  820. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_trading_service.py +0 -0
  821. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_tradingview_bridge.py +0 -0
  822. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_training_pipeline.py +0 -0
  823. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_transactions.py +0 -0
  824. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_transactions_turn.py +0 -0
  825. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_turn_planning.py +0 -0
  826. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_ui_completer_references.py +0 -0
  827. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_ui_console_theme.py +0 -0
  828. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_ui_input_box.py +0 -0
  829. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_ui_language_and_model.py +0 -0
  830. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_ui_robot_banner.py +0 -0
  831. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_update_health_routes.py +0 -0
  832. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_verification_hint.py +0 -0
  833. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_verification_policy.py +0 -0
  834. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_verification_runner_selection.py +0 -0
  835. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_version_consistency.py +0 -0
  836. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_version_counter.py +0 -0
  837. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_vertex_busy_retry.py +0 -0
  838. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_vertex_empty_rounds.py +0 -0
  839. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_vertex_models.py +0 -0
  840. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_vertexai_tool_history.py +0 -0
  841. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_video_analysis.py +0 -0
  842. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_video_editor.py +0 -0
  843. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_vscode_mcp.py +0 -0
  844. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_warehouse_agents.py +0 -0
  845. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_warehouse_cli_registration.py +0 -0
  846. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_warehouse_erp_client.py +0 -0
  847. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_warehouse_workflow.py +0 -0
  848. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_wheel_is_installable.py +0 -0
  849. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_workflows.py +0 -0
  850. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_workspace_changes.py +0 -0
  851. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_workspace_context.py +0 -0
  852. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_workspace_scope.py +0 -0
  853. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_workspace_service.py +0 -0
  854. {aria_code-0.125.0 → aria_code-0.127.0}/tests/test_workspace_verify.py +0 -0
  855. {aria_code-0.125.0 → aria_code-0.127.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.125.0
3
+ Version: 0.127.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.125.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.125.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.127.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.127.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>
@@ -281,6 +281,7 @@ Install extras only for features you use; see [pyproject.toml](pyproject.toml) f
281
281
  | Topic | Start here |
282
282
  | --- | --- |
283
283
  | Architecture and runtime | [Architecture](docs/architecture.md) |
284
+ | Opt-in Rust CLI prototype and migration stages | [Rust CLI migration](docs/rust-cli-migration.md) |
284
285
  | Tool permissions and data boundaries | [Safety notes](docs/aria-code-safety.md) |
285
286
  | Warehouse agents and their read-only data contract | [Warehouse ERP agents](docs/warehouse-erp-agents.md) |
286
287
  | Strategy and backtesting workflows | [Strategy workspace](docs/strategy_workspace.md) |
@@ -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.125.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.125.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.127.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.127.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>
@@ -124,6 +124,7 @@ Install extras only for features you use; see [pyproject.toml](pyproject.toml) f
124
124
  | Topic | Start here |
125
125
  | --- | --- |
126
126
  | Architecture and runtime | [Architecture](docs/architecture.md) |
127
+ | Opt-in Rust CLI prototype and migration stages | [Rust CLI migration](docs/rust-cli-migration.md) |
127
128
  | Tool permissions and data boundaries | [Safety notes](docs/aria-code-safety.md) |
128
129
  | Warehouse agents and their read-only data contract | [Warehouse ERP agents](docs/warehouse-erp-agents.md) |
129
130
  | Strategy and backtesting workflows | [Strategy workspace](docs/strategy_workspace.md) |
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "aria-code"
7
- version = "0.125.0"
7
+ version = "0.127.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" }
@@ -66,12 +66,20 @@ class _OneModulePerFile(_importlib_abc.MetaPathFinder, _importlib_abc.Loader):
66
66
  def __init__(self, root: str) -> None:
67
67
  self._own: dict = {}
68
68
  self.root = _os.path.normcase(root) + _os.sep
69
- self.names = {
70
- entry[:-3] if entry.endswith(".py") else entry
71
- for entry in _os.listdir(root)
72
- if entry != "__init__.py" and not entry.startswith(("_", "."))
73
- and (entry.endswith(".py") or _os.path.isfile(_os.path.join(root, entry, "__init__.py")))
74
- }
69
+ if not getattr(_sys, "frozen", False) and _os.path.isdir(root):
70
+ self.names = {
71
+ entry[:-3] if entry.endswith(".py") else entry
72
+ for entry in _os.listdir(root)
73
+ if entry != "__init__.py" and not entry.startswith(("_", "."))
74
+ and (entry.endswith(".py") or _os.path.isfile(_os.path.join(root, entry, "__init__.py")))
75
+ }
76
+ else:
77
+ # Frozen Python modules live in PYZ, not a physical source tree.
78
+ # PyInstaller's pkgutil hook enumerates that archive even when the
79
+ # package directory is absent, or contains only bundled data files.
80
+ from pkgutil import iter_modules
81
+ self.names = {module.name for module in iter_modules([root])
82
+ if not module.name.startswith(("_", "."))}
75
83
 
76
84
  def find_spec(self, fullname, path=None, target=None):
77
85
  if fullname.partition(".")[0] not in self.names:
@@ -17,4 +17,4 @@ from __future__ import annotations
17
17
 
18
18
  __all__ = ["__version__"]
19
19
 
20
- __version__ = "0.125.0"
20
+ __version__ = "0.127.0"
@@ -0,0 +1,118 @@
1
+ """Experimental, workspace-confined JSON-RPC worker for the Rust CLI.
2
+
3
+ The host selects the workspace and approves one named write via process flags.
4
+ Request parameters never establish permissions. Existing CLI handlers retain
5
+ their diff, change-store and verification behavior; stdout is protocol only.
6
+ """
7
+ from __future__ import annotations
8
+
9
+ import argparse
10
+ import contextlib
11
+ import json
12
+ import sys
13
+ from pathlib import Path
14
+ from typing import Any
15
+
16
+ MAX_MESSAGE = 1_048_576
17
+ READ_TOOLS = frozenset({"read_file", "list_files", "search_code"})
18
+ WRITE_TOOLS = frozenset({"write_file", "edit_file"})
19
+
20
+
21
+ def error(code: int, message: str, request_id: Any = None) -> dict:
22
+ return {"jsonrpc": "2.0", "id": request_id, "error": {"code": code, "message": message}}
23
+
24
+
25
+ def execute(name: str, arguments: dict, workspace: Path, approved_tool: str | None) -> dict:
26
+ from aria_code.runtime.approval import ApprovalDecision
27
+ from aria_code.runtime.tool_executor import ToolExecutor
28
+ from aria_code.runtime.tool_policy import check_tool_policy
29
+
30
+ if name not in READ_TOOLS | WRITE_TOOLS:
31
+ return {"success": False, "error": f"Tool not exposed by native bridge: {name}"}
32
+ verdict = check_tool_policy(name)
33
+ if verdict == "deny":
34
+ return {"success": False, "error": "Blocked by persistent tool policy"}
35
+ approved = name in WRITE_TOOLS and name == approved_tool
36
+ if verdict == "ask" and not approved:
37
+ return {"success": False, "error": "Tool requires explicit approval; use the interactive Python CLI"}
38
+ if name in WRITE_TOOLS and not approved:
39
+ return {"success": False, "error": "Writes require host --approve-write for this invocation"}
40
+ def handler(params: dict) -> dict:
41
+ # Load UI-dependent write code only after ToolExecutor grants the path.
42
+ if name in READ_TOOLS:
43
+ from aria_code.apps.cli.tools import file_tools
44
+ return getattr(file_tools, "tool_" + name)(params)
45
+ from aria_code.apps.cli.tools import write_tools
46
+ cli = write_tools._ac()
47
+ console = getattr(cli, "console", None)
48
+ previous = console.file if console is not None else None
49
+ try:
50
+ if console is not None:
51
+ console.file = sys.stderr
52
+ return getattr(write_tools, "tool_" + name)(params)
53
+ finally:
54
+ if console is not None:
55
+ console.file = previous
56
+ executor = ToolExecutor(
57
+ {name: (handler,)},
58
+ config={"workspace_root": str(workspace), "permission_mode": "workspace-write" if approved else "read-only"},
59
+ execution_context=lambda: {"_workspace_restricted": True},
60
+ )
61
+ decision = ApprovalDecision.allow(user_approved=True, tool_scope=name) if approved else None
62
+ return executor.execute_local(name, arguments, approval=decision)
63
+
64
+
65
+ def dispatch(request: Any, workspace: Path, approved_tool: str | None = None) -> dict | None:
66
+ if not isinstance(request, dict):
67
+ return error(-32600, "Expected a single JSON-RPC request object")
68
+ request_id = request.get("id")
69
+ valid_id = request_id is None or isinstance(request_id, str) or type(request_id) is int
70
+ if request.get("jsonrpc") != "2.0" or not isinstance(request.get("method"), str) or not valid_id:
71
+ return error(-32600, "Invalid JSON-RPC request")
72
+ # This bridge only executes requests with an ID. Notifications never cause
73
+ # file changes and never produce a response, including unknown methods.
74
+ if "id" not in request:
75
+ return None
76
+ if request["method"] != "tools.call":
77
+ return error(-32601, "Method not found", request_id)
78
+ params = request.get("params")
79
+ if not isinstance(params, dict) or not isinstance(params.get("name"), str) or not isinstance(params.get("arguments"), dict):
80
+ return error(-32602, "Expected name and arguments object", request_id)
81
+ try:
82
+ with contextlib.redirect_stdout(sys.stderr):
83
+ result = execute(params["name"], params["arguments"], workspace, approved_tool)
84
+ return {"jsonrpc": "2.0", "id": request_id, "result": result}
85
+ except Exception as exc:
86
+ return error(-32603, f"Python tool failed: {exc}", request_id)
87
+
88
+
89
+ def main() -> None:
90
+ parser = argparse.ArgumentParser(description=__doc__)
91
+ parser.add_argument("--workspace", type=Path, required=True)
92
+ parser.add_argument("--approve-tool", choices=sorted(WRITE_TOOLS))
93
+ args = parser.parse_args()
94
+ workspace = args.workspace.expanduser().resolve(strict=True)
95
+ if not workspace.is_dir():
96
+ parser.error("workspace must be a directory")
97
+ # One request per process bounds trace memory and approval lifetime. Read
98
+ # size is bounded before JSON decoding; no unbounded readline allocation.
99
+ raw = sys.stdin.buffer.readline(MAX_MESSAGE + 1)
100
+ if len(raw) > MAX_MESSAGE:
101
+ response = error(-32600, "Request exceeds 1 MiB")
102
+ else:
103
+ try:
104
+ request = json.loads(raw)
105
+ except (ValueError, UnicodeDecodeError):
106
+ response = error(-32700, "Parse error")
107
+ else:
108
+ response = dispatch(request, workspace, args.approve_tool)
109
+ if response is not None:
110
+ encoded = json.dumps(response, ensure_ascii=True, allow_nan=False).encode("ascii")
111
+ if len(encoded) + 1 > MAX_MESSAGE:
112
+ encoded = json.dumps(error(-32603, "Response exceeds 1 MiB", response["id"])).encode("ascii")
113
+ sys.stdout.buffer.write(encoded + b"\n")
114
+ sys.stdout.buffer.flush()
115
+
116
+
117
+ if __name__ == "__main__":
118
+ main()
@@ -302,7 +302,7 @@ def _write_policy_confirm(p: pathlib.Path, content: str, existed: bool) -> tuple
302
302
  if has_rich and console:
303
303
  console.print()
304
304
  if existed:
305
- old_content = p.read_text(errors="replace")
305
+ old_content = p.read_text(encoding="utf-8", errors="replace")
306
306
  diff = list(difflib.unified_diff(
307
307
  old_content.splitlines(keepends=True),
308
308
  content.splitlines(keepends=True),
@@ -723,7 +723,7 @@ def tool_edit_file(params: dict) -> dict:
723
723
  if not _is_safe(p, params):
724
724
  return {"success": False, "error": f"Access denied: path '{p}' is outside allowed directories"}
725
725
 
726
- content = p.read_text(errors="replace")
726
+ content = p.read_text(encoding="utf-8", errors="replace")
727
727
  before_mode = _stat.S_IMODE(p.stat().st_mode)
728
728
  if content.count(old_str) == 0:
729
729
  preview = "\n".join(content.splitlines()[:10])
@@ -845,7 +845,7 @@ def tool_multi_edit(params: dict) -> dict:
845
845
  if not _is_safe(p, params):
846
846
  return {"success": False, "error": f"Access denied: path '{p}' is outside allowed directories"}
847
847
 
848
- content = p.read_text(errors="replace")
848
+ content = p.read_text(encoding="utf-8", errors="replace")
849
849
  before_mode = _stat.S_IMODE(p.stat().st_mode)
850
850
  working = content
851
851
  applied_count = 0
@@ -0,0 +1,113 @@
1
+ """Behaviour checks: how the agent went about a task, from its tool calls.
2
+
3
+ A task's ``verify`` says whether the work is right. Some protocol features
4
+ are about how it gets there — look up what depends on a function before
5
+ changing it, edit a definition by name instead of rewriting the file — and a
6
+ correct result says nothing about them. A task may list ``behavior`` checks;
7
+ they are judged on the run's JSONL events (``aria-code -p … --format jsonl``,
8
+ ``ARIA_EVENTS_FULL=1``) and reported next to the outcome, never changing it::
9
+
10
+ behavior:
11
+ - called_before: {tool: impact_analysis, before: [edit_file, write_file], path: pricing.py}
12
+ - param_used: {tool: edit_file, param: symbol}
13
+ - not_called: write_file
14
+
15
+ ``called`` / ``not_called``: the tool (or any of a list) ran at least once /
16
+ never. ``called_before``: the first call to ``tool`` came before the first
17
+ call to any ``before`` tool (default: the edit tools) whose path, command or
18
+ targets mention ``path``. ``param_used``: some call to ``tool`` set ``param``.
19
+ A label may be given with ``label:``.
20
+ """
21
+
22
+ from __future__ import annotations
23
+
24
+ import json
25
+ from dataclasses import dataclass
26
+ from typing import Any, Iterable
27
+
28
+ CHECKS = ("called", "not_called", "called_before", "param_used")
29
+ EDIT_TOOLS = ("edit_file", "write_file", "multi_edit", "apply_patch", "notebook_edit")
30
+
31
+
32
+ @dataclass(frozen=True)
33
+ class Call:
34
+ index: int
35
+ tool: str
36
+ params: dict
37
+
38
+ def mentions(self, fragment: str) -> bool:
39
+ if not fragment:
40
+ return True
41
+ text = " ".join(str(self.params.get(k) or "") for k in ("path", "file", "command", "targets"))
42
+ return fragment in text
43
+
44
+
45
+ def calls(events_text: str) -> list[Call]:
46
+ """The tool calls in a run's JSONL output, in order; other lines are skipped."""
47
+ found: list[Call] = []
48
+ for line in str(events_text or "").splitlines():
49
+ try:
50
+ event = json.loads(line)
51
+ except ValueError:
52
+ continue
53
+ if isinstance(event, dict) and event.get("type") == "tool.started":
54
+ name = str(event.get("tool") or "").rsplit("__", 1)[-1]
55
+ found.append(Call(len(found), name, dict(event.get("params") or {})))
56
+ return found
57
+
58
+
59
+ def _names(value: Any) -> tuple[str, ...]:
60
+ return tuple(str(v) for v in value) if isinstance(value, (list, tuple)) else (str(value),)
61
+
62
+
63
+ def validate(raw: Any) -> dict:
64
+ """One check from a suite file, or ValueError naming what is wrong with it."""
65
+ if not isinstance(raw, dict):
66
+ raise ValueError("a behavior check is a mapping")
67
+ kinds = [key for key in raw if key in CHECKS]
68
+ unknown = set(raw) - set(CHECKS) - {"label"}
69
+ if unknown or len(kinds) != 1:
70
+ raise ValueError(f"a behavior check needs exactly one of {', '.join(CHECKS)}; got {sorted(raw)}")
71
+ kind = kinds[0]
72
+ spec = raw[kind]
73
+ if kind in ("called_before", "param_used") and not (isinstance(spec, dict) and spec.get("tool")):
74
+ raise ValueError(f"{kind} needs a tool")
75
+ if kind == "param_used" and not spec.get("param"):
76
+ raise ValueError("param_used needs a param")
77
+ return {"type": kind, "spec": spec, "label": str(raw.get("label") or "")}
78
+
79
+
80
+ def describe(check: dict) -> str:
81
+ return check.get("label") or f"{check['type']}: {check['spec']}"
82
+
83
+
84
+ def judge(check: dict, run: list[Call]) -> tuple[bool, str]:
85
+ kind, spec = check["type"], check["spec"]
86
+ if kind in ("called", "not_called"):
87
+ tools = _names(spec.get("tool") if isinstance(spec, dict) else spec)
88
+ hits = [c for c in run if c.tool in tools]
89
+ ok = bool(hits) if kind == "called" else not hits
90
+ return ok, f"{len(hits)} call(s) to {'/'.join(tools)}"
91
+ if kind == "called_before":
92
+ tools, later = _names(spec["tool"]), _names(spec.get("before", EDIT_TOOLS))
93
+ path = str(spec.get("path") or "")
94
+ look = next((c.index for c in run if c.tool in tools), None)
95
+ edit = next((c.index for c in run if c.tool in later and c.mentions(path)), None)
96
+ if edit is None:
97
+ return False, f"no {'/'.join(later)} call on {path or 'any file'}"
98
+ if look is None:
99
+ return False, f"{'/'.join(tools)} never called"
100
+ return look < edit, f"{run[look].tool} at call {look}, first edit at call {edit}"
101
+ tools, param = _names(spec["tool"]), str(spec["param"])
102
+ hits = [c for c in run if c.tool in tools]
103
+ used = [c for c in hits if c.params.get(param) not in (None, "")]
104
+ return bool(used), f"{len(used)}/{len(hits)} {'/'.join(tools)} call(s) set {param}"
105
+
106
+
107
+ def evaluate(checks: Iterable[dict], events_text: str) -> tuple[dict, ...]:
108
+ run = calls(events_text)
109
+ results = []
110
+ for check in checks:
111
+ passed, detail = judge(check, run)
112
+ results.append({"check": describe(check), "passed": passed, "detail": detail})
113
+ return tuple(results)
@@ -139,6 +139,9 @@ class TaskSpec:
139
139
  # an answer key when it sits in the workspace. gemini-3.5-flash passed 23
140
140
  # of the first 24 tasks with every grader in view.
141
141
  hidden: tuple[str, ...] = ()
142
+ # How the agent should go about it, judged on its tool calls and reported
143
+ # beside the outcome without changing it. See evals/behavior.py.
144
+ behavior: tuple[dict, ...] = ()
142
145
 
143
146
  @classmethod
144
147
  def from_dict(cls, data: dict) -> "TaskSpec":
@@ -161,9 +164,16 @@ class TaskSpec:
161
164
  ),
162
165
  allow_green_start=bool(data.get("allow_green_start", False)),
163
166
  hidden=tuple(str(g) for g in (data.get("hidden") or ())),
167
+ behavior=tuple(_validate_behavior(c) for c in (data.get("behavior") or ())),
164
168
  )
165
169
 
166
170
 
171
+ def _validate_behavior(raw) -> dict:
172
+ from .behavior import validate
173
+
174
+ return validate(raw)
175
+
176
+
167
177
  _SECRET = re.compile(
168
178
  r"(?i)\b(api[_-]?key|token|password|secret)(\s*[=:]\s*)\S+"
169
179
  r"|\b(?:bearer)\s+\S+"
@@ -199,6 +209,8 @@ class TaskResult:
199
209
  # this the two are indistinguishable in a report, and they call for
200
210
  # opposite investigations.
201
211
  changed: tuple[str, ...] = ()
212
+ # Behaviour checks on the agent's tool calls: ({check, passed, detail}, …).
213
+ behavior: tuple = ()
202
214
 
203
215
  @property
204
216
  def counted(self) -> bool:
@@ -217,6 +229,7 @@ class TaskResult:
217
229
  # Why it did not pass. The first CI run's report said only "the
218
230
  # agent did not complete (exit 1)"; the reason was in the job log.
219
231
  "log_tail": _log_tail(self.log) if self.outcome != PASS else [],
232
+ **({"behavior": [dict(b) for b in self.behavior]} if self.behavior else {}),
220
233
  }
221
234
 
222
235
 
@@ -284,9 +297,20 @@ class SuiteResult:
284
297
  "scored": self.scored,
285
298
  "by_tag": self.by_tag(),
286
299
  "per_task": self.per_task(),
300
+ **({"behavior": self.behavior()} if any(r.behavior for r in self.results) else {}),
287
301
  "results": [r.to_dict() for r in self.results],
288
302
  }
289
303
 
304
+ def behavior(self) -> dict:
305
+ """Passes over runs for each behaviour check, keyed ``task: check``."""
306
+ out: dict = {}
307
+ for result in self.results:
308
+ for item in result.behavior:
309
+ stats = out.setdefault(f"{result.task_id}: {item['check']}", {"passed": 0, "runs": 0})
310
+ stats["runs"] += 1
311
+ stats["passed"] += bool(item["passed"])
312
+ return out
313
+
290
314
  def merge(self, other: "SuiteResult") -> None:
291
315
  """Fold another run of the same suite into this one."""
292
316
  self.results.extend(other.results)
@@ -318,6 +342,9 @@ class SuiteResult:
318
342
  parts.append(f"{self.invalid} invalid")
319
343
  if self.errored:
320
344
  parts.append(f"{self.errored} error")
345
+ checks = [item for r in self.results for item in r.behavior]
346
+ if checks:
347
+ parts.append(f"behaviour {sum(bool(i['passed']) for i in checks)}/{len(checks)}")
321
348
  return " · ".join(parts)
322
349
 
323
350
 
@@ -539,10 +566,12 @@ def run_task(
539
566
  )
540
567
  scratch.mkdir(parents=True, exist_ok=True)
541
568
 
569
+ behaviour: list = [] # filled once the agent has had its turn
570
+
542
571
  def _result(outcome: str, **kwargs) -> TaskResult:
543
572
  return TaskResult(
544
573
  task_id=task.id, outcome=outcome,
545
- seconds=time.time() - started, tags=task.tags, **kwargs,
574
+ seconds=time.time() - started, tags=task.tags, behavior=tuple(behaviour), **kwargs,
546
575
  )
547
576
 
548
577
  # Everything below runs inside this try so the scratch directory is removed
@@ -596,6 +625,12 @@ def run_task(
596
625
  # A solver crash is not the agent failing the task; scoring it as
597
626
  # a fail would blame the model for a harness or provider outage.
598
627
  return _result(ERROR, detail=f"solver raised: {exc}")
628
+ # Only when the solver ran an agent: the pre-flight solver returns
629
+ # nothing, and "write_file was never called" would read as a pass.
630
+ if task.behavior and outcome is not None:
631
+ from .behavior import evaluate
632
+
633
+ behaviour.extend(evaluate(task.behavior, str(getattr(outcome, "stdout", "") or "")))
599
634
 
600
635
  # ── the score ─────────────────────────────────────────────────────
601
636
  # The check runs no matter what the solver reported, because the check
@@ -0,0 +1,132 @@
1
+ """Score the independent reviewer on fixed changes: false positives and misses.
2
+
3
+ python -m aria_code.evals.review_probe evals/review/cases.yaml --model <id> [--repeat 3] [--report out.json]
4
+
5
+ The suites measure the builder; the reviewer (runtime/review.py) blocks or
6
+ passes the builder's diff, and nothing measured whether it is right to. Each
7
+ case is a goal and a diff with the verdict it should get: ``expect: pass``
8
+ for a correct change it must not block (a false positive costs a repair
9
+ round and the user's trust), ``expect: block`` for one that misses the goal
10
+ (a miss lets a wrong change through), optionally with ``mentions_any`` — the
11
+ finding must name one of these.
12
+
13
+ A reviewer that errors or answers out of format is an ERROR, not a verdict,
14
+ like an agent that never ran. The exit code is 1 only for errors.
15
+ """
16
+
17
+ from __future__ import annotations
18
+
19
+ import argparse
20
+ import asyncio
21
+ import json
22
+ import sys
23
+ from dataclasses import dataclass
24
+ from pathlib import Path
25
+ from typing import Any, Awaitable, Callable
26
+
27
+ import yaml
28
+
29
+ PASS, FAIL, ERROR = "pass", "fail", "error"
30
+
31
+
32
+ @dataclass(frozen=True)
33
+ class Case:
34
+ id: str
35
+ goal: str
36
+ diff: str
37
+ expect: str # "pass" | "block"
38
+ mentions_any: tuple[str, ...] = ()
39
+
40
+
41
+ def load_cases(path: str | Path) -> list[Case]:
42
+ data = yaml.safe_load(Path(path).read_text(encoding="utf-8")) or {}
43
+ cases = []
44
+ for raw in data.get("cases") or []:
45
+ expect = str(raw.get("expect") or "")
46
+ if expect not in ("pass", "block") or not raw.get("goal") or not raw.get("diff"):
47
+ raise ValueError(f"case {raw.get('id')!r}: needs goal, diff and expect: pass|block")
48
+ cases.append(Case(id=str(raw["id"]), goal=str(raw["goal"]), diff=str(raw["diff"]), expect=expect,
49
+ mentions_any=tuple(str(m) for m in raw.get("mentions_any") or ())))
50
+ return cases
51
+
52
+
53
+ def score(case: Case, report: Any) -> tuple[str, str]:
54
+ """(outcome, detail) for one reviewer answer."""
55
+ if getattr(report, "verdict", "") == "error":
56
+ return ERROR, f"reviewer error: {getattr(report, 'error', '')}"
57
+ blocking = list(getattr(report, "blocking", ()) or ())
58
+ if case.expect == "pass":
59
+ if blocking:
60
+ return FAIL, f"false positive: {len(blocking)} blocking — {blocking[0].issue[:120]}"
61
+ return PASS, "not blocked"
62
+ if not blocking:
63
+ return FAIL, "missed: no blocking finding"
64
+ text = " ".join(f"{getattr(f, 'file', '')} {getattr(f, 'issue', '')}" for f in blocking).lower()
65
+ if case.mentions_any and not any(m.lower() in text for m in case.mentions_any):
66
+ return FAIL, f"blocked, but not for {' / '.join(case.mentions_any)}: {blocking[0].issue[:120]}"
67
+ return PASS, f"blocked: {blocking[0].issue[:120]}"
68
+
69
+
70
+ Review = Callable[..., Awaitable[Any]]
71
+
72
+
73
+ async def run_cases(cases: list[Case], review: Review, *, repeat: int = 1) -> list[dict]:
74
+ results = []
75
+ for attempt in range(1, max(1, repeat) + 1):
76
+ for case in cases:
77
+ try:
78
+ report = await review(goal=case.goal, diff=case.diff)
79
+ outcome, detail = score(case, report)
80
+ except Exception as exc: # a provider outage is not the reviewer's verdict
81
+ outcome, detail = ERROR, f"{type(exc).__name__}: {exc}"
82
+ results.append({"case": case.id, "expect": case.expect, "attempt": attempt,
83
+ "outcome": outcome, "detail": detail})
84
+ return results
85
+
86
+
87
+ def summary(results: list[dict]) -> dict:
88
+ def rate(expect: str) -> dict:
89
+ scored = [r for r in results if r["expect"] == expect and r["outcome"] != ERROR]
90
+ return {"passed": sum(r["outcome"] == PASS for r in scored), "scored": len(scored)}
91
+
92
+ return {"correct_changes_not_blocked": rate("pass"), "wrong_changes_blocked": rate("block"),
93
+ "errors": sum(r["outcome"] == ERROR for r in results), "results": results}
94
+
95
+
96
+ def _gate_review(model: str) -> Review:
97
+ from aria_code.aria_cli import load_config
98
+ from aria_code.apps.cli.providers.runtime_bridge import build_review_gate
99
+
100
+ config = {**load_config(), "review_gate": True}
101
+ if model:
102
+ config["model"] = model
103
+ gate = build_review_gate(config, model=config.get("model", ""), api_url=config.get("api_url"),
104
+ ollama_url=config.get("ollama_url", "http://localhost:11434"))
105
+ return gate.run
106
+
107
+
108
+ def main(argv: list[str] | None = None) -> int:
109
+ parser = argparse.ArgumentParser(prog="review_probe", description=__doc__.splitlines()[0])
110
+ parser.add_argument("cases")
111
+ parser.add_argument("--model", default="")
112
+ parser.add_argument("--repeat", type=int, default=1)
113
+ parser.add_argument("--report", default="")
114
+ args = parser.parse_args(argv)
115
+
116
+ cases = load_cases(args.cases)
117
+ results = asyncio.run(run_cases(cases, _gate_review(args.model), repeat=args.repeat))
118
+ for r in results:
119
+ icon = {PASS: "✓", FAIL: "✗"}.get(r["outcome"], "!")
120
+ print(f" {icon} {r['case']} (expect {r['expect']}) — {r['detail']}")
121
+ data = summary(results)
122
+ ok, wrong = data["correct_changes_not_blocked"], data["wrong_changes_blocked"]
123
+ print(f"\nreviewer: correct changes not blocked {ok['passed']}/{ok['scored']} · "
124
+ f"wrong changes blocked {wrong['passed']}/{wrong['scored']}"
125
+ + (f" · {data['errors']} error" if data["errors"] else ""))
126
+ if args.report:
127
+ Path(args.report).write_text(json.dumps(data, indent=2, ensure_ascii=False), encoding="utf-8")
128
+ return 1 if data["errors"] else 0
129
+
130
+
131
+ if __name__ == "__main__":
132
+ sys.exit(main())
@@ -100,7 +100,7 @@ def check_only_solver(prompt: str, workspace: Path) -> None:
100
100
 
101
101
 
102
102
  def build_agent_solver(*, model: str = "", timeout: int = 900, local: bool = False,
103
- trajectories: "Trajectories | None" = None):
103
+ trajectories: "Trajectories | None" = None, events: bool = False):
104
104
  """Drive the real Aria agent over one task, in the task's own workspace.
105
105
 
106
106
  The agent is invoked as a subprocess in headless mode rather than in this
@@ -123,9 +123,10 @@ def build_agent_solver(*, model: str = "", timeout: int = 900, local: bool = Fal
123
123
  "--dangerously-skip-permissions",
124
124
  "--no-banner",
125
125
  ]
126
- if trajectories is not None:
126
+ if trajectories is not None or events:
127
127
  # One JSON event per tool call on stdout; the screen output stays
128
- # on stderr, which is what a failed task's log tail shows.
128
+ # on stderr, which is what a failed task's log tail shows. Behaviour
129
+ # checks read these events too.
129
130
  command.extend(["--format", "jsonl"])
130
131
  if model:
131
132
  command.extend(["--model", model])
@@ -133,7 +134,7 @@ def build_agent_solver(*, model: str = "", timeout: int = 900, local: bool = Fal
133
134
  command.append("--local")
134
135
  try:
135
136
  env = None
136
- if trajectories is not None:
137
+ if trajectories is not None or events:
137
138
  import os
138
139
  env = {**os.environ, "ARIA_EVENTS_FULL": "1"}
139
140
  done = subprocess.run(
@@ -176,6 +177,8 @@ def _print_result(result: TaskResult) -> None:
176
177
  if result.detail:
177
178
  line += f" — {result.detail}"
178
179
  print(line)
180
+ for item in result.behavior:
181
+ print(f" {'✓' if item['passed'] else '✗'} {item['check']} — {item['detail']}")
179
182
  if result.outcome == FAIL and result.changed:
180
183
  print(f" changed: {', '.join(result.changed)}")
181
184
  if result.outcome in (FAIL, INVALID, ERROR) and result.log:
@@ -224,6 +227,7 @@ def main(argv: list[str] | None = None) -> int:
224
227
  if args.trajectories and not args.check else None)
225
228
  solver = check_only_solver if args.check else build_agent_solver(
226
229
  model=args.model, timeout=args.solve_timeout, local=args.local, trajectories=trajectories,
230
+ events=any(task.behavior for task in tasks),
227
231
  )
228
232
  mode = "pre-flight only" if args.check else f"agent{f' ({args.model})' if args.model else ''}"
229
233
  print(f"\n{name} — {len(tasks)} task(s), {mode}\n")
@@ -75,6 +75,10 @@ def summarise(reports: list[dict], model: str = "", private: list[dict] | None =
75
75
  body = "\n".join(tail).replace("```", "` ` `")
76
76
  lines += ["", f"<details><summary>{result.get('task_id')}: last lines of the log</summary>",
77
77
  "", "```", body, "```", "</details>"]
78
+ checks = report.get("behavior") or {}
79
+ if checks:
80
+ lines += ["", "| Behaviour check | Passed |", "|---|---:|"]
81
+ lines += [f"| {name.replace('|', '/')} | {s['passed']}/{s['runs']} |" for name, s in checks.items()]
78
82
  by_tag = report.get("by_tag") or {}
79
83
  if by_tag:
80
84
  tags = ", ".join(f"{tag} {s['passed']}/{s['scored']}" for tag, s in by_tag.items() if s.get("scored"))