aria-code 0.101.0__tar.gz → 0.103.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.101.0/src/aria_code.egg-info → aria_code-0.103.0}/PKG-INFO +2 -2
- {aria_code-0.101.0 → aria_code-0.103.0}/README.md +1 -1
- {aria_code-0.101.0 → aria_code-0.103.0}/pyproject.toml +1 -1
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/_version.py +1 -1
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/model_cmds.py +19 -4
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/headless.py +42 -8
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/providers/base.py +84 -4
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/providers/vertexai_stream.py +5 -1
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/model_capability.py +6 -0
- {aria_code-0.101.0 → aria_code-0.103.0/src/aria_code.egg-info}/PKG-INFO +2 -2
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code.egg-info/SOURCES.txt +2 -0
- aria_code-0.103.0/tests/test_headless_command_approval.py +58 -0
- aria_code-0.103.0/tests/test_vertex_models.py +122 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/LICENSE +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/NOTICE +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/setup.cfg +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/adk_apps/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/adk_apps/aria_code_review/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/adk_apps/aria_code_review/agent.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/adk_apps/aria_research/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/adk_apps/aria_research/agent.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/base.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/code_review.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/deep/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/deep/calibration_loop.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/deep/critic.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/deep/deepen.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/deep/models.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/deep/pipeline.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/deep/quant_fusion.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/deep/themes.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/deep/tiers.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/engineering/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/engineering/coder.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/engineering/tester.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/financial/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/financial/cashflow_burn.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/financial/catalyst.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/financial/corporate_finance.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/financial/debate.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/financial/earnings.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/financial/fundamental.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/financial/macro.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/financial/news.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/financial/risk.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/financial/sector.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/financial/strategist.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/financial/stripe_revenue.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/financial/synthesis.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/financial/technical.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/orchestrator.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/portfolio_agent.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/realty/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/realty/asset_diagnosis.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/realty/business_match.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/realty/cashflow_verify.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/realty/contract_rules.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/realty/energy_anomaly.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/realty/exit_settlement.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/realty/fulfillment_risk.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/realty/ops_optimize.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/realty/revenue_share.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/registry.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/signal_scheme.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/sports/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/sports/football_agent.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/supervisor.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/team.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/warehouse/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/warehouse/contracts.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/warehouse/dashboard.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/warehouse/fulfillment_leadtime.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/warehouse/inbound_exceptions.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/warehouse/inventory_health.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/warehouse/local_run.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/warehouse/local_snapshot.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/warehouse/logistics_cost.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/warehouse/logistics_sync.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/agents/warehouse/workflow.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/aliyun_data_client.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/README.md +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/channels/README.md +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/channels/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/channels/approvals.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/channels/conversation.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/channels/digest.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/channels/intake.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/channels/registry.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/channels/tradingview.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/README.md +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/_optional.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/bootstrap.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/broker_render.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/chat_turn.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/codegen_paths.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/_business_render.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/_ui.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/analysis_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/ashare_prediction_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/auth_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/backtest_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/broker_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/business_workflow_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/canvas_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/catalog.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/core_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/data_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/diagnostic_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/diagnostic_ops_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/file_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/finance_service_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/fx_commodity_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/market.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/market_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/market_context.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/market_render.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/ops_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/orchestrator_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/pdf_export_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/portfolio_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/report.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/scaffold_templates.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/session_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/session_ux_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/team.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/team_render.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/ui_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/warehouse_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/workflow_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/commands/workspace_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/config_paths.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/config_store.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/constants.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/context.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/deterministic.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/direct.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/earnings_view.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/exec_events.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/finance_service_catalog.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/football_reports.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/github_app_auth.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/google_login.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/handlers/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/handlers/broker_handlers.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/handlers/chart_handlers.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/handlers/market_handlers.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/handlers/realty_handlers.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/handlers/sports_handlers.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/handlers/strategy_advice.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/helpers.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/hooks.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/i18n.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/intent.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/intent_router.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/intent_signals.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/lifecycle_hooks.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/local_tool_schemas.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/main.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/market_hours.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/market_metadata.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/market_universe.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/message_processing.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/mixin_binding.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/model_catalog.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/pdf_report.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/plan_mode.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/plotly_html.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/prediction_feedback.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/preflight.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/project_aria.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/prompt_assembly.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/prompts/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/prompts/coding.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/prompts/select.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/prompts/system_prompts.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/prompts/ui.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/provider_endpoints.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/provider_keys.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/providers/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/providers/chat_routing.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/providers/collaboration.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/providers/llm/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/providers/llm/offline_responses.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/providers/llm/ollama_stream.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/providers/llm/response_cache.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/providers/llm/sse_stream.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/providers/runtime_bridge.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/review_runner.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/runtime_consumer.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/sandbox.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/session_export.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/session_jsonl.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/session_store.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/skills_catalog.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/terminal_chrome.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/todo_tracker.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/tool_executor.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/tool_registry.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/tool_scope.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/tools/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/tools/context.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/tools/file_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/tools/market_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/tools/notebook_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/tools/system_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/tools/write_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/tradingview_bridge.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/turn_planning.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/update_check.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/updater.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/utils/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/utils/market_detect.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/cli/workspace_route.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/daemon/README.md +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/vscode/README.md +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/apps/vscode/package.json +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/aria_cli.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/aria_daemon.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/aria_feishu_bot.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/aria_mcp_server.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/aria_relay_client.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/aria_relay_server.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/aria_telegram_bot.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/ariarc.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/artifacts.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/backtest_engine.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/backtest_report.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/brokers/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/brokers/automation.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/brokers/base.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/brokers/capabilities.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/brokers/cn/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/brokers/cn/easytrader_broker.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/brokers/cn/futu_broker.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/brokers/cn/longbridge_broker.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/brokers/cn/tiger_broker.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/brokers/cn/xtquant_broker.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/brokers/config.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/brokers/intl/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/brokers/intl/alpaca_broker.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/brokers/intl/ibkr_broker.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/brokers/intl/trading212_broker.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/brokers/intl/webull_broker.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/brokers/paper_broker.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/brokers/planning.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/brokers/registry.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/brokers/trading.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/canva_client.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/change_store.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/clients/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/clients/aliyun_data_client.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/clients/aria_relay_client.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/clients/canva_client.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/clients/figma_client.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/clients/football_data_client.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/clients/kling_video_client.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/clients/market_data_client.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/clients/openai_image_client.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/clients/runway_video_client.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/clients/warehouse_erp_client.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/cloud_memory.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/command_safety.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/computer_use_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/dashboard_generator.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/data_analysis_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/data_cleaner.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/data_service.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/datasources/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/datasources/base.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/datasources/router.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/datasources/sources/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/datasources/sources/akshare_source.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/datasources/sources/alpha_vantage_source.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/datasources/sources/edgar_source.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/datasources/sources/finnhub_source.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/datasources/sources/fred_source.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/datasources/sources/tushare_source.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/datasources/sources/web_scraper_source.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/datasources/sources/world_bank_source.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/datasources/sources/yfinance_source.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/demo_player.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/doctor.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/domain/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/domain/backtest_engine.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/domain/backtest_report.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/domain/finance_formulas.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/domain/portfolio_ledger.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/domain/strategy_vault.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/evals/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/evals/harness.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/evals/runner.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/evals/summary.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/external_agent_runner.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/figma_client.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/file_analysis_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/finance_formulas.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/football_data_client.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/image_gen_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/intent_classifier.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/kling_video_client.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/licensing.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/local_finance_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/local_image_provider.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/local_llm_provider.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/macro_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/markdown_pdf.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/market_data_client.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/mcp_client.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/memory_manager.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/notification_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/openai_image_client.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/adk_bridge/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/adk_bridge/code_review_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/adk_bridge/market_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_agents/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_agents/manifest.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_core/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_core/architecture.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_core/export.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_core/manifest.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_core/paths.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_core/secure_file.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_infra/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_infra/arthera.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_infra/doctor.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_infra/product.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_mcp/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_mcp/bridge.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_mcp/circuit.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_mcp/config.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_mcp/installer.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_mcp/server.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_mcp/tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_sdk/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_sdk/client.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_sdk/providers.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_sdk/streaming.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_sdk/types.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_services/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_services/cache.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_services/context.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_services/context_checkpoints.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_services/data.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_services/provider_health.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_services/references.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_services/registry.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_services/research_protocol.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_services/research_quality.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_services/settings.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_services/usage.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_skills/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_skills/catalog.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_skills/loader.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_skills/registry.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_tools/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_tools/financial/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_tools/financial/_paths.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_tools/financial/compliance.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_tools/financial/factors.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_tools/financial/risk_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_tools/financial/strategy.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/aria_tools/registry.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/quant_engine/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/quant_engine/_namespace.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/quant_engine/backtest/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/quant_engine/backtest/core.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/quant_engine/backtest/engine.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/quant_engine/portfolio/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/quant_engine/portfolio/optimizer.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/quant_engine/sports/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/quant_engine/sports/calibrator.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/quant_engine/sports/dixon_coles.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/quant_engine/sports/elo.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/quant_engine/sports/form.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/quant_engine/sports/h2h.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/quant_engine/sports/ml_model.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/quant_engine/sports/predictor.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/quant_engine/sports/tracker.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/quant_engine/stochastic/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/quant_engine/stochastic/gbm_enhanced.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/quant_engine/stochastic/ito_calculus.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/quant_engine/stochastic/kelly_criterion.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/quant_engine/stochastic/monte_carlo_advanced.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/quant_engine/stochastic/options_pricing.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packages/quant_engine/stochastic/stochastic_processes.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packs/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packs/base.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packs/finance/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packs/logistics/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packs/payments/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packs/realty/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packs/registry.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/packs/rules.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/plan_utils.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/plugin_loader.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/portfolio_ledger.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/preview_server.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/privacy/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/privacy/feedback.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/project_review.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/project_review_api.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/project_review_server.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/project_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/providers/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/providers/llm/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/providers/llm/anthropic.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/providers/llm/autoconfig.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/providers/llm/base.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/providers/llm/custom.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/providers/llm/ollama.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/providers/llm/openai_compat.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/providers/llm/registry.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/providers/local_image_provider.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/providers/local_llm_provider.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/providers/tool_messages.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/realty_data_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/relay_store.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/report_exporters.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/report_generator.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/review_service.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/runtime/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/runtime/acceptance.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/runtime/agent_loop.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/runtime/approval.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/runtime/budget.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/runtime/checkpoints.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/runtime/crash_report.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/runtime/events.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/runtime/gateway.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/runtime/lsp.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/runtime/orchestrator.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/runtime/processes.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/runtime/repo_map.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/runtime/run_state.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/runtime/run_store.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/runtime/self_healing.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/runtime/subagent.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/runtime/task_ledger.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/runtime/task_orchestrator.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/runtime/tool_executor.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/runtime/tool_policy.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/runtime/worktrees.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/runway_video_client.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/safety/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/safety/permissions.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/safety/sandbox.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/safety/service.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/setup_wizard.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/spreadsheet_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/strategy_vault.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/tools/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/tools/artifact_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/tools/broker_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/tools/build_quant_engine.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/tools/code_audit_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/tools/computer_use_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/tools/data_analysis_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/tools/enterprise_finance_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/tools/extended_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/tools/file_analysis_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/tools/image_gen_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/tools/local_finance_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/tools/logistics_carriers.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/tools/logistics_inventory.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/tools/logistics_io.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/tools/logistics_tenancy.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/tools/logistics_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/tools/macro_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/tools/notification_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/tools/project_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/tools/realty_data_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/tools/spreadsheet_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/tools/stripe_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/ui/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/ui/banner.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/ui/completer.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/ui/console.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/ui/image_render.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/ui/input_box.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/ui/mentions.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/ui/picker.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/ui/render/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/ui/render/finance.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/ui/render/market.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/ui/render/output.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/ui/render/responsive.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/ui/render/team.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/ui/robot.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/ui/startup_dashboard.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/utils/vscode_uri.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/video_analysis.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/video_editor.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/workspace/__init__.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/workspace/files.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/workspace/verify.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/workspace_changes.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/workspace_context.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/workspace_service.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code/workspace_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code.egg-info/dependency_links.txt +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code.egg-info/entry_points.txt +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code.egg-info/requires.txt +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/src/aria_code.egg-info/top_level.txt +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_adk_market_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_agent_key_points_language.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_agent_team_fallback.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_analyze_file_tool.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_architecture_ledger_is_true.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_architecture_report.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_aria_cli_core.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_aria_mcp_server.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_aria_sdk.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_artifact_publishing.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_artifacts_and_reports.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_ashare_prediction_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_background_processes.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_backtest_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_backtest_engine.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_backtest_report.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_backtest_runs_what_it_names.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_binary_bundles_runtime_imports.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_broken_akshare_is_optional.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_broker_automation.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_broker_chat_confirm_gate.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_broker_planning.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_broker_safety.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_broker_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_budget.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_business_workflow_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_canva_client.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_canvas_cmds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_card_approvals.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_channel_intake.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_channels.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_chart_handlers.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_chat_bots_fail_closed.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_chat_routing.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_ci_security_workflow.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_cli_app_split.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_cli_bootstrap.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_cli_config_store.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_cli_lifecycle_hooks.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_cli_runtime_consumer.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_cli_tool_executor_module.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_cli_updater.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_cloud_memory.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_code_audit_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_code_review_agent.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_codegen_output.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_coder_tester_self_healing.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_coder_tool_safety.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_collaboration.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_command_loggers.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_command_safety.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_compare_strategies.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_completions_builder.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_config_paths.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_configured_provider.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_container_entrypoint.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_container_entrypoints.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_context_checkpoints.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_context_references.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_context_service.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_conversation_core.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_crash_report.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_credential_file_permissions.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_custom_providers.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_daemon_gateway_config.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_dashboard_generator.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_data_service.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_data_service_imports.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_data_without_model.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_datasource_routing.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_deep_analysis.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_degrades_without_quant_engine.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_dispatcher_pins_match_the_release.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_doctor.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_doctor_describes_the_current_install.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_doctor_npm_scope.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_edit_and_command_safety.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_engine_boundary.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_english_output_group.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_enterprise_tool_honesty.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_env_switch_docs.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_eval_summary.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_evals_harness.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_event_import_roots.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_exec_events.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_extended_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_feishu_swarm_config.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_file_links.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_finalize_release.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_finance_renderers.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_finance_service_catalog.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_first_run_output.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_first_run_works.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_football_agent.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_football_prediction_output.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_google_cloud_models.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_google_cloud_routing.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_google_login.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_google_search_provider.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_headless_is_agentic.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_honest_surfaces.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_image_gen_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_image_inputs.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_import_graph_budget.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_intent_router.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_intent_signals.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_kling_video_client.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_lazy_rebind.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_legacy_module_imports.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_license_consistency.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_licensing.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_local_image_provider.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_logistics_3pl.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_logistics_and_finance_agents.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_lsp.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_markdown_pdf.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_market_answers_in_english.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_market_data_client.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_market_history_inheritance.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_market_history_tool.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_market_hours.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_market_questions_on_backend.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_market_symbol_extraction.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_market_universe.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_mcp_circuit.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_mcp_client.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_mentions.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_model_capability_registry.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_model_choice_is_the_users.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_model_selection_state.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_narrow_chinese_output.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_native_binary_entrypoints.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_native_installer.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_natural_language_routing.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_new_modules.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_no_hardcoded_developer_paths.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_no_tools_route.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_no_uncommitted_imports.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_numeric_listings.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_ollama_stream_imports.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_ollama_stream_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_openai_image_client.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_operations_suite.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_os_sandbox.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_output_rendering.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_packages_facade.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_packaging_constraints.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_packaging_manifest.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_packs_domains.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_pdf_report.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_pick_best_installed_model.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_plan_mode.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_platform_package_assembly.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_platform_packages.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_platform_publish.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_plotly_html_output.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_portfolio_language.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_portfolio_ledger.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_post_turn_context_decision.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_preflight.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_preview_server.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_privacy_feedback.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_project_aria.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_project_context_files.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_project_review.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_project_review_api.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_prompt_assembly.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_prompt_selection.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_provider_autoconfig.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_provider_error_messages.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_provider_integration.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_provider_registry.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_public_service_status.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_quant_engine_namespace.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_rebind_contract.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_rebind_namespace_contract.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_relay_client_credentials.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_relay_event_verification.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_relay_sends_for_clients.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_relay_store.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_relay_url.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_release_chain.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_release_commit_identity.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_release_push_is_atomic.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_release_reaches_the_registries.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_release_verification_waits.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_release_workflow_permissions.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_report_charts.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_report_generator.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_report_prompt_language.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_research_protocol.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_research_quality.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_responsive_rendering.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_review_service.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_risk_earnings_ops.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_root_module_budget.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_rsi_without_pandas_ta.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_runtime_acceptance.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_runtime_agent_loop.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_runtime_approval.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_runtime_bridge.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_runtime_bridge_fallback.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_runtime_checkpoints.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_runtime_event_identity.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_runtime_gateway.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_runtime_repo_map.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_runtime_run_store.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_runtime_tool_executor.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_runtime_worktrees.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_runway_video_client.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_safety_permissions.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_safety_service.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_safety_service_adoption.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_service_diagnostics_security.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_session_search.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_settings_service.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_shell_commands_as_written.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_shipper_digest.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_single_import_root.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_skill_agent_binding.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_skill_catalog.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_skill_loader.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_slash_popup.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_spreadsheet_tools.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_sse_stream_contract.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_startup_dashboard.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_startup_keeps_cloud_model.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_startup_latency.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_status_language.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_streaming_pipeline.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_stripe_agent.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_subagent.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_supervisor_routing.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_system_prompts.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_system_tools_output.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_task_orchestrator.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_team_analysts.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_team_synthesis.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_terminal_mixins.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_terminal_snapshots.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_tls_trust_store.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_tool_policy.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_tool_rounds_on_openai_apis.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_tool_scope.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_tool_step_output.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_trading_service.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_tradingview_bridge.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_turn_planning.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_ui_completer_references.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_ui_console_theme.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_ui_input_box.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_ui_language_and_model.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_ui_robot_banner.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_update_health_routes.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_verification_hint.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_verification_policy.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_version_consistency.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_version_counter.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_vertex_empty_rounds.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_video_analysis.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_video_editor.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_vscode_mcp.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_warehouse_agents.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_warehouse_cli_registration.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_warehouse_erp_client.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_warehouse_workflow.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_wheel_is_installable.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_workspace_changes.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_workspace_context.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_workspace_files.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_workspace_scope.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_workspace_service.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.0}/tests/test_workspace_verify.py +0 -0
- {aria_code-0.101.0 → aria_code-0.103.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.103.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.103.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
|
|
@@ -11,6 +11,33 @@ on whichever module loaded last.
|
|
|
11
11
|
|
|
12
12
|
from __future__ import annotations
|
|
13
13
|
|
|
14
|
+
def _headless_approval(config: dict, auto_approve, always_allow):
|
|
15
|
+
"""Answer approvals with what the operator granted up front, and nothing more.
|
|
16
|
+
|
|
17
|
+
``auto_approve`` and ``always_allow`` are read at call time from the module
|
|
18
|
+
that is actually running (aria_cli, aria_code.aria_cli or __main__ under
|
|
19
|
+
``python -m``), which is where --dangerously-skip-permissions and
|
|
20
|
+
--allow-tools set them.
|
|
21
|
+
"""
|
|
22
|
+
from aria_code.runtime.approval import ApprovalDecision
|
|
23
|
+
|
|
24
|
+
def decide(tool_name: str, params: dict):
|
|
25
|
+
if not (auto_approve() or tool_name in (always_allow() or ())):
|
|
26
|
+
return ApprovalDecision.deny("no one is here to approve it; pass --allow-tools or "
|
|
27
|
+
"--dangerously-skip-permissions")
|
|
28
|
+
if tool_name == "run_command":
|
|
29
|
+
return ApprovalDecision.allow(policy=config.get("command_policy", "safe"), user_approved=True)
|
|
30
|
+
return ApprovalDecision.allow()
|
|
31
|
+
|
|
32
|
+
return decide
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def _apply_approval_decision(params: dict, decision) -> dict:
|
|
36
|
+
from aria_code.runtime.approval import apply_approval_decision
|
|
37
|
+
|
|
38
|
+
return apply_approval_decision(params, decision)
|
|
39
|
+
|
|
40
|
+
|
|
14
41
|
class HeadlessMixin:
|
|
15
42
|
"""run_prompt, _run_prompt_turn, _finish_prompt and run_watch for ArtheraTerminal."""
|
|
16
43
|
|
|
@@ -138,6 +165,8 @@ class HeadlessMixin:
|
|
|
138
165
|
# already handles provider selection and cloud→Ollama fallback,
|
|
139
166
|
# which is what the two branches here were open-coding.
|
|
140
167
|
from aria_code.apps.cli.providers.runtime_bridge import run_chat_via_runtime
|
|
168
|
+
# This method runs on aria_cli's names; these two live here.
|
|
169
|
+
from aria_code.apps.cli.headless import _apply_approval_decision, _headless_approval
|
|
141
170
|
|
|
142
171
|
_turn = await run_chat_via_runtime(
|
|
143
172
|
prompt=prompt, history=[],
|
|
@@ -147,14 +176,19 @@ class HeadlessMixin:
|
|
|
147
176
|
thinking_mode=thinking_mode, user_context=user_context,
|
|
148
177
|
auth_token=auth_token, project_context=_PROJECT_CONTEXT,
|
|
149
178
|
max_rounds=int(self.config.get("max_rounds", 30) or 30),
|
|
150
|
-
# No approval UI exists in headless mode
|
|
151
|
-
#
|
|
152
|
-
#
|
|
153
|
-
#
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
179
|
+
# No approval UI exists in headless mode; the operator opts in
|
|
180
|
+
# with --dangerously-skip-permissions or --allow-tools. Those
|
|
181
|
+
# used to take the tools out of the confirm set, so no
|
|
182
|
+
# approval ever happened — and an approval is what lets
|
|
183
|
+
# run_command past the default "safe" policy (the REPL's
|
|
184
|
+
# "allow" upgrades it to balanced). Every `python3 script.py`
|
|
185
|
+
# was blocked: the evals' agents wrote scripts they could not
|
|
186
|
+
# run, then computed by hand or stopped. Now the confirm set
|
|
187
|
+
# stays, and the pre-approval answers it the way the REPL would.
|
|
188
|
+
confirm_tools=frozenset(_CONFIRM_TOOLS),
|
|
189
|
+
approval_callback=_headless_approval(
|
|
190
|
+
self.config, lambda: _auto_approve_session, lambda: _session_always_allow),
|
|
191
|
+
approval_applier=_apply_approval_decision,
|
|
158
192
|
on_tool_call=events.tool_started,
|
|
159
193
|
on_tool_result=events.tool_completed,
|
|
160
194
|
return_result=True,
|
|
@@ -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.103.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.
|
|
@@ -602,6 +602,7 @@ tests/test_google_cloud_models.py
|
|
|
602
602
|
tests/test_google_cloud_routing.py
|
|
603
603
|
tests/test_google_login.py
|
|
604
604
|
tests/test_google_search_provider.py
|
|
605
|
+
tests/test_headless_command_approval.py
|
|
605
606
|
tests/test_headless_is_agentic.py
|
|
606
607
|
tests/test_honest_surfaces.py
|
|
607
608
|
tests/test_image_gen_tools.py
|
|
@@ -762,6 +763,7 @@ tests/test_verification_policy.py
|
|
|
762
763
|
tests/test_version_consistency.py
|
|
763
764
|
tests/test_version_counter.py
|
|
764
765
|
tests/test_vertex_empty_rounds.py
|
|
766
|
+
tests/test_vertex_models.py
|
|
765
767
|
tests/test_video_analysis.py
|
|
766
768
|
tests/test_video_editor.py
|
|
767
769
|
tests/test_vscode_mcp.py
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"""-p with --dangerously-skip-permissions can run the scripts it writes.
|
|
2
|
+
|
|
3
|
+
Those flags used to take the tools out of the confirm set, so no approval
|
|
4
|
+
ever happened, and an approval is what lifts run_command past the default
|
|
5
|
+
"safe" policy. In the Vertex evals the agent wrote calculate_reorder.py, was
|
|
6
|
+
told "blocked by the security policy", and then computed by hand (a wrong
|
|
7
|
+
total) or stopped (no output file).
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
import inspect
|
|
13
|
+
import shlex
|
|
14
|
+
import sys
|
|
15
|
+
|
|
16
|
+
from aria_code.apps.cli.headless import _apply_approval_decision, _headless_approval
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def test_a_granted_session_approves_commands_with_the_upgrade():
|
|
20
|
+
decide = _headless_approval({"command_policy": "safe"}, lambda: True, lambda: set())
|
|
21
|
+
decision = decide("run_command", {"command": "python3 calc.py"})
|
|
22
|
+
params = {"command": "python3 calc.py"}
|
|
23
|
+
_apply_approval_decision(params, decision)
|
|
24
|
+
assert decision.approved and params["user_approved"] is True and params["policy"] == "safe"
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def test_allow_tools_grants_only_what_it_names():
|
|
28
|
+
decide = _headless_approval({}, lambda: False, lambda: {"run_command"})
|
|
29
|
+
assert decide("run_command", {"command": "pytest"}).approved
|
|
30
|
+
assert not decide("write_file", {"path": "a.py"}).approved
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def test_nothing_granted_is_refused_with_the_way_to_grant_it():
|
|
34
|
+
decision = _headless_approval({}, lambda: False, lambda: set())("run_command", {"command": "ls"})
|
|
35
|
+
assert not decision.approved and "--allow-tools" in decision.reason
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def test_an_approved_script_runs_under_the_safe_policy(tmp_path, monkeypatch):
|
|
39
|
+
from aria_code.apps.cli.tools.system_tools import tool_run_command
|
|
40
|
+
|
|
41
|
+
monkeypatch.setenv("ARIA_ARTIFACT_ROOT", str(tmp_path / "artifacts"))
|
|
42
|
+
(tmp_path / "calc.py").write_text("print(2 + 3)\n")
|
|
43
|
+
params = {"command": f"{shlex.quote(sys.executable)} calc.py", "policy": "safe", "cwd": str(tmp_path),
|
|
44
|
+
"permission_mode": "workspace-write", "network_enabled": False}
|
|
45
|
+
blocked = tool_run_command(dict(params), has_rich=False)
|
|
46
|
+
assert not blocked["success"] and "blocked by policy" in blocked["error"]
|
|
47
|
+
decision = _headless_approval({"command_policy": "safe"}, lambda: True, lambda: set())("run_command", params)
|
|
48
|
+
_apply_approval_decision(params, decision)
|
|
49
|
+
assert tool_run_command(params, has_rich=False)["data"]["stdout"].strip() == "5"
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def test_the_headless_turn_keeps_the_confirm_set_and_answers_it():
|
|
53
|
+
import aria_code.aria_cli as cli
|
|
54
|
+
|
|
55
|
+
source = inspect.getsource(cli.ArtheraTerminal._run_prompt_turn)
|
|
56
|
+
assert "confirm_tools=frozenset(_CONFIRM_TOOLS)" in source
|
|
57
|
+
assert "approval_callback=_headless_approval(" in source
|
|
58
|
+
assert "lambda: _auto_approve_session" in source
|
|
@@ -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
|