aria-code 0.162.0__tar.gz → 0.164.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.162.0/src/aria_code.egg-info → aria_code-0.164.0}/PKG-INFO +3 -3
- {aria_code-0.162.0 → aria_code-0.164.0}/README.md +2 -2
- {aria_code-0.162.0 → aria_code-0.164.0}/pyproject.toml +2 -2
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/_version.py +1 -1
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/adk_apps/aria_code_review/agent.py +1 -1
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/adk_apps/aria_research/agent.py +1 -1
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/app_server.py +100 -1
- aria_code-0.164.0/src/aria_code/apps/cli/auto_update.py +102 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/bootstrap.py +6 -6
- aria_code-0.164.0/src/aria_code/apps/cli/cloud_models.py +231 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/auth_cmds.py +11 -4
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/catalog.py +8 -2
- aria_code-0.164.0/src/aria_code/apps/cli/commands/engineering_cmds.py +399 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/model_cmds.py +116 -3
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/orchestrator_cmds.py +1 -1
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/config_store.py +31 -0
- aria_code-0.164.0/src/aria_code/apps/cli/endpoint_migration.py +58 -0
- aria_code-0.164.0/src/aria_code/apps/cli/file_references.py +155 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/github_app_auth.py +1 -1
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/google_login.py +43 -2
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/headless.py +21 -0
- aria_code-0.164.0/src/aria_code/apps/cli/intent_shadow.py +72 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/model_catalog.py +28 -14
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/model_retirement.py +9 -7
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/providers/runtime_bridge.py +15 -5
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/providers/vertexai_stream.py +8 -1
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/runtime_consumer.py +14 -0
- aria_code-0.164.0/src/aria_code/apps/cli/session_refresh.py +115 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/tool_executor.py +16 -6
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/tools/write_tools.py +19 -3
- aria_code-0.164.0/src/aria_code/apps/cli/web_login.py +135 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/aria_cli.py +21 -7
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ariarc.py +1 -1
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/doctor.py +1 -1
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/evals/harness.py +47 -1
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/evals/runner.py +31 -4
- aria_code-0.164.0/src/aria_code/evals/scorecard.py +319 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/intent_classifier.py +73 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/mcp_client.py +46 -2
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/model_capability.py +11 -2
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_mcp/bridge.py +29 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_mcp/server.py +137 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/providers/google_video_provider.py +1 -1
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/providers/llm/arthera_gateway.py +10 -9
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/providers/llm/openai_compat.py +43 -6
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/providers/llm/registry.py +2 -2
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/providers/local_llm_provider.py +3 -2
- aria_code-0.164.0/src/aria_code/providers/openai_params.py +32 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/acceptance.py +50 -8
- aria_code-0.164.0/src/aria_code/runtime/consult.py +65 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/delivery.py +21 -7
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/review.py +18 -3
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/safety/risk.py +95 -1
- aria_code-0.164.0/src/aria_code/training/prelude_commands.py +111 -0
- aria_code-0.164.0/src/aria_code/training/prelude_eval.py +390 -0
- aria_code-0.164.0/src/aria_code/training/prelude_real.py +183 -0
- aria_code-0.164.0/src/aria_code/training/prelude_train.py +248 -0
- aria_code-0.164.0/src/aria_code/training/trajectory_dataset.py +263 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/google_models.py +1 -1
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/workspace/verify.py +22 -2
- {aria_code-0.162.0 → aria_code-0.164.0/src/aria_code.egg-info}/PKG-INFO +3 -3
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code.egg-info/SOURCES.txt +43 -2
- aria_code-0.164.0/tests/test_acceptance_unavailable.py +98 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_aria_mcp_server.py +105 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_arthera_gateway_provider.py +2 -2
- aria_code-0.164.0/tests/test_auto_update.py +63 -0
- aria_code-0.164.0/tests/test_cloud_models.py +100 -0
- aria_code-0.164.0/tests/test_deepseek_api_capability.py +26 -0
- aria_code-0.164.0/tests/test_desktop_control_gate.py +108 -0
- aria_code-0.164.0/tests/test_endpoint_migration.py +71 -0
- aria_code-0.164.0/tests/test_engineering_commands.py +223 -0
- aria_code-0.164.0/tests/test_eval_scorecard.py +166 -0
- aria_code-0.164.0/tests/test_eval_usage.py +144 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_evals_harness.py +34 -0
- aria_code-0.164.0/tests/test_file_references.py +49 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_gemini_retirement.py +17 -14
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_google_cloud_models.py +2 -2
- aria_code-0.164.0/tests/test_login_api_url.py +36 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_market_questions_on_backend.py +1 -1
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_mcp_client.py +34 -0
- aria_code-0.164.0/tests/test_mcp_fast_fail.py +65 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_model_capability_registry.py +2 -2
- aria_code-0.164.0/tests/test_model_collaboration.py +178 -0
- aria_code-0.164.0/tests/test_model_native_picker.py +134 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_app.py +323 -9
- aria_code-0.164.0/tests/test_native_approval_risk.py +50 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_checkpoints.py +1 -1
- aria_code-0.164.0/tests/test_native_commands_info.py +43 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_go_acceptance.py +10 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_go_risk.py +9 -0
- aria_code-0.164.0/tests/test_openai_params.py +40 -0
- aria_code-0.164.0/tests/test_physical_risk.py +61 -0
- aria_code-0.164.0/tests/test_prelude_eval.py +95 -0
- aria_code-0.164.0/tests/test_prelude_real.py +56 -0
- aria_code-0.164.0/tests/test_prelude_router_experiment.py +80 -0
- aria_code-0.164.0/tests/test_release_is_manual.py +59 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_runtime_event_identity.py +1 -1
- aria_code-0.164.0/tests/test_session_refresh.py +96 -0
- aria_code-0.164.0/tests/test_trajectory_dataset.py +98 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_update_health_routes.py +4 -4
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_vertex_models.py +3 -3
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_vertex_project.py +8 -8
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_vertexai_tool_history.py +17 -0
- aria_code-0.164.0/tests/test_web_login.py +105 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_workflows.py +2 -2
- aria_code-0.164.0/tests/test_workspace_verify.py +83 -0
- aria_code-0.164.0/tests/test_write_file_short_content.py +49 -0
- aria_code-0.162.0/src/aria_code/demo_player.py +0 -207
- aria_code-0.162.0/tests/test_workspace_verify.py +0 -38
- {aria_code-0.162.0 → aria_code-0.164.0}/LICENSE +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/NOTICE +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/setup.cfg +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/adk_apps/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/adk_apps/aria_code_review/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/adk_apps/aria_research/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/base.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/code_review.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/deep/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/deep/calibration_loop.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/deep/critic.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/deep/deepen.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/deep/models.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/deep/pipeline.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/deep/quant_fusion.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/deep/themes.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/deep/tiers.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/engineering/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/engineering/coder.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/engineering/tester.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/cashflow_burn.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/catalyst.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/corporate_finance.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/debate.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/earnings.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/fundamental.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/macro.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/news.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/risk.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/sector.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/strategist.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/stripe_revenue.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/synthesis.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/financial/technical.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/orchestrator.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/portfolio_agent.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/realty/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/realty/asset_diagnosis.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/realty/business_match.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/realty/cashflow_verify.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/realty/contract_rules.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/realty/energy_anomaly.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/realty/exit_settlement.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/realty/fulfillment_risk.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/realty/ops_optimize.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/realty/revenue_share.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/registry.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/signal_scheme.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/sports/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/sports/football_agent.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/supervisor.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/team.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/video/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/video/director.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/video/qa_agent.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/video/script_doctor.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/warehouse/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/warehouse/contracts.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/warehouse/dashboard.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/warehouse/fulfillment_leadtime.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/warehouse/inbound_exceptions.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/warehouse/inventory_health.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/warehouse/local_run.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/warehouse/local_snapshot.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/warehouse/logistics_cost.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/warehouse/logistics_sync.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/agents/warehouse/workflow.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/aliyun_data_client.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/README.md +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/channels/README.md +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/channels/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/channels/approvals.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/channels/conversation.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/channels/digest.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/channels/intake.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/channels/registry.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/channels/tradingview.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/README.md +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/_optional.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/broker_render.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/chat_turn.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/codegen_paths.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/_business_render.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/_ui.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/analysis_cmds.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/ashare_prediction_cmds.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/backtest_cmds.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/broker_cmds.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/business_workflow_cmds.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/canvas_cmds.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/core_cmds.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/data_cmds.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/diagnostic_cmds.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/diagnostic_ops_cmds.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/file_cmds.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/finance_service_cmds.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/fx_commodity_cmds.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/market.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/market_cmds.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/market_context.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/market_render.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/ops_cmds.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/pdf_export_cmds.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/portfolio_cmds.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/report.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/scaffold_templates.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/session_cmds.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/session_ux_cmds.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/team.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/team_render.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/ui_cmds.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/warehouse_cmds.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/workflow_cmds.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/commands/workspace_cmds.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/config_paths.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/constants.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/context.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/conversation_policy.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/deterministic.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/direct.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/earnings_view.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/exec_events.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/finance_service_catalog.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/football_reports.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/handlers/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/handlers/broker_handlers.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/handlers/chart_handlers.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/handlers/market_handlers.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/handlers/realty_handlers.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/handlers/sports_handlers.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/handlers/strategy_advice.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/helpers.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/hooks.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/i18n.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/intent.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/intent_router.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/intent_signals.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/lifecycle_hooks.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/local_tool_schemas.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/main.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/market_hours.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/market_metadata.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/market_universe.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/message_processing.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/mixin_binding.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/model_probe.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/native_branding.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/native_bridge.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/native_entry.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/pdf_report.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/plan_mode.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/plotly_html.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/prediction_feedback.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/preflight.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/project_aria.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/prompt_assembly.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/prompts/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/prompts/coding.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/prompts/select.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/prompts/system_prompts.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/prompts/ui.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/provider_endpoints.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/provider_keys.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/providers/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/providers/base.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/providers/chat_routing.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/providers/collaboration.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/providers/llm/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/providers/llm/offline_responses.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/providers/llm/ollama_stream.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/providers/llm/response_cache.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/providers/llm/sse_stream.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/release_download.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/review_runner.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/sandbox.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/session_export.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/session_jsonl.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/session_store.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/skills_catalog.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/task_isolation.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/terminal_chrome.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/todo_tracker.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/tool_registry.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/tool_scope.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/tools/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/tools/context.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/tools/file_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/tools/market_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/tools/notebook_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/tools/system_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/tradingview_bridge.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/transactions.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/turn_planning.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/update_check.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/updater.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/utils/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/utils/market_detect.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/workflow_runner.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/cli/workspace_route.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/daemon/README.md +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/vscode/README.md +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/apps/vscode/package.json +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/aria_daemon.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/aria_feishu_bot.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/aria_mcp_server.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/aria_relay_client.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/aria_relay_server.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/aria_telegram_bot.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/artifacts.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/backtest_engine.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/backtest_report.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/automation.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/base.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/capabilities.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/cn/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/cn/easytrader_broker.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/cn/futu_broker.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/cn/longbridge_broker.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/cn/tiger_broker.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/cn/xtquant_broker.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/config.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/intl/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/intl/alpaca_broker.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/intl/ibkr_broker.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/intl/trading212_broker.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/intl/webull_broker.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/paper_broker.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/planning.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/registry.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/brokers/trading.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/canva_client.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/change_store.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/clients/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/clients/aliyun_data_client.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/clients/aria_relay_client.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/clients/canva_client.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/clients/figma_client.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/clients/football_data_client.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/clients/kling_video_client.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/clients/market_data_client.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/clients/openai_image_client.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/clients/runway_video_client.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/clients/warehouse_erp_client.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/cloud_memory.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/command_safety.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/computer_use_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/dashboard_generator.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/data_analysis_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/data_cleaner.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/data_service.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/datasources/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/datasources/base.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/datasources/router.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/datasources/sources/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/datasources/sources/akshare_source.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/datasources/sources/alpha_vantage_source.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/datasources/sources/edgar_source.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/datasources/sources/finnhub_source.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/datasources/sources/fred_source.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/datasources/sources/tushare_source.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/datasources/sources/web_scraper_source.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/datasources/sources/world_bank_source.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/datasources/sources/yfinance_source.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/domain/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/domain/backtest_engine.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/domain/backtest_report.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/domain/finance_formulas.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/domain/performance_stats.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/domain/portfolio_ledger.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/domain/strategy_vault.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/evals/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/evals/behavior.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/evals/gap.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/evals/review_probe.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/evals/summary.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/external_agent_runner.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/figma_client.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/file_analysis_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/finance_formulas.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/football_data_client.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/image_gen_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/kling_video_client.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/licensing.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/local_finance_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/local_image_provider.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/local_llm_provider.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/macro_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/markdown_pdf.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/market_data_client.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/memory_manager.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/notification_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/openai_image_client.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/adk_bridge/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/adk_bridge/code_review_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/adk_bridge/market_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_agents/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_agents/manifest.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_core/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_core/architecture.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_core/export.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_core/manifest.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_core/paths.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_core/secure_file.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_infra/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_infra/arthera.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_infra/doctor.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_infra/product.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_mcp/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_mcp/circuit.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_mcp/config.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_mcp/installer.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_mcp/tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_sdk/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_sdk/client.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_sdk/providers.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_sdk/streaming.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_sdk/types.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_services/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_services/cache.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_services/context.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_services/context_checkpoints.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_services/data.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_services/provider_health.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_services/references.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_services/registry.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_services/research_protocol.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_services/research_quality.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_services/settings.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_services/usage.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_skills/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_skills/catalog.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_skills/loader.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_skills/registry.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_tools/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_tools/financial/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_tools/financial/_paths.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_tools/financial/compliance.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_tools/financial/factors.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_tools/financial/risk_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_tools/financial/strategy.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/aria_tools/registry.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/_namespace.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/backtest/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/backtest/core.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/backtest/engine.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/portfolio/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/portfolio/optimizer.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/sports/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/sports/calibrator.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/sports/dixon_coles.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/sports/elo.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/sports/form.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/sports/h2h.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/sports/ml_model.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/sports/predictor.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/sports/tracker.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/stochastic/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/stochastic/gbm_enhanced.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/stochastic/ito_calculus.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/stochastic/kelly_criterion.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/stochastic/monte_carlo_advanced.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/stochastic/options_pricing.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packages/quant_engine/stochastic/stochastic_processes.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packs/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packs/base.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packs/finance/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packs/logistics/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packs/payments/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packs/realty/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packs/registry.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/packs/rules.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/plan_utils.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/plugin_loader.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/portfolio_ledger.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/preview_server.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/privacy/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/privacy/feedback.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/project_review.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/project_review_api.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/project_review_server.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/project_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/providers/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/providers/llm/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/providers/llm/anthropic.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/providers/llm/autoconfig.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/providers/llm/base.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/providers/llm/custom.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/providers/llm/ollama.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/providers/local_image_provider.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/providers/tool_messages.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/realty_data_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/relay_store.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/report_exporters.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/report_generator.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/review_service.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/agent_loop.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/approval.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/baseline.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/budget.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/checkpoints.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/contract.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/crash_report.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/events.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/gateway.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/lsp.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/native_index.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/orchestrator.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/processes.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/project_graph.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/repo_map.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/run_state.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/run_store.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/self_healing.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/semantic_diff.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/subagent.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/symbol_edit.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/task_ledger.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/task_orchestrator.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/task_worktree.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/tool_executor.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/tool_policy.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/transactions.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/windows_job.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/workflows.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runtime/worktrees.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/runway_video_client.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/safety/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/safety/client_isolation.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/safety/permissions.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/safety/sandbox.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/safety/service.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/setup_wizard.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/spreadsheet_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/strategy_vault.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/artifact_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/broker_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/build_quant_engine.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/code_audit_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/computer_use_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/data_analysis_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/enterprise_finance_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/extended_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/file_analysis_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/image_gen_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/local_finance_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/logistics_carriers.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/logistics_inventory.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/logistics_io.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/logistics_tenancy.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/logistics_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/macro_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/notification_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/project_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/realty_data_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/spreadsheet_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/stripe_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/tools/video_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/training/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/training/compare.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/training/sft_dataset.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/banner.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/completer.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/console.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/input_box.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/mentions.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/picker.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/render/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/render/actions.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/render/finance.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/render/market.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/render/output.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/render/responsive.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/render/team.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/robot.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/ui/startup_dashboard.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/utils/vscode_uri.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_analysis.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_editor.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/__main__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/engines/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/engines/base.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/engines/custom_model.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/engines/google_veo.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/engines/local_engine.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/engines/registry.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/music/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/music/foley_service.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/music/service.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/pipeline.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/plan.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/video_workflow/session.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/workspace/__init__.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/workspace/files.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/workspace_changes.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/workspace_context.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/workspace_service.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code/workspace_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code.egg-info/dependency_links.txt +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code.egg-info/entry_points.txt +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code.egg-info/requires.txt +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/src/aria_code.egg-info/top_level.txt +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_action_view.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_adk_market_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_agent_key_points_language.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_agent_team_fallback.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_analyze_file_tool.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_architecture_ledger_is_true.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_architecture_report.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_aria_cli_core.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_aria_sdk.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_artifact_publishing.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_artifacts_and_reports.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_ashare_prediction_cmds.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_background_processes.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_backtest_cmds.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_backtest_engine.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_backtest_report.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_backtest_runs_what_it_names.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_baseline.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_binary_bundles_runtime_imports.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_broken_akshare_is_optional.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_broker_automation.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_broker_chat_confirm_gate.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_broker_planning.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_broker_safety.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_broker_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_budget.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_business_workflow_cmds.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_callback_provider_cleanup.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_canva_client.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_canvas_cmds.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_card_approvals.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_change_contract.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_channel_intake.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_channels.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_chart_handlers.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_chat_bots_fail_closed.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_chat_routing.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_checkpoints_since.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_ci_security_workflow.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_cli_app_split.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_cli_bootstrap.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_cli_config_store.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_cli_lifecycle_hooks.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_cli_runtime_consumer.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_cli_tool_executor_module.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_cli_updater.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_client_isolation_guard.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_cloud_memory.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_code_audit_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_code_review_agent.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_codegen_output.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_coder_tester_self_healing.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_coder_tool_safety.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_collaboration.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_command_loggers.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_command_safety.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_compare_strategies.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_completions_builder.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_config_paths.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_configured_provider.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_container_entrypoint.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_container_entrypoints.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_context_checkpoints.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_context_references.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_context_service.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_conversation_core.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_conversation_policy.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_crash_report.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_credential_file_permissions.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_custom_providers.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_daemon_gateway_config.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_dashboard_generator.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_data_service.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_data_service_imports.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_data_without_model.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_datasource_routing.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_deep_analysis.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_degrades_without_quant_engine.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_delivery_report.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_dispatcher_pins_match_the_release.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_doctor.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_doctor_describes_the_current_install.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_doctor_npm_scope.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_doctor_sandbox.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_edit_and_command_safety.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_engine_boundary.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_english_output_group.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_enterprise_tool_honesty.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_env_switch_docs.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_eval_behavior.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_eval_hard_suite.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_eval_holdout.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_eval_summary.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_eval_task_bank.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_eval_trajectories.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_event_import_roots.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_exec_events.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_extended_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_feishu_swarm_config.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_file_links.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_finalize_release.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_finance_renderers.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_finance_service_catalog.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_first_run_output.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_first_run_works.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_football_agent.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_football_prediction_output.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_frozen_module_aliases.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_general_turn_prompt.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_google_cloud_routing.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_google_login.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_google_search_provider.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_headless_command_approval.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_headless_is_agentic.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_honest_surfaces.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_image_gen_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_image_inputs.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_import_aliasing.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_import_graph_budget.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_intent_router.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_intent_signals.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_kling_video_client.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_lazy_rebind.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_legacy_module_imports.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_license_consistency.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_licensing.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_linux_sandbox_integration.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_local_image_provider.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_local_workspace_execution.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_logistics_3pl.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_logistics_and_finance_agents.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_lsp.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_markdown_pdf.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_market_answers_in_english.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_market_data_client.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_market_history_inheritance.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_market_history_tool.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_market_hours.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_market_symbol_extraction.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_market_universe.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_mcp_circuit.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_mentions.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_model_choice_is_the_users.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_model_number_selection.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_model_probe.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_model_selection_state.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_narrow_chinese_output.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_binary_entrypoints.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_branding.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_bridge.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_entry.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_eval_trajectories.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_go_app.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_go_bridge.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_go_contract.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_go_delivery.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_go_providers.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_go_review.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_go_stream.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_index.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_installer.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_runtime_domain.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_session_export.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_training_compare.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_native_training_dataset.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_natural_language_routing.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_new_modules.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_no_hardcoded_developer_paths.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_no_tools_route.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_no_uncommitted_imports.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_numeric_listings.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_ollama_stream_imports.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_ollama_stream_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_openai_image_client.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_operations_suite.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_os_sandbox.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_output_discipline_prompt.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_output_rendering.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_packages_facade.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_packaging_constraints.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_packaging_manifest.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_packs_domains.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_pdf_report.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_performance_stats.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_pick_best_installed_model.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_plan_mode.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_plan_schema.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_plan_without_material.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_platform_package_assembly.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_platform_packages.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_platform_publish.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_plotly_html_output.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_portfolio_language.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_portfolio_ledger.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_portfolio_periods.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_post_turn_context_decision.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_preflight.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_preview_server.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_privacy_feedback.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_project_aria.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_project_context_files.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_project_graph.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_project_review.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_project_review_api.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_prompt_assembly.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_prompt_dates.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_prompt_selection.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_provider_autoconfig.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_provider_error_classification.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_provider_error_messages.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_provider_integration.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_provider_project_config.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_provider_registry.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_public_service_status.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_quant_engine_namespace.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_rebind_contract.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_rebind_namespace_contract.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_relay_client_credentials.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_relay_contract.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_relay_event_verification.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_relay_reliability.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_relay_sends_for_clients.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_relay_store.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_relay_url.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_release_badges.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_release_chain.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_release_commit_identity.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_release_download.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_release_push_is_atomic.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_release_reaches_the_registries.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_release_verification_waits.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_release_workflow_permissions.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_report_charts.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_report_generator.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_report_prompt_language.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_research_protocol.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_research_quality.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_responsive_rendering.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_review_gate.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_review_service.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_risk_approval.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_risk_assessment.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_risk_earnings_ops.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_robot_artwork.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_root_module_budget.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_rsi_without_pandas_ta.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_run_store_redaction.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_runtime_acceptance.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_runtime_agent_loop.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_runtime_approval.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_runtime_bridge.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_runtime_bridge_fallback.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_runtime_checkpoints.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_runtime_gateway.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_runtime_repo_map.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_runtime_run_store.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_runtime_tool_executor.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_runtime_worktrees.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_runway_video_client.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_rust_cli.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_rust_state.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_rust_stream.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_safety_permissions.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_safety_service.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_safety_service_adoption.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_semantic_diff.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_service_diagnostics_security.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_session_search.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_settings_service.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_shell_commands_as_written.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_shipper_digest.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_single_import_root.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_skill_agent_binding.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_skill_catalog.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_skill_loader.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_slash_popup.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_spreadsheet_tools.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_sse_http_roundtrip.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_sse_stream_contract.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_startup_dashboard.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_startup_keeps_cloud_model.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_startup_latency.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_status_language.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_streaming_pipeline.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_stripe_agent.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_subagent.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_subagent_workspace.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_supervisor_routing.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_symbol_edit.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_system_prompts.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_system_tools_output.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_task_isolation_turn.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_task_orchestrator.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_task_restore_startup.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_task_worktree.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_team_analysts.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_team_synthesis.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_terminal_mixins.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_terminal_snapshots.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_tls_trust_store.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_tool_policy.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_tool_rounds_on_openai_apis.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_tool_scope.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_tool_step_output.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_trading_service.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_tradingview_bridge.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_training_pipeline.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_transactions.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_transactions_turn.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_turn_planning.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_ui_completer_references.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_ui_console_theme.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_ui_input_box.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_ui_language_and_model.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_ui_robot_banner.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_verification_hint.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_verification_policy.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_verification_runner_selection.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_version_consistency.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_version_counter.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_vertex_busy_retry.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_vertex_empty_rounds.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_video_analysis.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_video_director.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_video_editor.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_video_engines.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_video_multi_agent.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_video_session.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_vscode_mcp.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_warehouse_agents.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_warehouse_cli_registration.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_warehouse_erp_client.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_warehouse_workflow.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_wheel_is_installable.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_workspace_changes.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_workspace_context.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_workspace_files.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_workspace_scope.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.0}/tests/test_workspace_service.py +0 -0
- {aria_code-0.162.0 → aria_code-0.164.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.164.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
|
|
@@ -172,7 +172,7 @@ Numbers you can check, client data kept apart, actions a person approves.</p>
|
|
|
172
172
|
<p align="center">
|
|
173
173
|
<a href="https://www.npmjs.com/package/@artheras/aria-code"><img src="https://img.shields.io/npm/v/@artheras/aria-code/latest?style=flat-square&logo=npm&label=npm" alt="npm version"></a>
|
|
174
174
|
<!-- Release automation pins PyPI: the default endpoint still selects legacy 4.x. -->
|
|
175
|
-
<a href="https://pypi.org/project/aria-code/0.
|
|
175
|
+
<a href="https://pypi.org/project/aria-code/0.164.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.164.0%2Fjson&query=%24.info.version&prefix=v&style=flat-square&logo=pypi&label=PyPI&color=blue&cacheSeconds=300" alt="PyPI version"></a>
|
|
176
176
|
<a href="https://github.com/artheras/aria-code/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/artheras/aria-code/ci.yml?branch=main&style=flat-square&logo=githubactions&label=CI" alt="CI status"></a>
|
|
177
177
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-64748b?style=flat-square" alt="Apache License 2.0"></a>
|
|
178
178
|
</p>
|
|
@@ -271,7 +271,7 @@ aria-code -p "Fix the failing tests and run them" --format jsonl --allow-tools e
|
|
|
271
271
|
| --- | --- |
|
|
272
272
|
| Local Ollama | An installed and running Ollama model; no cloud account for local inference. |
|
|
273
273
|
| Direct cloud provider | That provider's API credentials and network access. |
|
|
274
|
-
| 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.
|
|
274
|
+
| 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.8-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. |
|
|
275
275
|
| 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. |
|
|
276
276
|
|
|
277
277
|
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.
|
|
@@ -15,7 +15,7 @@ Numbers you can check, client data kept apart, actions a person approves.</p>
|
|
|
15
15
|
<p align="center">
|
|
16
16
|
<a href="https://www.npmjs.com/package/@artheras/aria-code"><img src="https://img.shields.io/npm/v/@artheras/aria-code/latest?style=flat-square&logo=npm&label=npm" alt="npm version"></a>
|
|
17
17
|
<!-- Release automation pins PyPI: the default endpoint still selects legacy 4.x. -->
|
|
18
|
-
<a href="https://pypi.org/project/aria-code/0.
|
|
18
|
+
<a href="https://pypi.org/project/aria-code/0.164.0/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Faria-code%2F0.164.0%2Fjson&query=%24.info.version&prefix=v&style=flat-square&logo=pypi&label=PyPI&color=blue&cacheSeconds=300" alt="PyPI version"></a>
|
|
19
19
|
<a href="https://github.com/artheras/aria-code/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/artheras/aria-code/ci.yml?branch=main&style=flat-square&logo=githubactions&label=CI" alt="CI status"></a>
|
|
20
20
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-64748b?style=flat-square" alt="Apache License 2.0"></a>
|
|
21
21
|
</p>
|
|
@@ -114,7 +114,7 @@ aria-code -p "Fix the failing tests and run them" --format jsonl --allow-tools e
|
|
|
114
114
|
| --- | --- |
|
|
115
115
|
| Local Ollama | An installed and running Ollama model; no cloud account for local inference. |
|
|
116
116
|
| Direct cloud provider | That provider's API credentials and network access. |
|
|
117
|
-
| 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.
|
|
117
|
+
| 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.8-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. |
|
|
118
118
|
| 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. |
|
|
119
119
|
|
|
120
120
|
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.164.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" }
|
|
@@ -45,7 +45,7 @@ classifiers = [
|
|
|
45
45
|
# parsers, the SQL engine and chart renderer are optional extras below — the
|
|
46
46
|
# code already lazy-imports them and degrades gracefully when absent.
|
|
47
47
|
dependencies = [
|
|
48
|
-
# The default model's client. DEFAULT_MODEL is google/gemini-3.
|
|
48
|
+
# The default model's client. DEFAULT_MODEL is google/gemini-3.8-flash, and
|
|
49
49
|
# this used to be the optional `google` extra — so a plain
|
|
50
50
|
# `pip install aria-code` failed on the very first prompt with "Gemini/Vertex
|
|
51
51
|
# AI 需要 google-genai,当前未安装". The comment above that extra said as
|
|
@@ -12,7 +12,7 @@ from aria_code.packages.adk_bridge import CodeReviewTools
|
|
|
12
12
|
_tools = CodeReviewTools()
|
|
13
13
|
|
|
14
14
|
root_agent = Agent(
|
|
15
|
-
model=os.getenv("ARIA_ADK_MODEL", "gemini-3.
|
|
15
|
+
model=os.getenv("ARIA_ADK_MODEL", "gemini-3.8-flash"),
|
|
16
16
|
name="aria_code_review",
|
|
17
17
|
description="A read-only code reviewer for user-submitted source text.",
|
|
18
18
|
instruction="""You are Aria Code Review, a careful software reviewer.
|
|
@@ -12,7 +12,7 @@ from aria_code.packages.adk_bridge import MarketResearchTools
|
|
|
12
12
|
_tools = MarketResearchTools()
|
|
13
13
|
|
|
14
14
|
root_agent = Agent(
|
|
15
|
-
model=os.getenv("ARIA_ADK_MODEL", "gemini-3.
|
|
15
|
+
model=os.getenv("ARIA_ADK_MODEL", "gemini-3.8-flash"),
|
|
16
16
|
name="aria_research",
|
|
17
17
|
description="A read-only market-research assistant for Aria Code and Arthera.",
|
|
18
18
|
instruction="""You are Aria Research, a careful financial-research assistant.
|
|
@@ -106,10 +106,21 @@ class Server:
|
|
|
106
106
|
# an index to it preserves deny lists, L4 ask-every-time, hooks, symbol
|
|
107
107
|
# previews and the exact scope of session grants.
|
|
108
108
|
choices = [[str(label), str(help_text)] for label, help_text in options]
|
|
109
|
+
extra = {}
|
|
110
|
+
picker = bool(kwargs.get("picker"))
|
|
111
|
+
if picker:
|
|
112
|
+
# A long list to search (models): the frontend draws a picker, not an approval.
|
|
113
|
+
extra["picker"] = True
|
|
114
|
+
groups = kwargs.get("groups")
|
|
115
|
+
if isinstance(groups, list) and len(groups) == len(choices):
|
|
116
|
+
extra["groups"] = [str(group) for group in groups]
|
|
117
|
+
if not picker and getattr(self, "approval_risk", None):
|
|
118
|
+
extra["risk"] = self.approval_risk
|
|
109
119
|
answer = self.ask("approval.requested", title=str(title or "Approval / selection"),
|
|
110
120
|
choices=choices, selected=selected,
|
|
111
121
|
shortcuts=kwargs.get("shortcuts", {}),
|
|
112
|
-
context=getattr(self, "approval_context", "")
|
|
122
|
+
context="" if picker else getattr(self, "approval_context", ""),
|
|
123
|
+
**extra)
|
|
113
124
|
chosen = answer.get("choice", -1)
|
|
114
125
|
if type(chosen) is not int or not -1 <= chosen < len(choices):
|
|
115
126
|
raise ValueError("Invalid menu response")
|
|
@@ -158,6 +169,11 @@ class Server:
|
|
|
158
169
|
continue
|
|
159
170
|
if kind == "shutdown":
|
|
160
171
|
break
|
|
172
|
+
if kind == "completion.request":
|
|
173
|
+
# Answered here, not queued behind a running turn: it is
|
|
174
|
+
# a lookup, and the list it feeds should not wait.
|
|
175
|
+
self.complete_reference(value)
|
|
176
|
+
continue
|
|
161
177
|
self.requests.put_nowait(value)
|
|
162
178
|
except (ValueError, UnicodeError, queue.Full) as error:
|
|
163
179
|
self.emit("protocol.error", error=str(error))
|
|
@@ -237,10 +253,12 @@ class Server:
|
|
|
237
253
|
if isinstance(params.get(key), str):
|
|
238
254
|
context.append((cn if zh else en) + ": " + params[key])
|
|
239
255
|
server.approval_context = "\n".join(context)
|
|
256
|
+
server.approval_risk = server.assess_for_approval(tool_name, tool_params)
|
|
240
257
|
try:
|
|
241
258
|
return await super().approve(tool_name, tool_params, **kwargs)
|
|
242
259
|
finally:
|
|
243
260
|
server.approval_context = ""
|
|
261
|
+
server.approval_risk = None
|
|
244
262
|
cli.TerminalApprovalEventConsumer = Approvals
|
|
245
263
|
config = cli.load_config()
|
|
246
264
|
config["_session_workspace_root"] = str(Path.cwd().resolve())
|
|
@@ -285,6 +303,9 @@ class Server:
|
|
|
285
303
|
# The host draws its own turn footer. Keep this presentation flag out
|
|
286
304
|
# of saved user settings and retain normal Python CLI behaviour.
|
|
287
305
|
terminal._native_frontend = True
|
|
306
|
+
# Commands that need a choice (/model) draw it in the host's own menu.
|
|
307
|
+
# This process's stdin is a pipe, so the TTY arrow picker can never run.
|
|
308
|
+
terminal._native_select = self.select
|
|
288
309
|
execute = terminal.tool_executor.execute_local
|
|
289
310
|
def tracked(*args, **kwargs):
|
|
290
311
|
with self.tool_lock:
|
|
@@ -347,6 +368,62 @@ class Server:
|
|
|
347
368
|
config["last_session_id"] = self.terminal.session_id
|
|
348
369
|
self.cli.save_config(config)
|
|
349
370
|
|
|
371
|
+
def complete_reference(self, value):
|
|
372
|
+
"""Answer a completion request with candidates for the `@file` being typed."""
|
|
373
|
+
text = value.get("text")
|
|
374
|
+
if not isinstance(text, str) or len(text.encode("utf-8")) > MAX_INPUT:
|
|
375
|
+
raise ValueError("Completion text must be at most 65536 UTF-8 bytes")
|
|
376
|
+
from aria_code.apps.cli.file_references import reference_candidates
|
|
377
|
+
|
|
378
|
+
try:
|
|
379
|
+
candidates = reference_candidates(text, Path.cwd())
|
|
380
|
+
except Exception:
|
|
381
|
+
candidates = []
|
|
382
|
+
self.emit("completion.result", session_id=value.get("session_id", ""), text=text, candidates=candidates)
|
|
383
|
+
|
|
384
|
+
def assess_for_approval(self, tool_name, params):
|
|
385
|
+
"""What the action reaches, for the approval card: level, files, hosts, why.
|
|
386
|
+
|
|
387
|
+
The same assessment the terminal's text card is built from, sent as data
|
|
388
|
+
so the frontend can draw it. None when it cannot be assessed; the dialog
|
|
389
|
+
then shows only the tool and its target.
|
|
390
|
+
"""
|
|
391
|
+
try:
|
|
392
|
+
from aria_code.safety.risk import assess_tool
|
|
393
|
+
from aria_code.ui.render.output import _file_impact
|
|
394
|
+
|
|
395
|
+
assessment = assess_tool(tool_name, dict(params or {}), root=os.getcwd())
|
|
396
|
+
card = assessment.as_dict()
|
|
397
|
+
card["impact"] = _file_impact(assessment)
|
|
398
|
+
for key in ("hosts", "files", "systems", "reasons"):
|
|
399
|
+
card[key] = [str(x)[:200] for x in card.get(key, [])[:8]]
|
|
400
|
+
return card
|
|
401
|
+
except Exception:
|
|
402
|
+
return None
|
|
403
|
+
|
|
404
|
+
def commands_info(self):
|
|
405
|
+
"""Every slash command with what it does, in the order the list shows them.
|
|
406
|
+
|
|
407
|
+
The frontend's list opens on a bare `/`, so what comes first matters: the
|
|
408
|
+
core commands and the entry points, then the rest alphabetically, the same
|
|
409
|
+
order the terminal completer has always used. Descriptions are localised.
|
|
410
|
+
"""
|
|
411
|
+
from aria_code.apps.cli.commands.catalog import CORE_SLASH_COMMANDS, ENTRY_SLASH_COMMANDS, describe
|
|
412
|
+
|
|
413
|
+
t = self.terminal
|
|
414
|
+
registry = t.commands.commands
|
|
415
|
+
lang = t.config.get("ui_lang", "en")
|
|
416
|
+
first = [n for n in (*CORE_SLASH_COMMANDS, *ENTRY_SLASH_COMMANDS) if n in registry]
|
|
417
|
+
rest = [n for n in sorted(registry) if n not in set(first)]
|
|
418
|
+
info = []
|
|
419
|
+
for name in first + rest:
|
|
420
|
+
try:
|
|
421
|
+
detail = describe(name, registry[name][1], lang)
|
|
422
|
+
except Exception:
|
|
423
|
+
detail = ""
|
|
424
|
+
info.append({"name": name, "description": str(detail or "")[:160]})
|
|
425
|
+
return info
|
|
426
|
+
|
|
350
427
|
def snapshot(self, kind):
|
|
351
428
|
from aria_code.apps.cli.native_branding import robot_rows
|
|
352
429
|
from aria_code.ui import robot
|
|
@@ -363,6 +440,7 @@ class Server:
|
|
|
363
440
|
robot=rows, robot_design="cream-block-v2" if rows else "",
|
|
364
441
|
model=t.config.get("model", ""), provider=t.config.get("local_provider", ""),
|
|
365
442
|
workspace=str(Path.cwd()), commands=sorted(t.commands.commands),
|
|
443
|
+
commands_info=self.commands_info(), reference_completion=True,
|
|
366
444
|
permission=t.config.get("permission_mode", "workspace-write"),
|
|
367
445
|
network=bool(t.config.get("network_enabled", True)),
|
|
368
446
|
ui_lang=t.config.get("ui_lang", "en"),
|
|
@@ -450,11 +528,32 @@ class Server:
|
|
|
450
528
|
notice = get_update_notice(wait_ms=0)
|
|
451
529
|
if notice:
|
|
452
530
|
self.emit("update.available", turn_id=None, text=Text.from_markup(notice).plain)
|
|
531
|
+
await self.install_update_quietly()
|
|
453
532
|
return
|
|
454
533
|
await asyncio.sleep(0.1)
|
|
455
534
|
except Exception:
|
|
456
535
|
pass # A metadata failure must not interrupt the user's task.
|
|
457
536
|
|
|
537
|
+
async def install_update_quietly(self):
|
|
538
|
+
"""Native installs update themselves; the header then asks for a restart."""
|
|
539
|
+
from aria_code.apps.cli import auto_update, updater
|
|
540
|
+
from aria_code.apps.cli.update_check import _install_channel, _newer
|
|
541
|
+
|
|
542
|
+
loop = asyncio.get_running_loop()
|
|
543
|
+
installed = await loop.run_in_executor(
|
|
544
|
+
None,
|
|
545
|
+
lambda: auto_update.install_if_newer(
|
|
546
|
+
self.cli.__version__, _install_channel(), self.terminal.config,
|
|
547
|
+
check=updater.check_update, install=updater.install_native,
|
|
548
|
+
newer=_newer, app_root=updater._app_root(),
|
|
549
|
+
),
|
|
550
|
+
)
|
|
551
|
+
if installed:
|
|
552
|
+
zh = self.terminal.config.get("ui_lang", "en") == "zh"
|
|
553
|
+
text = (f"已更新到 {installed} · 重启 Aria 后生效" if zh
|
|
554
|
+
else f"Updated to {installed} · restart Aria to use it")
|
|
555
|
+
self.emit("update.available", turn_id=None, text=text)
|
|
556
|
+
|
|
458
557
|
async def serve(self):
|
|
459
558
|
self.loop = asyncio.get_running_loop()
|
|
460
559
|
threading.Thread(target=self.read_requests, daemon=True).start()
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"""Install a verified update in the background, the way Claude Code does.
|
|
2
|
+
|
|
3
|
+
The session keeps running on the version it started with. When a newer native
|
|
4
|
+
release is out, it is downloaded, checked and switched in behind the scenes,
|
|
5
|
+
and the header says "restart to use it". Nothing is interrupted: the new
|
|
6
|
+
version only takes over the next time Aria starts.
|
|
7
|
+
|
|
8
|
+
Only managed native installs update themselves. pip, npm and source checkouts
|
|
9
|
+
belong to their own tools, so they keep the plain "update available" notice.
|
|
10
|
+
Turn it off with `auto_update: false` in the config or `ARIA_AUTO_UPDATE=0`.
|
|
11
|
+
A version that failed to install is not retried for a day, and two sessions
|
|
12
|
+
never install at once.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
|
|
17
|
+
import json
|
|
18
|
+
import os
|
|
19
|
+
import time
|
|
20
|
+
from pathlib import Path
|
|
21
|
+
from typing import Callable, Optional
|
|
22
|
+
|
|
23
|
+
RETRY_AFTER_FAILURE_S = 86_400
|
|
24
|
+
LOCK_STALE_S = 900
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def enabled(config: dict) -> bool:
|
|
28
|
+
if os.environ.get("ARIA_AUTO_UPDATE", "").lower() in {"0", "false", "no", "off"}:
|
|
29
|
+
return False
|
|
30
|
+
if os.environ.get("ARIA_OFFLINE", "").lower() in {"1", "true", "yes", "on"}:
|
|
31
|
+
return False
|
|
32
|
+
return bool(config.get("auto_update", True))
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def _state_path(app_root: Path) -> Path:
|
|
36
|
+
return app_root / "auto-update.json"
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def _recently_failed(app_root: Path, version: str, now: float) -> bool:
|
|
40
|
+
try:
|
|
41
|
+
data = json.loads(_state_path(app_root).read_text())
|
|
42
|
+
except (OSError, ValueError):
|
|
43
|
+
return False
|
|
44
|
+
return data.get("failed") == version and now - float(data.get("at", 0)) < RETRY_AFTER_FAILURE_S
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def _remember_failure(app_root: Path, version: str, now: float) -> None:
|
|
48
|
+
try:
|
|
49
|
+
_state_path(app_root).write_text(json.dumps({"failed": version, "at": now}))
|
|
50
|
+
except OSError:
|
|
51
|
+
pass
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def _take_lock(app_root: Path, now: float) -> Optional[Path]:
|
|
55
|
+
lock = app_root / "auto-update.lock"
|
|
56
|
+
try:
|
|
57
|
+
if lock.exists() and now - lock.stat().st_mtime > LOCK_STALE_S:
|
|
58
|
+
lock.unlink()
|
|
59
|
+
fd = os.open(lock, os.O_CREAT | os.O_EXCL | os.O_WRONLY, 0o600)
|
|
60
|
+
except OSError:
|
|
61
|
+
return None
|
|
62
|
+
os.close(fd)
|
|
63
|
+
return lock
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def install_if_newer(
|
|
67
|
+
current: str,
|
|
68
|
+
channel: str,
|
|
69
|
+
config: dict,
|
|
70
|
+
*,
|
|
71
|
+
check: Callable[..., tuple],
|
|
72
|
+
install: Callable[[str, dict], Path],
|
|
73
|
+
newer: Callable[[str, str], bool],
|
|
74
|
+
app_root: Path,
|
|
75
|
+
now: Optional[float] = None,
|
|
76
|
+
) -> Optional[str]:
|
|
77
|
+
"""Install the latest release when there is one; return its version, else None.
|
|
78
|
+
|
|
79
|
+
Blocking: run it off the event loop. Any failure leaves the installed
|
|
80
|
+
version untouched and returns None.
|
|
81
|
+
"""
|
|
82
|
+
if channel != "native" or not enabled(config):
|
|
83
|
+
return None
|
|
84
|
+
stamp = time.time() if now is None else now
|
|
85
|
+
try:
|
|
86
|
+
app_root.mkdir(parents=True, exist_ok=True)
|
|
87
|
+
latest, release = check("native")
|
|
88
|
+
if not newer(latest, current) or _recently_failed(app_root, latest, stamp):
|
|
89
|
+
return None
|
|
90
|
+
lock = _take_lock(app_root, stamp)
|
|
91
|
+
if lock is None:
|
|
92
|
+
return None
|
|
93
|
+
try:
|
|
94
|
+
install(latest, release)
|
|
95
|
+
except Exception:
|
|
96
|
+
_remember_failure(app_root, latest, stamp)
|
|
97
|
+
return None
|
|
98
|
+
finally:
|
|
99
|
+
lock.unlink(missing_ok=True)
|
|
100
|
+
return latest
|
|
101
|
+
except Exception:
|
|
102
|
+
return None
|
|
@@ -146,7 +146,7 @@ def initialize_cli_environment() -> None:
|
|
|
146
146
|
# Provider configuration is the user's to make (that is what `/model` and
|
|
147
147
|
# `.ariarc` are for); the code's job is to have a sane default and then get
|
|
148
148
|
# out of the way.
|
|
149
|
-
DEFAULT_MODEL = os.getenv("ARIA_DEFAULT_MODEL", "google/gemini-3.
|
|
149
|
+
DEFAULT_MODEL = os.getenv("ARIA_DEFAULT_MODEL", "google/gemini-3.8-flash")
|
|
150
150
|
# A stable model (Google: available until at least May 2027), not a short-term
|
|
151
151
|
# one: an install that is rarely updated should not lose its default within
|
|
152
152
|
# months. gemini-2.5-pro, the previous default, retires in October 2026.
|
|
@@ -154,15 +154,13 @@ DEFAULT_MODEL = os.getenv("ARIA_DEFAULT_MODEL", "google/gemini-3.5-flash")
|
|
|
154
154
|
|
|
155
155
|
def default_config() -> dict:
|
|
156
156
|
return {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
"http://localhost:8000",
|
|
160
|
-
),
|
|
157
|
+
# The Arthera backend and gateway. Not localhost: see endpoint_migration.
|
|
158
|
+
"api_url": os.getenv("ARTHERA_API_URL", "").strip() or "https://api.arthera.xyz",
|
|
161
159
|
"local_url": "http://localhost:8000",
|
|
162
160
|
"ollama_url": os.getenv("OLLAMA_URL", "http://localhost:11434"),
|
|
163
161
|
# Which backend serves a bare, unprefixed model name. Only consulted
|
|
164
162
|
# for names that do not name their own provider ("qwen2.5:7b"); a
|
|
165
|
-
# prefixed id like "google/gemini-3.
|
|
163
|
+
# prefixed id like "google/gemini-3.8-flash" always wins.
|
|
166
164
|
"local_provider": os.getenv("ARIA_LLM_PROVIDER", "ollama"),
|
|
167
165
|
"provider_fallback": "configured",
|
|
168
166
|
"model": DEFAULT_MODEL,
|
|
@@ -184,6 +182,8 @@ def default_config() -> dict:
|
|
|
184
182
|
# Independent review of a turn's changes by a fresh-context reviewer
|
|
185
183
|
# before it ends (runtime/review.py). Costs one extra model call.
|
|
186
184
|
"review_gate": False,
|
|
185
|
+
# A different model for that review (provider/model); "" = the builder itself.
|
|
186
|
+
"review_model": "",
|
|
187
187
|
# The runtime's DONE/INCOMPLETE report under coding answers.
|
|
188
188
|
"delivery_report": True,
|
|
189
189
|
"network_enabled": True,
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
"""The models each cloud provider offers, read from the provider itself.
|
|
2
|
+
|
|
3
|
+
`/model` used to list Aria's own catalogue and, for a cloud provider, only the
|
|
4
|
+
model already selected: a hand-kept list is out of date within weeks (Google
|
|
5
|
+
retired Gemini 3.5 Flash a month after this catalogue called it stable). So for
|
|
6
|
+
every provider with a key, the model list endpoint is asked what it serves now.
|
|
7
|
+
|
|
8
|
+
The answer is cached for a few hours. An expired cache is shown straight away
|
|
9
|
+
and refreshed behind it, so opening the picker never waits on a slow provider;
|
|
10
|
+
only a provider with no cache at all is waited for, and only for a few seconds.
|
|
11
|
+
Offline, or when a provider is down, the cache (however old) is used, and a
|
|
12
|
+
provider with neither simply has no section.
|
|
13
|
+
|
|
14
|
+
Keys are used for the request and never written to the cache.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
from __future__ import annotations
|
|
18
|
+
|
|
19
|
+
import json
|
|
20
|
+
import os
|
|
21
|
+
import re
|
|
22
|
+
import threading
|
|
23
|
+
import time
|
|
24
|
+
import urllib.error
|
|
25
|
+
import urllib.request
|
|
26
|
+
from concurrent.futures import ThreadPoolExecutor
|
|
27
|
+
from pathlib import Path
|
|
28
|
+
from typing import Callable, Dict, List, Optional
|
|
29
|
+
|
|
30
|
+
CACHE_TTL_S = 6 * 3600
|
|
31
|
+
FETCH_TIMEOUT_S = 4.0
|
|
32
|
+
MAX_PER_PROVIDER = 60
|
|
33
|
+
|
|
34
|
+
#: provider -> (heading, kind, models URL). The URL for Google carries the key
|
|
35
|
+
#: as a header, not in the query string.
|
|
36
|
+
PROVIDERS: Dict[str, tuple] = {
|
|
37
|
+
"google": ("Google Gemini", "google", "https://generativelanguage.googleapis.com/v1beta/models?pageSize=200"),
|
|
38
|
+
"openai": ("OpenAI", "openai", "https://api.openai.com/v1/models"),
|
|
39
|
+
"anthropic": ("Anthropic Claude", "anthropic", "https://api.anthropic.com/v1/models?limit=100"),
|
|
40
|
+
"deepseek": ("DeepSeek", "openai", "https://api.deepseek.com/models"),
|
|
41
|
+
"groq": ("Groq", "openai", "https://api.groq.com/openai/v1/models"),
|
|
42
|
+
"together": ("Together AI", "openai", "https://api.together.xyz/v1/models"),
|
|
43
|
+
"dashscope": ("Alibaba DashScope", "openai", "https://dashscope.aliyuncs.com/compatible-mode/v1/models"),
|
|
44
|
+
"siliconflow": ("SiliconFlow", "openai", "https://api.siliconflow.cn/v1/models"),
|
|
45
|
+
"moonshot": ("Moonshot", "openai", "https://api.moonshot.cn/v1/models"),
|
|
46
|
+
"zhipu": ("Zhipu GLM", "openai", "https://open.bigmodel.cn/api/paas/v4/models"),
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
#: Not chat models: embeddings, speech, images, video, music, moderation, live audio.
|
|
50
|
+
_NOT_CHAT = re.compile(
|
|
51
|
+
r"embed|whisper|tts|transcribe|speech|audio|realtime|dall-e|image|imagen|veo|lyria|"
|
|
52
|
+
r"omni-|nano-banana|moderation|rerank|guard|-live|robotics|computer-use|sora|deep-research|"
|
|
53
|
+
r"search-preview|davinci|babbage|aqa|text-bison|vision-preview",
|
|
54
|
+
re.IGNORECASE,
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
_refreshing: set = set()
|
|
58
|
+
_lock = threading.Lock()
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def cache_dir() -> Path:
|
|
62
|
+
from aria_code.packages.aria_core.paths import aria_home
|
|
63
|
+
|
|
64
|
+
return Path(aria_home()) / "cloud_models"
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def _http_json(url: str, headers: Dict[str, str], timeout: float) -> object:
|
|
68
|
+
request = urllib.request.Request(url, headers={"User-Agent": "aria-code", "Accept": "application/json", **headers})
|
|
69
|
+
with urllib.request.urlopen(request, timeout=timeout) as response: # noqa: S310 - fixed https endpoints above
|
|
70
|
+
return json.load(response)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def _natural_key(text: str):
|
|
74
|
+
"""Sort key where 3.10 follows 3.9 and a higher version sorts later."""
|
|
75
|
+
return [int(part) if part.isdigit() else part for part in re.split(r"(\d+)", text.lower())]
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def _ctx_label(tokens) -> str:
|
|
79
|
+
try:
|
|
80
|
+
n = int(tokens)
|
|
81
|
+
except (TypeError, ValueError):
|
|
82
|
+
return ""
|
|
83
|
+
if n >= 900_000:
|
|
84
|
+
return f"ctx {round(n / 1_048_576)}M"
|
|
85
|
+
return f"ctx {n // 1000}K" if n >= 1000 else ""
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def _date(epoch: int) -> str:
|
|
89
|
+
import datetime
|
|
90
|
+
|
|
91
|
+
try:
|
|
92
|
+
return datetime.date.fromtimestamp(epoch).isoformat()
|
|
93
|
+
except (OverflowError, OSError, ValueError):
|
|
94
|
+
return ""
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def _is_shut_down(value: object, today: Optional[float] = None) -> bool:
|
|
98
|
+
"""True when a provider's `shutdown_date` (epoch seconds or ISO date) has passed."""
|
|
99
|
+
now = time.time() if today is None else today
|
|
100
|
+
if isinstance(value, (int, float)) and value > 0:
|
|
101
|
+
return float(value) < now
|
|
102
|
+
if isinstance(value, str) and value:
|
|
103
|
+
import datetime
|
|
104
|
+
|
|
105
|
+
try:
|
|
106
|
+
return datetime.date.fromisoformat(value[:10]) < datetime.date.fromtimestamp(now)
|
|
107
|
+
except ValueError:
|
|
108
|
+
return False
|
|
109
|
+
return False
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
def parse(provider: str, payload: object) -> List[dict]:
|
|
113
|
+
"""The chat models in a provider's list response, newest first: [{id, name, detail}]."""
|
|
114
|
+
kind = PROVIDERS[provider][1]
|
|
115
|
+
rows: List[dict] = []
|
|
116
|
+
if kind == "google":
|
|
117
|
+
for item in (payload or {}).get("models", []) if isinstance(payload, dict) else []:
|
|
118
|
+
methods = item.get("supportedGenerationMethods") or []
|
|
119
|
+
ident = str(item.get("name", "")).removeprefix("models/")
|
|
120
|
+
if "generateContent" not in methods or not ident or _NOT_CHAT.search(ident):
|
|
121
|
+
continue
|
|
122
|
+
detail = " · ".join(x for x in (_ctx_label(item.get("inputTokenLimit")),) if x)
|
|
123
|
+
rows.append({"id": ident, "name": item.get("displayName") or ident, "detail": detail})
|
|
124
|
+
elif kind == "anthropic":
|
|
125
|
+
for item in (payload or {}).get("data", []) if isinstance(payload, dict) else []:
|
|
126
|
+
ident = str(item.get("id", ""))
|
|
127
|
+
if ident:
|
|
128
|
+
rows.append({"id": ident, "name": item.get("display_name") or ident, "detail": ""})
|
|
129
|
+
else:
|
|
130
|
+
items = payload.get("data", []) if isinstance(payload, dict) else payload
|
|
131
|
+
for item in items if isinstance(items, list) else []:
|
|
132
|
+
ident = str(item.get("id", "")) if isinstance(item, dict) else ""
|
|
133
|
+
if not ident or _NOT_CHAT.search(ident) or _is_shut_down(item.get("shutdown_date")):
|
|
134
|
+
continue
|
|
135
|
+
created = item.get("created")
|
|
136
|
+
created = int(created) if isinstance(created, (int, float)) and created > 0 else 0
|
|
137
|
+
detail = _date(created) if created else ""
|
|
138
|
+
rows.append({"id": ident, "name": ident, "detail": detail, "created": created})
|
|
139
|
+
# Newest first by the provider's own creation date where it gives one (OpenAI does);
|
|
140
|
+
# otherwise by version number in the id, which is only a rough proxy.
|
|
141
|
+
rows.sort(key=lambda r: (r.get("created", 0), _natural_key(r["id"])), reverse=True)
|
|
142
|
+
return [{k: v for k, v in r.items() if k != "created"} for r in rows[:MAX_PER_PROVIDER]]
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
def fetch(provider: str, key: str, timeout: float = FETCH_TIMEOUT_S) -> Optional[List[dict]]:
|
|
146
|
+
"""Ask the provider; None when it cannot be reached or refuses the key."""
|
|
147
|
+
_heading, kind, url = PROVIDERS[provider]
|
|
148
|
+
if kind == "google":
|
|
149
|
+
headers = {"x-goog-api-key": key}
|
|
150
|
+
elif kind == "anthropic":
|
|
151
|
+
headers = {"x-api-key": key, "anthropic-version": "2023-06-01"}
|
|
152
|
+
else:
|
|
153
|
+
headers = {"Authorization": f"Bearer {key}"}
|
|
154
|
+
try:
|
|
155
|
+
return parse(provider, _http_json(url, headers, timeout))
|
|
156
|
+
except (OSError, urllib.error.URLError, ValueError):
|
|
157
|
+
return None
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
def _read_cache(provider: str) -> Optional[dict]:
|
|
161
|
+
try:
|
|
162
|
+
data = json.loads((cache_dir() / f"{provider}.json").read_text(encoding="utf-8"))
|
|
163
|
+
if isinstance(data.get("models"), list):
|
|
164
|
+
return data
|
|
165
|
+
except (OSError, ValueError):
|
|
166
|
+
pass
|
|
167
|
+
return None
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
def _write_cache(provider: str, models: List[dict], now: float) -> None:
|
|
171
|
+
try:
|
|
172
|
+
directory = cache_dir()
|
|
173
|
+
directory.mkdir(parents=True, exist_ok=True)
|
|
174
|
+
(directory / f"{provider}.json").write_text(json.dumps({"at": now, "models": models}), encoding="utf-8")
|
|
175
|
+
except OSError:
|
|
176
|
+
pass
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
def _refresh_later(provider: str, key: str) -> None:
|
|
180
|
+
with _lock:
|
|
181
|
+
if provider in _refreshing:
|
|
182
|
+
return
|
|
183
|
+
_refreshing.add(provider)
|
|
184
|
+
|
|
185
|
+
def run() -> None:
|
|
186
|
+
try:
|
|
187
|
+
models = fetch(provider, key)
|
|
188
|
+
if models:
|
|
189
|
+
_write_cache(provider, models, time.time())
|
|
190
|
+
finally:
|
|
191
|
+
with _lock:
|
|
192
|
+
_refreshing.discard(provider)
|
|
193
|
+
|
|
194
|
+
threading.Thread(target=run, daemon=True, name=f"aria-models-{provider}").start()
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
def models_for(provider: str, key: str, *, offline: bool = False, now: Optional[float] = None) -> List[dict]:
|
|
198
|
+
"""The provider's models: fresh cache, else stale cache (refreshed behind), else a live request."""
|
|
199
|
+
stamp = time.time() if now is None else now
|
|
200
|
+
cached = _read_cache(provider)
|
|
201
|
+
if cached and (offline or stamp - float(cached.get("at", 0)) < CACHE_TTL_S):
|
|
202
|
+
return cached["models"]
|
|
203
|
+
if cached:
|
|
204
|
+
_refresh_later(provider, key)
|
|
205
|
+
return cached["models"]
|
|
206
|
+
if offline:
|
|
207
|
+
return []
|
|
208
|
+
models = fetch(provider, key)
|
|
209
|
+
if models:
|
|
210
|
+
_write_cache(provider, models, stamp)
|
|
211
|
+
return models or []
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
def collect(key_for: Callable[[str], str], *, offline: Optional[bool] = None) -> Dict[str, List[dict]]:
|
|
215
|
+
"""Models for every provider that has a key, looked up in parallel: {provider: [models]}."""
|
|
216
|
+
if offline is None:
|
|
217
|
+
offline = os.environ.get("ARIA_OFFLINE", "").lower() in {"1", "true", "yes", "on"}
|
|
218
|
+
keyed = {p: key for p in PROVIDERS if (key := key_for(p))}
|
|
219
|
+
if not keyed:
|
|
220
|
+
return {}
|
|
221
|
+
with ThreadPoolExecutor(max_workers=min(8, len(keyed))) as pool:
|
|
222
|
+
futures = {p: pool.submit(models_for, p, key, offline=offline) for p, key in keyed.items()}
|
|
223
|
+
out = {}
|
|
224
|
+
for provider, future in futures.items():
|
|
225
|
+
try:
|
|
226
|
+
models = future.result(timeout=FETCH_TIMEOUT_S + 2)
|
|
227
|
+
except Exception:
|
|
228
|
+
models = []
|
|
229
|
+
if models:
|
|
230
|
+
out[provider] = models
|
|
231
|
+
return out
|
|
@@ -145,18 +145,25 @@ class AuthCommandsMixin:
|
|
|
145
145
|
"""
|
|
146
146
|
import asyncio as _asyncio
|
|
147
147
|
|
|
148
|
-
from ..google_login import run_google_login
|
|
148
|
+
from ..google_login import login_api_url, run_google_login
|
|
149
|
+
import os as _os
|
|
150
|
+
|
|
151
|
+
from ..web_login import run_web_login
|
|
149
152
|
|
|
150
153
|
rich = self.context.has_rich
|
|
154
|
+
api_url = login_api_url(self.terminal.api_url)
|
|
151
155
|
self.context.console.print(
|
|
152
156
|
"[dim]Opening your browser to sign in or create an account…[/dim]"
|
|
153
157
|
if rich else "Opening your browser to sign in or create an account…"
|
|
154
158
|
)
|
|
155
159
|
|
|
156
160
|
try:
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
)
|
|
161
|
+
# The account page (a choice of Google, Apple or email, with sign-up)
|
|
162
|
+
# is opt-in until it is deployed; until then this goes straight to Google.
|
|
163
|
+
if _os.getenv("ARIA_LOGIN_PAGE") == "1":
|
|
164
|
+
session = await _asyncio.to_thread(run_web_login, api_url)
|
|
165
|
+
else:
|
|
166
|
+
session = await _asyncio.to_thread(run_google_login, api_url)
|
|
160
167
|
except RuntimeError as exc:
|
|
161
168
|
print_error(self.context, str(exc), "login")
|
|
162
169
|
return
|