aria-code 0.162.0__tar.gz → 0.164.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 (963) hide show
  1. {aria_code-0.162.0/src/aria_code.egg-info → aria_code-0.164.0}/PKG-INFO +3 -3
  2. {aria_code-0.162.0 → aria_code-0.164.0}/README.md +2 -2
  3. {aria_code-0.162.0 → aria_code-0.164.0}/pyproject.toml +2 -2
  4. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/_version.py +1 -1
  5. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/adk_apps/aria_code_review/agent.py +1 -1
  6. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/adk_apps/aria_research/agent.py +1 -1
  7. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/app_server.py +100 -1
  8. aria_code-0.164.0/src/aria_code/apps/cli/auto_update.py +102 -0
  9. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/bootstrap.py +6 -6
  10. aria_code-0.164.0/src/aria_code/apps/cli/cloud_models.py +231 -0
  11. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/auth_cmds.py +11 -4
  12. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/catalog.py +8 -2
  13. aria_code-0.164.0/src/aria_code/apps/cli/commands/engineering_cmds.py +399 -0
  14. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/model_cmds.py +116 -3
  15. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/orchestrator_cmds.py +1 -1
  16. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/config_store.py +31 -0
  17. aria_code-0.164.0/src/aria_code/apps/cli/endpoint_migration.py +58 -0
  18. aria_code-0.164.0/src/aria_code/apps/cli/file_references.py +155 -0
  19. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/github_app_auth.py +1 -1
  20. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/google_login.py +43 -2
  21. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/headless.py +21 -0
  22. aria_code-0.164.0/src/aria_code/apps/cli/intent_shadow.py +72 -0
  23. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/model_catalog.py +28 -14
  24. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/model_retirement.py +9 -7
  25. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/providers/runtime_bridge.py +15 -5
  26. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/providers/vertexai_stream.py +8 -1
  27. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/runtime_consumer.py +14 -0
  28. aria_code-0.164.0/src/aria_code/apps/cli/session_refresh.py +115 -0
  29. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/tool_executor.py +16 -6
  30. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/tools/write_tools.py +19 -3
  31. aria_code-0.164.0/src/aria_code/apps/cli/web_login.py +135 -0
  32. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/aria_cli.py +21 -7
  33. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ariarc.py +1 -1
  34. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/doctor.py +1 -1
  35. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/evals/harness.py +47 -1
  36. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/evals/runner.py +31 -4
  37. aria_code-0.164.0/src/aria_code/evals/scorecard.py +319 -0
  38. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/intent_classifier.py +73 -0
  39. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/mcp_client.py +46 -2
  40. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/model_capability.py +11 -2
  41. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_mcp/bridge.py +29 -0
  42. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_mcp/server.py +137 -0
  43. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/providers/google_video_provider.py +1 -1
  44. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/providers/llm/arthera_gateway.py +10 -9
  45. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/providers/llm/openai_compat.py +43 -6
  46. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/providers/llm/registry.py +2 -2
  47. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/providers/local_llm_provider.py +3 -2
  48. aria_code-0.164.0/src/aria_code/providers/openai_params.py +32 -0
  49. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/acceptance.py +50 -8
  50. aria_code-0.164.0/src/aria_code/runtime/consult.py +65 -0
  51. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/delivery.py +21 -7
  52. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/review.py +18 -3
  53. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/safety/risk.py +95 -1
  54. aria_code-0.164.0/src/aria_code/training/prelude_commands.py +111 -0
  55. aria_code-0.164.0/src/aria_code/training/prelude_eval.py +390 -0
  56. aria_code-0.164.0/src/aria_code/training/prelude_real.py +183 -0
  57. aria_code-0.164.0/src/aria_code/training/prelude_train.py +248 -0
  58. aria_code-0.164.0/src/aria_code/training/trajectory_dataset.py +263 -0
  59. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/google_models.py +1 -1
  60. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/workspace/verify.py +22 -2
  61. {aria_code-0.162.0 → aria_code-0.164.0/src/aria_code.egg-info}/PKG-INFO +3 -3
  62. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code.egg-info/SOURCES.txt +43 -2
  63. aria_code-0.164.0/tests/test_acceptance_unavailable.py +98 -0
  64. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_aria_mcp_server.py +105 -0
  65. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_arthera_gateway_provider.py +2 -2
  66. aria_code-0.164.0/tests/test_auto_update.py +63 -0
  67. aria_code-0.164.0/tests/test_cloud_models.py +100 -0
  68. aria_code-0.164.0/tests/test_deepseek_api_capability.py +26 -0
  69. aria_code-0.164.0/tests/test_desktop_control_gate.py +108 -0
  70. aria_code-0.164.0/tests/test_endpoint_migration.py +71 -0
  71. aria_code-0.164.0/tests/test_engineering_commands.py +223 -0
  72. aria_code-0.164.0/tests/test_eval_scorecard.py +166 -0
  73. aria_code-0.164.0/tests/test_eval_usage.py +144 -0
  74. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_evals_harness.py +34 -0
  75. aria_code-0.164.0/tests/test_file_references.py +49 -0
  76. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_gemini_retirement.py +17 -14
  77. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_google_cloud_models.py +2 -2
  78. aria_code-0.164.0/tests/test_login_api_url.py +36 -0
  79. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_market_questions_on_backend.py +1 -1
  80. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_mcp_client.py +34 -0
  81. aria_code-0.164.0/tests/test_mcp_fast_fail.py +65 -0
  82. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_model_capability_registry.py +2 -2
  83. aria_code-0.164.0/tests/test_model_collaboration.py +178 -0
  84. aria_code-0.164.0/tests/test_model_native_picker.py +134 -0
  85. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_app.py +323 -9
  86. aria_code-0.164.0/tests/test_native_approval_risk.py +50 -0
  87. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_checkpoints.py +1 -1
  88. aria_code-0.164.0/tests/test_native_commands_info.py +43 -0
  89. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_go_acceptance.py +10 -0
  90. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_go_risk.py +9 -0
  91. aria_code-0.164.0/tests/test_openai_params.py +40 -0
  92. aria_code-0.164.0/tests/test_physical_risk.py +61 -0
  93. aria_code-0.164.0/tests/test_prelude_eval.py +95 -0
  94. aria_code-0.164.0/tests/test_prelude_real.py +56 -0
  95. aria_code-0.164.0/tests/test_prelude_router_experiment.py +80 -0
  96. aria_code-0.164.0/tests/test_release_is_manual.py +59 -0
  97. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_runtime_event_identity.py +1 -1
  98. aria_code-0.164.0/tests/test_session_refresh.py +96 -0
  99. aria_code-0.164.0/tests/test_trajectory_dataset.py +98 -0
  100. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_update_health_routes.py +4 -4
  101. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_vertex_models.py +3 -3
  102. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_vertex_project.py +8 -8
  103. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_vertexai_tool_history.py +17 -0
  104. aria_code-0.164.0/tests/test_web_login.py +105 -0
  105. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_workflows.py +2 -2
  106. aria_code-0.164.0/tests/test_workspace_verify.py +83 -0
  107. aria_code-0.164.0/tests/test_write_file_short_content.py +49 -0
  108. aria_code-0.162.0/src/aria_code/demo_player.py +0 -207
  109. aria_code-0.162.0/tests/test_workspace_verify.py +0 -38
  110. {aria_code-0.162.0 → aria_code-0.164.0}/LICENSE +0 -0
  111. {aria_code-0.162.0 → aria_code-0.164.0}/NOTICE +0 -0
  112. {aria_code-0.162.0 → aria_code-0.164.0}/setup.cfg +0 -0
  113. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/__init__.py +0 -0
  114. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/adk_apps/__init__.py +0 -0
  115. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/adk_apps/aria_code_review/__init__.py +0 -0
  116. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/adk_apps/aria_research/__init__.py +0 -0
  117. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/__init__.py +0 -0
  118. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/base.py +0 -0
  119. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/code_review.py +0 -0
  120. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/deep/__init__.py +0 -0
  121. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/deep/calibration_loop.py +0 -0
  122. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/deep/critic.py +0 -0
  123. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/deep/deepen.py +0 -0
  124. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/deep/models.py +0 -0
  125. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/deep/pipeline.py +0 -0
  126. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/deep/quant_fusion.py +0 -0
  127. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/deep/themes.py +0 -0
  128. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/deep/tiers.py +0 -0
  129. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/engineering/__init__.py +0 -0
  130. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/engineering/coder.py +0 -0
  131. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/engineering/tester.py +0 -0
  132. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/__init__.py +0 -0
  133. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/cashflow_burn.py +0 -0
  134. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/catalyst.py +0 -0
  135. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/corporate_finance.py +0 -0
  136. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/debate.py +0 -0
  137. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/earnings.py +0 -0
  138. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/fundamental.py +0 -0
  139. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/macro.py +0 -0
  140. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/news.py +0 -0
  141. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/risk.py +0 -0
  142. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/sector.py +0 -0
  143. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/strategist.py +0 -0
  144. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/stripe_revenue.py +0 -0
  145. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/synthesis.py +0 -0
  146. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/technical.py +0 -0
  147. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/orchestrator.py +0 -0
  148. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/portfolio_agent.py +0 -0
  149. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/realty/__init__.py +0 -0
  150. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/realty/asset_diagnosis.py +0 -0
  151. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/realty/business_match.py +0 -0
  152. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/realty/cashflow_verify.py +0 -0
  153. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/realty/contract_rules.py +0 -0
  154. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/realty/energy_anomaly.py +0 -0
  155. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/realty/exit_settlement.py +0 -0
  156. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/realty/fulfillment_risk.py +0 -0
  157. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/realty/ops_optimize.py +0 -0
  158. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/realty/revenue_share.py +0 -0
  159. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/registry.py +0 -0
  160. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/signal_scheme.py +0 -0
  161. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/sports/__init__.py +0 -0
  162. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/sports/football_agent.py +0 -0
  163. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/supervisor.py +0 -0
  164. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/team.py +0 -0
  165. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/video/__init__.py +0 -0
  166. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/video/director.py +0 -0
  167. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/video/qa_agent.py +0 -0
  168. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/video/script_doctor.py +0 -0
  169. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/warehouse/__init__.py +0 -0
  170. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/warehouse/contracts.py +0 -0
  171. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/warehouse/dashboard.py +0 -0
  172. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/warehouse/fulfillment_leadtime.py +0 -0
  173. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/warehouse/inbound_exceptions.py +0 -0
  174. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/warehouse/inventory_health.py +0 -0
  175. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/warehouse/local_run.py +0 -0
  176. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/warehouse/local_snapshot.py +0 -0
  177. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/warehouse/logistics_cost.py +0 -0
  178. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/warehouse/logistics_sync.py +0 -0
  179. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/warehouse/workflow.py +0 -0
  180. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/aliyun_data_client.py +0 -0
  181. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/README.md +0 -0
  182. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/__init__.py +0 -0
  183. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/channels/README.md +0 -0
  184. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/channels/__init__.py +0 -0
  185. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/channels/approvals.py +0 -0
  186. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/channels/conversation.py +0 -0
  187. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/channels/digest.py +0 -0
  188. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/channels/intake.py +0 -0
  189. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/channels/registry.py +0 -0
  190. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/channels/tradingview.py +0 -0
  191. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/README.md +0 -0
  192. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/__init__.py +0 -0
  193. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/_optional.py +0 -0
  194. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/broker_render.py +0 -0
  195. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/chat_turn.py +0 -0
  196. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/codegen_paths.py +0 -0
  197. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/__init__.py +0 -0
  198. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/_business_render.py +0 -0
  199. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/_ui.py +0 -0
  200. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/analysis_cmds.py +0 -0
  201. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/ashare_prediction_cmds.py +0 -0
  202. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/backtest_cmds.py +0 -0
  203. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/broker_cmds.py +0 -0
  204. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/business_workflow_cmds.py +0 -0
  205. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/canvas_cmds.py +0 -0
  206. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/core_cmds.py +0 -0
  207. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/data_cmds.py +0 -0
  208. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/diagnostic_cmds.py +0 -0
  209. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/diagnostic_ops_cmds.py +0 -0
  210. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/file_cmds.py +0 -0
  211. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/finance_service_cmds.py +0 -0
  212. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/fx_commodity_cmds.py +0 -0
  213. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/market.py +0 -0
  214. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/market_cmds.py +0 -0
  215. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/market_context.py +0 -0
  216. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/market_render.py +0 -0
  217. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/ops_cmds.py +0 -0
  218. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/pdf_export_cmds.py +0 -0
  219. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/portfolio_cmds.py +0 -0
  220. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/report.py +0 -0
  221. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/scaffold_templates.py +0 -0
  222. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/session_cmds.py +0 -0
  223. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/session_ux_cmds.py +0 -0
  224. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/team.py +0 -0
  225. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/team_render.py +0 -0
  226. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/ui_cmds.py +0 -0
  227. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/warehouse_cmds.py +0 -0
  228. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/workflow_cmds.py +0 -0
  229. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/workspace_cmds.py +0 -0
  230. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/config_paths.py +0 -0
  231. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/constants.py +0 -0
  232. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/context.py +0 -0
  233. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/conversation_policy.py +0 -0
  234. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/deterministic.py +0 -0
  235. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/direct.py +0 -0
  236. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/earnings_view.py +0 -0
  237. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/exec_events.py +0 -0
  238. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/finance_service_catalog.py +0 -0
  239. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/football_reports.py +0 -0
  240. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/handlers/__init__.py +0 -0
  241. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/handlers/broker_handlers.py +0 -0
  242. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/handlers/chart_handlers.py +0 -0
  243. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/handlers/market_handlers.py +0 -0
  244. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/handlers/realty_handlers.py +0 -0
  245. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/handlers/sports_handlers.py +0 -0
  246. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/handlers/strategy_advice.py +0 -0
  247. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/helpers.py +0 -0
  248. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/hooks.py +0 -0
  249. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/i18n.py +0 -0
  250. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/intent.py +0 -0
  251. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/intent_router.py +0 -0
  252. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/intent_signals.py +0 -0
  253. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/lifecycle_hooks.py +0 -0
  254. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/local_tool_schemas.py +0 -0
  255. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/main.py +0 -0
  256. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/market_hours.py +0 -0
  257. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/market_metadata.py +0 -0
  258. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/market_universe.py +0 -0
  259. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/message_processing.py +0 -0
  260. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/mixin_binding.py +0 -0
  261. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/model_probe.py +0 -0
  262. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/native_branding.py +0 -0
  263. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/native_bridge.py +0 -0
  264. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/native_entry.py +0 -0
  265. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/pdf_report.py +0 -0
  266. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/plan_mode.py +0 -0
  267. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/plotly_html.py +0 -0
  268. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/prediction_feedback.py +0 -0
  269. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/preflight.py +0 -0
  270. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/project_aria.py +0 -0
  271. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/prompt_assembly.py +0 -0
  272. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/prompts/__init__.py +0 -0
  273. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/prompts/coding.py +0 -0
  274. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/prompts/select.py +0 -0
  275. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/prompts/system_prompts.py +0 -0
  276. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/prompts/ui.py +0 -0
  277. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/provider_endpoints.py +0 -0
  278. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/provider_keys.py +0 -0
  279. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/providers/__init__.py +0 -0
  280. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/providers/base.py +0 -0
  281. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/providers/chat_routing.py +0 -0
  282. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/providers/collaboration.py +0 -0
  283. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/providers/llm/__init__.py +0 -0
  284. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/providers/llm/offline_responses.py +0 -0
  285. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/providers/llm/ollama_stream.py +0 -0
  286. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/providers/llm/response_cache.py +0 -0
  287. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/providers/llm/sse_stream.py +0 -0
  288. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/release_download.py +0 -0
  289. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/review_runner.py +0 -0
  290. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/sandbox.py +0 -0
  291. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/session_export.py +0 -0
  292. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/session_jsonl.py +0 -0
  293. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/session_store.py +0 -0
  294. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/skills_catalog.py +0 -0
  295. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/task_isolation.py +0 -0
  296. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/terminal_chrome.py +0 -0
  297. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/todo_tracker.py +0 -0
  298. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/tool_registry.py +0 -0
  299. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/tool_scope.py +0 -0
  300. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/tools/__init__.py +0 -0
  301. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/tools/context.py +0 -0
  302. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/tools/file_tools.py +0 -0
  303. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/tools/market_tools.py +0 -0
  304. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/tools/notebook_tools.py +0 -0
  305. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/tools/system_tools.py +0 -0
  306. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/tradingview_bridge.py +0 -0
  307. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/transactions.py +0 -0
  308. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/turn_planning.py +0 -0
  309. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/update_check.py +0 -0
  310. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/updater.py +0 -0
  311. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/utils/__init__.py +0 -0
  312. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/utils/market_detect.py +0 -0
  313. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/workflow_runner.py +0 -0
  314. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/workspace_route.py +0 -0
  315. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/daemon/README.md +0 -0
  316. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/vscode/README.md +0 -0
  317. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/vscode/package.json +0 -0
  318. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/aria_daemon.py +0 -0
  319. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/aria_feishu_bot.py +0 -0
  320. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/aria_mcp_server.py +0 -0
  321. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/aria_relay_client.py +0 -0
  322. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/aria_relay_server.py +0 -0
  323. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/aria_telegram_bot.py +0 -0
  324. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/artifacts.py +0 -0
  325. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/backtest_engine.py +0 -0
  326. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/backtest_report.py +0 -0
  327. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/__init__.py +0 -0
  328. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/automation.py +0 -0
  329. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/base.py +0 -0
  330. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/capabilities.py +0 -0
  331. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/cn/__init__.py +0 -0
  332. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/cn/easytrader_broker.py +0 -0
  333. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/cn/futu_broker.py +0 -0
  334. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/cn/longbridge_broker.py +0 -0
  335. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/cn/tiger_broker.py +0 -0
  336. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/cn/xtquant_broker.py +0 -0
  337. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/config.py +0 -0
  338. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/intl/__init__.py +0 -0
  339. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/intl/alpaca_broker.py +0 -0
  340. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/intl/ibkr_broker.py +0 -0
  341. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/intl/trading212_broker.py +0 -0
  342. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/intl/webull_broker.py +0 -0
  343. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/paper_broker.py +0 -0
  344. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/planning.py +0 -0
  345. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/registry.py +0 -0
  346. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/trading.py +0 -0
  347. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/canva_client.py +0 -0
  348. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/change_store.py +0 -0
  349. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/clients/__init__.py +0 -0
  350. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/clients/aliyun_data_client.py +0 -0
  351. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/clients/aria_relay_client.py +0 -0
  352. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/clients/canva_client.py +0 -0
  353. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/clients/figma_client.py +0 -0
  354. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/clients/football_data_client.py +0 -0
  355. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/clients/kling_video_client.py +0 -0
  356. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/clients/market_data_client.py +0 -0
  357. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/clients/openai_image_client.py +0 -0
  358. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/clients/runway_video_client.py +0 -0
  359. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/clients/warehouse_erp_client.py +0 -0
  360. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/cloud_memory.py +0 -0
  361. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/command_safety.py +0 -0
  362. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/computer_use_tools.py +0 -0
  363. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/dashboard_generator.py +0 -0
  364. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/data_analysis_tools.py +0 -0
  365. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/data_cleaner.py +0 -0
  366. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/data_service.py +0 -0
  367. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/datasources/__init__.py +0 -0
  368. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/datasources/base.py +0 -0
  369. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/datasources/router.py +0 -0
  370. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/datasources/sources/__init__.py +0 -0
  371. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/datasources/sources/akshare_source.py +0 -0
  372. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/datasources/sources/alpha_vantage_source.py +0 -0
  373. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/datasources/sources/edgar_source.py +0 -0
  374. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/datasources/sources/finnhub_source.py +0 -0
  375. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/datasources/sources/fred_source.py +0 -0
  376. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/datasources/sources/tushare_source.py +0 -0
  377. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/datasources/sources/web_scraper_source.py +0 -0
  378. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/datasources/sources/world_bank_source.py +0 -0
  379. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/datasources/sources/yfinance_source.py +0 -0
  380. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/domain/__init__.py +0 -0
  381. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/domain/backtest_engine.py +0 -0
  382. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/domain/backtest_report.py +0 -0
  383. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/domain/finance_formulas.py +0 -0
  384. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/domain/performance_stats.py +0 -0
  385. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/domain/portfolio_ledger.py +0 -0
  386. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/domain/strategy_vault.py +0 -0
  387. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/evals/__init__.py +0 -0
  388. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/evals/behavior.py +0 -0
  389. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/evals/gap.py +0 -0
  390. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/evals/review_probe.py +0 -0
  391. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/evals/summary.py +0 -0
  392. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/external_agent_runner.py +0 -0
  393. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/figma_client.py +0 -0
  394. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/file_analysis_tools.py +0 -0
  395. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/finance_formulas.py +0 -0
  396. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/football_data_client.py +0 -0
  397. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/image_gen_tools.py +0 -0
  398. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/kling_video_client.py +0 -0
  399. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/licensing.py +0 -0
  400. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/local_finance_tools.py +0 -0
  401. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/local_image_provider.py +0 -0
  402. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/local_llm_provider.py +0 -0
  403. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/macro_tools.py +0 -0
  404. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/markdown_pdf.py +0 -0
  405. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/market_data_client.py +0 -0
  406. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/memory_manager.py +0 -0
  407. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/notification_tools.py +0 -0
  408. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/openai_image_client.py +0 -0
  409. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/__init__.py +0 -0
  410. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/adk_bridge/__init__.py +0 -0
  411. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/adk_bridge/code_review_tools.py +0 -0
  412. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/adk_bridge/market_tools.py +0 -0
  413. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_agents/__init__.py +0 -0
  414. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_agents/manifest.py +0 -0
  415. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_core/__init__.py +0 -0
  416. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_core/architecture.py +0 -0
  417. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_core/export.py +0 -0
  418. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_core/manifest.py +0 -0
  419. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_core/paths.py +0 -0
  420. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_core/secure_file.py +0 -0
  421. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_infra/__init__.py +0 -0
  422. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_infra/arthera.py +0 -0
  423. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_infra/doctor.py +0 -0
  424. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_infra/product.py +0 -0
  425. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_mcp/__init__.py +0 -0
  426. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_mcp/circuit.py +0 -0
  427. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_mcp/config.py +0 -0
  428. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_mcp/installer.py +0 -0
  429. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_mcp/tools.py +0 -0
  430. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_sdk/__init__.py +0 -0
  431. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_sdk/client.py +0 -0
  432. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_sdk/providers.py +0 -0
  433. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_sdk/streaming.py +0 -0
  434. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_sdk/types.py +0 -0
  435. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_services/__init__.py +0 -0
  436. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_services/cache.py +0 -0
  437. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_services/context.py +0 -0
  438. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_services/context_checkpoints.py +0 -0
  439. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_services/data.py +0 -0
  440. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_services/provider_health.py +0 -0
  441. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_services/references.py +0 -0
  442. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_services/registry.py +0 -0
  443. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_services/research_protocol.py +0 -0
  444. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_services/research_quality.py +0 -0
  445. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_services/settings.py +0 -0
  446. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_services/usage.py +0 -0
  447. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_skills/__init__.py +0 -0
  448. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_skills/catalog.py +0 -0
  449. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_skills/loader.py +0 -0
  450. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_skills/registry.py +0 -0
  451. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_tools/__init__.py +0 -0
  452. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_tools/financial/__init__.py +0 -0
  453. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_tools/financial/_paths.py +0 -0
  454. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_tools/financial/compliance.py +0 -0
  455. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_tools/financial/factors.py +0 -0
  456. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_tools/financial/risk_tools.py +0 -0
  457. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_tools/financial/strategy.py +0 -0
  458. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_tools/registry.py +0 -0
  459. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/__init__.py +0 -0
  460. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/_namespace.py +0 -0
  461. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/backtest/__init__.py +0 -0
  462. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/backtest/core.py +0 -0
  463. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/backtest/engine.py +0 -0
  464. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/portfolio/__init__.py +0 -0
  465. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/portfolio/optimizer.py +0 -0
  466. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/sports/__init__.py +0 -0
  467. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/sports/calibrator.py +0 -0
  468. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/sports/dixon_coles.py +0 -0
  469. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/sports/elo.py +0 -0
  470. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/sports/form.py +0 -0
  471. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/sports/h2h.py +0 -0
  472. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/sports/ml_model.py +0 -0
  473. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/sports/predictor.py +0 -0
  474. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/sports/tracker.py +0 -0
  475. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/stochastic/__init__.py +0 -0
  476. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/stochastic/gbm_enhanced.py +0 -0
  477. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/stochastic/ito_calculus.py +0 -0
  478. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/stochastic/kelly_criterion.py +0 -0
  479. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/stochastic/monte_carlo_advanced.py +0 -0
  480. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/stochastic/options_pricing.py +0 -0
  481. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/stochastic/stochastic_processes.py +0 -0
  482. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packs/__init__.py +0 -0
  483. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packs/base.py +0 -0
  484. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packs/finance/__init__.py +0 -0
  485. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packs/logistics/__init__.py +0 -0
  486. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packs/payments/__init__.py +0 -0
  487. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packs/realty/__init__.py +0 -0
  488. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packs/registry.py +0 -0
  489. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packs/rules.py +0 -0
  490. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/plan_utils.py +0 -0
  491. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/plugin_loader.py +0 -0
  492. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/portfolio_ledger.py +0 -0
  493. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/preview_server.py +0 -0
  494. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/privacy/__init__.py +0 -0
  495. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/privacy/feedback.py +0 -0
  496. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/project_review.py +0 -0
  497. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/project_review_api.py +0 -0
  498. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/project_review_server.py +0 -0
  499. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/project_tools.py +0 -0
  500. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/providers/__init__.py +0 -0
  501. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/providers/llm/__init__.py +0 -0
  502. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/providers/llm/anthropic.py +0 -0
  503. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/providers/llm/autoconfig.py +0 -0
  504. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/providers/llm/base.py +0 -0
  505. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/providers/llm/custom.py +0 -0
  506. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/providers/llm/ollama.py +0 -0
  507. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/providers/local_image_provider.py +0 -0
  508. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/providers/tool_messages.py +0 -0
  509. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/realty_data_tools.py +0 -0
  510. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/relay_store.py +0 -0
  511. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/report_exporters.py +0 -0
  512. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/report_generator.py +0 -0
  513. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/review_service.py +0 -0
  514. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/__init__.py +0 -0
  515. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/agent_loop.py +0 -0
  516. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/approval.py +0 -0
  517. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/baseline.py +0 -0
  518. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/budget.py +0 -0
  519. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/checkpoints.py +0 -0
  520. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/contract.py +0 -0
  521. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/crash_report.py +0 -0
  522. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/events.py +0 -0
  523. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/gateway.py +0 -0
  524. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/lsp.py +0 -0
  525. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/native_index.py +0 -0
  526. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/orchestrator.py +0 -0
  527. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/processes.py +0 -0
  528. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/project_graph.py +0 -0
  529. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/repo_map.py +0 -0
  530. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/run_state.py +0 -0
  531. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/run_store.py +0 -0
  532. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/self_healing.py +0 -0
  533. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/semantic_diff.py +0 -0
  534. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/subagent.py +0 -0
  535. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/symbol_edit.py +0 -0
  536. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/task_ledger.py +0 -0
  537. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/task_orchestrator.py +0 -0
  538. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/task_worktree.py +0 -0
  539. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/tool_executor.py +0 -0
  540. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/tool_policy.py +0 -0
  541. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/transactions.py +0 -0
  542. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/windows_job.py +0 -0
  543. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/workflows.py +0 -0
  544. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/worktrees.py +0 -0
  545. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runway_video_client.py +0 -0
  546. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/safety/__init__.py +0 -0
  547. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/safety/client_isolation.py +0 -0
  548. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/safety/permissions.py +0 -0
  549. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/safety/sandbox.py +0 -0
  550. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/safety/service.py +0 -0
  551. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/setup_wizard.py +0 -0
  552. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/spreadsheet_tools.py +0 -0
  553. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/strategy_vault.py +0 -0
  554. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/__init__.py +0 -0
  555. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/artifact_tools.py +0 -0
  556. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/broker_tools.py +0 -0
  557. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/build_quant_engine.py +0 -0
  558. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/code_audit_tools.py +0 -0
  559. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/computer_use_tools.py +0 -0
  560. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/data_analysis_tools.py +0 -0
  561. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/enterprise_finance_tools.py +0 -0
  562. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/extended_tools.py +0 -0
  563. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/file_analysis_tools.py +0 -0
  564. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/image_gen_tools.py +0 -0
  565. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/local_finance_tools.py +0 -0
  566. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/logistics_carriers.py +0 -0
  567. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/logistics_inventory.py +0 -0
  568. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/logistics_io.py +0 -0
  569. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/logistics_tenancy.py +0 -0
  570. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/logistics_tools.py +0 -0
  571. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/macro_tools.py +0 -0
  572. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/notification_tools.py +0 -0
  573. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/project_tools.py +0 -0
  574. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/realty_data_tools.py +0 -0
  575. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/spreadsheet_tools.py +0 -0
  576. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/stripe_tools.py +0 -0
  577. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/video_tools.py +0 -0
  578. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/training/__init__.py +0 -0
  579. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/training/compare.py +0 -0
  580. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/training/sft_dataset.py +0 -0
  581. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/__init__.py +0 -0
  582. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/banner.py +0 -0
  583. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/completer.py +0 -0
  584. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/console.py +0 -0
  585. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/input_box.py +0 -0
  586. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/mentions.py +0 -0
  587. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/picker.py +0 -0
  588. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/render/__init__.py +0 -0
  589. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/render/actions.py +0 -0
  590. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/render/finance.py +0 -0
  591. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/render/market.py +0 -0
  592. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/render/output.py +0 -0
  593. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/render/responsive.py +0 -0
  594. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/render/team.py +0 -0
  595. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/robot.py +0 -0
  596. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/startup_dashboard.py +0 -0
  597. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/utils/vscode_uri.py +0 -0
  598. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_analysis.py +0 -0
  599. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_editor.py +0 -0
  600. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/__init__.py +0 -0
  601. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/__main__.py +0 -0
  602. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/engines/__init__.py +0 -0
  603. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/engines/base.py +0 -0
  604. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/engines/custom_model.py +0 -0
  605. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/engines/google_veo.py +0 -0
  606. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/engines/local_engine.py +0 -0
  607. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/engines/registry.py +0 -0
  608. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/music/__init__.py +0 -0
  609. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/music/foley_service.py +0 -0
  610. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/music/service.py +0 -0
  611. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/pipeline.py +0 -0
  612. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/plan.py +0 -0
  613. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/session.py +0 -0
  614. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/workspace/__init__.py +0 -0
  615. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/workspace/files.py +0 -0
  616. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/workspace_changes.py +0 -0
  617. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/workspace_context.py +0 -0
  618. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/workspace_service.py +0 -0
  619. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/workspace_tools.py +0 -0
  620. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code.egg-info/dependency_links.txt +0 -0
  621. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code.egg-info/entry_points.txt +0 -0
  622. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code.egg-info/requires.txt +0 -0
  623. {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code.egg-info/top_level.txt +0 -0
  624. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_action_view.py +0 -0
  625. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_adk_market_tools.py +0 -0
  626. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_agent_key_points_language.py +0 -0
  627. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_agent_team_fallback.py +0 -0
  628. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_analyze_file_tool.py +0 -0
  629. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_architecture_ledger_is_true.py +0 -0
  630. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_architecture_report.py +0 -0
  631. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_aria_cli_core.py +0 -0
  632. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_aria_sdk.py +0 -0
  633. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_artifact_publishing.py +0 -0
  634. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_artifacts_and_reports.py +0 -0
  635. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_ashare_prediction_cmds.py +0 -0
  636. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_background_processes.py +0 -0
  637. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_backtest_cmds.py +0 -0
  638. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_backtest_engine.py +0 -0
  639. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_backtest_report.py +0 -0
  640. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_backtest_runs_what_it_names.py +0 -0
  641. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_baseline.py +0 -0
  642. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_binary_bundles_runtime_imports.py +0 -0
  643. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_broken_akshare_is_optional.py +0 -0
  644. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_broker_automation.py +0 -0
  645. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_broker_chat_confirm_gate.py +0 -0
  646. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_broker_planning.py +0 -0
  647. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_broker_safety.py +0 -0
  648. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_broker_tools.py +0 -0
  649. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_budget.py +0 -0
  650. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_business_workflow_cmds.py +0 -0
  651. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_callback_provider_cleanup.py +0 -0
  652. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_canva_client.py +0 -0
  653. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_canvas_cmds.py +0 -0
  654. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_card_approvals.py +0 -0
  655. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_change_contract.py +0 -0
  656. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_channel_intake.py +0 -0
  657. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_channels.py +0 -0
  658. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_chart_handlers.py +0 -0
  659. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_chat_bots_fail_closed.py +0 -0
  660. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_chat_routing.py +0 -0
  661. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_checkpoints_since.py +0 -0
  662. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_ci_security_workflow.py +0 -0
  663. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_cli_app_split.py +0 -0
  664. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_cli_bootstrap.py +0 -0
  665. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_cli_config_store.py +0 -0
  666. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_cli_lifecycle_hooks.py +0 -0
  667. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_cli_runtime_consumer.py +0 -0
  668. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_cli_tool_executor_module.py +0 -0
  669. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_cli_updater.py +0 -0
  670. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_client_isolation_guard.py +0 -0
  671. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_cloud_memory.py +0 -0
  672. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_code_audit_tools.py +0 -0
  673. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_code_review_agent.py +0 -0
  674. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_codegen_output.py +0 -0
  675. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_coder_tester_self_healing.py +0 -0
  676. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_coder_tool_safety.py +0 -0
  677. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_collaboration.py +0 -0
  678. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_command_loggers.py +0 -0
  679. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_command_safety.py +0 -0
  680. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_compare_strategies.py +0 -0
  681. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_completions_builder.py +0 -0
  682. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_config_paths.py +0 -0
  683. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_configured_provider.py +0 -0
  684. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_container_entrypoint.py +0 -0
  685. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_container_entrypoints.py +0 -0
  686. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_context_checkpoints.py +0 -0
  687. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_context_references.py +0 -0
  688. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_context_service.py +0 -0
  689. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_conversation_core.py +0 -0
  690. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_conversation_policy.py +0 -0
  691. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_crash_report.py +0 -0
  692. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_credential_file_permissions.py +0 -0
  693. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_custom_providers.py +0 -0
  694. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_daemon_gateway_config.py +0 -0
  695. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_dashboard_generator.py +0 -0
  696. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_data_service.py +0 -0
  697. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_data_service_imports.py +0 -0
  698. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_data_without_model.py +0 -0
  699. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_datasource_routing.py +0 -0
  700. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_deep_analysis.py +0 -0
  701. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_degrades_without_quant_engine.py +0 -0
  702. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_delivery_report.py +0 -0
  703. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_dispatcher_pins_match_the_release.py +0 -0
  704. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_doctor.py +0 -0
  705. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_doctor_describes_the_current_install.py +0 -0
  706. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_doctor_npm_scope.py +0 -0
  707. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_doctor_sandbox.py +0 -0
  708. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_edit_and_command_safety.py +0 -0
  709. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_engine_boundary.py +0 -0
  710. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_english_output_group.py +0 -0
  711. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_enterprise_tool_honesty.py +0 -0
  712. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_env_switch_docs.py +0 -0
  713. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_eval_behavior.py +0 -0
  714. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_eval_hard_suite.py +0 -0
  715. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_eval_holdout.py +0 -0
  716. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_eval_summary.py +0 -0
  717. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_eval_task_bank.py +0 -0
  718. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_eval_trajectories.py +0 -0
  719. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_event_import_roots.py +0 -0
  720. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_exec_events.py +0 -0
  721. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_extended_tools.py +0 -0
  722. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_feishu_swarm_config.py +0 -0
  723. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_file_links.py +0 -0
  724. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_finalize_release.py +0 -0
  725. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_finance_renderers.py +0 -0
  726. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_finance_service_catalog.py +0 -0
  727. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_first_run_output.py +0 -0
  728. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_first_run_works.py +0 -0
  729. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_football_agent.py +0 -0
  730. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_football_prediction_output.py +0 -0
  731. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_frozen_module_aliases.py +0 -0
  732. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_general_turn_prompt.py +0 -0
  733. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_google_cloud_routing.py +0 -0
  734. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_google_login.py +0 -0
  735. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_google_search_provider.py +0 -0
  736. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_headless_command_approval.py +0 -0
  737. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_headless_is_agentic.py +0 -0
  738. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_honest_surfaces.py +0 -0
  739. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_image_gen_tools.py +0 -0
  740. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_image_inputs.py +0 -0
  741. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_import_aliasing.py +0 -0
  742. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_import_graph_budget.py +0 -0
  743. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_intent_router.py +0 -0
  744. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_intent_signals.py +0 -0
  745. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_kling_video_client.py +0 -0
  746. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_lazy_rebind.py +0 -0
  747. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_legacy_module_imports.py +0 -0
  748. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_license_consistency.py +0 -0
  749. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_licensing.py +0 -0
  750. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_linux_sandbox_integration.py +0 -0
  751. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_local_image_provider.py +0 -0
  752. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_local_workspace_execution.py +0 -0
  753. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_logistics_3pl.py +0 -0
  754. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_logistics_and_finance_agents.py +0 -0
  755. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_lsp.py +0 -0
  756. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_markdown_pdf.py +0 -0
  757. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_market_answers_in_english.py +0 -0
  758. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_market_data_client.py +0 -0
  759. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_market_history_inheritance.py +0 -0
  760. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_market_history_tool.py +0 -0
  761. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_market_hours.py +0 -0
  762. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_market_symbol_extraction.py +0 -0
  763. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_market_universe.py +0 -0
  764. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_mcp_circuit.py +0 -0
  765. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_mentions.py +0 -0
  766. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_model_choice_is_the_users.py +0 -0
  767. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_model_number_selection.py +0 -0
  768. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_model_probe.py +0 -0
  769. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_model_selection_state.py +0 -0
  770. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_narrow_chinese_output.py +0 -0
  771. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_binary_entrypoints.py +0 -0
  772. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_branding.py +0 -0
  773. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_bridge.py +0 -0
  774. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_entry.py +0 -0
  775. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_eval_trajectories.py +0 -0
  776. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_go_app.py +0 -0
  777. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_go_bridge.py +0 -0
  778. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_go_contract.py +0 -0
  779. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_go_delivery.py +0 -0
  780. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_go_providers.py +0 -0
  781. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_go_review.py +0 -0
  782. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_go_stream.py +0 -0
  783. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_index.py +0 -0
  784. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_installer.py +0 -0
  785. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_runtime_domain.py +0 -0
  786. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_session_export.py +0 -0
  787. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_training_compare.py +0 -0
  788. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_training_dataset.py +0 -0
  789. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_natural_language_routing.py +0 -0
  790. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_new_modules.py +0 -0
  791. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_no_hardcoded_developer_paths.py +0 -0
  792. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_no_tools_route.py +0 -0
  793. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_no_uncommitted_imports.py +0 -0
  794. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_numeric_listings.py +0 -0
  795. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_ollama_stream_imports.py +0 -0
  796. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_ollama_stream_tools.py +0 -0
  797. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_openai_image_client.py +0 -0
  798. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_operations_suite.py +0 -0
  799. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_os_sandbox.py +0 -0
  800. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_output_discipline_prompt.py +0 -0
  801. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_output_rendering.py +0 -0
  802. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_packages_facade.py +0 -0
  803. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_packaging_constraints.py +0 -0
  804. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_packaging_manifest.py +0 -0
  805. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_packs_domains.py +0 -0
  806. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_pdf_report.py +0 -0
  807. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_performance_stats.py +0 -0
  808. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_pick_best_installed_model.py +0 -0
  809. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_plan_mode.py +0 -0
  810. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_plan_schema.py +0 -0
  811. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_plan_without_material.py +0 -0
  812. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_platform_package_assembly.py +0 -0
  813. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_platform_packages.py +0 -0
  814. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_platform_publish.py +0 -0
  815. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_plotly_html_output.py +0 -0
  816. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_portfolio_language.py +0 -0
  817. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_portfolio_ledger.py +0 -0
  818. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_portfolio_periods.py +0 -0
  819. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_post_turn_context_decision.py +0 -0
  820. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_preflight.py +0 -0
  821. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_preview_server.py +0 -0
  822. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_privacy_feedback.py +0 -0
  823. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_project_aria.py +0 -0
  824. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_project_context_files.py +0 -0
  825. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_project_graph.py +0 -0
  826. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_project_review.py +0 -0
  827. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_project_review_api.py +0 -0
  828. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_prompt_assembly.py +0 -0
  829. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_prompt_dates.py +0 -0
  830. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_prompt_selection.py +0 -0
  831. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_provider_autoconfig.py +0 -0
  832. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_provider_error_classification.py +0 -0
  833. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_provider_error_messages.py +0 -0
  834. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_provider_integration.py +0 -0
  835. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_provider_project_config.py +0 -0
  836. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_provider_registry.py +0 -0
  837. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_public_service_status.py +0 -0
  838. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_quant_engine_namespace.py +0 -0
  839. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_rebind_contract.py +0 -0
  840. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_rebind_namespace_contract.py +0 -0
  841. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_relay_client_credentials.py +0 -0
  842. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_relay_contract.py +0 -0
  843. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_relay_event_verification.py +0 -0
  844. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_relay_reliability.py +0 -0
  845. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_relay_sends_for_clients.py +0 -0
  846. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_relay_store.py +0 -0
  847. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_relay_url.py +0 -0
  848. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_release_badges.py +0 -0
  849. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_release_chain.py +0 -0
  850. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_release_commit_identity.py +0 -0
  851. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_release_download.py +0 -0
  852. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_release_push_is_atomic.py +0 -0
  853. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_release_reaches_the_registries.py +0 -0
  854. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_release_verification_waits.py +0 -0
  855. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_release_workflow_permissions.py +0 -0
  856. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_report_charts.py +0 -0
  857. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_report_generator.py +0 -0
  858. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_report_prompt_language.py +0 -0
  859. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_research_protocol.py +0 -0
  860. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_research_quality.py +0 -0
  861. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_responsive_rendering.py +0 -0
  862. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_review_gate.py +0 -0
  863. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_review_service.py +0 -0
  864. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_risk_approval.py +0 -0
  865. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_risk_assessment.py +0 -0
  866. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_risk_earnings_ops.py +0 -0
  867. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_robot_artwork.py +0 -0
  868. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_root_module_budget.py +0 -0
  869. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_rsi_without_pandas_ta.py +0 -0
  870. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_run_store_redaction.py +0 -0
  871. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_runtime_acceptance.py +0 -0
  872. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_runtime_agent_loop.py +0 -0
  873. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_runtime_approval.py +0 -0
  874. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_runtime_bridge.py +0 -0
  875. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_runtime_bridge_fallback.py +0 -0
  876. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_runtime_checkpoints.py +0 -0
  877. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_runtime_gateway.py +0 -0
  878. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_runtime_repo_map.py +0 -0
  879. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_runtime_run_store.py +0 -0
  880. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_runtime_tool_executor.py +0 -0
  881. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_runtime_worktrees.py +0 -0
  882. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_runway_video_client.py +0 -0
  883. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_rust_cli.py +0 -0
  884. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_rust_state.py +0 -0
  885. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_rust_stream.py +0 -0
  886. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_safety_permissions.py +0 -0
  887. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_safety_service.py +0 -0
  888. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_safety_service_adoption.py +0 -0
  889. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_semantic_diff.py +0 -0
  890. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_service_diagnostics_security.py +0 -0
  891. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_session_search.py +0 -0
  892. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_settings_service.py +0 -0
  893. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_shell_commands_as_written.py +0 -0
  894. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_shipper_digest.py +0 -0
  895. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_single_import_root.py +0 -0
  896. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_skill_agent_binding.py +0 -0
  897. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_skill_catalog.py +0 -0
  898. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_skill_loader.py +0 -0
  899. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_slash_popup.py +0 -0
  900. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_spreadsheet_tools.py +0 -0
  901. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_sse_http_roundtrip.py +0 -0
  902. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_sse_stream_contract.py +0 -0
  903. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_startup_dashboard.py +0 -0
  904. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_startup_keeps_cloud_model.py +0 -0
  905. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_startup_latency.py +0 -0
  906. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_status_language.py +0 -0
  907. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_streaming_pipeline.py +0 -0
  908. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_stripe_agent.py +0 -0
  909. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_subagent.py +0 -0
  910. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_subagent_workspace.py +0 -0
  911. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_supervisor_routing.py +0 -0
  912. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_symbol_edit.py +0 -0
  913. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_system_prompts.py +0 -0
  914. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_system_tools_output.py +0 -0
  915. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_task_isolation_turn.py +0 -0
  916. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_task_orchestrator.py +0 -0
  917. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_task_restore_startup.py +0 -0
  918. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_task_worktree.py +0 -0
  919. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_team_analysts.py +0 -0
  920. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_team_synthesis.py +0 -0
  921. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_terminal_mixins.py +0 -0
  922. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_terminal_snapshots.py +0 -0
  923. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_tls_trust_store.py +0 -0
  924. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_tool_policy.py +0 -0
  925. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_tool_rounds_on_openai_apis.py +0 -0
  926. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_tool_scope.py +0 -0
  927. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_tool_step_output.py +0 -0
  928. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_trading_service.py +0 -0
  929. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_tradingview_bridge.py +0 -0
  930. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_training_pipeline.py +0 -0
  931. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_transactions.py +0 -0
  932. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_transactions_turn.py +0 -0
  933. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_turn_planning.py +0 -0
  934. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_ui_completer_references.py +0 -0
  935. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_ui_console_theme.py +0 -0
  936. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_ui_input_box.py +0 -0
  937. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_ui_language_and_model.py +0 -0
  938. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_ui_robot_banner.py +0 -0
  939. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_verification_hint.py +0 -0
  940. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_verification_policy.py +0 -0
  941. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_verification_runner_selection.py +0 -0
  942. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_version_consistency.py +0 -0
  943. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_version_counter.py +0 -0
  944. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_vertex_busy_retry.py +0 -0
  945. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_vertex_empty_rounds.py +0 -0
  946. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_video_analysis.py +0 -0
  947. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_video_director.py +0 -0
  948. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_video_editor.py +0 -0
  949. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_video_engines.py +0 -0
  950. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_video_multi_agent.py +0 -0
  951. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_video_session.py +0 -0
  952. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_vscode_mcp.py +0 -0
  953. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_warehouse_agents.py +0 -0
  954. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_warehouse_cli_registration.py +0 -0
  955. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_warehouse_erp_client.py +0 -0
  956. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_warehouse_workflow.py +0 -0
  957. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_wheel_is_installable.py +0 -0
  958. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_workspace_changes.py +0 -0
  959. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_workspace_context.py +0 -0
  960. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_workspace_files.py +0 -0
  961. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_workspace_scope.py +0 -0
  962. {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_workspace_service.py +0 -0
  963. {aria_code-0.162.0 → aria_code-0.164.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.162.0
3
+ Version: 0.164.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.162.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.162.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.164.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.164.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>
@@ -271,7 +271,7 @@ aria-code -p "Fix the failing tests and run them" --format jsonl --allow-tools e
271
271
  | --- | --- |
272
272
  | Local Ollama | An installed and running Ollama model; no cloud account for local inference. |
273
273
  | Direct cloud provider | That provider's API credentials and network access. |
274
- | Direct Google Cloud Vertex AI | `GOOGLE_CLOUD_PROJECT` and either a `gcloud auth login` (Aria uses Vertex AI's OpenAI-compatible endpoint with that login's token) or Application Default Credentials with `aria-code[google]`. `GOOGLE_CLOUD_LOCATION` defaults to `global`. Any model your project can use works without an API key: `/model google/gemini-3.5-flash`, the Gemini 3 previews (served only from `global`), or Gemma and other Model Garden managed models by their id (`/model google/<id>`), which go through Vertex's OpenAI-compatible endpoint. |
274
+ | Direct Google Cloud Vertex AI | `GOOGLE_CLOUD_PROJECT` and either a `gcloud auth login` (Aria uses Vertex AI's OpenAI-compatible endpoint with that login's token) or Application Default Credentials with `aria-code[google]`. `GOOGLE_CLOUD_LOCATION` defaults to `global`. Any model your project can use works without an API key: `/model google/gemini-3.8-flash`, the Gemini 3 previews (served only from `global`), or Gemma and other Model Garden managed models by their id (`/model google/<id>`), which go through Vertex's OpenAI-compatible endpoint. |
275
275
  | Arthera hosted service | Install `aria-code[google]` and sign in through `/login` in the CLI. Arthera account sign-in does not grant Vertex AI credentials to your own machine. |
276
276
 
277
277
  Install extras only for features you use; see [pyproject.toml](pyproject.toml) for the current package options. Local inference can work offline, but live market data, remote integrations, sign-in, and cloud models cannot.
@@ -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.162.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.162.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.164.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.164.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>
@@ -114,7 +114,7 @@ aria-code -p "Fix the failing tests and run them" --format jsonl --allow-tools e
114
114
  | --- | --- |
115
115
  | Local Ollama | An installed and running Ollama model; no cloud account for local inference. |
116
116
  | Direct cloud provider | That provider's API credentials and network access. |
117
- | Direct Google Cloud Vertex AI | `GOOGLE_CLOUD_PROJECT` and either a `gcloud auth login` (Aria uses Vertex AI's OpenAI-compatible endpoint with that login's token) or Application Default Credentials with `aria-code[google]`. `GOOGLE_CLOUD_LOCATION` defaults to `global`. Any model your project can use works without an API key: `/model google/gemini-3.5-flash`, the Gemini 3 previews (served only from `global`), or Gemma and other Model Garden managed models by their id (`/model google/<id>`), which go through Vertex's OpenAI-compatible endpoint. |
117
+ | Direct Google Cloud Vertex AI | `GOOGLE_CLOUD_PROJECT` and either a `gcloud auth login` (Aria uses Vertex AI's OpenAI-compatible endpoint with that login's token) or Application Default Credentials with `aria-code[google]`. `GOOGLE_CLOUD_LOCATION` defaults to `global`. Any model your project can use works without an API key: `/model google/gemini-3.8-flash`, the Gemini 3 previews (served only from `global`), or Gemma and other Model Garden managed models by their id (`/model google/<id>`), which go through Vertex's OpenAI-compatible endpoint. |
118
118
  | Arthera hosted service | Install `aria-code[google]` and sign in through `/login` in the CLI. Arthera account sign-in does not grant Vertex AI credentials to your own machine. |
119
119
 
120
120
  Install extras only for features you use; see [pyproject.toml](pyproject.toml) for the current package options. Local inference can work offline, but live market data, remote integrations, sign-in, and cloud models cannot.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "aria-code"
7
- version = "0.162.0"
7
+ version = "0.164.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" }
@@ -45,7 +45,7 @@ classifiers = [
45
45
  # parsers, the SQL engine and chart renderer are optional extras below — the
46
46
  # code already lazy-imports them and degrades gracefully when absent.
47
47
  dependencies = [
48
- # The default model's client. DEFAULT_MODEL is google/gemini-3.5-flash, and
48
+ # The default model's client. DEFAULT_MODEL is google/gemini-3.8-flash, and
49
49
  # this used to be the optional `google` extra — so a plain
50
50
  # `pip install aria-code` failed on the very first prompt with "Gemini/Vertex
51
51
  # AI 需要 google-genai,当前未安装". The comment above that extra said as
@@ -17,4 +17,4 @@ from __future__ import annotations
17
17
 
18
18
  __all__ = ["__version__"]
19
19
 
20
- __version__ = "0.162.0"
20
+ __version__ = "0.164.0"
@@ -12,7 +12,7 @@ from aria_code.packages.adk_bridge import CodeReviewTools
12
12
  _tools = CodeReviewTools()
13
13
 
14
14
  root_agent = Agent(
15
- model=os.getenv("ARIA_ADK_MODEL", "gemini-3.5-flash"),
15
+ model=os.getenv("ARIA_ADK_MODEL", "gemini-3.8-flash"),
16
16
  name="aria_code_review",
17
17
  description="A read-only code reviewer for user-submitted source text.",
18
18
  instruction="""You are Aria Code Review, a careful software reviewer.
@@ -12,7 +12,7 @@ from aria_code.packages.adk_bridge import MarketResearchTools
12
12
  _tools = MarketResearchTools()
13
13
 
14
14
  root_agent = Agent(
15
- model=os.getenv("ARIA_ADK_MODEL", "gemini-3.5-flash"),
15
+ model=os.getenv("ARIA_ADK_MODEL", "gemini-3.8-flash"),
16
16
  name="aria_research",
17
17
  description="A read-only market-research assistant for Aria Code and Arthera.",
18
18
  instruction="""You are Aria Research, a careful financial-research assistant.
@@ -106,10 +106,21 @@ class Server:
106
106
  # an index to it preserves deny lists, L4 ask-every-time, hooks, symbol
107
107
  # previews and the exact scope of session grants.
108
108
  choices = [[str(label), str(help_text)] for label, help_text in options]
109
+ extra = {}
110
+ picker = bool(kwargs.get("picker"))
111
+ if picker:
112
+ # A long list to search (models): the frontend draws a picker, not an approval.
113
+ extra["picker"] = True
114
+ groups = kwargs.get("groups")
115
+ if isinstance(groups, list) and len(groups) == len(choices):
116
+ extra["groups"] = [str(group) for group in groups]
117
+ if not picker and getattr(self, "approval_risk", None):
118
+ extra["risk"] = self.approval_risk
109
119
  answer = self.ask("approval.requested", title=str(title or "Approval / selection"),
110
120
  choices=choices, selected=selected,
111
121
  shortcuts=kwargs.get("shortcuts", {}),
112
- context=getattr(self, "approval_context", ""))
122
+ context="" if picker else getattr(self, "approval_context", ""),
123
+ **extra)
113
124
  chosen = answer.get("choice", -1)
114
125
  if type(chosen) is not int or not -1 <= chosen < len(choices):
115
126
  raise ValueError("Invalid menu response")
@@ -158,6 +169,11 @@ class Server:
158
169
  continue
159
170
  if kind == "shutdown":
160
171
  break
172
+ if kind == "completion.request":
173
+ # Answered here, not queued behind a running turn: it is
174
+ # a lookup, and the list it feeds should not wait.
175
+ self.complete_reference(value)
176
+ continue
161
177
  self.requests.put_nowait(value)
162
178
  except (ValueError, UnicodeError, queue.Full) as error:
163
179
  self.emit("protocol.error", error=str(error))
@@ -237,10 +253,12 @@ class Server:
237
253
  if isinstance(params.get(key), str):
238
254
  context.append((cn if zh else en) + ": " + params[key])
239
255
  server.approval_context = "\n".join(context)
256
+ server.approval_risk = server.assess_for_approval(tool_name, tool_params)
240
257
  try:
241
258
  return await super().approve(tool_name, tool_params, **kwargs)
242
259
  finally:
243
260
  server.approval_context = ""
261
+ server.approval_risk = None
244
262
  cli.TerminalApprovalEventConsumer = Approvals
245
263
  config = cli.load_config()
246
264
  config["_session_workspace_root"] = str(Path.cwd().resolve())
@@ -285,6 +303,9 @@ class Server:
285
303
  # The host draws its own turn footer. Keep this presentation flag out
286
304
  # of saved user settings and retain normal Python CLI behaviour.
287
305
  terminal._native_frontend = True
306
+ # Commands that need a choice (/model) draw it in the host's own menu.
307
+ # This process's stdin is a pipe, so the TTY arrow picker can never run.
308
+ terminal._native_select = self.select
288
309
  execute = terminal.tool_executor.execute_local
289
310
  def tracked(*args, **kwargs):
290
311
  with self.tool_lock:
@@ -347,6 +368,62 @@ class Server:
347
368
  config["last_session_id"] = self.terminal.session_id
348
369
  self.cli.save_config(config)
349
370
 
371
+ def complete_reference(self, value):
372
+ """Answer a completion request with candidates for the `@file` being typed."""
373
+ text = value.get("text")
374
+ if not isinstance(text, str) or len(text.encode("utf-8")) > MAX_INPUT:
375
+ raise ValueError("Completion text must be at most 65536 UTF-8 bytes")
376
+ from aria_code.apps.cli.file_references import reference_candidates
377
+
378
+ try:
379
+ candidates = reference_candidates(text, Path.cwd())
380
+ except Exception:
381
+ candidates = []
382
+ self.emit("completion.result", session_id=value.get("session_id", ""), text=text, candidates=candidates)
383
+
384
+ def assess_for_approval(self, tool_name, params):
385
+ """What the action reaches, for the approval card: level, files, hosts, why.
386
+
387
+ The same assessment the terminal's text card is built from, sent as data
388
+ so the frontend can draw it. None when it cannot be assessed; the dialog
389
+ then shows only the tool and its target.
390
+ """
391
+ try:
392
+ from aria_code.safety.risk import assess_tool
393
+ from aria_code.ui.render.output import _file_impact
394
+
395
+ assessment = assess_tool(tool_name, dict(params or {}), root=os.getcwd())
396
+ card = assessment.as_dict()
397
+ card["impact"] = _file_impact(assessment)
398
+ for key in ("hosts", "files", "systems", "reasons"):
399
+ card[key] = [str(x)[:200] for x in card.get(key, [])[:8]]
400
+ return card
401
+ except Exception:
402
+ return None
403
+
404
+ def commands_info(self):
405
+ """Every slash command with what it does, in the order the list shows them.
406
+
407
+ The frontend's list opens on a bare `/`, so what comes first matters: the
408
+ core commands and the entry points, then the rest alphabetically, the same
409
+ order the terminal completer has always used. Descriptions are localised.
410
+ """
411
+ from aria_code.apps.cli.commands.catalog import CORE_SLASH_COMMANDS, ENTRY_SLASH_COMMANDS, describe
412
+
413
+ t = self.terminal
414
+ registry = t.commands.commands
415
+ lang = t.config.get("ui_lang", "en")
416
+ first = [n for n in (*CORE_SLASH_COMMANDS, *ENTRY_SLASH_COMMANDS) if n in registry]
417
+ rest = [n for n in sorted(registry) if n not in set(first)]
418
+ info = []
419
+ for name in first + rest:
420
+ try:
421
+ detail = describe(name, registry[name][1], lang)
422
+ except Exception:
423
+ detail = ""
424
+ info.append({"name": name, "description": str(detail or "")[:160]})
425
+ return info
426
+
350
427
  def snapshot(self, kind):
351
428
  from aria_code.apps.cli.native_branding import robot_rows
352
429
  from aria_code.ui import robot
@@ -363,6 +440,7 @@ class Server:
363
440
  robot=rows, robot_design="cream-block-v2" if rows else "",
364
441
  model=t.config.get("model", ""), provider=t.config.get("local_provider", ""),
365
442
  workspace=str(Path.cwd()), commands=sorted(t.commands.commands),
443
+ commands_info=self.commands_info(), reference_completion=True,
366
444
  permission=t.config.get("permission_mode", "workspace-write"),
367
445
  network=bool(t.config.get("network_enabled", True)),
368
446
  ui_lang=t.config.get("ui_lang", "en"),
@@ -450,11 +528,32 @@ class Server:
450
528
  notice = get_update_notice(wait_ms=0)
451
529
  if notice:
452
530
  self.emit("update.available", turn_id=None, text=Text.from_markup(notice).plain)
531
+ await self.install_update_quietly()
453
532
  return
454
533
  await asyncio.sleep(0.1)
455
534
  except Exception:
456
535
  pass # A metadata failure must not interrupt the user's task.
457
536
 
537
+ async def install_update_quietly(self):
538
+ """Native installs update themselves; the header then asks for a restart."""
539
+ from aria_code.apps.cli import auto_update, updater
540
+ from aria_code.apps.cli.update_check import _install_channel, _newer
541
+
542
+ loop = asyncio.get_running_loop()
543
+ installed = await loop.run_in_executor(
544
+ None,
545
+ lambda: auto_update.install_if_newer(
546
+ self.cli.__version__, _install_channel(), self.terminal.config,
547
+ check=updater.check_update, install=updater.install_native,
548
+ newer=_newer, app_root=updater._app_root(),
549
+ ),
550
+ )
551
+ if installed:
552
+ zh = self.terminal.config.get("ui_lang", "en") == "zh"
553
+ text = (f"已更新到 {installed} · 重启 Aria 后生效" if zh
554
+ else f"Updated to {installed} · restart Aria to use it")
555
+ self.emit("update.available", turn_id=None, text=text)
556
+
458
557
  async def serve(self):
459
558
  self.loop = asyncio.get_running_loop()
460
559
  threading.Thread(target=self.read_requests, daemon=True).start()
@@ -0,0 +1,102 @@
1
+ """Install a verified update in the background, the way Claude Code does.
2
+
3
+ The session keeps running on the version it started with. When a newer native
4
+ release is out, it is downloaded, checked and switched in behind the scenes,
5
+ and the header says "restart to use it". Nothing is interrupted: the new
6
+ version only takes over the next time Aria starts.
7
+
8
+ Only managed native installs update themselves. pip, npm and source checkouts
9
+ belong to their own tools, so they keep the plain "update available" notice.
10
+ Turn it off with `auto_update: false` in the config or `ARIA_AUTO_UPDATE=0`.
11
+ A version that failed to install is not retried for a day, and two sessions
12
+ never install at once.
13
+ """
14
+
15
+ from __future__ import annotations
16
+
17
+ import json
18
+ import os
19
+ import time
20
+ from pathlib import Path
21
+ from typing import Callable, Optional
22
+
23
+ RETRY_AFTER_FAILURE_S = 86_400
24
+ LOCK_STALE_S = 900
25
+
26
+
27
+ def enabled(config: dict) -> bool:
28
+ if os.environ.get("ARIA_AUTO_UPDATE", "").lower() in {"0", "false", "no", "off"}:
29
+ return False
30
+ if os.environ.get("ARIA_OFFLINE", "").lower() in {"1", "true", "yes", "on"}:
31
+ return False
32
+ return bool(config.get("auto_update", True))
33
+
34
+
35
+ def _state_path(app_root: Path) -> Path:
36
+ return app_root / "auto-update.json"
37
+
38
+
39
+ def _recently_failed(app_root: Path, version: str, now: float) -> bool:
40
+ try:
41
+ data = json.loads(_state_path(app_root).read_text())
42
+ except (OSError, ValueError):
43
+ return False
44
+ return data.get("failed") == version and now - float(data.get("at", 0)) < RETRY_AFTER_FAILURE_S
45
+
46
+
47
+ def _remember_failure(app_root: Path, version: str, now: float) -> None:
48
+ try:
49
+ _state_path(app_root).write_text(json.dumps({"failed": version, "at": now}))
50
+ except OSError:
51
+ pass
52
+
53
+
54
+ def _take_lock(app_root: Path, now: float) -> Optional[Path]:
55
+ lock = app_root / "auto-update.lock"
56
+ try:
57
+ if lock.exists() and now - lock.stat().st_mtime > LOCK_STALE_S:
58
+ lock.unlink()
59
+ fd = os.open(lock, os.O_CREAT | os.O_EXCL | os.O_WRONLY, 0o600)
60
+ except OSError:
61
+ return None
62
+ os.close(fd)
63
+ return lock
64
+
65
+
66
+ def install_if_newer(
67
+ current: str,
68
+ channel: str,
69
+ config: dict,
70
+ *,
71
+ check: Callable[..., tuple],
72
+ install: Callable[[str, dict], Path],
73
+ newer: Callable[[str, str], bool],
74
+ app_root: Path,
75
+ now: Optional[float] = None,
76
+ ) -> Optional[str]:
77
+ """Install the latest release when there is one; return its version, else None.
78
+
79
+ Blocking: run it off the event loop. Any failure leaves the installed
80
+ version untouched and returns None.
81
+ """
82
+ if channel != "native" or not enabled(config):
83
+ return None
84
+ stamp = time.time() if now is None else now
85
+ try:
86
+ app_root.mkdir(parents=True, exist_ok=True)
87
+ latest, release = check("native")
88
+ if not newer(latest, current) or _recently_failed(app_root, latest, stamp):
89
+ return None
90
+ lock = _take_lock(app_root, stamp)
91
+ if lock is None:
92
+ return None
93
+ try:
94
+ install(latest, release)
95
+ except Exception:
96
+ _remember_failure(app_root, latest, stamp)
97
+ return None
98
+ finally:
99
+ lock.unlink(missing_ok=True)
100
+ return latest
101
+ except Exception:
102
+ return None
@@ -146,7 +146,7 @@ def initialize_cli_environment() -> None:
146
146
  # Provider configuration is the user's to make (that is what `/model` and
147
147
  # `.ariarc` are for); the code's job is to have a sane default and then get
148
148
  # out of the way.
149
- DEFAULT_MODEL = os.getenv("ARIA_DEFAULT_MODEL", "google/gemini-3.5-flash")
149
+ DEFAULT_MODEL = os.getenv("ARIA_DEFAULT_MODEL", "google/gemini-3.8-flash")
150
150
  # A stable model (Google: available until at least May 2027), not a short-term
151
151
  # one: an install that is rarely updated should not lose its default within
152
152
  # months. gemini-2.5-pro, the previous default, retires in October 2026.
@@ -154,15 +154,13 @@ 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
164
162
  # for names that do not name their own provider ("qwen2.5:7b"); a
165
- # prefixed id like "google/gemini-3.5-flash" always wins.
163
+ # prefixed id like "google/gemini-3.8-flash" always wins.
166
164
  "local_provider": os.getenv("ARIA_LLM_PROVIDER", "ollama"),
167
165
  "provider_fallback": "configured",
168
166
  "model": DEFAULT_MODEL,
@@ -184,6 +182,8 @@ def default_config() -> dict:
184
182
  # Independent review of a turn's changes by a fresh-context reviewer
185
183
  # before it ends (runtime/review.py). Costs one extra model call.
186
184
  "review_gate": False,
185
+ # A different model for that review (provider/model); "" = the builder itself.
186
+ "review_model": "",
187
187
  # The runtime's DONE/INCOMPLETE report under coding answers.
188
188
  "delivery_report": True,
189
189
  "network_enabled": True,
@@ -0,0 +1,231 @@
1
+ """The models each cloud provider offers, read from the provider itself.
2
+
3
+ `/model` used to list Aria's own catalogue and, for a cloud provider, only the
4
+ model already selected: a hand-kept list is out of date within weeks (Google
5
+ retired Gemini 3.5 Flash a month after this catalogue called it stable). So for
6
+ every provider with a key, the model list endpoint is asked what it serves now.
7
+
8
+ The answer is cached for a few hours. An expired cache is shown straight away
9
+ and refreshed behind it, so opening the picker never waits on a slow provider;
10
+ only a provider with no cache at all is waited for, and only for a few seconds.
11
+ Offline, or when a provider is down, the cache (however old) is used, and a
12
+ provider with neither simply has no section.
13
+
14
+ Keys are used for the request and never written to the cache.
15
+ """
16
+
17
+ from __future__ import annotations
18
+
19
+ import json
20
+ import os
21
+ import re
22
+ import threading
23
+ import time
24
+ import urllib.error
25
+ import urllib.request
26
+ from concurrent.futures import ThreadPoolExecutor
27
+ from pathlib import Path
28
+ from typing import Callable, Dict, List, Optional
29
+
30
+ CACHE_TTL_S = 6 * 3600
31
+ FETCH_TIMEOUT_S = 4.0
32
+ MAX_PER_PROVIDER = 60
33
+
34
+ #: provider -> (heading, kind, models URL). The URL for Google carries the key
35
+ #: as a header, not in the query string.
36
+ PROVIDERS: Dict[str, tuple] = {
37
+ "google": ("Google Gemini", "google", "https://generativelanguage.googleapis.com/v1beta/models?pageSize=200"),
38
+ "openai": ("OpenAI", "openai", "https://api.openai.com/v1/models"),
39
+ "anthropic": ("Anthropic Claude", "anthropic", "https://api.anthropic.com/v1/models?limit=100"),
40
+ "deepseek": ("DeepSeek", "openai", "https://api.deepseek.com/models"),
41
+ "groq": ("Groq", "openai", "https://api.groq.com/openai/v1/models"),
42
+ "together": ("Together AI", "openai", "https://api.together.xyz/v1/models"),
43
+ "dashscope": ("Alibaba DashScope", "openai", "https://dashscope.aliyuncs.com/compatible-mode/v1/models"),
44
+ "siliconflow": ("SiliconFlow", "openai", "https://api.siliconflow.cn/v1/models"),
45
+ "moonshot": ("Moonshot", "openai", "https://api.moonshot.cn/v1/models"),
46
+ "zhipu": ("Zhipu GLM", "openai", "https://open.bigmodel.cn/api/paas/v4/models"),
47
+ }
48
+
49
+ #: Not chat models: embeddings, speech, images, video, music, moderation, live audio.
50
+ _NOT_CHAT = re.compile(
51
+ r"embed|whisper|tts|transcribe|speech|audio|realtime|dall-e|image|imagen|veo|lyria|"
52
+ r"omni-|nano-banana|moderation|rerank|guard|-live|robotics|computer-use|sora|deep-research|"
53
+ r"search-preview|davinci|babbage|aqa|text-bison|vision-preview",
54
+ re.IGNORECASE,
55
+ )
56
+
57
+ _refreshing: set = set()
58
+ _lock = threading.Lock()
59
+
60
+
61
+ def cache_dir() -> Path:
62
+ from aria_code.packages.aria_core.paths import aria_home
63
+
64
+ return Path(aria_home()) / "cloud_models"
65
+
66
+
67
+ def _http_json(url: str, headers: Dict[str, str], timeout: float) -> object:
68
+ request = urllib.request.Request(url, headers={"User-Agent": "aria-code", "Accept": "application/json", **headers})
69
+ with urllib.request.urlopen(request, timeout=timeout) as response: # noqa: S310 - fixed https endpoints above
70
+ return json.load(response)
71
+
72
+
73
+ def _natural_key(text: str):
74
+ """Sort key where 3.10 follows 3.9 and a higher version sorts later."""
75
+ return [int(part) if part.isdigit() else part for part in re.split(r"(\d+)", text.lower())]
76
+
77
+
78
+ def _ctx_label(tokens) -> str:
79
+ try:
80
+ n = int(tokens)
81
+ except (TypeError, ValueError):
82
+ return ""
83
+ if n >= 900_000:
84
+ return f"ctx {round(n / 1_048_576)}M"
85
+ return f"ctx {n // 1000}K" if n >= 1000 else ""
86
+
87
+
88
+ def _date(epoch: int) -> str:
89
+ import datetime
90
+
91
+ try:
92
+ return datetime.date.fromtimestamp(epoch).isoformat()
93
+ except (OverflowError, OSError, ValueError):
94
+ return ""
95
+
96
+
97
+ def _is_shut_down(value: object, today: Optional[float] = None) -> bool:
98
+ """True when a provider's `shutdown_date` (epoch seconds or ISO date) has passed."""
99
+ now = time.time() if today is None else today
100
+ if isinstance(value, (int, float)) and value > 0:
101
+ return float(value) < now
102
+ if isinstance(value, str) and value:
103
+ import datetime
104
+
105
+ try:
106
+ return datetime.date.fromisoformat(value[:10]) < datetime.date.fromtimestamp(now)
107
+ except ValueError:
108
+ return False
109
+ return False
110
+
111
+
112
+ def parse(provider: str, payload: object) -> List[dict]:
113
+ """The chat models in a provider's list response, newest first: [{id, name, detail}]."""
114
+ kind = PROVIDERS[provider][1]
115
+ rows: List[dict] = []
116
+ if kind == "google":
117
+ for item in (payload or {}).get("models", []) if isinstance(payload, dict) else []:
118
+ methods = item.get("supportedGenerationMethods") or []
119
+ ident = str(item.get("name", "")).removeprefix("models/")
120
+ if "generateContent" not in methods or not ident or _NOT_CHAT.search(ident):
121
+ continue
122
+ detail = " · ".join(x for x in (_ctx_label(item.get("inputTokenLimit")),) if x)
123
+ rows.append({"id": ident, "name": item.get("displayName") or ident, "detail": detail})
124
+ elif kind == "anthropic":
125
+ for item in (payload or {}).get("data", []) if isinstance(payload, dict) else []:
126
+ ident = str(item.get("id", ""))
127
+ if ident:
128
+ rows.append({"id": ident, "name": item.get("display_name") or ident, "detail": ""})
129
+ else:
130
+ items = payload.get("data", []) if isinstance(payload, dict) else payload
131
+ for item in items if isinstance(items, list) else []:
132
+ ident = str(item.get("id", "")) if isinstance(item, dict) else ""
133
+ if not ident or _NOT_CHAT.search(ident) or _is_shut_down(item.get("shutdown_date")):
134
+ continue
135
+ created = item.get("created")
136
+ created = int(created) if isinstance(created, (int, float)) and created > 0 else 0
137
+ detail = _date(created) if created else ""
138
+ rows.append({"id": ident, "name": ident, "detail": detail, "created": created})
139
+ # Newest first by the provider's own creation date where it gives one (OpenAI does);
140
+ # otherwise by version number in the id, which is only a rough proxy.
141
+ rows.sort(key=lambda r: (r.get("created", 0), _natural_key(r["id"])), reverse=True)
142
+ return [{k: v for k, v in r.items() if k != "created"} for r in rows[:MAX_PER_PROVIDER]]
143
+
144
+
145
+ def fetch(provider: str, key: str, timeout: float = FETCH_TIMEOUT_S) -> Optional[List[dict]]:
146
+ """Ask the provider; None when it cannot be reached or refuses the key."""
147
+ _heading, kind, url = PROVIDERS[provider]
148
+ if kind == "google":
149
+ headers = {"x-goog-api-key": key}
150
+ elif kind == "anthropic":
151
+ headers = {"x-api-key": key, "anthropic-version": "2023-06-01"}
152
+ else:
153
+ headers = {"Authorization": f"Bearer {key}"}
154
+ try:
155
+ return parse(provider, _http_json(url, headers, timeout))
156
+ except (OSError, urllib.error.URLError, ValueError):
157
+ return None
158
+
159
+
160
+ def _read_cache(provider: str) -> Optional[dict]:
161
+ try:
162
+ data = json.loads((cache_dir() / f"{provider}.json").read_text(encoding="utf-8"))
163
+ if isinstance(data.get("models"), list):
164
+ return data
165
+ except (OSError, ValueError):
166
+ pass
167
+ return None
168
+
169
+
170
+ def _write_cache(provider: str, models: List[dict], now: float) -> None:
171
+ try:
172
+ directory = cache_dir()
173
+ directory.mkdir(parents=True, exist_ok=True)
174
+ (directory / f"{provider}.json").write_text(json.dumps({"at": now, "models": models}), encoding="utf-8")
175
+ except OSError:
176
+ pass
177
+
178
+
179
+ def _refresh_later(provider: str, key: str) -> None:
180
+ with _lock:
181
+ if provider in _refreshing:
182
+ return
183
+ _refreshing.add(provider)
184
+
185
+ def run() -> None:
186
+ try:
187
+ models = fetch(provider, key)
188
+ if models:
189
+ _write_cache(provider, models, time.time())
190
+ finally:
191
+ with _lock:
192
+ _refreshing.discard(provider)
193
+
194
+ threading.Thread(target=run, daemon=True, name=f"aria-models-{provider}").start()
195
+
196
+
197
+ def models_for(provider: str, key: str, *, offline: bool = False, now: Optional[float] = None) -> List[dict]:
198
+ """The provider's models: fresh cache, else stale cache (refreshed behind), else a live request."""
199
+ stamp = time.time() if now is None else now
200
+ cached = _read_cache(provider)
201
+ if cached and (offline or stamp - float(cached.get("at", 0)) < CACHE_TTL_S):
202
+ return cached["models"]
203
+ if cached:
204
+ _refresh_later(provider, key)
205
+ return cached["models"]
206
+ if offline:
207
+ return []
208
+ models = fetch(provider, key)
209
+ if models:
210
+ _write_cache(provider, models, stamp)
211
+ return models or []
212
+
213
+
214
+ def collect(key_for: Callable[[str], str], *, offline: Optional[bool] = None) -> Dict[str, List[dict]]:
215
+ """Models for every provider that has a key, looked up in parallel: {provider: [models]}."""
216
+ if offline is None:
217
+ offline = os.environ.get("ARIA_OFFLINE", "").lower() in {"1", "true", "yes", "on"}
218
+ keyed = {p: key for p in PROVIDERS if (key := key_for(p))}
219
+ if not keyed:
220
+ return {}
221
+ with ThreadPoolExecutor(max_workers=min(8, len(keyed))) as pool:
222
+ futures = {p: pool.submit(models_for, p, key, offline=offline) for p, key in keyed.items()}
223
+ out = {}
224
+ for provider, future in futures.items():
225
+ try:
226
+ models = future.result(timeout=FETCH_TIMEOUT_S + 2)
227
+ except Exception:
228
+ models = []
229
+ if models:
230
+ out[provider] = models
231
+ return out
@@ -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