aria-code 0.161.0__tar.gz → 0.163.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 (930) hide show
  1. {aria_code-0.161.0/src/aria_code.egg-info → aria_code-0.163.0}/PKG-INFO +2 -2
  2. {aria_code-0.161.0 → aria_code-0.163.0}/README.md +1 -1
  3. {aria_code-0.161.0 → aria_code-0.163.0}/pyproject.toml +1 -1
  4. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/_version.py +1 -1
  5. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/app_server.py +3 -0
  6. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/bootstrap.py +2 -4
  7. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/auth_cmds.py +11 -4
  8. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/model_cmds.py +58 -0
  9. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/config_store.py +31 -0
  10. aria_code-0.163.0/src/aria_code/apps/cli/endpoint_migration.py +58 -0
  11. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/google_login.py +43 -2
  12. aria_code-0.163.0/src/aria_code/apps/cli/session_refresh.py +115 -0
  13. aria_code-0.163.0/src/aria_code/apps/cli/web_login.py +135 -0
  14. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/mcp_client.py +40 -2
  15. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/providers/llm/arthera_gateway.py +9 -8
  16. {aria_code-0.161.0 → aria_code-0.163.0/src/aria_code.egg-info}/PKG-INFO +2 -2
  17. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code.egg-info/SOURCES.txt +10 -0
  18. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_arthera_gateway_provider.py +2 -2
  19. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_dispatcher_pins_match_the_release.py +1 -1
  20. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_doctor_describes_the_current_install.py +3 -3
  21. aria_code-0.163.0/tests/test_endpoint_migration.py +71 -0
  22. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_license_consistency.py +1 -1
  23. aria_code-0.163.0/tests/test_login_api_url.py +36 -0
  24. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_market_questions_on_backend.py +1 -1
  25. aria_code-0.163.0/tests/test_mcp_fast_fail.py +65 -0
  26. aria_code-0.163.0/tests/test_model_native_picker.py +103 -0
  27. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_native_app.py +11 -9
  28. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_native_binary_entrypoints.py +3 -3
  29. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_native_checkpoints.py +1 -1
  30. aria_code-0.163.0/tests/test_native_go_app.py +155 -0
  31. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_native_go_stream.py +1 -0
  32. aria_code-0.163.0/tests/test_native_session_export.py +87 -0
  33. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_platform_package_assembly.py +21 -14
  34. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_platform_packages.py +21 -19
  35. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_runtime_event_identity.py +1 -1
  36. aria_code-0.163.0/tests/test_session_refresh.py +96 -0
  37. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_update_health_routes.py +4 -4
  38. aria_code-0.163.0/tests/test_web_login.py +105 -0
  39. aria_code-0.161.0/tests/test_native_go_app.py +0 -62
  40. {aria_code-0.161.0 → aria_code-0.163.0}/LICENSE +0 -0
  41. {aria_code-0.161.0 → aria_code-0.163.0}/NOTICE +0 -0
  42. {aria_code-0.161.0 → aria_code-0.163.0}/setup.cfg +0 -0
  43. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/__init__.py +0 -0
  44. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/adk_apps/__init__.py +0 -0
  45. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/adk_apps/aria_code_review/__init__.py +0 -0
  46. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/adk_apps/aria_code_review/agent.py +0 -0
  47. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/adk_apps/aria_research/__init__.py +0 -0
  48. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/adk_apps/aria_research/agent.py +0 -0
  49. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/__init__.py +0 -0
  50. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/base.py +0 -0
  51. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/code_review.py +0 -0
  52. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/deep/__init__.py +0 -0
  53. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/deep/calibration_loop.py +0 -0
  54. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/deep/critic.py +0 -0
  55. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/deep/deepen.py +0 -0
  56. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/deep/models.py +0 -0
  57. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/deep/pipeline.py +0 -0
  58. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/deep/quant_fusion.py +0 -0
  59. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/deep/themes.py +0 -0
  60. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/deep/tiers.py +0 -0
  61. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/engineering/__init__.py +0 -0
  62. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/engineering/coder.py +0 -0
  63. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/engineering/tester.py +0 -0
  64. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/financial/__init__.py +0 -0
  65. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/financial/cashflow_burn.py +0 -0
  66. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/financial/catalyst.py +0 -0
  67. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/financial/corporate_finance.py +0 -0
  68. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/financial/debate.py +0 -0
  69. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/financial/earnings.py +0 -0
  70. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/financial/fundamental.py +0 -0
  71. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/financial/macro.py +0 -0
  72. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/financial/news.py +0 -0
  73. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/financial/risk.py +0 -0
  74. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/financial/sector.py +0 -0
  75. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/financial/strategist.py +0 -0
  76. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/financial/stripe_revenue.py +0 -0
  77. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/financial/synthesis.py +0 -0
  78. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/financial/technical.py +0 -0
  79. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/orchestrator.py +0 -0
  80. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/portfolio_agent.py +0 -0
  81. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/realty/__init__.py +0 -0
  82. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/realty/asset_diagnosis.py +0 -0
  83. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/realty/business_match.py +0 -0
  84. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/realty/cashflow_verify.py +0 -0
  85. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/realty/contract_rules.py +0 -0
  86. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/realty/energy_anomaly.py +0 -0
  87. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/realty/exit_settlement.py +0 -0
  88. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/realty/fulfillment_risk.py +0 -0
  89. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/realty/ops_optimize.py +0 -0
  90. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/realty/revenue_share.py +0 -0
  91. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/registry.py +0 -0
  92. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/signal_scheme.py +0 -0
  93. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/sports/__init__.py +0 -0
  94. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/sports/football_agent.py +0 -0
  95. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/supervisor.py +0 -0
  96. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/team.py +0 -0
  97. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/video/__init__.py +0 -0
  98. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/video/director.py +0 -0
  99. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/video/qa_agent.py +0 -0
  100. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/video/script_doctor.py +0 -0
  101. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/warehouse/__init__.py +0 -0
  102. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/warehouse/contracts.py +0 -0
  103. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/warehouse/dashboard.py +0 -0
  104. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/warehouse/fulfillment_leadtime.py +0 -0
  105. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/warehouse/inbound_exceptions.py +0 -0
  106. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/warehouse/inventory_health.py +0 -0
  107. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/warehouse/local_run.py +0 -0
  108. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/warehouse/local_snapshot.py +0 -0
  109. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/warehouse/logistics_cost.py +0 -0
  110. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/warehouse/logistics_sync.py +0 -0
  111. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/agents/warehouse/workflow.py +0 -0
  112. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/aliyun_data_client.py +0 -0
  113. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/README.md +0 -0
  114. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/__init__.py +0 -0
  115. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/channels/README.md +0 -0
  116. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/channels/__init__.py +0 -0
  117. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/channels/approvals.py +0 -0
  118. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/channels/conversation.py +0 -0
  119. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/channels/digest.py +0 -0
  120. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/channels/intake.py +0 -0
  121. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/channels/registry.py +0 -0
  122. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/channels/tradingview.py +0 -0
  123. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/README.md +0 -0
  124. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/__init__.py +0 -0
  125. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/_optional.py +0 -0
  126. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/broker_render.py +0 -0
  127. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/chat_turn.py +0 -0
  128. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/codegen_paths.py +0 -0
  129. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/__init__.py +0 -0
  130. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/_business_render.py +0 -0
  131. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/_ui.py +0 -0
  132. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/analysis_cmds.py +0 -0
  133. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/ashare_prediction_cmds.py +0 -0
  134. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/backtest_cmds.py +0 -0
  135. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/broker_cmds.py +0 -0
  136. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/business_workflow_cmds.py +0 -0
  137. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/canvas_cmds.py +0 -0
  138. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/catalog.py +0 -0
  139. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/core_cmds.py +0 -0
  140. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/data_cmds.py +0 -0
  141. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/diagnostic_cmds.py +0 -0
  142. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/diagnostic_ops_cmds.py +0 -0
  143. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/file_cmds.py +0 -0
  144. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/finance_service_cmds.py +0 -0
  145. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/fx_commodity_cmds.py +0 -0
  146. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/market.py +0 -0
  147. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/market_cmds.py +0 -0
  148. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/market_context.py +0 -0
  149. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/market_render.py +0 -0
  150. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/ops_cmds.py +0 -0
  151. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/orchestrator_cmds.py +0 -0
  152. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/pdf_export_cmds.py +0 -0
  153. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/portfolio_cmds.py +0 -0
  154. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/report.py +0 -0
  155. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/scaffold_templates.py +0 -0
  156. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/session_cmds.py +0 -0
  157. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/session_ux_cmds.py +0 -0
  158. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/team.py +0 -0
  159. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/team_render.py +0 -0
  160. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/ui_cmds.py +0 -0
  161. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/warehouse_cmds.py +0 -0
  162. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/workflow_cmds.py +0 -0
  163. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/commands/workspace_cmds.py +0 -0
  164. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/config_paths.py +0 -0
  165. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/constants.py +0 -0
  166. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/context.py +0 -0
  167. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/conversation_policy.py +0 -0
  168. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/deterministic.py +0 -0
  169. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/direct.py +0 -0
  170. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/earnings_view.py +0 -0
  171. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/exec_events.py +0 -0
  172. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/finance_service_catalog.py +0 -0
  173. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/football_reports.py +0 -0
  174. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/github_app_auth.py +0 -0
  175. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/handlers/__init__.py +0 -0
  176. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/handlers/broker_handlers.py +0 -0
  177. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/handlers/chart_handlers.py +0 -0
  178. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/handlers/market_handlers.py +0 -0
  179. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/handlers/realty_handlers.py +0 -0
  180. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/handlers/sports_handlers.py +0 -0
  181. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/handlers/strategy_advice.py +0 -0
  182. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/headless.py +0 -0
  183. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/helpers.py +0 -0
  184. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/hooks.py +0 -0
  185. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/i18n.py +0 -0
  186. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/intent.py +0 -0
  187. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/intent_router.py +0 -0
  188. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/intent_signals.py +0 -0
  189. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/lifecycle_hooks.py +0 -0
  190. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/local_tool_schemas.py +0 -0
  191. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/main.py +0 -0
  192. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/market_hours.py +0 -0
  193. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/market_metadata.py +0 -0
  194. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/market_universe.py +0 -0
  195. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/message_processing.py +0 -0
  196. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/mixin_binding.py +0 -0
  197. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/model_catalog.py +0 -0
  198. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/model_probe.py +0 -0
  199. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/model_retirement.py +0 -0
  200. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/native_branding.py +0 -0
  201. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/native_bridge.py +0 -0
  202. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/native_entry.py +0 -0
  203. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/pdf_report.py +0 -0
  204. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/plan_mode.py +0 -0
  205. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/plotly_html.py +0 -0
  206. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/prediction_feedback.py +0 -0
  207. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/preflight.py +0 -0
  208. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/project_aria.py +0 -0
  209. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/prompt_assembly.py +0 -0
  210. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/prompts/__init__.py +0 -0
  211. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/prompts/coding.py +0 -0
  212. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/prompts/select.py +0 -0
  213. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/prompts/system_prompts.py +0 -0
  214. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/prompts/ui.py +0 -0
  215. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/provider_endpoints.py +0 -0
  216. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/provider_keys.py +0 -0
  217. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/providers/__init__.py +0 -0
  218. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/providers/base.py +0 -0
  219. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/providers/chat_routing.py +0 -0
  220. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/providers/collaboration.py +0 -0
  221. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/providers/llm/__init__.py +0 -0
  222. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/providers/llm/offline_responses.py +0 -0
  223. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/providers/llm/ollama_stream.py +0 -0
  224. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/providers/llm/response_cache.py +0 -0
  225. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/providers/llm/sse_stream.py +0 -0
  226. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/providers/runtime_bridge.py +0 -0
  227. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/providers/vertexai_stream.py +0 -0
  228. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/release_download.py +0 -0
  229. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/review_runner.py +0 -0
  230. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/runtime_consumer.py +0 -0
  231. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/sandbox.py +0 -0
  232. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/session_export.py +0 -0
  233. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/session_jsonl.py +0 -0
  234. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/session_store.py +0 -0
  235. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/skills_catalog.py +0 -0
  236. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/task_isolation.py +0 -0
  237. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/terminal_chrome.py +0 -0
  238. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/todo_tracker.py +0 -0
  239. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/tool_executor.py +0 -0
  240. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/tool_registry.py +0 -0
  241. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/tool_scope.py +0 -0
  242. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/tools/__init__.py +0 -0
  243. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/tools/context.py +0 -0
  244. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/tools/file_tools.py +0 -0
  245. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/tools/market_tools.py +0 -0
  246. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/tools/notebook_tools.py +0 -0
  247. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/tools/system_tools.py +0 -0
  248. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/tools/write_tools.py +0 -0
  249. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/tradingview_bridge.py +0 -0
  250. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/transactions.py +0 -0
  251. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/turn_planning.py +0 -0
  252. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/update_check.py +0 -0
  253. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/updater.py +0 -0
  254. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/utils/__init__.py +0 -0
  255. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/utils/market_detect.py +0 -0
  256. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/workflow_runner.py +0 -0
  257. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/cli/workspace_route.py +0 -0
  258. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/daemon/README.md +0 -0
  259. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/vscode/README.md +0 -0
  260. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/apps/vscode/package.json +0 -0
  261. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/aria_cli.py +0 -0
  262. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/aria_daemon.py +0 -0
  263. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/aria_feishu_bot.py +0 -0
  264. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/aria_mcp_server.py +0 -0
  265. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/aria_relay_client.py +0 -0
  266. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/aria_relay_server.py +0 -0
  267. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/aria_telegram_bot.py +0 -0
  268. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/ariarc.py +0 -0
  269. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/artifacts.py +0 -0
  270. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/backtest_engine.py +0 -0
  271. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/backtest_report.py +0 -0
  272. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/brokers/__init__.py +0 -0
  273. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/brokers/automation.py +0 -0
  274. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/brokers/base.py +0 -0
  275. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/brokers/capabilities.py +0 -0
  276. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/brokers/cn/__init__.py +0 -0
  277. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/brokers/cn/easytrader_broker.py +0 -0
  278. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/brokers/cn/futu_broker.py +0 -0
  279. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/brokers/cn/longbridge_broker.py +0 -0
  280. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/brokers/cn/tiger_broker.py +0 -0
  281. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/brokers/cn/xtquant_broker.py +0 -0
  282. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/brokers/config.py +0 -0
  283. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/brokers/intl/__init__.py +0 -0
  284. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/brokers/intl/alpaca_broker.py +0 -0
  285. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/brokers/intl/ibkr_broker.py +0 -0
  286. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/brokers/intl/trading212_broker.py +0 -0
  287. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/brokers/intl/webull_broker.py +0 -0
  288. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/brokers/paper_broker.py +0 -0
  289. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/brokers/planning.py +0 -0
  290. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/brokers/registry.py +0 -0
  291. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/brokers/trading.py +0 -0
  292. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/canva_client.py +0 -0
  293. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/change_store.py +0 -0
  294. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/clients/__init__.py +0 -0
  295. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/clients/aliyun_data_client.py +0 -0
  296. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/clients/aria_relay_client.py +0 -0
  297. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/clients/canva_client.py +0 -0
  298. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/clients/figma_client.py +0 -0
  299. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/clients/football_data_client.py +0 -0
  300. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/clients/kling_video_client.py +0 -0
  301. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/clients/market_data_client.py +0 -0
  302. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/clients/openai_image_client.py +0 -0
  303. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/clients/runway_video_client.py +0 -0
  304. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/clients/warehouse_erp_client.py +0 -0
  305. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/cloud_memory.py +0 -0
  306. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/command_safety.py +0 -0
  307. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/computer_use_tools.py +0 -0
  308. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/dashboard_generator.py +0 -0
  309. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/data_analysis_tools.py +0 -0
  310. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/data_cleaner.py +0 -0
  311. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/data_service.py +0 -0
  312. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/datasources/__init__.py +0 -0
  313. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/datasources/base.py +0 -0
  314. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/datasources/router.py +0 -0
  315. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/datasources/sources/__init__.py +0 -0
  316. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/datasources/sources/akshare_source.py +0 -0
  317. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/datasources/sources/alpha_vantage_source.py +0 -0
  318. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/datasources/sources/edgar_source.py +0 -0
  319. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/datasources/sources/finnhub_source.py +0 -0
  320. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/datasources/sources/fred_source.py +0 -0
  321. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/datasources/sources/tushare_source.py +0 -0
  322. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/datasources/sources/web_scraper_source.py +0 -0
  323. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/datasources/sources/world_bank_source.py +0 -0
  324. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/datasources/sources/yfinance_source.py +0 -0
  325. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/demo_player.py +0 -0
  326. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/doctor.py +0 -0
  327. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/domain/__init__.py +0 -0
  328. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/domain/backtest_engine.py +0 -0
  329. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/domain/backtest_report.py +0 -0
  330. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/domain/finance_formulas.py +0 -0
  331. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/domain/performance_stats.py +0 -0
  332. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/domain/portfolio_ledger.py +0 -0
  333. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/domain/strategy_vault.py +0 -0
  334. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/evals/__init__.py +0 -0
  335. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/evals/behavior.py +0 -0
  336. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/evals/gap.py +0 -0
  337. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/evals/harness.py +0 -0
  338. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/evals/review_probe.py +0 -0
  339. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/evals/runner.py +0 -0
  340. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/evals/summary.py +0 -0
  341. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/external_agent_runner.py +0 -0
  342. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/figma_client.py +0 -0
  343. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/file_analysis_tools.py +0 -0
  344. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/finance_formulas.py +0 -0
  345. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/football_data_client.py +0 -0
  346. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/image_gen_tools.py +0 -0
  347. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/intent_classifier.py +0 -0
  348. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/kling_video_client.py +0 -0
  349. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/licensing.py +0 -0
  350. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/local_finance_tools.py +0 -0
  351. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/local_image_provider.py +0 -0
  352. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/local_llm_provider.py +0 -0
  353. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/macro_tools.py +0 -0
  354. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/markdown_pdf.py +0 -0
  355. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/market_data_client.py +0 -0
  356. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/memory_manager.py +0 -0
  357. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/model_capability.py +0 -0
  358. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/notification_tools.py +0 -0
  359. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/openai_image_client.py +0 -0
  360. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/__init__.py +0 -0
  361. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/adk_bridge/__init__.py +0 -0
  362. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/adk_bridge/code_review_tools.py +0 -0
  363. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/adk_bridge/market_tools.py +0 -0
  364. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_agents/__init__.py +0 -0
  365. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_agents/manifest.py +0 -0
  366. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_core/__init__.py +0 -0
  367. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_core/architecture.py +0 -0
  368. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_core/export.py +0 -0
  369. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_core/manifest.py +0 -0
  370. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_core/paths.py +0 -0
  371. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_core/secure_file.py +0 -0
  372. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_infra/__init__.py +0 -0
  373. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_infra/arthera.py +0 -0
  374. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_infra/doctor.py +0 -0
  375. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_infra/product.py +0 -0
  376. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_mcp/__init__.py +0 -0
  377. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_mcp/bridge.py +0 -0
  378. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_mcp/circuit.py +0 -0
  379. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_mcp/config.py +0 -0
  380. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_mcp/installer.py +0 -0
  381. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_mcp/server.py +0 -0
  382. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_mcp/tools.py +0 -0
  383. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_sdk/__init__.py +0 -0
  384. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_sdk/client.py +0 -0
  385. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_sdk/providers.py +0 -0
  386. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_sdk/streaming.py +0 -0
  387. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_sdk/types.py +0 -0
  388. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_services/__init__.py +0 -0
  389. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_services/cache.py +0 -0
  390. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_services/context.py +0 -0
  391. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_services/context_checkpoints.py +0 -0
  392. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_services/data.py +0 -0
  393. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_services/provider_health.py +0 -0
  394. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_services/references.py +0 -0
  395. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_services/registry.py +0 -0
  396. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_services/research_protocol.py +0 -0
  397. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_services/research_quality.py +0 -0
  398. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_services/settings.py +0 -0
  399. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_services/usage.py +0 -0
  400. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_skills/__init__.py +0 -0
  401. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_skills/catalog.py +0 -0
  402. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_skills/loader.py +0 -0
  403. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_skills/registry.py +0 -0
  404. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_tools/__init__.py +0 -0
  405. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_tools/financial/__init__.py +0 -0
  406. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_tools/financial/_paths.py +0 -0
  407. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_tools/financial/compliance.py +0 -0
  408. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_tools/financial/factors.py +0 -0
  409. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_tools/financial/risk_tools.py +0 -0
  410. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_tools/financial/strategy.py +0 -0
  411. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/aria_tools/registry.py +0 -0
  412. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/quant_engine/__init__.py +0 -0
  413. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/quant_engine/_namespace.py +0 -0
  414. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/quant_engine/backtest/__init__.py +0 -0
  415. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/quant_engine/backtest/core.py +0 -0
  416. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/quant_engine/backtest/engine.py +0 -0
  417. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/quant_engine/portfolio/__init__.py +0 -0
  418. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/quant_engine/portfolio/optimizer.py +0 -0
  419. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/quant_engine/sports/__init__.py +0 -0
  420. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/quant_engine/sports/calibrator.py +0 -0
  421. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/quant_engine/sports/dixon_coles.py +0 -0
  422. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/quant_engine/sports/elo.py +0 -0
  423. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/quant_engine/sports/form.py +0 -0
  424. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/quant_engine/sports/h2h.py +0 -0
  425. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/quant_engine/sports/ml_model.py +0 -0
  426. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/quant_engine/sports/predictor.py +0 -0
  427. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/quant_engine/sports/tracker.py +0 -0
  428. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/quant_engine/stochastic/__init__.py +0 -0
  429. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/quant_engine/stochastic/gbm_enhanced.py +0 -0
  430. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/quant_engine/stochastic/ito_calculus.py +0 -0
  431. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/quant_engine/stochastic/kelly_criterion.py +0 -0
  432. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/quant_engine/stochastic/monte_carlo_advanced.py +0 -0
  433. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/quant_engine/stochastic/options_pricing.py +0 -0
  434. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packages/quant_engine/stochastic/stochastic_processes.py +0 -0
  435. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packs/__init__.py +0 -0
  436. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packs/base.py +0 -0
  437. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packs/finance/__init__.py +0 -0
  438. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packs/logistics/__init__.py +0 -0
  439. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packs/payments/__init__.py +0 -0
  440. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packs/realty/__init__.py +0 -0
  441. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packs/registry.py +0 -0
  442. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/packs/rules.py +0 -0
  443. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/plan_utils.py +0 -0
  444. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/plugin_loader.py +0 -0
  445. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/portfolio_ledger.py +0 -0
  446. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/preview_server.py +0 -0
  447. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/privacy/__init__.py +0 -0
  448. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/privacy/feedback.py +0 -0
  449. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/project_review.py +0 -0
  450. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/project_review_api.py +0 -0
  451. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/project_review_server.py +0 -0
  452. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/project_tools.py +0 -0
  453. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/providers/__init__.py +0 -0
  454. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/providers/google_video_provider.py +0 -0
  455. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/providers/llm/__init__.py +0 -0
  456. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/providers/llm/anthropic.py +0 -0
  457. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/providers/llm/autoconfig.py +0 -0
  458. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/providers/llm/base.py +0 -0
  459. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/providers/llm/custom.py +0 -0
  460. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/providers/llm/ollama.py +0 -0
  461. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/providers/llm/openai_compat.py +0 -0
  462. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/providers/llm/registry.py +0 -0
  463. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/providers/local_image_provider.py +0 -0
  464. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/providers/local_llm_provider.py +0 -0
  465. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/providers/tool_messages.py +0 -0
  466. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/realty_data_tools.py +0 -0
  467. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/relay_store.py +0 -0
  468. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/report_exporters.py +0 -0
  469. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/report_generator.py +0 -0
  470. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/review_service.py +0 -0
  471. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/__init__.py +0 -0
  472. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/acceptance.py +0 -0
  473. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/agent_loop.py +0 -0
  474. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/approval.py +0 -0
  475. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/baseline.py +0 -0
  476. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/budget.py +0 -0
  477. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/checkpoints.py +0 -0
  478. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/contract.py +0 -0
  479. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/crash_report.py +0 -0
  480. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/delivery.py +0 -0
  481. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/events.py +0 -0
  482. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/gateway.py +0 -0
  483. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/lsp.py +0 -0
  484. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/native_index.py +0 -0
  485. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/orchestrator.py +0 -0
  486. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/processes.py +0 -0
  487. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/project_graph.py +0 -0
  488. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/repo_map.py +0 -0
  489. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/review.py +0 -0
  490. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/run_state.py +0 -0
  491. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/run_store.py +0 -0
  492. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/self_healing.py +0 -0
  493. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/semantic_diff.py +0 -0
  494. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/subagent.py +0 -0
  495. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/symbol_edit.py +0 -0
  496. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/task_ledger.py +0 -0
  497. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/task_orchestrator.py +0 -0
  498. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/task_worktree.py +0 -0
  499. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/tool_executor.py +0 -0
  500. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/tool_policy.py +0 -0
  501. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/transactions.py +0 -0
  502. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/windows_job.py +0 -0
  503. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/workflows.py +0 -0
  504. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runtime/worktrees.py +0 -0
  505. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/runway_video_client.py +0 -0
  506. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/safety/__init__.py +0 -0
  507. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/safety/client_isolation.py +0 -0
  508. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/safety/permissions.py +0 -0
  509. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/safety/risk.py +0 -0
  510. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/safety/sandbox.py +0 -0
  511. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/safety/service.py +0 -0
  512. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/setup_wizard.py +0 -0
  513. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/spreadsheet_tools.py +0 -0
  514. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/strategy_vault.py +0 -0
  515. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/tools/__init__.py +0 -0
  516. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/tools/artifact_tools.py +0 -0
  517. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/tools/broker_tools.py +0 -0
  518. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/tools/build_quant_engine.py +0 -0
  519. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/tools/code_audit_tools.py +0 -0
  520. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/tools/computer_use_tools.py +0 -0
  521. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/tools/data_analysis_tools.py +0 -0
  522. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/tools/enterprise_finance_tools.py +0 -0
  523. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/tools/extended_tools.py +0 -0
  524. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/tools/file_analysis_tools.py +0 -0
  525. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/tools/image_gen_tools.py +0 -0
  526. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/tools/local_finance_tools.py +0 -0
  527. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/tools/logistics_carriers.py +0 -0
  528. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/tools/logistics_inventory.py +0 -0
  529. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/tools/logistics_io.py +0 -0
  530. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/tools/logistics_tenancy.py +0 -0
  531. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/tools/logistics_tools.py +0 -0
  532. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/tools/macro_tools.py +0 -0
  533. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/tools/notification_tools.py +0 -0
  534. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/tools/project_tools.py +0 -0
  535. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/tools/realty_data_tools.py +0 -0
  536. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/tools/spreadsheet_tools.py +0 -0
  537. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/tools/stripe_tools.py +0 -0
  538. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/tools/video_tools.py +0 -0
  539. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/training/__init__.py +0 -0
  540. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/training/compare.py +0 -0
  541. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/training/sft_dataset.py +0 -0
  542. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/ui/__init__.py +0 -0
  543. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/ui/banner.py +0 -0
  544. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/ui/completer.py +0 -0
  545. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/ui/console.py +0 -0
  546. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/ui/input_box.py +0 -0
  547. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/ui/mentions.py +0 -0
  548. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/ui/picker.py +0 -0
  549. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/ui/render/__init__.py +0 -0
  550. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/ui/render/actions.py +0 -0
  551. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/ui/render/finance.py +0 -0
  552. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/ui/render/market.py +0 -0
  553. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/ui/render/output.py +0 -0
  554. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/ui/render/responsive.py +0 -0
  555. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/ui/render/team.py +0 -0
  556. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/ui/robot.py +0 -0
  557. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/ui/startup_dashboard.py +0 -0
  558. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/utils/vscode_uri.py +0 -0
  559. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/video_analysis.py +0 -0
  560. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/video_editor.py +0 -0
  561. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/video_workflow/__init__.py +0 -0
  562. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/video_workflow/__main__.py +0 -0
  563. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/video_workflow/engines/__init__.py +0 -0
  564. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/video_workflow/engines/base.py +0 -0
  565. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/video_workflow/engines/custom_model.py +0 -0
  566. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/video_workflow/engines/google_veo.py +0 -0
  567. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/video_workflow/engines/local_engine.py +0 -0
  568. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/video_workflow/engines/registry.py +0 -0
  569. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/video_workflow/google_models.py +0 -0
  570. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/video_workflow/music/__init__.py +0 -0
  571. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/video_workflow/music/foley_service.py +0 -0
  572. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/video_workflow/music/service.py +0 -0
  573. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/video_workflow/pipeline.py +0 -0
  574. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/video_workflow/plan.py +0 -0
  575. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/video_workflow/session.py +0 -0
  576. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/workspace/__init__.py +0 -0
  577. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/workspace/files.py +0 -0
  578. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/workspace/verify.py +0 -0
  579. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/workspace_changes.py +0 -0
  580. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/workspace_context.py +0 -0
  581. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/workspace_service.py +0 -0
  582. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code/workspace_tools.py +0 -0
  583. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code.egg-info/dependency_links.txt +0 -0
  584. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code.egg-info/entry_points.txt +0 -0
  585. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code.egg-info/requires.txt +0 -0
  586. {aria_code-0.161.0 → aria_code-0.163.0}/src/aria_code.egg-info/top_level.txt +0 -0
  587. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_action_view.py +0 -0
  588. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_adk_market_tools.py +0 -0
  589. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_agent_key_points_language.py +0 -0
  590. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_agent_team_fallback.py +0 -0
  591. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_analyze_file_tool.py +0 -0
  592. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_architecture_ledger_is_true.py +0 -0
  593. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_architecture_report.py +0 -0
  594. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_aria_cli_core.py +0 -0
  595. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_aria_mcp_server.py +0 -0
  596. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_aria_sdk.py +0 -0
  597. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_artifact_publishing.py +0 -0
  598. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_artifacts_and_reports.py +0 -0
  599. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_ashare_prediction_cmds.py +0 -0
  600. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_background_processes.py +0 -0
  601. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_backtest_cmds.py +0 -0
  602. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_backtest_engine.py +0 -0
  603. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_backtest_report.py +0 -0
  604. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_backtest_runs_what_it_names.py +0 -0
  605. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_baseline.py +0 -0
  606. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_binary_bundles_runtime_imports.py +0 -0
  607. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_broken_akshare_is_optional.py +0 -0
  608. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_broker_automation.py +0 -0
  609. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_broker_chat_confirm_gate.py +0 -0
  610. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_broker_planning.py +0 -0
  611. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_broker_safety.py +0 -0
  612. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_broker_tools.py +0 -0
  613. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_budget.py +0 -0
  614. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_business_workflow_cmds.py +0 -0
  615. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_callback_provider_cleanup.py +0 -0
  616. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_canva_client.py +0 -0
  617. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_canvas_cmds.py +0 -0
  618. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_card_approvals.py +0 -0
  619. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_change_contract.py +0 -0
  620. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_channel_intake.py +0 -0
  621. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_channels.py +0 -0
  622. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_chart_handlers.py +0 -0
  623. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_chat_bots_fail_closed.py +0 -0
  624. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_chat_routing.py +0 -0
  625. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_checkpoints_since.py +0 -0
  626. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_ci_security_workflow.py +0 -0
  627. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_cli_app_split.py +0 -0
  628. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_cli_bootstrap.py +0 -0
  629. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_cli_config_store.py +0 -0
  630. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_cli_lifecycle_hooks.py +0 -0
  631. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_cli_runtime_consumer.py +0 -0
  632. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_cli_tool_executor_module.py +0 -0
  633. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_cli_updater.py +0 -0
  634. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_client_isolation_guard.py +0 -0
  635. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_cloud_memory.py +0 -0
  636. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_code_audit_tools.py +0 -0
  637. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_code_review_agent.py +0 -0
  638. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_codegen_output.py +0 -0
  639. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_coder_tester_self_healing.py +0 -0
  640. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_coder_tool_safety.py +0 -0
  641. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_collaboration.py +0 -0
  642. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_command_loggers.py +0 -0
  643. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_command_safety.py +0 -0
  644. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_compare_strategies.py +0 -0
  645. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_completions_builder.py +0 -0
  646. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_config_paths.py +0 -0
  647. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_configured_provider.py +0 -0
  648. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_container_entrypoint.py +0 -0
  649. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_container_entrypoints.py +0 -0
  650. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_context_checkpoints.py +0 -0
  651. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_context_references.py +0 -0
  652. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_context_service.py +0 -0
  653. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_conversation_core.py +0 -0
  654. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_conversation_policy.py +0 -0
  655. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_crash_report.py +0 -0
  656. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_credential_file_permissions.py +0 -0
  657. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_custom_providers.py +0 -0
  658. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_daemon_gateway_config.py +0 -0
  659. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_dashboard_generator.py +0 -0
  660. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_data_service.py +0 -0
  661. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_data_service_imports.py +0 -0
  662. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_data_without_model.py +0 -0
  663. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_datasource_routing.py +0 -0
  664. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_deep_analysis.py +0 -0
  665. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_degrades_without_quant_engine.py +0 -0
  666. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_delivery_report.py +0 -0
  667. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_doctor.py +0 -0
  668. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_doctor_npm_scope.py +0 -0
  669. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_doctor_sandbox.py +0 -0
  670. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_edit_and_command_safety.py +0 -0
  671. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_engine_boundary.py +0 -0
  672. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_english_output_group.py +0 -0
  673. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_enterprise_tool_honesty.py +0 -0
  674. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_env_switch_docs.py +0 -0
  675. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_eval_behavior.py +0 -0
  676. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_eval_hard_suite.py +0 -0
  677. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_eval_holdout.py +0 -0
  678. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_eval_summary.py +0 -0
  679. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_eval_task_bank.py +0 -0
  680. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_eval_trajectories.py +0 -0
  681. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_evals_harness.py +0 -0
  682. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_event_import_roots.py +0 -0
  683. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_exec_events.py +0 -0
  684. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_extended_tools.py +0 -0
  685. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_feishu_swarm_config.py +0 -0
  686. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_file_links.py +0 -0
  687. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_finalize_release.py +0 -0
  688. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_finance_renderers.py +0 -0
  689. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_finance_service_catalog.py +0 -0
  690. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_first_run_output.py +0 -0
  691. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_first_run_works.py +0 -0
  692. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_football_agent.py +0 -0
  693. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_football_prediction_output.py +0 -0
  694. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_frozen_module_aliases.py +0 -0
  695. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_gemini_retirement.py +0 -0
  696. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_general_turn_prompt.py +0 -0
  697. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_google_cloud_models.py +0 -0
  698. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_google_cloud_routing.py +0 -0
  699. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_google_login.py +0 -0
  700. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_google_search_provider.py +0 -0
  701. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_headless_command_approval.py +0 -0
  702. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_headless_is_agentic.py +0 -0
  703. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_honest_surfaces.py +0 -0
  704. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_image_gen_tools.py +0 -0
  705. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_image_inputs.py +0 -0
  706. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_import_aliasing.py +0 -0
  707. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_import_graph_budget.py +0 -0
  708. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_intent_router.py +0 -0
  709. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_intent_signals.py +0 -0
  710. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_kling_video_client.py +0 -0
  711. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_lazy_rebind.py +0 -0
  712. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_legacy_module_imports.py +0 -0
  713. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_licensing.py +0 -0
  714. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_linux_sandbox_integration.py +0 -0
  715. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_local_image_provider.py +0 -0
  716. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_local_workspace_execution.py +0 -0
  717. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_logistics_3pl.py +0 -0
  718. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_logistics_and_finance_agents.py +0 -0
  719. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_lsp.py +0 -0
  720. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_markdown_pdf.py +0 -0
  721. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_market_answers_in_english.py +0 -0
  722. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_market_data_client.py +0 -0
  723. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_market_history_inheritance.py +0 -0
  724. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_market_history_tool.py +0 -0
  725. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_market_hours.py +0 -0
  726. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_market_symbol_extraction.py +0 -0
  727. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_market_universe.py +0 -0
  728. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_mcp_circuit.py +0 -0
  729. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_mcp_client.py +0 -0
  730. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_mentions.py +0 -0
  731. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_model_capability_registry.py +0 -0
  732. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_model_choice_is_the_users.py +0 -0
  733. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_model_number_selection.py +0 -0
  734. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_model_probe.py +0 -0
  735. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_model_selection_state.py +0 -0
  736. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_narrow_chinese_output.py +0 -0
  737. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_native_branding.py +0 -0
  738. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_native_bridge.py +0 -0
  739. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_native_entry.py +0 -0
  740. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_native_eval_trajectories.py +0 -0
  741. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_native_go_acceptance.py +0 -0
  742. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_native_go_bridge.py +0 -0
  743. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_native_go_contract.py +0 -0
  744. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_native_go_delivery.py +0 -0
  745. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_native_go_providers.py +0 -0
  746. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_native_go_review.py +0 -0
  747. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_native_go_risk.py +0 -0
  748. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_native_index.py +0 -0
  749. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_native_installer.py +0 -0
  750. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_native_runtime_domain.py +0 -0
  751. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_native_training_compare.py +0 -0
  752. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_native_training_dataset.py +0 -0
  753. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_natural_language_routing.py +0 -0
  754. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_new_modules.py +0 -0
  755. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_no_hardcoded_developer_paths.py +0 -0
  756. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_no_tools_route.py +0 -0
  757. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_no_uncommitted_imports.py +0 -0
  758. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_numeric_listings.py +0 -0
  759. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_ollama_stream_imports.py +0 -0
  760. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_ollama_stream_tools.py +0 -0
  761. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_openai_image_client.py +0 -0
  762. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_operations_suite.py +0 -0
  763. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_os_sandbox.py +0 -0
  764. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_output_discipline_prompt.py +0 -0
  765. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_output_rendering.py +0 -0
  766. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_packages_facade.py +0 -0
  767. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_packaging_constraints.py +0 -0
  768. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_packaging_manifest.py +0 -0
  769. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_packs_domains.py +0 -0
  770. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_pdf_report.py +0 -0
  771. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_performance_stats.py +0 -0
  772. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_pick_best_installed_model.py +0 -0
  773. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_plan_mode.py +0 -0
  774. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_plan_schema.py +0 -0
  775. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_plan_without_material.py +0 -0
  776. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_platform_publish.py +0 -0
  777. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_plotly_html_output.py +0 -0
  778. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_portfolio_language.py +0 -0
  779. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_portfolio_ledger.py +0 -0
  780. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_portfolio_periods.py +0 -0
  781. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_post_turn_context_decision.py +0 -0
  782. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_preflight.py +0 -0
  783. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_preview_server.py +0 -0
  784. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_privacy_feedback.py +0 -0
  785. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_project_aria.py +0 -0
  786. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_project_context_files.py +0 -0
  787. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_project_graph.py +0 -0
  788. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_project_review.py +0 -0
  789. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_project_review_api.py +0 -0
  790. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_prompt_assembly.py +0 -0
  791. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_prompt_dates.py +0 -0
  792. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_prompt_selection.py +0 -0
  793. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_provider_autoconfig.py +0 -0
  794. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_provider_error_classification.py +0 -0
  795. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_provider_error_messages.py +0 -0
  796. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_provider_integration.py +0 -0
  797. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_provider_project_config.py +0 -0
  798. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_provider_registry.py +0 -0
  799. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_public_service_status.py +0 -0
  800. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_quant_engine_namespace.py +0 -0
  801. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_rebind_contract.py +0 -0
  802. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_rebind_namespace_contract.py +0 -0
  803. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_relay_client_credentials.py +0 -0
  804. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_relay_contract.py +0 -0
  805. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_relay_event_verification.py +0 -0
  806. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_relay_reliability.py +0 -0
  807. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_relay_sends_for_clients.py +0 -0
  808. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_relay_store.py +0 -0
  809. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_relay_url.py +0 -0
  810. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_release_badges.py +0 -0
  811. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_release_chain.py +0 -0
  812. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_release_commit_identity.py +0 -0
  813. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_release_download.py +0 -0
  814. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_release_push_is_atomic.py +0 -0
  815. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_release_reaches_the_registries.py +0 -0
  816. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_release_verification_waits.py +0 -0
  817. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_release_workflow_permissions.py +0 -0
  818. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_report_charts.py +0 -0
  819. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_report_generator.py +0 -0
  820. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_report_prompt_language.py +0 -0
  821. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_research_protocol.py +0 -0
  822. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_research_quality.py +0 -0
  823. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_responsive_rendering.py +0 -0
  824. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_review_gate.py +0 -0
  825. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_review_service.py +0 -0
  826. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_risk_approval.py +0 -0
  827. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_risk_assessment.py +0 -0
  828. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_risk_earnings_ops.py +0 -0
  829. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_robot_artwork.py +0 -0
  830. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_root_module_budget.py +0 -0
  831. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_rsi_without_pandas_ta.py +0 -0
  832. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_run_store_redaction.py +0 -0
  833. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_runtime_acceptance.py +0 -0
  834. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_runtime_agent_loop.py +0 -0
  835. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_runtime_approval.py +0 -0
  836. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_runtime_bridge.py +0 -0
  837. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_runtime_bridge_fallback.py +0 -0
  838. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_runtime_checkpoints.py +0 -0
  839. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_runtime_gateway.py +0 -0
  840. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_runtime_repo_map.py +0 -0
  841. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_runtime_run_store.py +0 -0
  842. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_runtime_tool_executor.py +0 -0
  843. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_runtime_worktrees.py +0 -0
  844. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_runway_video_client.py +0 -0
  845. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_rust_cli.py +0 -0
  846. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_rust_state.py +0 -0
  847. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_rust_stream.py +0 -0
  848. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_safety_permissions.py +0 -0
  849. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_safety_service.py +0 -0
  850. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_safety_service_adoption.py +0 -0
  851. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_semantic_diff.py +0 -0
  852. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_service_diagnostics_security.py +0 -0
  853. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_session_search.py +0 -0
  854. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_settings_service.py +0 -0
  855. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_shell_commands_as_written.py +0 -0
  856. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_shipper_digest.py +0 -0
  857. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_single_import_root.py +0 -0
  858. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_skill_agent_binding.py +0 -0
  859. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_skill_catalog.py +0 -0
  860. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_skill_loader.py +0 -0
  861. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_slash_popup.py +0 -0
  862. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_spreadsheet_tools.py +0 -0
  863. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_sse_http_roundtrip.py +0 -0
  864. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_sse_stream_contract.py +0 -0
  865. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_startup_dashboard.py +0 -0
  866. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_startup_keeps_cloud_model.py +0 -0
  867. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_startup_latency.py +0 -0
  868. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_status_language.py +0 -0
  869. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_streaming_pipeline.py +0 -0
  870. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_stripe_agent.py +0 -0
  871. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_subagent.py +0 -0
  872. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_subagent_workspace.py +0 -0
  873. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_supervisor_routing.py +0 -0
  874. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_symbol_edit.py +0 -0
  875. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_system_prompts.py +0 -0
  876. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_system_tools_output.py +0 -0
  877. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_task_isolation_turn.py +0 -0
  878. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_task_orchestrator.py +0 -0
  879. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_task_restore_startup.py +0 -0
  880. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_task_worktree.py +0 -0
  881. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_team_analysts.py +0 -0
  882. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_team_synthesis.py +0 -0
  883. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_terminal_mixins.py +0 -0
  884. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_terminal_snapshots.py +0 -0
  885. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_tls_trust_store.py +0 -0
  886. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_tool_policy.py +0 -0
  887. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_tool_rounds_on_openai_apis.py +0 -0
  888. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_tool_scope.py +0 -0
  889. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_tool_step_output.py +0 -0
  890. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_trading_service.py +0 -0
  891. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_tradingview_bridge.py +0 -0
  892. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_training_pipeline.py +0 -0
  893. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_transactions.py +0 -0
  894. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_transactions_turn.py +0 -0
  895. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_turn_planning.py +0 -0
  896. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_ui_completer_references.py +0 -0
  897. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_ui_console_theme.py +0 -0
  898. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_ui_input_box.py +0 -0
  899. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_ui_language_and_model.py +0 -0
  900. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_ui_robot_banner.py +0 -0
  901. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_verification_hint.py +0 -0
  902. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_verification_policy.py +0 -0
  903. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_verification_runner_selection.py +0 -0
  904. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_version_consistency.py +0 -0
  905. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_version_counter.py +0 -0
  906. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_vertex_busy_retry.py +0 -0
  907. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_vertex_empty_rounds.py +0 -0
  908. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_vertex_models.py +0 -0
  909. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_vertex_project.py +0 -0
  910. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_vertexai_tool_history.py +0 -0
  911. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_video_analysis.py +0 -0
  912. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_video_director.py +0 -0
  913. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_video_editor.py +0 -0
  914. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_video_engines.py +0 -0
  915. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_video_multi_agent.py +0 -0
  916. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_video_session.py +0 -0
  917. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_vscode_mcp.py +0 -0
  918. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_warehouse_agents.py +0 -0
  919. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_warehouse_cli_registration.py +0 -0
  920. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_warehouse_erp_client.py +0 -0
  921. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_warehouse_workflow.py +0 -0
  922. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_wheel_is_installable.py +0 -0
  923. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_workflows.py +0 -0
  924. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_workspace_changes.py +0 -0
  925. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_workspace_context.py +0 -0
  926. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_workspace_files.py +0 -0
  927. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_workspace_scope.py +0 -0
  928. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_workspace_service.py +0 -0
  929. {aria_code-0.161.0 → aria_code-0.163.0}/tests/test_workspace_verify.py +0 -0
  930. {aria_code-0.161.0 → aria_code-0.163.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.161.0
3
+ Version: 0.163.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.161.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.161.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.163.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.163.0%2Fjson&amp;query=%24.info.version&amp;prefix=v&amp;style=flat-square&amp;logo=pypi&amp;label=PyPI&amp;color=blue&amp;cacheSeconds=300" alt="PyPI version"></a>
176
176
  <a href="https://github.com/artheras/aria-code/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/artheras/aria-code/ci.yml?branch=main&style=flat-square&logo=githubactions&label=CI" alt="CI status"></a>
177
177
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-64748b?style=flat-square" alt="Apache License 2.0"></a>
178
178
  </p>
@@ -15,7 +15,7 @@ Numbers you can check, client data kept apart, actions a person approves.</p>
15
15
  <p align="center">
16
16
  <a href="https://www.npmjs.com/package/@artheras/aria-code"><img src="https://img.shields.io/npm/v/@artheras/aria-code/latest?style=flat-square&logo=npm&label=npm" alt="npm version"></a>
17
17
  <!-- Release automation pins PyPI: the default endpoint still selects legacy 4.x. -->
18
- <a href="https://pypi.org/project/aria-code/0.161.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.161.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.163.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.163.0%2Fjson&amp;query=%24.info.version&amp;prefix=v&amp;style=flat-square&amp;logo=pypi&amp;label=PyPI&amp;color=blue&amp;cacheSeconds=300" alt="PyPI version"></a>
19
19
  <a href="https://github.com/artheras/aria-code/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/artheras/aria-code/ci.yml?branch=main&style=flat-square&logo=githubactions&label=CI" alt="CI status"></a>
20
20
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-64748b?style=flat-square" alt="Apache License 2.0"></a>
21
21
  </p>
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "aria-code"
7
- version = "0.161.0"
7
+ version = "0.163.0"
8
8
  description = "Open-source AI agent for coding, financial analysis and logistics operations: numbers you can check, client data kept apart, actions a person approves"
9
9
  readme = "README.md"
10
10
  license = { text = "Apache-2.0" }
@@ -17,4 +17,4 @@ from __future__ import annotations
17
17
 
18
18
  __all__ = ["__version__"]
19
19
 
20
- __version__ = "0.161.0"
20
+ __version__ = "0.163.0"
@@ -285,6 +285,9 @@ class Server:
285
285
  # The host draws its own turn footer. Keep this presentation flag out
286
286
  # of saved user settings and retain normal Python CLI behaviour.
287
287
  terminal._native_frontend = True
288
+ # Commands that need a choice (/model) draw it in the host's own menu.
289
+ # This process's stdin is a pipe, so the TTY arrow picker can never run.
290
+ terminal._native_select = self.select
288
291
  execute = terminal.tool_executor.execute_local
289
292
  def tracked(*args, **kwargs):
290
293
  with self.tool_lock:
@@ -154,10 +154,8 @@ DEFAULT_MODEL = os.getenv("ARIA_DEFAULT_MODEL", "google/gemini-3.5-flash")
154
154
 
155
155
  def default_config() -> dict:
156
156
  return {
157
- "api_url": os.getenv(
158
- "ARTHERA_API_URL",
159
- "http://localhost:8000",
160
- ),
157
+ # The Arthera backend and gateway. Not localhost: see endpoint_migration.
158
+ "api_url": os.getenv("ARTHERA_API_URL", "").strip() or "https://api.arthera.xyz",
161
159
  "local_url": "http://localhost:8000",
162
160
  "ollama_url": os.getenv("OLLAMA_URL", "http://localhost:11434"),
163
161
  # Which backend serves a bare, unprefixed model name. Only consulted
@@ -145,18 +145,25 @@ class AuthCommandsMixin:
145
145
  """
146
146
  import asyncio as _asyncio
147
147
 
148
- from ..google_login import run_google_login
148
+ from ..google_login import login_api_url, run_google_login
149
+ import os as _os
150
+
151
+ from ..web_login import run_web_login
149
152
 
150
153
  rich = self.context.has_rich
154
+ api_url = login_api_url(self.terminal.api_url)
151
155
  self.context.console.print(
152
156
  "[dim]Opening your browser to sign in or create an account…[/dim]"
153
157
  if rich else "Opening your browser to sign in or create an account…"
154
158
  )
155
159
 
156
160
  try:
157
- session = await _asyncio.to_thread(
158
- run_google_login, self.terminal.api_url
159
- )
161
+ # The account page (a choice of Google, Apple or email, with sign-up)
162
+ # is opt-in until it is deployed; until then this goes straight to Google.
163
+ if _os.getenv("ARIA_LOGIN_PAGE") == "1":
164
+ session = await _asyncio.to_thread(run_web_login, api_url)
165
+ else:
166
+ session = await _asyncio.to_thread(run_google_login, api_url)
160
167
  except RuntimeError as exc:
161
168
  print_error(self.context, str(exc), "login")
162
169
  return
@@ -387,6 +387,8 @@ class ModelCommandsMixin:
387
387
  _term_cols = os.get_terminal_size().columns
388
388
  except Exception:
389
389
  _term_cols = 80
390
+ if getattr(self.terminal, "_native_select", None) is not None:
391
+ _term_cols = 110 # the host's menu is about this wide; not a TTY to measure
390
392
 
391
393
  def _cjk_width(s: str) -> int:
392
394
  """Display-column width (CJK = 2 cols each)."""
@@ -448,6 +450,19 @@ class ModelCommandsMixin:
448
450
  options: list = [] # (label_str, desc_str) for _arrow_select
449
451
  all_ids: list = []
450
452
 
453
+ # ── Native frontend: pick in the host's menu, not from a printed list ─
454
+ # Arrow keys and Enter, the way Claude and ChatGPT do it. The list used
455
+ # to be printed and the user had to type a number back.
456
+ native_select = getattr(self.terminal, "_native_select", None)
457
+ if native_select is not None and not name:
458
+ await self._pick_model_in_host(
459
+ native_select, picker_title=_picker_title, current_id=current_id,
460
+ current_provider=current_provider, rich_models=rich_models,
461
+ aria_ids=aria_ids, status_tag=_status_tag, short_desc=_short_desc,
462
+ lang=_lang,
463
+ )
464
+ return
465
+
451
466
  # ── Print numbered list only in non-interactive (-p) mode ────────────
452
467
  # In interactive TTY mode the arrow picker below already shows all items.
453
468
  # Printing twice causes the visual duplication seen in the session log.
@@ -570,6 +585,49 @@ class ModelCommandsMixin:
570
585
 
571
586
  self._set_model_by_id(all_ids[choice], provider=current_provider)
572
587
 
588
+ async def _pick_model_in_host(self, native_select, *, picker_title, current_id, current_provider,
589
+ rich_models, aria_ids, status_tag, short_desc, lang):
590
+ """Offer every model in the frontend's menu and apply the choice.
591
+
592
+ One row per model: the name (with a mark for the current one and for
593
+ whether it is installed) and, beneath it, what it is for and its
594
+ limits. Aria's catalogue comes first, then community Ollama models.
595
+ """
596
+ zh = str(lang).lower().startswith("zh")
597
+ rows: list = [] # (model_id, label, help)
598
+ for m in _get_MODELS().values():
599
+ mid = m["id"]
600
+ tags = short_desc(m)
601
+ current = (" ✓ 当前" if zh else " ✓ current") if mid == current_id else ""
602
+ rows.append((mid, f"{status_tag(mid, m.get('badge', ''))} {m['name']}{current}", tags))
603
+ if current_provider == "ollama":
604
+ for cm in rich_models:
605
+ if cm["name"] in aria_ids:
606
+ continue
607
+ current = (" ✓ 当前" if zh else " ✓ current") if cm["name"] == current_id else ""
608
+ rows.append((cm["name"], f"● {cm['name']}{current}", "社区模型 (Ollama)" if zh else "Community model (Ollama)"))
609
+ if not rows:
610
+ return
611
+ start = next((i for i, row in enumerate(rows) if row[0] == current_id), 0)
612
+ options = [(label, help_text) for _mid, label, help_text in rows]
613
+ # select() blocks on the user's answer, so keep it off the event loop.
614
+ import asyncio as _asyncio
615
+
616
+ try:
617
+ choice = await _asyncio.to_thread(native_select, options, start, picker_title)
618
+ except (KeyboardInterrupt, ValueError):
619
+ choice = -1
620
+ if not isinstance(choice, int) or not 0 <= choice < len(rows):
621
+ msg = "已取消,模型未改变。" if zh else "Cancelled; the model is unchanged."
622
+ self.context.console.print(f"[dim]{msg}[/dim]" if self.context.has_rich else msg)
623
+ return
624
+ chosen = rows[choice][0]
625
+ if "/" in chosen:
626
+ # provider/model: the route that checks credentials and sets the provider.
627
+ await self.cmd_model(chosen)
628
+ else:
629
+ self._set_model_by_id(chosen)
630
+
573
631
  def _set_model(self, key: str):
574
632
  """Set model by _get_MODELS() key."""
575
633
  m = _get_MODELS()[key]
@@ -66,6 +66,16 @@ def load_cli_config(
66
66
  """
67
67
  service = build_settings_service(paths, defaults, sync_policy=sync_policy)
68
68
  config = service.load()
69
+ # The old localhost default is replaced once; see endpoint_migration.
70
+ from aria_code.apps.cli.endpoint_migration import migrate_config as migrate_endpoint
71
+
72
+ moved = migrate_endpoint(config)
73
+ if moved:
74
+ try:
75
+ service.save(config)
76
+ except Exception:
77
+ pass
78
+ _announce_endpoint(moved, config)
69
79
  # A model Google has retired fails on every request. The user's own saved
70
80
  # choice is replaced once and written back; see model_retirement.
71
81
  from aria_code.apps.cli.model_retirement import migrate_config
@@ -93,6 +103,27 @@ def load_cli_config(
93
103
  _ANNOUNCED: set[tuple[str, str]] = set()
94
104
 
95
105
 
106
+ def _announce_endpoint(changes, config: dict) -> None:
107
+ """Say once per process that the old localhost default was replaced."""
108
+ import sys
109
+
110
+ zh = str(config.get("ui_lang", "")).lower().startswith("zh")
111
+ for _key, old, new in changes:
112
+ if (old, new) in _ANNOUNCED:
113
+ continue
114
+ _ANNOUNCED.add((old, new))
115
+ if zh:
116
+ msg = (f"ℹ 服务器地址 {old} 是旧版默认值,已改为 {new}。"
117
+ "如需使用本机后端,请设置环境变量 ARTHERA_API_URL,或在配置里加 api_url_pinned: true。")
118
+ else:
119
+ msg = (f"ℹ The server address {old} was the old default and is now {new}. "
120
+ "For a local backend set ARTHERA_API_URL, or add api_url_pinned: true to the config.")
121
+ try:
122
+ print(msg, file=sys.stderr)
123
+ except Exception:
124
+ pass
125
+
126
+
96
127
  def _announce(changes, config: dict, *, pinned: bool) -> None:
97
128
  """One line on stderr per retired model, once per process."""
98
129
  import sys
@@ -0,0 +1,58 @@
1
+ """The server an install talks to, and the old default that stranded it on localhost.
2
+
3
+ ``default_config()`` used to save ``api_url = http://localhost:8000``. That
4
+ looked like a default but was written into every user's config.json on first
5
+ run, where it became indistinguishable from a choice. Anyone who installed
6
+ from GitHub then had every backend call, and Google sign-in, aimed at a
7
+ developer backend on their own machine: a refused connection, or on a machine
8
+ that happened to run one, a page reading ``{"detail":"Not Found"}``. Fixing the
9
+ default in code cannot reach a config that already holds the old value, so the
10
+ old default is recognised here and replaced once, written back and announced,
11
+ the same way a retired model is (see model_retirement).
12
+
13
+ What counts as a choice and is left alone:
14
+
15
+ * ``ARTHERA_API_URL`` in the environment, which now also overrides a saved value
16
+ (in memory only), so a developer with a real local backend sets it once;
17
+ * any ``api_url`` other than the exact old default, such as a staging server;
18
+ * ``api_url_pinned: true``, an escape hatch for someone who wants localhost.
19
+
20
+ ``local_mode`` is not touched: choosing a local model is a different decision
21
+ from where the backend lives.
22
+ """
23
+
24
+ from __future__ import annotations
25
+
26
+ import os
27
+
28
+ PRODUCTION_API_URL = "https://api.arthera.xyz"
29
+ LEGACY_DEFAULT_API_URL = "http://localhost:8000"
30
+ # The product moved from arthera.finance to arthera.xyz and the old domain no
31
+ # longer answers, so a config that was migrated to (or installed with) the old
32
+ # production address points at nothing. It is replaced the same way the
33
+ # localhost default is.
34
+ RETIRED_API_URLS = ("http://localhost:8000", "https://api.arthera.finance")
35
+
36
+
37
+ def _norm(url: object) -> str:
38
+ return str(url or "").strip().rstrip("/").lower()
39
+
40
+
41
+ def migrate_config(config: dict) -> list[tuple[str, str, str]]:
42
+ """Move the old localhost default to production in place; return (key, old, new)."""
43
+ env = os.getenv("ARTHERA_API_URL", "").strip()
44
+ if env:
45
+ # An explicit environment choice wins over the file for this run only;
46
+ # nothing is rewritten, so unsetting the variable restores the file.
47
+ config["api_url"] = env.rstrip("/")
48
+ return []
49
+ if config.get("api_url_pinned"):
50
+ return []
51
+ old = config.get("api_url")
52
+ if _norm(old) not in RETIRED_API_URLS:
53
+ return []
54
+ config["api_url"] = PRODUCTION_API_URL
55
+ return [("api_url", str(old), PRODUCTION_API_URL)]
56
+
57
+
58
+ __all__ = ["LEGACY_DEFAULT_API_URL", "PRODUCTION_API_URL", "RETIRED_API_URLS", "migrate_config"]
@@ -116,6 +116,47 @@ def exchange_google_token_for_firebase(google_id_token: str) -> Dict[str, Any]:
116
116
  )
117
117
 
118
118
 
119
+ def login_api_url(configured: str) -> str:
120
+ """Which server serves Google sign-in for this install.
121
+
122
+ Sign-in is a route of the Arthera gateway, and the credential it returns is
123
+ used against that gateway. The saved ``api_url`` is something else: a
124
+ fresh install writes ``http://localhost:8000`` there, a developer backend
125
+ that has no such route, so /login opened a browser on a page reading
126
+ ``{"detail":"Not Found"}`` (or on a refused connection when nothing listens).
127
+
128
+ ``ARIA_API_URL`` wins, as it does for the gateway provider. Otherwise a
129
+ loopback ``api_url`` means "no real server was ever configured" and the
130
+ production gateway is used. Any other configured server is respected.
131
+ """
132
+ import os
133
+
134
+ from ...providers.llm.arthera_gateway import DEFAULT_API_URL
135
+
136
+ override = os.getenv("ARIA_API_URL", "").strip()
137
+ if override:
138
+ return override.rstrip("/")
139
+ host = (urllib.parse.urlparse(configured or "").hostname or "").lower()
140
+ if not configured or host in {"localhost", "127.0.0.1", "::1", "0.0.0.0"}:
141
+ return DEFAULT_API_URL
142
+ return configured.rstrip("/")
143
+
144
+
145
+ def login_page_origin(api_url: str) -> str:
146
+ """Where the browser is sent to sign in.
147
+
148
+ The same Arthera login route is also served on the brand's auth host
149
+ (auth.arthera.xyz), so the address bar can read like the product, the
150
+ way Claude Code and Codex open their own accounts site, rather than an API
151
+ hostname. Opt-in with ARIA_AUTH_URL until that path has been exercised end
152
+ to end; the handoff exchange below always goes to the API origin.
153
+ """
154
+ import os
155
+
156
+ override = os.getenv("ARIA_AUTH_URL", "").strip()
157
+ return (override or api_url).rstrip("/")
158
+
159
+
119
160
  def run_google_login(api_url: str, region: str = "GLOBAL") -> Dict[str, Any]:
120
161
  """Drive the whole flow and return the stored-credential fields.
121
162
 
@@ -134,7 +175,7 @@ def run_google_login(api_url: str, region: str = "GLOBAL") -> Dict[str, Any]:
134
175
 
135
176
  try:
136
177
  login_url = (
137
- f"{api_url}/api/v2/auth/google/login?"
178
+ f"{login_page_origin(api_url)}/api/v2/auth/google/login?"
138
179
  + urllib.parse.urlencode(
139
180
  {"platform": "cli", "region": region, "port": port}
140
181
  )
@@ -193,4 +234,4 @@ def run_google_login(api_url: str, region: str = "GLOBAL") -> Dict[str, Any]:
193
234
  }
194
235
 
195
236
 
196
- __all__ = ["run_google_login", "exchange_google_token_for_firebase"]
237
+ __all__ = ["run_google_login", "exchange_google_token_for_firebase", "login_api_url", "login_page_origin"]
@@ -0,0 +1,115 @@
1
+ """Keep a Firebase sign-in alive the way Claude Code and Codex keep theirs.
2
+
3
+ A Firebase ID token lasts an hour. /login stores it with a refresh token, but
4
+ nothing used the refresh token, so an hour after signing in every gateway call
5
+ failed and the user was told to /login again. Claude Code and Codex do not ask:
6
+ they exchange the refresh token for a new access token shortly before the old
7
+ one expires and carry on.
8
+
9
+ This does the same against Firebase's Secure Token API, which accepts the
10
+ project's public web API key (the one the web and desktop clients ship; see
11
+ google_login.FIREBASE_WEB_API_KEY) and the user's refresh token. The result is
12
+ written back to config.json with owner-only permissions, so every process that
13
+ reads the session, the gateway provider and the Commerce plugin among them,
14
+ sees the fresh token.
15
+
16
+ Failure is deliberately quiet: if the refresh cannot happen (offline, token
17
+ revoked) the stored token is returned unchanged, the request fails with the
18
+ gateway's own 401, and /login remains the way back in.
19
+ """
20
+
21
+ from __future__ import annotations
22
+
23
+ import json
24
+ import urllib.parse
25
+ import urllib.request
26
+ from datetime import datetime, timedelta, timezone
27
+ from pathlib import Path
28
+ from typing import Any, Callable, Dict, Optional
29
+
30
+ SECURE_TOKEN_URL = "https://securetoken.googleapis.com/v1/token"
31
+
32
+ #: Refresh when the token has this long or less left, so a request that starts
33
+ #: just before expiry is not sent with a token that dies in flight.
34
+ REFRESH_WITHIN_SECONDS = 300
35
+
36
+
37
+ def _parse_expiry(value: Any) -> Optional[datetime]:
38
+ if not value:
39
+ return None
40
+ try:
41
+ return datetime.fromisoformat(str(value).replace("Z", "+00:00"))
42
+ except ValueError:
43
+ return None
44
+
45
+
46
+ def needs_refresh(config: Dict[str, Any], now: Optional[datetime] = None) -> bool:
47
+ """True when the stored token is expired or about to be, and can be renewed."""
48
+ if not config.get("auth_token") or not config.get("refresh_token"):
49
+ return False
50
+ expires = _parse_expiry(config.get("token_expires_at"))
51
+ if expires is None:
52
+ # A login from before expiry was recorded: nothing to compare against,
53
+ # so leave it alone rather than refresh on every call.
54
+ return False
55
+ now = now or datetime.now(timezone.utc)
56
+ return expires - now <= timedelta(seconds=REFRESH_WITHIN_SECONDS)
57
+
58
+
59
+ def exchange_refresh_token(refresh_token: str, api_key: str, *, timeout: int = 15,
60
+ opener: Callable = urllib.request.urlopen) -> Dict[str, Any]:
61
+ """Trade a refresh token for a new ID token. Raises on any failure."""
62
+ body = urllib.parse.urlencode({"grant_type": "refresh_token", "refresh_token": refresh_token}).encode()
63
+ request = urllib.request.Request(
64
+ f"{SECURE_TOKEN_URL}?key={urllib.parse.quote(api_key)}", data=body,
65
+ headers={"Content-Type": "application/x-www-form-urlencoded"}, method="POST",
66
+ )
67
+ with opener(request, timeout=timeout) as response:
68
+ return json.loads(response.read().decode("utf-8"))
69
+
70
+
71
+ def refresh_config_file(path: Path, *, now: Optional[datetime] = None,
72
+ exchange: Optional[Callable[[str, str], Dict[str, Any]]] = None) -> Optional[str]:
73
+ """Renew the session stored in `path` if it is due; return the token to use.
74
+
75
+ Returns the current (possibly just refreshed) ID token, or None when there
76
+ is no session. Never raises: a failed refresh returns the stored token.
77
+ """
78
+ try:
79
+ config = json.loads(Path(path).read_text(encoding="utf-8"))
80
+ except (OSError, ValueError):
81
+ return None
82
+ token = config.get("auth_token")
83
+ token = str(token) if token else None
84
+ if not token or not needs_refresh(config, now):
85
+ return token
86
+
87
+ from .google_login import FIREBASE_WEB_API_KEY
88
+
89
+ try:
90
+ result = (exchange or exchange_refresh_token)(str(config["refresh_token"]), FIREBASE_WEB_API_KEY)
91
+ new_token = result.get("id_token") or result.get("idToken")
92
+ if not new_token:
93
+ return token
94
+ config["auth_token"] = new_token
95
+ if result.get("refresh_token") or result.get("refreshToken"):
96
+ config["refresh_token"] = result.get("refresh_token") or result.get("refreshToken")
97
+ seconds = int(result.get("expires_in") or result.get("expiresIn") or 3600)
98
+ stamp = (now or datetime.now(timezone.utc)) + timedelta(seconds=seconds)
99
+ config["token_expires_at"] = stamp.isoformat().replace("+00:00", "Z")
100
+ from aria_code.packages.aria_core.secure_file import write_secret_json
101
+
102
+ # Replace the file in one step: this is the whole config, and a crash
103
+ # halfway through an in-place write would lose every setting in it.
104
+ target = Path(path)
105
+ scratch = target.with_name(target.name + ".refresh")
106
+ write_secret_json(scratch, config)
107
+ import os
108
+
109
+ os.replace(scratch, target)
110
+ return str(new_token)
111
+ except Exception:
112
+ return token
113
+
114
+
115
+ __all__ = ["needs_refresh", "refresh_config_file", "exchange_refresh_token", "REFRESH_WITHIN_SECONDS"]
@@ -0,0 +1,135 @@
1
+ """Sign in through the account page, the way Claude Code and Codex do.
2
+
3
+ ``/login`` opens a page on Arthera's own auth host. The user chooses how to sign
4
+ in there (Google, Apple or email, and email can be a new account) and the page
5
+ hands the session back to this process on a loopback port. Nothing is typed in
6
+ the terminal and no provider is chosen for the user.
7
+
8
+ The hand-back is bound to this process, not merely to "whoever is listening":
9
+
10
+ * ``state`` is random and checked on the way back, so a callback this run did
11
+ not start is ignored;
12
+ * a PKCE ``code_verifier`` stays here; only its SHA-256 goes into the page. The
13
+ one-time code in the redirect is useless without it, so a program that sees
14
+ the redirect cannot redeem it;
15
+ * the credential never appears in a URL. The redirect carries a short code and
16
+ the session is fetched over POST.
17
+
18
+ Page: the /cli-login route of apps/web. Server side: apps/api/src/routes/auth_v2_routes.py
19
+ (/cli/handoff, /cli/exchange).
20
+ """
21
+
22
+ from __future__ import annotations
23
+
24
+ import base64
25
+ import hashlib
26
+ import http.server
27
+ import os
28
+ import secrets
29
+ import threading
30
+ import urllib.parse
31
+ import webbrowser
32
+ from typing import Any, Dict
33
+
34
+ from .google_login import _CallbackResult, _free_port, _post_json
35
+
36
+ # The apex is Firebase Hosting and the Firebase auth domain, so the page and the
37
+ # sign-in popup are same-origin there.
38
+ AUTH_ORIGIN = "https://arthera.xyz"
39
+ LOGIN_PATH = "/cli-login"
40
+ _TIMEOUT_SECONDS = 300
41
+
42
+
43
+ def auth_origin() -> str:
44
+ """The host that serves the sign-in page. ARIA_AUTH_URL overrides it for staging."""
45
+ return (os.getenv("ARIA_AUTH_URL", "").strip() or AUTH_ORIGIN).rstrip("/")
46
+
47
+
48
+ def pkce_pair() -> tuple[str, str]:
49
+ """A code verifier and its S256 challenge (RFC 7636)."""
50
+ verifier = secrets.token_urlsafe(48) # 64 characters, inside the 43-128 the spec allows
51
+ digest = hashlib.sha256(verifier.encode("ascii")).digest()
52
+ return verifier, base64.urlsafe_b64encode(digest).rstrip(b"=").decode("ascii")
53
+
54
+
55
+ def _handler(result: _CallbackResult, state: str):
56
+ class Handler(http.server.BaseHTTPRequestHandler):
57
+ def do_GET(self): # noqa: N802 - name fixed by BaseHTTPRequestHandler
58
+ parsed = urllib.parse.urlparse(self.path)
59
+ params = {k: v[0] for k, v in urllib.parse.parse_qs(parsed.query).items()}
60
+ if parsed.path != "/callback" or not secrets.compare_digest(params.get("state", ""), state):
61
+ # Not this run's callback: ignore it and keep waiting for ours.
62
+ self.send_response(404)
63
+ self.end_headers()
64
+ return
65
+ ok = "handoff_code" in params
66
+ body = (
67
+ "<html><body style='font-family:system-ui;padding:3rem'>"
68
+ f"<h2>{'Signed in.' if ok else 'Sign-in failed.'}</h2>"
69
+ "<p>You can close this tab and return to the terminal.</p>"
70
+ "</body></html>"
71
+ ).encode("utf-8")
72
+ self.send_response(200 if ok else 400)
73
+ self.send_header("Content-Type", "text/html; charset=utf-8")
74
+ self.send_header("Content-Length", str(len(body)))
75
+ self.send_header("Referrer-Policy", "no-referrer")
76
+ self.send_header("Cache-Control", "no-store")
77
+ self.end_headers()
78
+ self.wfile.write(body)
79
+ result.params = params
80
+ result.received.set()
81
+
82
+ def log_message(self, *args): # keep the terminal clean
83
+ return
84
+
85
+ return Handler
86
+
87
+
88
+ def run_web_login(api_url: str, *, open_browser=webbrowser.open, timeout: int = _TIMEOUT_SECONDS) -> Dict[str, Any]:
89
+ """Drive the whole flow; return the stored-credential fields.
90
+
91
+ Raises RuntimeError with a message suitable for display on any failure.
92
+ """
93
+ api_url = api_url.rstrip("/")
94
+ port = _free_port()
95
+ state = secrets.token_urlsafe(24)
96
+ verifier, challenge = pkce_pair()
97
+ result = _CallbackResult()
98
+ server = http.server.HTTPServer(("127.0.0.1", port), _handler(result, state))
99
+ thread = threading.Thread(target=server.serve_forever, daemon=True)
100
+ thread.start()
101
+ try:
102
+ url = f"{auth_origin()}{LOGIN_PATH}?" + urllib.parse.urlencode(
103
+ {"port": port, "state": state, "code_challenge": challenge, "code_challenge_method": "S256"}
104
+ )
105
+ if not open_browser(url):
106
+ raise RuntimeError("Could not open a browser. Visit this URL manually:\n " + url)
107
+ if not result.received.wait(timeout=timeout):
108
+ raise RuntimeError(f"Timed out after {timeout}s waiting for the browser.")
109
+ finally:
110
+ server.shutdown()
111
+ server.server_close()
112
+
113
+ code = result.params.get("handoff_code")
114
+ if not code:
115
+ raise RuntimeError(result.params.get("message") or "The sign-in did not carry a handoff code.")
116
+ try:
117
+ reply = _post_json(f"{api_url}/api/v2/auth/cli/exchange",
118
+ {"code": code, "code_verifier": verifier, "state": state})
119
+ except Exception as exc:
120
+ raise RuntimeError(f"Could not redeem the sign-in: {exc}") from exc
121
+ data = reply.get("data") or {}
122
+ if not data.get("auth_token"):
123
+ raise RuntimeError("The sign-in did not return a session.")
124
+ return {
125
+ "auth_token": data["auth_token"],
126
+ "refresh_token": data.get("refresh_token"),
127
+ "expires_in": str(data["expires_in"]) if data.get("expires_in") is not None else None,
128
+ "user_id": data.get("user_id"),
129
+ "email": data.get("email"),
130
+ "display_name": data.get("display_name"),
131
+ "provider": "firebase",
132
+ }
133
+
134
+
135
+ __all__ = ["run_web_login", "pkce_pair", "auth_origin", "AUTH_ORIGIN"]
@@ -159,15 +159,53 @@ class MCPServer:
159
159
  else:
160
160
  fut.set_result(msg.get("result"))
161
161
  except asyncio.CancelledError:
162
- pass
162
+ return # stop() cancelled us; nothing is waiting on an answer
163
163
  except Exception as exc:
164
164
  logger.debug("[MCP:%s] Reader loop error: %s", self.name, exc)
165
+ # stdout closed: the server has exited. Nothing can answer a request that
166
+ # is still waiting, so fail those now. Without this, a server that
167
+ # refuses to start (a missing environment variable, say) is waited on
168
+ # for the whole timeout, 30 s at every launch, and the reason it gave on
169
+ # stderr is never shown.
170
+ await self._fail_pending()
171
+
172
+ async def _fail_pending(self):
173
+ reason = await self._exit_reason()
174
+ for rid, fut in list(self._pending.items()):
175
+ self._pending.pop(rid, None)
176
+ if not fut.done():
177
+ fut.set_exception(RuntimeError(f"MCP server {self.name!r} exited before answering{reason}"))
178
+
179
+ async def _exit_reason(self) -> str:
180
+ """Exit code and the server's own last words, for the error message."""
181
+ proc = self._proc
182
+ if proc is None:
183
+ return ""
184
+ try:
185
+ code = await asyncio.wait_for(proc.wait(), timeout=2)
186
+ except Exception:
187
+ code = None
188
+ said = ""
189
+ try:
190
+ if proc.stderr is not None:
191
+ said = (await asyncio.wait_for(proc.stderr.read(2000), timeout=1)).decode("utf-8", errors="ignore").strip()
192
+ except Exception:
193
+ pass
194
+ said = " ".join(said.split())[:300]
195
+ detail = f" (exit {code})" if code is not None else ""
196
+ return f"{detail}: {said}" if said else detail
165
197
 
166
198
  async def _request(self, method: str, params: Any = None) -> Any:
199
+ if self._proc is not None and self._proc.returncode is not None:
200
+ raise RuntimeError(f"MCP server {self.name!r} has exited (exit {self._proc.returncode})")
167
201
  rid = self._next_id()
168
202
  fut = asyncio.get_event_loop().create_future()
169
203
  self._pending[rid] = fut
170
- await self._send(_make_request(method, params, rid))
204
+ try:
205
+ await self._send(_make_request(method, params, rid))
206
+ except (BrokenPipeError, ConnectionResetError) as exc:
207
+ self._pending.pop(rid, None)
208
+ raise RuntimeError(f"MCP server {self.name!r} closed its input: {exc}") from exc
171
209
  try:
172
210
  return await asyncio.wait_for(fut, timeout=self.timeout)
173
211
  except asyncio.TimeoutError: