aria-code 0.82.0__tar.gz → 0.83.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 (743) hide show
  1. {aria_code-0.82.0/src/aria_code.egg-info → aria_code-0.83.0}/PKG-INFO +1 -1
  2. {aria_code-0.82.0 → aria_code-0.83.0}/pyproject.toml +1 -1
  3. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/_version.py +1 -1
  4. aria_code-0.83.0/src/aria_code/apps/cli/commands/catalog.py +160 -0
  5. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/core_cmds.py +109 -2
  6. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/ui/completer.py +40 -15
  7. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/ui/input_box.py +24 -7
  8. {aria_code-0.82.0 → aria_code-0.83.0/src/aria_code.egg-info}/PKG-INFO +1 -1
  9. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code.egg-info/SOURCES.txt +1 -0
  10. aria_code-0.83.0/tests/test_slash_popup.py +162 -0
  11. aria_code-0.82.0/src/aria_code/apps/cli/commands/catalog.py +0 -87
  12. {aria_code-0.82.0 → aria_code-0.83.0}/LICENSE +0 -0
  13. {aria_code-0.82.0 → aria_code-0.83.0}/NOTICE +0 -0
  14. {aria_code-0.82.0 → aria_code-0.83.0}/README.md +0 -0
  15. {aria_code-0.82.0 → aria_code-0.83.0}/setup.cfg +0 -0
  16. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/__init__.py +0 -0
  17. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/adk_apps/__init__.py +0 -0
  18. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/adk_apps/aria_code_review/__init__.py +0 -0
  19. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/adk_apps/aria_code_review/agent.py +0 -0
  20. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/adk_apps/aria_research/__init__.py +0 -0
  21. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/adk_apps/aria_research/agent.py +0 -0
  22. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/__init__.py +0 -0
  23. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/base.py +0 -0
  24. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/code_review.py +0 -0
  25. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/deep/__init__.py +0 -0
  26. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/deep/calibration_loop.py +0 -0
  27. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/deep/critic.py +0 -0
  28. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/deep/deepen.py +0 -0
  29. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/deep/models.py +0 -0
  30. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/deep/pipeline.py +0 -0
  31. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/deep/quant_fusion.py +0 -0
  32. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/deep/themes.py +0 -0
  33. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/deep/tiers.py +0 -0
  34. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/engineering/__init__.py +0 -0
  35. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/engineering/coder.py +0 -0
  36. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/engineering/tester.py +0 -0
  37. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/financial/__init__.py +0 -0
  38. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/financial/cashflow_burn.py +0 -0
  39. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/financial/catalyst.py +0 -0
  40. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/financial/corporate_finance.py +0 -0
  41. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/financial/debate.py +0 -0
  42. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/financial/earnings.py +0 -0
  43. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/financial/fundamental.py +0 -0
  44. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/financial/macro.py +0 -0
  45. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/financial/news.py +0 -0
  46. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/financial/risk.py +0 -0
  47. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/financial/sector.py +0 -0
  48. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/financial/strategist.py +0 -0
  49. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/financial/stripe_revenue.py +0 -0
  50. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/financial/synthesis.py +0 -0
  51. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/financial/technical.py +0 -0
  52. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/orchestrator.py +0 -0
  53. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/portfolio_agent.py +0 -0
  54. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/realty/__init__.py +0 -0
  55. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/realty/asset_diagnosis.py +0 -0
  56. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/realty/business_match.py +0 -0
  57. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/realty/cashflow_verify.py +0 -0
  58. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/realty/contract_rules.py +0 -0
  59. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/realty/energy_anomaly.py +0 -0
  60. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/realty/exit_settlement.py +0 -0
  61. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/realty/fulfillment_risk.py +0 -0
  62. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/realty/ops_optimize.py +0 -0
  63. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/realty/revenue_share.py +0 -0
  64. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/registry.py +0 -0
  65. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/signal_scheme.py +0 -0
  66. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/sports/__init__.py +0 -0
  67. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/sports/football_agent.py +0 -0
  68. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/supervisor.py +0 -0
  69. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/team.py +0 -0
  70. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/warehouse/__init__.py +0 -0
  71. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/warehouse/contracts.py +0 -0
  72. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/warehouse/dashboard.py +0 -0
  73. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/warehouse/fulfillment_leadtime.py +0 -0
  74. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/warehouse/inbound_exceptions.py +0 -0
  75. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/warehouse/inventory_health.py +0 -0
  76. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/warehouse/local_run.py +0 -0
  77. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/warehouse/local_snapshot.py +0 -0
  78. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/warehouse/logistics_cost.py +0 -0
  79. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/warehouse/logistics_sync.py +0 -0
  80. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/agents/warehouse/workflow.py +0 -0
  81. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/aliyun_data_client.py +0 -0
  82. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/README.md +0 -0
  83. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/__init__.py +0 -0
  84. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/channels/README.md +0 -0
  85. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/channels/__init__.py +0 -0
  86. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/channels/approvals.py +0 -0
  87. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/channels/conversation.py +0 -0
  88. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/channels/digest.py +0 -0
  89. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/channels/intake.py +0 -0
  90. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/channels/registry.py +0 -0
  91. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/channels/tradingview.py +0 -0
  92. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/README.md +0 -0
  93. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/__init__.py +0 -0
  94. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/_optional.py +0 -0
  95. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/bootstrap.py +0 -0
  96. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/broker_render.py +0 -0
  97. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/codegen_paths.py +0 -0
  98. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/__init__.py +0 -0
  99. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/_business_render.py +0 -0
  100. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/_ui.py +0 -0
  101. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/analysis_cmds.py +0 -0
  102. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/ashare_prediction_cmds.py +0 -0
  103. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/auth_cmds.py +0 -0
  104. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/backtest_cmds.py +0 -0
  105. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/broker_cmds.py +0 -0
  106. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/business_workflow_cmds.py +0 -0
  107. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/canvas_cmds.py +0 -0
  108. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/data_cmds.py +0 -0
  109. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/diagnostic_cmds.py +0 -0
  110. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/diagnostic_ops_cmds.py +0 -0
  111. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/file_cmds.py +0 -0
  112. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/finance_service_cmds.py +0 -0
  113. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/fx_commodity_cmds.py +0 -0
  114. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/market.py +0 -0
  115. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/market_cmds.py +0 -0
  116. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/market_context.py +0 -0
  117. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/market_render.py +0 -0
  118. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/model_cmds.py +0 -0
  119. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/ops_cmds.py +0 -0
  120. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/orchestrator_cmds.py +0 -0
  121. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/pdf_export_cmds.py +0 -0
  122. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/portfolio_cmds.py +0 -0
  123. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/report.py +0 -0
  124. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/scaffold_templates.py +0 -0
  125. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/session_cmds.py +0 -0
  126. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/session_ux_cmds.py +0 -0
  127. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/team.py +0 -0
  128. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/team_render.py +0 -0
  129. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/ui_cmds.py +0 -0
  130. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/warehouse_cmds.py +0 -0
  131. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/workflow_cmds.py +0 -0
  132. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/commands/workspace_cmds.py +0 -0
  133. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/config_paths.py +0 -0
  134. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/config_store.py +0 -0
  135. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/constants.py +0 -0
  136. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/context.py +0 -0
  137. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/deterministic.py +0 -0
  138. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/direct.py +0 -0
  139. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/finance_service_catalog.py +0 -0
  140. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/football_reports.py +0 -0
  141. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/github_app_auth.py +0 -0
  142. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/google_login.py +0 -0
  143. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/handlers/__init__.py +0 -0
  144. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/handlers/broker_handlers.py +0 -0
  145. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/handlers/chart_handlers.py +0 -0
  146. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/handlers/market_handlers.py +0 -0
  147. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/handlers/realty_handlers.py +0 -0
  148. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/handlers/sports_handlers.py +0 -0
  149. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/handlers/strategy_advice.py +0 -0
  150. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/helpers.py +0 -0
  151. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/hooks.py +0 -0
  152. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/i18n.py +0 -0
  153. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/intent.py +0 -0
  154. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/intent_router.py +0 -0
  155. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/intent_signals.py +0 -0
  156. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/lifecycle_hooks.py +0 -0
  157. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/local_tool_schemas.py +0 -0
  158. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/main.py +0 -0
  159. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/market_hours.py +0 -0
  160. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/market_metadata.py +0 -0
  161. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/market_universe.py +0 -0
  162. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/message_processing.py +0 -0
  163. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/model_catalog.py +0 -0
  164. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/pdf_report.py +0 -0
  165. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/plan_mode.py +0 -0
  166. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/plotly_html.py +0 -0
  167. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/prediction_feedback.py +0 -0
  168. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/preflight.py +0 -0
  169. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/project_aria.py +0 -0
  170. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/prompt_assembly.py +0 -0
  171. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/prompts/__init__.py +0 -0
  172. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/prompts/coding.py +0 -0
  173. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/prompts/select.py +0 -0
  174. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/prompts/system_prompts.py +0 -0
  175. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/prompts/ui.py +0 -0
  176. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/provider_endpoints.py +0 -0
  177. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/provider_keys.py +0 -0
  178. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/providers/__init__.py +0 -0
  179. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/providers/base.py +0 -0
  180. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/providers/chat_routing.py +0 -0
  181. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/providers/collaboration.py +0 -0
  182. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/providers/llm/__init__.py +0 -0
  183. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/providers/llm/offline_responses.py +0 -0
  184. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/providers/llm/ollama_stream.py +0 -0
  185. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/providers/llm/response_cache.py +0 -0
  186. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/providers/llm/sse_stream.py +0 -0
  187. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/providers/runtime_bridge.py +0 -0
  188. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/providers/vertexai_stream.py +0 -0
  189. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/review_runner.py +0 -0
  190. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/runtime_consumer.py +0 -0
  191. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/sandbox.py +0 -0
  192. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/session_export.py +0 -0
  193. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/session_jsonl.py +0 -0
  194. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/session_store.py +0 -0
  195. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/skills_catalog.py +0 -0
  196. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/todo_tracker.py +0 -0
  197. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/tool_executor.py +0 -0
  198. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/tool_registry.py +0 -0
  199. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/tool_scope.py +0 -0
  200. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/tools/__init__.py +0 -0
  201. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/tools/context.py +0 -0
  202. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/tools/file_tools.py +0 -0
  203. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/tools/market_tools.py +0 -0
  204. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/tools/notebook_tools.py +0 -0
  205. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/tools/system_tools.py +0 -0
  206. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/tools/write_tools.py +0 -0
  207. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/tradingview_bridge.py +0 -0
  208. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/turn_planning.py +0 -0
  209. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/update_check.py +0 -0
  210. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/updater.py +0 -0
  211. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/utils/__init__.py +0 -0
  212. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/cli/utils/market_detect.py +0 -0
  213. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/daemon/README.md +0 -0
  214. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/vscode/README.md +0 -0
  215. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/apps/vscode/package.json +0 -0
  216. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/aria_cli.py +0 -0
  217. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/aria_daemon.py +0 -0
  218. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/aria_feishu_bot.py +0 -0
  219. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/aria_mcp_server.py +0 -0
  220. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/aria_relay_client.py +0 -0
  221. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/aria_relay_server.py +0 -0
  222. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/aria_telegram_bot.py +0 -0
  223. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/ariarc.py +0 -0
  224. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/artifacts.py +0 -0
  225. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/backtest_engine.py +0 -0
  226. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/backtest_report.py +0 -0
  227. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/brokers/__init__.py +0 -0
  228. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/brokers/automation.py +0 -0
  229. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/brokers/base.py +0 -0
  230. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/brokers/capabilities.py +0 -0
  231. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/brokers/cn/__init__.py +0 -0
  232. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/brokers/cn/easytrader_broker.py +0 -0
  233. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/brokers/cn/futu_broker.py +0 -0
  234. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/brokers/cn/longbridge_broker.py +0 -0
  235. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/brokers/cn/tiger_broker.py +0 -0
  236. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/brokers/cn/xtquant_broker.py +0 -0
  237. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/brokers/config.py +0 -0
  238. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/brokers/intl/__init__.py +0 -0
  239. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/brokers/intl/alpaca_broker.py +0 -0
  240. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/brokers/intl/ibkr_broker.py +0 -0
  241. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/brokers/intl/trading212_broker.py +0 -0
  242. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/brokers/intl/webull_broker.py +0 -0
  243. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/brokers/paper_broker.py +0 -0
  244. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/brokers/planning.py +0 -0
  245. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/brokers/registry.py +0 -0
  246. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/brokers/trading.py +0 -0
  247. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/canva_client.py +0 -0
  248. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/change_store.py +0 -0
  249. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/clients/__init__.py +0 -0
  250. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/clients/aliyun_data_client.py +0 -0
  251. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/clients/aria_relay_client.py +0 -0
  252. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/clients/canva_client.py +0 -0
  253. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/clients/figma_client.py +0 -0
  254. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/clients/football_data_client.py +0 -0
  255. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/clients/kling_video_client.py +0 -0
  256. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/clients/market_data_client.py +0 -0
  257. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/clients/openai_image_client.py +0 -0
  258. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/clients/runway_video_client.py +0 -0
  259. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/clients/warehouse_erp_client.py +0 -0
  260. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/cloud_memory.py +0 -0
  261. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/command_safety.py +0 -0
  262. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/computer_use_tools.py +0 -0
  263. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/dashboard_generator.py +0 -0
  264. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/data_analysis_tools.py +0 -0
  265. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/data_cleaner.py +0 -0
  266. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/data_service.py +0 -0
  267. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/datasources/__init__.py +0 -0
  268. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/datasources/base.py +0 -0
  269. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/datasources/router.py +0 -0
  270. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/datasources/sources/__init__.py +0 -0
  271. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/datasources/sources/akshare_source.py +0 -0
  272. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/datasources/sources/alpha_vantage_source.py +0 -0
  273. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/datasources/sources/edgar_source.py +0 -0
  274. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/datasources/sources/finnhub_source.py +0 -0
  275. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/datasources/sources/fred_source.py +0 -0
  276. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/datasources/sources/tushare_source.py +0 -0
  277. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/datasources/sources/web_scraper_source.py +0 -0
  278. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/datasources/sources/world_bank_source.py +0 -0
  279. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/datasources/sources/yfinance_source.py +0 -0
  280. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/demo_player.py +0 -0
  281. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/doctor.py +0 -0
  282. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/domain/__init__.py +0 -0
  283. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/domain/backtest_engine.py +0 -0
  284. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/domain/backtest_report.py +0 -0
  285. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/domain/finance_formulas.py +0 -0
  286. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/domain/portfolio_ledger.py +0 -0
  287. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/domain/strategy_vault.py +0 -0
  288. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/evals/__init__.py +0 -0
  289. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/evals/harness.py +0 -0
  290. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/evals/runner.py +0 -0
  291. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/external_agent_runner.py +0 -0
  292. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/figma_client.py +0 -0
  293. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/file_analysis_tools.py +0 -0
  294. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/finance_formulas.py +0 -0
  295. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/football_data_client.py +0 -0
  296. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/image_gen_tools.py +0 -0
  297. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/intent_classifier.py +0 -0
  298. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/kling_video_client.py +0 -0
  299. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/licensing.py +0 -0
  300. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/local_finance_tools.py +0 -0
  301. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/local_image_provider.py +0 -0
  302. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/local_llm_provider.py +0 -0
  303. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/macro_tools.py +0 -0
  304. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/markdown_pdf.py +0 -0
  305. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/market_data_client.py +0 -0
  306. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/mcp_client.py +0 -0
  307. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/memory_manager.py +0 -0
  308. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/model_capability.py +0 -0
  309. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/notification_tools.py +0 -0
  310. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/openai_image_client.py +0 -0
  311. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/__init__.py +0 -0
  312. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/adk_bridge/__init__.py +0 -0
  313. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/adk_bridge/code_review_tools.py +0 -0
  314. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/adk_bridge/market_tools.py +0 -0
  315. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_agents/__init__.py +0 -0
  316. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_agents/manifest.py +0 -0
  317. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_core/__init__.py +0 -0
  318. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_core/architecture.py +0 -0
  319. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_core/export.py +0 -0
  320. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_core/manifest.py +0 -0
  321. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_core/paths.py +0 -0
  322. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_core/secure_file.py +0 -0
  323. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_infra/__init__.py +0 -0
  324. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_infra/arthera.py +0 -0
  325. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_infra/doctor.py +0 -0
  326. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_infra/product.py +0 -0
  327. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_mcp/__init__.py +0 -0
  328. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_mcp/bridge.py +0 -0
  329. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_mcp/circuit.py +0 -0
  330. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_mcp/config.py +0 -0
  331. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_mcp/installer.py +0 -0
  332. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_mcp/server.py +0 -0
  333. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_mcp/tools.py +0 -0
  334. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_sdk/__init__.py +0 -0
  335. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_sdk/client.py +0 -0
  336. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_sdk/providers.py +0 -0
  337. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_sdk/streaming.py +0 -0
  338. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_sdk/types.py +0 -0
  339. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_services/__init__.py +0 -0
  340. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_services/cache.py +0 -0
  341. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_services/context.py +0 -0
  342. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_services/context_checkpoints.py +0 -0
  343. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_services/data.py +0 -0
  344. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_services/provider_health.py +0 -0
  345. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_services/references.py +0 -0
  346. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_services/registry.py +0 -0
  347. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_services/research_protocol.py +0 -0
  348. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_services/research_quality.py +0 -0
  349. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_services/settings.py +0 -0
  350. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_services/usage.py +0 -0
  351. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_skills/__init__.py +0 -0
  352. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_skills/catalog.py +0 -0
  353. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_skills/loader.py +0 -0
  354. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_skills/registry.py +0 -0
  355. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_tools/__init__.py +0 -0
  356. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_tools/financial/__init__.py +0 -0
  357. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_tools/financial/_paths.py +0 -0
  358. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_tools/financial/compliance.py +0 -0
  359. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_tools/financial/factors.py +0 -0
  360. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_tools/financial/risk_tools.py +0 -0
  361. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_tools/financial/strategy.py +0 -0
  362. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/aria_tools/registry.py +0 -0
  363. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/__init__.py +0 -0
  364. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/_namespace.py +0 -0
  365. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/backtest/__init__.py +0 -0
  366. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/backtest/core.py +0 -0
  367. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/backtest/engine.py +0 -0
  368. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/portfolio/__init__.py +0 -0
  369. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/portfolio/optimizer.py +0 -0
  370. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/sports/__init__.py +0 -0
  371. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/sports/calibrator.py +0 -0
  372. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/sports/dixon_coles.py +0 -0
  373. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/sports/elo.py +0 -0
  374. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/sports/form.py +0 -0
  375. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/sports/h2h.py +0 -0
  376. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/sports/ml_model.py +0 -0
  377. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/sports/predictor.py +0 -0
  378. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/sports/tracker.py +0 -0
  379. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/stochastic/__init__.py +0 -0
  380. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/stochastic/gbm_enhanced.py +0 -0
  381. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/stochastic/ito_calculus.py +0 -0
  382. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/stochastic/kelly_criterion.py +0 -0
  383. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/stochastic/monte_carlo_advanced.py +0 -0
  384. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/stochastic/options_pricing.py +0 -0
  385. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packages/quant_engine/stochastic/stochastic_processes.py +0 -0
  386. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packs/__init__.py +0 -0
  387. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packs/base.py +0 -0
  388. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packs/finance/__init__.py +0 -0
  389. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packs/logistics/__init__.py +0 -0
  390. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packs/payments/__init__.py +0 -0
  391. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packs/realty/__init__.py +0 -0
  392. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packs/registry.py +0 -0
  393. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/packs/rules.py +0 -0
  394. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/plan_utils.py +0 -0
  395. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/plugin_loader.py +0 -0
  396. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/portfolio_ledger.py +0 -0
  397. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/preview_server.py +0 -0
  398. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/privacy/__init__.py +0 -0
  399. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/privacy/feedback.py +0 -0
  400. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/project_review.py +0 -0
  401. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/project_review_api.py +0 -0
  402. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/project_review_server.py +0 -0
  403. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/project_tools.py +0 -0
  404. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/providers/__init__.py +0 -0
  405. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/providers/llm/__init__.py +0 -0
  406. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/providers/llm/anthropic.py +0 -0
  407. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/providers/llm/autoconfig.py +0 -0
  408. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/providers/llm/base.py +0 -0
  409. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/providers/llm/custom.py +0 -0
  410. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/providers/llm/ollama.py +0 -0
  411. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/providers/llm/openai_compat.py +0 -0
  412. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/providers/llm/registry.py +0 -0
  413. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/providers/local_image_provider.py +0 -0
  414. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/providers/local_llm_provider.py +0 -0
  415. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/providers/tool_messages.py +0 -0
  416. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/realty_data_tools.py +0 -0
  417. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/relay_store.py +0 -0
  418. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/report_exporters.py +0 -0
  419. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/report_generator.py +0 -0
  420. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/review_service.py +0 -0
  421. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/runtime/__init__.py +0 -0
  422. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/runtime/acceptance.py +0 -0
  423. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/runtime/agent_loop.py +0 -0
  424. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/runtime/approval.py +0 -0
  425. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/runtime/budget.py +0 -0
  426. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/runtime/checkpoints.py +0 -0
  427. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/runtime/crash_report.py +0 -0
  428. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/runtime/events.py +0 -0
  429. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/runtime/gateway.py +0 -0
  430. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/runtime/lsp.py +0 -0
  431. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/runtime/orchestrator.py +0 -0
  432. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/runtime/repo_map.py +0 -0
  433. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/runtime/run_state.py +0 -0
  434. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/runtime/run_store.py +0 -0
  435. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/runtime/self_healing.py +0 -0
  436. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/runtime/subagent.py +0 -0
  437. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/runtime/task_ledger.py +0 -0
  438. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/runtime/task_orchestrator.py +0 -0
  439. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/runtime/tool_executor.py +0 -0
  440. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/runtime/tool_policy.py +0 -0
  441. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/runtime/worktrees.py +0 -0
  442. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/runway_video_client.py +0 -0
  443. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/safety/__init__.py +0 -0
  444. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/safety/permissions.py +0 -0
  445. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/safety/service.py +0 -0
  446. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/setup_wizard.py +0 -0
  447. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/spreadsheet_tools.py +0 -0
  448. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/strategy_vault.py +0 -0
  449. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/tools/__init__.py +0 -0
  450. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/tools/artifact_tools.py +0 -0
  451. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/tools/broker_tools.py +0 -0
  452. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/tools/build_quant_engine.py +0 -0
  453. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/tools/code_audit_tools.py +0 -0
  454. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/tools/computer_use_tools.py +0 -0
  455. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/tools/data_analysis_tools.py +0 -0
  456. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/tools/enterprise_finance_tools.py +0 -0
  457. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/tools/extended_tools.py +0 -0
  458. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/tools/file_analysis_tools.py +0 -0
  459. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/tools/image_gen_tools.py +0 -0
  460. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/tools/local_finance_tools.py +0 -0
  461. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/tools/logistics_carriers.py +0 -0
  462. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/tools/logistics_inventory.py +0 -0
  463. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/tools/logistics_io.py +0 -0
  464. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/tools/logistics_tenancy.py +0 -0
  465. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/tools/logistics_tools.py +0 -0
  466. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/tools/macro_tools.py +0 -0
  467. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/tools/notification_tools.py +0 -0
  468. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/tools/project_tools.py +0 -0
  469. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/tools/realty_data_tools.py +0 -0
  470. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/tools/spreadsheet_tools.py +0 -0
  471. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/tools/stripe_tools.py +0 -0
  472. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/ui/__init__.py +0 -0
  473. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/ui/banner.py +0 -0
  474. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/ui/console.py +0 -0
  475. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/ui/image_render.py +0 -0
  476. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/ui/picker.py +0 -0
  477. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/ui/render/__init__.py +0 -0
  478. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/ui/render/finance.py +0 -0
  479. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/ui/render/market.py +0 -0
  480. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/ui/render/output.py +0 -0
  481. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/ui/render/responsive.py +0 -0
  482. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/ui/render/team.py +0 -0
  483. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/ui/robot.py +0 -0
  484. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/ui/startup_dashboard.py +0 -0
  485. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/utils/vscode_uri.py +0 -0
  486. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/video_analysis.py +0 -0
  487. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/video_editor.py +0 -0
  488. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/workspace/__init__.py +0 -0
  489. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/workspace/files.py +0 -0
  490. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/workspace/verify.py +0 -0
  491. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/workspace_changes.py +0 -0
  492. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/workspace_context.py +0 -0
  493. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/workspace_service.py +0 -0
  494. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code/workspace_tools.py +0 -0
  495. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code.egg-info/dependency_links.txt +0 -0
  496. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code.egg-info/entry_points.txt +0 -0
  497. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code.egg-info/requires.txt +0 -0
  498. {aria_code-0.82.0 → aria_code-0.83.0}/src/aria_code.egg-info/top_level.txt +0 -0
  499. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_adk_market_tools.py +0 -0
  500. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_agent_team_fallback.py +0 -0
  501. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_analyze_file_tool.py +0 -0
  502. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_architecture_ledger_is_true.py +0 -0
  503. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_architecture_report.py +0 -0
  504. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_aria_cli_core.py +0 -0
  505. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_aria_mcp_server.py +0 -0
  506. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_aria_sdk.py +0 -0
  507. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_artifact_publishing.py +0 -0
  508. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_artifacts_and_reports.py +0 -0
  509. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_ashare_prediction_cmds.py +0 -0
  510. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_backtest_cmds.py +0 -0
  511. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_backtest_engine.py +0 -0
  512. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_backtest_report.py +0 -0
  513. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_binary_bundles_runtime_imports.py +0 -0
  514. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_broken_akshare_is_optional.py +0 -0
  515. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_broker_automation.py +0 -0
  516. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_broker_chat_confirm_gate.py +0 -0
  517. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_broker_planning.py +0 -0
  518. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_broker_safety.py +0 -0
  519. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_broker_tools.py +0 -0
  520. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_budget.py +0 -0
  521. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_business_workflow_cmds.py +0 -0
  522. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_canva_client.py +0 -0
  523. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_canvas_cmds.py +0 -0
  524. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_card_approvals.py +0 -0
  525. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_channel_intake.py +0 -0
  526. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_channels.py +0 -0
  527. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_chart_handlers.py +0 -0
  528. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_chat_bots_fail_closed.py +0 -0
  529. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_chat_routing.py +0 -0
  530. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_ci_security_workflow.py +0 -0
  531. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_cli_app_split.py +0 -0
  532. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_cli_bootstrap.py +0 -0
  533. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_cli_config_store.py +0 -0
  534. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_cli_lifecycle_hooks.py +0 -0
  535. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_cli_runtime_consumer.py +0 -0
  536. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_cli_tool_executor_module.py +0 -0
  537. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_cli_updater.py +0 -0
  538. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_cloud_memory.py +0 -0
  539. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_code_audit_tools.py +0 -0
  540. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_code_review_agent.py +0 -0
  541. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_codegen_output.py +0 -0
  542. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_coder_tester_self_healing.py +0 -0
  543. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_coder_tool_safety.py +0 -0
  544. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_collaboration.py +0 -0
  545. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_command_loggers.py +0 -0
  546. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_command_safety.py +0 -0
  547. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_completions_builder.py +0 -0
  548. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_config_paths.py +0 -0
  549. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_configured_provider.py +0 -0
  550. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_container_entrypoint.py +0 -0
  551. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_container_entrypoints.py +0 -0
  552. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_context_checkpoints.py +0 -0
  553. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_context_references.py +0 -0
  554. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_context_service.py +0 -0
  555. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_conversation_core.py +0 -0
  556. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_crash_report.py +0 -0
  557. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_credential_file_permissions.py +0 -0
  558. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_custom_providers.py +0 -0
  559. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_daemon_gateway_config.py +0 -0
  560. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_dashboard_generator.py +0 -0
  561. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_data_service.py +0 -0
  562. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_data_service_imports.py +0 -0
  563. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_datasource_routing.py +0 -0
  564. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_deep_analysis.py +0 -0
  565. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_degrades_without_quant_engine.py +0 -0
  566. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_dispatcher_pins_match_the_release.py +0 -0
  567. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_doctor.py +0 -0
  568. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_doctor_describes_the_current_install.py +0 -0
  569. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_doctor_npm_scope.py +0 -0
  570. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_engine_boundary.py +0 -0
  571. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_enterprise_tool_honesty.py +0 -0
  572. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_env_switch_docs.py +0 -0
  573. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_evals_harness.py +0 -0
  574. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_event_import_roots.py +0 -0
  575. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_extended_tools.py +0 -0
  576. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_feishu_swarm_config.py +0 -0
  577. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_finalize_release.py +0 -0
  578. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_finance_renderers.py +0 -0
  579. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_finance_service_catalog.py +0 -0
  580. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_first_run_output.py +0 -0
  581. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_first_run_works.py +0 -0
  582. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_football_agent.py +0 -0
  583. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_football_prediction_output.py +0 -0
  584. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_google_cloud_models.py +0 -0
  585. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_google_cloud_routing.py +0 -0
  586. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_google_login.py +0 -0
  587. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_google_search_provider.py +0 -0
  588. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_headless_is_agentic.py +0 -0
  589. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_honest_surfaces.py +0 -0
  590. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_image_gen_tools.py +0 -0
  591. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_image_inputs.py +0 -0
  592. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_import_graph_budget.py +0 -0
  593. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_intent_router.py +0 -0
  594. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_intent_signals.py +0 -0
  595. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_kling_video_client.py +0 -0
  596. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_lazy_rebind.py +0 -0
  597. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_legacy_module_imports.py +0 -0
  598. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_license_consistency.py +0 -0
  599. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_licensing.py +0 -0
  600. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_local_image_provider.py +0 -0
  601. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_logistics_3pl.py +0 -0
  602. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_logistics_and_finance_agents.py +0 -0
  603. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_lsp.py +0 -0
  604. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_markdown_pdf.py +0 -0
  605. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_market_answers_in_english.py +0 -0
  606. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_market_data_client.py +0 -0
  607. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_market_history_inheritance.py +0 -0
  608. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_market_history_tool.py +0 -0
  609. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_market_hours.py +0 -0
  610. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_market_questions_on_backend.py +0 -0
  611. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_market_symbol_extraction.py +0 -0
  612. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_market_universe.py +0 -0
  613. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_mcp_circuit.py +0 -0
  614. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_mcp_client.py +0 -0
  615. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_model_capability_registry.py +0 -0
  616. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_model_choice_is_the_users.py +0 -0
  617. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_model_selection_state.py +0 -0
  618. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_native_binary_entrypoints.py +0 -0
  619. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_native_installer.py +0 -0
  620. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_new_modules.py +0 -0
  621. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_no_hardcoded_developer_paths.py +0 -0
  622. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_no_uncommitted_imports.py +0 -0
  623. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_numeric_listings.py +0 -0
  624. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_ollama_stream_imports.py +0 -0
  625. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_ollama_stream_tools.py +0 -0
  626. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_openai_image_client.py +0 -0
  627. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_operations_suite.py +0 -0
  628. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_output_rendering.py +0 -0
  629. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_packages_facade.py +0 -0
  630. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_packaging_constraints.py +0 -0
  631. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_packaging_manifest.py +0 -0
  632. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_packs_domains.py +0 -0
  633. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_pdf_report.py +0 -0
  634. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_pick_best_installed_model.py +0 -0
  635. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_plan_mode.py +0 -0
  636. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_platform_package_assembly.py +0 -0
  637. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_platform_packages.py +0 -0
  638. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_plotly_html_output.py +0 -0
  639. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_portfolio_ledger.py +0 -0
  640. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_post_turn_context_decision.py +0 -0
  641. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_preflight.py +0 -0
  642. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_preview_server.py +0 -0
  643. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_privacy_feedback.py +0 -0
  644. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_project_aria.py +0 -0
  645. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_project_review.py +0 -0
  646. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_project_review_api.py +0 -0
  647. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_prompt_assembly.py +0 -0
  648. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_prompt_selection.py +0 -0
  649. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_provider_autoconfig.py +0 -0
  650. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_provider_error_messages.py +0 -0
  651. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_provider_integration.py +0 -0
  652. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_provider_registry.py +0 -0
  653. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_public_service_status.py +0 -0
  654. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_quant_engine_namespace.py +0 -0
  655. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_rebind_contract.py +0 -0
  656. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_rebind_namespace_contract.py +0 -0
  657. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_relay_client_credentials.py +0 -0
  658. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_relay_event_verification.py +0 -0
  659. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_relay_sends_for_clients.py +0 -0
  660. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_relay_store.py +0 -0
  661. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_relay_url.py +0 -0
  662. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_release_chain.py +0 -0
  663. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_release_commit_identity.py +0 -0
  664. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_release_push_is_atomic.py +0 -0
  665. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_release_reaches_the_registries.py +0 -0
  666. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_release_verification_waits.py +0 -0
  667. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_release_workflow_permissions.py +0 -0
  668. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_report_charts.py +0 -0
  669. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_report_generator.py +0 -0
  670. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_research_protocol.py +0 -0
  671. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_research_quality.py +0 -0
  672. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_responsive_rendering.py +0 -0
  673. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_review_service.py +0 -0
  674. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_root_module_budget.py +0 -0
  675. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_rsi_without_pandas_ta.py +0 -0
  676. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_runtime_acceptance.py +0 -0
  677. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_runtime_agent_loop.py +0 -0
  678. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_runtime_approval.py +0 -0
  679. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_runtime_bridge.py +0 -0
  680. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_runtime_bridge_fallback.py +0 -0
  681. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_runtime_checkpoints.py +0 -0
  682. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_runtime_event_identity.py +0 -0
  683. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_runtime_gateway.py +0 -0
  684. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_runtime_repo_map.py +0 -0
  685. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_runtime_run_store.py +0 -0
  686. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_runtime_tool_executor.py +0 -0
  687. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_runtime_worktrees.py +0 -0
  688. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_runway_video_client.py +0 -0
  689. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_safety_permissions.py +0 -0
  690. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_safety_service.py +0 -0
  691. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_safety_service_adoption.py +0 -0
  692. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_service_diagnostics_security.py +0 -0
  693. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_session_search.py +0 -0
  694. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_settings_service.py +0 -0
  695. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_shipper_digest.py +0 -0
  696. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_single_import_root.py +0 -0
  697. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_skill_agent_binding.py +0 -0
  698. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_skill_catalog.py +0 -0
  699. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_skill_loader.py +0 -0
  700. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_spreadsheet_tools.py +0 -0
  701. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_sse_stream_contract.py +0 -0
  702. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_startup_dashboard.py +0 -0
  703. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_startup_latency.py +0 -0
  704. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_status_language.py +0 -0
  705. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_streaming_pipeline.py +0 -0
  706. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_stripe_agent.py +0 -0
  707. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_subagent.py +0 -0
  708. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_supervisor_routing.py +0 -0
  709. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_system_prompts.py +0 -0
  710. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_system_tools_output.py +0 -0
  711. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_task_orchestrator.py +0 -0
  712. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_team_synthesis.py +0 -0
  713. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_tls_trust_store.py +0 -0
  714. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_tool_policy.py +0 -0
  715. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_tool_rounds_on_openai_apis.py +0 -0
  716. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_tool_scope.py +0 -0
  717. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_trading_service.py +0 -0
  718. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_tradingview_bridge.py +0 -0
  719. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_turn_planning.py +0 -0
  720. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_ui_completer_references.py +0 -0
  721. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_ui_console_theme.py +0 -0
  722. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_ui_input_box.py +0 -0
  723. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_ui_language_and_model.py +0 -0
  724. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_ui_robot_banner.py +0 -0
  725. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_update_health_routes.py +0 -0
  726. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_verification_hint.py +0 -0
  727. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_verification_policy.py +0 -0
  728. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_version_consistency.py +0 -0
  729. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_version_counter.py +0 -0
  730. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_video_analysis.py +0 -0
  731. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_video_editor.py +0 -0
  732. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_vscode_mcp.py +0 -0
  733. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_warehouse_agents.py +0 -0
  734. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_warehouse_cli_registration.py +0 -0
  735. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_warehouse_erp_client.py +0 -0
  736. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_warehouse_workflow.py +0 -0
  737. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_wheel_is_installable.py +0 -0
  738. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_workspace_changes.py +0 -0
  739. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_workspace_context.py +0 -0
  740. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_workspace_files.py +0 -0
  741. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_workspace_scope.py +0 -0
  742. {aria_code-0.82.0 → aria_code-0.83.0}/tests/test_workspace_service.py +0 -0
  743. {aria_code-0.82.0 → aria_code-0.83.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.82.0
3
+ Version: 0.83.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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "aria-code"
7
- version = "0.82.0"
7
+ version = "0.83.0"
8
8
  description = "Open-source AI agent for coding, financial analysis and logistics operations: numbers you can check, client data kept apart, actions a person approves"
9
9
  readme = "README.md"
10
10
  license = { text = "Apache-2.0" }
@@ -17,4 +17,4 @@ from __future__ import annotations
17
17
 
18
18
  __all__ = ["__version__"]
19
19
 
20
- __version__ = "0.82.0"
20
+ __version__ = "0.83.0"
@@ -0,0 +1,160 @@
1
+ """Shared CLI command metadata.
2
+
3
+ This module is intentionally UI-free so future channel adapters such as Feishu
4
+ or a local gateway can reuse the same command categories without importing the
5
+ large terminal implementation.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ from dataclasses import dataclass
11
+ from typing import FrozenSet, Tuple
12
+
13
+
14
+ @dataclass(frozen=True)
15
+ class DirectCommandSpec:
16
+ name: str
17
+ method_name: str
18
+ async_method: bool = False
19
+ watchable: bool = False
20
+ aliases: Tuple[str, ...] = ()
21
+
22
+ @property
23
+ def names(self) -> Tuple[str, ...]:
24
+ return (self.name, *self.aliases)
25
+
26
+
27
+ DIRECT_COMMANDS: Tuple[DirectCommandSpec, ...] = (
28
+ DirectCommandSpec("quote", "cmd_quote", async_method=True, watchable=True),
29
+ DirectCommandSpec("backtest", "cmd_backtest", async_method=True),
30
+ DirectCommandSpec("health", "cmd_health", async_method=True, watchable=True),
31
+ DirectCommandSpec("doctor", "cmd_doctor"),
32
+ DirectCommandSpec("tools", "cmd_tools"),
33
+ DirectCommandSpec("skills", "cmd_skills"),
34
+ DirectCommandSpec("sessions", "cmd_sessions"),
35
+ DirectCommandSpec("watch", "cmd_watch", aliases=("watchlist",)),
36
+ DirectCommandSpec("export", "cmd_export", async_method=True),
37
+ DirectCommandSpec("tv", "cmd_tv", async_method=True),
38
+ DirectCommandSpec("ashare", "cmd_ashare", async_method=True, aliases=("a-share",)),
39
+ DirectCommandSpec("markets", "cmd_markets"),
40
+ DirectCommandSpec("orchestrate", "cmd_orchestrate"),
41
+ )
42
+
43
+
44
+ DIRECT_COMMAND_MAP = {
45
+ alias: spec
46
+ for spec in DIRECT_COMMANDS
47
+ for alias in spec.names
48
+ }
49
+
50
+
51
+ WATCHABLE_DIRECT_COMMANDS: FrozenSet[str] = frozenset(
52
+ alias
53
+ for spec in DIRECT_COMMANDS
54
+ if spec.watchable
55
+ for alias in spec.names
56
+ )
57
+
58
+
59
+ # Commands shown by default in /help. Other slash commands remain executable but
60
+ # are hidden to keep the startup surface compact.
61
+ VISIBLE_SLASH_COMMANDS: FrozenSet[str] = frozenset({
62
+ # Session
63
+ "/help", "/clear", "/compact", "/cost", "/status", "/health",
64
+ "/regen", "/undo", "/rewind", "/copy", "/recap", "/btw",
65
+ # Sessions
66
+ "/save", "/load", "/sessions", "/recall", "/export",
67
+ # Config
68
+ "/model", "/thinking", "/config", "/permissions", "/privacy",
69
+ # Setup & discovery
70
+ "/setup", "/apikey", "/doctor", "/architecture", "/mcp", "/skills", "/tools", "/packages", "/markets",
71
+ # Auth
72
+ "/login", "/logout", "/whoami",
73
+ # Persistent data (direct writes)
74
+ "/alert", "/journal", "/watch", "/note", "/todo", "/memory",
75
+ # Broker
76
+ "/broker", "/account", "/positions", "/orders", "/paper", "/trade",
77
+ # Code & project
78
+ "/project", "/init", "/review", "/code", "/plan", "/orchestrate", "/run", "/tasks", "/delegate", "/canva", "/completions", "/lsp",
79
+ # Research
80
+ "/team", "/warehouse", "/deep",
81
+ # Quant
82
+ "/backtest", "/wf", "/tv", "/ashare",
83
+ # UI generation
84
+ "/ui",
85
+ # Other
86
+ "/artifacts", "/vision", "/upload-image", "/file", "/strategy", "/accuracy",
87
+ })
88
+
89
+
90
+ # ── What "/" shows ────────────────────────────────────────────────────────────
91
+ # The "/" popup listed every command — 167 of them plus 14 skills, 92 without
92
+ # a category — and /help printed about 90 lines. Codex lists only session
93
+ # controls under "/", shows eight rows, and takes tasks in plain language.
94
+ # Aria keeps every command runnable by name; the popup opens on these two
95
+ # tiers, and typing narrows it over everything.
96
+
97
+ # Session and setup controls, in popup order.
98
+ CORE_SLASH_COMMANDS: Tuple[str, ...] = (
99
+ "/help", "/model", "/review", "/plan", "/init", "/status", "/sessions", "/clear",
100
+ "/compact", "/copy", "/rewind", "/permissions", "/config", "/doctor", "/login",
101
+ )
102
+
103
+ # One way into each capability: building code, financial analysis, logistics.
104
+ ENTRY_SLASH_COMMANDS: Tuple[str, ...] = (
105
+ "/code", "/ta", "/backtest", "/team", "/report", "/portfolio", "/inventory", "/carriers",
106
+ )
107
+
108
+ # Second names for a command; the popup lists the command once.
109
+ COMMAND_ALIASES = {"/upload-image": "/vision"}
110
+
111
+
112
+ @dataclass(frozen=True)
113
+ class HelpTopic:
114
+ key: str
115
+ title_en: str
116
+ title_zh: str
117
+ commands: Tuple[str, ...]
118
+
119
+
120
+ HELP_TOPICS: Tuple[HelpTopic, ...] = (
121
+ HelpTopic("code", "Code and projects", "代码与项目", (
122
+ "/code", "/project", "/init", "/review", "/plan", "/run", "/read", "/write", "/edit", "/ls",
123
+ "/search", "/verify", "/scaffold", "/apply", "/changes", "/git")),
124
+ HelpTopic("market", "Market research", "市场研究", (
125
+ "/quote", "/analyze", "/ta", "/chart", "/tv", "/deep", "/team", "/report", "/news", "/markets",
126
+ "/watch", "/alert")),
127
+ HelpTopic("quant", "Quant and portfolios", "量化与组合", (
128
+ "/backtest", "/wf", "/compare", "/auto-strategy", "/execution", "/portfolio", "/risk",
129
+ "/optimize", "/stress", "/factors")),
130
+ HelpTopic("logistics", "Logistics", "物流", ("/inventory", "/carriers", "/warehouse")),
131
+ HelpTopic("data", "Notes, files and artifacts", "笔记、文件与产物", (
132
+ "/journal", "/note", "/todo", "/memory", "/artifacts", "/strategy", "/accuracy", "/file",
133
+ "/vision", "/ui")),
134
+ HelpTopic("broker", "Broker and trading", "券商与交易", (
135
+ "/broker", "/paper", "/trade", "/account", "/positions", "/orders")),
136
+ HelpTopic("session", "Session", "会话", (
137
+ "/clear", "/compact", "/cost", "/status", "/health", "/regen", "/undo", "/rewind", "/copy",
138
+ "/recap", "/btw", "/save", "/load", "/sessions", "/export", "/export-pdf")),
139
+ HelpTopic("config", "Setup", "设置", (
140
+ "/model", "/thinking", "/config", "/permissions", "/privacy", "/local", "/update", "/setup",
141
+ "/apikey", "/doctor", "/mcp", "/login", "/logout", "/skills", "/tools", "/packages")),
142
+ )
143
+
144
+ HELP_TOPIC_MAP = {topic.key: topic for topic in HELP_TOPICS}
145
+
146
+
147
+ def popup_rank(name: str) -> int:
148
+ """0 for a core command, 1 for an entry point, 2 for everything else."""
149
+ if name in CORE_SLASH_COMMANDS:
150
+ return 0
151
+ if name in ENTRY_SLASH_COMMANDS:
152
+ return 1
153
+ return 2
154
+
155
+
156
+ def short_description(description: str) -> str:
157
+ """The description without its usage tail: "Technical indicators: /ta AAPL …" → "Technical indicators"."""
158
+ text = str(description or "")
159
+ cut = text.find(": /")
160
+ return (text[:cut] if cut > 0 else text).strip()
@@ -117,7 +117,11 @@ class CoreCommandsMixin:
117
117
  # Contextual help: /help <command>
118
118
  from aria_code.apps.cli.skills_catalog import SKILLS
119
119
  target = args.strip().lower()
120
- if target:
120
+ if target and target != "all":
121
+ from aria_code.apps.cli.commands.catalog import HELP_TOPIC_MAP
122
+ if target in HELP_TOPIC_MAP:
123
+ self._print_help_topic(HELP_TOPIC_MAP[target])
124
+ return
121
125
  cmd_key = target if target.startswith("/") else f"/{target}"
122
126
  if cmd_key in self.commands:
123
127
  _, desc = self.commands[cmd_key]
@@ -149,7 +153,11 @@ class CoreCommandsMixin:
149
153
  self.context.console.print(f"[dim]No help for: {target}. Try /help[/dim]" if self.context.has_rich else f"No help for: {target}")
150
154
  return
151
155
 
152
- # Full help listing
156
+ if not target:
157
+ self._print_help_overview()
158
+ return
159
+
160
+ # /help all: every command, grouped
153
161
  if self.context.has_rich:
154
162
  self.context.console.print()
155
163
 
@@ -248,6 +256,105 @@ class CoreCommandsMixin:
248
256
  print("\nSkills:")
249
257
  for s in SKILLS:
250
258
  print(f" {s['command']:20s} {s['description']}")
259
+ def _print_help_overview(self) -> None:
260
+ """One screen: what to type, the core commands, a way into each capability.
261
+
262
+ /help printed about 90 lines — every group, every skill — so the
263
+ commands that matter scrolled out of view. The rest is a topic away.
264
+ """
265
+ from aria_code.apps.cli.commands.catalog import (
266
+ CORE_SLASH_COMMANDS, ENTRY_SLASH_COMMANDS, HELP_TOPICS, short_description,
267
+ )
268
+ zh = str(self.terminal.config.get("ui_lang", "en")).lower().startswith("zh")
269
+ T = (lambda a, b: a) if zh else (lambda a, b: b)
270
+ core = [(n, short_description(self.commands[n][1])) for n in CORE_SLASH_COMMANDS if n in self.commands]
271
+ entry = [(n, short_description(self.commands[n][1])) for n in ENTRY_SLASH_COMMANDS if n in self.commands]
272
+ examples = (
273
+ T("给 utils.py 补上测试并运行", "Add tests for utils.py and run them"),
274
+ T("NVDA 这周走势怎么样?", "How's NVDA this week?"),
275
+ T("看看 skus.csv 哪些 SKU 该补货", "Which SKUs in skus.csv need reordering?"),
276
+ )
277
+ topics = " · ".join(t.key for t in HELP_TOPICS)
278
+ if not self.context.has_rich:
279
+ print("\n" + T("直接描述要做的事,Aria 会选择工具:", "Describe what you want; Aria picks the tools:"))
280
+ for example in examples:
281
+ print(f" {example}")
282
+ print("\n" + T("常用命令", "Commands"))
283
+ for name, desc in core + entry:
284
+ print(f" {name:13s} {desc}")
285
+ print("\n" + T(f"更多:/help {topics} · all · <命令>", f"More: /help {topics} · all · <command>"))
286
+ return
287
+
288
+ from rich.text import Text
289
+
290
+ console = self.context.console
291
+ console.print()
292
+ console.print(f"[bold]{T('直接描述要做的事', 'Describe what you want')}[/bold] "
293
+ f"[dim]{T('Aria 会选择工具', 'Aria picks the tools')}[/dim]")
294
+ for example in examples:
295
+ console.print(f" [#C08050]{example}[/#C08050]")
296
+ console.print()
297
+
298
+ name_width = max(len(name) for name, _ in core + entry)
299
+ # indent 2, name, gap 2, description, gap 3, name, gap 2, description
300
+ desc_width = max(12, (console.width - 2 - 2 * name_width - 2 - 3 - 2) // 2)
301
+
302
+ def cell(text: str) -> str:
303
+ return text if len(text) <= desc_width else text[:desc_width - 1] + "…"
304
+
305
+ two_columns = console.width >= 96
306
+ if not two_columns:
307
+ desc_width = max(12, console.width - 2 - name_width - 2)
308
+
309
+ def grid(rows):
310
+ if two_columns:
311
+ half = (len(rows) + 1) // 2
312
+ pairs = zip(rows[:half], rows[half:] + [("", "")])
313
+ else:
314
+ pairs = ((row, ("", "")) for row in rows)
315
+ lines = Text()
316
+ for left, right in pairs:
317
+ lines.append(" " + left[0].ljust(name_width + 2), style="bold #C08050")
318
+ lines.append(cell(left[1]).ljust(desc_width + 3) if right[0] else cell(left[1]), style="dim")
319
+ if right[0]:
320
+ lines.append(right[0].ljust(name_width + 2), style="bold #C08050")
321
+ lines.append(cell(right[1]), style="dim")
322
+ lines.append("\n")
323
+ lines.rstrip()
324
+ return lines
325
+
326
+ console.print(f"[bold]{T('命令', 'Commands')}[/bold]")
327
+ console.print(grid(core))
328
+ console.print()
329
+ console.print(f"[bold]{T('开始一项任务', 'Start a task')}[/bold] "
330
+ f"[dim]{T('代码 · 金融分析 · 物流', 'code · financial analysis · logistics')}[/dim]")
331
+ console.print(grid(entry))
332
+ console.print()
333
+ console.print(f"[dim]{T('更多', 'More')}: /help {topics} · all · <{T('命令', 'command')}>[/dim]")
334
+ console.print(f"[dim]@ {T('附加上下文', 'attaches context')} · ! {T('运行 shell 命令', 'runs a shell command')}"
335
+ f" · Esc {T('中断', 'interrupts')}[/dim]")
336
+ console.print()
337
+
338
+ def _print_help_topic(self, topic) -> None:
339
+ from aria_code.apps.cli.commands.catalog import short_description
340
+
341
+ zh = str(self.terminal.config.get("ui_lang", "en")).lower().startswith("zh")
342
+ rows = [(n, self.commands[n][1]) for n in topic.commands if n in self.commands]
343
+ title = topic.title_zh if zh else topic.title_en
344
+ if not self.context.has_rich:
345
+ print(f"\n{title}")
346
+ for name, desc in rows:
347
+ print(f" {name:16s} {desc}")
348
+ return
349
+ from rich.markup import escape
350
+
351
+ console = self.context.console
352
+ console.print()
353
+ console.print(f"[bold]{title}[/bold]")
354
+ for name, desc in rows:
355
+ console.print(f" [bold #C08050]{name:16s}[/bold #C08050][dim]{escape(desc)}[/dim]", highlight=False)
356
+ console.print()
357
+
251
358
  async def cmd_artifacts(self, args: str):
252
359
  from aria_code.ui.render.output import display_path as _display_path
253
360
  from aria_code.apps.cli.helpers import _copy_text_to_clipboard, _open_path_or_url, _reveal_path_in_finder
@@ -17,6 +17,13 @@ from pathlib import Path
17
17
  from typing import Iterator, List, Tuple
18
18
 
19
19
  from aria_code.ui.console import HAS_PT
20
+ from aria_code.apps.cli.commands.catalog import (
21
+ COMMAND_ALIASES,
22
+ CORE_SLASH_COMMANDS,
23
+ ENTRY_SLASH_COMMANDS,
24
+ popup_rank,
25
+ short_description,
26
+ )
20
27
  from aria_code.packages.aria_services.references import REFERENCE_KINDS, reference_search_roots
21
28
 
22
29
  _REFERENCE_KIND_NAMES = frozenset(item.name for item in REFERENCE_KINDS)
@@ -233,8 +240,19 @@ if HAS_PT:
233
240
  pattern = ltext # includes leading "/"
234
241
 
235
242
  # --- Build candidate list with scores ---
236
- candidates: list[tuple[int, str, list[int], str, str]] = []
237
- # (score, name, matched_indices, desc, category)
243
+ candidates: list[tuple[int, int, str, list[int], str, str]] = []
244
+ # (score, tier, name, matched_indices, desc, category)
245
+
246
+ # A bare "/" opens on the core commands and the entry points, in
247
+ # their set order — not on all 181 commands and skills. Every other
248
+ # command is one or two letters away.
249
+ if pattern == "/":
250
+ for name in (*CORE_SLASH_COMMANDS, *ENTRY_SLASH_COMMANDS):
251
+ if name in self.commands:
252
+ candidates.append((0, popup_rank(name), name, [], self.commands[name][1],
253
+ self._cmd_cat.get(name, "")))
254
+ yield from self._emit(candidates, pattern)
255
+ return
238
256
 
239
257
  all_cmds = list(self.commands.items())
240
258
  for name, (_, desc) in all_cmds:
@@ -247,8 +265,11 @@ if HAS_PT:
247
265
  continue
248
266
  indices = indices2
249
267
  score = _score(cmd_part, pattern, indices)
268
+ # An alias shows only when it is what was typed.
269
+ if name in COMMAND_ALIASES and score > 1:
270
+ continue
250
271
  cat = self._cmd_cat.get(name, "")
251
- candidates.append((score, name, indices, desc, cat))
272
+ candidates.append((score, popup_rank(name), name, indices, desc, cat))
252
273
 
253
274
  for s in self.skills:
254
275
  cmd = s["command"]
@@ -258,20 +279,23 @@ if HAS_PT:
258
279
  continue
259
280
  score = _score(cmd, pattern, indices)
260
281
  cat = self._cmd_cat.get(cmd, "")
261
- candidates.append((score, cmd, indices, desc, cat))
262
-
263
- # Sort: primary = score, secondary = name
264
- candidates.sort(key=lambda x: (x[0], x[1]))
265
-
266
- # Emit Completions
267
- for score, name, indices, desc, cat in candidates:
282
+ candidates.append((score, popup_rank(cmd), cmd, indices, desc, cat))
283
+
284
+ # Best match first; among equals, core commands, then entry points.
285
+ candidates.sort(key=lambda x: (x[0], x[1], x[2]))
286
+ # Letters scattered through a name ("/re" in "/providers") are noise
287
+ # once there is a popup's worth of closer matches.
288
+ if sum(1 for c in candidates if c[0] < 30) >= 8:
289
+ candidates = [c for c in candidates if c[0] < 30]
290
+ yield from self._emit(candidates, pattern)
291
+
292
+ def _emit(self, candidates, pattern: str) -> Iterator[Completion]:
293
+ for score, _tier, name, indices, desc, cat in candidates:
268
294
  # Build highlighted display (amber on matched chars)
269
295
  display_parts = _highlighted(name, indices if pattern != "/" else [])
270
296
 
271
- # Category badge as short suffix in display
272
- badge = _CAT_BADGE.get(cat, "")
273
- if badge:
274
- display_parts += [("class:fz-cat", f" {badge}")]
297
+ # No badge after the name: "/help sys" next to "Session · …"
298
+ # said the category twice.
275
299
 
276
300
  # Truncate description to ~45 chars for meta column
277
301
  cat_label = {
@@ -283,7 +307,8 @@ if HAS_PT:
283
307
  "设置": "运行设置" if self.lang == "zh" else "Runtime",
284
308
  "系统": "会话" if self.lang == "zh" else "Session",
285
309
  }.get(cat, "")
286
- meta_body = desc[:38] + ("…" if len(desc) > 38 else "")
310
+ desc = short_description(desc)
311
+ meta_body = desc[:44] + ("…" if len(desc) > 44 else "")
287
312
  meta_str = f"{cat_label} · {meta_body}" if cat_label else meta_body
288
313
 
289
314
  # start_position: replace the entire typed prefix
@@ -24,7 +24,8 @@ try:
24
24
  from prompt_toolkit.buffer import Buffer
25
25
  from prompt_toolkit.key_binding import KeyBindings
26
26
  from prompt_toolkit.layout.dimension import Dimension
27
- from prompt_toolkit.layout import Float, FloatContainer, HSplit, Layout, VSplit, Window
27
+ from prompt_toolkit.filters import is_done
28
+ from prompt_toolkit.layout import ConditionalContainer, Float, FloatContainer, HSplit, Layout, VSplit, Window
28
29
  from prompt_toolkit.layout.controls import FormattedTextControl
29
30
  from prompt_toolkit.layout.menus import CompletionsMenu
30
31
  from prompt_toolkit.layout.processors import Processor, Transformation
@@ -51,6 +52,7 @@ except ImportError:
51
52
  Application = Buffer = KeyBindings = Dimension = None # type: ignore
52
53
  Float = FloatContainer = HSplit = Layout = VSplit = Window = None # type: ignore
53
54
  FormattedTextControl = CompletionsMenu = TextArea = None # type: ignore
55
+ ConditionalContainer = is_done = None # type: ignore
54
56
 
55
57
 
56
58
  # ── Theme detection ────────────────────────────────────────────────────────────
@@ -202,6 +204,7 @@ PlaceholderProcessor = PromptAndPlaceholderProcessor
202
204
 
203
205
 
204
206
  INPUT_MAX_HEIGHT = 6
207
+ MENU_ROWS = 8 # completion rows shown at once, as Codex shows
205
208
 
206
209
 
207
210
  # ── Style ──────────────────────────────────────────────────────────────────────
@@ -399,17 +402,31 @@ def _build_panel_input_application(
399
402
  text_area,
400
403
  Window(width=1, content=FormattedTextControl(_input_pad, focusable=False)),
401
404
  ]),
402
- Window(height=1,
403
- content=FormattedTextControl(lambda: _input_rule(cfg), focusable=False)),
404
- # Status bar: transparent bg, dim model · cwd
405
- Window(height=1,
406
- content=FormattedTextControl(lambda: _status_bar(cfg), focusable=False)),
405
+ # Below the input: shown while typing, dropped once the prompt is
406
+ # submitted. The panel is not erased when done, so the rule and the
407
+ # status line used to stay behind in the scrollback after every
408
+ # question — "• model · cwd · rw · ctx" once per turn.
409
+ ConditionalContainer(
410
+ HSplit([
411
+ Window(height=1,
412
+ content=FormattedTextControl(lambda: _input_rule(cfg), focusable=False)),
413
+ # Status bar: transparent bg, dim model · cwd
414
+ Window(height=1,
415
+ content=FormattedTextControl(lambda: _status_bar(cfg), focusable=False)),
416
+ # Room for the completion menu. An inline application is as
417
+ # tall as its layout, so the menu was clipped to the two
418
+ # rows under the input — "/" showed /account and /accuracy.
419
+ Window(height=lambda: Dimension.exact(
420
+ MENU_ROWS if text_area.buffer.complete_state is not None else 0)),
421
+ ]),
422
+ filter=~is_done,
423
+ ),
407
424
  ]),
408
425
  floats=[
409
426
  Float(
410
427
  xcursor=True,
411
428
  ycursor=True,
412
- content=CompletionsMenu(max_height=12, scroll_offset=2),
429
+ content=CompletionsMenu(max_height=MENU_ROWS, scroll_offset=2),
413
430
  )
414
431
  ],
415
432
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aria-code
3
- Version: 0.82.0
3
+ Version: 0.83.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
@@ -693,6 +693,7 @@ tests/test_single_import_root.py
693
693
  tests/test_skill_agent_binding.py
694
694
  tests/test_skill_catalog.py
695
695
  tests/test_skill_loader.py
696
+ tests/test_slash_popup.py
696
697
  tests/test_spreadsheet_tools.py
697
698
  tests/test_sse_stream_contract.py
698
699
  tests/test_startup_dashboard.py
@@ -0,0 +1,162 @@
1
+ """"/" opens on what a session needs; /help fits on one screen.
2
+
3
+ The popup listed 181 entries — 167 commands and 14 skills — and /help ran to
4
+ about 90 lines. Codex lists only session controls under "/" and shows eight
5
+ rows. Every command still runs when typed; this only changes what is offered.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import io
11
+
12
+ import pytest
13
+
14
+ pytest.importorskip("prompt_toolkit")
15
+ from prompt_toolkit.document import Document
16
+ from rich.console import Console
17
+
18
+ from aria_code.apps.cli.commands.catalog import (
19
+ COMMAND_ALIASES,
20
+ CORE_SLASH_COMMANDS,
21
+ ENTRY_SLASH_COMMANDS,
22
+ HELP_TOPICS,
23
+ popup_rank,
24
+ short_description,
25
+ )
26
+ from aria_code.ui.completer import AriaPTCompleter
27
+
28
+
29
+ def _noop(_args):
30
+ return None
31
+
32
+
33
+ COMMANDS = {name: (_noop, f"{name[1:]} things: {name} ARG") for name in (
34
+ *CORE_SLASH_COMMANDS, *ENTRY_SLASH_COMMANDS, "/realty", "/read", "/risk", "/providers", "/services",
35
+ "/vision", "/upload-image", "/stat-arb", "/regen", "/recap", "/recall", "/rename", "/reject-change")}
36
+
37
+
38
+ def _popup(text, commands=COMMANDS, skills=()):
39
+ completer = AriaPTCompleter(commands, list(skills), [], lang="en")
40
+ return [item.text for item in completer.get_completions(Document(text), None)]
41
+
42
+
43
+ def test_a_bare_slash_offers_the_core_then_the_entry_points():
44
+ assert _popup("/") == [*CORE_SLASH_COMMANDS, *ENTRY_SLASH_COMMANDS]
45
+ assert len(_popup("/")) <= 24
46
+
47
+
48
+ def test_typing_reaches_every_command_and_ranks_the_tiers_first():
49
+ assert _popup("/ris")[0] == "/risk"
50
+ assert _popup("/stat")[:2] == ["/status", "/stat-arb"]
51
+ re = _popup("/re")
52
+ assert re[0] == "/review" and re.index("/report") < re.index("/realty")
53
+
54
+
55
+ def test_an_alias_shows_only_when_typed():
56
+ assert "/upload-image" not in _popup("/")
57
+ assert "/upload-image" not in _popup("/i")
58
+ assert _popup("/upl") == ["/upload-image"]
59
+ assert COMMAND_ALIASES["/upload-image"] == "/vision"
60
+
61
+
62
+ def test_scattered_matches_drop_out_once_there_are_enough_close_ones():
63
+ assert "/providers" not in _popup("/re")
64
+
65
+
66
+ def test_descriptions_lose_their_usage_tail():
67
+ assert short_description("Technical indicators: /ta AAPL [days=120]") == "Technical indicators"
68
+ assert short_description("Runtime: engine · model · tools · context") == "Runtime: engine · model · tools · context"
69
+ completer = AriaPTCompleter(COMMANDS, [], [], lang="en")
70
+ meta = str(next(completer.get_completions(Document("/ta"), None)).display_meta_text)
71
+ assert "/ta ARG" not in meta
72
+
73
+
74
+ def test_tiers_and_topics_are_consistent():
75
+ assert not set(CORE_SLASH_COMMANDS) & set(ENTRY_SLASH_COMMANDS)
76
+ assert popup_rank("/help") == 0 and popup_rank("/ta") == 1 and popup_rank("/realty") == 2
77
+ assert len({topic.key for topic in HELP_TOPICS}) == len(HELP_TOPICS)
78
+
79
+
80
+ def test_every_tiered_command_exists():
81
+ import sys
82
+
83
+ sys.argv = ["aria-code"]
84
+ import aria_code.aria_cli as cli
85
+
86
+ terminal = cli.ArtheraTerminal(dict(cli.DEFAULT_CONFIG))
87
+ table = terminal.commands.commands
88
+ missing = [name for name in (*CORE_SLASH_COMMANDS, *ENTRY_SLASH_COMMANDS) if name not in table]
89
+ missing += [name for topic in HELP_TOPICS for name in topic.commands if name not in table]
90
+ assert not missing, missing
91
+
92
+
93
+ @pytest.mark.parametrize("width, lang", [(100, "en"), (80, "en"), (100, "zh")])
94
+ def test_help_fits_on_one_screen(width, lang, monkeypatch):
95
+ import sys
96
+
97
+ sys.argv = ["aria-code"]
98
+ import aria_code.aria_cli as cli
99
+
100
+ terminal = cli.ArtheraTerminal(dict(cli.DEFAULT_CONFIG, ui_lang=lang))
101
+ console = Console(file=io.StringIO(), width=width, color_system=None)
102
+ monkeypatch.setattr(terminal.commands.context, "console", console)
103
+ monkeypatch.setattr(terminal.commands.context, "has_rich", True)
104
+ terminal.commands.cmd_help("")
105
+ lines = console.file.getvalue().splitlines()
106
+ assert len(lines) <= 40
107
+ assert all(len(line.rstrip()) <= width for line in lines)
108
+ text = "\n".join(lines)
109
+ assert "/help" in text and "/inventory" in text and "/ta" in text
110
+ assert "/gen-bot" not in text # skills and the long tail are a topic away
111
+
112
+
113
+ def test_help_topics_and_all_still_list_everything(monkeypatch):
114
+ import sys
115
+
116
+ sys.argv = ["aria-code"]
117
+ import aria_code.aria_cli as cli
118
+
119
+ terminal = cli.ArtheraTerminal(dict(cli.DEFAULT_CONFIG))
120
+ console = Console(file=io.StringIO(), width=120, color_system=None)
121
+ monkeypatch.setattr(terminal.commands.context, "console", console)
122
+ monkeypatch.setattr(terminal.commands.context, "has_rich", True)
123
+ terminal.commands.cmd_help("market")
124
+ market = console.file.getvalue()
125
+ assert "/quote" in market and "/ta AAPL [days=120]" in market
126
+ console.file = io.StringIO()
127
+ terminal.commands.cmd_help("all")
128
+ assert len(console.file.getvalue().splitlines()) > 60
129
+
130
+
131
+ def _containers(container):
132
+ yield container
133
+ for child in container.get_children():
134
+ yield from _containers(child)
135
+
136
+
137
+ def test_the_menu_has_room_and_the_footer_leaves_with_the_prompt():
138
+ """The inline panel is as tall as its layout: the menu was clipped to two
139
+ rows under the input, and the rule and status line stayed in the
140
+ scrollback after every question."""
141
+ import asyncio
142
+
143
+ from prompt_toolkit.application.current import set_app
144
+ from prompt_toolkit.buffer import CompletionState
145
+ from prompt_toolkit.completion import Completion
146
+ from prompt_toolkit.layout import ConditionalContainer, Window
147
+
148
+ from aria_code.ui.input_box import MENU_ROWS, PanelInputConfig, _build_panel_input_application
149
+
150
+ app = _build_panel_input_application(config=PanelInputConfig())
151
+ footer = next(c for c in _containers(app.layout.container) if isinstance(c, ConditionalContainer))
152
+ spacer = [c for c in _containers(footer.content) if isinstance(c, Window)][-1]
153
+ buffer = app.layout.current_buffer
154
+ assert spacer.preferred_height(80, 40).preferred == 0
155
+ buffer.complete_state = CompletionState(buffer.document, [Completion("/help")])
156
+ assert spacer.preferred_height(80, 40).preferred == MENU_ROWS
157
+
158
+ with set_app(app):
159
+ assert footer.filter() # typing: rule, status line, menu room
160
+ app.future = asyncio.get_event_loop_policy().new_event_loop().create_future()
161
+ app.future.set_result("")
162
+ assert not footer.filter() # submitted: only "› prompt" remains