aria-code 0.88.0__tar.gz → 0.89.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.88.0/src/aria_code.egg-info → aria_code-0.89.0}/PKG-INFO +1 -1
- {aria_code-0.88.0 → aria_code-0.89.0}/pyproject.toml +1 -1
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/_version.py +1 -1
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/backtest_cmds.py +30 -25
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/catalog.py +23 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/core_cmds.py +4 -3
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/warehouse_cmds.py +45 -8
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/aria_cli.py +8 -4
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/completer.py +2 -2
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/render/output.py +38 -12
- {aria_code-0.88.0 → aria_code-0.89.0/src/aria_code.egg-info}/PKG-INFO +1 -1
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code.egg-info/SOURCES.txt +3 -1
- aria_code-0.89.0/tests/test_narrow_chinese_output.py +62 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_output_rendering.py +19 -2
- aria_code-0.89.0/tests/test_wrapped_indent.py +33 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/LICENSE +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/NOTICE +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/README.md +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/setup.cfg +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/adk_apps/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/adk_apps/aria_code_review/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/adk_apps/aria_code_review/agent.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/adk_apps/aria_research/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/adk_apps/aria_research/agent.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/base.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/code_review.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/deep/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/deep/calibration_loop.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/deep/critic.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/deep/deepen.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/deep/models.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/deep/pipeline.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/deep/quant_fusion.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/deep/themes.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/deep/tiers.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/engineering/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/engineering/coder.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/engineering/tester.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/cashflow_burn.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/catalyst.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/corporate_finance.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/debate.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/earnings.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/fundamental.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/macro.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/news.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/risk.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/sector.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/strategist.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/stripe_revenue.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/synthesis.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/financial/technical.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/orchestrator.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/portfolio_agent.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/realty/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/realty/asset_diagnosis.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/realty/business_match.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/realty/cashflow_verify.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/realty/contract_rules.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/realty/energy_anomaly.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/realty/exit_settlement.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/realty/fulfillment_risk.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/realty/ops_optimize.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/realty/revenue_share.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/registry.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/signal_scheme.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/sports/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/sports/football_agent.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/supervisor.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/team.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/warehouse/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/warehouse/contracts.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/warehouse/dashboard.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/warehouse/fulfillment_leadtime.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/warehouse/inbound_exceptions.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/warehouse/inventory_health.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/warehouse/local_run.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/warehouse/local_snapshot.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/warehouse/logistics_cost.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/warehouse/logistics_sync.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/agents/warehouse/workflow.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/aliyun_data_client.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/README.md +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/channels/README.md +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/channels/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/channels/approvals.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/channels/conversation.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/channels/digest.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/channels/intake.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/channels/registry.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/channels/tradingview.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/README.md +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/_optional.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/bootstrap.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/broker_render.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/codegen_paths.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/_business_render.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/_ui.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/analysis_cmds.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/ashare_prediction_cmds.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/auth_cmds.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/broker_cmds.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/business_workflow_cmds.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/canvas_cmds.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/data_cmds.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/diagnostic_cmds.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/diagnostic_ops_cmds.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/file_cmds.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/finance_service_cmds.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/fx_commodity_cmds.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/market.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/market_cmds.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/market_context.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/market_render.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/model_cmds.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/ops_cmds.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/orchestrator_cmds.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/pdf_export_cmds.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/portfolio_cmds.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/report.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/scaffold_templates.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/session_cmds.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/session_ux_cmds.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/team.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/team_render.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/ui_cmds.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/workflow_cmds.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/commands/workspace_cmds.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/config_paths.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/config_store.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/constants.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/context.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/deterministic.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/direct.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/finance_service_catalog.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/football_reports.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/github_app_auth.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/google_login.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/handlers/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/handlers/broker_handlers.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/handlers/chart_handlers.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/handlers/market_handlers.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/handlers/realty_handlers.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/handlers/sports_handlers.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/handlers/strategy_advice.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/helpers.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/hooks.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/i18n.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/intent.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/intent_router.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/intent_signals.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/lifecycle_hooks.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/local_tool_schemas.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/main.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/market_hours.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/market_metadata.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/market_universe.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/message_processing.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/model_catalog.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/pdf_report.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/plan_mode.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/plotly_html.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/prediction_feedback.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/preflight.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/project_aria.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/prompt_assembly.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/prompts/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/prompts/coding.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/prompts/select.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/prompts/system_prompts.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/prompts/ui.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/provider_endpoints.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/provider_keys.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/providers/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/providers/base.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/providers/chat_routing.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/providers/collaboration.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/providers/llm/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/providers/llm/offline_responses.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/providers/llm/ollama_stream.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/providers/llm/response_cache.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/providers/llm/sse_stream.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/providers/runtime_bridge.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/providers/vertexai_stream.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/review_runner.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/runtime_consumer.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/sandbox.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/session_export.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/session_jsonl.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/session_store.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/skills_catalog.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/todo_tracker.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/tool_executor.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/tool_registry.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/tool_scope.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/tools/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/tools/context.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/tools/file_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/tools/market_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/tools/notebook_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/tools/system_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/tools/write_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/tradingview_bridge.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/turn_planning.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/update_check.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/updater.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/utils/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/cli/utils/market_detect.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/daemon/README.md +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/vscode/README.md +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/apps/vscode/package.json +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/aria_daemon.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/aria_feishu_bot.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/aria_mcp_server.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/aria_relay_client.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/aria_relay_server.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/aria_telegram_bot.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ariarc.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/artifacts.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/backtest_engine.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/backtest_report.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/automation.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/base.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/capabilities.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/cn/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/cn/easytrader_broker.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/cn/futu_broker.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/cn/longbridge_broker.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/cn/tiger_broker.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/cn/xtquant_broker.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/config.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/intl/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/intl/alpaca_broker.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/intl/ibkr_broker.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/intl/trading212_broker.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/intl/webull_broker.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/paper_broker.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/planning.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/registry.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/brokers/trading.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/canva_client.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/change_store.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/clients/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/clients/aliyun_data_client.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/clients/aria_relay_client.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/clients/canva_client.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/clients/figma_client.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/clients/football_data_client.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/clients/kling_video_client.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/clients/market_data_client.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/clients/openai_image_client.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/clients/runway_video_client.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/clients/warehouse_erp_client.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/cloud_memory.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/command_safety.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/computer_use_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/dashboard_generator.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/data_analysis_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/data_cleaner.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/data_service.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/datasources/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/datasources/base.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/datasources/router.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/datasources/sources/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/datasources/sources/akshare_source.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/datasources/sources/alpha_vantage_source.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/datasources/sources/edgar_source.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/datasources/sources/finnhub_source.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/datasources/sources/fred_source.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/datasources/sources/tushare_source.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/datasources/sources/web_scraper_source.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/datasources/sources/world_bank_source.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/datasources/sources/yfinance_source.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/demo_player.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/doctor.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/domain/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/domain/backtest_engine.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/domain/backtest_report.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/domain/finance_formulas.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/domain/portfolio_ledger.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/domain/strategy_vault.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/evals/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/evals/harness.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/evals/runner.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/external_agent_runner.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/figma_client.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/file_analysis_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/finance_formulas.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/football_data_client.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/image_gen_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/intent_classifier.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/kling_video_client.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/licensing.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/local_finance_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/local_image_provider.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/local_llm_provider.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/macro_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/markdown_pdf.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/market_data_client.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/mcp_client.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/memory_manager.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/model_capability.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/notification_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/openai_image_client.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/adk_bridge/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/adk_bridge/code_review_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/adk_bridge/market_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_agents/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_agents/manifest.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_core/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_core/architecture.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_core/export.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_core/manifest.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_core/paths.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_core/secure_file.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_infra/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_infra/arthera.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_infra/doctor.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_infra/product.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_mcp/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_mcp/bridge.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_mcp/circuit.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_mcp/config.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_mcp/installer.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_mcp/server.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_mcp/tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_sdk/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_sdk/client.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_sdk/providers.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_sdk/streaming.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_sdk/types.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_services/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_services/cache.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_services/context.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_services/context_checkpoints.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_services/data.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_services/provider_health.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_services/references.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_services/registry.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_services/research_protocol.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_services/research_quality.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_services/settings.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_services/usage.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_skills/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_skills/catalog.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_skills/loader.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_skills/registry.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_tools/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_tools/financial/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_tools/financial/_paths.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_tools/financial/compliance.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_tools/financial/factors.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_tools/financial/risk_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_tools/financial/strategy.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/aria_tools/registry.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/_namespace.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/backtest/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/backtest/core.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/backtest/engine.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/portfolio/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/portfolio/optimizer.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/sports/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/sports/calibrator.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/sports/dixon_coles.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/sports/elo.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/sports/form.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/sports/h2h.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/sports/ml_model.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/sports/predictor.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/sports/tracker.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/stochastic/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/stochastic/gbm_enhanced.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/stochastic/ito_calculus.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/stochastic/kelly_criterion.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/stochastic/monte_carlo_advanced.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/stochastic/options_pricing.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packages/quant_engine/stochastic/stochastic_processes.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packs/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packs/base.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packs/finance/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packs/logistics/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packs/payments/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packs/realty/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packs/registry.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/packs/rules.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/plan_utils.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/plugin_loader.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/portfolio_ledger.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/preview_server.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/privacy/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/privacy/feedback.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/project_review.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/project_review_api.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/project_review_server.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/project_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/providers/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/providers/llm/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/providers/llm/anthropic.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/providers/llm/autoconfig.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/providers/llm/base.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/providers/llm/custom.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/providers/llm/ollama.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/providers/llm/openai_compat.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/providers/llm/registry.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/providers/local_image_provider.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/providers/local_llm_provider.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/providers/tool_messages.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/realty_data_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/relay_store.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/report_exporters.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/report_generator.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/review_service.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/acceptance.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/agent_loop.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/approval.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/budget.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/checkpoints.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/crash_report.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/events.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/gateway.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/lsp.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/orchestrator.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/repo_map.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/run_state.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/run_store.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/self_healing.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/subagent.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/task_ledger.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/task_orchestrator.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/tool_executor.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/tool_policy.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runtime/worktrees.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/runway_video_client.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/safety/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/safety/permissions.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/safety/service.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/setup_wizard.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/spreadsheet_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/strategy_vault.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/artifact_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/broker_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/build_quant_engine.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/code_audit_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/computer_use_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/data_analysis_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/enterprise_finance_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/extended_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/file_analysis_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/image_gen_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/local_finance_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/logistics_carriers.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/logistics_inventory.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/logistics_io.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/logistics_tenancy.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/logistics_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/macro_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/notification_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/project_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/realty_data_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/spreadsheet_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/tools/stripe_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/banner.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/console.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/image_render.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/input_box.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/mentions.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/picker.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/render/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/render/finance.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/render/market.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/render/responsive.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/render/team.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/robot.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/ui/startup_dashboard.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/utils/vscode_uri.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/video_analysis.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/video_editor.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/workspace/__init__.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/workspace/files.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/workspace/verify.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/workspace_changes.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/workspace_context.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/workspace_service.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code/workspace_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code.egg-info/dependency_links.txt +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code.egg-info/entry_points.txt +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code.egg-info/requires.txt +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/src/aria_code.egg-info/top_level.txt +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_adk_market_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_agent_team_fallback.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_analyze_file_tool.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_architecture_ledger_is_true.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_architecture_report.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_aria_cli_core.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_aria_mcp_server.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_aria_sdk.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_artifact_publishing.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_artifacts_and_reports.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_ashare_prediction_cmds.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_backtest_cmds.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_backtest_engine.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_backtest_report.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_binary_bundles_runtime_imports.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_broken_akshare_is_optional.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_broker_automation.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_broker_chat_confirm_gate.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_broker_planning.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_broker_safety.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_broker_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_budget.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_business_workflow_cmds.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_canva_client.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_canvas_cmds.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_card_approvals.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_channel_intake.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_channels.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_chart_handlers.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_chat_bots_fail_closed.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_chat_routing.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_ci_security_workflow.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_cli_app_split.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_cli_bootstrap.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_cli_config_store.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_cli_lifecycle_hooks.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_cli_runtime_consumer.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_cli_tool_executor_module.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_cli_updater.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_cloud_memory.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_code_audit_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_code_review_agent.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_codegen_output.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_coder_tester_self_healing.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_coder_tool_safety.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_collaboration.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_command_loggers.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_command_safety.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_completions_builder.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_config_paths.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_configured_provider.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_container_entrypoint.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_container_entrypoints.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_context_checkpoints.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_context_references.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_context_service.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_conversation_core.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_crash_report.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_credential_file_permissions.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_custom_providers.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_daemon_gateway_config.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_dashboard_generator.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_data_service.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_data_service_imports.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_data_without_model.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_datasource_routing.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_deep_analysis.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_degrades_without_quant_engine.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_dispatcher_pins_match_the_release.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_doctor.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_doctor_describes_the_current_install.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_doctor_npm_scope.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_engine_boundary.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_enterprise_tool_honesty.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_env_switch_docs.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_evals_harness.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_event_import_roots.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_extended_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_feishu_swarm_config.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_file_links.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_finalize_release.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_finance_renderers.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_finance_service_catalog.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_first_run_output.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_first_run_works.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_football_agent.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_football_prediction_output.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_google_cloud_models.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_google_cloud_routing.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_google_login.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_google_search_provider.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_headless_is_agentic.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_honest_surfaces.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_image_gen_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_image_inputs.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_import_graph_budget.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_intent_router.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_intent_signals.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_kling_video_client.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_lazy_rebind.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_legacy_module_imports.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_license_consistency.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_licensing.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_local_image_provider.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_logistics_3pl.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_logistics_and_finance_agents.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_lsp.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_markdown_pdf.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_market_answers_in_english.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_market_data_client.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_market_history_inheritance.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_market_history_tool.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_market_hours.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_market_questions_on_backend.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_market_symbol_extraction.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_market_universe.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_mcp_circuit.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_mcp_client.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_mentions.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_model_capability_registry.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_model_choice_is_the_users.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_model_selection_state.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_native_binary_entrypoints.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_native_installer.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_natural_language_routing.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_new_modules.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_no_hardcoded_developer_paths.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_no_uncommitted_imports.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_numeric_listings.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_ollama_stream_imports.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_ollama_stream_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_openai_image_client.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_operations_suite.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_packages_facade.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_packaging_constraints.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_packaging_manifest.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_packs_domains.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_pdf_report.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_pick_best_installed_model.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_plan_mode.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_platform_package_assembly.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_platform_packages.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_platform_publish.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_plotly_html_output.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_portfolio_ledger.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_post_turn_context_decision.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_preflight.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_preview_server.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_privacy_feedback.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_project_aria.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_project_review.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_project_review_api.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_prompt_assembly.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_prompt_selection.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_provider_autoconfig.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_provider_error_messages.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_provider_integration.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_provider_registry.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_public_service_status.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_quant_engine_namespace.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_rebind_contract.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_rebind_namespace_contract.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_relay_client_credentials.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_relay_event_verification.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_relay_sends_for_clients.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_relay_store.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_relay_url.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_release_chain.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_release_commit_identity.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_release_push_is_atomic.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_release_reaches_the_registries.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_release_verification_waits.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_release_workflow_permissions.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_report_charts.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_report_generator.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_research_protocol.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_research_quality.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_responsive_rendering.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_review_service.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_root_module_budget.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_rsi_without_pandas_ta.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_runtime_acceptance.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_runtime_agent_loop.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_runtime_approval.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_runtime_bridge.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_runtime_bridge_fallback.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_runtime_checkpoints.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_runtime_event_identity.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_runtime_gateway.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_runtime_repo_map.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_runtime_run_store.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_runtime_tool_executor.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_runtime_worktrees.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_runway_video_client.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_safety_permissions.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_safety_service.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_safety_service_adoption.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_service_diagnostics_security.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_session_search.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_settings_service.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_shipper_digest.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_single_import_root.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_skill_agent_binding.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_skill_catalog.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_skill_loader.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_slash_popup.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_spreadsheet_tools.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_sse_stream_contract.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_startup_dashboard.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_startup_latency.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_status_language.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_streaming_pipeline.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_stripe_agent.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_subagent.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_supervisor_routing.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_system_prompts.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_system_tools_output.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_task_orchestrator.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_team_synthesis.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_tls_trust_store.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_tool_policy.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_tool_rounds_on_openai_apis.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_tool_scope.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_tool_step_output.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_trading_service.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_tradingview_bridge.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_turn_planning.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_ui_completer_references.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_ui_console_theme.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_ui_input_box.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_ui_language_and_model.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_ui_robot_banner.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_update_health_routes.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_verification_hint.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_verification_policy.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_version_consistency.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_version_counter.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_video_analysis.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_video_editor.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_vscode_mcp.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_warehouse_agents.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_warehouse_cli_registration.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_warehouse_erp_client.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_warehouse_workflow.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_wheel_is_installable.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_workspace_changes.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_workspace_context.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_workspace_files.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_workspace_scope.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.0}/tests/test_workspace_service.py +0 -0
- {aria_code-0.88.0 → aria_code-0.89.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.89.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.89.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" }
|
|
@@ -553,46 +553,51 @@ class BacktestCommandsMixin:
|
|
|
553
553
|
actual_end = self._bt_value(d, "end", "end_date", default=end_date)
|
|
554
554
|
bars = self._bt_int(d.get("bars"))
|
|
555
555
|
initial = self._bt_money(d.get("initial_capital", _initial_capital))
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
556
|
+
# One label per row, values wrapping in their own column: four
|
|
557
|
+
# "label: value" pairs on one line wrapped anywhere in an
|
|
558
|
+
# 80-column terminal, and the report path fell to column 0.
|
|
559
|
+
from rich.padding import Padding
|
|
560
|
+
from rich.style import Style
|
|
561
|
+
from rich.table import Table
|
|
562
|
+
from rich.text import Text
|
|
563
|
+
from aria_code.ui.render.output import file_uri
|
|
564
|
+
|
|
565
|
+
facts: list[tuple[str, object]] = [
|
|
566
|
+
("source", src),
|
|
567
|
+
("period", f"{actual_start} → {actual_end} · {bars} bars"),
|
|
568
|
+
("capital", initial),
|
|
569
|
+
("params", f"momentum={_momentum_period} fast={_fast_period} slow={_slow_period}"),
|
|
570
|
+
]
|
|
566
571
|
if d.get("provider_chain"):
|
|
567
572
|
chain = " → ".join(str(x) for x in d.get("provider_chain") or [])
|
|
568
573
|
status = d.get("data_status") or "complete"
|
|
569
574
|
missing = ", ".join(str(x) for x in (d.get("missing_fields") or [])) or "none"
|
|
570
|
-
|
|
571
|
-
f" [#57606a]data:[/#57606a] {chain}"
|
|
572
|
-
f" [#57606a]status:[/#57606a] {status}"
|
|
573
|
-
f" [#57606a]missing:[/#57606a] {missing}"
|
|
574
|
-
)
|
|
575
|
+
facts.append(("data", f"{chain} · {status} · missing {missing}"))
|
|
575
576
|
vol = self._bt_volume_summary(d)
|
|
576
577
|
if vol:
|
|
577
578
|
avg = vol.get("average")
|
|
578
579
|
last = vol.get("last")
|
|
579
580
|
coverage = self._bt_num(vol.get("coverage"))
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
f"avg {avg:,.0f} · last {last:,.0f} · coverage {coverage:.0%}"
|
|
583
|
-
if avg is not None and last is not None
|
|
584
|
-
else " [#57606a]volume:[/#57606a] unavailable"
|
|
585
|
-
)
|
|
581
|
+
facts.append(("volume", f"avg {avg:,.0f} · last {last:,.0f} · coverage {coverage:.0%}"
|
|
582
|
+
if avg is not None and last is not None else "unavailable"))
|
|
586
583
|
if d.get("report_path"):
|
|
587
584
|
_report = str(d["report_path"])
|
|
588
585
|
_home = str(pathlib.Path.home())
|
|
589
|
-
if _report.startswith(_home + os.sep)
|
|
590
|
-
|
|
591
|
-
|
|
586
|
+
_shown = "~" + _report[len(_home):] if _report.startswith(_home + os.sep) else _report
|
|
587
|
+
facts.append(("report", Text(_shown, style=Style(link=file_uri(_report)))))
|
|
588
|
+
grid = Table.grid(padding=(0, 1))
|
|
589
|
+
grid.add_column(style="#57606a", no_wrap=True)
|
|
590
|
+
grid.add_column(overflow="fold")
|
|
591
|
+
for label, value in facts:
|
|
592
|
+
grid.add_row(f"{label}:", value if isinstance(value, Text) else Text(str(value)))
|
|
593
|
+
self.context.console.print(Padding(grid, (0, 0, 0, 2)))
|
|
592
594
|
if trades == 0:
|
|
595
|
+
_zh_bt = str(self.terminal.config.get("ui_lang", "en")).lower().startswith("zh")
|
|
593
596
|
self.context.console.print(
|
|
594
597
|
" [yellow]注意:[/yellow] # Trades 为 0,表示本次规则没有触发入场;"
|
|
595
|
-
"收益可能来自全程空仓/持仓逻辑或上游交易统计口径。"
|
|
598
|
+
"收益可能来自全程空仓/持仓逻辑或上游交易统计口径。" if _zh_bt else
|
|
599
|
+
" [yellow]Note:[/yellow] 0 trades — the rules never triggered an entry; any return "
|
|
600
|
+
"comes from holding or from how the data source counts trades."
|
|
596
601
|
)
|
|
597
602
|
else:
|
|
598
603
|
print(f"Total Return: {d.get('total_return',0)*100:.1f}% Sharpe: {d.get('sharpe_ratio',0):.2f} MaxDD: {d.get('max_drawdown',0)*100:.1f}%")
|
|
@@ -158,3 +158,26 @@ def short_description(description: str) -> str:
|
|
|
158
158
|
text = str(description or "")
|
|
159
159
|
cut = text.find(": /")
|
|
160
160
|
return (text[:cut] if cut > 0 else text).strip()
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
# What /help and the "/" popup say about the commands they show, in the Chinese
|
|
164
|
+
# UI: the descriptions in the command table are English, so a Chinese session
|
|
165
|
+
# read "Show commands and examples" under 命令.
|
|
166
|
+
COMMAND_DESCRIPTIONS_ZH = {
|
|
167
|
+
"/help": "命令与示例", "/model": "切换模型", "/review": "代码审查", "/plan": "起草计划",
|
|
168
|
+
"/init": "为当前项目生成 ARIA.md", "/status": "运行状态:引擎 · 模型 · 工具 · 上下文",
|
|
169
|
+
"/sessions": "查看与搜索会话", "/clear": "清空对话", "/compact": "压缩上下文",
|
|
170
|
+
"/copy": "复制上一条回答", "/rewind": "恢复代码或对话", "/permissions": "工具权限",
|
|
171
|
+
"/config": "查看与修改配置", "/doctor": "诊断安装、模型与 API Key", "/login": "登录",
|
|
172
|
+
"/code": "生成并运行代码", "/ta": "技术指标", "/backtest": "回测并生成 HTML 报告",
|
|
173
|
+
"/team": "多智能体研究团队", "/report": "研究报告", "/portfolio": "投资组合",
|
|
174
|
+
"/inventory": "3PL 库存策略:补货点、安全库存、ABC/XYZ、呆滞库存",
|
|
175
|
+
"/carriers": "3PL 承运商评分:按线路排名、成本异常与节省",
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
def describe(name: str, description: str, lang: str = "en") -> str:
|
|
180
|
+
"""The short description to show for a command, in the UI language."""
|
|
181
|
+
if str(lang).lower().startswith("zh") and name in COMMAND_DESCRIPTIONS_ZH:
|
|
182
|
+
return COMMAND_DESCRIPTIONS_ZH[name]
|
|
183
|
+
return short_description(description)
|
|
@@ -264,12 +264,13 @@ class CoreCommandsMixin:
|
|
|
264
264
|
commands that matter scrolled out of view. The rest is a topic away.
|
|
265
265
|
"""
|
|
266
266
|
from aria_code.apps.cli.commands.catalog import (
|
|
267
|
-
CORE_SLASH_COMMANDS, ENTRY_SLASH_COMMANDS, HELP_TOPICS,
|
|
267
|
+
CORE_SLASH_COMMANDS, ENTRY_SLASH_COMMANDS, HELP_TOPICS, describe,
|
|
268
268
|
)
|
|
269
269
|
zh = str(self.terminal.config.get("ui_lang", "en")).lower().startswith("zh")
|
|
270
270
|
T = (lambda a, b: a) if zh else (lambda a, b: b)
|
|
271
|
-
|
|
272
|
-
|
|
271
|
+
lang = "zh" if zh else "en"
|
|
272
|
+
core = [(n, describe(n, self.commands[n][1], lang)) for n in CORE_SLASH_COMMANDS if n in self.commands]
|
|
273
|
+
entry = [(n, describe(n, self.commands[n][1], lang)) for n in ENTRY_SLASH_COMMANDS if n in self.commands]
|
|
273
274
|
examples = (
|
|
274
275
|
T("给 utils.py 补上测试并运行", "Add tests for utils.py and run them"),
|
|
275
276
|
T("NVDA 这周走势怎么样?", "How's NVDA this week?"),
|
|
@@ -156,8 +156,38 @@ _LABELS = {
|
|
|
156
156
|
}
|
|
157
157
|
|
|
158
158
|
|
|
159
|
+
def _inventory_headline(result: dict, zh: bool) -> str:
|
|
160
|
+
"""The first line of /inventory, in the UI language.
|
|
161
|
+
|
|
162
|
+
The tool's summary is English; in a Chinese session the detail lines under
|
|
163
|
+
it were Chinese and the headline above them was not. The formulas in the
|
|
164
|
+
basis line stay as the tool writes them.
|
|
165
|
+
"""
|
|
166
|
+
if not zh:
|
|
167
|
+
return result["summary"]
|
|
168
|
+
data, counts = result["data"], result["data"].get("counts", {})
|
|
169
|
+
return (f"分析 {len(data['items'])} 个 SKU({result.get('source', '')}):"
|
|
170
|
+
f"{counts.get('reorder', 0)} 个需补货,{counts.get('insufficient_history', 0)} 个历史数据不足,"
|
|
171
|
+
f"{counts.get('no_demand', 0)} 个无需求;呆滞 {data.get('dead_stock', 0)} 个,慢动 {data.get('slow_stock', 0)} 个。")
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
def _carriers_headline(result: dict, zh: bool) -> str:
|
|
175
|
+
"""The first line of /carriers, in the UI language (see _inventory_headline)."""
|
|
176
|
+
if not zh:
|
|
177
|
+
return result["summary"]
|
|
178
|
+
import re
|
|
179
|
+
|
|
180
|
+
data = result["data"]
|
|
181
|
+
waybills = re.match(r"(\d+)", result.get("summary", ""))
|
|
182
|
+
lanes = {c["lane"] for c in data.get("scorecard", [])}
|
|
183
|
+
carriers = {c["carrier"] for c in data.get("scorecard", [])}
|
|
184
|
+
return (f"{waybills.group(1) if waybills else '?'} 张运单,{len(lanes)} 条线路、{len(carriers)} 家承运商"
|
|
185
|
+
f"({result.get('source', '')});{len(data.get('anomalies', []))} 个异常待核实;"
|
|
186
|
+
f"{len(data.get('savings', []))} 个节省机会,预计共 {data.get('estimated_total_saving', 0):,.2f}。")
|
|
187
|
+
|
|
188
|
+
|
|
159
189
|
def _labels(self) -> dict:
|
|
160
|
-
"""Labels in the UI language. The tools'
|
|
190
|
+
"""Labels in the UI language. The tools' formulas stay as they write them."""
|
|
161
191
|
config = getattr(getattr(self, "terminal", None), "config", None) or {}
|
|
162
192
|
lang = str(config.get("ui_lang", "en") or "en").lower()
|
|
163
193
|
return _LABELS["zh" if lang.startswith("zh") else "en"]
|
|
@@ -169,12 +199,19 @@ def _abc_xyz(item: dict) -> str:
|
|
|
169
199
|
|
|
170
200
|
|
|
171
201
|
def _emit(self, text: str, style: str = "") -> None:
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
202
|
+
"""One line of a report, wrapped under its own indent.
|
|
203
|
+
|
|
204
|
+
The indent was typed as leading spaces, so in an 80-column terminal a
|
|
205
|
+
wrapped line went back to column 0 ("cover · ABC/XYZ –/X" under the
|
|
206
|
+
margin). It is plain text, not markup: a SKU or file name may hold "[".
|
|
207
|
+
"""
|
|
208
|
+
if not self.context.has_rich:
|
|
177
209
|
print(text)
|
|
210
|
+
return
|
|
211
|
+
from aria_code.ui.render.output import print_hanging
|
|
212
|
+
|
|
213
|
+
body = text.lstrip(" ")
|
|
214
|
+
print_hanging(self.context.console, text[: len(text) - len(body)], body, style)
|
|
178
215
|
|
|
179
216
|
|
|
180
217
|
class LogisticsCommandsMixin:
|
|
@@ -207,7 +244,7 @@ class LogisticsCommandsMixin:
|
|
|
207
244
|
data = result["data"]
|
|
208
245
|
if not data["scope"]["client_facing"]:
|
|
209
246
|
_emit(self, data["scope"]["marker"], "bold red")
|
|
210
|
-
_emit(self, result["
|
|
247
|
+
_emit(self, _inventory_headline(result, text is _LABELS["zh"]), "bold")
|
|
211
248
|
for item in data["items"]:
|
|
212
249
|
if item["action"] != "reorder":
|
|
213
250
|
continue
|
|
@@ -239,7 +276,7 @@ class LogisticsCommandsMixin:
|
|
|
239
276
|
data = result["data"]
|
|
240
277
|
if not data["scope"]["client_facing"]:
|
|
241
278
|
_emit(self, data["scope"]["marker"], "bold red")
|
|
242
|
-
_emit(self, result["
|
|
279
|
+
_emit(self, _carriers_headline(result, text is _LABELS["zh"]), "bold")
|
|
243
280
|
for entry in data["scorecard"]:
|
|
244
281
|
rank = f"#{entry['rank_in_lane']}" if entry["rank_in_lane"] else text["too_few"]
|
|
245
282
|
on_time = (text["on_time"].format(rate=entry["on_time_rate"], low=entry["on_time_lower_bound"])
|
|
@@ -4401,13 +4401,17 @@ class ArtheraTerminal:
|
|
|
4401
4401
|
# improve its finance model — so disclose it up front.
|
|
4402
4402
|
import os as _os
|
|
4403
4403
|
if not _os.environ.get("ARIA_NO_TELEMETRY"):
|
|
4404
|
-
|
|
4405
|
-
|
|
4404
|
+
# Padded, not prefixed with spaces: in 80 columns the
|
|
4405
|
+
# second line fell back to column 0.
|
|
4406
|
+
from rich.padding import Padding as _Pad
|
|
4407
|
+
from rich.text import Text as _Txt
|
|
4408
|
+
console.print(_Pad(_Txt.from_markup(
|
|
4409
|
+
"[dim]隐私:反馈默认[bold]仅存本地[/bold],不上传。"
|
|
4406
4410
|
"opt-in 后可用于改进金融模型 · /privacy 查看与开关 · /bug 报告问题[/dim]"
|
|
4407
4411
|
if str(_ui_lang).lower().startswith("zh") else
|
|
4408
|
-
"
|
|
4412
|
+
"[dim]Feedback stays [bold]on this machine[/bold] unless you opt in to "
|
|
4409
4413
|
"help improve Aria · /privacy · /bug[/dim]"
|
|
4410
|
-
)
|
|
4414
|
+
), (0, 0, 0, 2)))
|
|
4411
4415
|
else:
|
|
4412
4416
|
if _banner_mode != "off":
|
|
4413
4417
|
from ui.banner import render_full_banner as _rfb
|
|
@@ -21,8 +21,8 @@ from aria_code.apps.cli.commands.catalog import (
|
|
|
21
21
|
COMMAND_ALIASES,
|
|
22
22
|
CORE_SLASH_COMMANDS,
|
|
23
23
|
ENTRY_SLASH_COMMANDS,
|
|
24
|
+
describe,
|
|
24
25
|
popup_rank,
|
|
25
|
-
short_description,
|
|
26
26
|
)
|
|
27
27
|
from aria_code.packages.aria_services.references import REFERENCE_KINDS, reference_search_roots
|
|
28
28
|
|
|
@@ -307,7 +307,7 @@ if HAS_PT:
|
|
|
307
307
|
"设置": "运行设置" if self.lang == "zh" else "Runtime",
|
|
308
308
|
"系统": "会话" if self.lang == "zh" else "Session",
|
|
309
309
|
}.get(cat, "")
|
|
310
|
-
desc =
|
|
310
|
+
desc = describe(name, desc, self.lang)
|
|
311
311
|
meta_body = desc[:44] + ("…" if len(desc) > 44 else "")
|
|
312
312
|
meta_str = f"{cat_label} · {meta_body}" if cat_label else meta_body
|
|
313
313
|
|
|
@@ -52,6 +52,43 @@ def _is_markdown_table_separator(line: str) -> bool:
|
|
|
52
52
|
return bool(cells) and all(_TABLE_SEPARATOR_CELL.fullmatch(cell) for cell in cells)
|
|
53
53
|
|
|
54
54
|
|
|
55
|
+
# Column headers that name no dimension — the value column of a key/value table.
|
|
56
|
+
_GENERIC_TABLE_HEADERS = {"value", "values", "meaning", "数值", "值", "含义", "说明"}
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def _table_rows_as_lines(headers: list[str], rows: list[list[str]]) -> list[str]:
|
|
60
|
+
"""One line per table row: the first cell as its label, the rest after it.
|
|
61
|
+
|
|
62
|
+
Each cell used to become its own bullet — "• 指标:最新价 / • 数值:USD 332.89"
|
|
63
|
+
— so a ten-row snapshot table took about thirty lines in an 80-column
|
|
64
|
+
terminal. Generic value columns ("Value", "数值") lose their header; a
|
|
65
|
+
column that names a dimension keeps it ("观察:价格高于 MA20"). A value
|
|
66
|
+
already contained in the one before it ("51.9,中性" then "中性") is dropped.
|
|
67
|
+
"""
|
|
68
|
+
lines: list[str] = []
|
|
69
|
+
for row in rows:
|
|
70
|
+
cells = [(header, (row[pos] if pos < len(row) else "").strip())
|
|
71
|
+
for pos, header in enumerate(headers) if header]
|
|
72
|
+
if not cells:
|
|
73
|
+
continue
|
|
74
|
+
label = cells[0][1] or "—"
|
|
75
|
+
parts: list[str] = []
|
|
76
|
+
previous = ""
|
|
77
|
+
for header, value in cells[1:]:
|
|
78
|
+
if not value or value in ("—", "-") or (previous and value in previous):
|
|
79
|
+
continue
|
|
80
|
+
generic = header.strip().lower() in _GENERIC_TABLE_HEADERS
|
|
81
|
+
parts.append(value if generic else f"{header}{':' if _has_cjk(header) else ': '}{value}")
|
|
82
|
+
previous = value
|
|
83
|
+
colon = ":" if _has_cjk(label) or any(_has_cjk(h) for h, _ in cells) else ": "
|
|
84
|
+
lines.append(f"- **{label}**{colon}{' · '.join(parts) or '—'}")
|
|
85
|
+
return lines
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def _has_cjk(text: str) -> bool:
|
|
89
|
+
return any("\u4e00" <= ch <= "\u9fff" for ch in text or "")
|
|
90
|
+
|
|
91
|
+
|
|
55
92
|
def adapt_markdown_for_width(markup: str, width: int, *, table_breakpoint: int = 96) -> str:
|
|
56
93
|
"""Convert GFM tables to stacked records when the terminal is narrow.
|
|
57
94
|
|
|
@@ -92,18 +129,7 @@ def adapt_markdown_for_width(markup: str, width: int, *, table_breakpoint: int =
|
|
|
92
129
|
cursor += 1
|
|
93
130
|
|
|
94
131
|
if headers and rows:
|
|
95
|
-
|
|
96
|
-
pairs = [
|
|
97
|
-
(header, row[pos] if pos < len(row) else "—")
|
|
98
|
-
for pos, header in enumerate(headers)
|
|
99
|
-
if header
|
|
100
|
-
]
|
|
101
|
-
if not pairs:
|
|
102
|
-
continue
|
|
103
|
-
first_header, first_value = pairs[0]
|
|
104
|
-
output.append(f"- **{first_header}**:{first_value or '—'}")
|
|
105
|
-
for header, value in pairs[1:]:
|
|
106
|
-
output.append(f" - **{header}**:{value or '—'}")
|
|
132
|
+
output.extend(_table_rows_as_lines(headers, rows))
|
|
107
133
|
index = cursor
|
|
108
134
|
continue
|
|
109
135
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aria-code
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.89.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
|
|
@@ -615,6 +615,7 @@ tests/test_mentions.py
|
|
|
615
615
|
tests/test_model_capability_registry.py
|
|
616
616
|
tests/test_model_choice_is_the_users.py
|
|
617
617
|
tests/test_model_selection_state.py
|
|
618
|
+
tests/test_narrow_chinese_output.py
|
|
618
619
|
tests/test_native_binary_entrypoints.py
|
|
619
620
|
tests/test_native_installer.py
|
|
620
621
|
tests/test_natural_language_routing.py
|
|
@@ -744,4 +745,5 @@ tests/test_workspace_context.py
|
|
|
744
745
|
tests/test_workspace_files.py
|
|
745
746
|
tests/test_workspace_scope.py
|
|
746
747
|
tests/test_workspace_service.py
|
|
747
|
-
tests/test_workspace_verify.py
|
|
748
|
+
tests/test_workspace_verify.py
|
|
749
|
+
tests/test_wrapped_indent.py
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"""The Chinese UI in an 80-column terminal reads as Chinese and stays short.
|
|
2
|
+
|
|
3
|
+
Recorded: /help and the "/" popup described commands in English under 命令,
|
|
4
|
+
and /inventory and /carriers put an English headline over Chinese detail
|
|
5
|
+
lines. (Narrow tables are covered in test_output_rendering.)
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import io
|
|
11
|
+
import sys
|
|
12
|
+
|
|
13
|
+
from rich.console import Console
|
|
14
|
+
|
|
15
|
+
from aria_code.apps.cli.commands.catalog import COMMAND_DESCRIPTIONS_ZH, CORE_SLASH_COMMANDS, ENTRY_SLASH_COMMANDS, describe
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def test_every_command_help_shows_has_a_chinese_description():
|
|
19
|
+
missing = [n for n in (*CORE_SLASH_COMMANDS, *ENTRY_SLASH_COMMANDS) if n not in COMMAND_DESCRIPTIONS_ZH]
|
|
20
|
+
assert not missing, missing
|
|
21
|
+
assert describe("/help", "Show commands and examples", "zh") == "命令与示例"
|
|
22
|
+
assert describe("/help", "Show commands and examples", "en") == "Show commands and examples"
|
|
23
|
+
assert describe("/realty", "Real-estate data: /realty X", "zh") == "Real-estate data"
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def test_help_in_chinese_describes_in_chinese(monkeypatch):
|
|
27
|
+
sys.argv = ["aria-code"]
|
|
28
|
+
import aria_code.aria_cli as cli
|
|
29
|
+
|
|
30
|
+
terminal = cli.ArtheraTerminal(dict(cli.DEFAULT_CONFIG, ui_lang="zh"))
|
|
31
|
+
console = Console(file=io.StringIO(), width=80, color_system=None)
|
|
32
|
+
monkeypatch.setattr(terminal.commands.context, "console", console)
|
|
33
|
+
monkeypatch.setattr(terminal.commands.context, "has_rich", True)
|
|
34
|
+
terminal.commands.cmd_help("")
|
|
35
|
+
text = console.file.getvalue()
|
|
36
|
+
assert "命令与示例" in text and "Show commands and examples" not in text
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def test_the_popup_describes_in_chinese():
|
|
40
|
+
from prompt_toolkit.document import Document
|
|
41
|
+
|
|
42
|
+
from aria_code.ui.completer import AriaPTCompleter
|
|
43
|
+
|
|
44
|
+
completer = AriaPTCompleter({"/help": (lambda a: None, "Show commands and examples")}, [], [], lang="zh")
|
|
45
|
+
meta = str(next(completer.get_completions(Document("/he"), None)).display_meta_text)
|
|
46
|
+
assert "命令与示例" in meta
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def test_logistics_headlines_follow_the_ui_language():
|
|
50
|
+
from aria_code.apps.cli.commands.warehouse_cmds import _carriers_headline, _inventory_headline
|
|
51
|
+
|
|
52
|
+
inventory = {"summary": "7 SKUs analysed (file:skus.csv): 3 to reorder", "source": "file:skus.csv",
|
|
53
|
+
"data": {"items": [{}] * 7, "counts": {"reorder": 3, "insufficient_history": 1, "no_demand": 1},
|
|
54
|
+
"dead_stock": 0, "slow_stock": 0}}
|
|
55
|
+
assert _inventory_headline(inventory, zh=True) == (
|
|
56
|
+
"分析 7 个 SKU(file:skus.csv):3 个需补货,1 个历史数据不足,1 个无需求;呆滞 0 个,慢动 0 个。")
|
|
57
|
+
assert _inventory_headline(inventory, zh=False) == inventory["summary"]
|
|
58
|
+
carriers = {"summary": "100 waybills across 3 lanes and 5 carriers", "source": "file:waybills.csv",
|
|
59
|
+
"data": {"scorecard": [{"lane": "A", "carrier": "X"}, {"lane": "B", "carrier": "Y"}],
|
|
60
|
+
"anomalies": [1, 2], "savings": [1], "estimated_total_saving": 645.49}}
|
|
61
|
+
assert _carriers_headline(carriers, zh=True) == (
|
|
62
|
+
"100 张运单,2 条线路、2 家承运商(file:waybills.csv);2 个异常待核实;1 个节省机会,预计共 645.49。")
|
|
@@ -524,11 +524,28 @@ def test_narrow_terminal_converts_markdown_table_to_stacked_records():
|
|
|
524
524
|
adapted = adapt_markdown_for_width(source, 80)
|
|
525
525
|
|
|
526
526
|
assert "| --- |" not in adapted
|
|
527
|
-
|
|
528
|
-
assert "
|
|
527
|
+
# One line a row; a column that names a dimension keeps its name.
|
|
528
|
+
assert adapted.strip() == "- **趋势**:观察:价格高于 MA20 · 结论:偏多"
|
|
529
529
|
assert adapt_markdown_for_width(source, 120) == source
|
|
530
530
|
|
|
531
531
|
|
|
532
|
+
def test_a_narrow_key_value_table_is_one_line_a_row():
|
|
533
|
+
"""A ten-row snapshot table took about thirty lines as nested bullets."""
|
|
534
|
+
from ui.render.output import adapt_markdown_for_width
|
|
535
|
+
|
|
536
|
+
source = (
|
|
537
|
+
"| 技术指标 | 数值 | 含义 |\n|---|---|---|\n"
|
|
538
|
+
"| RSI(14) | 51.9,中性 | 中性 |\n| MA20 | USD 332.54 | 价格高于MA20 ↑ |\n| 支撑位 | USD 332.54 | |"
|
|
539
|
+
)
|
|
540
|
+
assert adapt_markdown_for_width(source, 80).splitlines() == [
|
|
541
|
+
"- **RSI(14)**:51.9,中性",
|
|
542
|
+
"- **MA20**:USD 332.54 · 价格高于MA20 ↑",
|
|
543
|
+
"- **支撑位**:USD 332.54",
|
|
544
|
+
]
|
|
545
|
+
wide = "| Symbol | Price | Change |\n|---|---|---|\n| AAPL | USD 333 | +0.8% |"
|
|
546
|
+
assert adapt_markdown_for_width(wide, 80) == "- **AAPL**: Price: USD 333 · Change: +0.8%"
|
|
547
|
+
|
|
548
|
+
|
|
532
549
|
def test_turn_footer_defaults_to_compact_without_token_noise():
|
|
533
550
|
from runtime import AgentTurnState
|
|
534
551
|
from ui.render.output import format_turn_footer
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"""Wrapped lines stay under their indent in a narrow terminal.
|
|
2
|
+
|
|
3
|
+
Recorded at 80 columns: /inventory and /carriers lines, the backtest summary
|
|
4
|
+
and the first-run note all wrapped back to column 0, because their indent was
|
|
5
|
+
typed as leading spaces that Rich does not carry onto the next line.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import io
|
|
11
|
+
from types import SimpleNamespace
|
|
12
|
+
|
|
13
|
+
from rich.console import Console
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def test_a_logistics_line_wraps_under_its_indent():
|
|
17
|
+
from aria_code.apps.cli.commands.warehouse_cmds import _emit
|
|
18
|
+
|
|
19
|
+
console = Console(file=io.StringIO(), width=60, color_system=None)
|
|
20
|
+
owner = SimpleNamespace(context=SimpleNamespace(has_rich=True, console=console))
|
|
21
|
+
_emit(owner, " Reorder A100: order 335 · reorder point 353 · safety stock 71 · 7.4 days of cover", "")
|
|
22
|
+
lines = console.file.getvalue().rstrip("\n").splitlines()
|
|
23
|
+
assert len(lines) > 1 # it did wrap
|
|
24
|
+
assert all(line.startswith(" ") for line in lines) # every row under the indent
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def test_a_logistics_line_is_plain_text():
|
|
28
|
+
from aria_code.apps.cli.commands.warehouse_cmds import _emit
|
|
29
|
+
|
|
30
|
+
console = Console(file=io.StringIO(), width=80, color_system=None)
|
|
31
|
+
owner = SimpleNamespace(context=SimpleNamespace(has_rich=True, console=console))
|
|
32
|
+
_emit(owner, "SKU [A-100] in file [bold].csv", "bold")
|
|
33
|
+
assert "SKU [A-100] in file [bold].csv" in console.file.getvalue()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|