aria-code 0.67.0__tar.gz → 0.69.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 (719) hide show
  1. {aria_code-0.67.0 → aria_code-0.69.0}/PKG-INFO +4 -4
  2. {aria_code-0.67.0 → aria_code-0.69.0}/README.md +3 -3
  3. {aria_code-0.67.0 → aria_code-0.69.0}/pyproject.toml +2 -1
  4. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/_version.py +1 -1
  5. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/bootstrap.py +22 -1
  6. aria_code-0.69.0/src/aria_code/apps/cli/commands/__init__.py +34 -0
  7. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/backtest_cmds.py +3 -2
  8. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/diagnostic_cmds.py +37 -7
  9. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/providers/chat_routing.py +8 -5
  10. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/providers/runtime_bridge.py +4 -4
  11. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/tools/market_tools.py +12 -6
  12. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/update_check.py +58 -25
  13. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/aria_cli.py +74 -39
  14. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/tools/local_finance_tools.py +38 -33
  15. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/ui/banner.py +19 -10
  16. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/ui/robot.py +18 -19
  17. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code.egg-info/PKG-INFO +4 -4
  18. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code.egg-info/SOURCES.txt +3 -0
  19. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code.egg-info/entry_points.txt +1 -0
  20. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_architecture_report.py +14 -1
  21. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_chat_bots_fail_closed.py +8 -1
  22. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_chat_routing.py +3 -2
  23. aria_code-0.69.0/tests/test_finalize_release.py +90 -0
  24. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_native_installer.py +30 -7
  25. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_runtime_bridge_fallback.py +8 -8
  26. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_startup_dashboard.py +13 -2
  27. aria_code-0.69.0/tests/test_startup_latency.py +40 -0
  28. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_tls_trust_store.py +13 -1
  29. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_ui_robot_banner.py +8 -5
  30. aria_code-0.69.0/tests/test_update_health_routes.py +75 -0
  31. aria_code-0.67.0/src/aria_code/apps/cli/commands/__init__.py +0 -16
  32. {aria_code-0.67.0 → aria_code-0.69.0}/LICENSE +0 -0
  33. {aria_code-0.67.0 → aria_code-0.69.0}/NOTICE +0 -0
  34. {aria_code-0.67.0 → aria_code-0.69.0}/setup.cfg +0 -0
  35. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/__init__.py +0 -0
  36. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/adk_apps/__init__.py +0 -0
  37. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/adk_apps/aria_code_review/__init__.py +0 -0
  38. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/adk_apps/aria_code_review/agent.py +0 -0
  39. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/adk_apps/aria_research/__init__.py +0 -0
  40. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/adk_apps/aria_research/agent.py +0 -0
  41. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/__init__.py +0 -0
  42. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/base.py +0 -0
  43. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/code_review.py +0 -0
  44. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/deep/__init__.py +0 -0
  45. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/deep/calibration_loop.py +0 -0
  46. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/deep/critic.py +0 -0
  47. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/deep/deepen.py +0 -0
  48. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/deep/models.py +0 -0
  49. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/deep/pipeline.py +0 -0
  50. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/deep/quant_fusion.py +0 -0
  51. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/deep/themes.py +0 -0
  52. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/deep/tiers.py +0 -0
  53. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/engineering/__init__.py +0 -0
  54. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/engineering/coder.py +0 -0
  55. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/engineering/tester.py +0 -0
  56. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/financial/__init__.py +0 -0
  57. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/financial/cashflow_burn.py +0 -0
  58. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/financial/catalyst.py +0 -0
  59. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/financial/corporate_finance.py +0 -0
  60. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/financial/debate.py +0 -0
  61. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/financial/earnings.py +0 -0
  62. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/financial/fundamental.py +0 -0
  63. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/financial/macro.py +0 -0
  64. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/financial/news.py +0 -0
  65. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/financial/risk.py +0 -0
  66. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/financial/sector.py +0 -0
  67. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/financial/strategist.py +0 -0
  68. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/financial/stripe_revenue.py +0 -0
  69. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/financial/synthesis.py +0 -0
  70. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/financial/technical.py +0 -0
  71. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/orchestrator.py +0 -0
  72. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/portfolio_agent.py +0 -0
  73. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/realty/__init__.py +0 -0
  74. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/realty/asset_diagnosis.py +0 -0
  75. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/realty/business_match.py +0 -0
  76. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/realty/cashflow_verify.py +0 -0
  77. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/realty/contract_rules.py +0 -0
  78. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/realty/energy_anomaly.py +0 -0
  79. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/realty/exit_settlement.py +0 -0
  80. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/realty/fulfillment_risk.py +0 -0
  81. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/realty/ops_optimize.py +0 -0
  82. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/realty/revenue_share.py +0 -0
  83. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/registry.py +0 -0
  84. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/signal_scheme.py +0 -0
  85. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/sports/__init__.py +0 -0
  86. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/sports/football_agent.py +0 -0
  87. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/supervisor.py +0 -0
  88. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/team.py +0 -0
  89. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/warehouse/__init__.py +0 -0
  90. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/warehouse/contracts.py +0 -0
  91. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/warehouse/dashboard.py +0 -0
  92. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/warehouse/fulfillment_leadtime.py +0 -0
  93. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/warehouse/inbound_exceptions.py +0 -0
  94. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/warehouse/inventory_health.py +0 -0
  95. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/warehouse/local_run.py +0 -0
  96. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/warehouse/local_snapshot.py +0 -0
  97. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/warehouse/logistics_cost.py +0 -0
  98. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/warehouse/logistics_sync.py +0 -0
  99. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/agents/warehouse/workflow.py +0 -0
  100. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/aliyun_data_client.py +0 -0
  101. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/README.md +0 -0
  102. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/__init__.py +0 -0
  103. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/channels/README.md +0 -0
  104. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/channels/__init__.py +0 -0
  105. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/channels/approvals.py +0 -0
  106. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/channels/conversation.py +0 -0
  107. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/channels/digest.py +0 -0
  108. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/channels/intake.py +0 -0
  109. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/channels/registry.py +0 -0
  110. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/channels/tradingview.py +0 -0
  111. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/README.md +0 -0
  112. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/__init__.py +0 -0
  113. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/_optional.py +0 -0
  114. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/broker_render.py +0 -0
  115. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/codegen_paths.py +0 -0
  116. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/_business_render.py +0 -0
  117. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/_ui.py +0 -0
  118. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/analysis_cmds.py +0 -0
  119. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/ashare_prediction_cmds.py +0 -0
  120. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/auth_cmds.py +0 -0
  121. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/broker_cmds.py +0 -0
  122. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/business_workflow_cmds.py +0 -0
  123. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/canvas_cmds.py +0 -0
  124. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/catalog.py +0 -0
  125. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/core_cmds.py +0 -0
  126. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/data_cmds.py +0 -0
  127. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/diagnostic_ops_cmds.py +0 -0
  128. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/file_cmds.py +0 -0
  129. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/finance_service_cmds.py +0 -0
  130. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/fx_commodity_cmds.py +0 -0
  131. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/market.py +0 -0
  132. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/market_cmds.py +0 -0
  133. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/market_context.py +0 -0
  134. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/market_render.py +0 -0
  135. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/model_cmds.py +0 -0
  136. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/ops_cmds.py +0 -0
  137. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/orchestrator_cmds.py +0 -0
  138. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/pdf_export_cmds.py +0 -0
  139. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/portfolio_cmds.py +0 -0
  140. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/report.py +0 -0
  141. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/scaffold_templates.py +0 -0
  142. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/session_cmds.py +0 -0
  143. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/session_ux_cmds.py +0 -0
  144. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/team.py +0 -0
  145. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/team_render.py +0 -0
  146. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/ui_cmds.py +0 -0
  147. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/warehouse_cmds.py +0 -0
  148. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/workflow_cmds.py +0 -0
  149. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/commands/workspace_cmds.py +0 -0
  150. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/config_paths.py +0 -0
  151. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/config_store.py +0 -0
  152. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/constants.py +0 -0
  153. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/context.py +0 -0
  154. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/deterministic.py +0 -0
  155. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/direct.py +0 -0
  156. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/finance_service_catalog.py +0 -0
  157. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/football_reports.py +0 -0
  158. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/github_app_auth.py +0 -0
  159. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/google_login.py +0 -0
  160. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/handlers/__init__.py +0 -0
  161. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/handlers/broker_handlers.py +0 -0
  162. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/handlers/chart_handlers.py +0 -0
  163. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/handlers/market_handlers.py +0 -0
  164. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/handlers/realty_handlers.py +0 -0
  165. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/handlers/sports_handlers.py +0 -0
  166. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/handlers/strategy_advice.py +0 -0
  167. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/helpers.py +0 -0
  168. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/hooks.py +0 -0
  169. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/i18n.py +0 -0
  170. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/intent.py +0 -0
  171. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/intent_router.py +0 -0
  172. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/intent_signals.py +0 -0
  173. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/lifecycle_hooks.py +0 -0
  174. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/local_tool_schemas.py +0 -0
  175. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/main.py +0 -0
  176. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/market_metadata.py +0 -0
  177. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/market_universe.py +0 -0
  178. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/message_processing.py +0 -0
  179. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/model_catalog.py +0 -0
  180. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/pdf_report.py +0 -0
  181. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/plan_mode.py +0 -0
  182. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/plotly_html.py +0 -0
  183. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/prediction_feedback.py +0 -0
  184. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/preflight.py +0 -0
  185. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/project_aria.py +0 -0
  186. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/prompt_assembly.py +0 -0
  187. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/prompts/__init__.py +0 -0
  188. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/prompts/coding.py +0 -0
  189. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/prompts/select.py +0 -0
  190. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/prompts/system_prompts.py +0 -0
  191. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/prompts/ui.py +0 -0
  192. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/provider_endpoints.py +0 -0
  193. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/provider_keys.py +0 -0
  194. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/providers/__init__.py +0 -0
  195. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/providers/base.py +0 -0
  196. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/providers/collaboration.py +0 -0
  197. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/providers/llm/__init__.py +0 -0
  198. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/providers/llm/offline_responses.py +0 -0
  199. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/providers/llm/ollama_stream.py +0 -0
  200. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/providers/llm/response_cache.py +0 -0
  201. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/providers/llm/sse_stream.py +0 -0
  202. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/providers/vertexai_stream.py +0 -0
  203. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/runtime_consumer.py +0 -0
  204. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/sandbox.py +0 -0
  205. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/session_export.py +0 -0
  206. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/session_jsonl.py +0 -0
  207. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/session_store.py +0 -0
  208. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/skills_catalog.py +0 -0
  209. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/todo_tracker.py +0 -0
  210. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/tool_executor.py +0 -0
  211. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/tool_registry.py +0 -0
  212. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/tool_scope.py +0 -0
  213. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/tools/__init__.py +0 -0
  214. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/tools/context.py +0 -0
  215. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/tools/file_tools.py +0 -0
  216. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/tools/notebook_tools.py +0 -0
  217. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/tools/system_tools.py +0 -0
  218. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/tools/write_tools.py +0 -0
  219. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/tradingview_bridge.py +0 -0
  220. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/turn_planning.py +0 -0
  221. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/utils/__init__.py +0 -0
  222. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/cli/utils/market_detect.py +0 -0
  223. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/daemon/README.md +0 -0
  224. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/vscode/README.md +0 -0
  225. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/apps/vscode/package.json +0 -0
  226. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/aria_daemon.py +0 -0
  227. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/aria_feishu_bot.py +0 -0
  228. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/aria_mcp_server.py +0 -0
  229. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/aria_relay_client.py +0 -0
  230. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/aria_relay_server.py +0 -0
  231. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/aria_telegram_bot.py +0 -0
  232. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/ariarc.py +0 -0
  233. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/artifacts.py +0 -0
  234. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/backtest_engine.py +0 -0
  235. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/backtest_report.py +0 -0
  236. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/brokers/__init__.py +0 -0
  237. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/brokers/automation.py +0 -0
  238. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/brokers/base.py +0 -0
  239. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/brokers/capabilities.py +0 -0
  240. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/brokers/cn/__init__.py +0 -0
  241. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/brokers/cn/easytrader_broker.py +0 -0
  242. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/brokers/cn/futu_broker.py +0 -0
  243. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/brokers/cn/longbridge_broker.py +0 -0
  244. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/brokers/cn/tiger_broker.py +0 -0
  245. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/brokers/cn/xtquant_broker.py +0 -0
  246. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/brokers/config.py +0 -0
  247. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/brokers/intl/__init__.py +0 -0
  248. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/brokers/intl/alpaca_broker.py +0 -0
  249. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/brokers/intl/ibkr_broker.py +0 -0
  250. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/brokers/intl/trading212_broker.py +0 -0
  251. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/brokers/intl/webull_broker.py +0 -0
  252. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/brokers/paper_broker.py +0 -0
  253. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/brokers/planning.py +0 -0
  254. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/brokers/registry.py +0 -0
  255. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/brokers/trading.py +0 -0
  256. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/canva_client.py +0 -0
  257. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/change_store.py +0 -0
  258. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/clients/__init__.py +0 -0
  259. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/clients/aliyun_data_client.py +0 -0
  260. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/clients/aria_relay_client.py +0 -0
  261. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/clients/canva_client.py +0 -0
  262. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/clients/figma_client.py +0 -0
  263. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/clients/football_data_client.py +0 -0
  264. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/clients/kling_video_client.py +0 -0
  265. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/clients/market_data_client.py +0 -0
  266. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/clients/openai_image_client.py +0 -0
  267. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/clients/runway_video_client.py +0 -0
  268. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/clients/warehouse_erp_client.py +0 -0
  269. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/cloud_memory.py +0 -0
  270. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/command_safety.py +0 -0
  271. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/computer_use_tools.py +0 -0
  272. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/dashboard_generator.py +0 -0
  273. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/data_analysis_tools.py +0 -0
  274. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/data_cleaner.py +0 -0
  275. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/data_service.py +0 -0
  276. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/datasources/__init__.py +0 -0
  277. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/datasources/base.py +0 -0
  278. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/datasources/router.py +0 -0
  279. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/datasources/sources/__init__.py +0 -0
  280. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/datasources/sources/akshare_source.py +0 -0
  281. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/datasources/sources/alpha_vantage_source.py +0 -0
  282. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/datasources/sources/edgar_source.py +0 -0
  283. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/datasources/sources/finnhub_source.py +0 -0
  284. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/datasources/sources/fred_source.py +0 -0
  285. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/datasources/sources/tushare_source.py +0 -0
  286. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/datasources/sources/web_scraper_source.py +0 -0
  287. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/datasources/sources/world_bank_source.py +0 -0
  288. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/datasources/sources/yfinance_source.py +0 -0
  289. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/demo_player.py +0 -0
  290. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/doctor.py +0 -0
  291. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/domain/__init__.py +0 -0
  292. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/domain/backtest_engine.py +0 -0
  293. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/domain/backtest_report.py +0 -0
  294. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/domain/finance_formulas.py +0 -0
  295. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/domain/portfolio_ledger.py +0 -0
  296. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/domain/strategy_vault.py +0 -0
  297. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/evals/__init__.py +0 -0
  298. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/evals/harness.py +0 -0
  299. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/evals/runner.py +0 -0
  300. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/external_agent_runner.py +0 -0
  301. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/figma_client.py +0 -0
  302. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/file_analysis_tools.py +0 -0
  303. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/finance_formulas.py +0 -0
  304. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/football_data_client.py +0 -0
  305. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/image_gen_tools.py +0 -0
  306. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/intent_classifier.py +0 -0
  307. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/kling_video_client.py +0 -0
  308. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/licensing.py +0 -0
  309. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/local_finance_tools.py +0 -0
  310. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/local_image_provider.py +0 -0
  311. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/local_llm_provider.py +0 -0
  312. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/macro_tools.py +0 -0
  313. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/markdown_pdf.py +0 -0
  314. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/market_data_client.py +0 -0
  315. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/mcp_client.py +0 -0
  316. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/memory_manager.py +0 -0
  317. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/model_capability.py +0 -0
  318. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/notification_tools.py +0 -0
  319. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/openai_image_client.py +0 -0
  320. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/__init__.py +0 -0
  321. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/adk_bridge/__init__.py +0 -0
  322. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/adk_bridge/code_review_tools.py +0 -0
  323. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/adk_bridge/market_tools.py +0 -0
  324. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_agents/__init__.py +0 -0
  325. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_agents/manifest.py +0 -0
  326. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_core/__init__.py +0 -0
  327. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_core/architecture.py +0 -0
  328. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_core/export.py +0 -0
  329. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_core/manifest.py +0 -0
  330. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_core/paths.py +0 -0
  331. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_core/secure_file.py +0 -0
  332. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_infra/__init__.py +0 -0
  333. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_infra/arthera.py +0 -0
  334. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_infra/doctor.py +0 -0
  335. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_infra/product.py +0 -0
  336. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_mcp/__init__.py +0 -0
  337. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_mcp/bridge.py +0 -0
  338. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_mcp/circuit.py +0 -0
  339. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_mcp/config.py +0 -0
  340. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_mcp/installer.py +0 -0
  341. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_mcp/server.py +0 -0
  342. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_mcp/tools.py +0 -0
  343. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_sdk/__init__.py +0 -0
  344. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_sdk/client.py +0 -0
  345. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_sdk/providers.py +0 -0
  346. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_sdk/streaming.py +0 -0
  347. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_sdk/types.py +0 -0
  348. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_services/__init__.py +0 -0
  349. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_services/cache.py +0 -0
  350. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_services/context.py +0 -0
  351. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_services/context_checkpoints.py +0 -0
  352. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_services/data.py +0 -0
  353. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_services/provider_health.py +0 -0
  354. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_services/references.py +0 -0
  355. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_services/registry.py +0 -0
  356. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_services/research_protocol.py +0 -0
  357. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_services/research_quality.py +0 -0
  358. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_services/settings.py +0 -0
  359. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_services/usage.py +0 -0
  360. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_skills/__init__.py +0 -0
  361. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_skills/catalog.py +0 -0
  362. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_skills/loader.py +0 -0
  363. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_skills/registry.py +0 -0
  364. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_tools/__init__.py +0 -0
  365. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_tools/financial/__init__.py +0 -0
  366. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_tools/financial/_paths.py +0 -0
  367. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_tools/financial/compliance.py +0 -0
  368. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_tools/financial/factors.py +0 -0
  369. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_tools/financial/risk_tools.py +0 -0
  370. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_tools/financial/strategy.py +0 -0
  371. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/aria_tools/registry.py +0 -0
  372. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/quant_engine/__init__.py +0 -0
  373. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/quant_engine/_namespace.py +0 -0
  374. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/quant_engine/backtest/__init__.py +0 -0
  375. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/quant_engine/backtest/core.py +0 -0
  376. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/quant_engine/backtest/engine.py +0 -0
  377. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/quant_engine/portfolio/__init__.py +0 -0
  378. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/quant_engine/portfolio/optimizer.py +0 -0
  379. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/quant_engine/sports/__init__.py +0 -0
  380. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/quant_engine/sports/calibrator.py +0 -0
  381. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/quant_engine/sports/dixon_coles.py +0 -0
  382. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/quant_engine/sports/elo.py +0 -0
  383. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/quant_engine/sports/form.py +0 -0
  384. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/quant_engine/sports/h2h.py +0 -0
  385. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/quant_engine/sports/ml_model.py +0 -0
  386. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/quant_engine/sports/predictor.py +0 -0
  387. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/quant_engine/sports/tracker.py +0 -0
  388. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/quant_engine/stochastic/__init__.py +0 -0
  389. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/quant_engine/stochastic/gbm_enhanced.py +0 -0
  390. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/quant_engine/stochastic/ito_calculus.py +0 -0
  391. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/quant_engine/stochastic/kelly_criterion.py +0 -0
  392. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/quant_engine/stochastic/monte_carlo_advanced.py +0 -0
  393. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/quant_engine/stochastic/options_pricing.py +0 -0
  394. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packages/quant_engine/stochastic/stochastic_processes.py +0 -0
  395. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packs/__init__.py +0 -0
  396. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packs/base.py +0 -0
  397. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packs/finance/__init__.py +0 -0
  398. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packs/logistics/__init__.py +0 -0
  399. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packs/payments/__init__.py +0 -0
  400. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packs/realty/__init__.py +0 -0
  401. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packs/registry.py +0 -0
  402. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/packs/rules.py +0 -0
  403. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/plan_utils.py +0 -0
  404. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/plugin_loader.py +0 -0
  405. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/portfolio_ledger.py +0 -0
  406. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/preview_server.py +0 -0
  407. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/privacy/__init__.py +0 -0
  408. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/privacy/feedback.py +0 -0
  409. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/project_review.py +0 -0
  410. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/project_review_api.py +0 -0
  411. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/project_review_server.py +0 -0
  412. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/project_tools.py +0 -0
  413. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/providers/__init__.py +0 -0
  414. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/providers/llm/__init__.py +0 -0
  415. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/providers/llm/anthropic.py +0 -0
  416. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/providers/llm/autoconfig.py +0 -0
  417. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/providers/llm/base.py +0 -0
  418. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/providers/llm/custom.py +0 -0
  419. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/providers/llm/ollama.py +0 -0
  420. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/providers/llm/openai_compat.py +0 -0
  421. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/providers/llm/registry.py +0 -0
  422. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/providers/local_image_provider.py +0 -0
  423. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/providers/local_llm_provider.py +0 -0
  424. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/realty_data_tools.py +0 -0
  425. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/report_exporters.py +0 -0
  426. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/report_generator.py +0 -0
  427. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/runtime/__init__.py +0 -0
  428. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/runtime/acceptance.py +0 -0
  429. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/runtime/agent_loop.py +0 -0
  430. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/runtime/approval.py +0 -0
  431. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/runtime/budget.py +0 -0
  432. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/runtime/checkpoints.py +0 -0
  433. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/runtime/crash_report.py +0 -0
  434. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/runtime/events.py +0 -0
  435. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/runtime/gateway.py +0 -0
  436. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/runtime/lsp.py +0 -0
  437. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/runtime/orchestrator.py +0 -0
  438. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/runtime/repo_map.py +0 -0
  439. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/runtime/run_state.py +0 -0
  440. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/runtime/run_store.py +0 -0
  441. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/runtime/self_healing.py +0 -0
  442. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/runtime/subagent.py +0 -0
  443. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/runtime/task_ledger.py +0 -0
  444. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/runtime/task_orchestrator.py +0 -0
  445. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/runtime/tool_executor.py +0 -0
  446. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/runtime/tool_policy.py +0 -0
  447. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/runtime/worktrees.py +0 -0
  448. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/runway_video_client.py +0 -0
  449. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/safety/__init__.py +0 -0
  450. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/safety/permissions.py +0 -0
  451. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/safety/service.py +0 -0
  452. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/setup_wizard.py +0 -0
  453. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/spreadsheet_tools.py +0 -0
  454. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/strategy_vault.py +0 -0
  455. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/tools/__init__.py +0 -0
  456. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/tools/artifact_tools.py +0 -0
  457. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/tools/broker_tools.py +0 -0
  458. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/tools/build_quant_engine.py +0 -0
  459. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/tools/code_audit_tools.py +0 -0
  460. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/tools/computer_use_tools.py +0 -0
  461. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/tools/data_analysis_tools.py +0 -0
  462. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/tools/enterprise_finance_tools.py +0 -0
  463. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/tools/extended_tools.py +0 -0
  464. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/tools/file_analysis_tools.py +0 -0
  465. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/tools/image_gen_tools.py +0 -0
  466. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/tools/logistics_carriers.py +0 -0
  467. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/tools/logistics_inventory.py +0 -0
  468. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/tools/logistics_io.py +0 -0
  469. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/tools/logistics_tenancy.py +0 -0
  470. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/tools/logistics_tools.py +0 -0
  471. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/tools/macro_tools.py +0 -0
  472. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/tools/notification_tools.py +0 -0
  473. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/tools/project_tools.py +0 -0
  474. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/tools/realty_data_tools.py +0 -0
  475. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/tools/spreadsheet_tools.py +0 -0
  476. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/tools/stripe_tools.py +0 -0
  477. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/ui/__init__.py +0 -0
  478. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/ui/completer.py +0 -0
  479. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/ui/console.py +0 -0
  480. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/ui/image_render.py +0 -0
  481. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/ui/input_box.py +0 -0
  482. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/ui/picker.py +0 -0
  483. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/ui/render/__init__.py +0 -0
  484. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/ui/render/finance.py +0 -0
  485. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/ui/render/market.py +0 -0
  486. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/ui/render/output.py +0 -0
  487. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/ui/render/responsive.py +0 -0
  488. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/ui/render/team.py +0 -0
  489. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/ui/startup_dashboard.py +0 -0
  490. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/utils/vscode_uri.py +0 -0
  491. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/video_analysis.py +0 -0
  492. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/video_editor.py +0 -0
  493. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/workspace/__init__.py +0 -0
  494. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/workspace/files.py +0 -0
  495. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/workspace/verify.py +0 -0
  496. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/workspace_changes.py +0 -0
  497. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/workspace_context.py +0 -0
  498. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/workspace_service.py +0 -0
  499. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code/workspace_tools.py +0 -0
  500. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code.egg-info/dependency_links.txt +0 -0
  501. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code.egg-info/requires.txt +0 -0
  502. {aria_code-0.67.0 → aria_code-0.69.0}/src/aria_code.egg-info/top_level.txt +0 -0
  503. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_adk_market_tools.py +0 -0
  504. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_agent_team_fallback.py +0 -0
  505. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_analyze_file_tool.py +0 -0
  506. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_architecture_ledger_is_true.py +0 -0
  507. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_aria_cli_core.py +0 -0
  508. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_aria_mcp_server.py +0 -0
  509. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_aria_sdk.py +0 -0
  510. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_artifact_publishing.py +0 -0
  511. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_artifacts_and_reports.py +0 -0
  512. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_ashare_prediction_cmds.py +0 -0
  513. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_backtest_cmds.py +0 -0
  514. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_backtest_engine.py +0 -0
  515. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_backtest_report.py +0 -0
  516. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_binary_bundles_runtime_imports.py +0 -0
  517. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_broken_akshare_is_optional.py +0 -0
  518. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_broker_automation.py +0 -0
  519. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_broker_chat_confirm_gate.py +0 -0
  520. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_broker_planning.py +0 -0
  521. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_broker_safety.py +0 -0
  522. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_broker_tools.py +0 -0
  523. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_budget.py +0 -0
  524. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_business_workflow_cmds.py +0 -0
  525. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_canva_client.py +0 -0
  526. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_canvas_cmds.py +0 -0
  527. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_card_approvals.py +0 -0
  528. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_channel_intake.py +0 -0
  529. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_channels.py +0 -0
  530. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_chart_handlers.py +0 -0
  531. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_ci_security_workflow.py +0 -0
  532. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_cli_app_split.py +0 -0
  533. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_cli_bootstrap.py +0 -0
  534. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_cli_config_store.py +0 -0
  535. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_cli_lifecycle_hooks.py +0 -0
  536. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_cli_runtime_consumer.py +0 -0
  537. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_cli_tool_executor_module.py +0 -0
  538. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_cloud_memory.py +0 -0
  539. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_code_audit_tools.py +0 -0
  540. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_code_review_agent.py +0 -0
  541. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_codegen_output.py +0 -0
  542. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_coder_tester_self_healing.py +0 -0
  543. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_coder_tool_safety.py +0 -0
  544. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_collaboration.py +0 -0
  545. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_command_loggers.py +0 -0
  546. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_command_safety.py +0 -0
  547. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_completions_builder.py +0 -0
  548. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_config_paths.py +0 -0
  549. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_configured_provider.py +0 -0
  550. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_container_entrypoint.py +0 -0
  551. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_container_entrypoints.py +0 -0
  552. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_context_checkpoints.py +0 -0
  553. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_context_references.py +0 -0
  554. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_context_service.py +0 -0
  555. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_conversation_core.py +0 -0
  556. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_crash_report.py +0 -0
  557. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_credential_file_permissions.py +0 -0
  558. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_custom_providers.py +0 -0
  559. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_daemon_gateway_config.py +0 -0
  560. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_dashboard_generator.py +0 -0
  561. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_data_service.py +0 -0
  562. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_data_service_imports.py +0 -0
  563. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_datasource_routing.py +0 -0
  564. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_deep_analysis.py +0 -0
  565. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_degrades_without_quant_engine.py +0 -0
  566. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_dispatcher_pins_match_the_release.py +0 -0
  567. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_doctor.py +0 -0
  568. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_doctor_describes_the_current_install.py +0 -0
  569. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_doctor_npm_scope.py +0 -0
  570. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_engine_boundary.py +0 -0
  571. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_enterprise_tool_honesty.py +0 -0
  572. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_env_switch_docs.py +0 -0
  573. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_evals_harness.py +0 -0
  574. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_extended_tools.py +0 -0
  575. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_feishu_swarm_config.py +0 -0
  576. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_finance_renderers.py +0 -0
  577. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_finance_service_catalog.py +0 -0
  578. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_first_run_works.py +0 -0
  579. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_football_agent.py +0 -0
  580. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_football_prediction_output.py +0 -0
  581. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_google_cloud_routing.py +0 -0
  582. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_google_login.py +0 -0
  583. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_google_search_provider.py +0 -0
  584. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_headless_is_agentic.py +0 -0
  585. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_image_gen_tools.py +0 -0
  586. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_image_inputs.py +0 -0
  587. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_import_graph_budget.py +0 -0
  588. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_intent_router.py +0 -0
  589. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_intent_signals.py +0 -0
  590. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_kling_video_client.py +0 -0
  591. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_lazy_rebind.py +0 -0
  592. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_legacy_module_imports.py +0 -0
  593. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_license_consistency.py +0 -0
  594. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_licensing.py +0 -0
  595. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_local_image_provider.py +0 -0
  596. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_logistics_3pl.py +0 -0
  597. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_logistics_and_finance_agents.py +0 -0
  598. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_lsp.py +0 -0
  599. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_markdown_pdf.py +0 -0
  600. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_market_data_client.py +0 -0
  601. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_market_history_inheritance.py +0 -0
  602. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_market_history_tool.py +0 -0
  603. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_market_symbol_extraction.py +0 -0
  604. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_market_universe.py +0 -0
  605. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_mcp_circuit.py +0 -0
  606. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_mcp_client.py +0 -0
  607. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_model_capability_registry.py +0 -0
  608. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_model_choice_is_the_users.py +0 -0
  609. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_model_selection_state.py +0 -0
  610. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_native_binary_entrypoints.py +0 -0
  611. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_new_modules.py +0 -0
  612. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_no_hardcoded_developer_paths.py +0 -0
  613. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_no_uncommitted_imports.py +0 -0
  614. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_ollama_stream_imports.py +0 -0
  615. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_ollama_stream_tools.py +0 -0
  616. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_openai_image_client.py +0 -0
  617. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_operations_suite.py +0 -0
  618. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_output_rendering.py +0 -0
  619. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_packages_facade.py +0 -0
  620. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_packaging_constraints.py +0 -0
  621. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_packaging_manifest.py +0 -0
  622. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_packs_domains.py +0 -0
  623. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_pdf_report.py +0 -0
  624. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_pick_best_installed_model.py +0 -0
  625. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_plan_mode.py +0 -0
  626. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_platform_package_assembly.py +0 -0
  627. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_platform_packages.py +0 -0
  628. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_plotly_html_output.py +0 -0
  629. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_portfolio_ledger.py +0 -0
  630. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_post_turn_context_decision.py +0 -0
  631. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_preflight.py +0 -0
  632. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_preview_server.py +0 -0
  633. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_privacy_feedback.py +0 -0
  634. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_project_aria.py +0 -0
  635. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_project_review.py +0 -0
  636. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_project_review_api.py +0 -0
  637. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_prompt_assembly.py +0 -0
  638. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_prompt_selection.py +0 -0
  639. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_provider_autoconfig.py +0 -0
  640. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_provider_error_messages.py +0 -0
  641. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_provider_integration.py +0 -0
  642. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_provider_registry.py +0 -0
  643. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_public_service_status.py +0 -0
  644. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_quant_engine_namespace.py +0 -0
  645. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_rebind_contract.py +0 -0
  646. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_rebind_namespace_contract.py +0 -0
  647. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_relay_event_verification.py +0 -0
  648. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_relay_sends_for_clients.py +0 -0
  649. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_release_chain.py +0 -0
  650. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_release_commit_identity.py +0 -0
  651. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_release_push_is_atomic.py +0 -0
  652. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_release_reaches_the_registries.py +0 -0
  653. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_release_verification_waits.py +0 -0
  654. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_release_workflow_permissions.py +0 -0
  655. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_report_charts.py +0 -0
  656. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_report_generator.py +0 -0
  657. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_research_protocol.py +0 -0
  658. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_research_quality.py +0 -0
  659. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_responsive_rendering.py +0 -0
  660. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_root_module_budget.py +0 -0
  661. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_rsi_without_pandas_ta.py +0 -0
  662. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_runtime_acceptance.py +0 -0
  663. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_runtime_agent_loop.py +0 -0
  664. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_runtime_approval.py +0 -0
  665. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_runtime_bridge.py +0 -0
  666. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_runtime_checkpoints.py +0 -0
  667. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_runtime_gateway.py +0 -0
  668. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_runtime_repo_map.py +0 -0
  669. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_runtime_run_store.py +0 -0
  670. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_runtime_tool_executor.py +0 -0
  671. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_runtime_worktrees.py +0 -0
  672. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_runway_video_client.py +0 -0
  673. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_safety_permissions.py +0 -0
  674. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_safety_service.py +0 -0
  675. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_safety_service_adoption.py +0 -0
  676. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_service_diagnostics_security.py +0 -0
  677. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_session_search.py +0 -0
  678. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_settings_service.py +0 -0
  679. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_shipper_digest.py +0 -0
  680. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_single_import_root.py +0 -0
  681. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_skill_agent_binding.py +0 -0
  682. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_skill_catalog.py +0 -0
  683. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_skill_loader.py +0 -0
  684. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_spreadsheet_tools.py +0 -0
  685. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_sse_stream_contract.py +0 -0
  686. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_streaming_pipeline.py +0 -0
  687. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_stripe_agent.py +0 -0
  688. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_subagent.py +0 -0
  689. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_supervisor_routing.py +0 -0
  690. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_system_prompts.py +0 -0
  691. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_system_tools_output.py +0 -0
  692. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_task_orchestrator.py +0 -0
  693. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_team_synthesis.py +0 -0
  694. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_tool_policy.py +0 -0
  695. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_tool_scope.py +0 -0
  696. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_trading_service.py +0 -0
  697. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_tradingview_bridge.py +0 -0
  698. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_turn_planning.py +0 -0
  699. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_ui_completer_references.py +0 -0
  700. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_ui_console_theme.py +0 -0
  701. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_ui_input_box.py +0 -0
  702. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_verification_hint.py +0 -0
  703. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_verification_policy.py +0 -0
  704. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_version_consistency.py +0 -0
  705. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_version_counter.py +0 -0
  706. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_video_analysis.py +0 -0
  707. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_video_editor.py +0 -0
  708. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_vscode_mcp.py +0 -0
  709. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_warehouse_agents.py +0 -0
  710. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_warehouse_cli_registration.py +0 -0
  711. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_warehouse_erp_client.py +0 -0
  712. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_warehouse_workflow.py +0 -0
  713. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_wheel_is_installable.py +0 -0
  714. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_workspace_changes.py +0 -0
  715. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_workspace_context.py +0 -0
  716. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_workspace_files.py +0 -0
  717. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_workspace_scope.py +0 -0
  718. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_workspace_service.py +0 -0
  719. {aria_code-0.67.0 → aria_code-0.69.0}/tests/test_workspace_verify.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aria-code
