alysis-code 0.14.8__tar.gz → 0.14.9__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.
Files changed (490) hide show
  1. {alysis_code-0.14.8 → alysis_code-0.14.9}/PKG-INFO +1 -1
  2. {alysis_code-0.14.8 → alysis_code-0.14.9}/docs/CHANGELOG.md +9 -0
  3. {alysis_code-0.14.8 → alysis_code-0.14.9}/pyproject.toml +1 -1
  4. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/__init__.py +1 -1
  5. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/llm/anthropic_messages.py +22 -3
  6. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/llm/factory.py +1 -1
  7. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/llm/temperature_compat.py +3 -0
  8. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/model_registry.py +20 -0
  9. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/profile_presets.py +14 -3
  10. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/reasoning_contracts.py +23 -0
  11. {alysis_code-0.14.8 → alysis_code-0.14.9}/.gitignore +0 -0
  12. {alysis_code-0.14.8 → alysis_code-0.14.9}/LICENSE +0 -0
  13. {alysis_code-0.14.8 → alysis_code-0.14.9}/NOTICE +0 -0
  14. {alysis_code-0.14.8 → alysis_code-0.14.9}/README.md +0 -0
  15. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/__main__.py +0 -0
  16. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/_build_info.py +0 -0
  17. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/account_login.py +0 -0
  18. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/README.md +0 -0
  19. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/__init__.py +0 -0
  20. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/acceptance_contract.py +0 -0
  21. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/anytime_checkpoint.py +0 -0
  22. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/blast_radius.py +0 -0
  23. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/cache_keepalive.py +0 -0
  24. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/checkpoint_worker.py +0 -0
  25. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/completion_certificate.py +0 -0
  26. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/completion_gate.py +0 -0
  27. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/empty_response_stall.py +0 -0
  28. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/errors.py +0 -0
  29. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/llm_calls.py +0 -0
  30. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/mutation_classification.py +0 -0
  31. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/prompt_context.py +0 -0
  32. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/prompt_families.py +0 -0
  33. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/prompt_guidance.py +0 -0
  34. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/read_ledger.py +0 -0
  35. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/regression_baseline.py +0 -0
  36. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/reproduction_first.py +0 -0
  37. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/sensitive_output.py +0 -0
  38. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/session.py +0 -0
  39. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/steering.py +0 -0
  40. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/subagent_execution.py +0 -0
  41. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/subagent_workspace.py +0 -0
  42. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/task_evidence.py +0 -0
  43. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/task_state.py +0 -0
  44. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/tools_assembly.py +0 -0
  45. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/turn/__init__.py +0 -0
  46. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/turn/core.py +0 -0
  47. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/turn/events.py +0 -0
  48. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/turn/exploration.py +0 -0
  49. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/turn/interventions.py +0 -0
  50. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/turn/read_cache.py +0 -0
  51. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/turn/snapshot.py +0 -0
  52. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/turn/subagent_progress.py +0 -0
  53. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/turn_contract.py +0 -0
  54. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/turn_path.py +0 -0
  55. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/verification.py +0 -0
  56. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/verification_commands.py +0 -0
  57. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/verification_evidence.py +0 -0
  58. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent/verification_result.py +0 -0
  59. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent_loop.py +0 -0
  60. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent_runtimes/__init__.py +0 -0
  61. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent_runtimes/base.py +0 -0
  62. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent_runtimes/builtins.py +0 -0
  63. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent_runtimes/codex_cli.py +0 -0
  64. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent_runtimes/host.py +0 -0
  65. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent_runtimes/registry.py +0 -0
  66. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agent_runtimes/service.py +0 -0
  67. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agentbox_client.py +0 -0
  68. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/agentbox_integration.py +0 -0
  69. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/alysis_cloud.py +0 -0
  70. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/approval_scope.py +0 -0
  71. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/README.md +0 -0
  72. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/__init__.py +0 -0
  73. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/asset_read_core.py +0 -0
  74. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/budget_allocator.py +0 -0
  75. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/comprehender.py +0 -0
  76. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/index.py +0 -0
  77. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/ingestion.py +0 -0
  78. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/legacy_migration.py +0 -0
  79. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/local_tools.py +0 -0
  80. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/models.py +0 -0
  81. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/ocr.py +0 -0
  82. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/owl/ascii/f-000.txt +0 -0
  83. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/owl/ascii/f-001.txt +0 -0
  84. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/owl/ascii/f-002.txt +0 -0
  85. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/owl/ascii/f-003.txt +0 -0
  86. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/owl/ascii/f-004.txt +0 -0
  87. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/owl/ascii/f-005.txt +0 -0
  88. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/owl/ascii/f-006.txt +0 -0
  89. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/owl/ascii/f-007.txt +0 -0
  90. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/owl/ascii/f-008.txt +0 -0
  91. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/owl/ascii/f-009.txt +0 -0
  92. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/owl/ascii/f-010.txt +0 -0
  93. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/owl/ascii/f-011.txt +0 -0
  94. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/owl/ascii/f-012.txt +0 -0
  95. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/owl/ascii/f-013.txt +0 -0
  96. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/owl/ascii/f-014.txt +0 -0
  97. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/owl/ascii/f-015.txt +0 -0
  98. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/owl/ascii/f-016.txt +0 -0
  99. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/owl/ascii/f-017.txt +0 -0
  100. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/owl/ascii/f-018.txt +0 -0
  101. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/owl/ascii/f-019.txt +0 -0
  102. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/owl/ascii/f-020.txt +0 -0
  103. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/owl/index.html +0 -0
  104. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/owl/show-owl.sh +0 -0
  105. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/paths.py +0 -0
  106. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/plan_binding.py +0 -0
  107. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/planner_context.py +0 -0
  108. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/planner_tools.py +0 -0
  109. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/prompts.py +0 -0
  110. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/replanner_context.py +0 -0
  111. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/surface.py +0 -0
  112. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/untrusted_content.py +0 -0
  113. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/usage_logger.py +0 -0
  114. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/worker_mirror.py +0 -0
  115. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/worker_section.py +0 -0
  116. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/assets/worker_tools.py +0 -0
  117. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/atomic_io.py +0 -0
  118. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/auth_diagnostics.py +0 -0
  119. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/background_runner.py +0 -0
  120. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/branding.py +0 -0
  121. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/budget_policy.py +0 -0
  122. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/build_identity.py +0 -0
  123. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/builtin_hooks/__init__.py +0 -0
  124. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/builtin_hooks/notify_done_windows.py +0 -0
  125. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/bwrap_etc.py +0 -0
  126. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cancellation.py +0 -0
  127. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/capabilities.py +0 -0
  128. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/chatgpt_codex_static_provider.py +0 -0
  129. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/checkpoint_settings.py +0 -0
  130. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli.py +0 -0
  131. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/__init__.py +0 -0
  132. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/assets_cli.py +0 -0
  133. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/assets_modal.py +0 -0
  134. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/chat/__init__.py +0 -0
  135. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/chat/commands.py +0 -0
  136. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/chat/forge_visibility.py +0 -0
  137. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/chat/loop.py +0 -0
  138. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/chat/mid_turn_policy.py +0 -0
  139. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/chat/rendering.py +0 -0
  140. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/chat/state.py +0 -0
  141. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/chat_resume.py +0 -0
  142. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/chat_slash_completer.py +0 -0
  143. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/__init__.py +0 -0
  144. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/_shared.py +0 -0
  145. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/auth.py +0 -0
  146. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/chat_resume_helpers.py +0 -0
  147. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/chat_state.py +0 -0
  148. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/chat_status.py +0 -0
  149. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/chat_terminal.py +0 -0
  150. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/chat_tui_panels.py +0 -0
  151. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/cli_common.py +0 -0
  152. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/cli_surface.py +0 -0
  153. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/config.py +0 -0
  154. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/conventions.py +0 -0
  155. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/execution_helpers.py +0 -0
  156. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/extensions.py +0 -0
  157. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/forge.py +0 -0
  158. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/forge_asset_view.py +0 -0
  159. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/forge_helpers.py +0 -0
  160. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/hooks.py +0 -0
  161. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/ide_bridge.py +0 -0
  162. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/mcp.py +0 -0
  163. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/profile.py +0 -0
  164. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/prompt_helpers.py +0 -0
  165. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/report.py +0 -0
  166. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/root.py +0 -0
  167. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/sandbox.py +0 -0
  168. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/server.py +0 -0
  169. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/sessions.py +0 -0
  170. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/skills.py +0 -0
  171. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/startup.py +0 -0
  172. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/tools.py +0 -0
  173. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/update.py +0 -0
  174. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/commands/welcome.py +0 -0
  175. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/config_menu.py +0 -0
  176. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/forge.py +0 -0
  177. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/forge_recovery.py +0 -0
  178. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/setup_wizard.py +0 -0
  179. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/tui/__init__.py +0 -0
  180. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/tui/app.py +0 -0
  181. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/tui/attachments.py +0 -0
  182. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/tui/composer.py +0 -0
  183. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/tui/config.py +0 -0
  184. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/tui/config_flow.py +0 -0
  185. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/tui/config_overlay.py +0 -0
  186. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/tui/content.py +0 -0
  187. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/tui/footer.py +0 -0
  188. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/tui/forge_status.py +0 -0
  189. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/tui/links.py +0 -0
  190. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/tui/markdown.py +0 -0
  191. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/tui/owl.py +0 -0
  192. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/tui/plan_meta.py +0 -0
  193. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/tui/selection_bindings.py +0 -0
  194. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/tui/setup_app.py +0 -0
  195. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/tui/setup_flow.py +0 -0
  196. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/tui/state.py +0 -0
  197. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/tui/subagent_identity.py +0 -0
  198. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/tui/subagent_panel.py +0 -0
  199. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/tui/surface.py +0 -0
  200. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/tui/tips.py +0 -0
  201. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/tui/transcript.py +0 -0
  202. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/tui/update_prompt.py +0 -0
  203. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/cli_impl/tui/workspace_guard.py +0 -0
  204. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/clipboard.py +0 -0
  205. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/code_review.py +0 -0
  206. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/compaction/__init__.py +0 -0
  207. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/compaction/conversation_compactor.py +0 -0
  208. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/compaction/importance.py +0 -0
  209. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/compaction/settings.py +0 -0
  210. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/compaction/tool_output_offload.py +0 -0
  211. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/config.py +0 -0
  212. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/conflict_auto_resolver.py +0 -0
  213. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/consumer_verification.py +0 -0
  214. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/context/__init__.py +0 -0
  215. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/context/tool_schema_budgeter.py +0 -0
  216. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/crash_diagnostics.py +0 -0
  217. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/custom_tools/README.md +0 -0
  218. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/custom_tools/__init__.py +0 -0
  219. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/custom_tools/discovery.py +0 -0
  220. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/custom_tools/runtime.py +0 -0
  221. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/custom_tools/session.py +0 -0
  222. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/custom_tools/trust.py +0 -0
  223. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/diff_paths.py +0 -0
  224. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/direction_change.py +0 -0
  225. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/dispatch_timing.py +0 -0
  226. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/durable_service_manager.py +0 -0
  227. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/edit_discipline.py +0 -0
  228. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/error_text.py +0 -0
  229. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/execution_budget.py +0 -0
  230. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/execution_context.py +0 -0
  231. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/execution_deadline.py +0 -0
  232. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/execution_shared.py +0 -0
  233. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/extensions/README.md +0 -0
  234. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/extensions/__init__.py +0 -0
  235. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/extensions/activation.py +0 -0
  236. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/extensions/install.py +0 -0
  237. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/extensions/manifest.py +0 -0
  238. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/extensions/models.py +0 -0
  239. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/extensions/paths.py +0 -0
  240. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/extensions/registry.json +0 -0
  241. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/extensions/registry.py +0 -0
  242. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/extensions/state.py +0 -0
  243. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/extensions/workspace_trust.py +0 -0
  244. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/failed_task_evidence.py +0 -0
  245. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/failure_category.py +0 -0
  246. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/feedback_report.py +0 -0
  247. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/file_classification.py +0 -0
  248. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/forge.py +0 -0
  249. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/forge_completion.py +0 -0
  250. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/forge_events.py +0 -0
  251. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/frontmatter_utils.py +0 -0
  252. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/git_evidence.py +0 -0
  253. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/git_ops.py +0 -0
  254. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/git_safe.py +0 -0
  255. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/git_worktrees.py +0 -0
  256. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/hooks/README.md +0 -0
  257. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/hooks/__init__.py +0 -0
  258. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/hooks/audit.py +0 -0
  259. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/hooks/config.py +0 -0
  260. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/hooks/dispatcher.py +0 -0
  261. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/hooks/models.py +0 -0
  262. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/hooks/trust.py +0 -0
  263. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/host_actions.py +0 -0
  264. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/host_browser.py +0 -0
  265. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/ide/__init__.py +0 -0
  266. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/ide/activity_events.py +0 -0
  267. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/ide/approvals.py +0 -0
  268. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/ide/artifacts.py +0 -0
  269. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/ide/browser_egress_proxy.py +0 -0
  270. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/ide/cdp_websocket_transport.py +0 -0
  271. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/ide/change_ledger.py +0 -0
  272. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/ide/context_blocks.py +0 -0
  273. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/ide/event_stream.py +0 -0
  274. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/ide/forge_protocol.py +0 -0
  275. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/ide/forge_request_ledger.py +0 -0
  276. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/ide/health.py +0 -0
  277. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/ide/managed_browser.py +0 -0
  278. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/ide/management_protocol.py +0 -0
  279. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/ide/mcp_oauth_coordinator.py +0 -0
  280. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/ide/mcp_oauth_lifecycle.py +0 -0
  281. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/ide/parent_watchdog.py +0 -0
  282. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/ide/prompt_queue.py +0 -0
  283. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/ide/protocol.py +0 -0
  284. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/ide/provider_switch.py +0 -0
  285. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/ide/resumable_swarm.py +0 -0
  286. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/ide/session_search.py +0 -0
  287. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/ide/stdio_bridge.py +0 -0
  288. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/ide/structured_state.py +0 -0
  289. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/ide/swarm_protocol.py +0 -0
  290. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/integration_gate.py +0 -0
  291. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/interactive_input_guard.py +0 -0
  292. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/internal_artifacts.py +0 -0
  293. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/knowledge_base.py +0 -0
  294. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/knowledge_capture.py +0 -0
  295. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/knowledge_librarian.py +0 -0
  296. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/language_policy.py +0 -0
  297. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/litellm_static_provider.py +0 -0
  298. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/llm/__init__.py +0 -0
  299. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/llm/base.py +0 -0
  300. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/llm/cache_capabilities.py +0 -0
  301. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/llm/cache_control_blocks.py +0 -0
  302. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/llm/cache_policy.py +0 -0
  303. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/llm/gemini_generate_content.py +0 -0
  304. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/llm/gemini_interactions.py +0 -0
  305. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/llm/http_cancellation.py +0 -0
  306. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/llm/metadata.py +0 -0
  307. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/llm/openai_compat.py +0 -0
  308. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/llm/openai_responses.py +0 -0
  309. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/llm/protocols.py +0 -0
  310. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/llm/provider_limits.py +0 -0
  311. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/llm/request_plan.py +0 -0
  312. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/llm/request_shape.py +0 -0
  313. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/llm/streaming.py +0 -0
  314. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/llm/tool_call_markup.py +0 -0
  315. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/llm/types.py +0 -0
  316. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/llm/usage_normalization.py +0 -0
  317. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/llm_error_display.py +0 -0
  318. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/logging_redaction.py +0 -0
  319. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/managed_host_deadline.py +0 -0
  320. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/mcp/README.md +0 -0
  321. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/mcp/__init__.py +0 -0
  322. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/mcp/client.py +0 -0
  323. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/mcp/config.py +0 -0
  324. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/mcp/errors.py +0 -0
  325. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/mcp/forge_scope.py +0 -0
  326. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/mcp/jsonrpc.py +0 -0
  327. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/mcp/manager.py +0 -0
  328. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/mcp/models.py +0 -0
  329. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/mcp/oauth.py +0 -0
  330. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/mcp/oauth_runtime.py +0 -0
  331. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/mcp/oauth_store.py +0 -0
  332. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/mcp/prompts.py +0 -0
  333. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/mcp/resources.py +0 -0
  334. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/mcp/roots.py +0 -0
  335. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/mcp/server_requests.py +0 -0
  336. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/mcp/token_store.py +0 -0
  337. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/mcp/transport_http.py +0 -0
  338. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/mcp/transport_stdio.py +0 -0
  339. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/mcp/untrusted_content.py +0 -0
  340. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/merge_conflict_reviewer.py +0 -0
  341. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/model_catalog/__init__.py +0 -0
  342. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/model_catalog/chatgpt_codex_subscription_snapshot.json +0 -0
  343. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/model_catalog/litellm_model_prices_snapshot.json +0 -0
  344. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/model_catalog/litellm_model_prices_snapshot.meta.json +0 -0
  345. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/model_metadata_policy.py +0 -0
  346. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/model_metadata_utils.py +0 -0
  347. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/model_router.py +0 -0
  348. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/permission_policy.py +0 -0
  349. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/personas.py +0 -0
  350. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/pipeline_facts.py +0 -0
  351. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/plan_assistant.py +0 -0
  352. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/plan_reconciliation.py +0 -0
  353. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/plan_repair.py +0 -0
  354. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/plan_validation.py +0 -0
  355. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/planning_constraints.py +0 -0
  356. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/policy.py +0 -0
  357. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/preview_server.py +0 -0
  358. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/private_artifact_io.py +0 -0
  359. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/process_reaping.py +0 -0
  360. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/profiles.py +0 -0
  361. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/prompt_guidance_catalog.py +0 -0
  362. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/provider_auth/__init__.py +0 -0
  363. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/provider_auth/base.py +0 -0
  364. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/provider_auth/openai_codex.py +0 -0
  365. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/provider_auth/registry.py +0 -0
  366. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/provider_auth/store.py +0 -0
  367. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/provider_diagnostics.py +0 -0
  368. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/provider_model_catalog.py +0 -0
  369. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/provider_telemetry.py +0 -0
  370. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/provider_url.py +0 -0
  371. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/remote_sync.py +0 -0
  372. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/replanning.py +0 -0
  373. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/repo_scan.py +0 -0
  374. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/request_estimation.py +0 -0
  375. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/review_gate.py +0 -0
  376. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/run_lock.py +0 -0
  377. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/run_outcome.py +0 -0
  378. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/run_provenance.py +0 -0
  379. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/run_state.py +0 -0
  380. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/runtime_artifacts.py +0 -0
  381. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/runtime_context_features.py +0 -0
  382. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/runtime_kind.py +0 -0
  383. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/safety/__init__.py +0 -0
  384. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/safety/mcp_sanitize.py +0 -0
  385. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/safety/safe_http.py +0 -0
  386. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/safety/subagent_report.py +0 -0
  387. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/sandbox_doctor.py +0 -0
  388. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/sandbox_runner.py +0 -0
  389. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/sandbox_settings.py +0 -0
  390. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/serialized_paths.py +0 -0
  391. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/server/__init__.py +0 -0
  392. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/server/app.py +0 -0
  393. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/server/auth.py +0 -0
  394. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/server/job_config.py +0 -0
  395. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/server/settings.py +0 -0
  396. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/server/store.py +0 -0
  397. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/server/worker_runner.py +0 -0
  398. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/service_persistence.py +0 -0
  399. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/session_artifacts.py +0 -0
  400. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/session_metrics.py +0 -0
  401. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/session_store.py +0 -0
  402. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/skills/README.md +0 -0
  403. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/skills/__init__.py +0 -0
  404. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/skills/bundled/address-pr-comments/SKILL.md +0 -0
  405. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/skills/bundled/code-review/SKILL.md +0 -0
  406. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/skills/bundled/commit/SKILL.md +0 -0
  407. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/skills/bundled/debug/SKILL.md +0 -0
  408. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/skills/bundled/fix-ci/SKILL.md +0 -0
  409. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/skills/bundled/release-notes/SKILL.md +0 -0
  410. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/skills/bundled/security-review/SKILL.md +0 -0
  411. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/skills/bundled/skill-creator/SKILL.md +0 -0
  412. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/skills/conventions.py +0 -0
  413. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/skills/discovery.py +0 -0
  414. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/skills/eval_models.py +0 -0
  415. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/skills/eval_runner.py +0 -0
  416. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/skills/evals.py +0 -0
  417. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/skills/install.py +0 -0
  418. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/skills/loader.py +0 -0
  419. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/skills/matching.py +0 -0
  420. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/skills/models.py +0 -0
  421. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/skills/paths.py +0 -0
  422. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/skills/prompting.py +0 -0
  423. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/skills/scaffold.py +0 -0
  424. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/skills/state.py +0 -0
  425. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/skills/transactions.py +0 -0
  426. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/skills/validation.py +0 -0
  427. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/step_budget.py +0 -0
  428. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/subagent_labels.py +0 -0
  429. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/subagents.py +0 -0
  430. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/surface/__init__.py +0 -0
  431. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/surface/base.py +0 -0
  432. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/surface/console.py +0 -0
  433. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/surface/events.py +0 -0
  434. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/surface/hidden_surface.py +0 -0
  435. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/surface/noop_surface.py +0 -0
  436. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/surface/rich_surface.py +0 -0
  437. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/surface/styles.py +0 -0
  438. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/surface/theme.py +0 -0
  439. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/surface/types.py +0 -0
  440. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/swarm_backend.py +0 -0
  441. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/swarm_orchestrator.py +0 -0
  442. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/swarm_scheduler.py +0 -0
  443. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/swarm_trace.py +0 -0
  444. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/swarm_worker.py +0 -0
  445. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/swarm_write_guard.py +0 -0
  446. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/task_dependencies.py +0 -0
  447. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/task_readiness.py +0 -0
  448. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/task_scope.py +0 -0
  449. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/terminal_manager.py +0 -0
  450. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/terminal_ownership.py +0 -0
  451. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/text_normalization.py +0 -0
  452. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/token_budget.py +0 -0
  453. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/tools/README.md +0 -0
  454. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/tools/__init__.py +0 -0
  455. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/tools/artifacts.py +0 -0
  456. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/tools/availability.py +0 -0
  457. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/tools/capability_readiness.py +0 -0
  458. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/tools/fs.py +0 -0
  459. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/tools/git.py +0 -0
  460. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/tools/history.py +0 -0
  461. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/tools/http_timeout.py +0 -0
  462. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/tools/image_generation.py +0 -0
  463. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/tools/registry.py +0 -0
  464. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/tools/repo_map.py +0 -0
  465. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/tools/search.py +0 -0
  466. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/tools/shell.py +0 -0
  467. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/tools/symbols.py +0 -0
  468. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/tools/test_discovery.py +0 -0
  469. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/tools/web.py +0 -0
  470. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/tools/web_search.py +0 -0
  471. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/tools/web_search_dashscope.py +0 -0
  472. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/tools/web_search_ddgs.py +0 -0
  473. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/tools/web_search_provider_adapters.py +0 -0
  474. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/tools/web_search_tavily.py +0 -0
  475. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/transport_retry.py +0 -0
  476. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/updates.py +0 -0
  477. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/usage_tracker.py +0 -0
  478. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/verification_command_analysis.py +0 -0
  479. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/verification_contract.py +0 -0
  480. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/verification_failure_summary.py +0 -0
  481. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/verification_repair.py +0 -0
  482. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/verify_gate.py +0 -0
  483. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/web_research.py +0 -0
  484. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/web_search_adapters.py +0 -0
  485. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/web_search_policy.py +0 -0
  486. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/workspace_binding.py +0 -0
  487. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/workspace_binding_ui.py +0 -0
  488. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/workspace_context.py +0 -0
  489. {alysis_code-0.14.8 → alysis_code-0.14.9}/src/alysis_code/workspace_isolation.py +0 -0
  490. {alysis_code-0.14.8 → alysis_code-0.14.9}/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.8
