alysis-code 0.13.0__tar.gz → 0.13.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.
Files changed (461) hide show
  1. {alysis_code-0.13.0 → alysis_code-0.13.1}/CHANGELOG.md +15 -0
  2. {alysis_code-0.13.0 → alysis_code-0.13.1}/PKG-INFO +1 -1
  3. {alysis_code-0.13.0 → alysis_code-0.13.1}/pyproject.toml +1 -1
  4. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/__init__.py +1 -1
  5. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/turn/core.py +31 -3
  6. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/budget_policy.py +46 -3
  7. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/tui/app.py +476 -44
  8. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/tui/config_overlay.py +3 -2
  9. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/tui/owl.py +21 -9
  10. alysis_code-0.13.1/src/alysis_code/cli_impl/tui/selection_bindings.py +39 -0
  11. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/tui/setup_app.py +38 -6
  12. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/tui/workspace_guard.py +3 -2
  13. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/crash_diagnostics.py +9 -0
  14. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/llm/openai_compat.py +5 -1
  15. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/llm/provider_limits.py +50 -7
  16. alysis_code-0.13.1/src/alysis_code/transport_retry.py +244 -0
  17. {alysis_code-0.13.0 → alysis_code-0.13.1}/.gitignore +0 -0
  18. {alysis_code-0.13.0 → alysis_code-0.13.1}/LICENSE +0 -0
  19. {alysis_code-0.13.0 → alysis_code-0.13.1}/NOTICE +0 -0
  20. {alysis_code-0.13.0 → alysis_code-0.13.1}/README.md +0 -0
  21. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/__main__.py +0 -0
  22. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/_build_info.py +0 -0
  23. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/account_login.py +0 -0
  24. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/README.md +0 -0
  25. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/__init__.py +0 -0
  26. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/acceptance_contract.py +0 -0
  27. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/blast_radius.py +0 -0
  28. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/cache_keepalive.py +0 -0
  29. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/completion_certificate.py +0 -0
  30. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/completion_gate.py +0 -0
  31. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/empty_response_stall.py +0 -0
  32. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/errors.py +0 -0
  33. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/llm_calls.py +0 -0
  34. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/mutation_classification.py +0 -0
  35. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/prompt_context.py +0 -0
  36. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/read_ledger.py +0 -0
  37. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/regression_baseline.py +0 -0
  38. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/reproduction_first.py +0 -0
  39. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/sensitive_output.py +0 -0
  40. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/session.py +0 -0
  41. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/steering.py +0 -0
  42. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/subagent_execution.py +0 -0
  43. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/subagent_workspace.py +0 -0
  44. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/tools_assembly.py +0 -0
  45. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/turn/__init__.py +0 -0
  46. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/turn/events.py +0 -0
  47. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/turn/exploration.py +0 -0
  48. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/turn/interventions.py +0 -0
  49. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/turn/read_cache.py +0 -0
  50. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/turn/snapshot.py +0 -0
  51. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/turn_contract.py +0 -0
  52. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/turn_path.py +0 -0
  53. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/verification.py +0 -0
  54. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/verification_commands.py +0 -0
  55. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent/verification_evidence.py +0 -0
  56. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent_loop.py +0 -0
  57. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent_runtimes/__init__.py +0 -0
  58. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent_runtimes/base.py +0 -0
  59. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent_runtimes/builtins.py +0 -0
  60. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent_runtimes/codex_cli.py +0 -0
  61. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent_runtimes/host.py +0 -0
  62. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent_runtimes/registry.py +0 -0
  63. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agent_runtimes/service.py +0 -0
  64. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agentbox_client.py +0 -0
  65. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/agentbox_integration.py +0 -0
  66. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/alysis_cloud.py +0 -0
  67. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/approval_scope.py +0 -0
  68. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/README.md +0 -0
  69. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/__init__.py +0 -0
  70. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/asset_read_core.py +0 -0
  71. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/budget_allocator.py +0 -0
  72. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/comprehender.py +0 -0
  73. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/index.py +0 -0
  74. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/ingestion.py +0 -0
  75. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/legacy_migration.py +0 -0
  76. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/models.py +0 -0
  77. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/ocr.py +0 -0
  78. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/owl/ascii/f-000.txt +0 -0
  79. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/owl/ascii/f-001.txt +0 -0
  80. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/owl/ascii/f-002.txt +0 -0
  81. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/owl/ascii/f-003.txt +0 -0
  82. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/owl/ascii/f-004.txt +0 -0
  83. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/owl/ascii/f-005.txt +0 -0
  84. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/owl/ascii/f-006.txt +0 -0
  85. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/owl/ascii/f-007.txt +0 -0
  86. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/owl/ascii/f-008.txt +0 -0
  87. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/owl/ascii/f-009.txt +0 -0
  88. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/owl/ascii/f-010.txt +0 -0
  89. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/owl/ascii/f-011.txt +0 -0
  90. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/owl/ascii/f-012.txt +0 -0
  91. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/owl/ascii/f-013.txt +0 -0
  92. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/owl/ascii/f-014.txt +0 -0
  93. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/owl/ascii/f-015.txt +0 -0
  94. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/owl/ascii/f-016.txt +0 -0
  95. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/owl/ascii/f-017.txt +0 -0
  96. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/owl/ascii/f-018.txt +0 -0
  97. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/owl/ascii/f-019.txt +0 -0
  98. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/owl/ascii/f-020.txt +0 -0
  99. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/owl/index.html +0 -0
  100. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/owl/show-owl.sh +0 -0
  101. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/paths.py +0 -0
  102. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/plan_binding.py +0 -0
  103. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/planner_context.py +0 -0
  104. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/planner_tools.py +0 -0
  105. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/prompts.py +0 -0
  106. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/replanner_context.py +0 -0
  107. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/surface.py +0 -0
  108. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/untrusted_content.py +0 -0
  109. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/usage_logger.py +0 -0
  110. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/worker_mirror.py +0 -0
  111. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/worker_section.py +0 -0
  112. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/assets/worker_tools.py +0 -0
  113. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/atomic_io.py +0 -0
  114. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/auth_diagnostics.py +0 -0
  115. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/background_runner.py +0 -0
  116. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/branding.py +0 -0
  117. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/build_identity.py +0 -0
  118. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/builtin_hooks/__init__.py +0 -0
  119. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/builtin_hooks/notify_done_windows.py +0 -0
  120. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/bwrap_etc.py +0 -0
  121. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cancellation.py +0 -0
  122. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/capabilities.py +0 -0
  123. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/chatgpt_codex_static_provider.py +0 -0
  124. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli.py +0 -0
  125. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/__init__.py +0 -0
  126. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/assets_cli.py +0 -0
  127. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/assets_modal.py +0 -0
  128. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/chat/__init__.py +0 -0
  129. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/chat/commands.py +0 -0
  130. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/chat/loop.py +0 -0
  131. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/chat/mid_turn_policy.py +0 -0
  132. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/chat/rendering.py +0 -0
  133. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/chat/state.py +0 -0
  134. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/chat_resume.py +0 -0
  135. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/chat_slash_completer.py +0 -0
  136. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/__init__.py +0 -0
  137. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/_shared.py +0 -0
  138. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/auth.py +0 -0
  139. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/chat_resume_helpers.py +0 -0
  140. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/chat_state.py +0 -0
  141. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/chat_status.py +0 -0
  142. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/chat_terminal.py +0 -0
  143. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/chat_tui_panels.py +0 -0
  144. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/cli_common.py +0 -0
  145. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/cli_surface.py +0 -0
  146. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/config.py +0 -0
  147. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/conventions.py +0 -0
  148. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/execution_helpers.py +0 -0
  149. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/extensions.py +0 -0
  150. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/forge.py +0 -0
  151. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/forge_asset_view.py +0 -0
  152. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/forge_helpers.py +0 -0
  153. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/hooks.py +0 -0
  154. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/ide_bridge.py +0 -0
  155. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/mcp.py +0 -0
  156. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/profile.py +0 -0
  157. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/prompt_helpers.py +0 -0
  158. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/report.py +0 -0
  159. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/root.py +0 -0
  160. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/sandbox.py +0 -0
  161. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/server.py +0 -0
  162. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/sessions.py +0 -0
  163. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/skills.py +0 -0
  164. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/startup.py +0 -0
  165. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/tools.py +0 -0
  166. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/update.py +0 -0
  167. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/commands/welcome.py +0 -0
  168. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/config_menu.py +0 -0
  169. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/forge.py +0 -0
  170. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/forge_recovery.py +0 -0
  171. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/setup_wizard.py +0 -0
  172. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/tui/__init__.py +0 -0
  173. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/tui/config.py +0 -0
  174. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/tui/config_flow.py +0 -0
  175. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/tui/content.py +0 -0
  176. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/tui/footer.py +0 -0
  177. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/tui/forge_status.py +0 -0
  178. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/tui/markdown.py +0 -0
  179. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/tui/plan_meta.py +0 -0
  180. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/tui/setup_flow.py +0 -0
  181. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/tui/state.py +0 -0
  182. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/tui/subagent_identity.py +0 -0
  183. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/tui/subagent_panel.py +0 -0
  184. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/tui/surface.py +0 -0
  185. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/tui/transcript.py +0 -0
  186. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/cli_impl/tui/update_prompt.py +0 -0
  187. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/clipboard.py +0 -0
  188. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/code_review.py +0 -0
  189. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/compaction/__init__.py +0 -0
  190. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/compaction/conversation_compactor.py +0 -0
  191. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/compaction/importance.py +0 -0
  192. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/compaction/settings.py +0 -0
  193. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/compaction/tool_output_offload.py +0 -0
  194. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/config.py +0 -0
  195. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/conflict_auto_resolver.py +0 -0
  196. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/context/__init__.py +0 -0
  197. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/context/tool_schema_budgeter.py +0 -0
  198. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/custom_tools/README.md +0 -0
  199. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/custom_tools/__init__.py +0 -0
  200. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/custom_tools/discovery.py +0 -0
  201. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/custom_tools/runtime.py +0 -0
  202. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/custom_tools/session.py +0 -0
  203. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/custom_tools/trust.py +0 -0
  204. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/diff_paths.py +0 -0
  205. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/direction_change.py +0 -0
  206. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/dispatch_timing.py +0 -0
  207. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/durable_service_manager.py +0 -0
  208. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/edit_discipline.py +0 -0
  209. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/error_text.py +0 -0
  210. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/execution_budget.py +0 -0
  211. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/execution_context.py +0 -0
  212. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/execution_deadline.py +0 -0
  213. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/execution_shared.py +0 -0
  214. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/extensions/README.md +0 -0
  215. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/extensions/__init__.py +0 -0
  216. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/extensions/activation.py +0 -0
  217. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/extensions/install.py +0 -0
  218. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/extensions/manifest.py +0 -0
  219. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/extensions/models.py +0 -0
  220. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/extensions/paths.py +0 -0
  221. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/extensions/registry.json +0 -0
  222. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/extensions/registry.py +0 -0
  223. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/extensions/state.py +0 -0
  224. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/extensions/workspace_trust.py +0 -0
  225. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/failed_task_evidence.py +0 -0
  226. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/failure_category.py +0 -0
  227. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/feedback_report.py +0 -0
  228. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/file_classification.py +0 -0
  229. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/forge.py +0 -0
  230. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/forge_completion.py +0 -0
  231. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/forge_events.py +0 -0
  232. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/frontmatter_utils.py +0 -0
  233. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/git_evidence.py +0 -0
  234. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/git_ops.py +0 -0
  235. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/git_safe.py +0 -0
  236. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/git_worktrees.py +0 -0
  237. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/hooks/README.md +0 -0
  238. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/hooks/__init__.py +0 -0
  239. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/hooks/audit.py +0 -0
  240. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/hooks/config.py +0 -0
  241. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/hooks/dispatcher.py +0 -0
  242. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/hooks/models.py +0 -0
  243. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/hooks/trust.py +0 -0
  244. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/host_actions.py +0 -0
  245. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/host_browser.py +0 -0
  246. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/ide/__init__.py +0 -0
  247. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/ide/activity_events.py +0 -0
  248. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/ide/approvals.py +0 -0
  249. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/ide/artifacts.py +0 -0
  250. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/ide/browser_egress_proxy.py +0 -0
  251. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/ide/cdp_websocket_transport.py +0 -0
  252. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/ide/change_ledger.py +0 -0
  253. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/ide/context_blocks.py +0 -0
  254. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/ide/event_stream.py +0 -0
  255. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/ide/forge_protocol.py +0 -0
  256. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/ide/forge_request_ledger.py +0 -0
  257. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/ide/health.py +0 -0
  258. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/ide/managed_browser.py +0 -0
  259. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/ide/management_protocol.py +0 -0
  260. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/ide/mcp_oauth_coordinator.py +0 -0
  261. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/ide/mcp_oauth_lifecycle.py +0 -0
  262. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/ide/prompt_queue.py +0 -0
  263. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/ide/protocol.py +0 -0
  264. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/ide/resumable_swarm.py +0 -0
  265. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/ide/session_search.py +0 -0
  266. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/ide/stdio_bridge.py +0 -0
  267. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/ide/structured_state.py +0 -0
  268. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/ide/swarm_protocol.py +0 -0
  269. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/integration_gate.py +0 -0
  270. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/interactive_input_guard.py +0 -0
  271. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/interactive_plan_mode.py +0 -0
  272. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/internal_artifacts.py +0 -0
  273. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/knowledge_base.py +0 -0
  274. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/knowledge_capture.py +0 -0
  275. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/knowledge_librarian.py +0 -0
  276. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/language_policy.py +0 -0
  277. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/litellm_static_provider.py +0 -0
  278. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/llm/__init__.py +0 -0
  279. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/llm/anthropic_messages.py +0 -0
  280. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/llm/base.py +0 -0
  281. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/llm/cache_capabilities.py +0 -0
  282. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/llm/cache_control_blocks.py +0 -0
  283. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/llm/cache_policy.py +0 -0
  284. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/llm/factory.py +0 -0
  285. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/llm/gemini_generate_content.py +0 -0
  286. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/llm/gemini_interactions.py +0 -0
  287. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/llm/metadata.py +0 -0
  288. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/llm/openai_responses.py +0 -0
  289. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/llm/protocols.py +0 -0
  290. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/llm/request_plan.py +0 -0
  291. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/llm/request_shape.py +0 -0
  292. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/llm/streaming.py +0 -0
  293. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/llm/temperature_compat.py +0 -0
  294. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/llm/types.py +0 -0
  295. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/llm/usage_normalization.py +0 -0
  296. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/llm_error_display.py +0 -0
  297. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/logging_redaction.py +0 -0
  298. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/managed_host_deadline.py +0 -0
  299. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/mcp/README.md +0 -0
  300. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/mcp/__init__.py +0 -0
  301. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/mcp/client.py +0 -0
  302. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/mcp/config.py +0 -0
  303. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/mcp/errors.py +0 -0
  304. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/mcp/forge_scope.py +0 -0
  305. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/mcp/jsonrpc.py +0 -0
  306. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/mcp/manager.py +0 -0
  307. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/mcp/models.py +0 -0
  308. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/mcp/oauth.py +0 -0
  309. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/mcp/oauth_runtime.py +0 -0
  310. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/mcp/oauth_store.py +0 -0
  311. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/mcp/prompts.py +0 -0
  312. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/mcp/resources.py +0 -0
  313. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/mcp/roots.py +0 -0
  314. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/mcp/server_requests.py +0 -0
  315. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/mcp/token_store.py +0 -0
  316. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/mcp/transport_http.py +0 -0
  317. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/mcp/transport_stdio.py +0 -0
  318. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/mcp/untrusted_content.py +0 -0
  319. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/merge_conflict_reviewer.py +0 -0
  320. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/model_catalog/__init__.py +0 -0
  321. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/model_catalog/chatgpt_codex_subscription_snapshot.json +0 -0
  322. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/model_catalog/litellm_model_prices_snapshot.json +0 -0
  323. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/model_catalog/litellm_model_prices_snapshot.meta.json +0 -0
  324. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/model_metadata_policy.py +0 -0
  325. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/model_metadata_utils.py +0 -0
  326. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/model_registry.py +0 -0
  327. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/model_router.py +0 -0
  328. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/permission_policy.py +0 -0
  329. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/personas.py +0 -0
  330. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/pipeline_facts.py +0 -0
  331. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/plan_assistant.py +0 -0
  332. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/plan_mode.py +0 -0
  333. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/plan_reconciliation.py +0 -0
  334. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/plan_repair.py +0 -0
  335. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/plan_validation.py +0 -0
  336. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/planning_constraints.py +0 -0
  337. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/policy.py +0 -0
  338. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/preview_server.py +0 -0
  339. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/process_reaping.py +0 -0
  340. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/profile_presets.py +0 -0
  341. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/profiles.py +0 -0
  342. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/provider_auth/__init__.py +0 -0
  343. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/provider_auth/base.py +0 -0
  344. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/provider_auth/openai_codex.py +0 -0
  345. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/provider_auth/registry.py +0 -0
  346. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/provider_auth/store.py +0 -0
  347. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/provider_diagnostics.py +0 -0
  348. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/provider_model_catalog.py +0 -0
  349. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/provider_telemetry.py +0 -0
  350. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/provider_url.py +0 -0
  351. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/reasoning_contracts.py +0 -0
  352. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/remote_sync.py +0 -0
  353. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/replanning.py +0 -0
  354. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/repo_scan.py +0 -0
  355. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/request_estimation.py +0 -0
  356. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/review_gate.py +0 -0
  357. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/run_lock.py +0 -0
  358. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/run_outcome.py +0 -0
  359. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/run_provenance.py +0 -0
  360. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/run_state.py +0 -0
  361. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/runtime_artifacts.py +0 -0
  362. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/runtime_context_features.py +0 -0
  363. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/runtime_kind.py +0 -0
  364. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/safety/__init__.py +0 -0
  365. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/safety/mcp_sanitize.py +0 -0
  366. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/safety/safe_http.py +0 -0
  367. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/safety/subagent_report.py +0 -0
  368. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/sandbox_doctor.py +0 -0
  369. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/sandbox_runner.py +0 -0
  370. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/sandbox_settings.py +0 -0
  371. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/serialized_paths.py +0 -0
  372. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/server/__init__.py +0 -0
  373. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/server/app.py +0 -0
  374. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/server/auth.py +0 -0
  375. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/server/job_config.py +0 -0
  376. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/server/settings.py +0 -0
  377. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/server/store.py +0 -0
  378. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/server/worker_runner.py +0 -0
  379. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/service_persistence.py +0 -0
  380. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/session_artifacts.py +0 -0
  381. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/session_metrics.py +0 -0
  382. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/session_store.py +0 -0
  383. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/skills/README.md +0 -0
  384. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/skills/__init__.py +0 -0
  385. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/skills/conventions.py +0 -0
  386. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/skills/discovery.py +0 -0
  387. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/skills/eval_models.py +0 -0
  388. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/skills/eval_runner.py +0 -0
  389. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/skills/evals.py +0 -0
  390. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/skills/install.py +0 -0
  391. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/skills/loader.py +0 -0
  392. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/skills/matching.py +0 -0
  393. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/skills/models.py +0 -0
  394. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/skills/paths.py +0 -0
  395. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/skills/prompting.py +0 -0
  396. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/skills/scaffold.py +0 -0
  397. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/skills/state.py +0 -0
  398. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/skills/transactions.py +0 -0
  399. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/skills/validation.py +0 -0
  400. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/step_budget.py +0 -0
  401. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/subagent_labels.py +0 -0
  402. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/subagents.py +0 -0
  403. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/surface/__init__.py +0 -0
  404. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/surface/base.py +0 -0
  405. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/surface/console.py +0 -0
  406. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/surface/events.py +0 -0
  407. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/surface/hidden_surface.py +0 -0
  408. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/surface/noop_surface.py +0 -0
  409. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/surface/rich_surface.py +0 -0
  410. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/surface/styles.py +0 -0
  411. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/surface/theme.py +0 -0
  412. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/surface/types.py +0 -0
  413. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/swarm_backend.py +0 -0
  414. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/swarm_orchestrator.py +0 -0
  415. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/swarm_scheduler.py +0 -0
  416. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/swarm_trace.py +0 -0
  417. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/swarm_worker.py +0 -0
  418. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/swarm_write_guard.py +0 -0
  419. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/task_dependencies.py +0 -0
  420. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/task_readiness.py +0 -0
  421. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/task_scope.py +0 -0
  422. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/terminal_manager.py +0 -0
  423. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/terminal_ownership.py +0 -0
  424. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/text_normalization.py +0 -0
  425. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/token_budget.py +0 -0
  426. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/tools/README.md +0 -0
  427. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/tools/__init__.py +0 -0
  428. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/tools/artifacts.py +0 -0
  429. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/tools/availability.py +0 -0
  430. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/tools/fs.py +0 -0
  431. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/tools/git.py +0 -0
  432. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/tools/history.py +0 -0
  433. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/tools/http_timeout.py +0 -0
  434. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/tools/image_generation.py +0 -0
  435. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/tools/registry.py +0 -0
  436. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/tools/repo_map.py +0 -0
  437. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/tools/search.py +0 -0
  438. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/tools/shell.py +0 -0
  439. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/tools/symbols.py +0 -0
  440. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/tools/test_discovery.py +0 -0
  441. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/tools/web.py +0 -0
  442. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/tools/web_search.py +0 -0
  443. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/tools/web_search_dashscope.py +0 -0
  444. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/tools/web_search_ddgs.py +0 -0
  445. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/tools/web_search_provider_adapters.py +0 -0
  446. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/tools/web_search_tavily.py +0 -0
  447. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/updates.py +0 -0
  448. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/usage_tracker.py +0 -0
  449. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/verification_command_analysis.py +0 -0
  450. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/verification_contract.py +0 -0
  451. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/verification_failure_summary.py +0 -0
  452. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/verification_repair.py +0 -0
  453. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/verify_gate.py +0 -0
  454. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/web_research.py +0 -0
  455. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/web_search_adapters.py +0 -0
  456. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/web_search_policy.py +0 -0
  457. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/workspace_binding.py +0 -0
  458. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/workspace_binding_ui.py +0 -0
  459. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/workspace_context.py +0 -0
  460. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/workspace_isolation.py +0 -0
  461. {alysis_code-0.13.0 → alysis_code-0.13.1}/src/alysis_code/workspace_provisioning.py +0 -0
