aria-code 0.81.0__tar.gz → 0.82.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.
- {aria_code-0.81.0/src/aria_code.egg-info → aria_code-0.82.0}/PKG-INFO +1 -1
- {aria_code-0.81.0 → aria_code-0.82.0}/pyproject.toml +1 -1
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/_version.py +1 -1
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/analysis_cmds.py +13 -11
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/broker_cmds.py +5 -3
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/business_workflow_cmds.py +5 -2
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/core_cmds.py +4 -3
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/data_cmds.py +11 -7
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/market_cmds.py +8 -6
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/orchestrator_cmds.py +3 -1
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/portfolio_cmds.py +3 -1
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/handlers/market_handlers.py +9 -4
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/i18n.py +11 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/providers/base.py +53 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/utils/market_detect.py +35 -2
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/aria_cli.py +9 -2
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/runtime/agent_loop.py +39 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/ui/render/market.py +23 -15
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/ui/render/output.py +19 -2
- {aria_code-0.81.0 → aria_code-0.82.0/src/aria_code.egg-info}/PKG-INFO +1 -1
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code.egg-info/SOURCES.txt +3 -0
- aria_code-0.82.0/tests/test_first_run_output.py +107 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_market_answers_in_english.py +6 -0
- aria_code-0.82.0/tests/test_numeric_listings.py +57 -0
- aria_code-0.82.0/tests/test_status_language.py +70 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/LICENSE +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/NOTICE +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/README.md +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/setup.cfg +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/adk_apps/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/adk_apps/aria_code_review/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/adk_apps/aria_code_review/agent.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/adk_apps/aria_research/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/adk_apps/aria_research/agent.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/base.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/code_review.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/deep/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/deep/calibration_loop.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/deep/critic.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/deep/deepen.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/deep/models.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/deep/pipeline.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/deep/quant_fusion.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/deep/themes.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/deep/tiers.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/engineering/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/engineering/coder.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/engineering/tester.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/financial/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/financial/cashflow_burn.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/financial/catalyst.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/financial/corporate_finance.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/financial/debate.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/financial/earnings.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/financial/fundamental.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/financial/macro.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/financial/news.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/financial/risk.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/financial/sector.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/financial/strategist.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/financial/stripe_revenue.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/financial/synthesis.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/financial/technical.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/orchestrator.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/portfolio_agent.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/realty/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/realty/asset_diagnosis.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/realty/business_match.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/realty/cashflow_verify.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/realty/contract_rules.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/realty/energy_anomaly.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/realty/exit_settlement.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/realty/fulfillment_risk.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/realty/ops_optimize.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/realty/revenue_share.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/registry.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/signal_scheme.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/sports/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/sports/football_agent.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/supervisor.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/team.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/warehouse/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/warehouse/contracts.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/warehouse/dashboard.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/warehouse/fulfillment_leadtime.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/warehouse/inbound_exceptions.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/warehouse/inventory_health.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/warehouse/local_run.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/warehouse/local_snapshot.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/warehouse/logistics_cost.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/warehouse/logistics_sync.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/agents/warehouse/workflow.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/aliyun_data_client.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/README.md +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/channels/README.md +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/channels/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/channels/approvals.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/channels/conversation.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/channels/digest.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/channels/intake.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/channels/registry.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/channels/tradingview.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/README.md +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/_optional.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/bootstrap.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/broker_render.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/codegen_paths.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/_business_render.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/_ui.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/ashare_prediction_cmds.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/auth_cmds.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/backtest_cmds.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/canvas_cmds.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/catalog.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/diagnostic_cmds.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/diagnostic_ops_cmds.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/file_cmds.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/finance_service_cmds.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/fx_commodity_cmds.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/market.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/market_context.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/market_render.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/model_cmds.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/ops_cmds.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/pdf_export_cmds.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/report.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/scaffold_templates.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/session_cmds.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/session_ux_cmds.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/team.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/team_render.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/ui_cmds.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/warehouse_cmds.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/workflow_cmds.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/workspace_cmds.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/config_paths.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/config_store.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/constants.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/context.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/deterministic.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/direct.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/finance_service_catalog.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/football_reports.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/github_app_auth.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/google_login.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/handlers/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/handlers/broker_handlers.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/handlers/chart_handlers.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/handlers/realty_handlers.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/handlers/sports_handlers.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/handlers/strategy_advice.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/helpers.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/hooks.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/intent.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/intent_router.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/intent_signals.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/lifecycle_hooks.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/local_tool_schemas.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/main.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/market_hours.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/market_metadata.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/market_universe.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/message_processing.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/model_catalog.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/pdf_report.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/plan_mode.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/plotly_html.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/prediction_feedback.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/preflight.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/project_aria.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/prompt_assembly.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/prompts/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/prompts/coding.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/prompts/select.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/prompts/system_prompts.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/prompts/ui.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/provider_endpoints.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/provider_keys.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/providers/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/providers/chat_routing.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/providers/collaboration.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/providers/llm/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/providers/llm/offline_responses.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/providers/llm/ollama_stream.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/providers/llm/response_cache.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/providers/llm/sse_stream.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/providers/runtime_bridge.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/providers/vertexai_stream.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/review_runner.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/runtime_consumer.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/sandbox.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/session_export.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/session_jsonl.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/session_store.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/skills_catalog.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/todo_tracker.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/tool_executor.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/tool_registry.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/tool_scope.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/tools/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/tools/context.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/tools/file_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/tools/market_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/tools/notebook_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/tools/system_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/tools/write_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/tradingview_bridge.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/turn_planning.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/update_check.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/updater.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/utils/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/daemon/README.md +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/vscode/README.md +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/vscode/package.json +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/aria_daemon.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/aria_feishu_bot.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/aria_mcp_server.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/aria_relay_client.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/aria_relay_server.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/aria_telegram_bot.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/ariarc.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/artifacts.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/backtest_engine.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/backtest_report.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/brokers/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/brokers/automation.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/brokers/base.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/brokers/capabilities.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/brokers/cn/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/brokers/cn/easytrader_broker.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/brokers/cn/futu_broker.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/brokers/cn/longbridge_broker.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/brokers/cn/tiger_broker.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/brokers/cn/xtquant_broker.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/brokers/config.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/brokers/intl/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/brokers/intl/alpaca_broker.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/brokers/intl/ibkr_broker.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/brokers/intl/trading212_broker.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/brokers/intl/webull_broker.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/brokers/paper_broker.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/brokers/planning.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/brokers/registry.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/brokers/trading.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/canva_client.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/change_store.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/clients/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/clients/aliyun_data_client.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/clients/aria_relay_client.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/clients/canva_client.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/clients/figma_client.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/clients/football_data_client.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/clients/kling_video_client.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/clients/market_data_client.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/clients/openai_image_client.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/clients/runway_video_client.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/clients/warehouse_erp_client.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/cloud_memory.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/command_safety.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/computer_use_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/dashboard_generator.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/data_analysis_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/data_cleaner.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/data_service.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/datasources/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/datasources/base.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/datasources/router.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/datasources/sources/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/datasources/sources/akshare_source.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/datasources/sources/alpha_vantage_source.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/datasources/sources/edgar_source.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/datasources/sources/finnhub_source.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/datasources/sources/fred_source.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/datasources/sources/tushare_source.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/datasources/sources/web_scraper_source.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/datasources/sources/world_bank_source.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/datasources/sources/yfinance_source.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/demo_player.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/doctor.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/domain/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/domain/backtest_engine.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/domain/backtest_report.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/domain/finance_formulas.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/domain/portfolio_ledger.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/domain/strategy_vault.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/evals/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/evals/harness.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/evals/runner.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/external_agent_runner.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/figma_client.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/file_analysis_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/finance_formulas.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/football_data_client.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/image_gen_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/intent_classifier.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/kling_video_client.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/licensing.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/local_finance_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/local_image_provider.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/local_llm_provider.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/macro_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/markdown_pdf.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/market_data_client.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/mcp_client.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/memory_manager.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/model_capability.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/notification_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/openai_image_client.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/adk_bridge/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/adk_bridge/code_review_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/adk_bridge/market_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_agents/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_agents/manifest.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_core/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_core/architecture.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_core/export.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_core/manifest.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_core/paths.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_core/secure_file.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_infra/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_infra/arthera.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_infra/doctor.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_infra/product.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_mcp/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_mcp/bridge.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_mcp/circuit.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_mcp/config.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_mcp/installer.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_mcp/server.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_mcp/tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_sdk/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_sdk/client.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_sdk/providers.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_sdk/streaming.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_sdk/types.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_services/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_services/cache.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_services/context.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_services/context_checkpoints.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_services/data.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_services/provider_health.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_services/references.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_services/registry.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_services/research_protocol.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_services/research_quality.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_services/settings.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_services/usage.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_skills/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_skills/catalog.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_skills/loader.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_skills/registry.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_tools/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_tools/financial/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_tools/financial/_paths.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_tools/financial/compliance.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_tools/financial/factors.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_tools/financial/risk_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_tools/financial/strategy.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/aria_tools/registry.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/quant_engine/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/quant_engine/_namespace.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/quant_engine/backtest/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/quant_engine/backtest/core.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/quant_engine/backtest/engine.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/quant_engine/portfolio/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/quant_engine/portfolio/optimizer.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/quant_engine/sports/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/quant_engine/sports/calibrator.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/quant_engine/sports/dixon_coles.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/quant_engine/sports/elo.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/quant_engine/sports/form.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/quant_engine/sports/h2h.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/quant_engine/sports/ml_model.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/quant_engine/sports/predictor.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/quant_engine/sports/tracker.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/quant_engine/stochastic/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/quant_engine/stochastic/gbm_enhanced.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/quant_engine/stochastic/ito_calculus.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/quant_engine/stochastic/kelly_criterion.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/quant_engine/stochastic/monte_carlo_advanced.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/quant_engine/stochastic/options_pricing.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packages/quant_engine/stochastic/stochastic_processes.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packs/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packs/base.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packs/finance/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packs/logistics/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packs/payments/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packs/realty/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packs/registry.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/packs/rules.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/plan_utils.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/plugin_loader.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/portfolio_ledger.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/preview_server.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/privacy/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/privacy/feedback.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/project_review.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/project_review_api.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/project_review_server.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/project_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/providers/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/providers/llm/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/providers/llm/anthropic.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/providers/llm/autoconfig.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/providers/llm/base.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/providers/llm/custom.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/providers/llm/ollama.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/providers/llm/openai_compat.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/providers/llm/registry.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/providers/local_image_provider.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/providers/local_llm_provider.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/providers/tool_messages.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/realty_data_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/relay_store.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/report_exporters.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/report_generator.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/review_service.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/runtime/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/runtime/acceptance.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/runtime/approval.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/runtime/budget.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/runtime/checkpoints.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/runtime/crash_report.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/runtime/events.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/runtime/gateway.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/runtime/lsp.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/runtime/orchestrator.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/runtime/repo_map.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/runtime/run_state.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/runtime/run_store.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/runtime/self_healing.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/runtime/subagent.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/runtime/task_ledger.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/runtime/task_orchestrator.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/runtime/tool_executor.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/runtime/tool_policy.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/runtime/worktrees.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/runway_video_client.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/safety/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/safety/permissions.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/safety/service.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/setup_wizard.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/spreadsheet_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/strategy_vault.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/tools/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/tools/artifact_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/tools/broker_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/tools/build_quant_engine.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/tools/code_audit_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/tools/computer_use_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/tools/data_analysis_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/tools/enterprise_finance_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/tools/extended_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/tools/file_analysis_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/tools/image_gen_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/tools/local_finance_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/tools/logistics_carriers.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/tools/logistics_inventory.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/tools/logistics_io.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/tools/logistics_tenancy.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/tools/logistics_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/tools/macro_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/tools/notification_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/tools/project_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/tools/realty_data_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/tools/spreadsheet_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/tools/stripe_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/ui/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/ui/banner.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/ui/completer.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/ui/console.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/ui/image_render.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/ui/input_box.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/ui/picker.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/ui/render/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/ui/render/finance.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/ui/render/responsive.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/ui/render/team.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/ui/robot.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/ui/startup_dashboard.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/utils/vscode_uri.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/video_analysis.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/video_editor.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/workspace/__init__.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/workspace/files.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/workspace/verify.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/workspace_changes.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/workspace_context.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/workspace_service.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/workspace_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code.egg-info/dependency_links.txt +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code.egg-info/entry_points.txt +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code.egg-info/requires.txt +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code.egg-info/top_level.txt +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_adk_market_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_agent_team_fallback.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_analyze_file_tool.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_architecture_ledger_is_true.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_architecture_report.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_aria_cli_core.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_aria_mcp_server.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_aria_sdk.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_artifact_publishing.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_artifacts_and_reports.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_ashare_prediction_cmds.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_backtest_cmds.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_backtest_engine.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_backtest_report.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_binary_bundles_runtime_imports.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_broken_akshare_is_optional.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_broker_automation.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_broker_chat_confirm_gate.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_broker_planning.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_broker_safety.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_broker_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_budget.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_business_workflow_cmds.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_canva_client.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_canvas_cmds.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_card_approvals.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_channel_intake.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_channels.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_chart_handlers.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_chat_bots_fail_closed.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_chat_routing.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_ci_security_workflow.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_cli_app_split.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_cli_bootstrap.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_cli_config_store.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_cli_lifecycle_hooks.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_cli_runtime_consumer.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_cli_tool_executor_module.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_cli_updater.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_cloud_memory.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_code_audit_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_code_review_agent.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_codegen_output.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_coder_tester_self_healing.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_coder_tool_safety.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_collaboration.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_command_loggers.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_command_safety.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_completions_builder.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_config_paths.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_configured_provider.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_container_entrypoint.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_container_entrypoints.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_context_checkpoints.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_context_references.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_context_service.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_conversation_core.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_crash_report.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_credential_file_permissions.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_custom_providers.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_daemon_gateway_config.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_dashboard_generator.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_data_service.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_data_service_imports.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_datasource_routing.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_deep_analysis.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_degrades_without_quant_engine.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_dispatcher_pins_match_the_release.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_doctor.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_doctor_describes_the_current_install.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_doctor_npm_scope.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_engine_boundary.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_enterprise_tool_honesty.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_env_switch_docs.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_evals_harness.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_event_import_roots.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_extended_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_feishu_swarm_config.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_finalize_release.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_finance_renderers.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_finance_service_catalog.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_first_run_works.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_football_agent.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_football_prediction_output.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_google_cloud_models.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_google_cloud_routing.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_google_login.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_google_search_provider.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_headless_is_agentic.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_honest_surfaces.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_image_gen_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_image_inputs.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_import_graph_budget.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_intent_router.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_intent_signals.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_kling_video_client.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_lazy_rebind.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_legacy_module_imports.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_license_consistency.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_licensing.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_local_image_provider.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_logistics_3pl.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_logistics_and_finance_agents.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_lsp.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_markdown_pdf.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_market_data_client.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_market_history_inheritance.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_market_history_tool.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_market_hours.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_market_questions_on_backend.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_market_symbol_extraction.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_market_universe.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_mcp_circuit.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_mcp_client.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_model_capability_registry.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_model_choice_is_the_users.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_model_selection_state.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_native_binary_entrypoints.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_native_installer.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_new_modules.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_no_hardcoded_developer_paths.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_no_uncommitted_imports.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_ollama_stream_imports.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_ollama_stream_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_openai_image_client.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_operations_suite.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_output_rendering.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_packages_facade.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_packaging_constraints.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_packaging_manifest.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_packs_domains.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_pdf_report.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_pick_best_installed_model.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_plan_mode.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_platform_package_assembly.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_platform_packages.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_plotly_html_output.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_portfolio_ledger.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_post_turn_context_decision.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_preflight.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_preview_server.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_privacy_feedback.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_project_aria.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_project_review.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_project_review_api.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_prompt_assembly.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_prompt_selection.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_provider_autoconfig.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_provider_error_messages.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_provider_integration.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_provider_registry.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_public_service_status.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_quant_engine_namespace.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_rebind_contract.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_rebind_namespace_contract.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_relay_client_credentials.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_relay_event_verification.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_relay_sends_for_clients.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_relay_store.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_relay_url.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_release_chain.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_release_commit_identity.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_release_push_is_atomic.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_release_reaches_the_registries.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_release_verification_waits.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_release_workflow_permissions.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_report_charts.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_report_generator.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_research_protocol.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_research_quality.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_responsive_rendering.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_review_service.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_root_module_budget.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_rsi_without_pandas_ta.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_runtime_acceptance.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_runtime_agent_loop.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_runtime_approval.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_runtime_bridge.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_runtime_bridge_fallback.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_runtime_checkpoints.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_runtime_event_identity.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_runtime_gateway.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_runtime_repo_map.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_runtime_run_store.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_runtime_tool_executor.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_runtime_worktrees.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_runway_video_client.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_safety_permissions.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_safety_service.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_safety_service_adoption.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_service_diagnostics_security.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_session_search.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_settings_service.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_shipper_digest.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_single_import_root.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_skill_agent_binding.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_skill_catalog.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_skill_loader.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_spreadsheet_tools.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_sse_stream_contract.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_startup_dashboard.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_startup_latency.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_streaming_pipeline.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_stripe_agent.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_subagent.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_supervisor_routing.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_system_prompts.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_system_tools_output.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_task_orchestrator.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_team_synthesis.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_tls_trust_store.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_tool_policy.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_tool_rounds_on_openai_apis.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_tool_scope.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_trading_service.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_tradingview_bridge.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_turn_planning.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_ui_completer_references.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_ui_console_theme.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_ui_input_box.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_ui_language_and_model.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_ui_robot_banner.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_update_health_routes.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_verification_hint.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_verification_policy.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_version_consistency.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_version_counter.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_video_analysis.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_video_editor.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_vscode_mcp.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_warehouse_agents.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_warehouse_cli_registration.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_warehouse_erp_client.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_warehouse_workflow.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_wheel_is_installable.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_workspace_changes.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_workspace_context.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_workspace_files.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_workspace_scope.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.0}/tests/test_workspace_service.py +0 -0
- {aria_code-0.81.0 → aria_code-0.82.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.
|
|
3
|
+
Version: 0.82.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.
|
|
7
|
+
version = "0.82.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" }
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
from aria_code.apps.cli.i18n import ui_text
|
|
6
|
+
|
|
5
7
|
from aria_code.apps.cli.commands.market import parse_analysis_args
|
|
6
8
|
from aria_code.apps.cli.commands.market_context import context_has_price
|
|
7
9
|
|
|
@@ -98,7 +100,7 @@ class AnalysisCommandsMixin:
|
|
|
98
100
|
response_lang = parsed.lang or ("zh" if is_cn else "en")
|
|
99
101
|
|
|
100
102
|
if self.context.has_rich:
|
|
101
|
-
with self.context.console.status(f"[dim]正在获取 {symbol}
|
|
103
|
+
with self.context.console.status(f"[dim]{ui_text(self, f'正在获取 {symbol} 数据', f'Fetching {symbol} data')}...[/dim]", spinner="dots"):
|
|
102
104
|
ctx = await self._build_analyze_context(symbol, is_cn)
|
|
103
105
|
else:
|
|
104
106
|
print(f"Fetching data for {symbol}...")
|
|
@@ -166,7 +168,7 @@ class AnalysisCommandsMixin:
|
|
|
166
168
|
|
|
167
169
|
if region in ("us", "all"):
|
|
168
170
|
if self.context.has_rich:
|
|
169
|
-
with self.context.console.status("[dim]获取美国宏观数据 (FRED)...[/dim]", spinner="dots"):
|
|
171
|
+
with self.context.console.status(f"[dim]{ui_text(self, '获取美国宏观数据 (FRED)', 'Fetching US macro data (FRED)')}...[/dim]", spinner="dots"):
|
|
170
172
|
r = await loop.run_in_executor(None, lambda: get_us_macro(indicator if region == "us" else "all"))
|
|
171
173
|
else:
|
|
172
174
|
r = get_us_macro(indicator if region == "us" else "all")
|
|
@@ -174,7 +176,7 @@ class AnalysisCommandsMixin:
|
|
|
174
176
|
|
|
175
177
|
if region in ("cn", "all"):
|
|
176
178
|
if self.context.has_rich:
|
|
177
|
-
with self.context.console.status("[dim]获取中国宏观数据 (akshare)...[/dim]", spinner="dots"):
|
|
179
|
+
with self.context.console.status(f"[dim]{ui_text(self, '获取中国宏观数据 (akshare)', 'Fetching China macro data (akshare)')}...[/dim]", spinner="dots"):
|
|
178
180
|
r_cn = await loop.run_in_executor(None, lambda: get_cn_macro(indicator if region == "cn" else "all"))
|
|
179
181
|
else:
|
|
180
182
|
r_cn = get_cn_macro(indicator if region == "cn" else "all")
|
|
@@ -182,7 +184,7 @@ class AnalysisCommandsMixin:
|
|
|
182
184
|
|
|
183
185
|
if region in ("rates", "all"):
|
|
184
186
|
if self.context.has_rich:
|
|
185
|
-
with self.context.console.status("[dim]
|
|
187
|
+
with self.context.console.status(f"[dim]{ui_text(self, '获取央行利率', 'Fetching central bank rates')}...[/dim]", spinner="dots"):
|
|
186
188
|
r_rates = await loop.run_in_executor(None, get_central_bank_rates)
|
|
187
189
|
else:
|
|
188
190
|
r_rates = get_central_bank_rates()
|
|
@@ -190,7 +192,7 @@ class AnalysisCommandsMixin:
|
|
|
190
192
|
|
|
191
193
|
if region == "calendar":
|
|
192
194
|
if self.context.has_rich:
|
|
193
|
-
with self.context.console.status("[dim]
|
|
195
|
+
with self.context.console.status(f"[dim]{ui_text(self, '获取经济日历', 'Fetching the economic calendar')}...[/dim]", spinner="dots"):
|
|
194
196
|
r_cal = await loop.run_in_executor(None, lambda: get_economic_calendar(7))
|
|
195
197
|
else:
|
|
196
198
|
r_cal = get_economic_calendar(7)
|
|
@@ -216,7 +218,7 @@ class AnalysisCommandsMixin:
|
|
|
216
218
|
import asyncio as _asyncio
|
|
217
219
|
loop = _asyncio.get_event_loop()
|
|
218
220
|
if self.context.has_rich:
|
|
219
|
-
with self.context.console.status(f"[dim]获取 {symbol}
|
|
221
|
+
with self.context.console.status(f"[dim]{ui_text(self, f'获取 {symbol} 期权链', f'Fetching the {symbol} option chain')}...[/dim]", spinner="dots"):
|
|
220
222
|
from local_finance_tools import _get_options_chain
|
|
221
223
|
r = await loop.run_in_executor(None, _get_options_chain,
|
|
222
224
|
{"symbol": symbol, "type": opt_type, "expiry": expiry, "limit": 20})
|
|
@@ -281,7 +283,7 @@ class AnalysisCommandsMixin:
|
|
|
281
283
|
import asyncio as _asyncio
|
|
282
284
|
loop = _asyncio.get_event_loop()
|
|
283
285
|
if self.context.has_rich:
|
|
284
|
-
with self.context.console.status(f"[dim]计算 {symbol}
|
|
286
|
+
with self.context.console.status(f"[dim]{ui_text(self, f'计算 {symbol} 财务质量评分', f'Scoring {symbol} financial quality')}...[/dim]", spinner="dots"):
|
|
285
287
|
from local_finance_tools import _piotroski_fscore, _altman_zscore
|
|
286
288
|
f_r = await loop.run_in_executor(None, _piotroski_fscore, {"symbol": symbol})
|
|
287
289
|
z_r = await loop.run_in_executor(None, _altman_zscore, {"symbol": symbol})
|
|
@@ -303,7 +305,7 @@ class AnalysisCommandsMixin:
|
|
|
303
305
|
import asyncio as _asyncio
|
|
304
306
|
loop = _asyncio.get_event_loop()
|
|
305
307
|
if self.context.has_rich:
|
|
306
|
-
with self.context.console.status(f"[dim]计算 {symbol}
|
|
308
|
+
with self.context.console.status(f"[dim]{ui_text(self, f'计算 {symbol} 一目均衡表', f'Computing {symbol} Ichimoku')}...[/dim]", spinner="dots"):
|
|
307
309
|
from local_finance_tools import _calculate_ichimoku
|
|
308
310
|
r = await loop.run_in_executor(None, _calculate_ichimoku, {"symbol": symbol})
|
|
309
311
|
else:
|
|
@@ -322,7 +324,7 @@ class AnalysisCommandsMixin:
|
|
|
322
324
|
import asyncio as _asyncio
|
|
323
325
|
loop = _asyncio.get_event_loop()
|
|
324
326
|
if self.context.has_rich:
|
|
325
|
-
with self.context.console.status("[dim]
|
|
327
|
+
with self.context.console.status(f"[dim]{ui_text(self, '获取恐惧贪婪指数', 'Fetching the Fear & Greed index')}...[/dim]", spinner="dots"):
|
|
326
328
|
from local_finance_tools import _get_fear_greed_index
|
|
327
329
|
r = await loop.run_in_executor(None, _get_fear_greed_index, {})
|
|
328
330
|
else:
|
|
@@ -356,7 +358,7 @@ class AnalysisCommandsMixin:
|
|
|
356
358
|
loop = _asyncio.get_event_loop()
|
|
357
359
|
if compare_mode:
|
|
358
360
|
if self.context.has_rich:
|
|
359
|
-
with self.context.console.status("[dim]并行查询 binance / okx / bybit...[/dim]", spinner="dots"):
|
|
361
|
+
with self.context.console.status(f"[dim]{ui_text(self, '并行查询 binance / okx / bybit', 'Querying binance / okx / bybit in parallel')}...[/dim]", spinner="dots"):
|
|
360
362
|
from local_finance_tools import _get_funding_rates_compare
|
|
361
363
|
r = await loop.run_in_executor(None, _get_funding_rates_compare, {"symbols": syms})
|
|
362
364
|
else:
|
|
@@ -365,7 +367,7 @@ class AnalysisCommandsMixin:
|
|
|
365
367
|
_render_funding_compare(r)
|
|
366
368
|
else:
|
|
367
369
|
if self.context.has_rich:
|
|
368
|
-
with self.context.console.status(f"[dim]获取 {exchange}
|
|
370
|
+
with self.context.console.status(f"[dim]{ui_text(self, f'获取 {exchange} 资金费率', f'Fetching {exchange} funding rates')}...[/dim]", spinner="dots"):
|
|
369
371
|
from local_finance_tools import _get_funding_rates
|
|
370
372
|
r = await loop.run_in_executor(None, _get_funding_rates, {"exchange": exchange, "symbols": syms})
|
|
371
373
|
else:
|
|
@@ -6,6 +6,8 @@ imported lazily inside each method body to avoid circular imports at load time.
|
|
|
6
6
|
|
|
7
7
|
from __future__ import annotations
|
|
8
8
|
|
|
9
|
+
from aria_code.apps.cli.i18n import ui_text
|
|
10
|
+
|
|
9
11
|
from ._ui import Panel, print_error, rich_box
|
|
10
12
|
from aria_code.packages.aria_core.paths import aria_home
|
|
11
13
|
|
|
@@ -389,7 +391,7 @@ class BrokerCommandsMixin:
|
|
|
389
391
|
label = broker_id
|
|
390
392
|
try:
|
|
391
393
|
if self.context.has_rich:
|
|
392
|
-
with self.context.console.status(f"[dim]正在连接 {broker_id}...[/dim]", spinner="dots"):
|
|
394
|
+
with self.context.console.status(f"[dim]{ui_text(self, f'正在连接 {broker_id}', f'Connecting to {broker_id}')}...[/dim]", spinner="dots"):
|
|
393
395
|
import asyncio as _aio
|
|
394
396
|
loop = _aio.get_event_loop()
|
|
395
397
|
broker = await loop.run_in_executor(None, reg.connect, broker_id)
|
|
@@ -859,7 +861,7 @@ class BrokerCommandsMixin:
|
|
|
859
861
|
if not broker:
|
|
860
862
|
return
|
|
861
863
|
import asyncio as _aio
|
|
862
|
-
with self.context.console.status("[dim]
|
|
864
|
+
with self.context.console.status(f"[dim]{ui_text(self, '获取持仓', 'Fetching positions')}...[/dim]", spinner="dots") if self.context.has_rich else _null_ctx():
|
|
863
865
|
pos = await _aio.get_event_loop().run_in_executor(None, broker.positions)
|
|
864
866
|
_print_broker_positions(pos, broker.label, broker.config.get("currency","CNY"))
|
|
865
867
|
except Exception as e:
|
|
@@ -889,7 +891,7 @@ class BrokerCommandsMixin:
|
|
|
889
891
|
if not broker:
|
|
890
892
|
return
|
|
891
893
|
import asyncio as _aio
|
|
892
|
-
with self.context.console.status("[dim]
|
|
894
|
+
with self.context.console.status(f"[dim]{ui_text(self, '获取订单', 'Fetching orders')}...[/dim]", spinner="dots") if self.context.has_rich else _null_ctx():
|
|
893
895
|
orders = await _aio.get_event_loop().run_in_executor(
|
|
894
896
|
None, lambda: broker.orders(status=status, limit=30)
|
|
895
897
|
)
|
{aria_code-0.81.0 → aria_code-0.82.0}/src/aria_code/apps/cli/commands/business_workflow_cmds.py
RENAMED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
from aria_code.apps.cli.i18n import ui_text
|
|
6
|
+
|
|
5
7
|
from ._business_render import p, print_realty_result, print_risk_scan
|
|
6
8
|
|
|
7
9
|
|
|
@@ -275,7 +277,7 @@ class BusinessWorkflowCommandsMixin:
|
|
|
275
277
|
|
|
276
278
|
async def _run_realty_agent(self, agent_name: str, project_id: str, input_data: dict):
|
|
277
279
|
if self.context.has_rich:
|
|
278
|
-
with self.context.console.status(f"[dim]运行 {agent_name} Agent...[/dim]", spinner="dots"):
|
|
280
|
+
with self.context.console.status(f"[dim]{ui_text(self, f'运行 {agent_name} Agent', f'Running the {agent_name} agent')}...[/dim]", spinner="dots"):
|
|
279
281
|
result = await self._call_realty_agent(agent_name, project_id, input_data)
|
|
280
282
|
else:
|
|
281
283
|
print(f"Running {agent_name}...")
|
|
@@ -286,7 +288,8 @@ class BusinessWorkflowCommandsMixin:
|
|
|
286
288
|
async def _run_realty_team(self, agents: list, project_id: str, input_data: dict):
|
|
287
289
|
import asyncio
|
|
288
290
|
if self.context.has_rich:
|
|
289
|
-
|
|
291
|
+
_names = ', '.join(agents)
|
|
292
|
+
with self.context.console.status(f"[dim]{ui_text(self, f'并行扫描 {_names}', f'Scanning {_names} in parallel')}...[/dim]", spinner="dots"):
|
|
290
293
|
tasks = [self._call_realty_agent(n, project_id, input_data) for n in agents]
|
|
291
294
|
results = await asyncio.gather(*tasks, return_exceptions=False)
|
|
292
295
|
else:
|
|
@@ -13,6 +13,7 @@ NameError,而这正是 requires-python = "<3.14,>=3.10" 声明支持的全部
|
|
|
13
13
|
全绿。已发布的 4.3.0 同样中招:pip install 后运行 aria-code 直接崩溃。
|
|
14
14
|
"""
|
|
15
15
|
|
|
16
|
+
from aria_code.apps.cli.i18n import ui_text
|
|
16
17
|
from ._ui import print_error
|
|
17
18
|
|
|
18
19
|
import pathlib
|
|
@@ -2240,7 +2241,7 @@ class CoreCommandsMixin:
|
|
|
2240
2241
|
return
|
|
2241
2242
|
mdc = _get_mdc()
|
|
2242
2243
|
if self.context.has_rich:
|
|
2243
|
-
with self.context.console.status("[dim]
|
|
2244
|
+
with self.context.console.status(f"[dim]{ui_text(self, '获取全球指数', 'Fetching global indices')}...[/dim]", spinner="dots"):
|
|
2244
2245
|
r = mdc.indices()
|
|
2245
2246
|
else:
|
|
2246
2247
|
print(" 获取全球指数...")
|
|
@@ -2287,7 +2288,7 @@ class CoreCommandsMixin:
|
|
|
2287
2288
|
|
|
2288
2289
|
mdc = _get_mdc()
|
|
2289
2290
|
if self.context.has_rich:
|
|
2290
|
-
with self.context.console.status(f"[dim]获取{market.upper()}
|
|
2291
|
+
with self.context.console.status(f"[dim]{ui_text(self, f'获取{market.upper()}热门股', f'Fetching top {market.upper()} movers')}...[/dim]", spinner="dots"):
|
|
2291
2292
|
r = mdc.hot_stocks(market=market, top_n=top_n)
|
|
2292
2293
|
else:
|
|
2293
2294
|
r = mdc.hot_stocks(market=market, top_n=top_n)
|
|
@@ -2489,7 +2490,7 @@ class CoreCommandsMixin:
|
|
|
2489
2490
|
sub = parts[1].lower() if len(parts) > 1 else "filings"
|
|
2490
2491
|
|
|
2491
2492
|
if self.context.has_rich:
|
|
2492
|
-
with self.context.console.status(f"[dim]查询 EDGAR {symbol}...[/dim]", spinner="dots"):
|
|
2493
|
+
with self.context.console.status(f"[dim]{ui_text(self, f'查询 EDGAR {symbol}', f'Querying EDGAR for {symbol}')}...[/dim]", spinner="dots"):
|
|
2493
2494
|
result = await asyncio.get_event_loop().run_in_executor(
|
|
2494
2495
|
None, lambda: _fetch_edgar_data(symbol, sub)
|
|
2495
2496
|
)
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
from aria_code.apps.cli.i18n import ui_text
|
|
6
|
+
|
|
5
7
|
from ._ui import print_error
|
|
6
8
|
|
|
7
9
|
|
|
@@ -86,7 +88,7 @@ class DataCommandsMixin:
|
|
|
86
88
|
self.context.console.print("[dim]用法: /data sql \"SELECT ...\"|/dim]")
|
|
87
89
|
return
|
|
88
90
|
if self.context.has_rich:
|
|
89
|
-
with self.context.console.status("[dim]执行 SQL...[/dim]", spinner="dots"):
|
|
91
|
+
with self.context.console.status(f"[dim]{ui_text(self, '执行 SQL', 'Running SQL')}...[/dim]", spinner="dots"):
|
|
90
92
|
r = await loop.run_in_executor(None, sql_query, {"query": query})
|
|
91
93
|
else:
|
|
92
94
|
r = sql_query({"query": query})
|
|
@@ -104,7 +106,7 @@ class DataCommandsMixin:
|
|
|
104
106
|
export_data = {"示例数据": [{"symbol": s, "note": "需 yfinance"} for s in watchlist]}
|
|
105
107
|
p = {"data": export_data, "filename": fname}
|
|
106
108
|
if self.context.has_rich:
|
|
107
|
-
with self.context.console.status("[dim]生成 Excel...[/dim]", spinner="dots"):
|
|
109
|
+
with self.context.console.status(f"[dim]{ui_text(self, '生成 Excel', 'Building Excel')}...[/dim]", spinner="dots"):
|
|
108
110
|
r = await loop.run_in_executor(None, export_to_excel, p)
|
|
109
111
|
else:
|
|
110
112
|
r = export_to_excel(p)
|
|
@@ -125,7 +127,7 @@ class DataCommandsMixin:
|
|
|
125
127
|
self.context.console.print("[dim]用法: /data load <csv文件路径>[/dim]")
|
|
126
128
|
return
|
|
127
129
|
if self.context.has_rich:
|
|
128
|
-
with self.context.console.status("[dim]加载 CSV...[/dim]", spinner="dots"):
|
|
130
|
+
with self.context.console.status(f"[dim]{ui_text(self, '加载 CSV', 'Loading CSV')}...[/dim]", spinner="dots"):
|
|
129
131
|
r = await loop.run_in_executor(None, load_csv_data, {"path": csv_path})
|
|
130
132
|
else:
|
|
131
133
|
r = load_csv_data({"path": csv_path})
|
|
@@ -221,7 +223,7 @@ class DataCommandsMixin:
|
|
|
221
223
|
|
|
222
224
|
elif sub == "check":
|
|
223
225
|
if self.context.has_rich:
|
|
224
|
-
with self.context.console.status("[dim]
|
|
226
|
+
with self.context.console.status(f"[dim]{ui_text(self, '检查价格预警', 'Checking price alerts')}...[/dim]", spinner="dots"):
|
|
225
227
|
r = await loop.run_in_executor(None, check_alerts)
|
|
226
228
|
else:
|
|
227
229
|
r = check_alerts()
|
|
@@ -262,7 +264,8 @@ class DataCommandsMixin:
|
|
|
262
264
|
return
|
|
263
265
|
|
|
264
266
|
if self.context.has_rich:
|
|
265
|
-
|
|
267
|
+
_names = ', '.join(symbols)
|
|
268
|
+
with self.context.console.status(f"[dim]{ui_text(self, f'计算 {_names} 相关性矩阵', f'Computing the {_names} correlation matrix')}...[/dim]", spinner="dots"):
|
|
266
269
|
r = await loop.run_in_executor(None, calc_correlation_matrix,
|
|
267
270
|
{"symbols": symbols, "period": period})
|
|
268
271
|
else:
|
|
@@ -312,7 +315,8 @@ class DataCommandsMixin:
|
|
|
312
315
|
p_params["weights"] = weights
|
|
313
316
|
|
|
314
317
|
if self.context.has_rich:
|
|
315
|
-
|
|
318
|
+
_names = ', '.join(symbols)
|
|
319
|
+
with self.context.console.status(f"[dim]{ui_text(self, f'回测 {_names} ({period})', f'Backtesting {_names} ({period})')}...[/dim]", spinner="dots"):
|
|
316
320
|
r = await loop.run_in_executor(None, portfolio_backtest, p_params)
|
|
317
321
|
else:
|
|
318
322
|
r = portfolio_backtest(p_params)
|
|
@@ -332,7 +336,7 @@ class DataCommandsMixin:
|
|
|
332
336
|
import asyncio as _asyncio
|
|
333
337
|
loop = _asyncio.get_event_loop()
|
|
334
338
|
if self.context.has_rich:
|
|
335
|
-
with self.context.console.status(f"[dim]获取 {symbol}
|
|
339
|
+
with self.context.console.status(f"[dim]{ui_text(self, f'获取 {symbol} 同行数据', f'Fetching {symbol} peer data')}...[/dim]", spinner="dots"):
|
|
336
340
|
from local_finance_tools import _peer_comparison
|
|
337
341
|
r = await loop.run_in_executor(None, _peer_comparison,
|
|
338
342
|
{"symbol": symbol, "peers": peers})
|
|
@@ -7,6 +7,8 @@ by _rebind_mixin_globals() called at module load time.
|
|
|
7
7
|
|
|
8
8
|
from __future__ import annotations
|
|
9
9
|
|
|
10
|
+
from aria_code.apps.cli.i18n import ui_text
|
|
11
|
+
|
|
10
12
|
from ._ui import print_error
|
|
11
13
|
from typing import Optional, Tuple
|
|
12
14
|
|
|
@@ -385,7 +387,7 @@ class MarketCommandsMixin:
|
|
|
385
387
|
city2 = parts[2] if len(parts) > 2 else ("上海" if city1 != "上海" else "北京")
|
|
386
388
|
import functools as _functools
|
|
387
389
|
if self.context.has_rich:
|
|
388
|
-
with self.context.console.status(f"[dim]获取 {city1}/{city2}
|
|
390
|
+
with self.context.console.status(f"[dim]{ui_text(self, f'获取 {city1}/{city2} 房价指数', f'Fetching {city1}/{city2} house price indices')}...[/dim]", spinner="dots"):
|
|
389
391
|
r = await loop.run_in_executor(
|
|
390
392
|
None, _functools.partial(get_house_price_index, city1, city2)
|
|
391
393
|
)
|
|
@@ -394,7 +396,7 @@ class MarketCommandsMixin:
|
|
|
394
396
|
_render_house_price(r)
|
|
395
397
|
# Also show investment data
|
|
396
398
|
if self.context.has_rich:
|
|
397
|
-
with self.context.console.status("[dim]
|
|
399
|
+
with self.context.console.status(f"[dim]{ui_text(self, '获取房地产投资数据', 'Fetching real-estate investment data')}...[/dim]", spinner="dots"):
|
|
398
400
|
ri = await loop.run_in_executor(None, get_re_investment)
|
|
399
401
|
else:
|
|
400
402
|
ri = get_re_investment()
|
|
@@ -410,7 +412,7 @@ class MarketCommandsMixin:
|
|
|
410
412
|
code = parts[1] if len(parts) > 1 else None
|
|
411
413
|
if code:
|
|
412
414
|
if self.context.has_rich:
|
|
413
|
-
with self.context.console.status(f"[dim]分析 {code} REIT...[/dim]", spinner="dots"):
|
|
415
|
+
with self.context.console.status(f"[dim]{ui_text(self, f'分析 {code} REIT', f'Analyzing REIT {code}')}...[/dim]", spinner="dots"):
|
|
414
416
|
r = await loop.run_in_executor(None, get_reit_analysis, code)
|
|
415
417
|
else:
|
|
416
418
|
r = get_reit_analysis(code)
|
|
@@ -429,7 +431,7 @@ class MarketCommandsMixin:
|
|
|
429
431
|
self.context.console.print(f"[red]{r.get('error','分析失败')}[/red]") if self.context.has_rich else None
|
|
430
432
|
else:
|
|
431
433
|
if self.context.has_rich:
|
|
432
|
-
with self.context.console.status("[dim]获取 REIT
|
|
434
|
+
with self.context.console.status(f"[dim]{ui_text(self, '获取 REIT 列表', 'Fetching the REIT list')}...[/dim]", spinner="dots"):
|
|
433
435
|
r = await loop.run_in_executor(None, get_reits_list)
|
|
434
436
|
else:
|
|
435
437
|
r = get_reits_list()
|
|
@@ -438,7 +440,7 @@ class MarketCommandsMixin:
|
|
|
438
440
|
elif sub == "compare":
|
|
439
441
|
cities = parts[1:] if len(parts) > 1 else None
|
|
440
442
|
if self.context.has_rich:
|
|
441
|
-
with self.context.console.status("[dim]
|
|
443
|
+
with self.context.console.status(f"[dim]{ui_text(self, '对比多城市房价', 'Comparing city house prices')}...[/dim]", spinner="dots"):
|
|
442
444
|
r = await loop.run_in_executor(None, get_multi_city_comparison, cities)
|
|
443
445
|
else:
|
|
444
446
|
r = get_multi_city_comparison(cities)
|
|
@@ -483,7 +485,7 @@ class MarketCommandsMixin:
|
|
|
483
485
|
|
|
484
486
|
elif sub == "us":
|
|
485
487
|
if self.context.has_rich:
|
|
486
|
-
with self.context.console.status("[dim]
|
|
488
|
+
with self.context.console.status(f"[dim]{ui_text(self, '获取美国住房数据', 'Fetching US housing data')}...[/dim]", spinner="dots"):
|
|
487
489
|
r = await loop.run_in_executor(None, get_us_housing_data)
|
|
488
490
|
else:
|
|
489
491
|
r = get_us_housing_data()
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
from aria_code.apps.cli.i18n import ui_text
|
|
6
|
+
|
|
5
7
|
|
|
6
8
|
import json
|
|
7
9
|
import asyncio
|
|
@@ -78,7 +80,7 @@ class OrchestratorCommandsMixin:
|
|
|
78
80
|
if self.context.has_rich:
|
|
79
81
|
provider = ConfiguredProvider(self.context.config, "gemini-2.5-flash")
|
|
80
82
|
|
|
81
|
-
with self.context.console.status("[dim]Orchestrator
|
|
83
|
+
with self.context.console.status(f"[dim]{ui_text(self, 'Orchestrator 正在编排智能体网络', 'Orchestrator is planning the agent network')}...[/dim]"):
|
|
82
84
|
result = await dynamic_agent_orchestration(request, provider)
|
|
83
85
|
agents_to_run = result.get("agents", [])
|
|
84
86
|
|
|
@@ -7,6 +7,8 @@ by _rebind_mixin_globals() called at module load time.
|
|
|
7
7
|
|
|
8
8
|
from __future__ import annotations
|
|
9
9
|
|
|
10
|
+
from aria_code.apps.cli.i18n import ui_text
|
|
11
|
+
|
|
10
12
|
from ._ui import Panel, print_error
|
|
11
13
|
|
|
12
14
|
|
|
@@ -597,7 +599,7 @@ class PortfolioCommandsMixin:
|
|
|
597
599
|
if export_pdf_flag:
|
|
598
600
|
try:
|
|
599
601
|
if self.context.has_rich:
|
|
600
|
-
with self.context.console.status("[dim]导出 PDF…[/dim]", spinner="dots"):
|
|
602
|
+
with self.context.console.status(f"[dim]{ui_text(self, '导出 PDF', 'Exporting PDF')}…[/dim]", spinner="dots"):
|
|
601
603
|
_pdf_path = await export_report_pdf(out_f)
|
|
602
604
|
else:
|
|
603
605
|
_pdf_path = await export_report_pdf(out_f)
|
|
@@ -1701,7 +1701,9 @@ def _try_handle_market_snapshot_analysis(message: str, history: list = None, *,
|
|
|
1701
1701
|
|
|
1702
1702
|
if not quote.get("success") or price is None or price == 0:
|
|
1703
1703
|
err = quote.get("error") or _no_price
|
|
1704
|
-
|
|
1704
|
+
# "NoneType…" and a bare KeyError repr ("'currentTradingPeriod'", what
|
|
1705
|
+
# yfinance raises for a symbol it has no chart for) say nothing to a user.
|
|
1706
|
+
if "NoneType" in str(err) or re.fullmatch(r"'\w+'", str(err).strip()):
|
|
1705
1707
|
err = _no_price
|
|
1706
1708
|
is_rate_limit = "rate" in str(err).lower() or "429" in str(err) or "too many" in str(err).lower()
|
|
1707
1709
|
if is_rate_limit:
|
|
@@ -2321,8 +2323,11 @@ def _try_handle_market_snapshot_analysis(message: str, history: list = None, *,
|
|
|
2321
2323
|
lines.append(f"## `{symbol}`")
|
|
2322
2324
|
lines.append("*" + " · ".join(p for p in (data_src, _now_str, session_note, _L["disclaimer"]) if p) + "*")
|
|
2323
2325
|
lines.append("")
|
|
2324
|
-
|
|
2325
|
-
lines
|
|
2326
|
+
# Two trailing spaces: a Markdown line break. Without it the renderer
|
|
2327
|
+
# joined these lines into one paragraph ("…MACD negative. Watch: Watch
|
|
2328
|
+
# USD 334.30…"). "Levels", not "Watch": the line itself starts "Watch …".
|
|
2329
|
+
lines.append(f"**{'Takeaway' if _en else '结论'}**{_sep}{_summary_line} ")
|
|
2330
|
+
lines.append(f"**{'Levels' if _en else '观察位'}**{_sep}{_watch_line}")
|
|
2326
2331
|
lines.append("")
|
|
2327
2332
|
|
|
2328
2333
|
# ── Price table ──
|
|
@@ -2390,7 +2395,7 @@ def _try_handle_market_snapshot_analysis(message: str, history: list = None, *,
|
|
|
2390
2395
|
if _en else
|
|
2391
2396
|
f" · 量化分 {_signal_score:+d} · 置信度 {_signal_confidence:.0%}"
|
|
2392
2397
|
)
|
|
2393
|
-
lines.append(f"{_L['signal_lbl']}{_sep}`{signal}` — {signal_str}{_score_detail}")
|
|
2398
|
+
lines.append(f"{_L['signal_lbl']}{_sep}`{signal}` — {signal_str}{_score_detail} ")
|
|
2394
2399
|
_reason_parts = []
|
|
2395
2400
|
if _positive_reasons:
|
|
2396
2401
|
_reason_parts.append(("support: " if _en else "支撑:") + _join_reasons(_positive_reasons[:3]))
|
|
@@ -238,6 +238,17 @@ def get_ui_lang(config: Optional[dict] = None) -> str:
|
|
|
238
238
|
return detect_system_lang()
|
|
239
239
|
|
|
240
240
|
|
|
241
|
+
def ui_text(owner, zh_text: str, en_text: str) -> str:
|
|
242
|
+
"""The text for the configured UI language; English unless ui_lang is zh.
|
|
243
|
+
|
|
244
|
+
``owner`` is a command object (its ``terminal.config``), a terminal (its
|
|
245
|
+
``config``) or a config dict.
|
|
246
|
+
"""
|
|
247
|
+
config = owner if isinstance(owner, dict) else (
|
|
248
|
+
getattr(owner, "config", None) or getattr(getattr(owner, "terminal", None), "config", None) or {})
|
|
249
|
+
return zh_text if str(config.get("ui_lang", "en")).lower().startswith("zh") else en_text
|
|
250
|
+
|
|
251
|
+
|
|
241
252
|
def t(key: str, lang: Optional[str] = None, config: Optional[dict] = None) -> str:
|
|
242
253
|
"""Translate a UI key to the given language (or auto-detect).
|
|
243
254
|
|
|
@@ -355,6 +355,59 @@ def _gcloud_login_only(config: dict) -> bool:
|
|
|
355
355
|
return not _adc_available() and not _google_api_key(config) and bool(shutil.which("gcloud"))
|
|
356
356
|
|
|
357
357
|
|
|
358
|
+
def _gcloud_folder() -> str:
|
|
359
|
+
import os
|
|
360
|
+
|
|
361
|
+
if os.name == "nt":
|
|
362
|
+
return os.getenv("CLOUDSDK_CONFIG") or os.path.join(os.getenv("APPDATA", ""), "gcloud")
|
|
363
|
+
return os.getenv("CLOUDSDK_CONFIG") or os.path.join(os.path.expanduser("~"), ".config", "gcloud")
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
def _gcloud_default_project(folder: str) -> str:
|
|
367
|
+
"""The active gcloud configuration's core/project, read from its file."""
|
|
368
|
+
import configparser
|
|
369
|
+
import os
|
|
370
|
+
|
|
371
|
+
try:
|
|
372
|
+
with open(os.path.join(folder, "active_config"), encoding="utf-8") as handle:
|
|
373
|
+
active = handle.read().strip() or "default"
|
|
374
|
+
except OSError:
|
|
375
|
+
active = "default"
|
|
376
|
+
parser = configparser.ConfigParser()
|
|
377
|
+
try:
|
|
378
|
+
parser.read(os.path.join(folder, "configurations", f"config_{active}"), encoding="utf-8")
|
|
379
|
+
return parser.get("core", "project", fallback="").strip()
|
|
380
|
+
except configparser.Error:
|
|
381
|
+
return ""
|
|
382
|
+
|
|
383
|
+
|
|
384
|
+
def google_readiness(config: dict) -> str:
|
|
385
|
+
""""" when a Gemini request can be attempted, else what is missing.
|
|
386
|
+
|
|
387
|
+
The banner said "Cloud model configured" for the default model on a
|
|
388
|
+
machine with no Google credentials at all, and the first question then
|
|
389
|
+
failed. This reads only the environment and gcloud's files — no
|
|
390
|
+
subprocess — so it is cheap enough for startup.
|
|
391
|
+
"""
|
|
392
|
+
import os
|
|
393
|
+
import shutil
|
|
394
|
+
|
|
395
|
+
if _google_api_key(config) or _adc_available():
|
|
396
|
+
return ""
|
|
397
|
+
if not shutil.which("gcloud"):
|
|
398
|
+
return "no Google credentials"
|
|
399
|
+
# Same order as vertex_openai_endpoint, so the banner names the problem
|
|
400
|
+
# the first request will report.
|
|
401
|
+
folder = _gcloud_folder()
|
|
402
|
+
project = (os.getenv("GOOGLE_CLOUD_PROJECT") or str(config.get("gcp_project") or "")
|
|
403
|
+
or _gcloud_default_project(folder))
|
|
404
|
+
if not project or project == "(unset)":
|
|
405
|
+
return "no Google Cloud project"
|
|
406
|
+
if not any(os.path.isfile(os.path.join(folder, name)) for name in ("credentials.db", "access_tokens.db")):
|
|
407
|
+
return "gcloud not signed in"
|
|
408
|
+
return ""
|
|
409
|
+
|
|
410
|
+
|
|
358
411
|
def vertex_openai_endpoint(config: dict) -> dict:
|
|
359
412
|
"""Vertex AI's OpenAI-compatible endpoint and a token from the gcloud login.
|
|
360
413
|
|
|
@@ -1231,6 +1231,23 @@ def _is_blocked_market_symbol_candidate(symbol: str) -> bool:
|
|
|
1231
1231
|
)
|
|
1232
1232
|
|
|
1233
1233
|
|
|
1234
|
+
# Numeric codes listed with an exchange suffix. The bare-ticker scan read
|
|
1235
|
+
# "0700.HK" as the letters HK and "7203.T" as T — AT&T — so the quote shown
|
|
1236
|
+
# was some other company's, though Aria's own hints say to type 0700.HK.
|
|
1237
|
+
_NUMERIC_LISTING = _re_sym.compile(r'(?<![\w.])(\d{4,5})\.(HK|T|TW)(?![A-Za-z0-9])', _re_sym.I)
|
|
1238
|
+
|
|
1239
|
+
|
|
1240
|
+
def _numeric_listings(message: str) -> list[tuple[int, int, str]]:
|
|
1241
|
+
"""(start, end, symbol) of each numeric listing, in Yahoo's form (0700.HK)."""
|
|
1242
|
+
found = []
|
|
1243
|
+
for match in _NUMERIC_LISTING.finditer(message):
|
|
1244
|
+
code, suffix = match.group(1), match.group(2).upper()
|
|
1245
|
+
if suffix == "HK":
|
|
1246
|
+
code = f"{int(code):04d}"
|
|
1247
|
+
found.append((match.start(), match.end(), f"{code}.{suffix}"))
|
|
1248
|
+
return found
|
|
1249
|
+
|
|
1250
|
+
|
|
1234
1251
|
def _is_english_function_word(message: str, match) -> bool:
|
|
1235
1252
|
""""I" the pronoun and "A" the article, read as one-letter tickers.
|
|
1236
1253
|
|
|
@@ -1267,6 +1284,9 @@ def _extract_market_symbol(message: str) -> str:
|
|
|
1267
1284
|
for cn, tick in sorted(_COMPANY_TO_TICKER.items(), key=lambda x: -len(x[0])):
|
|
1268
1285
|
if cn in message:
|
|
1269
1286
|
return tick
|
|
1287
|
+
listings = _numeric_listings(message)
|
|
1288
|
+
if listings:
|
|
1289
|
+
return listings[0][2]
|
|
1270
1290
|
# A股裸6位代码(600519 / sh600519 / 688256.SH)
|
|
1271
1291
|
m = _re_sym.search(r'(?<!\d)(?:[sS][hHzZ])?([036]\d{5}|68\d{4})(?:\.(?:SH|SZ|SS))?(?!\d)', message)
|
|
1272
1292
|
if m:
|
|
@@ -1305,20 +1325,33 @@ def _extract_market_symbols(message: str, limit: int = 6) -> list[str]:
|
|
|
1305
1325
|
start = message.find(name)
|
|
1306
1326
|
add_hit(start, ticker)
|
|
1307
1327
|
|
|
1328
|
+
# Spans of coded listings: the letters in "0700.HK" or "600519.SS" are its
|
|
1329
|
+
# exchange, not a second ticker.
|
|
1330
|
+
coded_spans: list[tuple[int, int]] = []
|
|
1308
1331
|
for match in _re_sym.finditer(r'(?<!\d)(?:[sS][hHzZ])?([036]\d{5}|68\d{4})(?:\.(?:SH|SZ|SS))?(?!\d)', message):
|
|
1309
1332
|
add_hit(match.start(), match.group(1))
|
|
1333
|
+
coded_spans.append((match.start(), match.end()))
|
|
1310
1334
|
|
|
1311
1335
|
for match in _re_sym.finditer(r'(?<![A-Za-z0-9])(\^[A-Z0-9]{2,10}|[A-Z]{2,8}=F|[A-Z]{6}=X|DX-Y\.NYB)(?![A-Za-z0-9])', message, _re_sym.I):
|
|
1312
1336
|
add_hit(match.start(), match.group(1).upper())
|
|
1313
1337
|
|
|
1338
|
+
for start, end, symbol in _numeric_listings(message):
|
|
1339
|
+
add_hit(start, symbol)
|
|
1340
|
+
coded_spans.append((start, end))
|
|
1341
|
+
|
|
1342
|
+
def inside_a_listing(match) -> bool:
|
|
1343
|
+
return any(start <= match.start() < end for start, end in coded_spans)
|
|
1344
|
+
|
|
1314
1345
|
for match in _re_sym.finditer(r'\b([A-Z]{1,5}(?:\.(?:HK|SH|SZ))?)\b', message):
|
|
1315
1346
|
symbol = match.group(1)
|
|
1316
|
-
if not _is_blocked_market_symbol_candidate(symbol) and not _is_english_function_word(message, match)
|
|
1347
|
+
if (not _is_blocked_market_symbol_candidate(symbol) and not _is_english_function_word(message, match)
|
|
1348
|
+
and not inside_a_listing(match)):
|
|
1317
1349
|
add_hit(match.start(), symbol)
|
|
1318
1350
|
|
|
1319
1351
|
for match in _re_sym.finditer(r'(?<![A-Za-z])([A-Z]{1,5}(?:\.(?:HK|SH|SZ))?)(?![A-Za-z])', message):
|
|
1320
1352
|
symbol = match.group(1)
|
|
1321
|
-
if not _is_blocked_market_symbol_candidate(symbol) and not _is_english_function_word(message, match)
|
|
1353
|
+
if (not _is_blocked_market_symbol_candidate(symbol) and not _is_english_function_word(message, match)
|
|
1354
|
+
and not inside_a_listing(match)):
|
|
1322
1355
|
add_hit(match.start(), symbol)
|
|
1323
1356
|
|
|
1324
1357
|
ordered: list[str] = []
|
|
@@ -4252,9 +4252,14 @@ class ArtheraTerminal:
|
|
|
4252
4252
|
or current_id.lower().startswith("gemini")
|
|
4253
4253
|
or self.config.get("local_provider") in {"vertex", "google"}
|
|
4254
4254
|
)
|
|
4255
|
+
_missing = ""
|
|
4256
|
+
if _uses_google and not self.config.get("backend_chat"):
|
|
4257
|
+
from apps.cli.providers.base import google_readiness
|
|
4258
|
+
_missing = google_readiness(self.config)
|
|
4255
4259
|
_health_status = (
|
|
4256
4260
|
("Google Cloud · via Arthera API" if _uses_google else "Arthera API · cloud")
|
|
4257
4261
|
if self.config.get("backend_chat") else
|
|
4262
|
+
f"⚠ {_missing} · /model" if _missing else
|
|
4258
4263
|
"Cloud model configured" if _cloud_provider else
|
|
4259
4264
|
self._ollama_status_label(rich=True)
|
|
4260
4265
|
)
|
|
@@ -5334,8 +5339,9 @@ class ArtheraTerminal:
|
|
|
5334
5339
|
_tone = "red" if error_presentation.level == "error" else "yellow"
|
|
5335
5340
|
for idx, ln in enumerate(error_presentation.lines):
|
|
5336
5341
|
if HAS_RICH:
|
|
5342
|
+
from aria_code.ui.render.output import print_hanging
|
|
5337
5343
|
style = f"bold {_tone}" if idx == 0 and len(error_presentation.lines) > 1 else _tone
|
|
5338
|
-
console
|
|
5344
|
+
print_hanging(console, " ", ln, style)
|
|
5339
5345
|
else:
|
|
5340
5346
|
print(f" {ln}")
|
|
5341
5347
|
console.print() if HAS_RICH else print()
|
|
@@ -5480,8 +5486,9 @@ class ArtheraTerminal:
|
|
|
5480
5486
|
_tone = "red" if presentation.level == "error" else "yellow"
|
|
5481
5487
|
for idx, line in enumerate(presentation.lines):
|
|
5482
5488
|
if HAS_RICH:
|
|
5489
|
+
from aria_code.ui.render.output import print_hanging
|
|
5483
5490
|
style = f"bold {_tone}" if idx == 0 else _tone
|
|
5484
|
-
console
|
|
5491
|
+
print_hanging(console, " ", line, style)
|
|
5485
5492
|
else:
|
|
5486
5493
|
print(f" {line}")
|
|
5487
5494
|
return
|