3
+ Version: 0.14.9
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
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.14.9 — Claude Haiku 5.5 on Alysis Free — 2026-10-07
4
+
5
+ - Add Claude Haiku 5.5 to the Alysis Free model picker and direct Anthropic
6
+ profiles, with native Messages routing, a 1M context window, prompt caching,
7
+ and adaptive thinking. Choose low, medium, high, xhigh, max, or off; Auto uses
8
+ the model's medium default. Pricing increases 5x above 100K total prompt tokens.
9
+ - Replace the retired Sonnet Free campaign entry with Haiku 5.5. Existing
10
+ account credits and saved model preferences are retained.
11
+
3
12
  ## 0.14.8 — production VSIX verification
4
13
 
5
14
  - Run final candidate evidence validation inside the frozen Python environment,
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "alysis-code"
7
- version = "0.14.8"
7
+ version = "0.14.9"
8
8
  description = "Local CLI coding agent powered by any API."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -1,3 +1,3 @@
1
1
  __all__ = ["__version__"]
2
2
 
3
- __version__ = "0.14.8"
3
+ __version__ = "0.14.9"
@@ -132,6 +132,8 @@ def _uses_adaptive_thinking(model: str) -> bool:
132
132
  return False
133
133
  if version.family in {"fable", "mythos"}:
