alysis-code 0.14.0__tar.gz → 0.14.1__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.
- {alysis_code-0.14.0 → alysis_code-0.14.1}/PKG-INFO +1 -1
- {alysis_code-0.14.0 → alysis_code-0.14.1}/docs/CHANGELOG.md +17 -2
- {alysis_code-0.14.0 → alysis_code-0.14.1}/pyproject.toml +1 -1
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/__init__.py +1 -1
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/chat/loop.py +44 -12
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/llm/factory.py +8 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/llm/openai_compat.py +5 -2
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/llm/openai_responses.py +39 -5
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/llm/protocols.py +24 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/model_registry.py +16 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/profile_presets.py +3 -1
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/reasoning_contracts.py +11 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/.gitignore +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/LICENSE +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/NOTICE +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/README.md +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/__main__.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/_build_info.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/account_login.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/README.md +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/__init__.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/acceptance_contract.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/anytime_checkpoint.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/blast_radius.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/cache_keepalive.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/checkpoint_worker.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/completion_certificate.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/completion_gate.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/empty_response_stall.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/errors.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/llm_calls.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/mutation_classification.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/prompt_context.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/prompt_families.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/prompt_guidance.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/read_ledger.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/regression_baseline.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/reproduction_first.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/sensitive_output.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/session.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/steering.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/subagent_execution.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/subagent_workspace.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/task_evidence.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/task_state.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/tools_assembly.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/turn/__init__.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/turn/core.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/turn/events.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/turn/exploration.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/turn/interventions.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/turn/read_cache.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/turn/snapshot.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/turn/subagent_progress.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/turn_contract.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/turn_path.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/verification.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/verification_commands.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/verification_evidence.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent/verification_result.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent_loop.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent_runtimes/__init__.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent_runtimes/base.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent_runtimes/builtins.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent_runtimes/codex_cli.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent_runtimes/host.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent_runtimes/registry.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agent_runtimes/service.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agentbox_client.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/agentbox_integration.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/alysis_cloud.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/approval_scope.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/README.md +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/__init__.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/asset_read_core.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/budget_allocator.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/comprehender.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/index.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/ingestion.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/legacy_migration.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/local_tools.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/models.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/ocr.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/owl/ascii/f-000.txt +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/owl/ascii/f-001.txt +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/owl/ascii/f-002.txt +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/owl/ascii/f-003.txt +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/owl/ascii/f-004.txt +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/owl/ascii/f-005.txt +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/owl/ascii/f-006.txt +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/owl/ascii/f-007.txt +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/owl/ascii/f-008.txt +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/owl/ascii/f-009.txt +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/owl/ascii/f-010.txt +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/owl/ascii/f-011.txt +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/owl/ascii/f-012.txt +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/owl/ascii/f-013.txt +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/owl/ascii/f-014.txt +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/owl/ascii/f-015.txt +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/owl/ascii/f-016.txt +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/owl/ascii/f-017.txt +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/owl/ascii/f-018.txt +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/owl/ascii/f-019.txt +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/owl/ascii/f-020.txt +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/owl/index.html +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/owl/show-owl.sh +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/paths.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/plan_binding.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/planner_context.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/planner_tools.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/prompts.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/replanner_context.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/surface.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/untrusted_content.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/usage_logger.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/worker_mirror.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/worker_section.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/assets/worker_tools.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/atomic_io.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/auth_diagnostics.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/background_runner.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/branding.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/budget_policy.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/build_identity.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/builtin_hooks/__init__.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/builtin_hooks/notify_done_windows.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/bwrap_etc.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cancellation.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/capabilities.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/chatgpt_codex_static_provider.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/checkpoint_settings.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/__init__.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/assets_cli.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/assets_modal.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/chat/__init__.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/chat/commands.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/chat/forge_visibility.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/chat/mid_turn_policy.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/chat/rendering.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/chat/state.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/chat_resume.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/chat_slash_completer.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/__init__.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/_shared.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/auth.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/chat_resume_helpers.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/chat_state.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/chat_status.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/chat_terminal.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/chat_tui_panels.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/cli_common.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/cli_surface.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/config.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/conventions.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/execution_helpers.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/extensions.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/forge.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/forge_asset_view.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/forge_helpers.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/hooks.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/ide_bridge.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/mcp.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/profile.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/prompt_helpers.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/report.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/root.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/sandbox.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/server.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/sessions.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/skills.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/startup.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/tools.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/update.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/commands/welcome.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/config_menu.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/forge.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/forge_recovery.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/setup_wizard.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/tui/__init__.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/tui/app.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/tui/attachments.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/tui/composer.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/tui/config.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/tui/config_flow.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/tui/config_overlay.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/tui/content.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/tui/footer.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/tui/forge_status.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/tui/links.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/tui/markdown.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/tui/owl.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/tui/plan_meta.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/tui/selection_bindings.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/tui/setup_app.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/tui/setup_flow.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/tui/state.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/tui/subagent_identity.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/tui/subagent_panel.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/tui/surface.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/tui/tips.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/tui/transcript.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/tui/update_prompt.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/cli_impl/tui/workspace_guard.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/clipboard.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/code_review.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/compaction/__init__.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/compaction/conversation_compactor.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/compaction/importance.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/compaction/settings.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/compaction/tool_output_offload.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/config.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/conflict_auto_resolver.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/consumer_verification.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/context/__init__.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/context/tool_schema_budgeter.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/crash_diagnostics.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/custom_tools/README.md +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/custom_tools/__init__.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/custom_tools/discovery.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/custom_tools/runtime.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/custom_tools/session.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/custom_tools/trust.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/diff_paths.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/direction_change.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/dispatch_timing.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/durable_service_manager.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/edit_discipline.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/error_text.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/execution_budget.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/execution_context.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/execution_deadline.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/execution_shared.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/extensions/README.md +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/extensions/__init__.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/extensions/activation.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/extensions/install.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/extensions/manifest.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/extensions/models.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/extensions/paths.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/extensions/registry.json +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/extensions/registry.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/extensions/state.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/extensions/workspace_trust.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/failed_task_evidence.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/failure_category.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/feedback_report.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/file_classification.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/forge.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/forge_completion.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/forge_events.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/frontmatter_utils.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/git_evidence.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/git_ops.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/git_safe.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/git_worktrees.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/hooks/README.md +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/hooks/__init__.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/hooks/audit.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/hooks/config.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/hooks/dispatcher.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/hooks/models.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/hooks/trust.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/host_actions.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/host_browser.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/ide/__init__.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/ide/activity_events.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/ide/approvals.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/ide/artifacts.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/ide/browser_egress_proxy.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/ide/cdp_websocket_transport.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/ide/change_ledger.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/ide/context_blocks.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/ide/event_stream.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/ide/forge_protocol.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/ide/forge_request_ledger.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/ide/health.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/ide/managed_browser.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/ide/management_protocol.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/ide/mcp_oauth_coordinator.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/ide/mcp_oauth_lifecycle.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/ide/prompt_queue.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/ide/protocol.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/ide/resumable_swarm.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/ide/session_search.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/ide/stdio_bridge.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/ide/structured_state.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/ide/swarm_protocol.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/integration_gate.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/interactive_input_guard.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/internal_artifacts.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/knowledge_base.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/knowledge_capture.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/knowledge_librarian.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/language_policy.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/litellm_static_provider.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/llm/__init__.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/llm/anthropic_messages.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/llm/base.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/llm/cache_capabilities.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/llm/cache_control_blocks.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/llm/cache_policy.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/llm/gemini_generate_content.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/llm/gemini_interactions.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/llm/http_cancellation.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/llm/metadata.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/llm/provider_limits.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/llm/request_plan.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/llm/request_shape.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/llm/streaming.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/llm/temperature_compat.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/llm/tool_call_markup.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/llm/types.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/llm/usage_normalization.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/llm_error_display.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/logging_redaction.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/managed_host_deadline.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/mcp/README.md +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/mcp/__init__.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/mcp/client.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/mcp/config.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/mcp/errors.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/mcp/forge_scope.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/mcp/jsonrpc.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/mcp/manager.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/mcp/models.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/mcp/oauth.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/mcp/oauth_runtime.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/mcp/oauth_store.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/mcp/prompts.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/mcp/resources.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/mcp/roots.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/mcp/server_requests.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/mcp/token_store.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/mcp/transport_http.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/mcp/transport_stdio.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/mcp/untrusted_content.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/merge_conflict_reviewer.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/model_catalog/__init__.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/model_catalog/chatgpt_codex_subscription_snapshot.json +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/model_catalog/litellm_model_prices_snapshot.json +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/model_catalog/litellm_model_prices_snapshot.meta.json +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/model_metadata_policy.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/model_metadata_utils.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/model_router.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/permission_policy.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/personas.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/pipeline_facts.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/plan_assistant.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/plan_reconciliation.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/plan_repair.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/plan_validation.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/planning_constraints.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/policy.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/preview_server.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/private_artifact_io.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/process_reaping.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/profiles.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/prompt_guidance_catalog.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/provider_auth/__init__.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/provider_auth/base.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/provider_auth/openai_codex.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/provider_auth/registry.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/provider_auth/store.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/provider_diagnostics.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/provider_model_catalog.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/provider_telemetry.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/provider_url.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/remote_sync.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/replanning.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/repo_scan.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/request_estimation.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/review_gate.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/run_lock.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/run_outcome.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/run_provenance.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/run_state.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/runtime_artifacts.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/runtime_context_features.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/runtime_kind.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/safety/__init__.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/safety/mcp_sanitize.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/safety/safe_http.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/safety/subagent_report.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/sandbox_doctor.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/sandbox_runner.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/sandbox_settings.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/serialized_paths.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/server/__init__.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/server/app.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/server/auth.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/server/job_config.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/server/settings.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/server/store.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/server/worker_runner.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/service_persistence.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/session_artifacts.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/session_metrics.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/session_store.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/skills/README.md +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/skills/__init__.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/skills/bundled/address-pr-comments/SKILL.md +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/skills/bundled/code-review/SKILL.md +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/skills/bundled/commit/SKILL.md +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/skills/bundled/debug/SKILL.md +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/skills/bundled/fix-ci/SKILL.md +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/skills/bundled/release-notes/SKILL.md +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/skills/bundled/security-review/SKILL.md +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/skills/bundled/skill-creator/SKILL.md +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/skills/conventions.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/skills/discovery.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/skills/eval_models.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/skills/eval_runner.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/skills/evals.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/skills/install.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/skills/loader.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/skills/matching.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/skills/models.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/skills/paths.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/skills/prompting.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/skills/scaffold.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/skills/state.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/skills/transactions.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/skills/validation.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/step_budget.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/subagent_labels.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/subagents.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/surface/__init__.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/surface/base.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/surface/console.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/surface/events.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/surface/hidden_surface.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/surface/noop_surface.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/surface/rich_surface.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/surface/styles.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/surface/theme.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/surface/types.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/swarm_backend.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/swarm_orchestrator.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/swarm_scheduler.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/swarm_trace.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/swarm_worker.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/swarm_write_guard.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/task_dependencies.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/task_readiness.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/task_scope.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/terminal_manager.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/terminal_ownership.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/text_normalization.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/token_budget.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/tools/README.md +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/tools/__init__.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/tools/artifacts.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/tools/availability.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/tools/capability_readiness.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/tools/fs.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/tools/git.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/tools/history.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/tools/http_timeout.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/tools/image_generation.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/tools/registry.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/tools/repo_map.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/tools/search.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/tools/shell.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/tools/symbols.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/tools/test_discovery.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/tools/web.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/tools/web_search.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/tools/web_search_dashscope.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/tools/web_search_ddgs.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/tools/web_search_provider_adapters.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/tools/web_search_tavily.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/transport_retry.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/updates.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/usage_tracker.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/verification_command_analysis.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/verification_contract.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/verification_failure_summary.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/verification_repair.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/verify_gate.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/web_research.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/web_search_adapters.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/web_search_policy.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/workspace_binding.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/workspace_binding_ui.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/workspace_context.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/workspace_isolation.py +0 -0
- {alysis_code-0.14.0 → alysis_code-0.14.1}/src/alysis_code/workspace_provisioning.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: alysis-code
|
|
3
|
-
Version: 0.14.
|
|
3
|
+
Version: 0.14.1
|
|
4
4
|
Summary: Local CLI coding agent powered by any API.
|
|
5
5
|
Project-URL: Changelog, https://github.com/AlysisAi/alysis-code/blob/main/docs/CHANGELOG.md
|
|
6
6
|
Project-URL: Documentation, https://github.com/AlysisAi/alysis-code/tree/main/docs
|
|
@@ -6,7 +6,21 @@ Notable user-facing changes to Alysis Code are recorded here. This project follo
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## [0.14.1] - 2026-09-25
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- Add GPT-6 Luna to the Alysis Code account model picker, with hosted Responses
|
|
14
|
+
routing, configurable reasoning, and stateless function-tool continuation.
|
|
15
|
+
Luna uses the account's shared credit allowance alongside the Flash models.
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- Rebuild the correct chat and compactor transports when switching between hosted
|
|
20
|
+
Luna and Flash models during a conversation, while preserving the session on a
|
|
21
|
+
failed switch.
|
|
22
|
+
- Keep hosted web search as a function tool and show the gateway's capacity,
|
|
23
|
+
request, and credit-limit reasons instead of a generic rate-limit message.
|
|
10
24
|
|
|
11
25
|
## [0.14.0] - 2026-09-24
|
|
12
26
|
|
|
@@ -342,7 +356,8 @@ Public launch and repository-layout refresh.
|
|
|
342
356
|
Release notes for versions before 0.9.8 remain available in the
|
|
343
357
|
[GitHub Releases archive](https://github.com/AlysisAi/alysis-code/releases).
|
|
344
358
|
|
|
345
|
-
[Unreleased]: https://github.com/AlysisAi/alysis-code/compare/v0.14.
|
|
359
|
+
[Unreleased]: https://github.com/AlysisAi/alysis-code/compare/v0.14.1...HEAD
|
|
360
|
+
[0.14.1]: https://github.com/AlysisAi/alysis-code/compare/v0.14.0...v0.14.1
|
|
346
361
|
[0.14.0]: https://github.com/AlysisAi/alysis-code/compare/v0.13.8...v0.14.0
|
|
347
362
|
[0.13.8]: https://github.com/AlysisAi/alysis-code/compare/v0.13.7...v0.13.8
|
|
348
363
|
[0.13.7]: https://github.com/AlysisAi/alysis-code/compare/v0.13.6.2...v0.13.7
|
|
@@ -947,6 +947,8 @@ def _reset_route_local_client_capabilities(client: Any, *, route_changed: bool)
|
|
|
947
947
|
|
|
948
948
|
_RELOAD_SESSION_FIELDS = (
|
|
949
949
|
"cfg",
|
|
950
|
+
"client",
|
|
951
|
+
"conversation_compactor",
|
|
950
952
|
"routing_mode",
|
|
951
953
|
"max_steps",
|
|
952
954
|
"api_key",
|
|
@@ -1093,7 +1095,7 @@ def _apply_config_menu_changes_to_session_mutating(*, session: Any, cfg: AppConf
|
|
|
1093
1095
|
)
|
|
1094
1096
|
from ...llm.cache_capabilities import resolve_effective_cache_capability
|
|
1095
1097
|
from ...llm.cache_policy import build_prompt_cache_namespace, resolve_prompt_cache_policy
|
|
1096
|
-
from ...llm.factory import _session_routing_headers
|
|
1098
|
+
from ...llm.factory import _session_routing_headers, make_llm_client, resolve_model_protocol
|
|
1097
1099
|
from ...llm.metadata import (
|
|
1098
1100
|
build_provider_route_identity,
|
|
1099
1101
|
credential_scope_fingerprint,
|
|
@@ -1125,7 +1127,7 @@ def _apply_config_menu_changes_to_session_mutating(*, session: Any, cfg: AppConf
|
|
|
1125
1127
|
)
|
|
1126
1128
|
active_profile = get_active_profile(session.cfg)
|
|
1127
1129
|
effective_base_url = resolve_effective_base_url(cfg=session.cfg, profile=active_profile)
|
|
1128
|
-
|
|
1130
|
+
profile_protocol = str(active_profile.protocol or OPENAI_COMPAT_PROTOCOL).strip()
|
|
1129
1131
|
resolved_key = resolve_api_key(session.cfg)
|
|
1130
1132
|
session.api_key = str(resolved_key.key or "")
|
|
1131
1133
|
session.api_key_source = (
|
|
@@ -1166,8 +1168,41 @@ def _apply_config_menu_changes_to_session_mutating(*, session: Any, cfg: AppConf
|
|
|
1166
1168
|
model: str,
|
|
1167
1169
|
role: str,
|
|
1168
1170
|
temperature: float | None = None,
|
|
1169
|
-
) ->
|
|
1171
|
+
) -> Any:
|
|
1170
1172
|
existing_route_identity = getattr(client, "route_identity", None)
|
|
1173
|
+
preset = find_preset_for_profile(active_profile)
|
|
1174
|
+
provider_key = str(preset.provider_key or "").strip() if preset is not None else ""
|
|
1175
|
+
if not provider_key:
|
|
1176
|
+
provider_key = resolve_model_provider_key(
|
|
1177
|
+
cfg=session.cfg,
|
|
1178
|
+
model_name=model,
|
|
1179
|
+
base_url=effective_base_url,
|
|
1180
|
+
profile_name=active_profile.name,
|
|
1181
|
+
)
|
|
1182
|
+
protocol = resolve_model_protocol(
|
|
1183
|
+
provider_key=provider_key, model=model, protocol=profile_protocol
|
|
1184
|
+
)
|
|
1185
|
+
existing_protocol = str(getattr(existing_route_identity, "protocol", "") or "")
|
|
1186
|
+
if existing_protocol and existing_protocol != protocol:
|
|
1187
|
+
return make_llm_client(
|
|
1188
|
+
cfg=session.cfg,
|
|
1189
|
+
api_key=session.api_key,
|
|
1190
|
+
model=model,
|
|
1191
|
+
timeout_s=timeout_s,
|
|
1192
|
+
temperature=temperature if temperature is not None else client.temperature,
|
|
1193
|
+
prompt_cache_key=prompt_cache_key,
|
|
1194
|
+
prompt_cache_retention=prompt_cache_retention,
|
|
1195
|
+
prompt_cache_namespace=build_prompt_cache_namespace(
|
|
1196
|
+
workspace_root=getattr(session, "root", None),
|
|
1197
|
+
role=role,
|
|
1198
|
+
profile_name=active_profile.name,
|
|
1199
|
+
),
|
|
1200
|
+
enable_thinking=enable_thinking,
|
|
1201
|
+
reasoning_effort=reasoning_effort,
|
|
1202
|
+
transport=getattr(client, "_transport", None),
|
|
1203
|
+
profile=active_profile,
|
|
1204
|
+
session_id=provider_session_id,
|
|
1205
|
+
)
|
|
1171
1206
|
client.base_url = effective_base_url
|
|
1172
1207
|
if hasattr(client, "provider_auth"):
|
|
1173
1208
|
client.provider_auth = provider_auth
|
|
@@ -1178,17 +1213,10 @@ def _apply_config_menu_changes_to_session_mutating(*, session: Any, cfg: AppConf
|
|
|
1178
1213
|
client.timeout_s = timeout_s
|
|
1179
1214
|
if temperature is not None:
|
|
1180
1215
|
client.temperature = temperature
|
|
1181
|
-
provider_key = resolve_model_provider_key(
|
|
1182
|
-
cfg=session.cfg,
|
|
1183
|
-
model_name=model,
|
|
1184
|
-
base_url=effective_base_url,
|
|
1185
|
-
profile_name=active_profile.name,
|
|
1186
|
-
)
|
|
1187
1216
|
capabilities = get_provider_protocol_capabilities(
|
|
1188
1217
|
provider_key=provider_key,
|
|
1189
1218
|
protocol=protocol,
|
|
1190
1219
|
)
|
|
1191
|
-
preset = find_preset_for_profile(active_profile)
|
|
1192
1220
|
cache_capability = resolve_effective_cache_capability(
|
|
1193
1221
|
provider_key=provider_key,
|
|
1194
1222
|
protocol=protocol,
|
|
@@ -1331,10 +1359,11 @@ def _apply_config_menu_changes_to_session_mutating(*, session: Any, cfg: AppConf
|
|
|
1331
1359
|
client.provider_concurrency_caps = dict(session.cfg.provider_concurrency_caps)
|
|
1332
1360
|
if hasattr(client, "provider_retry_settings"):
|
|
1333
1361
|
client.provider_retry_settings = provider_retry_settings
|
|
1362
|
+
return client
|
|
1334
1363
|
|
|
1335
1364
|
client = getattr(session, "client", None)
|
|
1336
1365
|
if client is not None:
|
|
1337
|
-
_apply_client_config(
|
|
1366
|
+
session.client = _apply_client_config(
|
|
1338
1367
|
client,
|
|
1339
1368
|
model=str(session.cfg.model or ""),
|
|
1340
1369
|
role=ROLE_CODING,
|
|
@@ -1353,12 +1382,15 @@ def _apply_config_menu_changes_to_session_mutating(*, session: Any, cfg: AppConf
|
|
|
1353
1382
|
)
|
|
1354
1383
|
except ConfigError:
|
|
1355
1384
|
compactor_model = str(session.cfg.model or "")
|
|
1356
|
-
_apply_client_config(
|
|
1385
|
+
refreshed_compactor_client = _apply_client_config(
|
|
1357
1386
|
compactor_client,
|
|
1358
1387
|
model=compactor_model,
|
|
1359
1388
|
role=ROLE_COMPACTOR,
|
|
1360
1389
|
temperature=resolve_role_temperature(session.cfg, role=ROLE_COMPACTOR),
|
|
1361
1390
|
)
|
|
1391
|
+
if refreshed_compactor_client is not compactor_client:
|
|
1392
|
+
session.conversation_compactor = copy.copy(compactor)
|
|
1393
|
+
session.conversation_compactor.compactor_client = refreshed_compactor_client
|
|
1362
1394
|
|
|
1363
1395
|
_rebuild_session_tools_for_mode(
|
|
1364
1396
|
session=session,
|
|
@@ -126,6 +126,7 @@ def make_llm_client(
|
|
|
126
126
|
base_url=base_url,
|
|
127
127
|
profile_name=resolved_profile.name,
|
|
128
128
|
)
|
|
129
|
+
protocol = resolve_model_protocol(provider_key=provider_key, model=model, protocol=protocol)
|
|
129
130
|
capabilities = get_provider_protocol_capabilities(
|
|
130
131
|
provider_key=provider_key,
|
|
131
132
|
protocol=protocol,
|
|
@@ -376,6 +377,13 @@ def make_llm_client(
|
|
|
376
377
|
)
|
|
377
378
|
|
|
378
379
|
|
|
380
|
+
def resolve_model_protocol(*, provider_key: str | None, model: str, protocol: str) -> str:
|
|
381
|
+
"""Resolve model-specific transports for initial connections and live switches."""
|
|
382
|
+
if provider_key == "alysis" and model == "gpt-6-luna":
|
|
383
|
+
return OPENAI_RESPONSES_PROTOCOL
|
|
384
|
+
return protocol
|
|
385
|
+
|
|
386
|
+
|
|
379
387
|
def _attach_reasoning_trace_capability(client: ChatClient, capability: object) -> ChatClient:
|
|
380
388
|
"""Expose the resolved trace dialect without widening every client constructor."""
|
|
381
389
|
|
|
@@ -1329,8 +1329,9 @@ _ALYSIS_PROXY_ERROR_MESSAGES: dict[str, str] = {
|
|
|
1329
1329
|
"You're sending requests too quickly. Please wait a moment and try again."
|
|
1330
1330
|
),
|
|
1331
1331
|
"hosted_capacity_exceeded": (
|
|
1332
|
-
"
|
|
1333
|
-
"
|
|
1332
|
+
"The Alysis hosted model is unavailable or at capacity. "
|
|
1333
|
+
"If this persists, its server route needs checking. "
|
|
1334
|
+
"No generation was started and no credits were charged."
|
|
1334
1335
|
),
|
|
1335
1336
|
"hosted_routing_unavailable": (
|
|
1336
1337
|
"Hosted model routing is temporarily unavailable. Please retry shortly. "
|
|
@@ -1369,7 +1370,9 @@ def alysis_trial_error_message(err: LLMError) -> str | None:
|
|
|
1369
1370
|
"5-hour fair-use limit reached (",
|
|
1370
1371
|
"Weekly fair-use limit reached (",
|
|
1371
1372
|
"Four hosted requests are already running for your account.",
|
|
1373
|
+
"Your account has reached its hosted request limit.",
|
|
1372
1374
|
"Available credits cannot cover this request while other usage or reservations apply.",
|
|
1375
|
+
"Your available credit allowance is exhausted.",
|
|
1373
1376
|
)
|
|
1374
1377
|
)
|
|
1375
1378
|
):
|
|
@@ -35,6 +35,7 @@ from .metadata import (
|
|
|
35
35
|
merge_canonical_headers,
|
|
36
36
|
stamp_response_for_route,
|
|
37
37
|
)
|
|
38
|
+
from .protocols import OPENAI_RESPONSES_PROTOCOL, get_provider_protocol_capabilities
|
|
38
39
|
from .provider_limits import (
|
|
39
40
|
DEFAULT_PROVIDER_CONCURRENCY_CAPS,
|
|
40
41
|
ProviderRetrySettings,
|
|
@@ -867,6 +868,7 @@ def _responses_tools(
|
|
|
867
868
|
*,
|
|
868
869
|
mode: str,
|
|
869
870
|
adapter: str,
|
|
871
|
+
provider_key: str | None = None,
|
|
870
872
|
) -> _ResponsesToolMapping:
|
|
871
873
|
normalized_mode = str(mode or "off").strip().lower()
|
|
872
874
|
normalized_adapter = (
|
|
@@ -874,8 +876,26 @@ def _responses_tools(
|
|
|
874
876
|
)
|
|
875
877
|
raw_tools = [tool for tool in tools or [] if isinstance(tool, dict)]
|
|
876
878
|
alysis_web_search_present = any(_is_alysis_web_search_function(tool) for tool in raw_tools)
|
|
879
|
+
capabilities = get_provider_protocol_capabilities(
|
|
880
|
+
provider_key=provider_key or "", protocol=OPENAI_RESPONSES_PROTOCOL
|
|
881
|
+
)
|
|
882
|
+
builtin_web_search_allowed = (
|
|
883
|
+
capabilities is None or capabilities.supports_provider_hosted_web_search_adapter
|
|
884
|
+
)
|
|
885
|
+
hosted_web_search_present = any(
|
|
886
|
+
_is_responses_hosted_web_search_tool(tool) for tool in raw_tools
|
|
887
|
+
)
|
|
888
|
+
if not builtin_web_search_allowed and (
|
|
889
|
+
(normalized_mode == "native" and alysis_web_search_present)
|
|
890
|
+
or (normalized_mode in {"auto", "native"} and hosted_web_search_present)
|
|
891
|
+
):
|
|
892
|
+
raise LLMError(
|
|
893
|
+
f"Provider {provider_key!r} does not support built-in web search. "
|
|
894
|
+
"Use web_search_mode='auto' or 'external' with the Alysis web_search function."
|
|
895
|
+
)
|
|
877
896
|
use_openai_builtin_web_search = (
|
|
878
|
-
|
|
897
|
+
builtin_web_search_allowed
|
|
898
|
+
and alysis_web_search_present
|
|
879
899
|
and _openai_builtin_web_search_allowed(
|
|
880
900
|
mode=normalized_mode,
|
|
881
901
|
adapter=normalized_adapter,
|
|
@@ -1916,12 +1936,16 @@ class OpenAIResponsesClient:
|
|
|
1916
1936
|
)
|
|
1917
1937
|
error_message = _extract_error_message(data)
|
|
1918
1938
|
if error_message:
|
|
1919
|
-
|
|
1939
|
+
err = LLMError(
|
|
1920
1940
|
sanitize_error_text_for_output(f"LLM error {response.status_code}: {error_message}")
|
|
1921
1941
|
)
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1942
|
+
else:
|
|
1943
|
+
err = LLMError(
|
|
1944
|
+
sanitize_error_text_for_output(f"LLM error {response.status_code}: {data!r}")
|
|
1945
|
+
)
|
|
1946
|
+
err.provider_status_code = response.status_code
|
|
1947
|
+
err.provider_error_body = sanitize_error_text_for_output(json.dumps(data))
|
|
1948
|
+
return err
|
|
1925
1949
|
|
|
1926
1950
|
def count_input_tokens(
|
|
1927
1951
|
self,
|
|
@@ -1940,6 +1964,7 @@ class OpenAIResponsesClient:
|
|
|
1940
1964
|
tools,
|
|
1941
1965
|
mode=self.web_search_mode,
|
|
1942
1966
|
adapter=self.web_search_adapter,
|
|
1967
|
+
provider_key=self.provider_key,
|
|
1943
1968
|
)
|
|
1944
1969
|
payload: dict[str, Any] = {
|
|
1945
1970
|
"model": self.model,
|
|
@@ -2080,6 +2105,7 @@ class OpenAIResponsesClient:
|
|
|
2080
2105
|
tools,
|
|
2081
2106
|
mode=self.web_search_mode,
|
|
2082
2107
|
adapter=self.web_search_adapter,
|
|
2108
|
+
provider_key=self.provider_key,
|
|
2083
2109
|
)
|
|
2084
2110
|
mapped_tools = tool_mapping.tools
|
|
2085
2111
|
temp_omit_key = _responses_temperature_omit_key(self.base_url, self.model)
|
|
@@ -2106,6 +2132,10 @@ class OpenAIResponsesClient:
|
|
|
2106
2132
|
supports_previous_response_id = self.provider_auth is None or bool(
|
|
2107
2133
|
getattr(self.provider_auth, "supports_previous_response_id", True)
|
|
2108
2134
|
)
|
|
2135
|
+
if self.provider_key == "alysis":
|
|
2136
|
+
# Hosted credits meter the complete request. Shared upstream storage
|
|
2137
|
+
# must never be addressable by another Alysis account.
|
|
2138
|
+
supports_previous_response_id = False
|
|
2109
2139
|
if continuation is not None and supports_previous_response_id:
|
|
2110
2140
|
# With previous_response_id the API appends the sent input items to the
|
|
2111
2141
|
# stored thread; system/developer messages from turn 1 are already
|
|
@@ -2175,6 +2205,10 @@ class OpenAIResponsesClient:
|
|
|
2175
2205
|
payload["stream"] = True
|
|
2176
2206
|
if self.provider_auth is not None:
|
|
2177
2207
|
payload = self.provider_auth.adapt_responses_payload(payload)
|
|
2208
|
+
if self.provider_key == "alysis":
|
|
2209
|
+
payload["store"] = False
|
|
2210
|
+
payload["include"] = ["reasoning.encrypted_content"]
|
|
2211
|
+
payload.pop("temperature", None)
|
|
2178
2212
|
if self._reasoning_summary_support_by_model.get(reasoning_summary_support_key) is False:
|
|
2179
2213
|
_without_responses_reasoning_summary(payload)
|
|
2180
2214
|
return payload
|
|
@@ -383,6 +383,30 @@ PROVIDER_PROTOCOL_CAPABILITIES: tuple[ProviderProtocolCapabilities, ...] = (
|
|
|
383
383
|
reports_cache_write_tokens=True,
|
|
384
384
|
quirks=("Native OpenAI Responses chat supports buffered and SSE streaming responses.",),
|
|
385
385
|
),
|
|
386
|
+
ProviderProtocolCapabilities(
|
|
387
|
+
provider_key="alysis",
|
|
388
|
+
protocol=OPENAI_RESPONSES_PROTOCOL,
|
|
389
|
+
reasoning_trace=ReasoningTraceCapability(
|
|
390
|
+
adapter="openai_responses_summary",
|
|
391
|
+
output_kind=ReasoningOutputKind.SUMMARY,
|
|
392
|
+
supports_streaming=True,
|
|
393
|
+
supports_buffered=True,
|
|
394
|
+
requestable=True,
|
|
395
|
+
continuation_state="opaque",
|
|
396
|
+
),
|
|
397
|
+
usage_contract=UsageContract(
|
|
398
|
+
response_usage_confidence=UsageConfidence.AUTHORITATIVE,
|
|
399
|
+
input_token_count_strategy="none",
|
|
400
|
+
),
|
|
401
|
+
supports_streaming=True,
|
|
402
|
+
supports_tool_calling=True,
|
|
403
|
+
supports_structured_outputs=True,
|
|
404
|
+
supports_provider_hosted_web_search_adapter=False,
|
|
405
|
+
default_web_search_adapter="none",
|
|
406
|
+
reports_cache_read_tokens=True,
|
|
407
|
+
reports_cache_write_tokens=True,
|
|
408
|
+
quirks=("Hosted Luna supports stateless text and function tools with shared credits.",),
|
|
409
|
+
),
|
|
386
410
|
ProviderProtocolCapabilities(
|
|
387
411
|
provider_key="anthropic",
|
|
388
412
|
protocol=OPENAI_COMPAT_PROTOCOL,
|
|
@@ -1577,6 +1577,22 @@ _OFFICIAL_PROVIDER_MODEL_METADATA["alysis"]["glm-5.3-flash"] = {
|
|
|
1577
1577
|
"output_cost_per_token": 0.0000005,
|
|
1578
1578
|
}
|
|
1579
1579
|
|
|
1580
|
+
_PROVIDER_CANONICAL_MODEL_IDS["alysis"]["gpt-6-luna"] = "gpt-6-luna"
|
|
1581
|
+
_OFFICIAL_PROVIDER_MODEL_SOURCES["alysis"]["gpt-6-luna"] = (
|
|
1582
|
+
"https://developers.openai.com/api/docs/models/gpt-6-luna",
|
|
1583
|
+
"https://developers.openai.com/api/docs/pricing",
|
|
1584
|
+
)
|
|
1585
|
+
_OFFICIAL_PROVIDER_MODEL_METADATA["alysis"]["gpt-6-luna"] = {
|
|
1586
|
+
"context_window_tokens": 1_050_000,
|
|
1587
|
+
"max_output_tokens": 128_000,
|
|
1588
|
+
"supports_vision": False,
|
|
1589
|
+
"supports_reasoning": True,
|
|
1590
|
+
"input_cost_per_token": 0.0000001,
|
|
1591
|
+
"cache_read_input_cost_per_token": 0.00000001,
|
|
1592
|
+
"cache_creation_input_cost_per_token": 0.000000125,
|
|
1593
|
+
"output_cost_per_token": 0.0000005,
|
|
1594
|
+
}
|
|
1595
|
+
|
|
1580
1596
|
_BUILT_IN_MODEL_METADATA: dict[str, dict[str, Any]] = {
|
|
1581
1597
|
"deepseek-chat": {
|
|
1582
1598
|
"context_window_tokens": 1_000_000,
|
|
@@ -1767,8 +1767,10 @@ PROFILE_PRESETS: tuple[ProfilePreset, ...] = (
|
|
|
1767
1767
|
model_choices=(
|
|
1768
1768
|
ReviewedModel("deepseek-flash", "deepseek-expanded"),
|
|
1769
1769
|
ReviewedModel("glm-5.3-flash", "glm-normal"),
|
|
1770
|
+
ReviewedModel("gpt-6-luna", "gpt-expanded"),
|
|
1770
1771
|
),
|
|
1771
1772
|
suggested_model_descriptions={
|
|
1773
|
+
"gpt-6-luna": "GPT-6 Luna - efficient coding and reasoning, included with free credits",
|
|
1772
1774
|
"deepseek-flash": (
|
|
1773
1775
|
"DeepSeek V4.1 Flash - vision and reasoning, 1M context, included with free credits"
|
|
1774
1776
|
),
|
|
@@ -1785,7 +1787,7 @@ PROFILE_PRESETS: tuple[ProfilePreset, ...] = (
|
|
|
1785
1787
|
"deepseek-v4.1-flash-expires-on-0910": "deepseek-flash",
|
|
1786
1788
|
},
|
|
1787
1789
|
setup_warning="Run `alysis login` to connect your Alysis account and use free credits.",
|
|
1788
|
-
notes="DeepSeek V4.1 Flash
|
|
1790
|
+
notes="DeepSeek V4.1 Flash, GLM 5.3 Flash, and GPT-6 Luna with free credits. Authenticate with `alysis login`.",
|
|
1789
1791
|
),
|
|
1790
1792
|
ProfilePreset(
|
|
1791
1793
|
key="ollama",
|
|
@@ -355,6 +355,17 @@ _CONTRACTS: dict[str, tuple[tuple[str, ReasoningContract], ...]] = {
|
|
|
355
355
|
),
|
|
356
356
|
# Hosted models retain their upstream reasoning and replay contracts.
|
|
357
357
|
"alysis": (
|
|
358
|
+
(
|
|
359
|
+
"gpt-6-luna",
|
|
360
|
+
_C(
|
|
361
|
+
mode=OPTIONAL,
|
|
362
|
+
wire=WIRE_REASONING_OBJECT,
|
|
363
|
+
values=("none", "low", "medium", "high", "xhigh", "max"),
|
|
364
|
+
default="medium",
|
|
365
|
+
off=OFF_EXPLICIT,
|
|
366
|
+
notes="hosted Responses with full stateless reasoning and function-tool replay",
|
|
367
|
+
),
|
|
368
|
+
),
|
|
358
369
|
(
|
|
359
370
|
"deepseek-",
|
|
360
371
|
_C(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|