@@ -408,6 +408,21 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
408
408
  Workspace-target extraction also keeps extensionless dotfiles such as `.npmrc` available to
409
409
  verification selection.
410
410
 
411
+ ## [0.13.1] - 2026-08-27
412
+
413
+ Input usability and runtime reliability improvements.
414
+
415
+ ### Fixed
416
+
417
+ - The TUI now keeps input geometry, selection editing, paste-token hints,
418
+ dragged-selection scrolling, and terminal-theme styling consistent across
419
+ chat, configuration, setup, and workspace-guard surfaces.
420
+ - Intentional clean stops now exit successfully and retain a machine-readable
421
+ `stop_reason`; genuine failures and unknown stop reasons remain non-zero.
422
+ - Connections dropped mid-response receive a dedicated bounded retry schedule,
423
+ preserve caller-configured larger budgets, respect wall-clock caps, and emit
424
+ consistent retry, stream-restart, and terminal diagnostic reasons.
425
+
411
426
  ## [0.13.0] - 2026-08-22
412
427
 
413
428
  The reliability wave. Six stacked fixes (PR1-PR6) targeting the failure modes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alysis-code
3
- Version: 0.13.0
3
+ Version: 0.13.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/CHANGELOG.md
6
6
  Project-URL: Documentation, https://github.com/AlysisAi/alysis-code/tree/main/docs
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "alysis-code"
7
- version = "0.13.0"
7
+ version = "0.13.1"
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.13.0"
3
+ __version__ = "0.13.1"
@@ -21,6 +21,7 @@ from ...budget_policy import (
21
21
  STOP_REASON_RUN_BUDGET_EXHAUSTED,
22
22
  ProgressCheckpoint,
23
23
  exit_code_for_stop,
24
+ is_clean_stop,
24
25
  resolve_budget_grace_seconds,
25
26
  )