3
- Version: 0.67.0
3
+ Version: 0.69.0
4
4
  Summary: AI coding and research workspace with optional finance and connected-domain tools
5
5
  License: Apache-2.0
6
6
  Project-URL: Homepage, https://github.com/artheras/aria-code
@@ -190,17 +190,17 @@ Install the standalone CLI on macOS or Linux without Python, Node.js, or npm:
190
190
 
191
191
  ```bash
192
192
  curl -fsSL https://raw.githubusercontent.com/artheras/aria-code/main/scripts/install.sh | sh
193
- ~/.local/bin/aria-code --help
193
+ ~/.local/bin/aria
194
194
  ```
195
195
 
196
196
  On Windows x64, run this in PowerShell:
197
197
 
198
198
  ```powershell
199
199
  irm https://raw.githubusercontent.com/artheras/aria-code/main/scripts/install.ps1 | iex
200
- aria-code --help
200
+ aria
201
201
  ```
202
202
 
203
- The installer downloads the binary for your OS from the latest [GitHub release](https://github.com/artheras/aria-code/releases/latest), checks its SHA-256 digest, and installs it in your user account. Open a new terminal to use `aria-code` by name on macOS or Linux. Set `ARIA_CODE_VERSION=v0.55.0` to pin a release.
203
+ The installer downloads the binary for your OS from the latest [GitHub release](https://github.com/artheras/aria-code/releases/latest), checks its SHA-256 digest, and installs it in your user account. Open a new terminal to start the interactive CLI with `aria`, `aria code`, or `aria-code`. Set `ARIA_CODE_VERSION=v0.55.0` to pin a release.
204
204
 
205
205
  Alternative package-manager installs: `npm install -g @artheras/aria-code` (requires npm) or `python3 -m pip install --upgrade aria-code` (requires Python 3.10+). For development from source, see [CONTRIBUTING.md](CONTRIBUTING.md).
206
206
 
@@ -34,17 +34,17 @@ Install the standalone CLI on macOS or Linux without Python, Node.js, or npm:
34
34
 
35
35
  ```bash
36
36
  curl -fsSL https://raw.githubusercontent.com/artheras/aria-code/main/scripts/install.sh | sh
37
- ~/.local/bin/aria-code --help
37
+ ~/.local/bin/aria
38
38
  ```
39
39
 
40
40
  On Windows x64, run this in PowerShell:
41
41
 
42
42
  ```powershell
43
43
  irm https://raw.githubusercontent.com/artheras/aria-code/main/scripts/install.ps1 | iex
44
- aria-code --help
44
+ aria
45
45
  ```
46
46
 
47
- The installer downloads the binary for your OS from the latest [GitHub release](https://github.com/artheras/aria-code/releases/latest), checks its SHA-256 digest, and installs it in your user account. Open a new terminal to use `aria-code` by name on macOS or Linux. Set `ARIA_CODE_VERSION=v0.55.0` to pin a release.
47
+ The installer downloads the binary for your OS from the latest [GitHub release](https://github.com/artheras/aria-code/releases/latest), checks its SHA-256 digest, and installs it in your user account. Open a new terminal to start the interactive CLI with `aria`, `aria code`, or `aria-code`. Set `ARIA_CODE_VERSION=v0.55.0` to pin a release.
48
48
 
49
49
  Alternative package-manager installs: `npm install -g @artheras/aria-code` (requires npm) or `python3 -m pip install --upgrade aria-code` (requires Python 3.10+). For development from source, see [CONTRIBUTING.md](CONTRIBUTING.md).
50
50
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "aria-code"
7
- version = "0.67.0"
7
+ version = "0.69.0"
8
8
  description = "AI coding and research workspace with optional finance and connected-domain tools"
9
9
  readme = "README.md"
10
10
  license = { text = "Apache-2.0" }
@@ -215,6 +215,7 @@ all = [
215
215
 
216
216
  [project.scripts]
217
217
  aria-code = "aria_code.apps.cli.main:main"
218
+ aria = "aria_code.apps.cli.main:main"
218
219
  aria-code-mcp = "aria_code.aria_mcp_server:main"
219
220
 
220
221
  [project.urls]
@@ -17,4 +17,4 @@ from __future__ import annotations
17
17
 
18
18
  __all__ = ["__version__"]
19
19
 
20
- __version__ = "0.67.0"
20
+ __version__ = "0.69.0"
@@ -4,6 +4,8 @@ from __future__ import annotations
4
4
 
5
5
  import os
6
6
  import socket
7
+ import ssl
8
+ import sys
7
9
  import urllib.parse
8
10
  from pathlib import Path
9
11
 
@@ -82,11 +84,30 @@ def use_system_trust_store() -> bool:
82
84
  return False
83
85
 
84
86
 
87
+ def use_macos_ca_bundle() -> bool:
88
+ """Use macOS's verified CA bundle when Python has no default CA file.
89
+
90
+ Some standalone Python runtimes have no configured OpenSSL CA path, while
91
+ curl and the system browser can verify the same HTTPS service. This keeps
92
+ verification enabled and respects an explicit SSL_CERT_FILE override.
93
+ """
94
+ if sys.platform != "darwin" or os.environ.get("SSL_CERT_FILE"):
95
+ return False
96
+ if ssl.get_default_verify_paths().cafile:
97
+ return False
98
+ bundle = Path("/etc/ssl/cert.pem")
99
+ if not bundle.is_file():
100
+ return False
101
+ os.environ["SSL_CERT_FILE"] = str(bundle)
102
+ return True
103
+
104
+
85
105
  def initialize_cli_environment() -> None:
86
106
  os.environ.setdefault("TQDM_DISABLE", "1")
87
107
  load_aria_env()
88
108
  disable_broken_proxy()
89
- use_system_trust_store()
109
+ if not use_system_trust_store():
110
+ use_macos_ca_bundle()
90
111
 
91
112
 
92
113
  # The model used when nothing has been configured yet.
@@ -0,0 +1,34 @@
1
+ """CLI command adapters, imported only when used.
2
+
3
+ Importing a lightweight command such as /architecture must not initialize the
4
+ finance stack (pandas/numpy) through this package's __init__.
5
+ """
6
+
7
+ from importlib import import_module
8
+
9
+ __all__ = [
10
+ "BrokerCommandsMixin",
11
+ "BacktestCommandsMixin",
12
+ "WorkspaceCommandsMixin",
13
+ "ModelCommandsMixin",
14
+ "MarketCommandsMixin",
15
+ "PortfolioCommandsMixin",
16
+ ]
17
+
18
+ _MIXIN_MODULES = {
19
+ "BrokerCommandsMixin": "broker_cmds",
20
+ "BacktestCommandsMixin": "backtest_cmds",
21
+ "WorkspaceCommandsMixin": "workspace_cmds",
22
+ "ModelCommandsMixin": "model_cmds",
23
+ "MarketCommandsMixin": "market_cmds",
24
+ "PortfolioCommandsMixin": "portfolio_cmds",
25
+ }
26
+
27
+
28
+ def __getattr__(name: str):
29
+ module_name = _MIXIN_MODULES.get(name)
30
+ if module_name is None:
31
+ raise AttributeError(name)
32
+ value = getattr(import_module(f".{module_name}", __name__), name)
33
+ globals()[name] = value
34
+ return value
@@ -5,6 +5,8 @@ Extracted from aria_cli.py. Module globals imported lazily inside method bodies.
5
5
 
6
6
  from __future__ import annotations
7
7
 
8
+ from typing import Any
9
+
8
10
  from ._ui import has_rich, print_error
9
11
 
10
12
 
@@ -116,7 +118,6 @@ def _tool_run_command(*args, **kwargs):
116
118
  def _get__HAS_VAULT():
117
119
  from aria_cli import _HAS_VAULT as val
118
120
  return val
119
- import pandas as pd
120
121
  def _get__HAS_MDC():
121
122
  from .._optional import HAS_MDC as val
122
123
  return val
@@ -2521,7 +2522,7 @@ class BacktestCommandsMixin:
2521
2522
  self.context.console.print(f" [dim]{traceback.format_exc()}[/dim]") if self.context.has_rich else print(traceback.format_exc())
2522
2523
 
2523
2524
 
2524
- def _print_sparkline(label: str, nav: "pd.Series", color: str = "white", width: int = 40):
2525
+ def _print_sparkline(label: str, nav: Any, color: str = "white", width: int = 40):
2525
2526
  """打印 ASCII sparkline。"""
2526
2527
  try:
2527
2528
  import sys
@@ -13,6 +13,26 @@ import time
13
13
  import shlex
14
14
  from typing import Dict, Any, Optional
15
15
 
16
+
17
+ def _health_targets(config: dict, api_url: str) -> tuple[list[tuple[str, str, str]], str]:
18
+ """Probe only the service used by the selected chat route."""
19
+ from aria_code.apps.cli.providers.chat_routing import model_provider
20
+
21
+ model = str(config.get("model") or "")
22
+ provider = model_provider(model)
23
+ cloud_model = bool(provider and provider not in {"ollama", "lmstudio"}) or model.lower().startswith("gemini")
24
+ if config.get("backend_chat"):
25
+ label = "Google Cloud · Arthera API" if cloud_model else "Arthera API"
26
+ return [(label, api_url, "/health")], ""
27
+ if cloud_model:
28
+ return [], f"{model} · {provider or 'google'} configured (not probed)"
29
+ local_provider = str(config.get("local_provider") or "ollama").lower()
30
+ if local_provider == "ollama":
31
+ return [("Ollama", config.get("ollama_url", "http://localhost:11434"), "/api/tags")], ""
32
+ if local_provider in {"local", "local-server", "server"}:
33
+ return [("Local Server", config.get("local_url", "http://localhost:8001"), "/health")], ""
34
+ return [], f"{local_provider} configured (not probed)"
35
+
16
36
  def _get_ARIA_TOOLS():
17
37
  # Owned by apps/cli/tool_registry.py; aria_cli fills it in place.
18
38
  from ..tool_registry import ARIA_TOOLS as val
@@ -70,7 +90,15 @@ class DiagnosticCommandsMixin:
70
90
 
71
91
  _lp = t._last_provider or ""
72
92
  _badge = next((v.get("badge", "") for v in _get_MODELS().values() if v["id"] == model_id), "")
73
- if _lp == "ollama":
93
+ from aria_code.apps.cli.providers.chat_routing import model_provider
94
+ selected_provider = model_provider(model_id)
95
+ if cfg.get("backend_chat"):
96
+ runtime = "cloud (Arthera API)"
97
+ elif selected_provider and selected_provider not in {"ollama", "lmstudio"}:
98
+ runtime = f"cloud ({selected_provider})"
99
+ elif model_id.lower().startswith("gemini"):
100
+ runtime = "cloud (google)"
101
+ elif _lp == "ollama":
74
102
  runtime = "local (Ollama)"
75
103
  elif _lp in ("deepseek", "openai", "anthropic", "groq", "dashscope", "together"):
76
104
  runtime = f"cloud ({_lp})"
@@ -202,15 +230,17 @@ class DiagnosticCommandsMixin:
202
230
  import aiohttp
203
231
  if self.context.has_rich:
204
232
  self.context.console.print()
205
- urls = [
206
- ("AWS Backend", self.terminal.api_url, "/health"),
207
- ("Local Server", self.terminal.config.get("local_url", "http://localhost:8001"), "/health"),
208
- ("Ollama", self.terminal.config.get("ollama_url", "http://localhost:11434"), "/api/tags"),
209
- ]
233
+ urls, message = _health_targets(self.terminal.config, self.terminal.api_url)
234
+ if message:
235
+ if self.context.has_rich:
236
+ self.context.console.print(f" [cyan]●[/cyan] {message}")
237
+ else:
238
+ print(f" ? {message}")
210
239
  for label, url, path in urls:
211
240
  try:
212
241
  async with aiohttp.ClientSession() as session:
213
- async with session.get(f"{url}{path}", timeout=aiohttp.ClientTimeout(total=5)) as resp:
242
+ async with session.get(f"{str(url).rstrip('/')}{path}", timeout=aiohttp.ClientTimeout(total=5)) as resp:
243
+ resp.raise_for_status()
214
244
  data = await resp.json()
215
245
  if label == "Ollama":
216
246
  models = [m.get("name", "?") for m in data.get("models", [])[:3]]
@@ -101,15 +101,18 @@ def is_placeholder_response(
101
101
  token_count: int,
102
102
  stub_detector: Optional[Callable[[str], bool]] = None,
103
103
  ) -> bool:
104
- """A 'successful' result that is actually empty / canned / a backend stub."""
104
+ """Detect empty or explicitly recognized stubs, never infer from length.
105
+
106
+ ``token_count`` remains in the signature for existing callers, but an SSE
107
+ final event can contain a valid answer without any streamed token events.
108
+ """
105
109
  resp = response or ""
106
- if len(resp) < 20:
110
+ if not resp.strip():
107
111
  return True
108
112
  if stub_detector is not None and stub_detector(resp):
109
113
  return True
110
- # Long "response" with ~no streamed tokens ⇒ canned backend reply, not a generation.
111
- if token_count <= 2 and len(resp) > 80:
112
- return True
114
+ # A short answer ("OK") or a long answer in one SSE final event is valid.
115
+ # Token counts describe transport chunking, not answer quality.
113
116
  return False
114
117
 
115
118
 
@@ -145,8 +145,8 @@ async def run_with_fallback(
145
145
  instead of being discarded and re-run:
146
146
 
147
147
  • ``skip`` / ``ollama`` → run local Ollama directly (no cloud round)
148
- • ``cloud`` → run cloud; if it fails or returns a placeholder
149
- (empty / canned / backend stub), fall back to
148
+ • ``cloud`` → run cloud; if it fails or returns an empty answer,
149
+ fall back to
150
150
  local Ollama
151
151
 
152
152
  ``run_cloud`` / ``run_ollama`` are async ``(on_token) -> result dict``
@@ -156,8 +156,8 @@ async def run_with_fallback(
156
156
  if route in ("skip", "ollama", "configured"):
157
157
  return await run_ollama(on_token)
158
158
 
159
- # route == "cloud": count streamed tokens so a long-but-unstreamed canned
160
- # backend reply is recognised as a placeholder, not a real generation.
159
+ # Route == "cloud": track streamed chunks for telemetry only. A response
160
+ # delivered in one final event is still a valid answer.
161
161
  _tokens = [0]
162
162
 
163
163
  def _counting_on_token(tok: str) -> None:
@@ -34,12 +34,18 @@ def _quote_time_metadata(quote: dict) -> dict[str, str]:
34
34
  return {"retrieved_at": retrieved_at, "time_quality": "retrieval_time_only"}
35
35
 
36
36
  # ── Optional: market data client ────────────────────────────────────────────
37
- try:
38
- from market_data_client import get_mdc as _get_mdc # noqa: E402
39
- _HAS_MDC = True
40
- except ImportError:
41
- _HAS_MDC = False
42
- _get_mdc = None # type: ignore[assignment]
37
+ # Loading this client imports pandas, NumPy, and requests. The coding REPL does
38
+ # not need any of them until a market tool is actually invoked.
39
+ from importlib.util import find_spec
40
+
41
+ _HAS_MDC = find_spec("market_data_client") is not None
42
+
43
+
44
+ def _get_mdc():
45
+ if not _HAS_MDC:
46
+ return None
47
+ from market_data_client import get_mdc
48
+ return get_mdc()
43
49
 
44
50
  # ── Unified data service (MDC primary + DataRouter fallback) ──────────────────
45
51
  # DataService bridges MarketDataClient with the configured DataRouter, which
@@ -1,6 +1,6 @@
1
- """Background npm-registry version checker for Aria Code.
1
+ """Background version checker for the active Aria Code install channel.
2
2
 
3
- Checks registry.npmjs.org once per 24 hours in a daemon thread so startup is
3
+ Checks GitHub, scoped npm, or PyPI once per 24 hours in a daemon thread so startup is
4
4
  never blocked. The result is cached to ~/.arthera/update_check.json and read
5
5
  at banner render time.
6
6
 
@@ -17,13 +17,16 @@ Public API
17
17
  from __future__ import annotations
18
18
 
19
19
  import json
20
+ import sys
20
21
  import threading
21
22
  import time
22
23
  from pathlib import Path
23
24
  from typing import Optional
24
25
  from aria_code.packages.aria_core.paths import aria_home
25
26
 
26
- _NPM_URL = "https://registry.npmjs.org/aria-code/latest"
27
+ _RELEASE_URL = "https://api.github.com/repos/artheras/aria-code/releases/latest"
28
+ _NPM_URL = "https://registry.npmjs.org/@artheras%2Faria-code/latest"
29
+ _PYPI_URL = "https://pypi.org/pypi/aria-code/json"
27
30
  _CACHE_FILE = aria_home() / "update_check.json"
28
31
  _CACHE_TTL_S = 86_400 # 24 hours
29
32
  _FETCH_TIMEOUT = 4 # seconds — fail cleanly on slow networks
@@ -34,19 +37,16 @@ _lock = threading.Lock()
34
37
 
35
38
  # ── Version comparison ────────────────────────────────────────────────────────
36
39
 
37
- def _parse(v: str) -> tuple[int, ...]:
38
- """'4.1.2' → (4, 1, 2). Tolerates 'v' prefix and non-numeric suffixes."""
39
- parts: list[int] = []
40
- for seg in v.lstrip("v").split("."):
41
- try:
42
- parts.append(int(seg))
43
- except ValueError:
44
- break
45
- return tuple(parts) or (0,)
40
+ def _parse(v: str) -> tuple[int, int, int] | None:
41
+ """Accept only stable project release tags, never another package's version."""
42
+ import re
43
+ match = re.fullmatch(r"v?(\d+)\.(\d+)\.(\d+)", v.strip())
44
+ return tuple(map(int, match.groups())) if match else None
46
45
 
47
46
 
48
47
  def _newer(latest: str, current: str) -> bool:
49
- return _parse(latest) > _parse(current)
48
+ parsed_latest, parsed_current = _parse(latest), _parse(current)
49
+ return parsed_latest is not None and parsed_current is not None and parsed_latest > parsed_current
50
50
 
51
51
 
52
52
  # ── Cache helpers ─────────────────────────────────────────────────────────────
@@ -68,8 +68,28 @@ def _write_cache(data: dict) -> None:
68
68
 
69
69
  # ── Notice builder ────────────────────────────────────────────────────────────
70
70
 
71
- def _build_notice(latest: str, current: str, lang: str) -> str:
72
- cmd = "npm update -g @artheras/aria-code"
71
+ def _install_channel() -> str:
72
+ """Infer which update channel owns the running executable."""
73
+ executable = str(getattr(sys, "executable", "") or "").lower()
74
+ if "node_modules" in executable and "aria" in executable:
75
+ return "npm"
76
+ return "native" if getattr(sys, "frozen", False) else "pip"
77
+
78
+
79
+ def _update_command(channel: str) -> str:
80
+ if channel == "npm":
81
+ return "npm install -g @artheras/aria-code@latest"
82
+ if channel == "pip":
83
+ return "python3 -m pip install --upgrade aria-code"
84
+ if sys.platform == "win32":
85
+ return "irm https://raw.githubusercontent.com/artheras/aria-code/main/scripts/install.ps1 | iex"
86
+ return "curl -fsSL https://raw.githubusercontent.com/artheras/aria-code/main/scripts/install.sh | sh"
87
+
88
+
89
+ def _build_notice(latest: str, current: str, lang: str, channel: str = "native") -> str:
90
+ latest = latest.removeprefix("v")
91
+ current = current.removeprefix("v")
92
+ cmd = _update_command(channel)
73
93
  if lang == "zh":
74
94
  return (
75
95
  f"[yellow]⬆ 新版本可用[/yellow] "
@@ -85,48 +105,61 @@ def _build_notice(latest: str, current: str, lang: str) -> str:
85
105
 
86
106
  # ── Background worker ─────────────────────────────────────────────────────────
87
107
 
88
- def _worker(current: str, lang: str) -> None:
108
+ def _worker(current: str, lang: str, channel: str = "native") -> None:
89
109
  global _notice
110
+ sources = {
111
+ "native": (_RELEASE_URL, "tag_name"),
112
+ "npm": (_NPM_URL, "version"),
113
+ "pip": (_PYPI_URL, "info"),
114
+ }
115
+ source_url, version_field = sources[channel]
90
116
 
91
117
  # 1. Serve from cache if still fresh
92
118
  cache = _read_cache()
93
119
  now = time.time()
94
- if cache.get("checked_at", 0) + _CACHE_TTL_S > now:
120
+ if cache.get("source") == source_url and cache.get("checked_at", 0) + _CACHE_TTL_S > now:
95
121
  latest = cache.get("latest", "")
96
122
  if latest and _newer(latest, current):
97
123
  with _lock:
98
- _notice = _build_notice(latest, current, lang)
124
+ _notice = _build_notice(latest, current, lang, channel)
99
125
  return
100
126
 
101
- # 2. Fetch npm registry
127
+ # 2. Fetch metadata for this installation channel, never a similarly named package.
102
128
  try:
103
129
  import urllib.request
104
130
  req = urllib.request.Request(
105
- _NPM_URL,
106
- headers={"Accept": "application/json"},
131
+ source_url,
132
+ headers={"Accept": "application/vnd.github+json", "User-Agent": "aria-code-update-check"},
107
133
  )
108
134
  with urllib.request.urlopen(req, timeout=_FETCH_TIMEOUT) as resp:
109
135
  data = json.loads(resp.read())
110
- latest = data["version"]
136
+ latest = data[version_field]
137
+ if channel == "pip":
138
+ latest = latest["version"]
111
139
  except Exception:
112
140
  return # network error → silently skip, try again next day
113
141
 
114
142
  # 3. Persist to cache
115
- _write_cache({"checked_at": now, "latest": latest})
143
+ if _parse(latest) is None:
144
+ return
145
+ _write_cache({"source": source_url, "checked_at": now, "latest": latest})
116
146
 
117
147
  # 4. Set notice
118
148
  if _newer(latest, current):
119
149
  with _lock:
120
- _notice = _build_notice(latest, current, lang)
150
+ _notice = _build_notice(latest, current, lang, channel)
121
151
 
122
152
 
123
153
  # ── Public API ────────────────────────────────────────────────────────────────
124
154
 
125
155
  def start_update_check(current_version: str, lang: str = "en") -> None:
126
156
  """Start background version check. Call once, early in startup."""
157
+ global _notice
158
+ with _lock:
159
+ _notice = None
127
160
  t = threading.Thread(
128
161
  target=_worker,
129
- args=(current_version, lang),
162
+ args=(current_version, lang, _install_channel()),
130
163
  daemon=True,
131
164
  name="aria-update-check",
132
165
  )