134
134
  return version.major >= 5
135
+ if version.family == "haiku":
136
+ return version.major == 5 and version.minor == 5
135
137
  if version.family not in {"opus", "sonnet"}:
136
138
  return False
137
139
  return version.major >= 5 or (
@@ -166,7 +168,12 @@ def _thinking_enabled_by_default(model: str) -> bool:
166
168
  version = _claude_model_version(model)
167
169
  if version is None or version.major < 5:
168
170
  return False
169
- return version.family in {"fable", "mythos", "opus", "sonnet"}
171
+ return version.family in {
172
+ "fable",
173
+ "mythos",
174
+ "opus",
175
+ "sonnet",
176
+ } or version == _ClaudeModelVersion("haiku", 5, 5)
170
177
 
171
178
 
172
179
  def _supports_output_effort(model: str) -> bool:
@@ -176,6 +183,8 @@ def _supports_output_effort(model: str) -> bool:
176
183
  version = _claude_model_version(model)
177
184
  if version is None:
178
185
  return False
186
+ if version == _ClaudeModelVersion("haiku", 5, 5):
187
+ return True
179
188
  if version.family in {"fable", "mythos"}:
180
189
  return version.major >= 5
181
190
  if version.family == "opus":
@@ -193,6 +202,8 @@ def _supports_xhigh_effort(model: str) -> bool:
193
202
  version = _claude_model_version(model)
194
203
  if version is None:
195
204
  return False
205
+ if version == _ClaudeModelVersion("haiku", 5, 5):
206
+ return True
196
207
  if version.family in {"fable", "mythos"}:
197
208
  return version.major >= 5
198
209
  if version.family == "opus":
@@ -1631,7 +1642,11 @@ class AnthropicMessagesClient:
1631
1642
  added_builtin_web_search=tool_mapping.added_builtin_web_search,
1632
1643
  )