26
27
  from ...edit_discipline import scratch_summary_line
@@ -3055,13 +3056,26 @@ def run_turn(
3055
3056
  )
3056
3057
  material_work_persisted = bool(salvaged_paths or durable_service_ids)
3057
3058
  missing_action = _outstanding_turn_action()
3058
- exit_code = 0 if material_work_persisted else 1
3059
+ # A stop the run chose for itself is an outcome, not a failure, whether
3060
+ # or not it had anything to show for itself -- exiting non-zero made
3061
+ # automation interpret an intentional stop as a process failure.
3062
+ # Every other degraded stop keeps the "exit 0 only when work persisted"
3063
+ # rule, because there the run did not decide anything: it was stopped.
3064
+ clean_stop = is_clean_stop(trigger)
3065
+ if clean_stop:
3066
+ exit_code = exit_code_for_stop(trigger)
3067
+ # Surfaces in the run_finished crash event, so callers can name
3068
+ # the stop without parsing the summary prose.
3069
+ self.stop_reason = trigger
3070
+ else:
3071
+ exit_code = 0 if material_work_persisted else 1
3059
3072
  degraded_payload = {
3060
3073
  "step": step,
3061
3074
  "runtime_kind": self.runtime_kind.value,
3062
3075
  "reason": reason,
3063
3076
  "trigger": trigger,
3064
3077
  "exit_code": exit_code,
3078
+ **({"stop_reason": trigger} if clean_stop else {}),
3065
3079
  "material_work_persisted": material_work_persisted,
3066
3080
  "salvaged_paths": salvaged_paths,
3067
3081
  "durable_service_ids": durable_service_ids,
@@ -3200,6 +3214,9 @@ def run_turn(
3200
3214
  **_controller_intervention_event_fields(),
3201
3215
  "degraded": True,
3202
3216
  "degraded_reason": "empty_response_stall",
3217
+ # Present only for a self-stop, so an ordinary degraded stop's
3218
+ # event stays byte-identical to before.
3219
+ **({"stop_reason": trigger} if is_clean_stop(trigger) else {}),
3203
3220
  },
3204
3221
  )
