alysis-code 0.13.6.1__tar.gz → 0.13.7__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 (472) hide show
  1. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/PKG-INFO +3 -2
  2. alysis_code-0.13.7/docs/CHANGELOG.md +290 -0
  3. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/pyproject.toml +3 -2
  4. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/__init__.py +1 -1
  5. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/account_login.py +4 -0
  6. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/README.md +7 -6
  7. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/session.py +11 -34
  8. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/turn/core.py +0 -2
  9. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent_loop.py +1 -3
  10. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/chat/loop.py +2 -2
  11. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/startup.py +11 -7
  12. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/config_menu.py +110 -13
  13. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/setup_wizard.py +1 -1
  14. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/tui/app.py +95 -5
  15. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/tui/config_flow.py +52 -23
  16. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/tui/setup_app.py +15 -12
  17. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/tui/setup_flow.py +5 -5
  18. alysis_code-0.13.7/src/alysis_code/cli_impl/tui/tips.py +35 -0
  19. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/config.py +1 -1
  20. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/personas.py +1 -1
  21. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/usage_tracker.py +13 -6
  22. alysis_code-0.13.6.1/docs/CHANGELOG.md +0 -1621
  23. alysis_code-0.13.6.1/src/alysis_code/agentbox_client.py +0 -416
  24. alysis_code-0.13.6.1/src/alysis_code/agentbox_integration.py +0 -310
  25. alysis_code-0.13.6.1/src/alysis_code/assets/owl/index.html +0 -98
  26. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/.gitignore +0 -0
  27. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/LICENSE +0 -0
  28. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/NOTICE +0 -0
  29. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/README.md +0 -0
  30. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/__main__.py +0 -0
  31. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/_build_info.py +0 -0
  32. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/__init__.py +0 -0
  33. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/acceptance_contract.py +0 -0
  34. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/blast_radius.py +0 -0
  35. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/cache_keepalive.py +0 -0
  36. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/completion_certificate.py +0 -0
  37. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/completion_gate.py +0 -0
  38. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/empty_response_stall.py +0 -0
  39. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/errors.py +0 -0
  40. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/llm_calls.py +0 -0
  41. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/mutation_classification.py +0 -0
  42. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/prompt_context.py +0 -0
  43. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/read_ledger.py +0 -0
  44. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/regression_baseline.py +0 -0
  45. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/reproduction_first.py +0 -0
  46. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/sensitive_output.py +0 -0
  47. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/steering.py +0 -0
  48. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/subagent_execution.py +0 -0
  49. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/subagent_workspace.py +0 -0
  50. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/tools_assembly.py +0 -0
  51. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/turn/__init__.py +0 -0
  52. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/turn/events.py +0 -0
  53. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/turn/exploration.py +0 -0
  54. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/turn/interventions.py +0 -0
  55. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/turn/read_cache.py +0 -0
  56. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/turn/snapshot.py +0 -0
  57. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/turn_contract.py +0 -0
  58. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/turn_path.py +0 -0
  59. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/verification.py +0 -0
  60. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/verification_commands.py +0 -0
  61. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent/verification_evidence.py +0 -0
  62. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent_runtimes/__init__.py +0 -0
  63. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent_runtimes/base.py +0 -0
  64. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent_runtimes/builtins.py +0 -0
  65. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent_runtimes/codex_cli.py +0 -0
  66. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent_runtimes/host.py +0 -0
  67. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent_runtimes/registry.py +0 -0
  68. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/agent_runtimes/service.py +0 -0
  69. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/alysis_cloud.py +0 -0
  70. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/approval_scope.py +0 -0
  71. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/README.md +0 -0
  72. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/__init__.py +0 -0
  73. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/asset_read_core.py +0 -0
  74. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/budget_allocator.py +0 -0
  75. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/comprehender.py +0 -0
  76. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/index.py +0 -0
  77. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/ingestion.py +0 -0
  78. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/legacy_migration.py +0 -0
  79. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/models.py +0 -0
  80. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/ocr.py +0 -0
  81. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/owl/ascii/f-000.txt +0 -0
  82. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/owl/ascii/f-001.txt +0 -0
  83. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/owl/ascii/f-002.txt +0 -0
  84. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/owl/ascii/f-003.txt +0 -0
  85. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/owl/ascii/f-004.txt +0 -0
  86. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/owl/ascii/f-005.txt +0 -0
  87. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/owl/ascii/f-006.txt +0 -0
  88. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/owl/ascii/f-007.txt +0 -0
  89. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/owl/ascii/f-008.txt +0 -0
  90. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/owl/ascii/f-009.txt +0 -0
  91. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/owl/ascii/f-010.txt +0 -0
  92. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/owl/ascii/f-011.txt +0 -0
  93. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/owl/ascii/f-012.txt +0 -0
  94. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/owl/ascii/f-013.txt +0 -0
  95. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/owl/ascii/f-014.txt +0 -0
  96. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/owl/ascii/f-015.txt +0 -0
  97. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/owl/ascii/f-016.txt +0 -0
  98. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/owl/ascii/f-017.txt +0 -0
  99. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/owl/ascii/f-018.txt +0 -0
  100. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/owl/ascii/f-019.txt +0 -0
  101. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/owl/ascii/f-020.txt +0 -0
  102. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/owl/show-owl.sh +0 -0
  103. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/paths.py +0 -0
  104. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/plan_binding.py +0 -0
  105. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/planner_context.py +0 -0
  106. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/planner_tools.py +0 -0
  107. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/prompts.py +0 -0
  108. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/replanner_context.py +0 -0
  109. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/surface.py +0 -0
  110. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/untrusted_content.py +0 -0
  111. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/usage_logger.py +0 -0
  112. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/worker_mirror.py +0 -0
  113. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/worker_section.py +0 -0
  114. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/assets/worker_tools.py +0 -0
  115. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/atomic_io.py +0 -0
  116. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/auth_diagnostics.py +0 -0
  117. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/background_runner.py +0 -0
  118. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/branding.py +0 -0
  119. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/budget_policy.py +0 -0
  120. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/build_identity.py +0 -0
  121. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/builtin_hooks/__init__.py +0 -0
  122. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/builtin_hooks/notify_done_windows.py +0 -0
  123. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/bwrap_etc.py +0 -0
  124. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cancellation.py +0 -0
  125. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/capabilities.py +0 -0
  126. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/chatgpt_codex_static_provider.py +0 -0
  127. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli.py +0 -0
  128. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/__init__.py +0 -0
  129. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/assets_cli.py +0 -0
  130. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/assets_modal.py +0 -0
  131. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/chat/__init__.py +0 -0
  132. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/chat/commands.py +0 -0
  133. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/chat/mid_turn_policy.py +0 -0
  134. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/chat/rendering.py +0 -0
  135. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/chat/state.py +0 -0
  136. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/chat_resume.py +0 -0
  137. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/chat_slash_completer.py +0 -0
  138. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/__init__.py +0 -0
  139. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/_shared.py +0 -0
  140. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/auth.py +0 -0
  141. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/chat_resume_helpers.py +0 -0
  142. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/chat_state.py +0 -0
  143. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/chat_status.py +0 -0
  144. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/chat_terminal.py +0 -0
  145. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/chat_tui_panels.py +0 -0
  146. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/cli_common.py +0 -0
  147. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/cli_surface.py +0 -0
  148. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/config.py +0 -0
  149. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/conventions.py +0 -0
  150. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/execution_helpers.py +0 -0
  151. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/extensions.py +0 -0
  152. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/forge.py +0 -0
  153. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/forge_asset_view.py +0 -0
  154. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/forge_helpers.py +0 -0
  155. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/hooks.py +0 -0
  156. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/ide_bridge.py +0 -0
  157. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/mcp.py +0 -0
  158. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/profile.py +0 -0
  159. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/prompt_helpers.py +0 -0
  160. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/report.py +0 -0
  161. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/root.py +0 -0
  162. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/sandbox.py +0 -0
  163. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/server.py +0 -0
  164. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/sessions.py +0 -0
  165. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/skills.py +0 -0
  166. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/tools.py +0 -0
  167. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/update.py +0 -0
  168. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/commands/welcome.py +0 -0
  169. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/forge.py +0 -0
  170. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/forge_recovery.py +0 -0
  171. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/tui/__init__.py +0 -0
  172. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/tui/config.py +0 -0
  173. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/tui/config_overlay.py +0 -0
  174. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/tui/content.py +0 -0
  175. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/tui/footer.py +0 -0
  176. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/tui/forge_status.py +0 -0
  177. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/tui/markdown.py +0 -0
  178. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/tui/owl.py +0 -0
  179. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/tui/plan_meta.py +0 -0
  180. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/tui/selection_bindings.py +0 -0
  181. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/tui/state.py +0 -0
  182. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/tui/subagent_identity.py +0 -0
  183. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/tui/subagent_panel.py +0 -0
  184. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/tui/surface.py +0 -0
  185. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/tui/transcript.py +0 -0
  186. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/tui/update_prompt.py +0 -0
  187. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/cli_impl/tui/workspace_guard.py +0 -0
  188. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/clipboard.py +0 -0
  189. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/code_review.py +0 -0
  190. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/compaction/__init__.py +0 -0
  191. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/compaction/conversation_compactor.py +0 -0
  192. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/compaction/importance.py +0 -0
  193. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/compaction/settings.py +0 -0
  194. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/compaction/tool_output_offload.py +0 -0
  195. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/conflict_auto_resolver.py +0 -0
  196. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/context/__init__.py +0 -0
  197. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/context/tool_schema_budgeter.py +0 -0
  198. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/crash_diagnostics.py +0 -0
  199. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/custom_tools/README.md +0 -0
  200. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/custom_tools/__init__.py +0 -0
  201. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/custom_tools/discovery.py +0 -0
  202. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/custom_tools/runtime.py +0 -0
  203. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/custom_tools/session.py +0 -0
  204. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/custom_tools/trust.py +0 -0
  205. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/diff_paths.py +0 -0
  206. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/direction_change.py +0 -0
  207. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/dispatch_timing.py +0 -0
  208. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/durable_service_manager.py +0 -0
  209. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/edit_discipline.py +0 -0
  210. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/error_text.py +0 -0
  211. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/execution_budget.py +0 -0
  212. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/execution_context.py +0 -0
  213. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/execution_deadline.py +0 -0
  214. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/execution_shared.py +0 -0
  215. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/extensions/README.md +0 -0
  216. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/extensions/__init__.py +0 -0
  217. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/extensions/activation.py +0 -0
  218. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/extensions/install.py +0 -0
  219. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/extensions/manifest.py +0 -0
  220. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/extensions/models.py +0 -0
  221. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/extensions/paths.py +0 -0
  222. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/extensions/registry.json +0 -0
  223. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/extensions/registry.py +0 -0
  224. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/extensions/state.py +0 -0
  225. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/extensions/workspace_trust.py +0 -0
  226. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/failed_task_evidence.py +0 -0
  227. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/failure_category.py +0 -0
  228. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/feedback_report.py +0 -0
  229. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/file_classification.py +0 -0
  230. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/forge.py +0 -0
  231. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/forge_completion.py +0 -0
  232. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/forge_events.py +0 -0
  233. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/frontmatter_utils.py +0 -0
  234. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/git_evidence.py +0 -0
  235. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/git_ops.py +0 -0
  236. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/git_safe.py +0 -0
  237. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/git_worktrees.py +0 -0
  238. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/hooks/README.md +0 -0
  239. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/hooks/__init__.py +0 -0
  240. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/hooks/audit.py +0 -0
  241. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/hooks/config.py +0 -0
  242. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/hooks/dispatcher.py +0 -0
  243. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/hooks/models.py +0 -0
  244. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/hooks/trust.py +0 -0
  245. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/host_actions.py +0 -0
  246. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/host_browser.py +0 -0
  247. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/ide/__init__.py +0 -0
  248. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/ide/activity_events.py +0 -0
  249. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/ide/approvals.py +0 -0
  250. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/ide/artifacts.py +0 -0
  251. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/ide/browser_egress_proxy.py +0 -0
  252. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/ide/cdp_websocket_transport.py +0 -0
  253. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/ide/change_ledger.py +0 -0
  254. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/ide/context_blocks.py +0 -0
  255. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/ide/event_stream.py +0 -0
  256. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/ide/forge_protocol.py +0 -0
  257. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/ide/forge_request_ledger.py +0 -0
  258. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/ide/health.py +0 -0
  259. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/ide/managed_browser.py +0 -0
  260. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/ide/management_protocol.py +0 -0
  261. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/ide/mcp_oauth_coordinator.py +0 -0
  262. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/ide/mcp_oauth_lifecycle.py +0 -0
  263. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/ide/prompt_queue.py +0 -0
  264. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/ide/protocol.py +0 -0
  265. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/ide/resumable_swarm.py +0 -0
  266. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/ide/session_search.py +0 -0
  267. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/ide/stdio_bridge.py +0 -0
  268. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/ide/structured_state.py +0 -0
  269. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/ide/swarm_protocol.py +0 -0
  270. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/integration_gate.py +0 -0
  271. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/interactive_input_guard.py +0 -0
  272. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/interactive_plan_mode.py +0 -0
  273. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/internal_artifacts.py +0 -0
  274. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/knowledge_base.py +0 -0
  275. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/knowledge_capture.py +0 -0
  276. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/knowledge_librarian.py +0 -0
  277. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/language_policy.py +0 -0
  278. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/litellm_static_provider.py +0 -0
  279. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/llm/__init__.py +0 -0
  280. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/llm/anthropic_messages.py +0 -0
  281. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/llm/base.py +0 -0
  282. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/llm/cache_capabilities.py +0 -0
  283. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/llm/cache_control_blocks.py +0 -0
  284. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/llm/cache_policy.py +0 -0
  285. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/llm/factory.py +0 -0
  286. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/llm/gemini_generate_content.py +0 -0
  287. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/llm/gemini_interactions.py +0 -0
  288. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/llm/metadata.py +0 -0
  289. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/llm/openai_compat.py +0 -0
  290. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/llm/openai_responses.py +0 -0
  291. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/llm/protocols.py +0 -0
  292. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/llm/provider_limits.py +0 -0
  293. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/llm/request_plan.py +0 -0
  294. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/llm/request_shape.py +0 -0
  295. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/llm/streaming.py +0 -0
  296. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/llm/temperature_compat.py +0 -0
  297. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/llm/types.py +0 -0
  298. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/llm/usage_normalization.py +0 -0
  299. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/llm_error_display.py +0 -0
  300. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/logging_redaction.py +0 -0
  301. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/managed_host_deadline.py +0 -0
  302. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/mcp/README.md +0 -0
  303. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/mcp/__init__.py +0 -0
  304. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/mcp/client.py +0 -0
  305. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/mcp/config.py +0 -0
  306. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/mcp/errors.py +0 -0
  307. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/mcp/forge_scope.py +0 -0
  308. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/mcp/jsonrpc.py +0 -0
  309. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/mcp/manager.py +0 -0
  310. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/mcp/models.py +0 -0
  311. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/mcp/oauth.py +0 -0
  312. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/mcp/oauth_runtime.py +0 -0
  313. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/mcp/oauth_store.py +0 -0
  314. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/mcp/prompts.py +0 -0
  315. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/mcp/resources.py +0 -0
  316. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/mcp/roots.py +0 -0
  317. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/mcp/server_requests.py +0 -0
  318. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/mcp/token_store.py +0 -0
  319. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/mcp/transport_http.py +0 -0
  320. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/mcp/transport_stdio.py +0 -0
  321. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/mcp/untrusted_content.py +0 -0
  322. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/merge_conflict_reviewer.py +0 -0
  323. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/model_catalog/__init__.py +0 -0
  324. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/model_catalog/chatgpt_codex_subscription_snapshot.json +0 -0
  325. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/model_catalog/litellm_model_prices_snapshot.json +0 -0
  326. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/model_catalog/litellm_model_prices_snapshot.meta.json +0 -0
  327. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/model_metadata_policy.py +0 -0
  328. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/model_metadata_utils.py +0 -0
  329. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/model_registry.py +0 -0
  330. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/model_router.py +0 -0
  331. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/permission_policy.py +0 -0
  332. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/pipeline_facts.py +0 -0
  333. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/plan_assistant.py +0 -0
  334. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/plan_mode.py +0 -0
  335. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/plan_reconciliation.py +0 -0
  336. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/plan_repair.py +0 -0
  337. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/plan_validation.py +0 -0
  338. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/planning_constraints.py +0 -0
  339. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/policy.py +0 -0
  340. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/preview_server.py +0 -0
  341. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/process_reaping.py +0 -0
  342. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/profile_presets.py +0 -0
  343. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/profiles.py +0 -0
  344. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/provider_auth/__init__.py +0 -0
  345. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/provider_auth/base.py +0 -0
  346. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/provider_auth/openai_codex.py +0 -0
  347. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/provider_auth/registry.py +0 -0
  348. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/provider_auth/store.py +0 -0
  349. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/provider_diagnostics.py +0 -0
  350. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/provider_model_catalog.py +0 -0
  351. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/provider_telemetry.py +0 -0
  352. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/provider_url.py +0 -0
  353. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/reasoning_contracts.py +0 -0
  354. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/remote_sync.py +0 -0
  355. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/replanning.py +0 -0
  356. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/repo_scan.py +0 -0
  357. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/request_estimation.py +0 -0
  358. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/review_gate.py +0 -0
  359. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/run_lock.py +0 -0
  360. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/run_outcome.py +0 -0
  361. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/run_provenance.py +0 -0
  362. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/run_state.py +0 -0
  363. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/runtime_artifacts.py +0 -0
  364. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/runtime_context_features.py +0 -0
  365. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/runtime_kind.py +0 -0
  366. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/safety/__init__.py +0 -0
  367. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/safety/mcp_sanitize.py +0 -0
  368. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/safety/safe_http.py +0 -0
  369. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/safety/subagent_report.py +0 -0
  370. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/sandbox_doctor.py +0 -0
  371. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/sandbox_runner.py +0 -0
  372. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/sandbox_settings.py +0 -0
  373. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/serialized_paths.py +0 -0
  374. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/server/__init__.py +0 -0
  375. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/server/app.py +0 -0
  376. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/server/auth.py +0 -0
  377. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/server/job_config.py +0 -0
  378. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/server/settings.py +0 -0
  379. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/server/store.py +0 -0
  380. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/server/worker_runner.py +0 -0
  381. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/service_persistence.py +0 -0
  382. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/session_artifacts.py +0 -0
  383. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/session_metrics.py +0 -0
  384. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/session_store.py +0 -0
  385. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/skills/README.md +0 -0
  386. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/skills/__init__.py +0 -0
  387. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/skills/bundled/address-pr-comments/SKILL.md +0 -0
  388. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/skills/bundled/code-review/SKILL.md +0 -0
  389. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/skills/bundled/commit/SKILL.md +0 -0
  390. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/skills/bundled/debug/SKILL.md +0 -0
  391. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/skills/bundled/fix-ci/SKILL.md +0 -0
  392. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/skills/bundled/release-notes/SKILL.md +0 -0
  393. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/skills/bundled/security-review/SKILL.md +0 -0
  394. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/skills/bundled/skill-creator/SKILL.md +0 -0
  395. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/skills/conventions.py +0 -0
  396. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/skills/discovery.py +0 -0
  397. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/skills/eval_models.py +0 -0
  398. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/skills/eval_runner.py +0 -0
  399. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/skills/evals.py +0 -0
  400. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/skills/install.py +0 -0
  401. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/skills/loader.py +0 -0
  402. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/skills/matching.py +0 -0
  403. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/skills/models.py +0 -0
  404. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/skills/paths.py +0 -0
  405. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/skills/prompting.py +0 -0
  406. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/skills/scaffold.py +0 -0
  407. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/skills/selection.py +0 -0
  408. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/skills/state.py +0 -0
  409. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/skills/transactions.py +0 -0
  410. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/skills/validation.py +0 -0
  411. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/step_budget.py +0 -0
  412. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/subagent_labels.py +0 -0
  413. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/subagents.py +0 -0
  414. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/surface/__init__.py +0 -0
  415. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/surface/base.py +0 -0
  416. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/surface/console.py +0 -0
  417. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/surface/events.py +0 -0
  418. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/surface/hidden_surface.py +0 -0
  419. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/surface/noop_surface.py +0 -0
  420. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/surface/rich_surface.py +0 -0
  421. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/surface/styles.py +0 -0
  422. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/surface/theme.py +0 -0
  423. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/surface/types.py +0 -0
  424. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/swarm_backend.py +0 -0
  425. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/swarm_orchestrator.py +0 -0
  426. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/swarm_scheduler.py +0 -0
  427. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/swarm_trace.py +0 -0
  428. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/swarm_worker.py +0 -0
  429. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/swarm_write_guard.py +0 -0
  430. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/task_dependencies.py +0 -0
  431. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/task_readiness.py +0 -0
  432. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/task_scope.py +0 -0
  433. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/terminal_manager.py +0 -0
  434. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/terminal_ownership.py +0 -0
  435. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/text_normalization.py +0 -0
  436. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/token_budget.py +0 -0
  437. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/tools/README.md +0 -0
  438. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/tools/__init__.py +0 -0
  439. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/tools/artifacts.py +0 -0
  440. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/tools/availability.py +0 -0
  441. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/tools/fs.py +0 -0
  442. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/tools/git.py +0 -0
  443. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/tools/history.py +0 -0
  444. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/tools/http_timeout.py +0 -0
  445. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/tools/image_generation.py +0 -0
  446. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/tools/registry.py +0 -0
  447. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/tools/repo_map.py +0 -0
  448. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/tools/search.py +0 -0
  449. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/tools/shell.py +0 -0
  450. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/tools/symbols.py +0 -0
  451. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/tools/test_discovery.py +0 -0
  452. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/tools/web.py +0 -0
  453. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/tools/web_search.py +0 -0
  454. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/tools/web_search_dashscope.py +0 -0
  455. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/tools/web_search_ddgs.py +0 -0
  456. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/tools/web_search_provider_adapters.py +0 -0
  457. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/tools/web_search_tavily.py +0 -0
  458. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/transport_retry.py +0 -0
  459. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/updates.py +0 -0
  460. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/verification_command_analysis.py +0 -0
  461. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/verification_contract.py +0 -0
  462. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/verification_failure_summary.py +0 -0
  463. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/verification_repair.py +0 -0
  464. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/verify_gate.py +0 -0
  465. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/web_research.py +0 -0
  466. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/web_search_adapters.py +0 -0
  467. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/web_search_policy.py +0 -0
  468. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/workspace_binding.py +0 -0
  469. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/workspace_binding_ui.py +0 -0
  470. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/workspace_context.py +0 -0
  471. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/workspace_isolation.py +0 -0
  472. {alysis_code-0.13.6.1 → alysis_code-0.13.7}/src/alysis_code/workspace_provisioning.py +0 -0
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alysis-code
3
- Version: 0.13.6.1
4
- Summary: Local CLI coding agent powered by any API.
3
+ Version: 0.13.7
4
+ Summary: Open-source coding agent for hosted and local models.
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
7
7
  Project-URL: Funding, https://github.com/sponsors/AlysisAi