1633
1644
  if mapped_tool_choice is not None:
1634
- if not (thinking_plan.active and mapped_tool_choice.get("type") in {"any", "tool"}):
1645
+ if not (
1646
+ thinking_plan.active
1647
+ and _claude_model_version(self.model) != _ClaudeModelVersion("haiku", 5, 5)
1648
+ and mapped_tool_choice.get("type") in {"any", "tool"}
1649
+ ):
1635
1650
  payload["tool_choice"] = mapped_tool_choice
1636
1651
  count_cache_plan = RequestCachePlan(
1637
1652
  strategy=("anthropic_cache_control" if self.prompt_cache_control_enabled else "none"),
@@ -1791,7 +1806,11 @@ class AnthropicMessagesClient:
1791
1806
  added_builtin_web_search=tool_mapping.added_builtin_web_search,
1792
1807
  )
1793
1808
  if mapped_tool_choice is not None:
1794
- if thinking_plan.active and mapped_tool_choice.get("type") in {"any", "tool"}:
1809
+ if (
1810
+ thinking_plan.active
1811
+ and _claude_model_version(self.model) != _ClaudeModelVersion("haiku", 5, 5)
1812
+ and mapped_tool_choice.get("type") in {"any", "tool"}
1813
+ ):
1795
1814
  # Anthropic rejects forced tool use while extended thinking