3205
3222
  assistant_message_emitted = True
@@ -6923,10 +6940,21 @@ def run_turn(
6923
6940
  explicit_language_override=turn_language_explicit,
6924
6941
  prior_visible_text=last_visible_assistant_text,
6925
6942
  streamed_text_emitted=streamed_text_emitted,
6926
- final_event_payload=_controller_intervention_event_fields(),
6943
+ final_event_payload={
6944
+ **_controller_intervention_event_fields(),
6945
+ **({"stop_reason": reason} if is_clean_stop(reason) else {}),
6946
+ },
6927
6947
  )
6928
6948
  assistant_message_emitted = True
6929
- return _finish_turn(1, reason=reason, final_text=local_summary)
6949
+ if is_clean_stop(reason):
6950
+ self.stop_reason = reason
6951
+ # Reached only when the shared stall resolution is disabled, so
6952
+ # it is the same self-stop as the salvage path above and has to
6953
+ # exit the same way. The decision goes through the stop-reason
6954
+ # table rather than a literal, so both paths stay in step.
6955
+ return _finish_turn(
6956
+ exit_code_for_stop(reason), reason=reason, final_text=local_summary
6957
+ )
6930
6958
 
6931
6959
  empty_response_anomaly_state.attempts = next_anomaly_attempt
