aria-code 0.102.0__tar.gz → 0.104.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.102.0/src/aria_code.egg-info → aria_code-0.104.0}/PKG-INFO +2 -2
- {aria_code-0.102.0 → aria_code-0.104.0}/README.md +1 -1
- {aria_code-0.102.0 → aria_code-0.104.0}/pyproject.toml +1 -1
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/_version.py +1 -1
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/model_cmds.py +19 -4
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/prompts/select.py +30 -1
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/providers/base.py +84 -4
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/providers/vertexai_stream.py +5 -1
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/model_capability.py +6 -0
- {aria_code-0.102.0 → aria_code-0.104.0/src/aria_code.egg-info}/PKG-INFO +2 -2
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code.egg-info/SOURCES.txt +2 -0
- aria_code-0.104.0/tests/test_output_discipline_prompt.py +37 -0
- aria_code-0.104.0/tests/test_vertex_models.py +122 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/LICENSE +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/NOTICE +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/setup.cfg +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/adk_apps/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/adk_apps/aria_code_review/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/adk_apps/aria_code_review/agent.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/adk_apps/aria_research/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/adk_apps/aria_research/agent.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/base.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/code_review.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/deep/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/deep/calibration_loop.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/deep/critic.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/deep/deepen.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/deep/models.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/deep/pipeline.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/deep/quant_fusion.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/deep/themes.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/deep/tiers.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/engineering/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/engineering/coder.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/engineering/tester.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/cashflow_burn.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/catalyst.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/corporate_finance.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/debate.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/earnings.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/fundamental.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/macro.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/news.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/risk.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/sector.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/strategist.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/stripe_revenue.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/synthesis.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/financial/technical.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/orchestrator.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/portfolio_agent.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/realty/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/realty/asset_diagnosis.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/realty/business_match.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/realty/cashflow_verify.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/realty/contract_rules.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/realty/energy_anomaly.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/realty/exit_settlement.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/realty/fulfillment_risk.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/realty/ops_optimize.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/realty/revenue_share.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/registry.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/signal_scheme.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/sports/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/sports/football_agent.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/supervisor.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/team.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/warehouse/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/warehouse/contracts.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/warehouse/dashboard.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/warehouse/fulfillment_leadtime.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/warehouse/inbound_exceptions.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/warehouse/inventory_health.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/warehouse/local_run.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/warehouse/local_snapshot.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/warehouse/logistics_cost.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/warehouse/logistics_sync.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/agents/warehouse/workflow.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/aliyun_data_client.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/README.md +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/channels/README.md +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/channels/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/channels/approvals.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/channels/conversation.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/channels/digest.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/channels/intake.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/channels/registry.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/channels/tradingview.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/README.md +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/_optional.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/bootstrap.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/broker_render.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/chat_turn.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/codegen_paths.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/_business_render.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/_ui.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/analysis_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/ashare_prediction_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/auth_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/backtest_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/broker_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/business_workflow_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/canvas_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/catalog.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/core_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/data_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/diagnostic_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/diagnostic_ops_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/file_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/finance_service_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/fx_commodity_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/market.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/market_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/market_context.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/market_render.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/ops_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/orchestrator_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/pdf_export_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/portfolio_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/report.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/scaffold_templates.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/session_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/session_ux_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/team.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/team_render.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/ui_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/warehouse_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/workflow_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/commands/workspace_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/config_paths.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/config_store.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/constants.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/context.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/deterministic.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/direct.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/earnings_view.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/exec_events.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/finance_service_catalog.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/football_reports.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/github_app_auth.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/google_login.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/handlers/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/handlers/broker_handlers.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/handlers/chart_handlers.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/handlers/market_handlers.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/handlers/realty_handlers.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/handlers/sports_handlers.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/handlers/strategy_advice.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/headless.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/helpers.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/hooks.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/i18n.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/intent.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/intent_router.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/intent_signals.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/lifecycle_hooks.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/local_tool_schemas.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/main.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/market_hours.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/market_metadata.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/market_universe.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/message_processing.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/mixin_binding.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/model_catalog.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/pdf_report.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/plan_mode.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/plotly_html.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/prediction_feedback.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/preflight.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/project_aria.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/prompt_assembly.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/prompts/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/prompts/coding.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/prompts/system_prompts.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/prompts/ui.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/provider_endpoints.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/provider_keys.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/providers/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/providers/chat_routing.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/providers/collaboration.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/providers/llm/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/providers/llm/offline_responses.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/providers/llm/ollama_stream.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/providers/llm/response_cache.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/providers/llm/sse_stream.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/providers/runtime_bridge.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/review_runner.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/runtime_consumer.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/sandbox.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/session_export.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/session_jsonl.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/session_store.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/skills_catalog.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/terminal_chrome.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/todo_tracker.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/tool_executor.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/tool_registry.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/tool_scope.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/tools/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/tools/context.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/tools/file_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/tools/market_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/tools/notebook_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/tools/system_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/tools/write_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/tradingview_bridge.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/turn_planning.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/update_check.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/updater.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/utils/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/utils/market_detect.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/cli/workspace_route.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/daemon/README.md +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/vscode/README.md +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/apps/vscode/package.json +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/aria_cli.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/aria_daemon.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/aria_feishu_bot.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/aria_mcp_server.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/aria_relay_client.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/aria_relay_server.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/aria_telegram_bot.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ariarc.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/artifacts.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/backtest_engine.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/backtest_report.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/automation.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/base.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/capabilities.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/cn/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/cn/easytrader_broker.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/cn/futu_broker.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/cn/longbridge_broker.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/cn/tiger_broker.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/cn/xtquant_broker.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/config.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/intl/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/intl/alpaca_broker.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/intl/ibkr_broker.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/intl/trading212_broker.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/intl/webull_broker.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/paper_broker.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/planning.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/registry.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/brokers/trading.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/canva_client.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/change_store.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/clients/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/clients/aliyun_data_client.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/clients/aria_relay_client.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/clients/canva_client.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/clients/figma_client.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/clients/football_data_client.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/clients/kling_video_client.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/clients/market_data_client.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/clients/openai_image_client.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/clients/runway_video_client.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/clients/warehouse_erp_client.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/cloud_memory.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/command_safety.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/computer_use_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/dashboard_generator.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/data_analysis_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/data_cleaner.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/data_service.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/datasources/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/datasources/base.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/datasources/router.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/datasources/sources/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/datasources/sources/akshare_source.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/datasources/sources/alpha_vantage_source.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/datasources/sources/edgar_source.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/datasources/sources/finnhub_source.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/datasources/sources/fred_source.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/datasources/sources/tushare_source.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/datasources/sources/web_scraper_source.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/datasources/sources/world_bank_source.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/datasources/sources/yfinance_source.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/demo_player.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/doctor.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/domain/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/domain/backtest_engine.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/domain/backtest_report.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/domain/finance_formulas.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/domain/portfolio_ledger.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/domain/strategy_vault.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/evals/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/evals/harness.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/evals/runner.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/evals/summary.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/external_agent_runner.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/figma_client.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/file_analysis_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/finance_formulas.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/football_data_client.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/image_gen_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/intent_classifier.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/kling_video_client.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/licensing.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/local_finance_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/local_image_provider.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/local_llm_provider.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/macro_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/markdown_pdf.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/market_data_client.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/mcp_client.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/memory_manager.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/notification_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/openai_image_client.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/adk_bridge/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/adk_bridge/code_review_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/adk_bridge/market_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_agents/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_agents/manifest.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_core/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_core/architecture.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_core/export.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_core/manifest.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_core/paths.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_core/secure_file.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_infra/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_infra/arthera.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_infra/doctor.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_infra/product.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_mcp/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_mcp/bridge.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_mcp/circuit.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_mcp/config.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_mcp/installer.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_mcp/server.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_mcp/tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_sdk/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_sdk/client.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_sdk/providers.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_sdk/streaming.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_sdk/types.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_services/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_services/cache.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_services/context.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_services/context_checkpoints.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_services/data.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_services/provider_health.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_services/references.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_services/registry.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_services/research_protocol.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_services/research_quality.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_services/settings.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_services/usage.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_skills/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_skills/catalog.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_skills/loader.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_skills/registry.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_tools/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_tools/financial/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_tools/financial/_paths.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_tools/financial/compliance.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_tools/financial/factors.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_tools/financial/risk_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_tools/financial/strategy.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/aria_tools/registry.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/_namespace.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/backtest/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/backtest/core.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/backtest/engine.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/portfolio/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/portfolio/optimizer.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/sports/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/sports/calibrator.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/sports/dixon_coles.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/sports/elo.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/sports/form.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/sports/h2h.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/sports/ml_model.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/sports/predictor.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/sports/tracker.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/stochastic/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/stochastic/gbm_enhanced.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/stochastic/ito_calculus.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/stochastic/kelly_criterion.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/stochastic/monte_carlo_advanced.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/stochastic/options_pricing.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packages/quant_engine/stochastic/stochastic_processes.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packs/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packs/base.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packs/finance/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packs/logistics/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packs/payments/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packs/realty/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packs/registry.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/packs/rules.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/plan_utils.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/plugin_loader.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/portfolio_ledger.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/preview_server.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/privacy/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/privacy/feedback.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/project_review.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/project_review_api.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/project_review_server.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/project_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/providers/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/providers/llm/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/providers/llm/anthropic.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/providers/llm/autoconfig.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/providers/llm/base.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/providers/llm/custom.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/providers/llm/ollama.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/providers/llm/openai_compat.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/providers/llm/registry.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/providers/local_image_provider.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/providers/local_llm_provider.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/providers/tool_messages.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/realty_data_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/relay_store.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/report_exporters.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/report_generator.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/review_service.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/acceptance.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/agent_loop.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/approval.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/budget.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/checkpoints.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/crash_report.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/events.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/gateway.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/lsp.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/orchestrator.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/processes.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/repo_map.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/run_state.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/run_store.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/self_healing.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/subagent.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/task_ledger.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/task_orchestrator.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/tool_executor.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/tool_policy.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runtime/worktrees.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/runway_video_client.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/safety/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/safety/permissions.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/safety/sandbox.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/safety/service.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/setup_wizard.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/spreadsheet_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/strategy_vault.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/artifact_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/broker_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/build_quant_engine.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/code_audit_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/computer_use_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/data_analysis_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/enterprise_finance_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/extended_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/file_analysis_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/image_gen_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/local_finance_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/logistics_carriers.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/logistics_inventory.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/logistics_io.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/logistics_tenancy.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/logistics_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/macro_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/notification_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/project_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/realty_data_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/spreadsheet_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/tools/stripe_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/banner.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/completer.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/console.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/image_render.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/input_box.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/mentions.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/picker.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/render/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/render/finance.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/render/market.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/render/output.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/render/responsive.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/render/team.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/robot.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/ui/startup_dashboard.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/utils/vscode_uri.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/video_analysis.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/video_editor.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/workspace/__init__.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/workspace/files.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/workspace/verify.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/workspace_changes.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/workspace_context.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/workspace_service.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code/workspace_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code.egg-info/dependency_links.txt +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code.egg-info/entry_points.txt +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code.egg-info/requires.txt +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/src/aria_code.egg-info/top_level.txt +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_adk_market_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_agent_key_points_language.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_agent_team_fallback.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_analyze_file_tool.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_architecture_ledger_is_true.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_architecture_report.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_aria_cli_core.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_aria_mcp_server.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_aria_sdk.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_artifact_publishing.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_artifacts_and_reports.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_ashare_prediction_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_background_processes.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_backtest_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_backtest_engine.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_backtest_report.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_backtest_runs_what_it_names.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_binary_bundles_runtime_imports.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_broken_akshare_is_optional.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_broker_automation.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_broker_chat_confirm_gate.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_broker_planning.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_broker_safety.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_broker_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_budget.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_business_workflow_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_canva_client.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_canvas_cmds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_card_approvals.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_channel_intake.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_channels.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_chart_handlers.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_chat_bots_fail_closed.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_chat_routing.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_ci_security_workflow.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_cli_app_split.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_cli_bootstrap.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_cli_config_store.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_cli_lifecycle_hooks.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_cli_runtime_consumer.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_cli_tool_executor_module.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_cli_updater.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_cloud_memory.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_code_audit_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_code_review_agent.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_codegen_output.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_coder_tester_self_healing.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_coder_tool_safety.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_collaboration.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_command_loggers.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_command_safety.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_compare_strategies.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_completions_builder.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_config_paths.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_configured_provider.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_container_entrypoint.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_container_entrypoints.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_context_checkpoints.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_context_references.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_context_service.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_conversation_core.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_crash_report.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_credential_file_permissions.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_custom_providers.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_daemon_gateway_config.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_dashboard_generator.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_data_service.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_data_service_imports.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_data_without_model.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_datasource_routing.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_deep_analysis.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_degrades_without_quant_engine.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_dispatcher_pins_match_the_release.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_doctor.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_doctor_describes_the_current_install.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_doctor_npm_scope.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_edit_and_command_safety.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_engine_boundary.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_english_output_group.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_enterprise_tool_honesty.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_env_switch_docs.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_eval_summary.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_evals_harness.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_event_import_roots.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_exec_events.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_extended_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_feishu_swarm_config.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_file_links.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_finalize_release.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_finance_renderers.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_finance_service_catalog.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_first_run_output.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_first_run_works.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_football_agent.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_football_prediction_output.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_google_cloud_models.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_google_cloud_routing.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_google_login.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_google_search_provider.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_headless_command_approval.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_headless_is_agentic.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_honest_surfaces.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_image_gen_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_image_inputs.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_import_graph_budget.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_intent_router.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_intent_signals.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_kling_video_client.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_lazy_rebind.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_legacy_module_imports.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_license_consistency.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_licensing.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_local_image_provider.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_logistics_3pl.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_logistics_and_finance_agents.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_lsp.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_markdown_pdf.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_market_answers_in_english.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_market_data_client.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_market_history_inheritance.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_market_history_tool.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_market_hours.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_market_questions_on_backend.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_market_symbol_extraction.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_market_universe.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_mcp_circuit.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_mcp_client.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_mentions.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_model_capability_registry.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_model_choice_is_the_users.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_model_selection_state.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_narrow_chinese_output.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_native_binary_entrypoints.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_native_installer.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_natural_language_routing.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_new_modules.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_no_hardcoded_developer_paths.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_no_tools_route.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_no_uncommitted_imports.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_numeric_listings.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_ollama_stream_imports.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_ollama_stream_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_openai_image_client.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_operations_suite.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_os_sandbox.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_output_rendering.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_packages_facade.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_packaging_constraints.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_packaging_manifest.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_packs_domains.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_pdf_report.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_pick_best_installed_model.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_plan_mode.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_platform_package_assembly.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_platform_packages.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_platform_publish.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_plotly_html_output.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_portfolio_language.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_portfolio_ledger.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_post_turn_context_decision.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_preflight.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_preview_server.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_privacy_feedback.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_project_aria.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_project_context_files.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_project_review.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_project_review_api.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_prompt_assembly.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_prompt_selection.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_provider_autoconfig.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_provider_error_messages.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_provider_integration.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_provider_registry.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_public_service_status.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_quant_engine_namespace.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_rebind_contract.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_rebind_namespace_contract.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_relay_client_credentials.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_relay_event_verification.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_relay_sends_for_clients.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_relay_store.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_relay_url.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_release_chain.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_release_commit_identity.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_release_push_is_atomic.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_release_reaches_the_registries.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_release_verification_waits.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_release_workflow_permissions.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_report_charts.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_report_generator.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_report_prompt_language.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_research_protocol.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_research_quality.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_responsive_rendering.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_review_service.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_risk_earnings_ops.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_root_module_budget.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_rsi_without_pandas_ta.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_runtime_acceptance.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_runtime_agent_loop.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_runtime_approval.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_runtime_bridge.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_runtime_bridge_fallback.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_runtime_checkpoints.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_runtime_event_identity.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_runtime_gateway.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_runtime_repo_map.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_runtime_run_store.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_runtime_tool_executor.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_runtime_worktrees.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_runway_video_client.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_safety_permissions.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_safety_service.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_safety_service_adoption.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_service_diagnostics_security.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_session_search.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_settings_service.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_shell_commands_as_written.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_shipper_digest.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_single_import_root.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_skill_agent_binding.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_skill_catalog.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_skill_loader.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_slash_popup.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_spreadsheet_tools.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_sse_stream_contract.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_startup_dashboard.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_startup_keeps_cloud_model.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_startup_latency.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_status_language.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_streaming_pipeline.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_stripe_agent.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_subagent.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_supervisor_routing.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_system_prompts.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_system_tools_output.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_task_orchestrator.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_team_analysts.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_team_synthesis.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_terminal_mixins.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_terminal_snapshots.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_tls_trust_store.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_tool_policy.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_tool_rounds_on_openai_apis.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_tool_scope.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_tool_step_output.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_trading_service.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_tradingview_bridge.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_turn_planning.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_ui_completer_references.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_ui_console_theme.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_ui_input_box.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_ui_language_and_model.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_ui_robot_banner.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_update_health_routes.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_verification_hint.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_verification_policy.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_version_consistency.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_version_counter.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_vertex_empty_rounds.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_video_analysis.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_video_editor.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_vscode_mcp.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_warehouse_agents.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_warehouse_cli_registration.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_warehouse_erp_client.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_warehouse_workflow.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_wheel_is_installable.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_workspace_changes.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_workspace_context.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_workspace_files.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_workspace_scope.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_workspace_service.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_workspace_verify.py +0 -0
- {aria_code-0.102.0 → aria_code-0.104.0}/tests/test_wrapped_indent.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aria-code
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.104.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
|
|
@@ -263,7 +263,7 @@ aria-code -p "Fix the failing tests and run them" --format jsonl --allow-tools e
|
|
|
263
263
|
| --- | --- |
|
|
264
264
|
| Local Ollama | An installed and running Ollama model; no cloud account for local inference. |
|
|
265
265
|
| Direct cloud provider | That provider's API credentials and network access. |
|
|
266
|
-
| Direct Google Cloud Vertex AI | `GOOGLE_CLOUD_PROJECT` and either a `gcloud auth login` (Aria uses Vertex AI's OpenAI-compatible endpoint with that login's token) or Application Default Credentials with `aria-code[google]`. `GOOGLE_CLOUD_LOCATION` defaults to `global`. |
|
|
266
|
+
| Direct Google Cloud Vertex AI | `GOOGLE_CLOUD_PROJECT` and either a `gcloud auth login` (Aria uses Vertex AI's OpenAI-compatible endpoint with that login's token) or Application Default Credentials with `aria-code[google]`. `GOOGLE_CLOUD_LOCATION` defaults to `global`. Any model your project can use works without an API key: `/model google/gemini-3.5-flash`, the Gemini 3 previews (served only from `global`), or Gemma and other Model Garden managed models by their id (`/model google/<id>`), which go through Vertex's OpenAI-compatible endpoint. |
|
|
267
267
|
| Arthera hosted service | Install `aria-code[google]` and sign in through `/login` in the CLI. Arthera account sign-in does not grant Vertex AI credentials to your own machine. |
|
|
268
268
|
|
|
269
269
|
Install extras only for features you use; see [pyproject.toml](pyproject.toml) for the current package options. Local inference can work offline, but live market data, remote integrations, sign-in, and cloud models cannot.
|
|
@@ -107,7 +107,7 @@ aria-code -p "Fix the failing tests and run them" --format jsonl --allow-tools e
|
|
|
107
107
|
| --- | --- |
|
|
108
108
|
| Local Ollama | An installed and running Ollama model; no cloud account for local inference. |
|
|
109
109
|
| Direct cloud provider | That provider's API credentials and network access. |
|
|
110
|
-
| Direct Google Cloud Vertex AI | `GOOGLE_CLOUD_PROJECT` and either a `gcloud auth login` (Aria uses Vertex AI's OpenAI-compatible endpoint with that login's token) or Application Default Credentials with `aria-code[google]`. `GOOGLE_CLOUD_LOCATION` defaults to `global`. |
|
|
110
|
+
| Direct Google Cloud Vertex AI | `GOOGLE_CLOUD_PROJECT` and either a `gcloud auth login` (Aria uses Vertex AI's OpenAI-compatible endpoint with that login's token) or Application Default Credentials with `aria-code[google]`. `GOOGLE_CLOUD_LOCATION` defaults to `global`. Any model your project can use works without an API key: `/model google/gemini-3.5-flash`, the Gemini 3 previews (served only from `global`), or Gemma and other Model Garden managed models by their id (`/model google/<id>`), which go through Vertex's OpenAI-compatible endpoint. |
|
|
111
111
|
| Arthera hosted service | Install `aria-code[google]` and sign in through `/login` in the CLI. Arthera account sign-in does not grant Vertex AI credentials to your own machine. |
|
|
112
112
|
|
|
113
113
|
Install extras only for features you use; see [pyproject.toml](pyproject.toml) for the current package options. Local inference can work offline, but live market data, remote integrations, sign-in, and cloud models cannot.
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "aria-code"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.104.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" }
|
|
@@ -5,6 +5,8 @@ Extracted from aria_cli.py. Methods' __globals__ are rebound to aria_cli's names
|
|
|
5
5
|
by _rebind_mixin_globals() called at module load time.
|
|
6
6
|
"""
|
|
7
7
|
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
from aria_code.apps.cli.i18n import ui_text
|
|
8
10
|
from aria_code.packages.aria_core.paths import aria_home
|
|
9
11
|
|
|
10
12
|
|
|
@@ -194,11 +196,24 @@ class ModelCommandsMixin:
|
|
|
194
196
|
_mod = _mod.strip()
|
|
195
197
|
_local_backends = {"ollama", "lmstudio", "vllm", "llamacpp", "jan", "custom"}
|
|
196
198
|
if _prov not in _local_backends:
|
|
197
|
-
# Cloud provider — check API key
|
|
199
|
+
# Cloud provider — check API key. Google models also run on
|
|
200
|
+
# Vertex AI with Google Cloud credentials and no key; this
|
|
201
|
+
# refused every `/model google/…` without a Gemini API key,
|
|
202
|
+
# so a team running on Google Cloud could not pick Gemini 3
|
|
203
|
+
# or Gemma at all.
|
|
204
|
+
from aria_code.apps.cli.providers.base import google_cloud_available
|
|
198
205
|
_key = _get_provider_key(_prov)
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
206
|
+
_vertex_ok = _prov in ("google", "gemini", "vertexai") and google_cloud_available()
|
|
207
|
+
if not _key and not _vertex_ok:
|
|
208
|
+
if _prov in ("google", "gemini", "vertexai"):
|
|
209
|
+
msg = ui_text(self,
|
|
210
|
+
f"⚠ 需要 Google Cloud 凭据或 API key:运行 gcloud auth application-default login,"
|
|
211
|
+
f"或 /apikey set {_prov} <key>",
|
|
212
|
+
f"⚠ Needs Google Cloud credentials or an API key: run "
|
|
213
|
+
f"gcloud auth application-default login, or /apikey set {_prov} <key>")
|
|
214
|
+
else:
|
|
215
|
+
msg = (f"⚠ {_prov} API key 未配置。"
|
|
216
|
+
f"运行: /apikey set {_prov} <key>")
|
|
202
217
|
self.context.console.print(f"[yellow]{msg}[/yellow]") if self.context.has_rich else print(msg)
|
|
203
218
|
return
|
|
204
219
|
self.terminal.config["local_provider"] = _prov
|
|
@@ -52,6 +52,12 @@ def select_base_prompt(message: str, *, intent: Optional[str] = None) -> str:
|
|
|
52
52
|
data by the caller that has it).
|
|
53
53
|
"""
|
|
54
54
|
resolved = intent or _intent_of(message)
|
|
55
|
+
if resolved == "general" and intent is None and _needs_workspace(message):
|
|
56
|
+
# "Write a stock brief to report_BETA.md from inventory.csv" read as
|
|
57
|
+
# general chat and got the short general prompt, with no tool
|
|
58
|
+
# discipline; in the evals the agent then computed by hand. Work on
|
|
59
|
+
# files in this folder is done the way code is.
|
|
60
|
+
resolved = "coding"
|
|
55
61
|
|
|
56
62
|
if resolved == "coding":
|
|
57
63
|
from aria_code.apps.cli.prompts.coding import CODING_SYSTEM_PROMPT
|
|
@@ -77,6 +83,29 @@ def select_base_prompt(message: str, *, intent: Optional[str] = None) -> str:
|
|
|
77
83
|
return _general_prompt()
|
|
78
84
|
|
|
79
85
|
|
|
86
|
+
def _needs_workspace(message: str) -> bool:
|
|
87
|
+
try:
|
|
88
|
+
from aria_code.apps.cli.workspace_route import needs_workspace
|
|
89
|
+
|
|
90
|
+
return needs_workspace(message or "")
|
|
91
|
+
except Exception:
|
|
92
|
+
return False
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
# Appended to every turn's prompt, whatever the intent. Both rules come from
|
|
96
|
+
# the evals: asked to write reorder.json or audit.json, the agent reported its
|
|
97
|
+
# results and wrote nothing; asked for a shipper's total stock, it added eight
|
|
98
|
+
# numbers by hand and got 500 for 560.
|
|
99
|
+
OUTPUT_DISCIPLINE = (
|
|
100
|
+
"Output rules:\n"
|
|
101
|
+
"- When the request names a file to write (a report, a JSON result), write it with a tool. "
|
|
102
|
+
"Before you finish, confirm it exists by reading it back or listing the folder. Describing the "
|
|
103
|
+
"result in your reply does not create the file.\n"
|
|
104
|
+
"- Compute totals, counts, averages and other figures from the data with code (run a short "
|
|
105
|
+
"script), not by hand. Every number you report or write must come from a tool's output."
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
|
|
80
109
|
def _general_prompt() -> str:
|
|
81
110
|
"""What Aria is, for turns that are neither code nor market work.
|
|
82
111
|
|
|
@@ -120,7 +149,7 @@ def build_turn_system_prompt(
|
|
|
120
149
|
if override and override.strip():
|
|
121
150
|
return override
|
|
122
151
|
|
|
123
|
-
parts = [select_base_prompt(message, intent=intent)]
|
|
152
|
+
parts = [select_base_prompt(message, intent=intent), OUTPUT_DISCIPLINE]
|
|
124
153
|
if project_context and project_context.strip():
|
|
125
154
|
parts.append(project_context.strip())
|
|
126
155
|
|
|
@@ -336,6 +336,13 @@ def _adc_available() -> bool:
|
|
|
336
336
|
return os.path.isfile(os.path.join(folder, "application_default_credentials.json"))
|
|
337
337
|
|
|
338
338
|
|
|
339
|
+
def google_cloud_available() -> bool:
|
|
340
|
+
"""Credentials Vertex AI can use: application-default credentials or a gcloud CLI."""
|
|
341
|
+
import shutil
|
|
342
|
+
|
|
343
|
+
return _adc_available() or bool(shutil.which("gcloud"))
|
|
344
|
+
|
|
345
|
+
|
|
339
346
|
def _google_api_key(config: dict) -> str:
|
|
340
347
|
import os
|
|
341
348
|
|
|
@@ -408,6 +415,30 @@ def google_readiness(config: dict) -> str:
|
|
|
408
415
|
return ""
|
|
409
416
|
|
|
410
417
|
|
|
418
|
+
def is_vertex_open_model(model: str) -> bool:
|
|
419
|
+
"""A model Vertex serves through its OpenAI-compatible endpoint, not generateContent.
|
|
420
|
+
|
|
421
|
+
Gemma ("gemma-4-26b-a4b-it-maas", "gemma-3-27b-it") and other Model Garden
|
|
422
|
+
managed models ("…-maas") are open models: the Gemini API does not serve
|
|
423
|
+
them, and the native SDK path 404'd.
|
|
424
|
+
"""
|
|
425
|
+
name = str(model or "").lower().split("/")[-1]
|
|
426
|
+
return name.startswith("gemma") or name.endswith("-maas")
|
|
427
|
+
|
|
428
|
+
|
|
429
|
+
def _adc_access_token() -> str:
|
|
430
|
+
"""An access token from application-default credentials, or "" if there are none."""
|
|
431
|
+
try:
|
|
432
|
+
import google.auth
|
|
433
|
+
import google.auth.transport.requests
|
|
434
|
+
|
|
435
|
+
credentials, _ = google.auth.default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
|
|
436
|
+
credentials.refresh(google.auth.transport.requests.Request())
|
|
437
|
+
return str(credentials.token or "")
|
|
438
|
+
except Exception:
|
|
439
|
+
return ""
|
|
440
|
+
|
|
441
|
+
|
|
411
442
|
def vertex_openai_endpoint(config: dict) -> dict:
|
|
412
443
|
"""Vertex AI's OpenAI-compatible endpoint and a token from the gcloud login.
|
|
413
444
|
|
|
@@ -423,16 +454,21 @@ def vertex_openai_endpoint(config: dict) -> dict:
|
|
|
423
454
|
import os
|
|
424
455
|
import shutil
|
|
425
456
|
|
|
426
|
-
|
|
457
|
+
# Application-default credentials first (a CI runner signed in with
|
|
458
|
+
# Workload Identity Federation, a service account, `gcloud auth
|
|
459
|
+
# application-default login`), then the gcloud CLI's own login.
|
|
460
|
+
adc_token = _adc_access_token() if _adc_available() else ""
|
|
461
|
+
if not adc_token and not shutil.which("gcloud"):
|
|
427
462
|
return {}
|
|
428
463
|
try:
|
|
429
|
-
project = (os.getenv("GOOGLE_CLOUD_PROJECT") or str(config.get("gcp_project") or "")
|
|
430
|
-
|
|
464
|
+
project = (os.getenv("GOOGLE_CLOUD_PROJECT") or str(config.get("gcp_project") or "")).strip()
|
|
465
|
+
if not project and shutil.which("gcloud"):
|
|
466
|
+
project = _gcloud("config", "get-value", "project", timeout=10).strip()
|
|
431
467
|
if not project or project == "(unset)":
|
|
432
468
|
return {"error": "vertex_needs_project: set GOOGLE_CLOUD_PROJECT, /config set gcp_project=<id>, "
|
|
433
469
|
"or `gcloud config set project <id>`"}
|
|
434
470
|
location = (os.getenv("GOOGLE_CLOUD_LOCATION") or str(config.get("gcp_location") or "") or "global").strip()
|
|
435
|
-
token = _gcloud("auth", "print-access-token")
|
|
471
|
+
token = adc_token or _gcloud("auth", "print-access-token")
|
|
436
472
|
except Exception as exc: # timeout, permissions: report, never hang the chat
|
|
437
473
|
return {"error": f"vertex_gcloud_failed: {type(exc).__name__}"}
|
|
438
474
|
if not token:
|
|
@@ -515,6 +551,45 @@ class ConfiguredProvider:
|
|
|
515
551
|
self.config["local_provider"] = self.backend
|
|
516
552
|
self.system_override = system_override
|
|
517
553
|
|
|
554
|
+
async def _stream_vertex_open_model(self, prepared: list, tools: list, cancel_event):
|
|
555
|
+
"""Gemma and other managed open models, through Vertex's OpenAI-compatible endpoint."""
|
|
556
|
+
from aria_code.local_llm_provider import LocalLLMProvider
|
|
557
|
+
|
|
558
|
+
vertex = await asyncio.to_thread(vertex_openai_endpoint, self.config)
|
|
559
|
+
if not vertex or vertex.get("error"):
|
|
560
|
+
yield LLMDone(response="", provider="vertexai", success=False,
|
|
561
|
+
error=(vertex or {}).get("error") or
|
|
562
|
+
"vertex_needs_credentials: run `gcloud auth application-default login` "
|
|
563
|
+
"or set GOOGLE_APPLICATION_CREDENTIALS")
|
|
564
|
+
return
|
|
565
|
+
cfg = dict(self.config)
|
|
566
|
+
cfg.update({
|
|
567
|
+
"model": f"google/{self.model}",
|
|
568
|
+
"local_provider": "custom",
|
|
569
|
+
"custom_endpoint": vertex["base_url"],
|
|
570
|
+
"custom_model": f"google/{self.model}",
|
|
571
|
+
"local_api_key": vertex["token"],
|
|
572
|
+
})
|
|
573
|
+
provider = LocalLLMProvider.from_config(cfg)
|
|
574
|
+
async for event in provider.stream(prepared, tools=tools, cancel_event=cancel_event):
|
|
575
|
+
kind = event.get("type")
|
|
576
|
+
if kind == "token":
|
|
577
|
+
yield LLMToken(text=str(event.get("text", "")))
|
|
578
|
+
elif kind == "thinking":
|
|
579
|
+
yield LLMThinking(content=str(event.get("text", "")))
|
|
580
|
+
elif kind == "tool_call":
|
|
581
|
+
yield LLMToolCall(tool=str(event.get("name", "")), params=dict(event.get("arguments") or {}))
|
|
582
|
+
elif kind == "error":
|
|
583
|
+
yield LLMDone(response="", provider="vertexai", success=False,
|
|
584
|
+
error=str(event.get("message") or "provider_error"))
|
|
585
|
+
return
|
|
586
|
+
elif kind == "done":
|
|
587
|
+
yield LLMDone(response=str(event.get("text") or ""), usage=dict(event.get("usage") or {}),
|
|
588
|
+
provider="vertexai", success=True,
|
|
589
|
+
cancelled=str(event.get("stop_reason") or "") == "cancelled")
|
|
590
|
+
return
|
|
591
|
+
yield LLMDone(response="", provider="vertexai", success=False, error="empty_response")
|
|
592
|
+
|
|
518
593
|
def _messages(self, messages: list) -> list:
|
|
519
594
|
prepared = [dict(message) for message in messages]
|
|
520
595
|
if not self.system_override:
|
|
@@ -539,6 +614,11 @@ class ConfiguredProvider:
|
|
|
539
614
|
native_vertex = self.backend in ("vertexai", "vertex-ai", "google-genai") or (
|
|
540
615
|
self.backend in ("google", "gemini") and _opt_in(self.config, "use_vertexai")
|
|
541
616
|
)
|
|
617
|
+
if self.backend in ("google", "gemini", "vertexai", "vertex-ai", "google-genai") \
|
|
618
|
+
and is_vertex_open_model(self.model):
|
|
619
|
+
async for evt in self._stream_vertex_open_model(prepared, tools, cancel_event):
|
|
620
|
+
yield evt
|
|
621
|
+
return
|
|
542
622
|
if native_vertex and self.backend in ("google", "gemini") and _gcloud_login_only(self.config):
|
|
543
623
|
# The SDK route accepts only application-default credentials. With
|
|
544
624
|
# just a `gcloud auth login` it failed outright, so a logged-in
|
|
@@ -116,10 +116,14 @@ class VertexAIProvider(LLMProvider):
|
|
|
116
116
|
|
|
117
117
|
if self._use_vertex():
|
|
118
118
|
project = os.getenv("GOOGLE_CLOUD_PROJECT") or self.config.get("gcp_project")
|
|
119
|
+
# global, not us-central1: the Gemini 3 previews
|
|
120
|
+
# (gemini-3-flash-preview, gemini-3.1-pro-preview) are served
|
|
121
|
+
# only from the global endpoint and 404 in a region, and the
|
|
122
|
+
# global endpoint serves 2.5 as well.
|
|
119
123
|
location = (
|
|
120
124
|
os.getenv("GOOGLE_CLOUD_LOCATION")
|
|
121
125
|
or self.config.get("gcp_location")
|
|
122
|
-
or "
|
|
126
|
+
or "global"
|
|
123
127
|
)
|
|
124
128
|
kwargs = {"vertexai": True, "location": location}
|
|
125
129
|
if project:
|
|
@@ -202,6 +202,12 @@ _CAPABILITY_TABLE: Dict[str, ModelCapability] = {
|
|
|
202
202
|
"gemini-1.5-pro": ModelCapability(tool_calls=True, format="openai_native", context_window=2097152, temperature=0.2, size_class="large", vision=True),
|
|
203
203
|
"gemini-1.5-flash": ModelCapability(tool_calls=True, format="openai_native", context_window=1048576, temperature=0.2, size_class="medium", vision=True),
|
|
204
204
|
"gemini": ModelCapability(tool_calls=True, format="openai_native", context_window=1048576, temperature=0.2, size_class="large", vision=True),
|
|
205
|
+
# Gemma served on Vertex AI (Model Garden, managed): "gemma-4-…-maas",
|
|
206
|
+
# "gemma-3-…". These used to match nothing and fell to the default — no
|
|
207
|
+
# tools, a 4K window — so a coding task on Gemma was refused as a
|
|
208
|
+
# tool-less route. Ollama's "gemma3:27b" ids keep their own entries above.
|
|
209
|
+
"gemma-4": ModelCapability(tool_calls=True, format="openai_native", context_window=131072, temperature=0.2, size_class="medium", vision=True, notes="Gemma 4 on Vertex AI"),
|
|
210
|
+
"gemma-3": ModelCapability(tool_calls=True, format="openai_native", context_window=131072, temperature=0.2, size_class="medium", vision=True, notes="Gemma 3 on Vertex AI"),
|
|
205
211
|
# ── OpenAI (cloud, via providers/llm/openai_compat.py) ────────────────
|
|
206
212
|
"gpt-5": ModelCapability(tool_calls=True, format="openai_native", context_window=400000, temperature=0.2, size_class="large", vision=True, thinking=True),
|
|
207
213
|
"gpt-4.1": ModelCapability(tool_calls=True, format="openai_native", context_window=1047576, temperature=0.2, size_class="large", vision=True),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aria-code
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.104.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
|
|
@@ -263,7 +263,7 @@ aria-code -p "Fix the failing tests and run them" --format jsonl --allow-tools e
|
|
|
263
263
|
| --- | --- |
|
|
264
264
|
| Local Ollama | An installed and running Ollama model; no cloud account for local inference. |
|
|
265
265
|
| Direct cloud provider | That provider's API credentials and network access. |
|
|
266
|
-
| Direct Google Cloud Vertex AI | `GOOGLE_CLOUD_PROJECT` and either a `gcloud auth login` (Aria uses Vertex AI's OpenAI-compatible endpoint with that login's token) or Application Default Credentials with `aria-code[google]`. `GOOGLE_CLOUD_LOCATION` defaults to `global`. |
|
|
266
|
+
| Direct Google Cloud Vertex AI | `GOOGLE_CLOUD_PROJECT` and either a `gcloud auth login` (Aria uses Vertex AI's OpenAI-compatible endpoint with that login's token) or Application Default Credentials with `aria-code[google]`. `GOOGLE_CLOUD_LOCATION` defaults to `global`. Any model your project can use works without an API key: `/model google/gemini-3.5-flash`, the Gemini 3 previews (served only from `global`), or Gemma and other Model Garden managed models by their id (`/model google/<id>`), which go through Vertex's OpenAI-compatible endpoint. |
|
|
267
267
|
| Arthera hosted service | Install `aria-code[google]` and sign in through `/login` in the CLI. Arthera account sign-in does not grant Vertex AI credentials to your own machine. |
|
|
268
268
|
|
|
269
269
|
Install extras only for features you use; see [pyproject.toml](pyproject.toml) for the current package options. Local inference can work offline, but live market data, remote integrations, sign-in, and cloud models cannot.
|
|
@@ -648,6 +648,7 @@ tests/test_ollama_stream_tools.py
|
|
|
648
648
|
tests/test_openai_image_client.py
|
|
649
649
|
tests/test_operations_suite.py
|
|
650
650
|
tests/test_os_sandbox.py
|
|
651
|
+
tests/test_output_discipline_prompt.py
|
|
651
652
|
tests/test_output_rendering.py
|
|
652
653
|
tests/test_packages_facade.py
|
|
653
654
|
tests/test_packaging_constraints.py
|
|
@@ -763,6 +764,7 @@ tests/test_verification_policy.py
|
|
|
763
764
|
tests/test_version_consistency.py
|
|
764
765
|
tests/test_version_counter.py
|
|
765
766
|
tests/test_vertex_empty_rounds.py
|
|
767
|
+
tests/test_vertex_models.py
|
|
766
768
|
tests/test_video_analysis.py
|
|
767
769
|
tests/test_video_editor.py
|
|
768
770
|
tests/test_vscode_mcp.py
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"""Every turn is told to write the files it is asked for and to compute numbers with code.
|
|
2
|
+
|
|
3
|
+
In the Vertex evals the agent reported reorder.json's contents without writing
|
|
4
|
+
it, and added up a shipper's stock by hand (500 for 560). Two of those prompts
|
|
5
|
+
read as general chat and got the short general prompt, with no tool discipline.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from aria_code.apps.cli.prompts.coding import CODING_SYSTEM_PROMPT
|
|
11
|
+
from aria_code.apps.cli.prompts.select import OUTPUT_DISCIPLINE, build_turn_system_prompt, select_base_prompt
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def test_every_intent_gets_the_output_rules():
|
|
15
|
+
for message in ("fix the failing test", "AAPL price", "hello there", "what is a reorder point"):
|
|
16
|
+
assert OUTPUT_DISCIPLINE in build_turn_system_prompt(message)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def test_the_rules_say_what_the_evals_needed():
|
|
20
|
+
assert "confirm it exists" in OUTPUT_DISCIPLINE
|
|
21
|
+
assert "not by hand" in OUTPUT_DISCIPLINE
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def test_work_on_files_in_this_folder_gets_the_coding_prompt(tmp_path, monkeypatch):
|
|
25
|
+
monkeypatch.chdir(tmp_path)
|
|
26
|
+
(tmp_path / "inventory.csv").write_text("owner_id,sku,on_hand\n")
|
|
27
|
+
message = "给货主 BETA 准备一份本周库存简报,写到 report_BETA.md。数据在 inventory.csv。"
|
|
28
|
+
assert select_base_prompt(message) == CODING_SYSTEM_PROMPT
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def test_a_general_question_keeps_the_general_prompt(tmp_path, monkeypatch):
|
|
32
|
+
monkeypatch.chdir(tmp_path)
|
|
33
|
+
assert select_base_prompt("what is a reorder point?") != CODING_SYSTEM_PROMPT
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def test_an_override_is_left_alone():
|
|
37
|
+
assert build_turn_system_prompt("x", override="only this") == "only this"
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"""Gemini 3.x and Gemma on Google Cloud, without a Gemini API key.
|
|
2
|
+
|
|
3
|
+
- `/model google/<anything>` refused without a Gemini API key, though the
|
|
4
|
+
model runs on Vertex AI with Google Cloud credentials.
|
|
5
|
+
- The native Vertex path defaulted to us-central1; the Gemini 3 previews are
|
|
6
|
+
served only from the global endpoint.
|
|
7
|
+
- Gemma ids matched no capability entry (no tools, a 4K window) and went to
|
|
8
|
+
the Gemini API, which does not serve them.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
import asyncio
|
|
14
|
+
import io
|
|
15
|
+
import sys
|
|
16
|
+
from types import SimpleNamespace
|
|
17
|
+
|
|
18
|
+
import pytest
|
|
19
|
+
|
|
20
|
+
from aria_code.apps.cli.providers import base
|
|
21
|
+
from aria_code.model_capability import get_model_capability
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@pytest.mark.parametrize("model", ["google/gemma-4-26b-a4b-it-maas", "gemma-3-27b-it", "vertexai/gemma-4-31b-it"])
|
|
25
|
+
def test_gemma_on_vertex_has_tools_and_a_real_window(model):
|
|
26
|
+
capability = get_model_capability(model)
|
|
27
|
+
assert capability.tool_calls and capability.context_window >= 131072
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def test_ollama_gemma_keeps_its_own_entry():
|
|
31
|
+
assert get_model_capability("gemma3:27b").format == "ollama_native"
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
@pytest.mark.parametrize("model, open_model", [
|
|
35
|
+
("gemma-4-26b-a4b-it-maas", True), ("gemma-3-27b-it", True), ("llama-4-maverick-17b-128e-instruct-maas", True),
|
|
36
|
+
("gemini-3.5-flash", False), ("gemini-3.1-pro-preview", False),
|
|
37
|
+
])
|
|
38
|
+
def test_which_models_take_the_openai_compatible_endpoint(model, open_model):
|
|
39
|
+
assert base.is_vertex_open_model(model) is open_model
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def test_gemma_streams_through_vertex_openai_compatible_endpoint(monkeypatch):
|
|
43
|
+
import aria_code.local_llm_provider as local_llm
|
|
44
|
+
|
|
45
|
+
monkeypatch.setattr(base, "vertex_openai_endpoint", lambda config: {
|
|
46
|
+
"token": "tok", "project": "p", "location": "global",
|
|
47
|
+
"base_url": "https://aiplatform.googleapis.com/v1/projects/p/locations/global/endpoints/openapi"})
|
|
48
|
+
seen = {}
|
|
49
|
+
|
|
50
|
+
class FakeProvider:
|
|
51
|
+
async def stream(self, messages, tools=None, cancel_event=None):
|
|
52
|
+
yield {"type": "tool_call", "name": "read_file", "arguments": {"path": "a.py"}}
|
|
53
|
+
yield {"type": "done", "text": "ok"}
|
|
54
|
+
|
|
55
|
+
def from_config(cfg):
|
|
56
|
+
seen.update(cfg)
|
|
57
|
+
return FakeProvider()
|
|
58
|
+
|
|
59
|
+
monkeypatch.setattr(local_llm.LocalLLMProvider, "from_config", staticmethod(from_config))
|
|
60
|
+
provider = base.ConfiguredProvider({"local_provider": "google"}, "google/gemma-4-26b-a4b-it-maas")
|
|
61
|
+
|
|
62
|
+
async def run():
|
|
63
|
+
return [e async for e in provider.stream([{"role": "user", "content": "hi"}], tools=[])]
|
|
64
|
+
|
|
65
|
+
events = asyncio.run(run())
|
|
66
|
+
assert seen["custom_model"] == "google/gemma-4-26b-a4b-it-maas"
|
|
67
|
+
assert seen["custom_endpoint"].endswith("/locations/global/endpoints/openapi")
|
|
68
|
+
assert [type(e).__name__ for e in events] == ["LLMToolCall", "LLMDone"]
|
|
69
|
+
assert events[-1].success
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def test_gemma_without_credentials_says_how_to_sign_in(monkeypatch):
|
|
73
|
+
monkeypatch.setattr(base, "vertex_openai_endpoint", lambda config: {})
|
|
74
|
+
provider = base.ConfiguredProvider({}, "google/gemma-4-26b-a4b-it-maas")
|
|
75
|
+
|
|
76
|
+
async def run():
|
|
77
|
+
return [e async for e in provider.stream([{"role": "user", "content": "hi"}], tools=[])]
|
|
78
|
+
|
|
79
|
+
done = asyncio.run(run())[-1]
|
|
80
|
+
assert not done.success and "application-default login" in done.error
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def test_native_vertex_defaults_to_the_global_endpoint(monkeypatch):
|
|
84
|
+
from aria_code.apps.cli.providers.vertexai_stream import VertexAIProvider
|
|
85
|
+
|
|
86
|
+
monkeypatch.delenv("GOOGLE_CLOUD_LOCATION", raising=False)
|
|
87
|
+
monkeypatch.setenv("GOOGLE_CLOUD_PROJECT", "p")
|
|
88
|
+
made = {}
|
|
89
|
+
genai = pytest.importorskip("google.genai")
|
|
90
|
+
monkeypatch.setattr(genai, "Client", lambda **kw: made.update(kw) or object())
|
|
91
|
+
VertexAIProvider(model="gemini-3-flash-preview", config={})._get_client()
|
|
92
|
+
assert made["vertexai"] is True and made["location"] == "global"
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
def test_model_command_accepts_google_models_with_cloud_credentials(monkeypatch):
|
|
96
|
+
sys.argv = ["aria-code"]
|
|
97
|
+
import aria_code.aria_cli as cli
|
|
98
|
+
from rich.console import Console
|
|
99
|
+
|
|
100
|
+
monkeypatch.setattr(base, "google_cloud_available", lambda: True)
|
|
101
|
+
terminal = cli.ArtheraTerminal(dict(cli.DEFAULT_CONFIG))
|
|
102
|
+
monkeypatch.setattr(terminal.commands.context, "console", Console(file=io.StringIO(), color_system=None))
|
|
103
|
+
asyncio.run(terminal.commands.cmd_model("google/gemini-3.5-flash"))
|
|
104
|
+
assert terminal.config["model"] == "gemini-3.5-flash" and terminal.config["local_provider"] == "google"
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def test_model_command_without_credentials_names_both_ways(monkeypatch):
|
|
108
|
+
sys.argv = ["aria-code"]
|
|
109
|
+
import aria_code.aria_cli as cli
|
|
110
|
+
from rich.console import Console
|
|
111
|
+
|
|
112
|
+
monkeypatch.setattr(base, "google_cloud_available", lambda: False)
|
|
113
|
+
terminal = cli.ArtheraTerminal(dict(cli.DEFAULT_CONFIG, ui_lang="en"))
|
|
114
|
+
console = Console(file=io.StringIO(), color_system=None, width=200)
|
|
115
|
+
monkeypatch.setattr(terminal.commands.context, "console", console)
|
|
116
|
+
import aria_code.apps.cli.commands.model_cmds as model_cmds
|
|
117
|
+
monkeypatch.setattr(model_cmds, "_get_provider_key", lambda provider: "", raising=False)
|
|
118
|
+
before = terminal.config["model"]
|
|
119
|
+
asyncio.run(terminal.commands.cmd_model("google/gemini-3.5-flash"))
|
|
120
|
+
assert terminal.config["model"] == before
|
|
121
|
+
text = console.file.getvalue()
|
|
122
|
+
assert "application-default login" in text and "/apikey set google" in text
|
|
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
|
|
File without changes
|
|
File without changes
|