1796
1815
  # is active. Leaving the choice unset preserves automatic
1797
1816
  # tool selection without failing the entire turn.
@@ -381,7 +381,7 @@ def resolve_model_protocol(*, provider_key: str | None, model: str, protocol: st
381
381
  """Resolve model-specific transports for initial connections and live switches."""
382
382
  if provider_key == "alysis" and model == "gpt-6-luna":
383
383
  return OPENAI_RESPONSES_PROTOCOL
384
- if provider_key == "alysis" and model == "claude-sonnet-5-5":
384
+ if provider_key == "alysis" and model in {"claude-sonnet-5-5", "claude-haiku-5-5"}:
385
385
  return ANTHROPIC_MESSAGES_PROTOCOL
386
386
  return protocol
387
387
 
@@ -57,6 +57,9 @@ def documented_temperature_omit_reason(
57
57
  if sonnet is not None and int(sonnet.group("major")) >= 5:
58
58
  return ANTHROPIC_DEPRECATED_SAMPLING_PARAMETERS
59
59
 
60
+ if re.search(r"(?:^|[/.:_-])claude[-_.]haiku[-_.]5[-_.]5(?:$|[-_.])", normalized_model):
61
+ return ANTHROPIC_DEPRECATED_SAMPLING_PARAMETERS
62
+
60
63
  if _GEMINI_3_RE.search(normalized_model):
61
64
  return GEMINI_3_DEFAULT_TEMPERATURE
62
65
 
@@ -1610,6 +1610,26 @@ _OFFICIAL_PROVIDER_MODEL_METADATA["alysis"]["claude-sonnet-5-5"] = {
1610
1610
  "output_cost_per_token": 0.00001,
1611
1611
  }
1612
1612
 
1613
+ # Verified launch specifications, 2026-10-07. Flat metadata shows the <=100K
1614
+ # prompt tier; hosted settlement applies 5x to ALL tokens above that threshold.
1615
+ for _haiku_provider in ("anthropic", "alysis"):
1616
+ _PROVIDER_CANONICAL_MODEL_IDS.setdefault(_haiku_provider, {})["claude-haiku-5-5"] = (
1617
+ "claude-haiku-5-5"
1618
+ )
1619
+ _OFFICIAL_PROVIDER_MODEL_SOURCES.setdefault(_haiku_provider, {})["claude-haiku-5-5"] = (
1620
+ "https://platform.claude.com/docs/en/models/haiku-5-5/overview",
1621
+ )
1622
+ _OFFICIAL_PROVIDER_MODEL_METADATA.setdefault(_haiku_provider, {})["claude-haiku-5-5"] = {
1623
+ "context_window_tokens": 1_000_000,
1624
+ "max_output_tokens": 128_000,
1625
+ "supports_vision": _haiku_provider == "anthropic",
1626
+ "supports_reasoning": True,
1627
+ "input_cost_per_token": 0.0000001,
1628
+ "cache_read_input_cost_per_token": 0.00000001,
1629
+ "cache_creation_input_cost_per_token": 0.000000125,
1630
+ "output_cost_per_token": 0.0000005,
1631
+ }
1632
+
1613
1633
  _BUILT_IN_MODEL_METADATA: dict[str, dict[str, Any]] = {
1614
1634
  "deepseek-chat": {
1615
1635
  "context_window_tokens": 1_000_000,
@@ -159,6 +159,7 @@ _ANTHROPIC_CACHE_CONTROL_CAPABILITY = CacheCapabilitySpec(
159
159
  ("claude-opus-4-6", _cache_minimum(4096)),
160
160
  ("claude-opus-4-5", _cache_minimum(4096)),
161
161
  ("claude-haiku-4-5", _cache_minimum(4096)),
162
+ ("claude-haiku-5-5", _cache_minimum(512)),
162
163
  ),
163
164
  source="preset",
164
165
  )
@@ -486,6 +487,7 @@ PROFILE_PRESETS: tuple[ProfilePreset, ...] = (
486
487
  api_key_env="ANTHROPIC_API_KEY",
487
488
  model_choices=(
488
489
  ReviewedModel("claude-sonnet-5", "claude-normal"),
490
+ ReviewedModel("claude-haiku-5-5", "claude-normal"),
489
491
  ReviewedModel("claude-opus-5-5", "claude-normal"),
490
492
  ReviewedModel("claude-opus-5", "claude-normal"),
491
493
  ReviewedModel("claude-fable-5-1", "claude-normal"),
@@ -499,6 +501,7 @@ PROFILE_PRESETS: tuple[ProfilePreset, ...] = (
499
501
  # aliased: 5.1 rejects forced tool_choice, so a silent swap could
500
502
  # change request behaviour, not just billing.
501
503
  "claude-sonnet-5": "default - 1M context, best speed/intelligence mix",
504
+ "claude-haiku-5-5": "fast - 1M context, adaptive thinking; higher rates above 100K input",
502
505
  "claude-opus-5-5": "advanced - latest Opus, thinking always on, 1M context",
503
506
  "claude-opus-5": "fallback - previous Opus, 1M context",
504
507
  "claude-fable-5-1": "reasoning - Mythos-class, adaptive thinking always on",
@@ -540,6 +543,7 @@ PROFILE_PRESETS: tuple[ProfilePreset, ...] = (
540
543
  api_key_env="ANTHROPIC_API_KEY",
541
544
  model_choices=(
542
545
  ReviewedModel("claude-sonnet-5", "claude-normal"),
546
+ ReviewedModel("claude-haiku-5-5", "claude-normal"),
543
547
  ReviewedModel("claude-opus-5-5", "claude-normal"),
544
548
  ReviewedModel("claude-opus-5", "claude-normal"),
545
549
  ReviewedModel("claude-fable-5-1", "claude-normal"),
@@ -553,6 +557,7 @@ PROFILE_PRESETS: tuple[ProfilePreset, ...] = (
553
557
  # aliased: 5.1 rejects forced tool_choice, so a silent swap could
554
558
  # change request behaviour, not just billing.
555
559
  "claude-sonnet-5": "default - 1M context, best speed/intelligence mix",
560
+ "claude-haiku-5-5": "fast - 1M context, adaptive thinking; higher rates above 100K input",
556
561
  "claude-opus-5-5": "advanced - latest Opus, thinking always on, 1M context",
557
562
  "claude-opus-5": "fallback - previous Opus, 1M context",
558
563
  "claude-fable-5-1": "reasoning - Mythos-class, adaptive thinking always on",
@@ -597,6 +602,7 @@ PROFILE_PRESETS: tuple[ProfilePreset, ...] = (
597
602
  api_key_env="ANTHROPIC_API_KEY",
598
603
  model_choices=(
599
604
  ReviewedModel("claude-sonnet-5", "claude-normal"),
605
+ ReviewedModel("claude-haiku-5-5", "claude-normal"),
600
606
  ReviewedModel("claude-opus-5-5", "claude-normal"),
601
607
  ReviewedModel("claude-opus-5", "claude-normal"),
602
608
  ReviewedModel("claude-fable-5-1", "claude-normal"),
@@ -610,6 +616,7 @@ PROFILE_PRESETS: tuple[ProfilePreset, ...] = (
610
616
  # aliased: 5.1 rejects forced tool_choice, so a silent swap could
611
617
  # change request behaviour, not just billing.
612
618
  "claude-sonnet-5": "default - 1M context, best speed/intelligence mix",
619
+ "claude-haiku-5-5": "fast - 1M context, adaptive thinking; higher rates above 100K input",
613
620
  "claude-opus-5-5": "advanced - latest Opus, thinking always on, 1M context",
614
621
  "claude-opus-5": "fallback - previous Opus, 1M context",
615
622
  "claude-fable-5-1": "reasoning - Mythos-class, adaptive thinking always on",
@@ -1768,10 +1775,10 @@ PROFILE_PRESETS: tuple[ProfilePreset, ...] = (
1768
1775
  ReviewedModel("deepseek-flash", "deepseek-expanded"),
1769
1776
  ReviewedModel("glm-5.3-flash", "glm-normal"),
1770
1777
  ReviewedModel("gpt-6-luna", "gpt-expanded"),
1771
- ReviewedModel("claude-sonnet-5-5", "claude-normal"),
1778
+ ReviewedModel("claude-haiku-5-5", "claude-normal"),
1772
1779
  ),
1773
1780
  suggested_model_descriptions={
1774
- "claude-sonnet-5-5": "Claude Sonnet 5.5 - coding and reasoning, included with free credits",
1781
+ "claude-haiku-5-5": "Claude Haiku 5.5 - fast coding, 1M context, Free credits; 5x rates above 100K input",
1775
1782
  "gpt-6-luna": "GPT-6 Luna - efficient coding and reasoning, included with free credits",
1776
1783
  "deepseek-flash": (
1777
1784
  "DeepSeek V4.1 Flash - vision and reasoning, 1M context, included with free credits"
@@ -1781,6 +1788,9 @@ PROFILE_PRESETS: tuple[ProfilePreset, ...] = (
1781
1788
  ),
1782
1789
  },
1783
1790
  validation_model="deepseek-flash",
1791
+ cache_capability=CacheCapabilitySpec(
1792
+ model_family_overrides=(("claude-haiku-5-5", _cache_minimum(512)),), source="preset"
1793
+ ),
1784
1794
  # Migrate retired Flash/beta ids to the free default. Do not silently
1785
1795
  # redirect models from the retired Xiaomi trial to another provider.
1786
1796
  model_aliases={
@@ -1789,7 +1799,7 @@ PROFILE_PRESETS: tuple[ProfilePreset, ...] = (
1789
1799
  "deepseek-v4.1-flash-expires-on-0910": "deepseek-flash",
1790
1800
  },
1791
1801
  setup_warning="Run `alysis login` to connect your Alysis account and use free credits.",
1792
- notes="DeepSeek V4.1 Flash, GLM 5.3 Flash, GPT-6 Luna, and Claude Sonnet 5.5 with free credits. Authenticate with `alysis login`.",
1802
+ notes="DeepSeek V4.1 Flash, GLM 5.3 Flash, GPT-6 Luna, and Claude Haiku 5.5 with free credits. Authenticate with `alysis login`.",
1793
1803
  ),
1794
1804
  ProfilePreset(
1795
1805
  key="ollama",
@@ -1845,6 +1855,7 @@ def model_display_name(model: str) -> str:
1845
1855
  "glm-5.3-flash": "GLM 5.3 Flash",
1846
1856
  "gpt-6-luna": "GPT-6 Luna",
1847
1857
  "claude-sonnet-5-5": "Claude Sonnet 5.5",
1858
+ "claude-haiku-5-5": "Claude Haiku 5.5",
1848
1859
  "grok-4.7": "Grok 4.7",
1849
1860
  }.get(model.casefold(), model)
1850
1861
 
@@ -200,6 +200,18 @@ _CONTRACTS: dict[str, tuple[tuple[str, ReasoningContract], ...]] = {
200
200
  ),
201
201
  ),
202
202
  "anthropic": (
203
+ # https://platform.claude.com/docs/en/build-with-claude/effort
204
+ (
205
+ "claude-haiku-5-5",
206
+ _C(
207
+ mode=OPTIONAL,
208
+ wire=WIRE_THINKING_ADAPTIVE,
209
+ values=("low", "medium", "high", "xhigh", "max"),
210
+ default="medium",
211
+ off=OFF_EXPLICIT,
212
+ notes="adaptive by default; disabled only at high or below; forced tools skip thinking",
213
+ ),
214
+ ),
203
215
  # Source: https://platform.claude.com/docs/en/models/fable-5-1/overview
204
216
  (
205
217
  "claude-fable-5-1",
@@ -356,6 +368,17 @@ _CONTRACTS: dict[str, tuple[tuple[str, ReasoningContract], ...]] = {
356
368
  ),
357
369
  # Hosted models retain their upstream reasoning and replay contracts.
358
370
  "alysis": (
371
+ (
372
+ "claude-haiku-5-5",
373
+ _C(
374
+ mode=OPTIONAL,
375
+ wire=WIRE_THINKING_ADAPTIVE,
376
+ values=("low", "medium", "high", "xhigh", "max"),
377
+ default="medium",
378
+ off=OFF_EXPLICIT,
379
+ notes="native Messages; disabled only at high or below; shared Free credits",
380
+ ),
381
+ ),
359
382
  (
360
383
  "claude-sonnet-5-5",
361
384
  _C(
File without changes
File without changes
File without changes
File without changes