6932
6960
  empty_response_anomaly_state.last_missing_action = missing_action
@@ -58,6 +58,11 @@ BUDGET_CHECKPOINT_FRACTION_ENV = "ALYSIS_BUDGET_CHECKPOINT_FRACTION"
58
58
  # without parsing prose.
59
59
  STOP_REASON_RUN_BUDGET_EXHAUSTED = "run_budget_exhausted"
60
60
 
61
+ # The model stopped returning usable responses and the targeted recovery for
62
+ # that was spent. The run then reports what it has and ends. Same shape of
63
+ # outcome as a budget stop: chosen by the run, not a crash.
64
+ STOP_REASON_EMPTY_RESPONSE_ANOMALY_RETRY_EXHAUSTED = "empty_response_anomaly_retry_exhausted"
65
+
61
66
  PROGRESS_CHECKPOINT_FAILED_EVENT = "progress_checkpoint_failed"
62
67
 
63
68
  # A budget stop is a normal outcome, not a failure: the agent did what it could
@@ -73,16 +78,40 @@ BUDGET_CHECKPOINT_NOTICE = (
73
78
  "Reassess approach or report the concrete blocker."
74
79
  )
75
80
 
76
- # Terminal reasons that are *not* failures. Everything else exits non-zero.
77
- GRACEFUL_STOP_REASONS = frozenset(
81
+ # Reasons for which the run *decided* to stop: it hit a limit it owns, wound
82
+ # down deliberately, reported what it had, and exited. These are outcomes, not
83
+ # failures, and every one of them must exit zero -- a non-zero code makes a
84
+ # harness record NonZeroAgentExitCodeError and throw the trial away.
85
+ #
86
+ # This is a registry rather than a special case per stop path. The budget stop
87
+ # was fixed first and got bespoke plumbing; the empty-response stop then had to
88
+ # be fixed the same way, separately, because there was nothing to join. A
89
+ # future graceful stop joins by adding its constant here.
90
+ #
91
+ # The bar for membership: the run chose to end and said so honestly. An
92
+ # exception escaping, a provider that never came back, a user abort -- none of
93
+ # those are self-stops, and they keep their non-zero codes.
94
+ CLEAN_STOP_REASONS = frozenset(
95
+ {
96
+ STOP_REASON_RUN_BUDGET_EXHAUSTED,
97
+ STOP_REASON_EMPTY_RESPONSE_ANOMALY_RETRY_EXHAUSTED,
98
+ }
99
+ )
100
+
101
+ # Ordinary terminal states, which were never failures to begin with. Separate
102
+ # from CLEAN_STOP_REASONS because "the turn ended" is not a self-stop and
103
+ # nothing should record it as one.
104
+ NORMAL_COMPLETION_REASONS = frozenset(
78
105
  {
79
106
  "",
80
107
  "completed",
81
108
  "session_close",
82
- STOP_REASON_RUN_BUDGET_EXHAUSTED,
83
109
  }
84
110
  )
85
111
 
112
+ # Terminal reasons that are *not* failures. Everything else exits non-zero.
113
+ GRACEFUL_STOP_REASONS = NORMAL_COMPLETION_REASONS | CLEAN_STOP_REASONS
114
+
86
115
 
87
116
  class RunBudgetCancelled(Exception):
88
117
  """Fallback cancellation error used when no error class is injected.
@@ -202,6 +231,20 @@ def exit_code_for_stop(
202
231
  return int(failure_exit_code)
203
232
 
204
233
 
234
+ def is_clean_stop(stop_reason: str | None) -> bool:
235
+ """True when ``stop_reason`` names a stop the run chose for itself.
236
+
237
+ The predicate a stop path should consult before deciding an exit code, so
238
+ joining the clean-stop set is a one-line change to
239
+ :data:`CLEAN_STOP_REASONS` rather than new plumbing at the stop site.
240
+
241
+ Note this is narrower than :data:`GRACEFUL_STOP_REASONS`: an ordinary
242
+ completion exits zero but is not a self-stop, and must not be recorded as
243
+ one.
244
+ """
245
+ return str(stop_reason or "").strip().lower() in CLEAN_STOP_REASONS
246
+
247
+
205
248
  def is_budget_stop(stop_reason: str | None) -> bool:
206
249
  return str(stop_reason or "").strip().lower() == STOP_REASON_RUN_BUDGET_EXHAUSTED
207
250