@@ -37,6 +37,7 @@ Requires-Dist: pillow>=12.3.0
37
37
  Requires-Dist: platformdirs>=4.2.0
38
38
  Requires-Dist: prompt-toolkit>=3.0.43
39
39
  Requires-Dist: pydantic>=2.6.0
40
+ Requires-Dist: pygments<3.0.0,>=2.17.0
40
41
  Requires-Dist: rich>=13.7.1
41
42
  Requires-Dist: tiktoken>=0.7.0
42
43
  Requires-Dist: typer>=0.12.0
@@ -0,0 +1,290 @@
1
+ # Changelog
2
+
3
+ Notable user-facing changes to Alysis Code are recorded here. This project follows
4
+ [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and uses
5
+ [Semantic Versioning](https://semver.org/spec/v2.0.0.html) while the public API remains pre-1.0.
6
+
7
+ ## [Unreleased]
8
+
9
+ No user-facing changes yet.
10
+
11
+ ## [0.13.7] - 2026-09-11
12
+
13
+ ### Added
14
+
15
+ - Rotating usage tips above the chat input while the agent works, with clickable links.
16
+ Tips hide during dialogs and stay out of conversation history.
17
+
18
+ ### Changed
19
+
20
+ - The context footer shows remaining conversation space after startup prompts and tools.
21
+ Provider measurements and calibrated estimates inform the gauge, while capacity warnings
22
+ continue to use the full request budget.
23
+ - Ctrl+J is the multiline input shortcut; Enter submits. The Alt+Enter alias is removed.
24
+ - Updated public documentation and contributor guidance.
25
+
26
+ ### Fixed
27
+
28
+ - Setup continuation hints stay visible above the footer on small terminals and long screens.
29
+ - Benchmark wheel builds preserve local build metadata and existing build artifacts, including
30
+ when a build fails or is interrupted.
31
+
32
+ ## [0.13.6.2] - 2026-09-08
33
+
34
+ ### Fixed
35
+
36
+ - **Alysis Code account setup and configuration use subscription controls.**
37
+ Setup identifies the Alysis Code endpoint without the retired MiMo label.
38
+ Hosted profiles show Alysis Code subscription access and account sign-in,
39
+ reconnect, and disconnect controls instead of an API-key editor.
40
+ - **Hosted model changes no longer ask for a base URL.** The managed endpoint
41
+ stays in place through model selection and back navigation. Custom and BYOK
42
+ providers keep their endpoint settings.
43
+ - **Switching to an Alysis Code account keeps the correct connection.** Signing
44
+ in refreshes the full active profile before configuration is saved, preventing
45
+ the previous provider's URL from overwriting the hosted endpoint. Login also
46
+ switches back to the native agent from a selected delegated runtime. Account
47
+ status reflects the Alysis login, including after logout when an unrelated
48
+ provider key is still saved.
49
+
50
+ ## [0.13.6.1] - 2026-09-08
51
+
52
+ ### Fixed
53
+
54
+ - **V4.1 Flash beta on Alysis Code Pro.** The Pro model picker now includes
55
+ `deepseek-v4.1-flash-expires-on-0910` and `deepseek-v4-flash-vision-exp`
56
+ with descriptions. Newly discovered models are captioned "available on your
57
+ Alysis Code Pro plan" instead of the retired MiMo "trial" wording.
58
+
59
+ ## [0.13.6] - 2026-09-08
60
+
61
+ ### Added
62
+
63
+ - **DeepSeek V4.1 Flash internal beta.** `deepseek-v4.1-flash-expires-on-0910`
64
+ (announced 2026-09-08) is now on the DeepSeek preset menu. It is a
65
+ new-architecture model with native multimodal input, served on the unchanged
66
+ `https://api.deepseek.com` base URL under a temporary id that stops resolving
67
+ on 2026-09-10; DeepSeek bills it at the `deepseek-v4-flash` rate and caps
68
+ accounts at 20 concurrent requests. Registry metadata assumes the V4 Flash
69
+ shape (1M context, 384K output, vision, thinking `low|high|max`) until
70
+ DeepSeek publishes the GA id and limits. `deepseek-v4-pro` stays the default.
71
+
72
+ ### Changed
73
+
74
+ - **DeepSeek footer labels follow vendor spelling.** Names now appear as
75
+ `DeepSeek-V4-Pro` and `DeepSeek-V4.1-Flash`; dated beta ids omit their
76
+ `-expires-on-<date>` suffix from the displayed label.
77
+
78
+ ## [0.13.5] - 2026-09-07
79
+
80
+ ### Added
81
+
82
+ - Ship eight bundled workflow skills: `address-pr-comments`, `code-review`,
83
+ `commit`, `debug`, `fix-ci`, `release-notes`, `security-review`, and `skill-creator`.
84
+ - Select a relevant skill automatically with a bounded, reasoning-off model call;
85
+ read its instructions before other task tools, with ordinary routing as fallback.
86
+ - Invoke skills with `$<name> [task]` at an idle chat prompt, with live completion
87
+ and one-turn attachment. `/skill` remains supported.
88
+ - Add `bundled_skills_enabled` configuration, project and user override precedence,
89
+ and model-in-loop bundled workflow evaluations with launch-readiness checks.
90
+
91
+ ### Fixed
92
+
93
+ - Harden skill instruction boundaries, selection ordering, and per-turn cleanup.
94
+ - Preserve resolved skill settings in child agents and restore slash completion.
95
+ - Recognize silent and inline verification results and preserve authoritative
96
+ verification evidence when supplemental checks run.
97
+ - Bound stalled OpenAI-compatible and Responses streams, including traffic that
98
+ contains no meaningful progress.
99
+
100
+ ## [0.13.4] - 2026-09-05
101
+
102
+ Model-catalog and TUI-access refresh.
103
+
104
+ ### Added
105
+
106
+ - Added GPT-6 Astra as the default OpenAI model, with aliases, pricing, context-window,
107
+ reasoning, OpenRouter, and ChatGPT-subscription metadata.
108
+ - Added newly available first-party and gateway routes for Claude Fable 5.1, Gemini 3.8
109
+ Flash, Qwen 3.8, GLM-5.3, Kimi K3, Doubao Seed 2.1, DeepSeek V4 snapshots, Grok 4.6,
110
+ and related hosted variants.
111
+
112
+ ### Changed
113
+
114
+ - Refreshed every hosted preset's model picker, aliases, validation model, retirement
115
+ mappings, pricing, context limits, and reasoning contracts against provider catalogs.
116
+ - Updated TUI model labels to preserve vendor naming and made profile pickers show each
117
+ profile's model, host, active state, retired-model state, and duplicates.
118
+ - Migrated the Perplexity preset from the retiring Sonar Chat Completions endpoint to the
119
+ Agent API, including hosted web search and saved-profile migration.
120
+ - Replaced the OpenAI economy and validation model with GPT-5.6 Luna and kept
121
+ GPT-5.3 Codex limited to the Responses preset.
122
+
123
+ ### Fixed
124
+
125
+ - OpenAI Chat Completions now uses `max_completion_tokens` for GPT-5 and newer models.
126
+ - Native Gemini tool and response schemas are projected onto Gemini's supported OpenAPI
127
+ subset before requests are sent.
128
+
129
+ ## [0.13.3] - 2026-08-28
130
+
131
+ ### Fixed
132
+
133
+ - Restored the Ubuntu Python 3.11 and 3.12 CI jobs after the repository cleanup by aligning Ruff
134
+ formatting, updating moved sandbox contract paths, preserving the security-documentation
135
+ contract, making immediate shell-output coverage independent of thread scheduling, and allowing
136
+ harmless floating-point clock precision in deadline coverage.
137
+
138
+ ## [0.13.2] - 2026-08-28
139
+
140
+ Public launch and repository-layout refresh.
141
+
142
+ ### Added
143
+
144
+ - A theme-adaptive README banner with dedicated light and dark artwork.
145
+ - `alysis-code` as the canonical executable, while retaining `alysis` as the short alias.
146
+
147
+ ### Changed
148
+
149
+ - Simplified the public README around installation, core capabilities, modes, and documentation.
150
+ - Moved governance files under `.github/`, release and changelog documents under `docs/`, and
151
+ sandbox and benchmark sources under `scripts/` for a cleaner repository root.
152
+ - Legacy Sylliptor environment and command compatibility now forwards silently while retaining
153
+ diagnostic logging for support.
154
+
155
+ ### Fixed
156
+
157
+ - Device-login approval URLs now remain pinned to the configured Alysis site instead of trusting
158
+ a backend-provided origin.
159
+
160
+ ## [0.13.1] - 2026-08-27
161
+
162
+ ### Fixed
163
+
164
+ - Kept terminal input, selection, scrolling, paste hints, and theme behavior consistent across
165
+ chat and configuration screens.
166
+ - Made intentional clean stops exit successfully while preserving non-zero exits for genuine
167
+ failures and unknown stop reasons.
168
+ - Added bounded retries for connections interrupted during a response, with consistent deadline
169
+ and diagnostic reporting.
170
+
171
+ ## [0.13.0] - 2026-08-26
172
+
173
+ ### Changed
174
+
175
+ - Renamed Sylliptor to Alysis Code. The package is now `alysis-code`, the command is `alysis`, and
176
+ the Python module is `alysis_code`.
177
+ - Preserved the deprecated `sylliptor` command and migration support for existing configuration,
178
+ credentials, plugins, and project directories. See the [migration guide](migration-alysis-code.md).
179
+ - Improved run-budget handling, deadline-aware shell waits, persistent services, edit diagnostics,
180
+ sampling controls, and build provenance.
181
+
182
+ ### Security
183
+
184
+ - Added redaction at log and telemetry write boundaries for credential-shaped values.
185
+
186
+ ## [0.12.0] - 2026-08-18
187
+
188
+ ### Added
189
+
190
+ - Added Code, Architect, Ask, and Debug personas.
191
+ - Added provider-neutral Terminal-Bench and Harbor adapters.
192
+ - Added deterministic release builds, dependency auditing, SBOM generation, and provenance
193
+ attestations.
194
+
195
+ ### Changed
196
+
197
+ - Improved evidence-based finalization, blocker reporting, provider authentication, model
198
+ discovery, context management, and verification repair.
199
+ - Strengthened boundaries around credentials, protected paths, filesystem access, and sensitive
200
+ tool output.
201
+
202
+ ## [0.11.2] - 2026-07-27
203
+
204
+ ### Added
205
+
206
+ - Added route arbitration, turn-contract enforcement, regression baselines, and evidence-backed
207
+ completion checks.
208
+ - Added tracked process cleanup, workspace provisioning, incomplete-subagent containment, and new
209
+ Moonshot/Kimi model presets.
210
+ - Added a master switch for web tools and search backends.
211
+
212
+ ### Changed
213
+
214
+ - Refreshed the ChatGPT subscription model catalog and provider-reported final-answer handling.
215
+
216
+ ## [0.11.1] - 2026-07-20
217
+
218
+ ### Changed
219
+
220
+ - Redesigned the interactive configuration screen with grouped settings, clearer summaries, and
221
+ improved provider and model selection.
222
+ - Added provider-specific reasoning controls and clearer per-role model overrides.
223
+
224
+ ### Fixed
225
+
226
+ - Applied configuration changes made before the first message without restarting the terminal UI.
227
+ - Corrected input-budget calculations for shared-window models.
228
+
229
+ ## [0.11.0] - 2026-07-18
230
+
231
+ ### Added
232
+
233
+ - Added specialist subagent roles and capability-aware delegation.
234
+ - Added live subagent progress and result attribution to the terminal UI.
235
+ - Added an opt-in visual designer for image generation.
236
+
237
+ ### Security
238
+
239
+ - Constrained child tools, execution modes, deadlines, and result handling so delegated output
240
+ cannot change parent authority or permissions.
241
+
242
+ ## [0.10.0] - 2026-07-13
243
+
244
+ ### Added
245
+
246
+ - Added ChatGPT Codex subscription login, encrypted refreshable credentials, and live model
247
+ discovery.
248
+ - Added DDGS web search as a keyless fallback and expanded hosted search support.
249
+ - Added repository mapping, focused test discovery, cached update prompts, and safer workspace
250
+ previews.
251
+
252
+ ### Changed
253
+
254
+ - Improved provider-aware prompt caching, usage accounting, terminal navigation, Forge planning,
255
+ and OpenAI Responses streaming recovery.
256
+
257
+ ## [0.9.8] - 2026-06-29
258
+
259
+ ### Added
260
+
261
+ - Added stronger completion contracts and verification evidence for one-shot and managed tasks.
262
+ - Added shell waiting, durable service tools, and stricter web-fetch provenance.
263
+
264
+ ### Changed
265
+
266
+ - Improved Forge verification, runtime deadlines, provider adapters, usage tracking, and recovery
267
+ from unknown tool calls.
268
+
269
+ ## Earlier releases
270
+
271
+ Release notes for versions before 0.9.8 remain available in the
272
+ [GitHub Releases archive](https://github.com/AlysisAi/alysis-code/releases).
273
+
274
+ [Unreleased]: https://github.com/AlysisAi/alysis-code/compare/v0.13.7...HEAD
275
+ [0.13.7]: https://github.com/AlysisAi/alysis-code/compare/v0.13.6.2...v0.13.7
276
+ [0.13.6.2]: https://github.com/AlysisAi/alysis-code/compare/v0.13.6.1...v0.13.6.2
277
+ [0.13.6.1]: https://github.com/AlysisAi/alysis-code/compare/v0.13.6...v0.13.6.1
278
+ [0.13.6]: https://github.com/AlysisAi/alysis-code/compare/v0.13.5...v0.13.6
279
+ [0.13.5]: https://github.com/AlysisAi/alysis-code/compare/v0.13.4...v0.13.5
280
+ [0.13.4]: https://github.com/AlysisAi/alysis-code/compare/v0.13.3...v0.13.4
281
+ [0.13.3]: https://github.com/AlysisAi/alysis-code/compare/v0.13.2...v0.13.3
282
+ [0.13.2]: https://github.com/AlysisAi/alysis-code/compare/v0.13.1...v0.13.2
283
+ [0.13.1]: https://github.com/AlysisAi/alysis-code/compare/v0.13.0...v0.13.1
284
+ [0.13.0]: https://github.com/AlysisAi/alysis-code/compare/v0.12.0...v0.13.0
285
+ [0.12.0]: https://github.com/AlysisAi/alysis-code/compare/v0.11.2...v0.12.0
286
+ [0.11.2]: https://github.com/AlysisAi/alysis-code/compare/v0.11.1...v0.11.2
287
+ [0.11.1]: https://github.com/AlysisAi/alysis-code/compare/v0.11.0...v0.11.1
288
+ [0.11.0]: https://github.com/AlysisAi/alysis-code/compare/v0.10.0...v0.11.0
289
+ [0.10.0]: https://github.com/AlysisAi/alysis-code/compare/v0.9.8...v0.10.0
290
+ [0.9.8]: https://github.com/AlysisAi/alysis-code/releases/tag/v0.9.8
@@ -4,8 +4,8 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "alysis-code"
7
- version = "0.13.6.1"
8
- description = "Local CLI coding agent powered by any API."
7
+ version = "0.13.7"
8
+ description = "Open-source coding agent for hosted and local models."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
11
11
  license = { text = "Apache-2.0" }
@@ -44,6 +44,7 @@ dependencies = [
44
44
  "platformdirs>=4.2.0",
45
45
  "pydantic>=2.6.0",
46
46
  "prompt-toolkit>=3.0.43",
47
+ "pygments>=2.17.0,<3.0.0",
47
48
  "rich>=13.7.1",
48
49
  "tiktoken>=0.7.0",
49
50
  "typer>=0.12.0",
@@ -1,3 +1,3 @@
1
1
  __all__ = ["__version__"]
2
2
 
3
- __version__ = "0.13.6.1"
3
+ __version__ = "0.13.7"
@@ -479,6 +479,10 @@ def _activate_alysis_profile(cfg: AppConfig, *, email: str | None) -> LoginResul
479
479
 
480
480
  add_profile(cfg, profile)
481
481
  set_active_profile(cfg, profile.name)
482
+ # Hosted account access uses the native agent loop. Keep configured
483
+ # delegated runtimes available, but stop routing this session through one.
484
+ cfg.execution.backend = "native"
485
+ cfg.execution.runtime = None
482
486
  save_config(cfg)
483
487
 
484
488
  return LoginResult(
@@ -5,14 +5,15 @@ managed execution flows.
5
5
 
6
6
  ## Contents
7
7
 
8
- - `session.py` builds session state from configuration, workspace context, and
8
+ - [session.py](session.py) builds session state from configuration, workspace context, and
9
9
  runtime kind.
10
- - `tools_assembly.py` builds the concrete tool surface for a session.
11
- - `turn.py` runs the turn loop and tool-call iteration.
12
- - `routing.py` handles routing and final response shaping.
13
- - `prompt_context.py` prepares workspace, convention, skill, plugin, and
10
+ - [tools_assembly.py](tools_assembly.py) builds the concrete tool surface for a session.
11
+ - [turn/core.py](turn/core.py) runs the turn loop and tool-call iteration.
12
+ - [turn_path.py](turn_path.py) defines execution posture and reply-language directives.
13
+ - [prompt_context.py](prompt_context.py) prepares workspace, convention, skill, plugin, and
14
14
  verification context.
15
- - `verification.py` and `verification_commands.py` support verification flows.
15
+ - [verification.py](verification.py) and [verification_commands.py](verification_commands.py)
16
+ support verification flows.
16
17
 
17
18
  ## Scope
18
19
 
@@ -17,7 +17,6 @@ from typing import TYPE_CHECKING, Any
17
17
 
18
18
  from .. import __version__
19
19
  from ..agent import _patchable
20
- from ..agentbox_integration import AgentBoxTelemetry
21
20
  from ..background_runner import (
22
21
  DisabledBackgroundRunner,
23
22
  LazyBackgroundShellRunner,
@@ -549,7 +548,7 @@ class AgentSession:
549
548
  one_shot_execution: bool = False
550
549
  # Persona mode (code|architect|ask|debug). A convention layered on the
551
550
  # execution-mode gate, never an enforcement layer; "code" is the no-op
552
- # persona. See docs/persona_modes_design.md.
551
+ # persona. See docs/personas.md.
553
552
  persona: str = "code"
554
553
  # The user's chosen execution mode remembered while a narrowing persona
555
554
  # (architect/ask) is active, so switching back to code/debug restores it.
@@ -629,7 +628,6 @@ class AgentSession:
629
628
  cache_keepalive: ParentCacheKeepalive | None = None
630
629
  crash_diagnostics: CrashDiagnosticLogger | None = None
631
630
  crash_diagnostic_log_path: str | None = None
632
- agentbox_telemetry: AgentBoxTelemetry | None = None
633
631
  process_group_registry: ProcessGroupRegistry | None = None
634
632
  # Empty-response handling is budgeted per session, not per turn: two failed
635
633
  # recovery cycles mean the endpoint is not answering, and re-spending the
@@ -840,8 +838,6 @@ class AgentSession:
840
838
  if self.mcp_manager is not None:
841
839
  self.mcp_manager.close()
842
840
  finally:
843
- if self.agentbox_telemetry is not None:
844
- self.agentbox_telemetry.close(error=reason not in {"session_close", "completed"})
845
841
  self.store.close()
846
842
 
847
843
  def _hook_warning(self, message: str, *, code: str = "hook_warning") -> None:
@@ -1154,8 +1150,6 @@ class AgentSession:
1154
1150
  persistent_has_media=request_contains_media(self.messages),
1155
1151
  )
1156
1152
  self.store.append("llm_usage", usage_record.to_payload())
1157
- if self.agentbox_telemetry is not None:
1158
- self.agentbox_telemetry.record_usage(usage_record)
1159
1153
  return usage_record
1160
1154
  except Exception as exc: # noqa: BLE001 -- accounting cannot break the agent turn
1161
1155
  self.store.append(
@@ -1709,29 +1703,16 @@ class AgentSession:
1709
1703
  self._turn_owner_thread_id = turn_thread_id
1710
1704
  self._bind_provider_retry_observer(self.client)
1711
1705
  try:
1712
- if self.agentbox_telemetry is None:
1713
- return _run_turn(
1714
- self,
1715
- instruction,
1716
- image_paths=image_paths,
1717
- routing_mode_override=routing_mode_override,
1718
- ephemeral_system_messages=ephemeral_system_messages,
1719
- ephemeral_user_messages=ephemeral_user_messages,
1720
- cancellation_token=cancellation_token,
1721
- chat_only=chat_only,
1722
- )
1723
- self.agentbox_telemetry.task(instruction)
1724
- with self.agentbox_telemetry.turn():
1725
- return _run_turn(
1726
- self,
1727
- instruction,
1728
- image_paths=image_paths,
1729
- routing_mode_override=routing_mode_override,
1730
- ephemeral_system_messages=ephemeral_system_messages,
1731
- ephemeral_user_messages=ephemeral_user_messages,
1732
- cancellation_token=cancellation_token,
1733
- chat_only=chat_only,
1734
- )
1706
+ return _run_turn(
1707
+ self,
1708
+ instruction,
1709
+ image_paths=image_paths,
1710
+ routing_mode_override=routing_mode_override,
1711
+ ephemeral_system_messages=ephemeral_system_messages,
1712
+ ephemeral_user_messages=ephemeral_user_messages,
1713
+ cancellation_token=cancellation_token,
1714
+ chat_only=chat_only,
1715
+ )
1735
1716
  except CooperativeCancellationError as exc:
1736
1717
  # The budget watchdog cancels through the same cooperative channel a
1737
1718
  # user does, so the two are told apart by reason. A budget stop is a
@@ -3234,10 +3215,6 @@ def create_session(
3234
3215
  execution_deadline=execution_deadline,
3235
3216
  crash_diagnostics=crash_diagnostics,
3236
3217
  crash_diagnostic_log_path=resolved_crash_diagnostic_log_path,
3237
- agentbox_telemetry=AgentBoxTelemetry.from_env(
3238
- root=root,
3239
- runtime_version=f"alysis-{__version__}",
3240
- ),
3241
3218
  process_group_registry=process_group_registry,
3242
3219
  )
3243
3220
  if subagent_depth == 0 and store.enabled:
@@ -5800,8 +5800,6 @@ def run_turn(
5800
5800
  and tool_executed_for_deadline_observation
5801
5801
  ):
5802
5802
  skill_selection_no_match_pending = False
5803
- if getattr(self, "agentbox_telemetry", None) is not None:
5804
- self.agentbox_telemetry.tool(effective_tool_name)
5805
5803
  tool_unavailable = is_tool_unavailable_result(result)
5806
5804
  if status == "done" and not tool_unavailable:
5807
5805
  if effective_tool_name == "shell_background":
@@ -687,7 +687,5 @@ def run_agent(
687
687
  finally:
688
688
  if watchdog is not None:
689
689
  watchdog.disarm()
690
- # close() is left with its default reason on purpose: `status` feeds
691
- # the agentbox error flag, and a budget stop is not an error. The
692
- # machine-readable marker travels as session.stop_reason instead.
690
+ # Budget stops retain their machine-readable reason in session.stop_reason.
693
691
  session.close()
@@ -2247,8 +2247,8 @@ def chat(
2247
2247
 
2248
2248
  try:
2249
2249
  _refresh_chat_hud_context_cache(built)
2250
- # The footer reports provider-usable input capacity so
2251
- # its "context" label agrees with /context and /status.
2250
+ # Show conversation space relative to the startup
2251
+ # baseline; /context retains full-request diagnostics.
2252
2252
  pct = _chat_context_percent_value(built)
2253
2253
  if pct is not None:
2254
2254
  _tui_state.context_pct = float(pct)
@@ -540,9 +540,12 @@ def _chat_context_hud_value(session: Any) -> str:
540
540
  if value is None:
541
541
  return "n/a"
542
542
  label = f"{value:.1f}%"
543
- if value < 10.0:
543
+ warning_percent = _chat_effective_budget_percent_value(session)
544
+ if warning_percent is None:
545
+ warning_percent = value
546
+ if warning_percent < 10.0:
544
547
  return f"{label} !!"
545
- if value < 25.0:
548
+ if warning_percent < 25.0:
546
549
  return f"{label} !"
547
550
  return label
548
551
 
@@ -596,11 +599,12 @@ def _chat_context_percent_value(session: Any) -> float | None:
596
599
  ctx = getattr(session, "_hud_context_cache", None)
597
600
  if ctx is None:
598
601
  return None
599
- # The primary HUD must describe provider-usable capacity. The former
600
- # baseline-subtracted conversation percentage always started at 100%, even
601
- # when bootstrap prompts and tool schemas already occupied a substantial
602
- # part of the model window.
603
- percent = getattr(ctx, "effective_percent_left", None)
602
+ # Show the conversation space remaining after startup prompts and tools,
603
+ # so a fresh session starts at 100%. Capacity warnings still use the full
604
+ # request through _chat_effective_budget_percent_value.
605
+ percent = getattr(ctx, "dynamic_context_percent_left", None)
606
+ if percent is None:
607
+ percent = getattr(ctx, "effective_percent_left", None)
604
608
  if percent is None:
605
609
  percent = getattr(ctx, "context_window_percent_left", None)
606
610
  if percent is None: